@dnb/eufemia 10.38.0 → 10.40.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 +37 -0
- package/cjs/components/badge/Badge.js +2 -1
- package/cjs/components/badge/Badge.js.map +1 -1
- package/cjs/components/badge/style/dnb-badge.css +6 -0
- package/cjs/components/badge/style/dnb-badge.min.css +1 -1
- package/cjs/components/badge/style/dnb-badge.scss +12 -0
- package/cjs/components/button/Button.d.ts +1 -0
- package/cjs/components/button/Button.js +5 -2
- package/cjs/components/button/Button.js.map +1 -1
- package/cjs/components/modal/Modal.js +1 -1
- package/cjs/components/modal/Modal.js.map +1 -1
- package/cjs/components/modal/types.d.ts +4 -0
- package/cjs/components/modal/types.js.map +1 -1
- package/cjs/components/table/Table.d.ts +6 -3
- package/cjs/components/table/Table.js +6 -2
- package/cjs/components/table/Table.js.map +1 -1
- package/cjs/components/table/TableClickableHead.d.ts +22 -0
- package/cjs/components/table/TableClickableHead.js +116 -0
- package/cjs/components/table/TableClickableHead.js.map +1 -0
- package/cjs/components/table/TableDocs.js +6 -6
- package/cjs/components/table/TableDocs.js.map +1 -1
- package/cjs/components/table/TableTr.d.ts +12 -12
- package/cjs/components/table/TableTr.js +13 -6
- package/cjs/components/table/TableTr.js.map +1 -1
- package/cjs/components/table/style/dnb-table.css +61 -61
- package/cjs/components/table/style/dnb-table.min.css +1 -1
- package/cjs/components/table/style/dnb-table.scss +1 -1
- package/cjs/components/table/style/table-accordion.scss +28 -36
- package/cjs/components/table/style/table-td.scss +1 -1
- package/cjs/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
- package/cjs/components/table/table-accordion/TableAccordionHead.js +45 -74
- package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/cjs/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
- package/cjs/components/table/table-navigation/TableNavigationHead.js +56 -0
- package/cjs/components/table/table-navigation/TableNavigationHead.js.map +1 -0
- package/cjs/extensions/forms/Field/Number/Number.d.ts +3 -1
- package/cjs/extensions/forms/Field/Number/Number.js +6 -2
- package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js +10 -0
- package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
- package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
- package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +6 -5
- package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
- package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
- package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/cjs/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
- package/cjs/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
- package/cjs/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
- package/cjs/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +28 -8
- package/cjs/extensions/forms/constants/locales/en-GB.js +28 -8
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +28 -8
- package/cjs/extensions/forms/constants/locales/index.d.ts +56 -16
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
- package/cjs/extensions/forms/constants/locales/nb-NO.js +28 -8
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/DataValueDocs.js +1 -1
- package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/cjs/extensions/payment-card/utils/cardProducts.js +7 -7
- package/cjs/extensions/payment-card/utils/cardProducts.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/isAsync.js +5 -1
- package/cjs/shared/helpers/isAsync.js.map +1 -1
- package/cjs/shared/locales/en-GB.d.ts +1 -0
- package/cjs/shared/locales/en-GB.js +2 -1
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.d.ts +1 -0
- package/cjs/shared/locales/index.d.ts +2 -0
- package/cjs/shared/locales/nb-NO.d.ts +1 -0
- package/cjs/shared/locales/nb-NO.js +2 -1
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +67 -61
- package/cjs/style/dnb-ui-components.min.css +2 -2
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-components.css +67 -61
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/components/badge/Badge.js +2 -1
- package/components/badge/Badge.js.map +1 -1
- package/components/badge/style/dnb-badge.css +6 -0
- package/components/badge/style/dnb-badge.min.css +1 -1
- package/components/badge/style/dnb-badge.scss +12 -0
- package/components/button/Button.d.ts +1 -0
- package/components/button/Button.js +5 -2
- package/components/button/Button.js.map +1 -1
- package/components/modal/Modal.js +1 -1
- package/components/modal/Modal.js.map +1 -1
- package/components/modal/types.d.ts +4 -0
- package/components/modal/types.js.map +1 -1
- package/components/table/Table.d.ts +6 -3
- package/components/table/Table.js +6 -2
- package/components/table/Table.js.map +1 -1
- package/components/table/TableClickableHead.d.ts +22 -0
- package/components/table/TableClickableHead.js +103 -0
- package/components/table/TableClickableHead.js.map +1 -0
- package/components/table/TableDocs.js +6 -6
- package/components/table/TableDocs.js.map +1 -1
- package/components/table/TableTr.d.ts +12 -12
- package/components/table/TableTr.js +13 -6
- package/components/table/TableTr.js.map +1 -1
- package/components/table/style/dnb-table.css +61 -61
- package/components/table/style/dnb-table.min.css +1 -1
- package/components/table/style/dnb-table.scss +1 -1
- package/components/table/style/table-accordion.scss +28 -36
- package/components/table/style/table-td.scss +1 -1
- package/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
- package/components/table/table-accordion/TableAccordionHead.js +44 -72
- package/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
- package/components/table/table-navigation/TableNavigationHead.js +48 -0
- package/components/table/table-navigation/TableNavigationHead.js.map +1 -0
- package/es/components/badge/Badge.js +2 -1
- package/es/components/badge/Badge.js.map +1 -1
- package/es/components/badge/style/dnb-badge.css +6 -0
- package/es/components/badge/style/dnb-badge.min.css +1 -1
- package/es/components/badge/style/dnb-badge.scss +12 -0
- package/es/components/button/Button.d.ts +1 -0
- package/es/components/button/Button.js +5 -2
- package/es/components/button/Button.js.map +1 -1
- package/es/components/modal/Modal.js +1 -1
- package/es/components/modal/Modal.js.map +1 -1
- package/es/components/modal/types.d.ts +4 -0
- package/es/components/modal/types.js.map +1 -1
- package/es/components/table/Table.d.ts +6 -3
- package/es/components/table/Table.js +6 -2
- package/es/components/table/Table.js.map +1 -1
- package/es/components/table/TableClickableHead.d.ts +22 -0
- package/es/components/table/TableClickableHead.js +101 -0
- package/es/components/table/TableClickableHead.js.map +1 -0
- package/es/components/table/TableDocs.js +6 -6
- package/es/components/table/TableDocs.js.map +1 -1
- package/es/components/table/TableTr.d.ts +12 -12
- package/es/components/table/TableTr.js +13 -6
- package/es/components/table/TableTr.js.map +1 -1
- package/es/components/table/style/dnb-table.css +61 -61
- package/es/components/table/style/dnb-table.min.css +1 -1
- package/es/components/table/style/dnb-table.scss +1 -1
- package/es/components/table/style/table-accordion.scss +28 -36
- package/es/components/table/style/table-td.scss +1 -1
- package/es/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
- package/es/components/table/table-accordion/TableAccordionHead.js +44 -71
- package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -1
- package/es/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
- package/es/components/table/table-navigation/TableNavigationHead.js +48 -0
- package/es/components/table/table-navigation/TableNavigationHead.js.map +1 -0
- package/es/extensions/forms/Field/Number/Number.d.ts +3 -1
- package/es/extensions/forms/Field/Number/Number.js +6 -2
- package/es/extensions/forms/Field/Number/Number.js.map +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js +10 -0
- package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
- package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
- package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +5 -4
- package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
- package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/es/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
- package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/es/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
- package/es/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
- package/es/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
- package/es/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +28 -8
- package/es/extensions/forms/constants/locales/en-GB.js +28 -8
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +28 -8
- package/es/extensions/forms/constants/locales/index.d.ts +56 -16
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
- package/es/extensions/forms/constants/locales/nb-NO.js +28 -8
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/DataValueDocs.js +1 -1
- package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/es/extensions/payment-card/utils/cardProducts.js +7 -7
- package/es/extensions/payment-card/utils/cardProducts.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/isAsync.js +5 -1
- package/es/shared/helpers/isAsync.js.map +1 -1
- package/es/shared/locales/en-GB.d.ts +1 -0
- package/es/shared/locales/en-GB.js +2 -1
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.d.ts +1 -0
- package/es/shared/locales/index.d.ts +2 -0
- package/es/shared/locales/nb-NO.d.ts +1 -0
- package/es/shared/locales/nb-NO.js +2 -1
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +67 -61
- package/es/style/dnb-ui-components.min.css +2 -2
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-components.css +67 -61
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/Field/Number/Number.d.ts +3 -1
- package/extensions/forms/Field/Number/Number.js +6 -2
- package/extensions/forms/Field/Number/Number.js.map +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js +10 -0
- package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
- package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
- package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
- package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +5 -4
- package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
- package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
- package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
- package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
- package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
- package/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
- package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
- package/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
- package/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
- package/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
- package/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +28 -8
- package/extensions/forms/constants/locales/en-GB.js +28 -8
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +28 -8
- package/extensions/forms/constants/locales/index.d.ts +56 -16
- package/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
- package/extensions/forms/constants/locales/nb-NO.js +28 -8
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/DataValueDocs.js +1 -1
- package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/extensions/payment-card/utils/cardProducts.js +7 -7
- package/extensions/payment-card/utils/cardProducts.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/isAsync.js +5 -1
- package/shared/helpers/isAsync.js.map +1 -1
- package/shared/locales/en-GB.d.ts +1 -0
- package/shared/locales/en-GB.js +2 -1
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.d.ts +1 -0
- package/shared/locales/index.d.ts +2 -0
- package/shared/locales/nb-NO.d.ts +1 -0
- package/shared/locales/nb-NO.js +2 -1
- package/shared/locales/nb-NO.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +67 -61
- package/style/dnb-ui-components.min.css +2 -2
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-components.css +67 -61
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
@mixin tableAccordionActiveColor {
|
|
7
|
-
.dnb-
|
|
7
|
+
.dnb-table__td__button-icon .dnb-icon {
|
|
8
8
|
color: var(--table-accordion-icon-color--active);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
@mixin tableAccordionDisabledColor {
|
|
12
|
-
.dnb-
|
|
12
|
+
.dnb-table__td__button-icon .dnb-icon {
|
|
13
13
|
color: var(--table-accordion-icon-color--disabled);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
--table-accordion-outline-width: var(--focus-ring-width);
|
|
33
33
|
--table-accordion-outline-background--active: var(--color-pistachio);
|
|
34
34
|
|
|
35
|
-
&__th#{&}
|
|
35
|
+
&__th#{&}__th__button-icon {
|
|
36
36
|
&.dnb-table__th {
|
|
37
37
|
padding: 0;
|
|
38
38
|
}
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
&__td#{&}
|
|
56
|
+
&__td#{&}__td__button-icon {
|
|
57
57
|
&.dnb-table__td {
|
|
58
58
|
padding: 0;
|
|
59
59
|
}
|
|
60
60
|
user-select: none; // prevent selection on double-click
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
&__tr--
|
|
63
|
+
&__tr--clickable &__button {
|
|
64
64
|
display: flex; // to ensure we inherit the correct size from its content
|
|
65
65
|
justify-content: center;
|
|
66
66
|
|
|
@@ -69,26 +69,21 @@
|
|
|
69
69
|
transition: transform 500ms var(--easing-default);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
&__tr--
|
|
73
|
-
|
|
74
|
-
.dnb-icon,
|
|
75
|
-
html[data-visual-test]
|
|
76
|
-
&__tr--has-accordion-content
|
|
77
|
-
&__toggle-button
|
|
78
|
-
.dnb-icon {
|
|
72
|
+
&__tr--clickable#{&}__tr--no-animation &__button .dnb-icon,
|
|
73
|
+
html[data-visual-test] &__tr--clickable &__button .dnb-icon {
|
|
79
74
|
transition: none !important;
|
|
80
75
|
}
|
|
81
76
|
|
|
82
|
-
&__tr--
|
|
77
|
+
&__tr--clickable,
|
|
83
78
|
&__tr__accordion-content {
|
|
84
79
|
position: relative;
|
|
85
80
|
}
|
|
86
|
-
&__tr--
|
|
81
|
+
&__tr--clickable#{&}__tr--expanded,
|
|
87
82
|
&__tr__accordion-content {
|
|
88
83
|
z-index: 3; // ensure borders are visible in certain states
|
|
89
84
|
}
|
|
90
85
|
|
|
91
|
-
&__tr--
|
|
86
|
+
&__tr--clickable {
|
|
92
87
|
&:active,
|
|
93
88
|
html[data-whatinput='keyboard'] &:focus,
|
|
94
89
|
&:hover:not(.dnb-table__tr--hover.dnb-table__tr--expanded) {
|
|
@@ -96,13 +91,11 @@
|
|
|
96
91
|
}
|
|
97
92
|
}
|
|
98
93
|
|
|
99
|
-
&__tr--
|
|
100
|
-
&__toggle-button
|
|
101
|
-
.dnb-icon {
|
|
94
|
+
&__tr--clickable#{&}__tr--expanded &__button .dnb-icon {
|
|
102
95
|
transform: rotate(180deg);
|
|
103
96
|
}
|
|
104
97
|
|
|
105
|
-
&__tr--
|
|
98
|
+
&__tr--clickable#{&}__tr--expanded {
|
|
106
99
|
.dnb-table--border & td::after {
|
|
107
100
|
border-bottom: none;
|
|
108
101
|
border-left: none;
|
|
@@ -110,7 +103,7 @@
|
|
|
110
103
|
}
|
|
111
104
|
}
|
|
112
105
|
|
|
113
|
-
&__tr--
|
|
106
|
+
&__tr--clickable#{&}__tr:not(&__tr--disabled) {
|
|
114
107
|
outline: none;
|
|
115
108
|
|
|
116
109
|
td::before {
|
|
@@ -145,19 +138,18 @@
|
|
|
145
138
|
|
|
146
139
|
&--border
|
|
147
140
|
tbody
|
|
148
|
-
&__tr--
|
|
141
|
+
&__tr--clickable:not(#{&}__tr--expanded):not(&__tr--last)
|
|
149
142
|
&__td::before {
|
|
150
143
|
bottom: calc(var(--table-border-width) * -1);
|
|
151
144
|
}
|
|
152
145
|
|
|
153
|
-
&__tr--
|
|
154
|
-
&__td {
|
|
146
|
+
&__tr--clickable#{&}__tr--expanded:not(&__tr--disabled):hover &__td {
|
|
155
147
|
background-color: var(--color-white);
|
|
156
148
|
}
|
|
157
149
|
|
|
158
|
-
&__tr--
|
|
159
|
-
:
|
|
160
|
-
):
|
|
150
|
+
&__tr--clickable#{&}__tr:not(&__tr--disabled):not(:active):not(
|
|
151
|
+
:hover
|
|
152
|
+
):focus {
|
|
161
153
|
td::before {
|
|
162
154
|
@include whatInput(keyboard) {
|
|
163
155
|
border-color: var(--focus-ring-color);
|
|
@@ -172,7 +164,7 @@
|
|
|
172
164
|
}
|
|
173
165
|
}
|
|
174
166
|
|
|
175
|
-
&__tr--
|
|
167
|
+
&__tr--clickable#{&}__tr:not(&__tr--disabled):active {
|
|
176
168
|
html:not([data-whatintent='touch']) &:hover td::before,
|
|
177
169
|
td::before {
|
|
178
170
|
border-color: var(--table-accordion-outline-color);
|
|
@@ -182,13 +174,13 @@
|
|
|
182
174
|
}
|
|
183
175
|
}
|
|
184
176
|
|
|
185
|
-
&__tr--
|
|
177
|
+
&__tr--clickable#{&}__tr:not(&__tr--disabled):active &__td {
|
|
186
178
|
background-color: var(--table-accordion-outline-background--active);
|
|
187
179
|
|
|
188
180
|
@include tableAccordionActiveColor();
|
|
189
181
|
}
|
|
190
182
|
|
|
191
|
-
&__tr--
|
|
183
|
+
&__tr--clickable#{&}__tr--expanded:not(
|
|
192
184
|
&__tr--disabled
|
|
193
185
|
)#{&}__tr--hover:not(:active):hover
|
|
194
186
|
&__td {
|
|
@@ -200,9 +192,9 @@
|
|
|
200
192
|
}
|
|
201
193
|
}
|
|
202
194
|
|
|
203
|
-
&__tr--
|
|
204
|
-
|
|
205
|
-
):not(:
|
|
195
|
+
&__tr--clickable#{&}__tr#{&}__tr--expanded:not(&__tr--disabled):not(
|
|
196
|
+
:active
|
|
197
|
+
):not(:hover) {
|
|
206
198
|
@include whatInputNot('keyboard') {
|
|
207
199
|
background-color: var(--table-accordion-header-background);
|
|
208
200
|
|
|
@@ -213,7 +205,7 @@
|
|
|
213
205
|
}
|
|
214
206
|
}
|
|
215
207
|
|
|
216
|
-
&__tr--
|
|
208
|
+
&__tr--clickable#{&}__tr--disabled {
|
|
217
209
|
@include tableAccordionDisabledColor();
|
|
218
210
|
}
|
|
219
211
|
|
|
@@ -256,7 +248,7 @@
|
|
|
256
248
|
background-color: var(--color-white);
|
|
257
249
|
}
|
|
258
250
|
|
|
259
|
-
+ .dnb-table__tr--
|
|
251
|
+
+ .dnb-table__tr--clickable .dnb-table__td {
|
|
260
252
|
@include tableBorder() {
|
|
261
253
|
border-top: var(--table-accordion-border);
|
|
262
254
|
}
|
|
@@ -323,13 +315,13 @@
|
|
|
323
315
|
}
|
|
324
316
|
|
|
325
317
|
// stylelint-disable-next-line
|
|
326
|
-
&__tr--
|
|
318
|
+
&__tr--clickable:not(&__tr--disabled) {
|
|
327
319
|
cursor: pointer;
|
|
328
320
|
}
|
|
329
321
|
|
|
330
322
|
// prevent selection while animating – useful when user double-clicks
|
|
331
323
|
// TODO: Our SASS version does not support :has – so we may use this in future
|
|
332
|
-
// &__tr--
|
|
324
|
+
// &__tr--clickable:has(& + &__tr__accordion-content--animating) {
|
|
333
325
|
// user-select: none;
|
|
334
326
|
// }
|
|
335
327
|
|
|
@@ -5,4 +5,3 @@ export type TableAccordionHeadProps = {
|
|
|
5
5
|
count: number;
|
|
6
6
|
} & TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>;
|
|
7
7
|
export declare function TableAccordionHead(allProps: TableAccordionHeadProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export declare function TableAccordionToggleButton(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,24 +3,18 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
5
|
var _Td;
|
|
6
|
-
const _excluded = ["children", "
|
|
6
|
+
const _excluded = ["children", "expanded", "noAnimation", "onClick", "onOpened", "onClosed", "count"];
|
|
7
7
|
import React, { useEffect } from 'react';
|
|
8
|
-
import classnames from 'classnames';
|
|
9
|
-
import keycode from 'keycode';
|
|
10
|
-
import { hasSelectedText } from '../../../shared/helpers';
|
|
11
|
-
import Button from '../../button/Button';
|
|
12
|
-
import IconPrimary from '../../icon/IconPrimary';
|
|
13
|
-
import Th from '../TableTh';
|
|
14
8
|
import Td from '../TableTd';
|
|
15
9
|
import { TableContext } from '../TableContext';
|
|
10
|
+
import { TableClickableButtonTd, TableClickableHead, TableIconSrTh, isTableHead, onClickTr } from '../TableClickableHead';
|
|
16
11
|
import { TableAccordionContext } from './TableAccordionContext';
|
|
17
12
|
import { TableAccordionContentSingle, TableAccordionContentRow } from './TableAccordionContent';
|
|
18
13
|
export function TableAccordionHead(allProps) {
|
|
14
|
+
var _React$useContext;
|
|
19
15
|
const {
|
|
20
16
|
children,
|
|
21
|
-
className,
|
|
22
17
|
expanded,
|
|
23
|
-
disabled,
|
|
24
18
|
noAnimation,
|
|
25
19
|
onClick,
|
|
26
20
|
onOpened,
|
|
@@ -43,11 +37,11 @@ export function TableAccordionHead(allProps) {
|
|
|
43
37
|
const [trIsHover, setHover] = React.useState(false);
|
|
44
38
|
const [trHadClick, setHadClick] = React.useState(false);
|
|
45
39
|
let headerContent = React.Children.toArray(children);
|
|
46
|
-
const
|
|
40
|
+
const addContent = content => {
|
|
47
41
|
if (tableContext.allProps.accordionChevronPlacement === 'end') {
|
|
48
|
-
headerContent.push(
|
|
42
|
+
headerContent.push(content);
|
|
49
43
|
} else {
|
|
50
|
-
headerContent.unshift(
|
|
44
|
+
headerContent.unshift(content);
|
|
51
45
|
}
|
|
52
46
|
};
|
|
53
47
|
const accordionContent = headerContent.filter(element => {
|
|
@@ -62,30 +56,31 @@ export function TableAccordionHead(allProps) {
|
|
|
62
56
|
};
|
|
63
57
|
}
|
|
64
58
|
}, [count, tableContext === null || tableContext === void 0 ? void 0 : tableContext.collapseTrCallbacks, hasAccordionContent]);
|
|
65
|
-
const
|
|
66
|
-
onClick: toggleOpenTr,
|
|
67
|
-
onMouseEnter: onMouseEnterHandler,
|
|
68
|
-
onMouseLeave: onMouseLeaveHandler,
|
|
69
|
-
onKeyDown: onKeydownHandler
|
|
70
|
-
} : {};
|
|
59
|
+
const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
|
|
71
60
|
if (hasAccordionContent) {
|
|
72
61
|
headerContent = headerContent.filter(element => {
|
|
73
62
|
return !isAccordionElement(element);
|
|
74
63
|
});
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
addContent(React.createElement(TableClickableButtonTd, {
|
|
65
|
+
trIsOpen: trIsOpen,
|
|
66
|
+
ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR,
|
|
67
|
+
icon: "chevron_down",
|
|
68
|
+
onClick: toggleOpenTr,
|
|
77
69
|
key: "td-icon"
|
|
78
|
-
}
|
|
70
|
+
}));
|
|
79
71
|
} else if (isTableHead(headerContent)) {
|
|
80
72
|
var _tableContext$allProp;
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
73
|
+
addContent(React.createElement(TableIconSrTh, {
|
|
74
|
+
key: "th-icon",
|
|
75
|
+
text: tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp = tableContext.allProps) === null || _tableContext$allProp === void 0 ? void 0 : _tableContext$allProp.accordionToggleButtonSR
|
|
76
|
+
}));
|
|
77
|
+
} else if (!hasAccordionContent) {
|
|
78
|
+
addContent(_Td || (_Td = React.createElement(Td, {
|
|
79
|
+
key: "empty-td"
|
|
80
|
+
})));
|
|
86
81
|
}
|
|
87
82
|
const countTds = hasAccordionContent ? headerContent.filter(element => {
|
|
88
|
-
return element.type === Td;
|
|
83
|
+
return element.type === Td || element.type === TableClickableButtonTd;
|
|
89
84
|
}).length : null;
|
|
90
85
|
return React.createElement(TableAccordionContext.Provider, {
|
|
91
86
|
value: {
|
|
@@ -96,59 +91,36 @@ export function TableAccordionHead(allProps) {
|
|
|
96
91
|
onOpened,
|
|
97
92
|
onClosed
|
|
98
93
|
}
|
|
99
|
-
}, React.createElement(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
event.preventDefault();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
94
|
+
}, React.createElement(TableClickableHead, _extends({
|
|
95
|
+
trIsOpen: trIsOpen,
|
|
96
|
+
trIsHover: trIsHover,
|
|
97
|
+
trHadClick: trHadClick,
|
|
98
|
+
clickable: hasAccordionContent,
|
|
99
|
+
noAnimation: noAnimation,
|
|
100
|
+
onClick: toggleOpenTr,
|
|
101
|
+
onMouseEnter: onMouseEnterHandler,
|
|
102
|
+
onMouseLeave: onMouseLeaveHandler,
|
|
103
|
+
onKeyDown: onKeyDownHandler,
|
|
104
|
+
ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR
|
|
105
|
+
}, props), headerContent), accordionContent);
|
|
117
106
|
function onMouseEnterHandler() {
|
|
118
107
|
setHover(true);
|
|
119
108
|
}
|
|
109
|
+
function onKeyDownHandler(event) {
|
|
110
|
+
toggleOpenTr(event, true);
|
|
111
|
+
}
|
|
120
112
|
function onMouseLeaveHandler() {
|
|
121
113
|
setHover(false);
|
|
122
114
|
setHadClick(false);
|
|
123
115
|
}
|
|
124
|
-
function
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
116
|
+
function toggleOpenFn(event) {
|
|
117
|
+
setOpen(!trIsOpen);
|
|
118
|
+
setHadClick(true);
|
|
119
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(event);
|
|
120
|
+
}
|
|
121
|
+
function toggleOpenTr(event, allowInteractiveElement) {
|
|
122
|
+
onClickTr(event, allowInteractiveElement, toggleOpenFn);
|
|
132
123
|
}
|
|
133
|
-
}
|
|
134
|
-
export function TableAccordionToggleButton() {
|
|
135
|
-
var _React$useContext;
|
|
136
|
-
const tableAccordionContext = React.useContext(TableAccordionContext);
|
|
137
|
-
const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
|
|
138
|
-
const iconSize = (tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.size) === 'medium' || (tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.size) === 'small' ? 'basis' : 'medium';
|
|
139
|
-
return React.createElement("span", {
|
|
140
|
-
className: "dnb-table__toggle-button"
|
|
141
|
-
}, React.createElement(IconPrimary, {
|
|
142
|
-
icon: "chevron_down",
|
|
143
|
-
size: iconSize
|
|
144
|
-
}), React.createElement(Button, {
|
|
145
|
-
className: "dnb-sr-only",
|
|
146
|
-
tabIndex: -1,
|
|
147
|
-
"aria-label": tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR,
|
|
148
|
-
"aria-expanded": Boolean(tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.trIsOpen),
|
|
149
|
-
on_click: event => tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.toggleOpenTr(event, true)
|
|
150
|
-
}));
|
|
151
124
|
}
|
|
152
125
|
const isAccordionElement = element => element.type === TableAccordionContentSingle || element.type === TableAccordionContentRow;
|
|
153
|
-
const isTableHead = children => children.some(element => element.type === Th);
|
|
154
126
|
//# sourceMappingURL=TableAccordionHead.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableAccordionHead.js","names":["React","useEffect","classnames","keycode","hasSelectedText","Button","IconPrimary","Th","Td","TableContext","TableAccordionContext","TableAccordionContentSingle","TableAccordionContentRow","TableAccordionHead","allProps","children","className","expanded","disabled","noAnimation","onClick","onOpened","onClosed","count","props","_objectWithoutProperties","_excluded","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","headerContent","Children","toArray","addExpandIcon","icon","accordionChevronPlacement","push","unshift","accordionContent","filter","element","isAccordionElement","hasAccordionContent","length","every","isValidElement","_tableContext$collaps","collapseTrCallbacks","current","trParams","toggleOpenTr","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeydownHandler","_Td","createElement","key","TableAccordionToggleButton","isTableHead","_tableContext$allProp","accordionToggleButtonSR","countTds","type","Provider","value","_extends","tabIndex","undefined","event","nativeEvent","target","document","activeElement","tagName","preventDefault","allowInteractiveElement","arguments","_React$useContext","tableAccordionContext","tableContextAllProps","iconSize","size","Boolean","on_click","some"],"sources":["../../../../../src/components/table/table-accordion/TableAccordionHead.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\nimport { hasSelectedText } from '../../../shared/helpers'\nimport Button from '../../button/Button'\nimport IconPrimary from '../../icon/IconPrimary'\nimport Th from '../TableTh'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport { TableAccordionContext } from './TableAccordionContext'\nimport {\n TableAccordionContentSingle,\n TableAccordionContentRow,\n} from './TableAccordionContent'\n\nimport type {\n TableAccordionContentSingleProps,\n TableAccordionContentRowProps,\n} from './TableAccordionContent'\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableAccordionHeadProps = {\n /** The row number */\n count: number\n} & TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableAccordionHead(allProps: TableAccordionHeadProps) {\n const {\n children,\n className,\n expanded,\n disabled,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n count,\n ...props\n } = allProps\n const tableContext = React.useContext(TableContext)\n\n const [trIsOpen, setOpen] = React.useState(() => {\n if (typeof expanded === 'boolean') {\n return expanded\n } else if (typeof location !== 'undefined') {\n const id = props?.id\n if (id && '#' + id === location.hash) {\n return true\n }\n }\n\n return false\n })\n const [trIsHover, setHover] = React.useState(false)\n const [trHadClick, setHadClick] = React.useState(false)\n\n let headerContent = React.Children.toArray(children)\n\n const addExpandIcon = (icon) => {\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n headerContent.push(icon)\n } else {\n headerContent.unshift(icon)\n }\n }\n /**\n * Handle Accordion Content\n */\n const accordionContent = headerContent.filter(\n (element: React.ReactElement) => {\n return isAccordionElement(element)\n }\n ) as React.ReactElement<\n TableAccordionContentSingleProps | TableAccordionContentRowProps\n >[]\n\n const hasAccordionContent =\n accordionContent.length !== 0 &&\n accordionContent.every((element) => React.isValidElement(element))\n\n useEffect(() => {\n if (\n hasAccordionContent &&\n tableContext?.collapseTrCallbacks?.current &&\n count\n ) {\n tableContext.collapseTrCallbacks.current[count] = () => {\n setOpen(false)\n }\n }\n }, [count, tableContext?.collapseTrCallbacks, hasAccordionContent])\n\n const trParams =\n !disabled && hasAccordionContent\n ? {\n onClick: toggleOpenTr,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeydownHandler,\n }\n : {}\n\n if (hasAccordionContent) {\n // Remove the AccordionContent, and use it outside of the tr\n headerContent = headerContent.filter((element: React.ReactElement) => {\n return !isAccordionElement(element)\n })\n\n addExpandIcon(\n <Td className=\"dnb-table__td__accordion-icon\" key=\"td-icon\">\n <TableAccordionToggleButton />\n </Td>\n )\n } else if (isTableHead(headerContent)) {\n addExpandIcon(\n <Th\n aria-hidden\n className=\"dnb-table__th__accordion-icon\"\n key=\"th-icon\"\n >\n <div>{tableContext?.allProps?.accordionToggleButtonSR}</div>\n </Th>\n )\n }\n\n const countTds = hasAccordionContent\n ? headerContent.filter((element: React.ReactElement) => {\n return element.type === Td // TODO: We may need to include this in future --> || component.type === Td.MainCell\n }).length\n : null\n\n return (\n <TableAccordionContext.Provider\n value={{\n toggleOpenTr,\n trIsOpen,\n noAnimation,\n countTds,\n onOpened,\n onClosed,\n }}\n >\n <tr\n tabIndex={accordionContent && !disabled ? 0 : undefined}\n className={classnames(\n className,\n hasAccordionContent && 'dnb-table__tr--has-accordion-content',\n trIsOpen && 'dnb-table__tr--expanded',\n disabled && 'dnb-table__tr--disabled',\n noAnimation && 'dnb-table__tr--no-animation',\n trIsHover && trHadClick && 'dnb-table__tr--hover'\n )}\n {...trParams}\n {...props}\n >\n {headerContent}\n </tr>\n {accordionContent}\n </TableAccordionContext.Provider>\n )\n\n function onKeydownHandler(event: React.SyntheticEvent) {\n switch (keycode(event.nativeEvent)) {\n case 'space':\n case 'enter':\n {\n const target = event.target as HTMLElement\n if (\n document.activeElement !== target ||\n target.tagName === 'TR'\n ) {\n setOpen(!trIsOpen)\n event.preventDefault()\n }\n }\n break\n }\n }\n function onMouseEnterHandler() {\n setHover(true)\n }\n function onMouseLeaveHandler() {\n setHover(false)\n setHadClick(false)\n }\n function toggleOpenTr(\n event: React.SyntheticEvent,\n allowInteractiveElement = false\n ) {\n const target = event.target as HTMLElement\n if (\n /**\n * Do not toggle if user clicked an interactive element (input, button, etc.).\n * Interactive to set activeElement on mouseDown, we we can check against it.\n */\n ((document.activeElement !== target &&\n /**\n * Safari on macOS needs this extra check:\n *\n * > For example, on macOS systems, elements that aren't text input elements are not typically focusable by default.\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement\n */\n target.tagName !== 'INPUT' &&\n target.tagName !== 'LABEL') ||\n allowInteractiveElement) &&\n /**\n * Let the user select text,\n * without triggering the accordion.\n */\n !hasSelectedText()\n ) {\n setOpen(!trIsOpen)\n setHadClick(true)\n\n onClick?.(event)\n }\n }\n}\n\nexport function TableAccordionToggleButton() {\n const tableAccordionContext = React.useContext(TableAccordionContext)\n const tableContextAllProps = React.useContext(TableContext)?.allProps\n const iconSize =\n tableContextAllProps?.size === 'medium' ||\n tableContextAllProps?.size === 'small'\n ? 'basis'\n : 'medium'\n\n return (\n <span className=\"dnb-table__toggle-button\">\n <IconPrimary icon=\"chevron_down\" size={iconSize} />\n <Button\n className=\"dnb-sr-only\"\n tabIndex={-1}\n aria-label={tableContextAllProps?.accordionToggleButtonSR}\n aria-expanded={Boolean(tableAccordionContext?.trIsOpen)}\n on_click={(event) =>\n tableAccordionContext?.toggleOpenTr(event, true)\n }\n />\n </span>\n )\n}\n\nconst isAccordionElement = (element: React.ReactElement) =>\n element.type === TableAccordionContentSingle ||\n element.type === TableAccordionContentRow\n\nconst isTableHead = (children: React.ReactNode[]) =>\n children.some((element: React.ReactElement) => element.type === Th)\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,SAAS;AAC7B,SAASC,eAAe,QAAQ,yBAAyB;AACzD,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,WAAW,MAAM,wBAAwB;AAChD,OAAOC,EAAE,MAAM,YAAY;AAC3B,OAAOC,EAAE,MAAM,YAAY;AAC3B,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SACEC,2BAA2B,EAC3BC,wBAAwB,QACnB,yBAAyB;AAchC,OAAO,SAASC,kBAAkBA,CAACC,QAAiC,EAAE;EACpE,MAAM;MACJC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MACRC,QAAQ;MACRC,WAAW;MACXC,OAAO;MACPC,QAAQ;MACRC,QAAQ;MACRC;IAEF,CAAC,GAAGT,QAAQ;IADPU,KAAK,GAAAC,wBAAA,CACNX,QAAQ,EAAAY,SAAA;EACZ,MAAMC,YAAY,GAAG3B,KAAK,CAAC4B,UAAU,CAACnB,YAAY,CAAC;EAEnD,MAAM,CAACoB,QAAQ,EAAEC,OAAO,CAAC,GAAG9B,KAAK,CAAC+B,QAAQ,CAAC,MAAM;IAC/C,IAAI,OAAOd,QAAQ,KAAK,SAAS,EAAE;MACjC,OAAOA,QAAQ;IACjB,CAAC,MAAM,IAAI,OAAOe,QAAQ,KAAK,WAAW,EAAE;MAC1C,MAAMC,EAAE,GAAGT,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAES,EAAE;MACpB,IAAIA,EAAE,IAAI,GAAG,GAAGA,EAAE,KAAKD,QAAQ,CAACE,IAAI,EAAE;QACpC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd,CAAC,CAAC;EACF,MAAM,CAACC,SAAS,EAAEC,QAAQ,CAAC,GAAGpC,KAAK,CAAC+B,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACM,UAAU,EAAEC,WAAW,CAAC,GAAGtC,KAAK,CAAC+B,QAAQ,CAAC,KAAK,CAAC;EAEvD,IAAIQ,aAAa,GAAGvC,KAAK,CAACwC,QAAQ,CAACC,OAAO,CAAC1B,QAAQ,CAAC;EAEpD,MAAM2B,aAAa,GAAIC,IAAI,IAAK;IAC9B,IAAIhB,YAAY,CAACb,QAAQ,CAAC8B,yBAAyB,KAAK,KAAK,EAAE;MAC7DL,aAAa,CAACM,IAAI,CAACF,IAAI,CAAC;IAC1B,CAAC,MAAM;MACLJ,aAAa,CAACO,OAAO,CAACH,IAAI,CAAC;IAC7B;EACF,CAAC;EAID,MAAMI,gBAAgB,GAAGR,aAAa,CAACS,MAAM,CAC1CC,OAA2B,IAAK;IAC/B,OAAOC,kBAAkB,CAACD,OAAO,CAAC;EACpC,CACF,CAEG;EAEH,MAAME,mBAAmB,GACvBJ,gBAAgB,CAACK,MAAM,KAAK,CAAC,IAC7BL,gBAAgB,CAACM,KAAK,CAAEJ,OAAO,IAAKjD,KAAK,CAACsD,cAAc,CAACL,OAAO,CAAC,CAAC;EAEpEhD,SAAS,CAAC,MAAM;IAAA,IAAAsD,qBAAA;IACd,IACEJ,mBAAmB,IACnBxB,YAAY,aAAZA,YAAY,gBAAA4B,qBAAA,GAAZ5B,YAAY,CAAE6B,mBAAmB,cAAAD,qBAAA,eAAjCA,qBAAA,CAAmCE,OAAO,IAC1ClC,KAAK,EACL;MACAI,YAAY,CAAC6B,mBAAmB,CAACC,OAAO,CAAClC,KAAK,CAAC,GAAG,MAAM;QACtDO,OAAO,CAAC,KAAK,CAAC;MAChB,CAAC;IACH;EACF,CAAC,EAAE,CAACP,KAAK,EAAEI,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE6B,mBAAmB,EAAEL,mBAAmB,CAAC,CAAC;EAEnE,MAAMO,QAAQ,GACZ,CAACxC,QAAQ,IAAIiC,mBAAmB,GAC5B;IACE/B,OAAO,EAAEuC,YAAY;IACrBC,YAAY,EAAEC,mBAAmB;IACjCC,YAAY,EAAEC,mBAAmB;IACjCC,SAAS,EAAEC;EACb,CAAC,GACD,CAAC,CAAC;EAER,IAAId,mBAAmB,EAAE;IAEvBZ,aAAa,GAAGA,aAAa,CAACS,MAAM,CAAEC,OAA2B,IAAK;MACpE,OAAO,CAACC,kBAAkB,CAACD,OAAO,CAAC;IACrC,CAAC,CAAC;IAEFP,aAAa,CAAAwB,GAAA,KAAAA,GAAA,GACXlE,KAAA,CAAAmE,aAAA,CAAC3D,EAAE;MAACQ,SAAS,EAAC,+BAA+B;MAACoD,GAAG,EAAC;IAAS,GACzDpE,KAAA,CAAAmE,aAAA,CAACE,0BAA0B,MAAE,CAC3B,CAAC,CACP,CAAC;EACH,CAAC,MAAM,IAAIC,WAAW,CAAC/B,aAAa,CAAC,EAAE;IAAA,IAAAgC,qBAAA;IACrC7B,aAAa,CACX1C,KAAA,CAAAmE,aAAA,CAAC5D,EAAE;MACD,mBAAW;MACXS,SAAS,EAAC,+BAA+B;MACzCoD,GAAG,EAAC;IAAS,GAEbpE,KAAA,CAAAmE,aAAA,cAAMxC,YAAY,aAAZA,YAAY,wBAAA4C,qBAAA,GAAZ5C,YAAY,CAAEb,QAAQ,cAAAyD,qBAAA,uBAAtBA,qBAAA,CAAwBC,uBAA6B,CACzD,CACN,CAAC;EACH;EAEA,MAAMC,QAAQ,GAAGtB,mBAAmB,GAChCZ,aAAa,CAACS,MAAM,CAAEC,OAA2B,IAAK;IACpD,OAAOA,OAAO,CAACyB,IAAI,KAAKlE,EAAE;EAC5B,CAAC,CAAC,CAAC4C,MAAM,GACT,IAAI;EAER,OACEpD,KAAA,CAAAmE,aAAA,CAACzD,qBAAqB,CAACiE,QAAQ;IAC7BC,KAAK,EAAE;MACLjB,YAAY;MACZ9B,QAAQ;MACRV,WAAW;MACXsD,QAAQ;MACRpD,QAAQ;MACRC;IACF;EAAE,GAEFtB,KAAA,CAAAmE,aAAA,OAAAU,QAAA;IACEC,QAAQ,EAAE/B,gBAAgB,IAAI,CAAC7B,QAAQ,GAAG,CAAC,GAAG6D,SAAU;IACxD/D,SAAS,EAAEd,UAAU,CACnBc,SAAS,EACTmC,mBAAmB,IAAI,sCAAsC,EAC7DtB,QAAQ,IAAI,yBAAyB,EACrCX,QAAQ,IAAI,yBAAyB,EACrCC,WAAW,IAAI,6BAA6B,EAC5CgB,SAAS,IAAIE,UAAU,IAAI,sBAC7B;EAAE,GACEqB,QAAQ,EACRlC,KAAK,GAERe,aACC,CAAC,EACJQ,gBAC6B,CAAC;EAGnC,SAASkB,gBAAgBA,CAACe,KAA2B,EAAE;IACrD,QAAQ7E,OAAO,CAAC6E,KAAK,CAACC,WAAW,CAAC;MAChC,KAAK,OAAO;MACZ,KAAK,OAAO;QACV;UACE,MAAMC,MAAM,GAAGF,KAAK,CAACE,MAAqB;UAC1C,IACEC,QAAQ,CAACC,aAAa,KAAKF,MAAM,IACjCA,MAAM,CAACG,OAAO,KAAK,IAAI,EACvB;YACAvD,OAAO,CAAC,CAACD,QAAQ,CAAC;YAClBmD,KAAK,CAACM,cAAc,CAAC,CAAC;UACxB;QACF;QACA;IACJ;EACF;EACA,SAASzB,mBAAmBA,CAAA,EAAG;IAC7BzB,QAAQ,CAAC,IAAI,CAAC;EAChB;EACA,SAAS2B,mBAAmBA,CAAA,EAAG;IAC7B3B,QAAQ,CAAC,KAAK,CAAC;IACfE,WAAW,CAAC,KAAK,CAAC;EACpB;EACA,SAASqB,YAAYA,CACnBqB,KAA2B,EAE3B;IAAA,IADAO,uBAAuB,GAAAC,SAAA,CAAApC,MAAA,QAAAoC,SAAA,QAAAT,SAAA,GAAAS,SAAA,MAAG,KAAK;IAE/B,MAAMN,MAAM,GAAGF,KAAK,CAACE,MAAqB;IAC1C,IAKE,CAAEC,QAAQ,CAACC,aAAa,KAAKF,MAAM,IAOjCA,MAAM,CAACG,OAAO,KAAK,OAAO,IAC1BH,MAAM,CAACG,OAAO,KAAK,OAAO,IAC1BE,uBAAuB,KAKzB,CAACnF,eAAe,CAAC,CAAC,EAClB;MACA0B,OAAO,CAAC,CAACD,QAAQ,CAAC;MAClBS,WAAW,CAAC,IAAI,CAAC;MAEjBlB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAG4D,KAAK,CAAC;IAClB;EACF;AACF;AAEA,OAAO,SAASX,0BAA0BA,CAAA,EAAG;EAAA,IAAAoB,iBAAA;EAC3C,MAAMC,qBAAqB,GAAG1F,KAAK,CAAC4B,UAAU,CAAClB,qBAAqB,CAAC;EACrE,MAAMiF,oBAAoB,IAAAF,iBAAA,GAAGzF,KAAK,CAAC4B,UAAU,CAACnB,YAAY,CAAC,cAAAgF,iBAAA,uBAA9BA,iBAAA,CAAgC3E,QAAQ;EACrE,MAAM8E,QAAQ,GACZ,CAAAD,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEE,IAAI,MAAK,QAAQ,IACvC,CAAAF,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEE,IAAI,MAAK,OAAO,GAClC,OAAO,GACP,QAAQ;EAEd,OACE7F,KAAA,CAAAmE,aAAA;IAAMnD,SAAS,EAAC;EAA0B,GACxChB,KAAA,CAAAmE,aAAA,CAAC7D,WAAW;IAACqC,IAAI,EAAC,cAAc;IAACkD,IAAI,EAAED;EAAS,CAAE,CAAC,EACnD5F,KAAA,CAAAmE,aAAA,CAAC9D,MAAM;IACLW,SAAS,EAAC,aAAa;IACvB8D,QAAQ,EAAE,CAAC,CAAE;IACb,cAAYa,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEnB,uBAAwB;IAC1D,iBAAesB,OAAO,CAACJ,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAE7D,QAAQ,CAAE;IACxDkE,QAAQ,EAAGf,KAAK,IACdU,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAE/B,YAAY,CAACqB,KAAK,EAAE,IAAI;EAChD,CACF,CACG,CAAC;AAEX;AAEA,MAAM9B,kBAAkB,GAAID,OAA2B,IACrDA,OAAO,CAACyB,IAAI,KAAK/D,2BAA2B,IAC5CsC,OAAO,CAACyB,IAAI,KAAK9D,wBAAwB;AAE3C,MAAM0D,WAAW,GAAIvD,QAA2B,IAC9CA,QAAQ,CAACiF,IAAI,CAAE/C,OAA2B,IAAKA,OAAO,CAACyB,IAAI,KAAKnE,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"TableAccordionHead.js","names":["React","useEffect","Td","TableContext","TableClickableButtonTd","TableClickableHead","TableIconSrTh","isTableHead","onClickTr","TableAccordionContext","TableAccordionContentSingle","TableAccordionContentRow","TableAccordionHead","allProps","_React$useContext","children","expanded","noAnimation","onClick","onOpened","onClosed","count","props","_objectWithoutProperties","_excluded","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","headerContent","Children","toArray","addContent","content","accordionChevronPlacement","push","unshift","accordionContent","filter","element","isAccordionElement","hasAccordionContent","length","every","isValidElement","_tableContext$collaps","collapseTrCallbacks","current","tableContextAllProps","createElement","ariaLabel","accordionToggleButtonSR","icon","toggleOpenTr","key","_tableContext$allProp","text","_Td","countTds","type","Provider","value","_extends","clickable","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeyDownHandler","event","toggleOpenFn","allowInteractiveElement"],"sources":["../../../../../src/components/table/table-accordion/TableAccordionHead.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport {\n TableClickableButtonTd,\n TableClickableHead,\n TableIconSrTh,\n isTableHead,\n onClickTr,\n} from '../TableClickableHead'\nimport { TableAccordionContext } from './TableAccordionContext'\nimport {\n TableAccordionContentSingle,\n TableAccordionContentRow,\n} from './TableAccordionContent'\n\nimport type {\n TableAccordionContentSingleProps,\n TableAccordionContentRowProps,\n} from './TableAccordionContent'\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableAccordionHeadProps = {\n /** The row number */\n count: number\n} & TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableAccordionHead(allProps: TableAccordionHeadProps) {\n const {\n children,\n expanded,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n count,\n ...props\n } = allProps\n const tableContext = React.useContext(TableContext)\n\n const [trIsOpen, setOpen] = React.useState(() => {\n if (typeof expanded === 'boolean') {\n return expanded\n } else if (typeof location !== 'undefined') {\n const id = props?.id\n if (id && '#' + id === location.hash) {\n return true\n }\n }\n\n return false\n })\n const [trIsHover, setHover] = React.useState(false)\n const [trHadClick, setHadClick] = React.useState(false)\n\n let headerContent = React.Children.toArray(children)\n\n const addContent = (content) => {\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n headerContent.push(content)\n } else {\n headerContent.unshift(content)\n }\n }\n\n /**\n * Handle Accordion Content\n */\n const accordionContent = headerContent.filter(\n (element: React.ReactElement) => {\n return isAccordionElement(element)\n }\n ) as React.ReactElement<\n TableAccordionContentSingleProps | TableAccordionContentRowProps\n >[]\n\n const hasAccordionContent =\n accordionContent.length !== 0 &&\n accordionContent.every((element) => React.isValidElement(element))\n\n useEffect(() => {\n if (\n hasAccordionContent &&\n tableContext?.collapseTrCallbacks?.current &&\n count\n ) {\n tableContext.collapseTrCallbacks.current[count] = () => {\n setOpen(false)\n }\n }\n }, [count, tableContext?.collapseTrCallbacks, hasAccordionContent])\n\n const tableContextAllProps = React.useContext(TableContext)?.allProps\n\n if (hasAccordionContent) {\n // Remove the AccordionContent, and use it outside of the tr\n headerContent = headerContent.filter((element: React.ReactElement) => {\n return !isAccordionElement(element)\n })\n\n addContent(\n <TableClickableButtonTd\n trIsOpen={trIsOpen}\n ariaLabel={tableContextAllProps?.accordionToggleButtonSR}\n icon=\"chevron_down\"\n onClick={toggleOpenTr}\n key=\"td-icon\"\n />\n )\n } else if (isTableHead(headerContent)) {\n addContent(\n <TableIconSrTh\n key=\"th-icon\"\n text={tableContext?.allProps?.accordionToggleButtonSR}\n />\n )\n } else if (!hasAccordionContent) {\n addContent(<Td key=\"empty-td\"></Td>)\n }\n\n const countTds = hasAccordionContent\n ? headerContent.filter((element: React.ReactElement) => {\n return (\n element.type === Td || element.type === TableClickableButtonTd\n ) // TODO: We may need to include this in future --> || component.type === Td.MainCell\n }).length\n : null\n\n return (\n <TableAccordionContext.Provider\n value={{\n toggleOpenTr,\n trIsOpen,\n noAnimation,\n countTds,\n onOpened,\n onClosed,\n }}\n >\n <TableClickableHead\n trIsOpen={trIsOpen}\n trIsHover={trIsHover}\n trHadClick={trHadClick}\n clickable={hasAccordionContent}\n noAnimation={noAnimation}\n onClick={toggleOpenTr}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onKeyDown={onKeyDownHandler}\n ariaLabel={tableContextAllProps?.accordionToggleButtonSR}\n {...props}\n >\n {headerContent}\n </TableClickableHead>\n {accordionContent}\n </TableAccordionContext.Provider>\n )\n\n function onMouseEnterHandler() {\n setHover(true)\n }\n\n function onKeyDownHandler(event: React.SyntheticEvent) {\n toggleOpenTr(event, true)\n }\n\n function onMouseLeaveHandler() {\n setHover(false)\n setHadClick(false)\n }\n\n function toggleOpenFn(event: React.SyntheticEvent) {\n setOpen(!trIsOpen)\n setHadClick(true)\n onClick?.(event)\n }\n\n function toggleOpenTr(\n event: React.SyntheticEvent,\n allowInteractiveElement?: boolean\n ) {\n onClickTr(event, allowInteractiveElement, toggleOpenFn)\n }\n}\n\nconst isAccordionElement = (element: React.ReactElement) =>\n element.type === TableAccordionContentSingle ||\n element.type === TableAccordionContentRow\n"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TableTrProps } from '../TableTr';
|
|
3
|
+
export type TableNavigationHeadProps = TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>;
|
|
4
|
+
export declare function TableNavigationHead(allProps: TableNavigationHeadProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _Td;
|
|
4
|
+
const _excluded = ["children", "onClick"];
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import Td from '../TableTd';
|
|
7
|
+
import { TableContext } from '../TableContext';
|
|
8
|
+
import { TableClickableButtonTd, TableClickableHead, TableIconSrTh, isTableHead, onClickTr } from '../TableClickableHead';
|
|
9
|
+
export function TableNavigationHead(allProps) {
|
|
10
|
+
var _React$useContext;
|
|
11
|
+
const {
|
|
12
|
+
children,
|
|
13
|
+
onClick
|
|
14
|
+
} = allProps,
|
|
15
|
+
props = _objectWithoutProperties(allProps, _excluded);
|
|
16
|
+
const tableContext = React.useContext(TableContext);
|
|
17
|
+
let content = React.Children.toArray(children);
|
|
18
|
+
const hasOnClick = typeof onClick === 'function';
|
|
19
|
+
const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
|
|
20
|
+
if (hasOnClick) {
|
|
21
|
+
content.push(React.createElement(TableClickableButtonTd, {
|
|
22
|
+
key: "td-icon",
|
|
23
|
+
ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.navigationButtonSR,
|
|
24
|
+
icon: "chevron_right",
|
|
25
|
+
onClick: onClickHandler
|
|
26
|
+
}));
|
|
27
|
+
} else if (isTableHead(content)) {
|
|
28
|
+
var _tableContext$allProp;
|
|
29
|
+
content.push(React.createElement(TableIconSrTh, {
|
|
30
|
+
key: "th-icon",
|
|
31
|
+
text: tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp = tableContext.allProps) === null || _tableContext$allProp === void 0 ? void 0 : _tableContext$allProp.navigationButtonSR
|
|
32
|
+
}));
|
|
33
|
+
} else if (!hasOnClick) {
|
|
34
|
+
content.push(_Td || (_Td = React.createElement(Td, {
|
|
35
|
+
key: "empty-td"
|
|
36
|
+
})));
|
|
37
|
+
}
|
|
38
|
+
return React.createElement(TableClickableHead, _extends({
|
|
39
|
+
clickable: hasOnClick,
|
|
40
|
+
onClick: onClickHandler,
|
|
41
|
+
onKeyDown: onClick,
|
|
42
|
+
ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.navigationButtonSR
|
|
43
|
+
}, props), content);
|
|
44
|
+
function onClickHandler(event, allowInteractiveElement) {
|
|
45
|
+
onClickTr(event, allowInteractiveElement, onClick);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=TableNavigationHead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableNavigationHead.js","names":["React","Td","TableContext","TableClickableButtonTd","TableClickableHead","TableIconSrTh","isTableHead","onClickTr","TableNavigationHead","allProps","_React$useContext","children","onClick","props","_objectWithoutProperties","_excluded","tableContext","useContext","content","Children","toArray","hasOnClick","tableContextAllProps","push","createElement","key","ariaLabel","navigationButtonSR","icon","onClickHandler","_tableContext$allProp","text","_Td","_extends","clickable","onKeyDown","event","allowInteractiveElement"],"sources":["../../../../../src/components/table/table-navigation/TableNavigationHead.tsx"],"sourcesContent":["import React from 'react'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport {\n TableClickableButtonTd,\n TableClickableHead,\n TableIconSrTh,\n isTableHead,\n onClickTr,\n} from '../TableClickableHead'\n\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableNavigationHeadProps = TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableNavigationHead(allProps: TableNavigationHeadProps) {\n const { children, onClick, ...props } = allProps\n const tableContext = React.useContext(TableContext)\n\n let content = React.Children.toArray(children)\n\n const hasOnClick = typeof onClick === 'function'\n\n const tableContextAllProps = React.useContext(TableContext)?.allProps\n\n if (hasOnClick) {\n content.push(\n <TableClickableButtonTd\n key=\"td-icon\"\n ariaLabel={tableContextAllProps?.navigationButtonSR}\n icon=\"chevron_right\"\n onClick={onClickHandler}\n />\n )\n } else if (isTableHead(content)) {\n content.push(\n <TableIconSrTh\n key=\"th-icon\"\n text={tableContext?.allProps?.navigationButtonSR}\n />\n )\n } else if (!hasOnClick) {\n content.push(<Td key=\"empty-td\"></Td>)\n }\n\n return (\n <TableClickableHead\n clickable={hasOnClick}\n onClick={onClickHandler}\n onKeyDown={onClick}\n ariaLabel={tableContextAllProps?.navigationButtonSR}\n {...props}\n >\n {content}\n </TableClickableHead>\n )\n\n function onClickHandler(\n event: React.SyntheticEvent,\n allowInteractiveElement?: boolean\n ) {\n onClickTr(event, allowInteractiveElement, onClick)\n }\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,EAAE,MAAM,YAAY;AAC3B,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SACEC,sBAAsB,EACtBC,kBAAkB,EAClBC,aAAa,EACbC,WAAW,EACXC,SAAS,QACJ,uBAAuB;AAO9B,OAAO,SAASC,mBAAmBA,CAACC,QAAkC,EAAE;EAAA,IAAAC,iBAAA;EACtE,MAAM;MAAEC,QAAQ;MAAEC;IAAkB,CAAC,GAAGH,QAAQ;IAAlBI,KAAK,GAAAC,wBAAA,CAAKL,QAAQ,EAAAM,SAAA;EAChD,MAAMC,YAAY,GAAGhB,KAAK,CAACiB,UAAU,CAACf,YAAY,CAAC;EAEnD,IAAIgB,OAAO,GAAGlB,KAAK,CAACmB,QAAQ,CAACC,OAAO,CAACT,QAAQ,CAAC;EAE9C,MAAMU,UAAU,GAAG,OAAOT,OAAO,KAAK,UAAU;EAEhD,MAAMU,oBAAoB,IAAAZ,iBAAA,GAAGV,KAAK,CAACiB,UAAU,CAACf,YAAY,CAAC,cAAAQ,iBAAA,uBAA9BA,iBAAA,CAAgCD,QAAQ;EAErE,IAAIY,UAAU,EAAE;IACdH,OAAO,CAACK,IAAI,CACVvB,KAAA,CAAAwB,aAAA,CAACrB,sBAAsB;MACrBsB,GAAG,EAAC,SAAS;MACbC,SAAS,EAAEJ,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEK,kBAAmB;MACpDC,IAAI,EAAC,eAAe;MACpBhB,OAAO,EAAEiB;IAAe,CACzB,CACH,CAAC;EACH,CAAC,MAAM,IAAIvB,WAAW,CAACY,OAAO,CAAC,EAAE;IAAA,IAAAY,qBAAA;IAC/BZ,OAAO,CAACK,IAAI,CACVvB,KAAA,CAAAwB,aAAA,CAACnB,aAAa;MACZoB,GAAG,EAAC,SAAS;MACbM,IAAI,EAAEf,YAAY,aAAZA,YAAY,wBAAAc,qBAAA,GAAZd,YAAY,CAAEP,QAAQ,cAAAqB,qBAAA,uBAAtBA,qBAAA,CAAwBH;IAAmB,CAClD,CACH,CAAC;EACH,CAAC,MAAM,IAAI,CAACN,UAAU,EAAE;IACtBH,OAAO,CAACK,IAAI,CAAAS,GAAA,KAAAA,GAAA,GAAChC,KAAA,CAAAwB,aAAA,CAACvB,EAAE;MAACwB,GAAG,EAAC;IAAU,CAAK,CAAC,EAAC;EACxC;EAEA,OACEzB,KAAA,CAAAwB,aAAA,CAACpB,kBAAkB,EAAA6B,QAAA;IACjBC,SAAS,EAAEb,UAAW;IACtBT,OAAO,EAAEiB,cAAe;IACxBM,SAAS,EAAEvB,OAAQ;IACnBc,SAAS,EAAEJ,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEK;EAAmB,GAChDd,KAAK,GAERK,OACiB,CAAC;EAGvB,SAASW,cAAcA,CACrBO,KAA2B,EAC3BC,uBAAiC,EACjC;IACA9B,SAAS,CAAC6B,KAAK,EAAEC,uBAAuB,EAAEzB,OAAO,CAAC;EACpD;AACF"}
|
|
@@ -60,9 +60,10 @@ function Badge(localProps) {
|
|
|
60
60
|
if (!label && contentIsNum) {
|
|
61
61
|
warn(`Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`);
|
|
62
62
|
}
|
|
63
|
+
const isInline = !children && content;
|
|
63
64
|
return React.createElement("span", _extends({
|
|
64
65
|
role: "status",
|
|
65
|
-
className: classnames(`dnb-badge dnb-badge--variant-${variant}`, skeletonClasses, spacingClasses, className, horizontal && `dnb-badge--horizontal-${horizontal}`, vertical && `dnb-badge--vertical-${vertical}
|
|
66
|
+
className: classnames(`dnb-badge dnb-badge--variant-${variant}`, skeletonClasses, spacingClasses, className, horizontal && `dnb-badge--horizontal-${horizontal}`, vertical && `dnb-badge--vertical-${vertical}`, isInline && 'dnb-badge--inline')
|
|
66
67
|
}, props), label && (_span || (_span = React.createElement("span", {
|
|
67
68
|
className: "dnb-sr-only"
|
|
68
69
|
}, label, " "))), content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","_span","context","useContext","allProps","contentProp","props","_objectWithoutProperties","_excluded","createElement","BadgeRoot","BadgeElem","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","_extends","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps & SpacingProps\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n\n const {\n label,\n className,\n children, // eslint-disable-line\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n ...props\n } = allProps\n\n validateDOMAttributes(allProps, props)\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem />\n\n function BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n }\n\n function BadgeElem() {\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(allProps)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...props}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n }\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAGnC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,mBAAmB,QAAQ,4BAA4B;AAGhE,OAAOC,OAAO,MAAM,sBAAsB;AAG1C,SACEC,IAAI,EACJC,sBAAsB,EACtBC,qBAAqB,QAChB,+BAA+B;AAsDtC,OAAO,MAAMC,YAAY,GAAG;EAC1BC,KAAK,EAAE,IAAI;EACXC,SAAS,EAAE,IAAI;EACfC,QAAQ,EAAE,KAAK;EACfC,QAAQ,EAAE,IAAI;EACdC,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE,IAAI;EACdC,UAAU,EAAE,IAAI;EAChBC,OAAO,EAAE;AACX,CAAC;AAED,SAASC,KAAKA,CAACC,UAAgC,EAAE;EAAA,IAAAC,KAAA;EAE/C,MAAMC,OAAO,GAAGpB,KAAK,CAACqB,UAAU,CAACjB,OAAO,CAAC;EAGzC,MAAMkB,QAAQ,GAAGhB,sBAAsB,CACrCY,UAAU,EACVV,YAAY,EACZY,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEH,KAAK,EACd;IAAEN,QAAQ,EAAES,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAET;EAAS,CAChC,CAAC;EAED,MAAM;MACJF,KAAK;MACLC,SAAS;MACTE,QAAQ;MACRD,QAAQ;MACRI,UAAU;MACVD,QAAQ;MACRD,OAAO,EAAEU,WAAW;MACpBP;IAEF,CAAC,GAAGM,QAAQ;IADPE,KAAK,GAAAC,wBAAA,CACNH,QAAQ,EAAAI,SAAA;EAEZnB,qBAAqB,CAACe,QAAQ,EAAEE,KAAK,CAAC;EAEtC,IAAIZ,QAAQ,EAAE;IACZ,OACEZ,KAAA,CAAA2B,aAAA,CAACC,SAAS,QACPhB,QAAQ,EACTZ,KAAA,CAAA2B,aAAA,CAACE,SAAS,MAAE,CACH,CAAC;EAEhB;EAEA,OAAO7B,KAAA,CAAA2B,aAAA,CAACE,SAAS,MAAE,CAAC;EAEpB,SAASD,SAASA,CAAC;IAAEhB;EAAwC,CAAC,EAAE;IAC9D,OAAOZ,KAAA,CAAA2B,aAAA;MAAMjB,SAAS,EAAC;IAAiB,GAAEE,QAAe,CAAC;EAC5D;EAEA,SAASiB,SAASA,CAAA,EAAG;IACnB,MAAMC,eAAe,GAAG3B,mBAAmB,CAAC,OAAO,EAAEQ,QAAQ,EAAES,OAAO,CAAC;IACvE,MAAMW,cAAc,GAAG7B,oBAAoB,CAACoB,QAAQ,CAAC;IACrD,MAAMU,YAAY,GAAG,OAAOT,WAAW,KAAK,QAAQ;IACpD,MAAMU,qBAAqB,GAAGjB,OAAO,KAAK,cAAc;IAExD,MAAMH,OAAO,GACXoB,qBAAqB,IAAID,YAAY,IAAIT,WAAW,GAAG,CAAC,GACpD,IAAI,GACJA,WAAW;IAEjB,IAAIU,qBAAqB,IAAI,CAACD,YAAY,EAAE;MAC1C3B,IAAI,CACD,4GACH,CAAC;IACH;IACA,IAAI,CAACI,KAAK,IAAIuB,YAAY,EAAE;MAC1B3B,IAAI,CACD,8JACH,CAAC;IACH;IAEA,
|
|
1
|
+
{"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","_span","context","useContext","allProps","contentProp","props","_objectWithoutProperties","_excluded","createElement","BadgeRoot","BadgeElem","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","isInline","_extends","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps & SpacingProps\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n\n const {\n label,\n className,\n children, // eslint-disable-line\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n ...props\n } = allProps\n\n validateDOMAttributes(allProps, props)\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem />\n\n function BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n }\n\n function BadgeElem() {\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(allProps)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n const isInline = !children && content\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n isInline && 'dnb-badge--inline',\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...props}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n }\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-badge{--badge-font-size:var(--font-size-x-small);--badge-width:1.5rem;--badge-height:1.5rem;--badge-border-radius-information:calc(var(--badge-height)/4);--badge-border-radius-notification:calc(var(--badge-height)/2);--badge-line-height:var(--line-height-x-small);align-content:center;align-items:center;display:inline-flex;flex-flow:row wrap;font-size:var(--badge-font-size);font-weight:var(--font-weight-medium);height:var(--badge-height);justify-content:center;white-space:nowrap;width:var(--badge-width)}.dnb-badge,.dnb-core-style .dnb-badge{line-height:var(--badge-line-height)}.dnb-badge__root{display:inline-flex;flex-shrink:0;position:relative;vertical-align:middle}.dnb-badge__root .dnb-badge{display:flex;overflow:hidden;position:absolute;z-index:2}.dnb-badge--variant-notification{border-radius:var(--badge-border-radius-notification)}.dnb-badge--variant-information{border-radius:var(--badge-border-radius-information);min-width:var(--badge-width);padding:0 var(--spacing-xx-small);width:auto}.dnb-badge--horizontal-left{left:0}.dnb-badge--horizontal-right{right:0}.dnb-badge--vertical-bottom{bottom:0}.dnb-badge--vertical-top{top:0}
|
|
1
|
+
.dnb-badge{--badge-font-size:var(--font-size-x-small);--badge-width:1.5rem;--badge-height:1.5rem;--badge-border-radius-information:calc(var(--badge-height)/4);--badge-border-radius-notification:calc(var(--badge-height)/2);--badge-line-height:var(--line-height-x-small);align-content:center;align-items:center;display:inline-flex;flex-flow:row wrap;font-size:var(--badge-font-size);font-weight:var(--font-weight-medium);height:var(--badge-height);justify-content:center;white-space:nowrap;width:var(--badge-width)}.dnb-badge,.dnb-core-style .dnb-badge{line-height:var(--badge-line-height)}.dnb-badge__root{display:inline-flex;flex-shrink:0;position:relative;vertical-align:middle}.dnb-badge__root .dnb-badge{display:flex;overflow:hidden;position:absolute;z-index:2}.dnb-badge--variant-notification{border-radius:var(--badge-border-radius-notification)}.dnb-badge--variant-information{border-radius:var(--badge-border-radius-information);min-width:var(--badge-width);padding:0 var(--spacing-xx-small);width:auto}.dnb-badge--horizontal-left{left:0}.dnb-badge--horizontal-right{right:0}.dnb-badge--vertical-bottom{bottom:0}.dnb-badge--vertical-top{top:0}.dnb-badge--inline.dnb-badge--vertical-top{transform:translateY(-25%)}.dnb-badge--inline.dnb-badge--vertical-bottom{transform:translateY(25%)}
|
|
@@ -71,4 +71,16 @@
|
|
|
71
71
|
&--vertical-top {
|
|
72
72
|
top: 0;
|
|
73
73
|
}
|
|
74
|
+
|
|
75
|
+
&--inline {
|
|
76
|
+
&.dnb-badge--vertical-top {
|
|
77
|
+
// 1/4 of the badge height
|
|
78
|
+
transform: translateY(-25%);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&.dnb-badge--vertical-bottom {
|
|
82
|
+
// 1/4 of the badge height
|
|
83
|
+
transform: translateY(25%);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
74
86
|
}
|