@dnb/eufemia 9.16.2 → 9.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cjs/components/input-masked/InputMaskedHooks.js +3 -2
  3. package/cjs/components/input-masked/InputMaskedUtils.js +2 -2
  4. package/cjs/components/pagination/Pagination.d.ts +6 -0
  5. package/cjs/components/pagination/Pagination.js +2 -0
  6. package/cjs/components/pagination/PaginationBar.js +1 -1
  7. package/cjs/components/pagination/PaginationInfinity.js +152 -89
  8. package/cjs/components/pagination/PaginationProvider.js +65 -68
  9. package/cjs/components/tabs/style/_tabs.scss +5 -1
  10. package/cjs/components/tabs/style/dnb-tabs.css +4 -1
  11. package/cjs/components/tabs/style/dnb-tabs.min.css +1 -1
  12. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.css +37 -34
  13. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  14. package/cjs/components/tabs/style/themes/dnb-tabs-theme-ui.scss +12 -9
  15. package/cjs/shared/component-helper.js +3 -1
  16. package/cjs/shared/helpers.js +23 -12
  17. package/cjs/style/dnb-ui-components.css +4 -1
  18. package/cjs/style/dnb-ui-components.min.css +1 -1
  19. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +37 -34
  20. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  21. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +37 -34
  22. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  23. package/components/input-masked/InputMaskedHooks.js +3 -2
  24. package/components/input-masked/InputMaskedUtils.js +3 -3
  25. package/components/pagination/Pagination.d.ts +6 -0
  26. package/components/pagination/Pagination.js +2 -0
  27. package/components/pagination/PaginationBar.js +1 -1
  28. package/components/pagination/PaginationInfinity.js +137 -67
  29. package/components/pagination/PaginationProvider.js +64 -68
  30. package/components/tabs/style/_tabs.scss +5 -1
  31. package/components/tabs/style/dnb-tabs.css +4 -1
  32. package/components/tabs/style/dnb-tabs.min.css +1 -1
  33. package/components/tabs/style/themes/dnb-tabs-theme-ui.css +37 -34
  34. package/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  35. package/components/tabs/style/themes/dnb-tabs-theme-ui.scss +12 -9
  36. package/es/components/input-masked/InputMaskedHooks.js +3 -2
  37. package/es/components/input-masked/InputMaskedUtils.js +3 -3
  38. package/es/components/pagination/Pagination.d.ts +6 -0
  39. package/es/components/pagination/Pagination.js +2 -0
  40. package/es/components/pagination/PaginationBar.js +1 -1
  41. package/es/components/pagination/PaginationInfinity.js +110 -37
  42. package/es/components/pagination/PaginationProvider.js +57 -61
  43. package/es/components/tabs/style/_tabs.scss +5 -1
  44. package/es/components/tabs/style/dnb-tabs.css +4 -1
  45. package/es/components/tabs/style/dnb-tabs.min.css +1 -1
  46. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.css +37 -34
  47. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  48. package/es/components/tabs/style/themes/dnb-tabs-theme-ui.scss +12 -9
  49. package/es/shared/component-helper.js +1 -0
  50. package/es/shared/helpers.js +18 -11
  51. package/es/style/dnb-ui-components.css +4 -1
  52. package/es/style/dnb-ui-components.min.css +1 -1
  53. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +37 -34
  54. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  55. package/es/style/themes/theme-ui/dnb-theme-ui.css +37 -34
  56. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  57. package/esm/components/input-masked/InputMaskedHooks.js +3 -2
  58. package/esm/components/input-masked/InputMaskedUtils.js +3 -3
  59. package/esm/components/pagination/Pagination.d.ts +6 -0
  60. package/esm/components/pagination/Pagination.js +2 -0
  61. package/esm/components/pagination/PaginationBar.js +1 -1
  62. package/esm/components/pagination/PaginationInfinity.js +137 -67
  63. package/esm/components/pagination/PaginationProvider.js +64 -68
  64. package/esm/components/tabs/style/_tabs.scss +5 -1
  65. package/esm/components/tabs/style/dnb-tabs.css +4 -1
  66. package/esm/components/tabs/style/dnb-tabs.min.css +1 -1
  67. package/esm/components/tabs/style/themes/dnb-tabs-theme-ui.css +37 -34
  68. package/esm/components/tabs/style/themes/dnb-tabs-theme-ui.min.css +1 -1
  69. package/esm/components/tabs/style/themes/dnb-tabs-theme-ui.scss +12 -9
  70. package/esm/dnb-ui-components.min.mjs +3 -3
  71. package/esm/dnb-ui-elements.min.mjs +1 -1
  72. package/esm/dnb-ui-extensions.min.mjs +1 -1
  73. package/esm/dnb-ui-lib.min.mjs +3 -3
  74. package/esm/dnb-ui-web-components.min.mjs +3 -3
  75. package/esm/shared/component-helper.js +1 -0
  76. package/esm/shared/helpers.js +18 -11
  77. package/esm/style/dnb-ui-components.css +4 -1
  78. package/esm/style/dnb-ui-components.min.css +1 -1
  79. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +37 -34
  80. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  81. package/esm/style/themes/theme-ui/dnb-theme-ui.css +37 -34
  82. package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  83. package/package.json +2 -2
  84. package/shared/component-helper.js +1 -0
  85. package/shared/helpers.js +18 -11
  86. package/style/dnb-ui-components.css +4 -1
  87. package/style/dnb-ui-components.min.css +1 -1
  88. package/style/themes/theme-open-banking/dnb-theme-open-banking.css +37 -34
  89. package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +1 -1
  90. package/style/themes/theme-ui/dnb-theme-ui.css +37 -34
  91. package/style/themes/theme-ui/dnb-theme-ui.min.css +1 -1
  92. package/umd/dnb-ui-components.min.js +4 -4
  93. package/umd/dnb-ui-elements.min.js +3 -3
  94. package/umd/dnb-ui-extensions.min.js +1 -1
  95. package/umd/dnb-ui-lib.min.js +1 -1
  96. package/umd/dnb-ui-web-components.min.js +3 -3
@@ -211,7 +211,7 @@ html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button {
211
211
  user-select: none;
212
212
  -webkit-user-select: none;
213
213
  margin: 0;
214
- padding: 0.25rem 0.125rem;
214
+ padding: 0 0.125rem;
215
215
  /* 1/16*4 */
216
216
  background-color: transparent;
217
217
  border-bottom: 1px solid transparent;
@@ -242,6 +242,9 @@ html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button {
242
242
  height: 0;
243
243
  visibility: hidden;
244
244
  overflow: hidden; }
245
+ .dnb-tabs__button .dnb-dummy,
246
+ .dnb-core-style .dnb-tabs .dnb-tabs__button .dnb-dummy {
247
+ margin-top: 0.25rem; }
245
248
  .dnb-tabs__button::after,
246
249
  .dnb-core-style .dnb-tabs .dnb-tabs__button::after {
247
250
  content: '';
@@ -1 +1 @@
1
- .dnb-tabs{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-tabs *,.dnb-tabs :after,.dnb-tabs :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-tabs :after,.dnb-tabs :before{text-decoration:inherit;vertical-align:inherit}.dnb-tabs__tabs{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:1}.dnb-tabs__tabs,.dnb-tabs__tabs.dnb-section--spacing{padding-bottom:0}.dnb-tabs__tabs__tablist{-webkit-box-flex:0;-ms-scroll-chaining:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;-ms-overflow-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex:0 1 auto;flex:0 1 auto;margin:0 -.5rem;overflow-x:auto;overscroll-behavior:contain;padding:0 .5rem;scrollbar-color:#14555a transparent;scrollbar-color:var(--color-emerald-green) transparent;scrollbar-width:thin;scrollbar-width:none}.dnb-tabs__tabs__tablist:focus{outline:none}html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}html:not([data-visual-test]) .dnb-tabs__tabs__tablist{scroll-behavior:smooth}html[data-visual-test] .dnb-tabs__tabs__tablist{scroll-behavior:auto!important}.dnb-tabs__tabs__tablist::-webkit-scrollbar{display:none}.dnb-tabs__tabs--left .dnb-tabs__tabs__tablist{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.dnb-tabs__tabs--right .dnb-tabs__tabs__tablist{-webkit-box-flex:1;-ms-flex-positive:1;-webkit-box-pack:end;-ms-flex-pack:end;flex-grow:1;justify-content:flex-end}.dnb-tabs__tabs--center .dnb-tabs__tabs__tablist{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.dnb-tabs__tabs:before{bottom:0;content:"";height:1px;left:-100vw;position:absolute;width:100vw;z-index:-1}.dnb-tabs:not(.dnb-tabs--has-scrollbar) .dnb-tabs__tabs__tablist{margin-left:-.5rem;padding-left:.5rem}.dnb-tabs__scroll-nav-button{display:none;opacity:0;position:absolute;-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out;z-index:2}.dnb-tabs__scroll-nav-button.dnb-button--primary{background-color:#14555a;background-color:var(--color-emerald-green)}.dnb-tabs__scroll-nav-button:first-of-type{left:-2.5rem}.dnb-tabs__scroll-nav-button:last-of-type{right:-2.5rem}.dnb-tabs__scroll-nav-button--visible{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.dnb-tabs__scroll-nav-button--hide{opacity:0!important;pointer-events:none}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{left:0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{right:0}html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button{-webkit-transition:none;transition:none}.dnb-tabs__button__snap{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem 0 1.5rem}@media screen and (max-width:40em){.dnb-tabs__button__snap{padding:0 1rem}}.dnb-tabs__button__snap:first-of-type{padding-left:0}.dnb-tabs__button__snap:last-of-type{padding-right:.5rem}.dnb-tabs--has-scrollbar .dnb-tabs__button__snap:last-of-type{padding-right:1.5rem}.dnb-core-style .dnb-tabs .dnb-tabs__button,.dnb-tabs__button{background-color:transparent;border:none;cursor:pointer;font-size:1.125rem;font-size:var(--font-size-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;outline:none;padding:.25rem .125rem;position:relative;text-decoration:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none;white-space:nowrap;z-index:1}.dnb-core-style .dnb-tabs .dnb-tabs__button__title .dnb-icon,.dnb-tabs__button__title .dnb-icon{font-size:1rem;font-size:var(--font-size-small);-webkit-transform:translateY(-.125rem);transform:translateY(-.125rem)}.dnb-core-style .dnb-tabs .dnb-tabs__button .dnb-dummy,.dnb-tabs__button .dnb-dummy{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:0;overflow:hidden;visibility:hidden}.dnb-core-style .dnb-tabs .dnb-tabs__button:after,.dnb-tabs__button:after{bottom:0;content:"";height:1px;left:0;position:absolute;right:0;width:100%;z-index:-1}.dnb-tabs__content--spacing{padding-top:2rem}
1
+ .dnb-tabs{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;color:var(--color-black-80,#333);font-family:DNB,sans-serif;font-family:var(--font-family-default);font-size:1rem;font-size:var(--font-size-small);font-style:normal;font-weight:400;font-weight:var(--font-weight-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;padding:0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-break:break-word}.dnb-tabs *,.dnb-tabs :after,.dnb-tabs :before{background-repeat:no-repeat;-webkit-box-sizing:border-box;box-sizing:border-box}.dnb-tabs :after,.dnb-tabs :before{text-decoration:inherit;vertical-align:inherit}.dnb-tabs__tabs{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;z-index:1}.dnb-tabs__tabs,.dnb-tabs__tabs.dnb-section--spacing{padding-bottom:0}.dnb-tabs__tabs__tablist{-webkit-box-flex:0;-ms-scroll-chaining:none;-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;-ms-overflow-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex:0 1 auto;flex:0 1 auto;margin:0 -.5rem;overflow-x:auto;overscroll-behavior:contain;padding:0 .5rem;scrollbar-color:#14555a transparent;scrollbar-color:var(--color-emerald-green) transparent;scrollbar-width:thin;scrollbar-width:none}.dnb-tabs__tabs__tablist:focus{outline:none}html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__tabs__tablist:focus{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}html:not([data-visual-test]) .dnb-tabs__tabs__tablist{scroll-behavior:smooth}html[data-visual-test] .dnb-tabs__tabs__tablist{scroll-behavior:auto!important}.dnb-tabs__tabs__tablist::-webkit-scrollbar{display:none}.dnb-tabs__tabs--left .dnb-tabs__tabs__tablist{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.dnb-tabs__tabs--right .dnb-tabs__tabs__tablist{-webkit-box-flex:1;-ms-flex-positive:1;-webkit-box-pack:end;-ms-flex-pack:end;flex-grow:1;justify-content:flex-end}.dnb-tabs__tabs--center .dnb-tabs__tabs__tablist{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.dnb-tabs__tabs:before{bottom:0;content:"";height:1px;left:-100vw;position:absolute;width:100vw;z-index:-1}.dnb-tabs:not(.dnb-tabs--has-scrollbar) .dnb-tabs__tabs__tablist{margin-left:-.5rem;padding-left:.5rem}.dnb-tabs__scroll-nav-button{display:none;opacity:0;position:absolute;-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out;z-index:2}.dnb-tabs__scroll-nav-button.dnb-button--primary{background-color:#14555a;background-color:var(--color-emerald-green)}.dnb-tabs__scroll-nav-button:first-of-type{left:-2.5rem}.dnb-tabs__scroll-nav-button:last-of-type{right:-2.5rem}.dnb-tabs__scroll-nav-button--visible{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.dnb-tabs__scroll-nav-button--hide{opacity:0!important;pointer-events:none}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{left:0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{right:0}html[data-visual-test] .dnb-tabs .dnb-tabs__scroll-nav-button{-webkit-transition:none;transition:none}.dnb-tabs__button__snap{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 1rem 0 1.5rem}@media screen and (max-width:40em){.dnb-tabs__button__snap{padding:0 1rem}}.dnb-tabs__button__snap:first-of-type{padding-left:0}.dnb-tabs__button__snap:last-of-type{padding-right:.5rem}.dnb-tabs--has-scrollbar .dnb-tabs__button__snap:last-of-type{padding-right:1.5rem}.dnb-core-style .dnb-tabs .dnb-tabs__button,.dnb-tabs__button{background-color:transparent;border:none;cursor:pointer;font-size:1.125rem;font-size:var(--font-size-basis);line-height:1.5rem;line-height:var(--line-height-basis);margin:0;outline:none;padding:0 .125rem;position:relative;text-decoration:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none;white-space:nowrap;z-index:1}.dnb-core-style .dnb-tabs .dnb-tabs__button__title .dnb-icon,.dnb-tabs__button__title .dnb-icon{font-size:1rem;font-size:var(--font-size-small);-webkit-transform:translateY(-.125rem);transform:translateY(-.125rem)}.dnb-core-style .dnb-tabs .dnb-tabs__button .dnb-dummy,.dnb-tabs__button .dnb-dummy{-webkit-box-orient:vertical;-webkit-box-direction:normal;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:0;margin-top:.25rem;overflow:hidden;visibility:hidden}.dnb-core-style .dnb-tabs .dnb-tabs__button:after,.dnb-tabs__button:after{bottom:0;content:"";height:1px;left:0;position:absolute;right:0;width:100%;z-index:-1}.dnb-tabs__content--spacing{padding-top:2rem}
@@ -65,8 +65,10 @@
65
65
  font-size: 1.125rem;
66
66
  font-size: var(--font-size-basis);
67
67
  text-align: center;
68
+ display: block;
68
69
  color: #007272;
69
- color: var(--color-sea-green); }
70
+ color: var(--color-sea-green);
71
+ padding: 0.5rem 0 0.25rem 0; }
70
72
 
71
73
  html:not([data-whatintent='touch']) .dnb-tabs__button:hover[disabled] {
72
74
  cursor: not-allowed; }
@@ -75,48 +77,49 @@ html:not([data-whatintent='touch']) .dnb-tabs__button:hover:not([disabled]) {
75
77
  background-color: #d2f0e9;
76
78
  background-color: var(--color-mint-green-50); }
77
79
  html:not([data-whatintent='touch']) .dnb-tabs__button:hover:not([disabled])::after {
78
- height: 3px;
79
- border-radius: 1.5px;
80
+ height: 2px;
81
+ border-radius: 2px;
80
82
  background-color: #007272;
81
83
  background-color: var(--color-sea-green); }
82
84
 
83
- .dnb-tabs__button:focus::before {
84
- content: '';
85
- position: absolute;
86
- z-index: 1;
87
- top: 0;
88
- left: -0.5rem;
89
- bottom: 0;
90
- right: -0.5rem;
91
- height: inherit;
92
- border-radius: inherit;
93
- outline: none; }
94
- html[data-whatinput='keyboard'] .dnb-tabs__button:focus::before {
95
- --border-color: var(--color-emerald-green);
96
- -webkit-box-shadow: 0 0 0 0.125rem var(--border-color);
97
- box-shadow: 0 0 0 0.125rem var(--border-color);
98
- border-color: transparent; }
99
- @media screen and (-ms-high-contrast: none) {
100
- html[data-whatinput='keyboard'] .dnb-tabs__button:focus::before {
101
- -webkit-box-shadow: 0 0 0 0.125rem #14555a;
102
- box-shadow: 0 0 0 0.125rem #14555a;
103
- -webkit-box-shadow: 0 0 0 0.125rem var(--color-emerald-green);
104
- box-shadow: 0 0 0 0.125rem var(--color-emerald-green); } }
105
-
106
- .dnb-tabs__button:focus::before {
107
- top: 2px;
108
- bottom: 2px;
109
- right: 0;
110
- left: 0;
111
- border-radius: 0.25rem; }
85
+ .dnb-tabs__button:focus {
86
+ overflow: visible; }
87
+ .dnb-tabs__button:focus::before {
88
+ content: '';
89
+ position: absolute;
90
+ z-index: 1;
91
+ top: 0;
92
+ left: -0.5rem;
93
+ bottom: 0;
94
+ right: -0.5rem;
95
+ height: inherit;
96
+ border-radius: inherit;
97
+ outline: none; }
98
+ html[data-whatinput='keyboard'] .dnb-tabs__button:focus::before {
99
+ --border-color: var(--color-emerald-green);
100
+ -webkit-box-shadow: 0 0 0 0.125rem var(--border-color);
101
+ box-shadow: 0 0 0 0.125rem var(--border-color);
102
+ border-color: transparent; }
103
+ @media screen and (-ms-high-contrast: none) {
104
+ html[data-whatinput='keyboard'] .dnb-tabs__button:focus::before {
105
+ -webkit-box-shadow: 0 0 0 0.125rem #14555a;
106
+ box-shadow: 0 0 0 0.125rem #14555a;
107
+ -webkit-box-shadow: 0 0 0 0.125rem var(--color-emerald-green);
108
+ box-shadow: 0 0 0 0.125rem var(--color-emerald-green); } }
109
+ .dnb-tabs__button:focus::before {
110
+ top: 0.5rem;
111
+ left: -0.375rem;
112
+ right: -0.375rem;
113
+ bottom: 0.5rem;
114
+ border-radius: 1.5rem; }
112
115
 
113
116
  .dnb-tabs__button[disabled] .dnb-tabs__button__title {
114
117
  color: #b3dada;
115
118
  color: var(--color-sea-green-30); }
116
119
 
117
120
  .dnb-tabs__button:not([disabled]):active::after, .dnb-tabs__button:not([disabled]).selected::after {
118
- height: 3px;
119
- border-radius: 1.5px;
121
+ height: 2px;
122
+ border-radius: 2px;
120
123
  background-color: #007272;
121
124
  background-color: var(--color-sea-green); }
122
125
 
@@ -1 +1 @@
1
- .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:after{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:1.5px;height:3px}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:.25rem;bottom:2px;left:0;right:0;top:2px}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:1.5px;height:3px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}
1
+ .dnb-tabs__tabs:not(.dnb-section):before{background-color:#ebebeb;background-color:var(--color-black-8);-webkit-box-shadow:100vw 0 0 0 #ebebeb;box-shadow:100vw 0 0 0 #ebebeb;-webkit-box-shadow:100vw 0 0 0 var(--color-black-8);box-shadow:100vw 0 0 0 var(--color-black-8)}.dnb-tabs__tabs__tablist:focus{border-radius:.5rem}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:first-of-type{border-radius:0 50% 50% 0}.dnb-tabs--at-edge .dnb-tabs__scroll-nav-button:last-of-type{border-radius:50% 0 0 50%}.dnb-tabs--at-edge .dnb-tabs__tabs__tablist:focus{border-radius:0}.dnb-tabs__content:focus{position:relative}.dnb-tabs__content:focus:after{border-radius:.5rem;bottom:-.5rem;content:"";left:-.5rem;max-width:100vw;outline:none;position:absolute;right:-.5rem;top:.125rem;z-index:-1}html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__content:focus:after{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button__title{color:#007272;color:var(--color-sea-green);display:block;font-size:1.125rem;font-size:var(--font-size-basis);font-weight:400;font-weight:var(--font-weight-regular);padding:.5rem 0 .25rem;text-align:center}html:not([data-whatintent=touch]) .dnb-tabs__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]){background-color:#d2f0e9;background-color:var(--color-mint-green-50)}html:not([data-whatintent=touch]) .dnb-tabs__button:hover:not([disabled]):after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:focus{overflow:visible}.dnb-tabs__button:focus:before{border-radius:inherit;bottom:0;content:"";height:inherit;left:-.5rem;outline:none;position:absolute;right:-.5rem;top:0;z-index:1}html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{--border-color:var(--color-emerald-green);border-color:transparent;-webkit-box-shadow:0 0 0 .125rem var(--border-color);box-shadow:0 0 0 .125rem var(--border-color)}@media screen and (-ms-high-contrast:none){html[data-whatinput=keyboard] .dnb-tabs__button:focus:before{-webkit-box-shadow:0 0 0 .125rem #14555a;box-shadow:0 0 0 .125rem #14555a;-webkit-box-shadow:0 0 0 .125rem var(--color-emerald-green);box-shadow:0 0 0 .125rem var(--color-emerald-green)}}.dnb-tabs__button:focus:before{border-radius:1.5rem;bottom:.5rem;left:-.375rem;right:-.375rem;top:.5rem}.dnb-tabs__button[disabled] .dnb-tabs__button__title{color:#b3dada;color:var(--color-sea-green-30)}.dnb-tabs__button:not([disabled]).selected:after,.dnb-tabs__button:not([disabled]):active:after{background-color:#007272;background-color:var(--color-sea-green);border-radius:2px;height:2px}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button:not([disabled]):active .dnb-tabs__button__title{color:#14555a;color:var(--color-emerald-green)}.dnb-tabs__button:not([disabled]).selected .dnb-tabs__button__title,.dnb-tabs__button span[hidden]{font-weight:500;font-weight:var(--font-weight-medium)}
@@ -62,27 +62,30 @@
62
62
  font-size: var(--font-size-basis);
63
63
  text-align: center;
64
64
 
65
+ display: block;
65
66
  color: var(--color-sea-green);
67
+ padding: 0.5rem 0 0.25rem 0;
66
68
  }
67
69
 
68
70
  // hover
69
71
  @include hover() {
70
72
  background-color: var(--color-mint-green-50);
71
73
  &::after {
72
- height: 3px;
73
- border-radius: 1.5px;
74
+ height: 2px;
75
+ border-radius: 2px;
74
76
  background-color: var(--color-sea-green);
75
77
  }
76
78
  }
77
79
 
78
80
  &:focus {
79
81
  @include buttonFocusRing();
82
+ overflow: visible;
80
83
  &::before {
81
- top: 2px;
82
- bottom: 2px;
83
- right: 0;
84
- left: 0;
85
- border-radius: 0.25rem;
84
+ top: 0.5rem;
85
+ left: -0.375rem; // For overflow purposes
86
+ right: -0.375rem; // For overflow purposes
87
+ bottom: 0.5rem;
88
+ border-radius: 1.5rem;
86
89
  }
87
90
  }
88
91
 
@@ -95,8 +98,8 @@
95
98
  &:not([disabled]):active,
96
99
  &:not([disabled]).selected {
97
100
  &::after {
98
- height: 3px;
99
- border-radius: 1.5px;
101
+ height: 2px;
102
+ border-radius: 2px;
100
103
  background-color: var(--color-sea-green);
101
104
  }
102
105
  }
@@ -232,8 +232,9 @@ const useCallEvent = ({
232
232
  value = value || event.target.value;
233
233
  const keyCode = keycode(event);
234
234
  const selStart = event.target.selectionStart;
235
+ const isUnidentified = event.which === 229 || keyCode === undefined;
235
236
 
236
- if (name === 'on_key_down' && !(maskParams !== null && maskParams !== void 0 && maskParams.allowLeadingZeroes) && (keyCode === '0' || value.replace(/[^\d]/g, '') === '' && decimalSeparators.test(keyCode))) {
237
+ if (name === 'on_key_down' && !isUnidentified && !(maskParams !== null && maskParams !== void 0 && maskParams.allowLeadingZeroes) && (keyCode === '0' || value.replace(/[^\d]/g, '') === '' && decimalSeparators.test(keyCode))) {
237
238
  const testValue = (value.slice(0, selStart) + '0' + value.slice(selStart + 1, value.length)).replace(/[^\d]/g, '');
238
239
 
239
240
  if (/^0/.test(testValue)) {
@@ -242,7 +243,7 @@ const useCallEvent = ({
242
243
  }
243
244
  }
244
245
 
245
- if (name === 'on_key_down' && maskParams !== null && maskParams !== void 0 && maskParams.decimalSymbol) {
246
+ if (name === 'on_key_down' && !isUnidentified && maskParams !== null && maskParams !== void 0 && maskParams.decimalSymbol) {
246
247
  const hasDecimalSymbol = value.includes(maskParams.decimalSymbol);
247
248
  const allowedDecimals = maskParams.decimalLimit > 0 || maskParams.allowDecimal !== false;
248
249
 
@@ -6,7 +6,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
6
6
 
7
7
  import { format, getDecimalSeparator, getThousandsSeparator } from '../number-format/NumberUtils';
8
8
  import { warn } from '../../shared/component-helper';
9
- import { IS_IE11 } from '../../shared/helpers';
9
+ import { IS_IE11, IS_ANDROID } from '../../shared/helpers';
10
10
  const enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency'];
11
11
  const enableNumberMaskWhen = ['as_number', 'as_percent', 'as_currency', 'number_mask', 'currency_mask'];
12
12
  export const invisibleSpace = '\u200B';
@@ -67,7 +67,7 @@ export const correctNumberValue = ({
67
67
 
68
68
  if (endsWithDecimal) {
69
69
  value = `${value}${decimalSymbol}`;
70
- } else if (endsWithZeroAndDecimal) {
70
+ } else if (endsWithZeroAndDecimal && !numberValue.endsWith(`${decimalSymbol}0`)) {
71
71
  value = `${value}${decimalSymbol}0`;
72
72
  }
73
73
 
@@ -187,7 +187,7 @@ export const handleNumberMask = ({
187
187
  export function getInputModeFromMask(mask) {
188
188
  const maskParams = mask === null || mask === void 0 ? void 0 : mask.maskParams;
189
189
 
190
- if (maskParams && (mask === null || mask === void 0 ? void 0 : mask.instanceOf) === 'createNumberMask') {
190
+ if (!IS_ANDROID && maskParams && (mask === null || mask === void 0 ? void 0 : mask.instanceOf) === 'createNumberMask') {
191
191
  return maskParams.allowDecimal && maskParams.decimalLimit !== 0 ? 'decimal' : 'numeric';
192
192
  }
193
193
 
@@ -80,6 +80,8 @@ export type PaginationChildren =
80
80
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
81
81
  */
82
82
  export interface PaginationProps extends React.HTMLProps<HTMLElement> {
83
+ debug?: boolean;
84
+
83
85
  /**
84
86
  * The page show in the very beginning. If `current_page` is set, then it may not make too much sense to set this as well.
85
87
  */
@@ -356,6 +358,8 @@ export type PaginationInstanceChildren =
356
358
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
357
359
  */
358
360
  export interface PaginationInstanceProps {
361
+ debug?: boolean;
362
+
359
363
  /**
360
364
  * The page show in the very beginning. If `current_page` is set, then it may not make too much sense to set this as well.
361
365
  */
@@ -634,6 +638,8 @@ export type InfinityMarkerChildren =
634
638
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
635
639
  */
636
640
  export interface InfinityMarkerProps {
641
+ debug?: boolean;
642
+
637
643
  /**
638
644
  * The page show in the very beginning. If `current_page` is set, then it may not make too much sense to set this as well.
639
645
  */
@@ -23,6 +23,7 @@ import { PaginationIndicator } from './PaginationHelpers';
23
23
  import InfinityScroller from './PaginationInfinity';
24
24
  import PaginationBar from './PaginationBar';
25
25
  const paginationPropTypes = process.env.NODE_ENV !== "production" ? _objectSpread(_objectSpread({
26
+ debug: PropTypes.bool,
26
27
  startup_page: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
27
28
  current_page: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
28
29
  page_count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
@@ -61,6 +62,7 @@ const paginationPropTypes = process.env.NODE_ENV !== "production" ? _objectSprea
61
62
  on_end: PropTypes.func
62
63
  }) : {};
63
64
  const paginationDefaultProps = {
65
+ debug: null,
64
66
  startup_page: null,
65
67
  current_page: null,
66
68
  page_count: null,
@@ -50,7 +50,7 @@ export default class PaginationBar extends React.PureComponent {
50
50
 
51
51
  componentDidMount() {
52
52
  const context = this.context.pagination;
53
- const currentPage = context.startupPage || context.currentPage;
53
+ const currentPage = context.startupPage || context.currentPage || 1;
54
54
  const items = context.prefillItems(currentPage, {
55
55
  skipObserver: true
56
56
  });
@@ -10,7 +10,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
10
10
  import React from 'react';
11
11
  import PropTypes from 'prop-types';
12
12
  import ReactDOM from 'react-dom';
13
- import { warn, isTrue, dispatchCustomElementEvent } from '../../shared/component-helper';
13
+ import { warn, isTrue, dispatchCustomElementEvent, getPreviousSibling } from '../../shared/component-helper';
14
14
  import Context from '../../shared/Context';
15
15
  import Button from '../button/Button';
16
16
  import { preparePageElement, isTrElement, PaginationIndicator } from './PaginationHelpers';
@@ -25,20 +25,26 @@ export default class InfinityScroller extends React.PureComponent {
25
25
  startup_count
26
26
  } = this.context.pagination;
27
27
  const startupCount = parseFloat(startup_count);
28
+ let newPageNo, skipObserver, callStartupEvent, preventWaitForDelay;
28
29
 
29
- for (let i = 0, newPageNo; i < startupCount; ++i) {
30
+ for (let i = 0; i < startupCount; ++i) {
30
31
  newPageNo = startupPage + i;
32
+ skipObserver = newPageNo < startupCount;
33
+ callStartupEvent = i === 0;
34
+ preventWaitForDelay = i <= startupCount - 1;
31
35
  this.getNewContent(newPageNo, {
32
36
  position: 'after',
33
- skipObserver: newPageNo < startupCount
37
+ skipObserver
34
38
  }, {
35
- isStartup: i === 0
39
+ callStartupEvent,
40
+ preventWaitForDelay
36
41
  });
37
42
  }
38
43
  });
39
44
 
40
45
  _defineProperty(this, "getNewContent", (newPageNo, props = {}, {
41
- isStartup = false
46
+ callStartupEvent = false,
47
+ preventWaitForDelay = false
42
48
  } = {}) => {
43
49
  const {
44
50
  pageCount,
@@ -58,9 +64,12 @@ export default class InfinityScroller extends React.PureComponent {
58
64
  }
59
65
 
60
66
  const items = this.context.pagination.prefillItems(newPageNo, props);
61
- this.context.pagination.setItems(items, () => this.callEventHandler(newPageNo, {
62
- isStartup
63
- }));
67
+ this.context.pagination.setItems(items, () => {
68
+ this.callEventHandler(newPageNo, {
69
+ callStartupEvent,
70
+ preventWaitForDelay
71
+ });
72
+ });
64
73
  });
65
74
 
66
75
  this.hideIndicator = isTrue(context.pagination.hide_progress_indicator);
@@ -75,47 +84,66 @@ export default class InfinityScroller extends React.PureComponent {
75
84
  this.callOnUnmount.forEach(f => typeof f === 'function' && f());
76
85
  }
77
86
 
78
- waitForReachedTime(fn, ...props) {
87
+ waitForReachedTime(fn, params) {
79
88
  this.callbackBuffer = this.callbackBuffer || [];
80
89
  this.callbackBuffer.push({
81
90
  fn,
82
- props
91
+ params
92
+ });
93
+ this.callBuffer({
94
+ minTime: params.preventWaitForDelay ? -1 : this.context.pagination.minTime
83
95
  });
84
- this.callBuffer();
85
96
  }
86
97
 
87
- callBuffer() {
88
- const {
89
- minTime
90
- } = this.context.pagination;
98
+ callBuffer({
99
+ minTime = this.context.pagination.minTime
100
+ } = {}) {
101
+ if (this.callbackBuffer.length === 0) {
102
+ return;
103
+ }
104
+
91
105
  const diff = this._lastCall > 0 ? new Date().getTime() - this._lastCall : 0;
92
106
  const waitTime = diff < minTime ? minTime : 0;
93
- clearTimeout(this._bufferTimeout);
94
- this._bufferTimeout = setTimeout(() => {
107
+
108
+ const nextTick = () => {
95
109
  if (this.callbackBuffer.length > 0) {
96
110
  this._lastCall = new Date().getTime();
97
111
  const {
98
112
  fn,
99
- props
113
+ params
100
114
  } = this.callbackBuffer.shift();
101
- fn(...props);
102
- this.callBuffer();
115
+ fn(params);
116
+ this.callBuffer({
117
+ minTime: params.preventWaitForDelay ? -1 : minTime
118
+ });
103
119
  }
104
- }, waitTime);
120
+ };
121
+
122
+ if (minTime > 0) {
123
+ clearTimeout(this._bufferTimeout);
124
+ this._bufferTimeout = setTimeout(nextTick, waitTime);
125
+ } else {
126
+ nextTick();
127
+ }
105
128
  }
106
129
 
107
130
  callEventHandler(pageNumber, {
108
- isStartup = false,
131
+ callStartupEvent = false,
132
+ preventWaitForDelay = false,
109
133
  callOnEnd = false,
110
134
  onDispatch = null
111
135
  } = {}) {
112
136
  this.waitForReachedTime(({
113
137
  pageNumber,
114
- isStartup
138
+ callStartupEvent
115
139
  }) => {
116
140
  const context = this.context.pagination;
117
141
 
118
142
  const createEvent = eventName => {
143
+ if (isNaN(pageNumber)) {
144
+ pageNumber = 1;
145
+ }
146
+
119
147
  const ret = dispatchCustomElementEvent(context, eventName, _objectSpread({
120
148
  page: pageNumber,
121
149
  pageNo: pageNumber,
@@ -134,7 +162,7 @@ export default class InfinityScroller extends React.PureComponent {
134
162
  if (callOnEnd) {
135
163
  createEvent('on_end');
136
164
  } else {
137
- if (isStartup) {
165
+ if (callStartupEvent) {
138
166
  createEvent('on_startup');
139
167
  } else {
140
168
  createEvent('on_change');
@@ -144,7 +172,8 @@ export default class InfinityScroller extends React.PureComponent {
144
172
  }
145
173
  }, {
146
174
  pageNumber,
147
- isStartup
175
+ callStartupEvent,
176
+ preventWaitForDelay
148
177
  });
149
178
  }
150
179
 
@@ -155,19 +184,41 @@ export default class InfinityScroller extends React.PureComponent {
155
184
  const {
156
185
  lowerPage,
157
186
  upperPage,
187
+ currentPage,
158
188
  pageCount,
159
189
  hasEndedInfinity,
160
190
  parallelLoadCount,
191
+ debug,
192
+ current_page,
161
193
  fallback_element,
162
194
  marker_element,
163
195
  indicator_element
164
196
  } = this.context.pagination;
165
197
 
198
+ if (debug) {
199
+ console.info('PaginationInfinity.render', {
200
+ current_page,
201
+ lowerPage,
202
+ upperPage,
203
+ currentPage,
204
+ pageCount
205
+ });
206
+ }
207
+
166
208
  const Marker = () => React.createElement(InteractionMarker, {
209
+ debug: debug,
167
210
  pageNumber: upperPage,
168
211
  markerElement: marker_element || fallback_element,
169
212
  onVisible: pageNumber => {
170
- for (let i = 0, newPageNo; i < parallelLoadCount; ++i) {
213
+ if (debug) {
214
+ console.info('PaginationInfinity.onVisible', {
215
+ pageNumber
216
+ });
217
+ }
218
+
219
+ let newPageNo;
220
+
221
+ for (let i = 0; i < parallelLoadCount; ++i) {
171
222
  newPageNo = pageNumber + 1 + i;
172
223
  this.context.pagination.onPageUpdate(() => {
173
224
  this.context.pagination.setState({
@@ -197,7 +248,7 @@ export default class InfinityScroller extends React.PureComponent {
197
248
  }
198
249
  });
199
250
 
200
- return React.createElement(React.Fragment, null, lowerPage > 1 && React.createElement(LoadButton, null), children, !hasEndedInfinity && (typeof pageCount === 'undefined' || upperPage < pageCount) && React.createElement(Marker, null), !hasEndedInfinity && !this.hideIndicator && (typeof pageCount === 'undefined' || upperPage < pageCount) && React.createElement(PaginationIndicator, {
251
+ return React.createElement(React.Fragment, null, parseFloat(current_page) > 0 && lowerPage > 1 && React.createElement(LoadButton, null), children, !hasEndedInfinity && parseFloat(current_page) > 0 && (typeof pageCount === 'undefined' || upperPage < pageCount) && React.createElement(Marker, null), !hasEndedInfinity && !this.hideIndicator && (typeof pageCount === 'undefined' || upperPage < pageCount) && React.createElement(PaginationIndicator, {
201
252
  indicator_element: indicator_element || fallback_element
202
253
  }));
203
254
  }
@@ -216,16 +267,16 @@ export default class InfinityScroller extends React.PureComponent {
216
267
  indicator_element
217
268
  } = this.context.pagination;
218
269
 
219
- if (this.context.pagination.useMarkerOnly) {
220
- return this.handleInfinityMarker();
221
- }
222
-
223
270
  if (!(items && items.length > 0)) {
224
271
  clearTimeout(this._startupTimeout);
225
272
  this._startupTimeout = setTimeout(this.startup, 1);
226
273
  return null;
227
274
  }
228
275
 
276
+ if (this.context.pagination.useMarkerOnly) {
277
+ return this.handleInfinityMarker();
278
+ }
279
+
229
280
  const Element = preparePageElement(page_element || React.Fragment);
230
281
  return items.map(({
231
282
  pageNumber,
@@ -241,7 +292,9 @@ export default class InfinityScroller extends React.PureComponent {
241
292
  pageNumber: pageNumber,
242
293
  markerElement: marker_element || fallback_element,
243
294
  onVisible: pageNumber => {
244
- for (let i = 0, newPageNo; i < parallelLoadCount; ++i) {
295
+ let newPageNo;
296
+
297
+ for (let i = 0; i < parallelLoadCount; ++i) {
245
298
  newPageNo = pageNumber + 1 + i;
246
299
  this.getNewContent(newPageNo, {
247
300
  position: 'after',
@@ -250,6 +303,7 @@ export default class InfinityScroller extends React.PureComponent {
250
303
  }
251
304
  }
252
305
  });
306
+ const showIndicator = (parallelLoadCount > 1 && idx > 0 ? isLastItem : true) && !hasContent && !this.hideIndicator;
253
307
  return React.createElement(Elem, {
254
308
  key: pageNumber,
255
309
  ref: ref
@@ -261,7 +315,7 @@ export default class InfinityScroller extends React.PureComponent {
261
315
  skipObserver: true,
262
316
  event
263
317
  })
264
- }), placeMakerBeforeContent && marker, content, !placeMakerBeforeContent && marker, (parallelLoadCount > 1 && idx > 0 ? isLastItem : true) && !hasContent && !this.hideIndicator && React.createElement(PaginationIndicator, {
318
+ }), placeMakerBeforeContent && marker, content, !placeMakerBeforeContent && marker, showIndicator && React.createElement(PaginationIndicator, {
265
319
  indicator_element: indicator_element || fallback_element
266
320
  }), hasContent && this.useLoadButton && isLastItem && (typeof pageCount === 'undefined' || pageNumber < pageCount) && React.createElement(InfinityLoadButton, {
267
321
  element: fallback_element,
@@ -343,14 +397,31 @@ class InteractionMarker extends React.PureComponent {
343
397
  this._isMounted = true;
344
398
  (_this$intersectionObs2 = this.intersectionObserver) === null || _this$intersectionObs2 === void 0 ? void 0 : _this$intersectionObs2.observe(this._ref.current);
345
399
  }
400
+
401
+ if (this.props.debug) {
402
+ const height = this.getContentHeight();
403
+ console.info('PaginationInfinity.getContentHeight', height);
404
+ }
346
405
  }
347
406
 
348
407
  componentWillUnmount() {
349
- var _this$intersectionObs3;
350
-
351
408
  this._isMounted = false;
352
- clearTimeout(this._readyTimeout);
353
- (_this$intersectionObs3 = this.intersectionObserver) === null || _this$intersectionObs3 === void 0 ? void 0 : _this$intersectionObs3.disconnect();
409
+
410
+ if (this.intersectionObserver) {
411
+ clearTimeout(this._readyTimeout);
412
+ this.intersectionObserver.disconnect();
413
+ }
414
+ }
415
+
416
+ getContentHeight() {
417
+ let height = 0;
418
+
419
+ try {
420
+ const sibling = getPreviousSibling('dnb-table', this._ref.current);
421
+ height = parseFloat(window.getComputedStyle(sibling.querySelector('tbody')).height);
422
+ } catch (e) {}
423
+
424
+ return height;
354
425
  }
355
426
 
356
427
  render() {
@@ -375,10 +446,12 @@ class InteractionMarker extends React.PureComponent {
375
446
  }
376
447
 
377
448
  _defineProperty(InteractionMarker, "defaultProps", {
449
+ debug: null,
378
450
  markerElement: null
379
451
  });
380
452
 
381
453
  process.env.NODE_ENV !== "production" ? InteractionMarker.propTypes = {
454
+ debug: PropTypes.bool,
382
455
  pageNumber: PropTypes.number.isRequired,
383
456
  onVisible: PropTypes.func.isRequired,
384
457
  markerElement: PropTypes.oneOfType([PropTypes.object, PropTypes.node, PropTypes.func, PropTypes.string])