@dnb/eufemia 10.11.0 → 10.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/cjs/components/button/Button.d.ts +3 -3
  3. package/cjs/components/form-label/FormLabel.js +2 -1
  4. package/cjs/components/form-label/FormLabel.js.map +1 -1
  5. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  6. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  7. package/cjs/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  8. package/cjs/components/input-masked/InputMasked.d.ts +0 -1
  9. package/cjs/components/input-masked/InputMasked.js +3 -3
  10. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  11. package/cjs/components/input-masked/MultiInputMask.d.ts +60 -0
  12. package/cjs/components/input-masked/MultiInputMask.js +159 -0
  13. package/cjs/components/input-masked/MultiInputMask.js.map +1 -0
  14. package/cjs/components/input-masked/TextMask.d.ts +1 -1
  15. package/cjs/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  16. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +113 -0
  17. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  18. package/cjs/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  19. package/cjs/components/input-masked/hooks/useMultiInputValues.js +37 -0
  20. package/cjs/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  21. package/cjs/components/input-masked/index.d.ts +2 -0
  22. package/cjs/components/input-masked/index.js +21 -1
  23. package/cjs/components/input-masked/index.js.map +1 -1
  24. package/cjs/components/input-masked/style/dnb-input-masked.css +57 -0
  25. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  26. package/cjs/components/input-masked/style/dnb-input-masked.scss +73 -0
  27. package/cjs/components/lib.d.ts +1 -1
  28. package/cjs/components/section/Section.d.ts +2 -2
  29. package/cjs/components/section/Section.js.map +1 -1
  30. package/cjs/extensions/payment-card/style/dnb-payment-card.css +3 -0
  31. package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  32. package/cjs/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  33. package/cjs/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +4 -1
  34. package/cjs/shared/Eufemia.d.ts +1 -1
  35. package/cjs/shared/Eufemia.js +2 -2
  36. package/cjs/shared/Eufemia.js.map +1 -1
  37. package/cjs/shared/useTheme.d.ts +12 -1
  38. package/cjs/shared/useTheme.js +16 -1
  39. package/cjs/shared/useTheme.js.map +1 -1
  40. package/cjs/style/dnb-ui-components.css +57 -0
  41. package/cjs/style/dnb-ui-components.min.css +1 -1
  42. package/cjs/style/dnb-ui-extensions.css +3 -0
  43. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  44. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +59 -2
  45. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  46. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  47. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  48. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +67 -6
  49. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  50. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  51. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  52. package/cjs/style/themes/theme-ui/ui-theme-components.css +59 -2
  53. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  54. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  55. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  56. package/components/button/Button.d.ts +3 -3
  57. package/components/form-label/FormLabel.js +2 -1
  58. package/components/form-label/FormLabel.js.map +1 -1
  59. package/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  60. package/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  61. package/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  62. package/components/input-masked/InputMasked.d.ts +0 -1
  63. package/components/input-masked/InputMasked.js +2 -2
  64. package/components/input-masked/InputMasked.js.map +1 -1
  65. package/components/input-masked/MultiInputMask.d.ts +60 -0
  66. package/components/input-masked/MultiInputMask.js +148 -0
  67. package/components/input-masked/MultiInputMask.js.map +1 -0
  68. package/components/input-masked/TextMask.d.ts +1 -1
  69. package/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  70. package/components/input-masked/hooks/useHandleCursorPosition.js +106 -0
  71. package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  72. package/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  73. package/components/input-masked/hooks/useMultiInputValues.js +29 -0
  74. package/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  75. package/components/input-masked/index.d.ts +2 -0
  76. package/components/input-masked/index.js +2 -0
  77. package/components/input-masked/index.js.map +1 -1
  78. package/components/input-masked/style/dnb-input-masked.css +57 -0
  79. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  80. package/components/input-masked/style/dnb-input-masked.scss +73 -0
  81. package/components/lib.d.ts +1 -1
  82. package/components/section/Section.d.ts +2 -2
  83. package/components/section/Section.js.map +1 -1
  84. package/es/components/button/Button.d.ts +3 -3
  85. package/es/components/form-label/FormLabel.js +2 -1
  86. package/es/components/form-label/FormLabel.js.map +1 -1
  87. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.css +2 -2
  88. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.min.css +1 -1
  89. package/es/components/form-label/style/themes/dnb-form-label-theme-ui.scss +1 -1
  90. package/es/components/input-masked/InputMasked.d.ts +0 -1
  91. package/es/components/input-masked/InputMasked.js +2 -2
  92. package/es/components/input-masked/InputMasked.js.map +1 -1
  93. package/es/components/input-masked/MultiInputMask.d.ts +60 -0
  94. package/es/components/input-masked/MultiInputMask.js +145 -0
  95. package/es/components/input-masked/MultiInputMask.js.map +1 -0
  96. package/es/components/input-masked/TextMask.d.ts +1 -1
  97. package/es/components/input-masked/hooks/useHandleCursorPosition.d.ts +7 -0
  98. package/es/components/input-masked/hooks/useHandleCursorPosition.js +105 -0
  99. package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -0
  100. package/es/components/input-masked/hooks/useMultiInputValues.d.ts +8 -0
  101. package/es/components/input-masked/hooks/useMultiInputValues.js +28 -0
  102. package/es/components/input-masked/hooks/useMultiInputValues.js.map +1 -0
  103. package/es/components/input-masked/index.d.ts +2 -0
  104. package/es/components/input-masked/index.js +2 -0
  105. package/es/components/input-masked/index.js.map +1 -1
  106. package/es/components/input-masked/style/dnb-input-masked.css +57 -0
  107. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  108. package/es/components/input-masked/style/dnb-input-masked.scss +73 -0
  109. package/es/components/lib.d.ts +1 -1
  110. package/es/components/section/Section.d.ts +2 -2
  111. package/es/components/section/Section.js.map +1 -1
  112. package/es/extensions/payment-card/style/dnb-payment-card.css +3 -0
  113. package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  114. package/es/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  115. package/es/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +4 -1
  116. package/es/shared/Eufemia.d.ts +1 -1
  117. package/es/shared/Eufemia.js +2 -2
  118. package/es/shared/Eufemia.js.map +1 -1
  119. package/es/shared/useTheme.d.ts +12 -1
  120. package/es/shared/useTheme.js +14 -1
  121. package/es/shared/useTheme.js.map +1 -1
  122. package/es/style/dnb-ui-components.css +57 -0
  123. package/es/style/dnb-ui-components.min.css +1 -1
  124. package/es/style/dnb-ui-extensions.css +3 -0
  125. package/es/style/dnb-ui-extensions.min.css +1 -1
  126. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +59 -2
  127. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  128. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  129. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  130. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +67 -6
  131. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  132. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  133. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  134. package/es/style/themes/theme-ui/ui-theme-components.css +59 -2
  135. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  136. package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  137. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  138. package/esm/dnb-ui-basis.min.mjs +1 -1
  139. package/esm/dnb-ui-components.min.mjs +1 -1
  140. package/esm/dnb-ui-elements.min.mjs +1 -1
  141. package/esm/dnb-ui-extensions.min.mjs +3 -3
  142. package/esm/dnb-ui-lib.min.mjs +1 -1
  143. package/extensions/payment-card/style/dnb-payment-card.css +3 -0
  144. package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  145. package/extensions/payment-card/style/dnb-payment-card.scss +4 -0
  146. package/fragments/drawer-list/style/themes/dnb-drawer-list-theme-sbanken.scss +4 -1
  147. package/package.json +1 -1
  148. package/shared/Eufemia.d.ts +1 -1
  149. package/shared/Eufemia.js +2 -2
  150. package/shared/Eufemia.js.map +1 -1
  151. package/shared/useTheme.d.ts +12 -1
  152. package/shared/useTheme.js +14 -1
  153. package/shared/useTheme.js.map +1 -1
  154. package/style/dnb-ui-components.css +57 -0
  155. package/style/dnb-ui-components.min.css +1 -1
  156. package/style/dnb-ui-extensions.css +3 -0
  157. package/style/dnb-ui-extensions.min.css +1 -1
  158. package/style/themes/theme-eiendom/eiendom-theme-components.css +59 -2
  159. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  160. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  161. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  162. package/style/themes/theme-sbanken/sbanken-theme-components.css +67 -6
  163. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  164. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  165. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  166. package/style/themes/theme-ui/ui-theme-components.css +59 -2
  167. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  168. package/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  169. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  170. package/umd/dnb-ui-basis.min.js +1 -1
  171. package/umd/dnb-ui-components.min.js +1 -1
  172. package/umd/dnb-ui-elements.min.js +1 -1
  173. package/umd/dnb-ui-extensions.min.js +3 -3
  174. package/umd/dnb-ui-lib.min.js +1 -1
@@ -447,6 +447,9 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
447
447
  align-items: center;
448
448
  background: linear-gradient(184.55deg, rgba(204, 204, 204, 0.5) 4.63%, rgba(232, 232, 232, 0.5) 84.83%);
449
449
  }
450
+ .dnb-payment-card__blocking__overlay svg path {
451
+ stroke: currentcolor;
452
+ }
450
453
  .dnb-payment-card__blocking__center {
451
454
  padding: 1rem;
452
455
  display: flex;
@@ -1 +1 @@
1
- .dnb-forms-button-row{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}.dnb-form-main-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__left]){margin-left:var(--spacing-medium)}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}.dnb-form-main-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:9rem}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-postal-code-and-city__fields{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-postal-code-and-city--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-postal-code-and-city--width-large{width:var(--forms-field-width--large)}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection--width-large .dnb-dropdown__shell{width:var(--forms-field-width--large)}.dnb-forms-field-selection--width-medium .dnb-dropdown__shell{width:var(--forms-field-width--medium)}.dnb-forms-field-selection--width-small .dnb-dropdown__shell{width:var(--forms-field-width--small)}.dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{grid-row-gap:var(--spacing-x-small);display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout{grid-column-gap:var(--spacing-medium);-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}@media (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}}.dnb-forms-steps-layout__sidebar{flex:0;min-width:21rem}.dnb-forms-steps-layout__sidebar .dnb-step-indicator__sidebar{max-width:21rem}.dnb-forms-steps-layout__sidebar .dnb-step-indicator__sidebar .dnb-step-indicator__item{min-width:336px}.dnb-forms-steps-layout__contents{flex:1;min-width:25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:var(--forms-field-width--medium) auto}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__label-description,.dnb-forms-field-block__label-secondary{color:var(--color-black-55);font-size:var(--font-size-small)}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-payment-card{--color-dark-cyan:#003b47;--dnb-payment-bg-default:linear-gradient(187.2deg,#008484 6.31%,var(--color-sea-green) 82.66%);--dnb-payment-bg-pluss:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);--dnb-payment-bg-white:linear-gradient(184.55deg,var(--color-black-background) 4.63%,var(--color-white) 92.04%);--dnb-payment-bg-gold:linear-gradient(184.55deg,#bfa970 4.63%,#d3bd83 84.57%);--dnb-payment-bg-saga:linear-gradient(187.2deg,#1c1c1c 6.31%,#000 82.66%);--dnb-payment-bg-private:linear-gradient(187.2deg,#1c1c1c 6.31%,#000 82.66%);--dnb-payment-bg-business-no-visa:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);--dnb-payment-bg-business-with-visa:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);margin:0}.dnb-payment-card__card{border-color:currentcolor;border-color:hsla(0,0%,100%,.1) transparent rgba(0,0,0,.2);border-radius:12px;border-style:solid;border-width:1px;box-shadow:var(--shadow-default);color:var(--color-white);height:216px;padding:16px;position:relative;transition:all 225ms cubic-bezier(0,0,.2,1) 0ms;width:343px}.dnb-payment-card__card--design-default{background:var(--dnb-payment-bg-default);color:var(--color-white)}.dnb-payment-card__card--design-pluss{background:var(--dnb-payment-bg-pluss);color:var(--color-white)}.dnb-payment-card__card--design-my-first,.dnb-payment-card__card--design-ung,.dnb-payment-card__card--design-youth{color:var(--color-black-80)}.dnb-payment-card__card--design-gold{background:var(--dnb-payment-bg-gold);color:var(--color-white)}.dnb-payment-card__card--design-saga{background:var(--dnb-payment-bg-saga);color:var(--color-white)}.dnb-payment-card__card--design-private{background:var(--dnb-payment-bg-private);color:var(--color-white)}.dnb-payment-card__card--design-black{background:var(--color-black);color:var(--color-white)}.dnb-payment-card__card--design-business-no-visa{background:var(--dnb-payment-bg-business-no-visa);color:var(--color-white)}.dnb-payment-card__card--design-business-with-visa{background:var(--dnb-payment-bg-business-with-visa);color:var(--color-white)}.dnb-payment-card__card:after{background:radial-gradient(52.39% 52.39% at 50%,at 50%,hsla(56,52%,94%,.122) 0,rgba(6,6,6,0) 100%);background:radial-gradient(52.39% 52.39% at 50% 50%,hsla(56,52%,94%,.122) 0,rgba(6,6,6,0) 100%);border-radius:inherit;content:"";height:100%;left:0;position:absolute;top:0;width:100%}.dnb-payment-card__card__content{display:flex;height:100%;position:relative;width:100%}.dnb-payment-card__card__wrapper{bottom:0;left:0;position:absolute}.dnb-spacing .dnb-payment-card__card .dnb-p{margin-bottom:0!important}.dnb-payment-card__card__holder{font-weight:var(--font-weight-medium);text-align:left;text-transform:uppercase}.dnb-payment-card__card__holder.dnb-p{font-size:.625rem}.dnb-payment-card__card__numbers{font-size:1.5rem!important;font-weight:var(--font-weight-medium)}.dnb-payment-card__card__credit-type{bottom:0;position:absolute;right:0}.dnb-payment-card__card__bank-logo{left:0;position:absolute;top:0}.dnb-payment-card__card__product-type{height:38px;left:70px;position:absolute;top:0}.dnb-payment-card__card__bank-axept{height:45px;position:absolute;right:0;top:0}.dnb-payment-card__blocking__overlay{align-items:center;background:linear-gradient(184.55deg,hsla(0,0%,80%,.5) 4.63%,hsla(0,0%,91%,.5) 84.83%);border-radius:inherit;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.dnb-payment-card__blocking__center{align-items:center;background:var(--color-black-80);border-radius:4px;color:var(--color-sand-yellow);display:flex;flex-direction:column;justify-content:center;padding:1rem}.dnb-payment-card__blocking svg{shape-rendering:geometricprecision}.dnb-payment-card.dnb-skeleton .dnb-payment-card__card__holder{opacity:1}.dnb-payment-card--compact .dnb-payment-card__card{border-radius:12px 12px 0 0;box-shadow:var(--shadow-default);height:32.8mm;padding:0}.dnb-payment-card--compact .dnb-payment-card__card__top{left:6mm;position:absolute;right:6mm;top:4mm}.dnb-payment-card--compact .dnb-payment-card__card__bottom{background-color:var(--color-white);bottom:0;height:14mm;left:0;position:absolute;right:0}.dnb-payment-card--compact .dnb-payment-card__card__wrapper{color:var(--color-black-80);padding:6px 22px}.dnb-payment-card--compact .dnb-payment-card__card__numbers{font-size:var(--font-size-basis)}.dnb-payment-card--compact .dnb-payment-card__card__credit-type{bottom:auto;right:4px;top:10px}.dnb-payment-card--compact .dnb-payment-card__blocking__center{grid-gap:var(--spacing-x-small);align-items:center;background:rgba(0,0,0,.739);border-radius:inherit;display:flex;flex-direction:row;gap:var(--spacing-x-small);height:100%;justify-content:center;width:100%}
1
+ .dnb-forms-button-row{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}.dnb-form-main-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__left]){margin-left:var(--spacing-medium)}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}.dnb-form-main-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading[\:has\(\%2B\%20\.dnb-flex-stack\%20\%3E\%20\.dnb-card\,\%20\%2B\%20\.dnb-card\)]:not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:9rem}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-postal-code-and-city__fields{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-postal-code-and-city--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-postal-code-and-city--width-large{width:var(--forms-field-width--large)}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection--width-large .dnb-dropdown__shell{width:var(--forms-field-width--large)}.dnb-forms-field-selection--width-medium .dnb-dropdown__shell{width:var(--forms-field-width--medium)}.dnb-forms-field-selection--width-small .dnb-dropdown__shell{width:var(--forms-field-width--small)}.dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{grid-row-gap:var(--spacing-x-small);display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{grid-column-gap:var(--spacing-small);-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout{grid-column-gap:var(--spacing-medium);-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}@media (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}}.dnb-forms-steps-layout__sidebar{flex:0;min-width:21rem}.dnb-forms-steps-layout__sidebar .dnb-step-indicator__sidebar{max-width:21rem}.dnb-forms-steps-layout__sidebar .dnb-step-indicator__sidebar .dnb-step-indicator__item{min-width:336px}.dnb-forms-steps-layout__contents{flex:1;min-width:25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:var(--forms-field-width--medium) auto}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__label-description,.dnb-forms-field-block__label-secondary{color:var(--color-black-55);font-size:var(--font-size-small)}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-payment-card{--color-dark-cyan:#003b47;--dnb-payment-bg-default:linear-gradient(187.2deg,#008484 6.31%,var(--color-sea-green) 82.66%);--dnb-payment-bg-pluss:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);--dnb-payment-bg-white:linear-gradient(184.55deg,var(--color-black-background) 4.63%,var(--color-white) 92.04%);--dnb-payment-bg-gold:linear-gradient(184.55deg,#bfa970 4.63%,#d3bd83 84.57%);--dnb-payment-bg-saga:linear-gradient(187.2deg,#1c1c1c 6.31%,#000 82.66%);--dnb-payment-bg-private:linear-gradient(187.2deg,#1c1c1c 6.31%,#000 82.66%);--dnb-payment-bg-business-no-visa:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);--dnb-payment-bg-business-with-visa:linear-gradient(187.2deg,var(--color-dark-cyan) 6.31%,var(--color-ocean-green) 82.66%),var(--color-emerald-green);margin:0}.dnb-payment-card__card{border-color:currentcolor;border-color:hsla(0,0%,100%,.1) transparent rgba(0,0,0,.2);border-radius:12px;border-style:solid;border-width:1px;box-shadow:var(--shadow-default);color:var(--color-white);height:216px;padding:16px;position:relative;transition:all 225ms cubic-bezier(0,0,.2,1) 0ms;width:343px}.dnb-payment-card__card--design-default{background:var(--dnb-payment-bg-default);color:var(--color-white)}.dnb-payment-card__card--design-pluss{background:var(--dnb-payment-bg-pluss);color:var(--color-white)}.dnb-payment-card__card--design-my-first,.dnb-payment-card__card--design-ung,.dnb-payment-card__card--design-youth{color:var(--color-black-80)}.dnb-payment-card__card--design-gold{background:var(--dnb-payment-bg-gold);color:var(--color-white)}.dnb-payment-card__card--design-saga{background:var(--dnb-payment-bg-saga);color:var(--color-white)}.dnb-payment-card__card--design-private{background:var(--dnb-payment-bg-private);color:var(--color-white)}.dnb-payment-card__card--design-black{background:var(--color-black);color:var(--color-white)}.dnb-payment-card__card--design-business-no-visa{background:var(--dnb-payment-bg-business-no-visa);color:var(--color-white)}.dnb-payment-card__card--design-business-with-visa{background:var(--dnb-payment-bg-business-with-visa);color:var(--color-white)}.dnb-payment-card__card:after{background:radial-gradient(52.39% 52.39% at 50%,at 50%,hsla(56,52%,94%,.122) 0,rgba(6,6,6,0) 100%);background:radial-gradient(52.39% 52.39% at 50% 50%,hsla(56,52%,94%,.122) 0,rgba(6,6,6,0) 100%);border-radius:inherit;content:"";height:100%;left:0;position:absolute;top:0;width:100%}.dnb-payment-card__card__content{display:flex;height:100%;position:relative;width:100%}.dnb-payment-card__card__wrapper{bottom:0;left:0;position:absolute}.dnb-spacing .dnb-payment-card__card .dnb-p{margin-bottom:0!important}.dnb-payment-card__card__holder{font-weight:var(--font-weight-medium);text-align:left;text-transform:uppercase}.dnb-payment-card__card__holder.dnb-p{font-size:.625rem}.dnb-payment-card__card__numbers{font-size:1.5rem!important;font-weight:var(--font-weight-medium)}.dnb-payment-card__card__credit-type{bottom:0;position:absolute;right:0}.dnb-payment-card__card__bank-logo{left:0;position:absolute;top:0}.dnb-payment-card__card__product-type{height:38px;left:70px;position:absolute;top:0}.dnb-payment-card__card__bank-axept{height:45px;position:absolute;right:0;top:0}.dnb-payment-card__blocking__overlay{align-items:center;background:linear-gradient(184.55deg,hsla(0,0%,80%,.5) 4.63%,hsla(0,0%,91%,.5) 84.83%);border-radius:inherit;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.dnb-payment-card__blocking__overlay svg path{stroke:currentcolor}.dnb-payment-card__blocking__center{align-items:center;background:var(--color-black-80);border-radius:4px;color:var(--color-sand-yellow);display:flex;flex-direction:column;justify-content:center;padding:1rem}.dnb-payment-card__blocking svg{shape-rendering:geometricprecision}.dnb-payment-card.dnb-skeleton .dnb-payment-card__card__holder{opacity:1}.dnb-payment-card--compact .dnb-payment-card__card{border-radius:12px 12px 0 0;box-shadow:var(--shadow-default);height:32.8mm;padding:0}.dnb-payment-card--compact .dnb-payment-card__card__top{left:6mm;position:absolute;right:6mm;top:4mm}.dnb-payment-card--compact .dnb-payment-card__card__bottom{background-color:var(--color-white);bottom:0;height:14mm;left:0;position:absolute;right:0}.dnb-payment-card--compact .dnb-payment-card__card__wrapper{color:var(--color-black-80);padding:6px 22px}.dnb-payment-card--compact .dnb-payment-card__card__numbers{font-size:var(--font-size-basis)}.dnb-payment-card--compact .dnb-payment-card__card__credit-type{bottom:auto;right:4px;top:10px}.dnb-payment-card--compact .dnb-payment-card__blocking__center{grid-gap:var(--spacing-x-small);align-items:center;background:rgba(0,0,0,.739);border-radius:inherit;display:flex;flex-direction:row;gap:var(--spacing-x-small);height:100%;justify-content:center;width:100%}
@@ -38,9 +38,9 @@ export type ButtonChildren =
38
38
  | string
39
39
  | ((...args: any[]) => any)
40
40
  | React.ReactNode;
41
- export type ButtonElement = DynamicElement<
42
- HTMLButtonElement | HTMLAnchorElement | AnchorProps
43
- >;
41
+ export type ButtonElement =
42
+ | DynamicElement<HTMLButtonElement | HTMLAnchorElement | AnchorProps>
43
+ | React.ReactNode;
44
44
  export type ButtonOnClick = string | ((...args: any[]) => any);
45
45
  export type ButtonProps = {
46
46
  /**
@@ -31,8 +31,9 @@ export default function FormLabel(localProps) {
31
31
  label_direction
32
32
  } = props,
33
33
  attributes = _objectWithoutProperties(props, _excluded);
34
+ const isInteractive = !props.disabled && !srOnly && (typeof props.onClick === 'function' || forId || for_id);
34
35
  const params = _objectSpread({
35
- className: classnames('dnb-form-label', (isTrue(vertical) || label_direction === 'vertical') && `dnb-form-label--vertical`, (srOnly || isTrue(sr_only)) && 'dnb-sr-only', createSkeletonClass('font', skeleton, context), createSpacingClasses(props), className, size && `dnb-h--${size}`),
36
+ className: classnames('dnb-form-label', (isTrue(vertical) || label_direction === 'vertical') && `dnb-form-label--vertical`, (srOnly || isTrue(sr_only)) && 'dnb-sr-only', createSkeletonClass('font', skeleton, context), createSpacingClasses(props), className, size && `dnb-h--${size}`, isInteractive && 'dnb-form-label--interactive'),
36
37
  htmlFor: forId || for_id
37
38
  }, attributes);
38
39
  params['ref'] = innerRef;
@@ -1 +1 @@
1
- {"version":3,"file":"FormLabel.js","names":["React","classnames","extendPropsWithContext","isTrue","validateDOMAttributes","createSpacingClasses","createSkeletonClass","skeletonDOMAttributes","pickFormElementProps","Context","FormLabel","localProps","context","useContext","props","skeleton","FormRow","formElement","forId","text","srOnly","vertical","size","element","Element","innerRef","className","children","for_id","sr_only","label_direction","attributes","_objectWithoutProperties","_excluded","params","_objectSpread","htmlFor","createElement","_supportsSpacingProps"],"sources":["../../../../src/components/form-label/FormLabel.tsx"],"sourcesContent":["/**\n * Web FormLabel Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n extendPropsWithContext,\n isTrue,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n createSkeletonClass,\n skeletonDOMAttributes,\n} from '../skeleton/SkeletonHelper'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport Context from '../../shared/Context'\nimport {\n DynamicElement,\n DynamicElementParams,\n SpacingProps,\n} from '../../shared/types'\n\nexport type FormLabelProps = {\n forId?: string\n element?: DynamicElement<HTMLLabelElement>\n text?: React.ReactNode\n size?: 'basis' | 'medium' | 'large'\n id?: string\n skeleton?: boolean\n label?: React.ReactNode\n vertical?: boolean\n srOnly?: boolean\n innerRef?: React.RefObject<HTMLElement>\n\n /** Is not a part of HTMLLabelElement and not documented as of now */\n disabled?: boolean\n\n /** @deprecated use forId instead */\n for_id?: string\n /** @deprecated use srOnly instead */\n sr_only?: boolean\n /** @deprecated use labelDirection instead (was not documented before) */\n label_direction?: 'vertical' | 'horizontal'\n}\n\nexport type FormLabelAllProps = FormLabelProps &\n React.HTMLAttributes<HTMLLabelElement> &\n SpacingProps\n\nexport default function FormLabel(localProps: FormLabelAllProps) {\n const context = React.useContext(Context)\n\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContext(\n localProps,\n null,\n { skeleton: context?.skeleton },\n pickFormElementProps(context?.FormRow), // Deprecated – can be removed in v11\n pickFormElementProps(context?.formElement),\n context?.FormLabel\n )\n\n const {\n forId,\n text,\n srOnly,\n vertical,\n size,\n skeleton,\n element: Element = 'label',\n innerRef,\n className,\n children,\n\n /** @deprecated can be removed in v11 */\n for_id,\n sr_only,\n label_direction,\n\n ...attributes\n } = props\n\n const params = {\n className: classnames(\n 'dnb-form-label',\n (isTrue(vertical) || label_direction === 'vertical') &&\n `dnb-form-label--vertical`,\n (srOnly || isTrue(sr_only)) && 'dnb-sr-only',\n size && `dnb-h--${size}`,\n createSkeletonClass('font', skeleton, context),\n createSpacingClasses(props),\n className\n ),\n htmlFor: forId || for_id,\n ...(attributes as DynamicElementParams),\n }\n\n params['ref'] = innerRef\n\n skeletonDOMAttributes(params, skeleton, context)\n validateDOMAttributes(localProps, params)\n\n return <Element {...params}>{text || children}</Element>\n}\n\nFormLabel._supportsSpacingProps = true\n"],"mappings":";;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SACEC,sBAAsB,EACtBC,MAAM,EACNC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SACEC,mBAAmB,EACnBC,qBAAqB,QAChB,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,uCAAuC;AAC5E,OAAOC,OAAO,MAAM,sBAAsB;AAkC1C,eAAe,SAASC,SAASA,CAACC,UAA6B,EAAE;EAC/D,MAAMC,OAAO,GAAGZ,KAAK,CAACa,UAAU,CAACJ,OAAO,CAAC;EAGzC,MAAMK,KAAK,GAAGZ,sBAAsB,CAClCS,UAAU,EACV,IAAI,EACJ;IAAEI,QAAQ,EAAEH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG;EAAS,CAAC,EAC/BP,oBAAoB,CAACI,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,OAAO,CAAC,EACtCR,oBAAoB,CAACI,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,WAAW,CAAC,EAC1CL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,SACX,CAAC;EAED,MAAM;MACJQ,KAAK;MACLC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,IAAI;MACJP,QAAQ;MACRQ,OAAO,EAAEC,OAAO,GAAG,OAAO;MAC1BC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MAGRC,MAAM;MACNC,OAAO;MACPC;IAGF,CAAC,GAAGhB,KAAK;IADJiB,UAAU,GAAAC,wBAAA,CACXlB,KAAK,EAAAmB,SAAA;EAET,MAAMC,MAAM,GAAAC,aAAA;IACVT,SAAS,EAAEzB,UAAU,CACnB,gBAAgB,EAChB,CAACE,MAAM,CAACkB,QAAQ,CAAC,IAAIS,eAAe,KAAK,UAAU,KAChD,0BAAyB,EAC5B,CAACV,MAAM,IAAIjB,MAAM,CAAC0B,OAAO,CAAC,KAAK,aAAa,EAE5CvB,mBAAmB,CAAC,MAAM,EAAES,QAAQ,EAAEH,OAAO,CAAC,EAC9CP,oBAAoB,CAACS,KAAK,CAAC,EAC3BY,SAAS,EAHTJ,IAAI,IAAK,UAASA,IAAK,EAIzB,CAAC;IACDc,OAAO,EAAElB,KAAK,IAAIU;EAAM,GACpBG,UAAU,CACf;EAEDG,MAAM,CAAC,KAAK,CAAC,GAAGT,QAAQ;EAExBlB,qBAAqB,CAAC2B,MAAM,EAAEnB,QAAQ,EAAEH,OAAO,CAAC;EAChDR,qBAAqB,CAACO,UAAU,EAAEuB,MAAM,CAAC;EAEzC,OAAOlC,KAAA,CAAAqC,aAAA,CAACb,OAAO,EAAKU,MAAM,EAAGf,IAAI,IAAIQ,QAAkB,CAAC;AAC1D;AAEAjB,SAAS,CAAC4B,qBAAqB,GAAG,IAAI"}
1
+ {"version":3,"file":"FormLabel.js","names":["React","classnames","extendPropsWithContext","isTrue","validateDOMAttributes","createSpacingClasses","createSkeletonClass","skeletonDOMAttributes","pickFormElementProps","Context","FormLabel","localProps","context","useContext","props","skeleton","FormRow","formElement","forId","text","srOnly","vertical","size","element","Element","innerRef","className","children","for_id","sr_only","label_direction","attributes","_objectWithoutProperties","_excluded","isInteractive","disabled","onClick","params","_objectSpread","htmlFor","createElement","_supportsSpacingProps"],"sources":["../../../../src/components/form-label/FormLabel.tsx"],"sourcesContent":["/**\n * Web FormLabel Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n extendPropsWithContext,\n isTrue,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n createSkeletonClass,\n skeletonDOMAttributes,\n} from '../skeleton/SkeletonHelper'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport Context from '../../shared/Context'\nimport {\n DynamicElement,\n DynamicElementParams,\n SpacingProps,\n} from '../../shared/types'\n\nexport type FormLabelProps = {\n forId?: string\n element?: DynamicElement<HTMLLabelElement>\n text?: React.ReactNode\n size?: 'basis' | 'medium' | 'large'\n id?: string\n skeleton?: boolean\n label?: React.ReactNode\n vertical?: boolean\n srOnly?: boolean\n innerRef?: React.RefObject<HTMLElement>\n\n /** Is not a part of HTMLLabelElement and not documented as of now */\n disabled?: boolean\n\n /** @deprecated use forId instead */\n for_id?: string\n /** @deprecated use srOnly instead */\n sr_only?: boolean\n /** @deprecated use labelDirection instead (was not documented before) */\n label_direction?: 'vertical' | 'horizontal'\n}\n\nexport type FormLabelAllProps = FormLabelProps &\n React.HTMLAttributes<HTMLLabelElement> &\n SpacingProps\n\nexport default function FormLabel(localProps: FormLabelAllProps) {\n const context = React.useContext(Context)\n\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContext(\n localProps,\n null,\n { skeleton: context?.skeleton },\n pickFormElementProps(context?.FormRow), // Deprecated – can be removed in v11\n pickFormElementProps(context?.formElement),\n context?.FormLabel\n )\n\n const {\n forId,\n text,\n srOnly,\n vertical,\n size,\n skeleton,\n element: Element = 'label',\n innerRef,\n className,\n children,\n\n /** @deprecated can be removed in v11 */\n for_id,\n sr_only,\n label_direction,\n\n ...attributes\n } = props\n\n const isInteractive =\n !props.disabled &&\n !srOnly &&\n (typeof props.onClick === 'function' || forId || for_id)\n\n const params = {\n className: classnames(\n 'dnb-form-label',\n (isTrue(vertical) || label_direction === 'vertical') &&\n `dnb-form-label--vertical`,\n (srOnly || isTrue(sr_only)) && 'dnb-sr-only',\n size && `dnb-h--${size}`,\n isInteractive && 'dnb-form-label--interactive',\n createSkeletonClass('font', skeleton, context),\n createSpacingClasses(props),\n className\n ),\n htmlFor: forId || for_id,\n ...(attributes as DynamicElementParams),\n }\n\n params['ref'] = innerRef\n\n skeletonDOMAttributes(params, skeleton, context)\n validateDOMAttributes(localProps, params)\n\n return <Element {...params}>{text || children}</Element>\n}\n\nFormLabel._supportsSpacingProps = true\n"],"mappings":";;;;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SACEC,sBAAsB,EACtBC,MAAM,EACNC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SACEC,mBAAmB,EACnBC,qBAAqB,QAChB,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,uCAAuC;AAC5E,OAAOC,OAAO,MAAM,sBAAsB;AAkC1C,eAAe,SAASC,SAASA,CAACC,UAA6B,EAAE;EAC/D,MAAMC,OAAO,GAAGZ,KAAK,CAACa,UAAU,CAACJ,OAAO,CAAC;EAGzC,MAAMK,KAAK,GAAGZ,sBAAsB,CAClCS,UAAU,EACV,IAAI,EACJ;IAAEI,QAAQ,EAAEH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG;EAAS,CAAC,EAC/BP,oBAAoB,CAACI,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,OAAO,CAAC,EACtCR,oBAAoB,CAACI,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,WAAW,CAAC,EAC1CL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,SACX,CAAC;EAED,MAAM;MACJQ,KAAK;MACLC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,IAAI;MACJP,QAAQ;MACRQ,OAAO,EAAEC,OAAO,GAAG,OAAO;MAC1BC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MAGRC,MAAM;MACNC,OAAO;MACPC;IAGF,CAAC,GAAGhB,KAAK;IADJiB,UAAU,GAAAC,wBAAA,CACXlB,KAAK,EAAAmB,SAAA;EAET,MAAMC,aAAa,GACjB,CAACpB,KAAK,CAACqB,QAAQ,IACf,CAACf,MAAM,KACN,OAAON,KAAK,CAACsB,OAAO,KAAK,UAAU,IAAIlB,KAAK,IAAIU,MAAM,CAAC;EAE1D,MAAMS,MAAM,GAAAC,aAAA;IACVZ,SAAS,EAAEzB,UAAU,CACnB,gBAAgB,EAChB,CAACE,MAAM,CAACkB,QAAQ,CAAC,IAAIS,eAAe,KAAK,UAAU,KAChD,0BAAyB,EAC5B,CAACV,MAAM,IAAIjB,MAAM,CAAC0B,OAAO,CAAC,KAAK,aAAa,EAG5CvB,mBAAmB,CAAC,MAAM,EAAES,QAAQ,EAAEH,OAAO,CAAC,EAC9CP,oBAAoB,CAACS,KAAK,CAAC,EAC3BY,SAAS,EAJTJ,IAAI,IAAK,UAASA,IAAK,EAAC,EACxBY,aAAa,IAAI,6BAInB,CAAC;IACDK,OAAO,EAAErB,KAAK,IAAIU;EAAM,GACpBG,UAAU,CACf;EAEDM,MAAM,CAAC,KAAK,CAAC,GAAGZ,QAAQ;EAExBlB,qBAAqB,CAAC8B,MAAM,EAAEtB,QAAQ,EAAEH,OAAO,CAAC;EAChDR,qBAAqB,CAACO,UAAU,EAAE0B,MAAM,CAAC;EAEzC,OAAOrC,KAAA,CAAAwC,aAAA,CAAChB,OAAO,EAAKa,MAAM,EAAGlB,IAAI,IAAIQ,QAAkB,CAAC;AAC1D;AAEAjB,SAAS,CAAC+B,qBAAqB,GAAG,IAAI"}
@@ -5,9 +5,9 @@
5
5
  .dnb-form-label {
6
6
  color: var(--color-black-80);
7
7
  }
8
- .dnb-form-label[for]:not([disabled]) {
8
+ .dnb-form-label--interactive {
9
9
  cursor: pointer;
10
10
  }
11
- .dnb-form-label[for]:not([disabled]):hover {
11
+ .dnb-form-label--interactive:hover {
12
12
  color: var(--color-sea-green);
13
13
  }
@@ -1 +1 @@
1
- .dnb-form-label{color:var(--color-black-80)}.dnb-form-label[for]:not([disabled]){cursor:pointer}.dnb-form-label[for]:not([disabled]):hover{color:var(--color-sea-green)}
1
+ .dnb-form-label{color:var(--color-black-80)}.dnb-form-label--interactive{cursor:pointer}.dnb-form-label--interactive:hover{color:var(--color-sea-green)}
@@ -6,7 +6,7 @@
6
6
  .dnb-form-label {
7
7
  color: var(--color-black-80);
8
8
 
9
- &[for]:not([disabled]) {
9
+ &--interactive {
10
10
  cursor: pointer;
11
11
 
12
12
  &:hover {
@@ -254,5 +254,4 @@ export interface InputMaskedProps
254
254
  children?: InputMaskedChildren;
255
255
  on_state_update?: (...args: any[]) => any;
256
256
  }
257
- declare const InputMasked: React.FC<InputMaskedProps>;
258
257
  export default InputMasked;
@@ -27,8 +27,6 @@ const InputMasked = props => {
27
27
  }
28
28
  }, _InputMaskedElement || (_InputMaskedElement = React.createElement(InputMaskedElement, null)));
29
29
  };
30
- InputMasked._supportsSpacingProps = true;
31
- export default InputMasked;
32
30
  process.env.NODE_ENV !== "production" ? InputMasked.propTypes = _objectSpread({
33
31
  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.func]),
34
32
  number_mask: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.object]),
@@ -75,4 +73,6 @@ InputMasked.defaultProps = _objectSpread(_objectSpread({}, Input.defaultProps),
75
73
  on_submit_focus: null,
76
74
  on_submit_blur: null
77
75
  });
76
+ InputMasked._supportsSpacingProps = true;
77
+ export default InputMasked;
78
78
  //# sourceMappingURL=InputMasked.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputMasked.js","names":["React","PropTypes","extendPropsWithContext","InputMaskedContext","InputMaskedElement","Input","inputPropTypes","Context","InputMasked","props","context","useContext","mask","alias","key","test","contextAndProps","useCallback","defaultProps","createElement","Provider","value","_InputMaskedElement","_supportsSpacingProps","process","env","NODE_ENV","propTypes","_objectSpread","oneOfType","object","array","func","number_mask","string","bool","currency_mask","mask_options","number_format","locale","as_currency","as_number","as_percent","show_mask","show_guide","pipe","keep_char_positions","placeholder_char","inner_ref","on_change","on_submit","on_focus","on_blur","on_submit_focus","on_submit_blur"],"sources":["../../../../src/components/input-masked/InputMasked.js"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\n/**\n * Web InputMasked Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { extendPropsWithContext } from '../../shared/component-helper'\nimport InputMaskedContext from './InputMaskedContext'\nimport InputMaskedElement from './InputMaskedElement'\nimport Input, { inputPropTypes } from '../input/Input'\nimport Context from '../../shared/Context'\n\nconst InputMasked = (props) => {\n const context = React.useContext(Context)\n\n // Remove masks defined in Provider/Context, because it overwrites a custom mask\n if (props?.mask) {\n const alias = context?.InputMasked\n for (const key in alias) {\n if (/^as[_A-Z]|number_mask|currency_mask/.test(key)) {\n delete alias[key]\n }\n }\n }\n\n const contextAndProps = React.useCallback(\n extendPropsWithContext(\n props,\n InputMasked.defaultProps,\n context?.InputMasked\n ),\n [props, InputMasked.defaultProps, context?.InputMasked]\n )\n\n return (\n <InputMaskedContext.Provider\n value={{\n props: contextAndProps,\n context,\n }}\n >\n <InputMaskedElement />\n </InputMaskedContext.Provider>\n )\n}\n\nInputMasked._supportsSpacingProps = true\n\nexport default InputMasked\n\nInputMasked.propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.array,\n PropTypes.func,\n ]),\n number_mask: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.object,\n ]),\n currency_mask: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.object,\n ]),\n mask_options: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n number_format: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n locale: PropTypes.string,\n as_currency: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n as_number: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n as_percent: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n show_mask: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n show_guide: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n pipe: PropTypes.func,\n keep_char_positions: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n placeholder_char: PropTypes.string,\n inner_ref: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n\n on_change: PropTypes.func,\n on_submit: PropTypes.func,\n on_focus: PropTypes.func,\n on_blur: PropTypes.func,\n on_submit_focus: PropTypes.func,\n on_submit_blur: PropTypes.func,\n\n ...inputPropTypes,\n}\n\nInputMasked.defaultProps = {\n ...Input.defaultProps,\n\n mask: null,\n number_mask: null,\n currency_mask: null,\n mask_options: null,\n number_format: null,\n as_currency: null,\n as_number: null,\n as_percent: null,\n locale: null,\n show_mask: false,\n show_guide: true,\n pipe: null,\n keep_char_positions: false,\n placeholder_char: null,\n inner_ref: null,\n\n on_change: null,\n on_submit: null,\n on_focus: null,\n on_blur: null,\n on_submit_focus: null,\n on_submit_blur: null,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputMasked.js","names":["React","PropTypes","extendPropsWithContext","InputMaskedContext","InputMaskedElement","Input","inputPropTypes","Context","InputMasked","props","context","useContext","mask","alias","key","test","contextAndProps","useCallback","defaultProps","createElement","Provider","value","_InputMaskedElement","process","env","NODE_ENV","propTypes","_objectSpread","oneOfType","object","array","func","number_mask","string","bool","currency_mask","mask_options","number_format","locale","as_currency","as_number","as_percent","show_mask","show_guide","pipe","keep_char_positions","placeholder_char","inner_ref","on_change","on_submit","on_focus","on_blur","on_submit_focus","on_submit_blur","_supportsSpacingProps"],"sources":["../../../../src/components/input-masked/InputMasked.js"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\n/**\n * Web InputMasked Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { extendPropsWithContext } from '../../shared/component-helper'\nimport InputMaskedContext from './InputMaskedContext'\nimport InputMaskedElement from './InputMaskedElement'\nimport Input, { inputPropTypes } from '../input/Input'\nimport Context from '../../shared/Context'\n\nconst InputMasked = (props) => {\n const context = React.useContext(Context)\n\n // Remove masks defined in Provider/Context, because it overwrites a custom mask\n if (props?.mask) {\n const alias = context?.InputMasked\n for (const key in alias) {\n if (/^as[_A-Z]|number_mask|currency_mask/.test(key)) {\n delete alias[key]\n }\n }\n }\n\n const contextAndProps = React.useCallback(\n extendPropsWithContext(\n props,\n InputMasked.defaultProps,\n context?.InputMasked\n ),\n [props, InputMasked.defaultProps, context?.InputMasked]\n )\n\n return (\n <InputMaskedContext.Provider\n value={{\n props: contextAndProps,\n context,\n }}\n >\n <InputMaskedElement />\n </InputMaskedContext.Provider>\n )\n}\n\nInputMasked.propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.array,\n PropTypes.func,\n ]),\n number_mask: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.object,\n ]),\n currency_mask: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.object,\n ]),\n mask_options: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n number_format: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n locale: PropTypes.string,\n as_currency: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n as_number: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n as_percent: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n show_mask: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n show_guide: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n pipe: PropTypes.func,\n keep_char_positions: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n placeholder_char: PropTypes.string,\n inner_ref: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n\n on_change: PropTypes.func,\n on_submit: PropTypes.func,\n on_focus: PropTypes.func,\n on_blur: PropTypes.func,\n on_submit_focus: PropTypes.func,\n on_submit_blur: PropTypes.func,\n\n ...inputPropTypes,\n}\n\nInputMasked.defaultProps = {\n ...Input.defaultProps,\n\n mask: null,\n number_mask: null,\n currency_mask: null,\n mask_options: null,\n number_format: null,\n as_currency: null,\n as_number: null,\n as_percent: null,\n locale: null,\n show_mask: false,\n show_guide: true,\n pipe: null,\n keep_char_positions: false,\n placeholder_char: null,\n inner_ref: null,\n\n on_change: null,\n on_submit: null,\n on_focus: null,\n on_blur: null,\n on_submit_focus: null,\n on_submit_blur: null,\n}\n\nInputMasked._supportsSpacingProps = true\n\nexport default InputMasked\n"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { SpacingProps } from '../space/types';
3
+ import { FormStatusState, FormStatusText } from '../FormStatus';
4
+ export type MultiInputMaskInput<T extends string> = {
5
+ /**
6
+ * Defines the id for the input. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` paramaters.
7
+ */
8
+ id: T;
9
+ /**
10
+ * Label used by the input. The label itself is hidden, but required to uphold accesability standards for screen readers.
11
+ */
12
+ label: React.ReactNode;
13
+ /**
14
+ * Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The length sets the size of the input, so an array of two items would produce an input of two characters
15
+ */
16
+ mask: RegExp[];
17
+ /**
18
+ * Sets the placeholder character used for the input.
19
+ */
20
+ placeholderCharacter: string;
21
+ };
22
+ export type MultiInputMaskValue<T extends string> = {
23
+ [K in T]: string;
24
+ };
25
+ export type MultiInputMaskProps<T extends string> = {
26
+ /**
27
+ * The label describing the group of inputs inside the components.
28
+ */
29
+ label?: React.ReactNode;
30
+ /**
31
+ * Use to change the label layout direction. Defaults to `horizontal`.
32
+ */
33
+ labelDirection?: 'vertical' | 'horizontal';
34
+ /**
35
+ * Used to define the different inputs representing the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`
36
+ */
37
+ inputs: MultiInputMaskInput<T>[];
38
+ /**
39
+ * Values used for the inputs inside the component. Expects an object with keys matching the id's defined in `inputs`
40
+ */
41
+ values?: MultiInputMaskValue<T>;
42
+ /**
43
+ * Defines the delimiter used to seperate the inputs inside the component.
44
+ */
45
+ delimiter?: string;
46
+ /**
47
+ * Runs when the input value changes. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`
48
+ */
49
+ onChange?: (values: MultiInputMaskValue<T>) => void;
50
+ /**
51
+ * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.
52
+ */
53
+ status?: FormStatusText;
54
+ /**
55
+ * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.
56
+ */
57
+ statusState?: FormStatusState;
58
+ } & Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'ref' | 'value' | 'label'> & SpacingProps;
59
+ declare function MultiInputMask<T extends string>({ label, labelDirection, inputs, delimiter, onChange: onChangeExternal, disabled, status, statusState, values: defaultValues, className, ...props }: MultiInputMaskProps<T>): import("react/jsx-runtime").JSX.Element;
60
+ export default MultiInputMask;
@@ -0,0 +1,148 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ const _excluded = ["label", "labelDirection", "inputs", "delimiter", "onChange", "disabled", "status", "statusState", "values", "className"];
4
+ import React, { Fragment, useRef } from 'react';
5
+ import Input from '../Input';
6
+ import TextMask from './TextMask';
7
+ import useHandleCursorPosition from './hooks/useHandleCursorPosition';
8
+ import classnames from 'classnames';
9
+ import FormLabel from '../FormLabel';
10
+ import { createSpacingClasses } from '../space/SpacingHelper';
11
+ import { useMultiInputValue } from './hooks/useMultiInputValues';
12
+ function MultiInputMask(_ref) {
13
+ let {
14
+ label,
15
+ labelDirection = 'horizontal',
16
+ inputs,
17
+ delimiter,
18
+ onChange: onChangeExternal,
19
+ disabled,
20
+ status,
21
+ statusState,
22
+ values: defaultValues,
23
+ className
24
+ } = _ref,
25
+ props = _objectWithoutProperties(_ref, _excluded);
26
+ const [values, onChange] = useMultiInputValue({
27
+ inputs,
28
+ defaultValues,
29
+ callback: onChangeExternal
30
+ });
31
+ const inputRefs = useRef([]);
32
+ const {
33
+ onKeyDown
34
+ } = useHandleCursorPosition(inputRefs.current, getKeysToHandle());
35
+ const WrapperElement = label ? 'fieldset' : 'div';
36
+ return React.createElement(WrapperElement, {
37
+ className: classnames('dnb-multi-input-mask__fieldset', createSpacingClasses(props), labelDirection === 'horizontal' && 'dnb-multi-input-mask__fieldset--horizontal')
38
+ }, label && React.createElement(FormLabel, {
39
+ className: 'dnb-multi-input-mask__legend' + (labelDirection === 'horizontal' ? " dnb-multi-input-mask__legend--horizontal" : ""),
40
+ element: "legend",
41
+ onClick: onLegendClick,
42
+ disabled: disabled,
43
+ vertical: labelDirection === 'vertical'
44
+ }, React.createElement("span", null, label)), React.createElement(Input, _extends({}, props, {
45
+ className: classnames('dnb-multi-input-mask', className),
46
+ disabled: disabled,
47
+ status: status,
48
+ status_state: statusState,
49
+ input_element: inputs.map((input, index) => React.createElement(Fragment, {
50
+ key: input.id
51
+ }, React.createElement(MultiInputMaskInput, _extends({}, input, {
52
+ value: values[input.id],
53
+ delimiter: index !== inputs.length - 1 ? delimiter : undefined,
54
+ onKeyDown: onKeyDown,
55
+ onChange: onChange,
56
+ disabled: disabled,
57
+ inputRef: getInputRef
58
+ }))))
59
+ })));
60
+ function onLegendClick() {
61
+ if (disabled) {
62
+ return;
63
+ }
64
+ const firstInput = inputRefs.current[0].current;
65
+ firstInput.focus();
66
+ firstInput.setSelectionRange(0, 0);
67
+ }
68
+ function getInputRef(ref) {
69
+ const inputRef = ref === null || ref === void 0 ? void 0 : ref.inputRef;
70
+ if (inputRef && !inputRefs.current.includes(inputRef)) {
71
+ inputRefs.current.push(inputRef);
72
+ }
73
+ }
74
+ function getKeysToHandle() {
75
+ const uniqueMasks = getUniqueMasks();
76
+ if (uniqueMasks.size === 1) {
77
+ const pattern = uniqueMasks.values().next().value.replace(/\//g, '');
78
+ return new RegExp(pattern);
79
+ }
80
+ return inputs.reduce((keys, _ref2) => {
81
+ let {
82
+ id,
83
+ mask
84
+ } = _ref2;
85
+ keys[`${id}__input`] = mask;
86
+ return keys;
87
+ }, {});
88
+ }
89
+ function getUniqueMasks() {
90
+ const masks = new Set();
91
+ inputs.forEach(input => {
92
+ input.mask.forEach(pattern => masks.add(String(pattern)));
93
+ });
94
+ return masks;
95
+ }
96
+ }
97
+ function MultiInputMaskInput(_ref3) {
98
+ let {
99
+ id,
100
+ label,
101
+ value,
102
+ mask,
103
+ placeholderCharacter,
104
+ delimiter,
105
+ disabled,
106
+ inputRef,
107
+ onKeyDown,
108
+ onChange
109
+ } = _ref3;
110
+ return React.createElement(React.Fragment, null, React.createElement(TextMask, {
111
+ id: `${id}__input`,
112
+ className: "dnb-input__input dnb-multi-input-mask__input" + (value ? " dnb-multi-input-mask__input--highlight" : ""),
113
+ disabled: disabled,
114
+ size: mask.length,
115
+ mask: mask,
116
+ value: value ?? '',
117
+ placeholderChar: placeholderCharacter,
118
+ guide: true,
119
+ showMask: true,
120
+ keepCharPositions: false,
121
+ "aria-labelledby": `${id}__label`,
122
+ ref: inputRef,
123
+ onKeyDown: onKeyDown,
124
+ onFocus: onFocus,
125
+ onChange: event => {
126
+ onChange(id, removePlaceholder(event.target.value, placeholderCharacter));
127
+ }
128
+ }), React.createElement("label", {
129
+ id: `${id}__label`,
130
+ htmlFor: `${id}__input`,
131
+ hidden: true
132
+ }, label), delimiter && React.createElement("span", {
133
+ "aria-hidden": true,
134
+ className: 'dnb-multi-input-mask__delimiter' + (value ? " dnb-multi-input-mask__delimiter--highlight" : "")
135
+ }, delimiter));
136
+ function removePlaceholder(value, placeholder) {
137
+ return value.replace(RegExp(placeholder, 'gm'), '');
138
+ }
139
+ function onFocus(_ref4) {
140
+ let {
141
+ target
142
+ } = _ref4;
143
+ target.focus();
144
+ target.select();
145
+ }
146
+ }
147
+ export default MultiInputMask;
148
+ //# sourceMappingURL=MultiInputMask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiInputMask.js","names":["React","Fragment","useRef","Input","TextMask","useHandleCursorPosition","classnames","FormLabel","createSpacingClasses","useMultiInputValue","MultiInputMask","_ref","label","labelDirection","inputs","delimiter","onChange","onChangeExternal","disabled","status","statusState","values","defaultValues","className","props","_objectWithoutProperties","_excluded","callback","inputRefs","onKeyDown","current","getKeysToHandle","WrapperElement","createElement","element","onClick","onLegendClick","vertical","_extends","status_state","input_element","map","input","index","key","id","MultiInputMaskInput","value","length","undefined","inputRef","getInputRef","firstInput","focus","setSelectionRange","ref","includes","push","uniqueMasks","getUniqueMasks","size","pattern","next","replace","RegExp","reduce","keys","_ref2","mask","masks","Set","forEach","add","String","_ref3","placeholderCharacter","placeholderChar","guide","showMask","keepCharPositions","onFocus","event","removePlaceholder","target","htmlFor","hidden","placeholder","_ref4","select"],"sources":["../../../../src/components/input-masked/MultiInputMask.tsx"],"sourcesContent":["import React, { Fragment, MutableRefObject, useRef } from 'react'\nimport Input from '../Input'\nimport TextMask from './TextMask'\nimport useHandleCursorPosition from './hooks/useHandleCursorPosition'\nimport classnames from 'classnames'\nimport FormLabel from '../FormLabel'\nimport { SpacingProps } from '../space/types'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { FormStatusState, FormStatusText } from '../FormStatus'\nimport { useMultiInputValue } from './hooks/useMultiInputValues'\n\nexport type MultiInputMaskInput<T extends string> = {\n /**\n * Defines the id for the input. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` paramaters.\n */\n id: T\n /**\n * Label used by the input. The label itself is hidden, but required to uphold accesability standards for screen readers.\n */\n label: React.ReactNode\n /**\n * Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The length sets the size of the input, so an array of two items would produce an input of two characters\n */\n mask: RegExp[]\n /**\n * Sets the placeholder character used for the input.\n */\n placeholderCharacter: string\n}\n\nexport type MultiInputMaskValue<T extends string> = {\n // eslint-disable-next-line no-unused-vars\n [K in T]: string\n}\n\nexport type MultiInputMaskProps<T extends string> = {\n /**\n * The label describing the group of inputs inside the components.\n */\n label?: React.ReactNode\n /**\n * Use to change the label layout direction. Defaults to `horizontal`.\n */\n labelDirection?: 'vertical' | 'horizontal'\n /**\n * Used to define the different inputs representing the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`\n */\n inputs: MultiInputMaskInput<T>[]\n /**\n * Values used for the inputs inside the component. Expects an object with keys matching the id's defined in `inputs`\n */\n values?: MultiInputMaskValue<T>\n /**\n * Defines the delimiter used to seperate the inputs inside the component.\n */\n delimiter?: string\n /**\n * Runs when the input value changes. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`\n */\n onChange?: (values: MultiInputMaskValue<T>) => void\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n} & Omit<\n React.HTMLProps<HTMLInputElement>,\n 'onChange' | 'ref' | 'value' | 'label'\n> &\n SpacingProps\n\nfunction MultiInputMask<T extends string>({\n label,\n labelDirection = 'horizontal',\n inputs,\n delimiter,\n onChange: onChangeExternal,\n disabled,\n status,\n statusState,\n values: defaultValues,\n className,\n ...props\n}: MultiInputMaskProps<T>) {\n const [values, onChange] = useMultiInputValue({\n inputs,\n defaultValues,\n callback: onChangeExternal,\n })\n\n const inputRefs = useRef<Array<MutableRefObject<HTMLInputElement>>>([])\n\n const { onKeyDown } = useHandleCursorPosition(\n inputRefs.current,\n getKeysToHandle()\n )\n\n const WrapperElement = label ? 'fieldset' : 'div'\n\n return (\n <WrapperElement\n className={classnames(\n 'dnb-multi-input-mask__fieldset',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__fieldset--horizontal',\n createSpacingClasses(props)\n )}\n >\n {label && (\n <FormLabel\n className={classnames(\n 'dnb-multi-input-mask__legend',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__legend--horizontal'\n )}\n element=\"legend\"\n onClick={onLegendClick}\n disabled={disabled}\n vertical={labelDirection === 'vertical'}\n >\n {/* This <span/> wrapper is needed to make hover work in Safari Desktop */}\n <span>{label}</span>\n </FormLabel>\n )}\n <Input\n {...props}\n className={classnames('dnb-multi-input-mask', className)}\n disabled={disabled}\n status={status}\n status_state={statusState}\n input_element={inputs.map((input, index) => (\n <Fragment key={input.id}>\n <MultiInputMaskInput\n {...input}\n value={values[input.id]}\n delimiter={\n index !== inputs.length - 1 ? delimiter : undefined\n }\n onKeyDown={onKeyDown}\n onChange={onChange}\n disabled={disabled}\n inputRef={getInputRef}\n />\n </Fragment>\n ))}\n />\n </WrapperElement>\n )\n\n // Event handlers\n function onLegendClick() {\n if (disabled) {\n return\n }\n\n const firstInput = inputRefs.current[0].current\n\n firstInput.focus()\n firstInput.setSelectionRange(0, 0)\n }\n\n // Utilites\n function getInputRef(ref: any) {\n const inputRef = ref?.inputRef\n\n if (inputRef && !inputRefs.current.includes(inputRef)) {\n inputRefs.current.push(inputRef)\n }\n }\n\n function getKeysToHandle() {\n const uniqueMasks = getUniqueMasks()\n\n // Return the only one RegExp since all the inputs are using the same mask\n if (uniqueMasks.size === 1) {\n const pattern = uniqueMasks.values().next().value.replace(/\\//g, '')\n return new RegExp(pattern)\n }\n\n // If there are multiple types of masks used, then map the maps to an object based on input ids\n // So that useHandleCursorPosition can do a per character test to see if the pressed key should be handeled or not\n return inputs.reduce(\n (keys, { id, mask }) => {\n keys[`${id}__input`] = mask\n\n return keys\n },\n {} as Record<`${T}__input`, RegExp[]>\n )\n }\n\n function getUniqueMasks() {\n const masks = new Set()\n\n inputs.forEach((input) => {\n input.mask.forEach((pattern) => masks.add(String(pattern)))\n })\n\n return masks\n }\n}\n\ntype MultiInputMaskInputProps<T extends string> =\n MultiInputMaskInput<T> & {\n id: MultiInputMaskInput<T>['id']\n label: MultiInputMaskInput<T>['label']\n value: string\n mask: MultiInputMaskInput<T>['mask']\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n delimiter?: MultiInputMaskProps<T>['delimiter']\n disabled: boolean\n onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void\n onChange: (\n id: string,\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n ) => void\n inputRef: any\n }\n\nfunction MultiInputMaskInput<T extends string>({\n id,\n label,\n value,\n mask,\n placeholderCharacter,\n delimiter,\n disabled,\n inputRef,\n onKeyDown,\n onChange,\n}: MultiInputMaskInputProps<T>) {\n return (\n <>\n <TextMask\n id={`${id}__input`}\n className={classnames(\n 'dnb-input__input',\n 'dnb-multi-input-mask__input',\n value && 'dnb-multi-input-mask__input--highlight'\n )}\n disabled={disabled}\n size={mask.length}\n mask={mask}\n value={value ?? ''}\n placeholderChar={placeholderCharacter}\n guide={true}\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n aria-labelledby={`${id}__label`}\n ref={inputRef}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onChange={(event) => {\n onChange(\n id,\n removePlaceholder(event.target.value, placeholderCharacter)\n )\n }}\n />\n <label id={`${id}__label`} htmlFor={`${id}__input`} hidden>\n {label}\n </label>\n {delimiter && (\n <span\n aria-hidden\n className={classnames(\n 'dnb-multi-input-mask__delimiter',\n value && 'dnb-multi-input-mask__delimiter--highlight'\n )}\n >\n {delimiter}\n </span>\n )}\n </>\n )\n\n function removePlaceholder(value: string, placeholder: string) {\n return value.replace(RegExp(placeholder, 'gm'), '')\n }\n\n function onFocus({ target }: React.FocusEvent<HTMLInputElement>) {\n target.focus()\n target.select()\n }\n}\n\nexport default MultiInputMask\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ export type TextMaskInputElement =
13
13
  export type TextMaskValue = string | number;
14
14
  export interface TextMaskProps extends React.HTMLProps<HTMLElement> {
15
15
  mask: TextMaskMask;
16
- inputRef?: Record<string, unknown>;
16
+ inputRef?: React.MutableRefObject<HTMLInputElement>;
17
17
  inputElement?: TextMaskInputElement;
18
18
  onChange?: (...args: any[]) => any;
19
19
  guide?: boolean;
@@ -0,0 +1,7 @@
1
+ import { MutableRefObject } from 'react';
2
+ declare function useHandleCursorPosition(inputRefs: MutableRefObject<HTMLInputElement>[], keysToHandle?: RegExp | {
3
+ [inputId: string]: RegExp[];
4
+ }): {
5
+ onKeyDown: (event: React.KeyboardEvent) => void;
6
+ };
7
+ export default useHandleCursorPosition;
@@ -0,0 +1,106 @@
1
+ import { useEffect, useRef } from 'react';
2
+ function useHandleCursorPosition(inputRefs, keysToHandle) {
3
+ const inputList = useRef(refsToInputList(inputRefs));
4
+ useEffect(() => {
5
+ inputList.current = refsToInputList(inputRefs);
6
+ }, [inputRefs]);
7
+ function onKeyDown(event) {
8
+ var _getKeysToHandle;
9
+ const inputs = inputList.current;
10
+ const input = event.target;
11
+ const pressedKey = event.key;
12
+ const hasPressedKeysToHandle = ((_getKeysToHandle = getKeysToHandle({
13
+ keysToHandle,
14
+ input
15
+ })) === null || _getKeysToHandle === void 0 ? void 0 : _getKeysToHandle.test(pressedKey)) || /(ArrowRight|ArrowLeft|Backspace)/.test(pressedKey);
16
+ const initialSelectionStart = input.selectionStart;
17
+ const inputPosition = getInputPosition(input, inputs);
18
+ window.requestAnimationFrame(() => {
19
+ const caretPosition = getCaretPosition(input);
20
+ if (!hasPressedKeysToHandle) {
21
+ return;
22
+ }
23
+ if (caretPosition === 'last' && inputPosition !== 'last' && !(initialSelectionStart === 1 && pressedKey === 'ArrowRight')) {
24
+ return goToInput('next', input, inputs);
25
+ }
26
+ if (caretPosition === 'first' && inputPosition !== 'first' && !(initialSelectionStart === 1 && (pressedKey === 'ArrowLeft' || pressedKey === 'Backspace'))) {
27
+ return goToInput('previous', input, inputs);
28
+ }
29
+ });
30
+ }
31
+ return {
32
+ onKeyDown
33
+ };
34
+ }
35
+ function refsToInputList(inputRefs) {
36
+ return inputRefs.map(ref => ref.current).filter(Boolean);
37
+ }
38
+ function getKeysToHandle(_ref) {
39
+ let {
40
+ keysToHandle,
41
+ input
42
+ } = _ref;
43
+ if (!keysToHandle) {
44
+ return undefined;
45
+ }
46
+ if (keysToHandle instanceof RegExp) {
47
+ return keysToHandle;
48
+ }
49
+ const masks = keysToHandle[input.id];
50
+ const selection = input.selectionStart === input.selectionEnd ? input.selectionStart : undefined;
51
+ if (!selection) {
52
+ return undefined;
53
+ }
54
+ const maskIndex = selection === input.size ? masks.length - 1 : selection;
55
+ return masks[maskIndex];
56
+ }
57
+ function getInputPosition(input, inputs) {
58
+ const firstInput = inputs[0];
59
+ const lastInput = inputs[inputs.length - 1];
60
+ if (input === firstInput) {
61
+ return 'first';
62
+ }
63
+ if (input === lastInput) {
64
+ return 'last';
65
+ }
66
+ return 'non-initial';
67
+ }
68
+ function getSelectionPositions(input) {
69
+ return {
70
+ start: 0,
71
+ end: Number(input.size)
72
+ };
73
+ }
74
+ function getCaretPosition(input) {
75
+ const {
76
+ start,
77
+ end
78
+ } = getSelectionPositions(input);
79
+ const selectionStart = input.selectionStart;
80
+ const selectionEnd = input.selectionEnd;
81
+ if (selectionStart === start && selectionEnd === start) {
82
+ return 'first';
83
+ }
84
+ if (selectionStart === end && selectionEnd === end) {
85
+ return 'last';
86
+ }
87
+ return 'non-initial';
88
+ }
89
+ function goToInput(to, input, inputs) {
90
+ const currentInputIndex = inputs.indexOf(input);
91
+ const siblingIndex = to === 'next' ? currentInputIndex + 1 : to === 'previous' ? currentInputIndex - 1 : 0;
92
+ const siblingInput = inputs[siblingIndex];
93
+ const {
94
+ start,
95
+ end
96
+ } = getSelectionPositions(siblingInput);
97
+ siblingInput.focus();
98
+ if (to === 'next') {
99
+ return siblingInput.setSelectionRange(start, start);
100
+ }
101
+ if (to === 'previous') {
102
+ return siblingInput.setSelectionRange(end, end);
103
+ }
104
+ }
105
+ export default useHandleCursorPosition;
106
+ //# sourceMappingURL=useHandleCursorPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHandleCursorPosition.js","names":["useEffect","useRef","useHandleCursorPosition","inputRefs","keysToHandle","inputList","refsToInputList","current","onKeyDown","event","_getKeysToHandle","inputs","input","target","pressedKey","key","hasPressedKeysToHandle","getKeysToHandle","test","initialSelectionStart","selectionStart","inputPosition","getInputPosition","window","requestAnimationFrame","caretPosition","getCaretPosition","goToInput","map","ref","filter","Boolean","_ref","undefined","RegExp","masks","id","selection","selectionEnd","maskIndex","size","length","firstInput","lastInput","getSelectionPositions","start","end","Number","to","currentInputIndex","indexOf","siblingIndex","siblingInput","focus","setSelectionRange"],"sources":["../../../../../src/components/input-masked/hooks/useHandleCursorPosition.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react'\n\nfunction useHandleCursorPosition(\n inputRefs: MutableRefObject<HTMLInputElement>[],\n keysToHandle?: RegExp | { [inputId: string]: RegExp[] }\n) {\n const inputList = useRef(refsToInputList(inputRefs))\n\n // To keep the refs.current in synch with component of use, or else it wont be possible to navigate to the next input, without triggering a re-render first.\n useEffect(() => {\n inputList.current = refsToInputList(inputRefs)\n }, [inputRefs])\n\n function onKeyDown(event: React.KeyboardEvent) {\n const inputs = inputList.current\n const input = event.target as HTMLInputElement\n\n const pressedKey = event.key\n\n const hasPressedKeysToHandle =\n getKeysToHandle({ keysToHandle, input })?.test(pressedKey) ||\n /(ArrowRight|ArrowLeft|Backspace)/.test(pressedKey)\n\n const initialSelectionStart = input.selectionStart\n\n const inputPosition = getInputPosition(input, inputs)\n\n window.requestAnimationFrame(() => {\n const caretPosition = getCaretPosition(input)\n\n if (!hasPressedKeysToHandle) {\n return // stop here\n }\n\n if (\n caretPosition === 'last' &&\n inputPosition !== 'last' &&\n !(initialSelectionStart === 1 && pressedKey === 'ArrowRight')\n ) {\n return goToInput('next', input, inputs)\n }\n\n if (\n caretPosition === 'first' &&\n inputPosition !== 'first' &&\n !(\n initialSelectionStart === 1 &&\n (pressedKey === 'ArrowLeft' || pressedKey === 'Backspace')\n )\n ) {\n return goToInput('previous', input, inputs)\n }\n })\n }\n\n return { onKeyDown }\n}\n\n// Helpers\nfunction refsToInputList(inputRefs: MutableRefObject<HTMLInputElement>[]) {\n return inputRefs.map((ref) => ref.current).filter(Boolean)\n}\n\ntype GetKeysToHandleParams = {\n keysToHandle: RegExp | { [inputId: string]: RegExp[] }\n input: HTMLInputElement\n}\n\nfunction getKeysToHandle({ keysToHandle, input }: GetKeysToHandleParams) {\n if (!keysToHandle) {\n return undefined\n }\n\n if (keysToHandle instanceof RegExp) {\n return keysToHandle\n }\n\n const masks = keysToHandle[input.id]\n\n const selection =\n input.selectionStart === input.selectionEnd\n ? input.selectionStart\n : undefined\n\n if (!selection) {\n return undefined\n }\n\n const maskIndex = selection === input.size ? masks.length - 1 : selection\n\n return masks[maskIndex]\n}\n\nfunction getInputPosition(\n input: HTMLInputElement,\n inputs: HTMLInputElement[]\n) {\n const firstInput = inputs[0]\n const lastInput = inputs[inputs.length - 1]\n\n if (input === firstInput) {\n return 'first'\n }\n\n if (input === lastInput) {\n return 'last'\n }\n\n return 'non-initial'\n}\n\nfunction getSelectionPositions(input: HTMLInputElement) {\n return { start: 0, end: Number(input.size) }\n}\n\nfunction getCaretPosition(input: HTMLInputElement) {\n const { start, end } = getSelectionPositions(input)\n\n const selectionStart = input.selectionStart\n const selectionEnd = input.selectionEnd\n\n if (selectionStart === start && selectionEnd === start) {\n return 'first'\n }\n\n if (selectionStart === end && selectionEnd === end) {\n return 'last'\n }\n\n return 'non-initial'\n}\n\nfunction goToInput(\n to: 'next' | 'previous',\n input: HTMLInputElement,\n inputs: HTMLInputElement[]\n) {\n const currentInputIndex = inputs.indexOf(input)\n\n const siblingIndex =\n to === 'next'\n ? currentInputIndex + 1\n : to === 'previous'\n ? currentInputIndex - 1\n : 0\n\n const siblingInput = inputs[siblingIndex]\n\n const { start, end } = getSelectionPositions(siblingInput)\n\n siblingInput.focus()\n\n if (to === 'next') {\n return siblingInput.setSelectionRange(start, start)\n }\n\n if (to === 'previous') {\n return siblingInput.setSelectionRange(end, end)\n }\n}\n\nexport default useHandleCursorPosition\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { MultiInputMaskProps, MultiInputMaskValue } from '../MultiInputMask';
2
+ type SteppedValuesHook<T extends string> = {
3
+ inputs: MultiInputMaskProps<T>['inputs'];
4
+ defaultValues?: MultiInputMaskProps<T>['values'];
5
+ callback?: (values: MultiInputMaskProps<T>['values']) => void;
6
+ };
7
+ export declare function useMultiInputValue<T extends string>({ inputs, defaultValues, callback, }: SteppedValuesHook<T>): readonly [MultiInputMaskValue<T>, (id: string, value: string) => void];
8
+ export {};