@dnb/eufemia 10.30.0 → 10.30.2

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/checkbox/Checkbox.d.ts +1 -1
  3. package/cjs/components/checkbox/Checkbox.js +6 -3
  4. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  5. package/cjs/components/flex/style/dnb-flex.css +4 -0
  6. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  7. package/cjs/components/flex/style/flex-stack.scss +3 -0
  8. package/cjs/components/height-animation/HeightAnimationInstance.js +4 -3
  9. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  10. package/cjs/components/table/useTableAnimationHandler.js +1 -1
  11. package/cjs/components/table/useTableAnimationHandler.js.map +1 -1
  12. package/cjs/extensions/forms/DataContext/Provider/Provider.js +8 -1
  13. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  14. package/cjs/extensions/forms/Form/FieldProps/FieldProps.d.ts +2 -0
  15. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js +27 -20
  16. package/cjs/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  17. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +3 -2
  18. package/cjs/extensions/forms/Form/Visibility/Visibility.js +16 -10
  19. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  20. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +17 -1
  21. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  22. package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js +7 -5
  23. package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  24. package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +1 -1
  25. package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js +7 -5
  26. package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  27. package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js +8 -6
  28. package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  29. package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js +7 -5
  30. package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  31. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +2 -2
  32. package/cjs/extensions/forms/hooks/useFieldProps.js +5 -3
  33. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -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/helpers/assignPropsWithContext.js +6 -1
  38. package/cjs/shared/helpers/assignPropsWithContext.js.map +1 -1
  39. package/cjs/shared/helpers/runCssVersionMismatchWarning.js +0 -1
  40. package/cjs/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  41. package/cjs/style/core/scopes.scss +1 -1
  42. package/cjs/style/dnb-ui-basis.css +1 -1
  43. package/cjs/style/dnb-ui-basis.min.css +1 -1
  44. package/cjs/style/dnb-ui-body.css +1 -1
  45. package/cjs/style/dnb-ui-body.min.css +1 -1
  46. package/cjs/style/dnb-ui-components.css +4 -0
  47. package/cjs/style/dnb-ui-components.min.css +1 -1
  48. package/cjs/style/dnb-ui-core.css +1 -1
  49. package/cjs/style/dnb-ui-core.min.css +1 -1
  50. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +4 -0
  51. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  52. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +4 -0
  53. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  54. package/cjs/style/themes/theme-ui/ui-theme-components.css +4 -0
  55. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  56. package/components/checkbox/Checkbox.d.ts +1 -1
  57. package/components/checkbox/Checkbox.js +6 -3
  58. package/components/checkbox/Checkbox.js.map +1 -1
  59. package/components/flex/style/dnb-flex.css +4 -0
  60. package/components/flex/style/dnb-flex.min.css +1 -1
  61. package/components/flex/style/flex-stack.scss +3 -0
  62. package/components/height-animation/HeightAnimationInstance.js +4 -3
  63. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  64. package/components/table/useTableAnimationHandler.js +1 -1
  65. package/components/table/useTableAnimationHandler.js.map +1 -1
  66. package/es/components/checkbox/Checkbox.d.ts +1 -1
  67. package/es/components/checkbox/Checkbox.js +6 -3
  68. package/es/components/checkbox/Checkbox.js.map +1 -1
  69. package/es/components/flex/style/dnb-flex.css +4 -0
  70. package/es/components/flex/style/dnb-flex.min.css +1 -1
  71. package/es/components/flex/style/flex-stack.scss +3 -0
  72. package/es/components/height-animation/HeightAnimationInstance.js +4 -3
  73. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  74. package/es/components/table/useTableAnimationHandler.js +1 -1
  75. package/es/components/table/useTableAnimationHandler.js.map +1 -1
  76. package/es/extensions/forms/DataContext/Provider/Provider.js +8 -1
  77. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  78. package/es/extensions/forms/Form/FieldProps/FieldProps.d.ts +2 -0
  79. package/es/extensions/forms/Form/FieldProps/FieldProps.js +27 -20
  80. package/es/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  81. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +3 -2
  82. package/es/extensions/forms/Form/Visibility/Visibility.js +16 -10
  83. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  84. package/es/extensions/forms/ValueBlock/ValueBlock.js +18 -2
  85. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  86. package/es/extensions/forms/Wizard/hooks/useNextRouter.js +5 -4
  87. package/es/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  88. package/es/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +1 -1
  89. package/es/extensions/forms/Wizard/hooks/useQueryLocator.js +6 -5
  90. package/es/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  91. package/es/extensions/forms/Wizard/hooks/useReachRouter.js +6 -5
  92. package/es/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  93. package/es/extensions/forms/Wizard/hooks/useReactRouter.js +5 -4
  94. package/es/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  95. package/es/extensions/forms/hooks/useFieldProps.d.ts +2 -2
  96. package/es/extensions/forms/hooks/useFieldProps.js +5 -3
  97. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  98. package/es/shared/Eufemia.d.ts +1 -1
  99. package/es/shared/Eufemia.js +2 -2
  100. package/es/shared/Eufemia.js.map +1 -1
  101. package/es/shared/helpers/assignPropsWithContext.js +4 -1
  102. package/es/shared/helpers/assignPropsWithContext.js.map +1 -1
  103. package/es/shared/helpers/runCssVersionMismatchWarning.js +0 -1
  104. package/es/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  105. package/es/style/core/scopes.scss +1 -1
  106. package/es/style/dnb-ui-basis.css +1 -1
  107. package/es/style/dnb-ui-basis.min.css +1 -1
  108. package/es/style/dnb-ui-body.css +1 -1
  109. package/es/style/dnb-ui-body.min.css +1 -1
  110. package/es/style/dnb-ui-components.css +4 -0
  111. package/es/style/dnb-ui-components.min.css +1 -1
  112. package/es/style/dnb-ui-core.css +1 -1
  113. package/es/style/dnb-ui-core.min.css +1 -1
  114. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +4 -0
  115. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  116. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +4 -0
  117. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  118. package/es/style/themes/theme-ui/ui-theme-components.css +4 -0
  119. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  120. package/esm/dnb-ui-basis.min.mjs +1 -1
  121. package/esm/dnb-ui-components.min.mjs +1 -1
  122. package/esm/dnb-ui-elements.min.mjs +1 -1
  123. package/esm/dnb-ui-extensions.min.mjs +3 -3
  124. package/esm/dnb-ui-lib.min.mjs +1 -1
  125. package/extensions/forms/DataContext/Provider/Provider.js +8 -1
  126. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  127. package/extensions/forms/Form/FieldProps/FieldProps.d.ts +2 -0
  128. package/extensions/forms/Form/FieldProps/FieldProps.js +27 -20
  129. package/extensions/forms/Form/FieldProps/FieldProps.js.map +1 -1
  130. package/extensions/forms/Form/Visibility/Visibility.d.ts +3 -2
  131. package/extensions/forms/Form/Visibility/Visibility.js +16 -10
  132. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  133. package/extensions/forms/ValueBlock/ValueBlock.js +18 -2
  134. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  135. package/extensions/forms/Wizard/hooks/useNextRouter.js +7 -5
  136. package/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -1
  137. package/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +1 -1
  138. package/extensions/forms/Wizard/hooks/useQueryLocator.js +7 -5
  139. package/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -1
  140. package/extensions/forms/Wizard/hooks/useReachRouter.js +8 -6
  141. package/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -1
  142. package/extensions/forms/Wizard/hooks/useReactRouter.js +7 -5
  143. package/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -1
  144. package/extensions/forms/hooks/useFieldProps.d.ts +2 -2
  145. package/extensions/forms/hooks/useFieldProps.js +5 -3
  146. package/extensions/forms/hooks/useFieldProps.js.map +1 -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/helpers/assignPropsWithContext.js +4 -1
  152. package/shared/helpers/assignPropsWithContext.js.map +1 -1
  153. package/shared/helpers/runCssVersionMismatchWarning.js +0 -1
  154. package/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
  155. package/style/core/scopes.scss +1 -1
  156. package/style/dnb-ui-basis.css +1 -1
  157. package/style/dnb-ui-basis.min.css +1 -1
  158. package/style/dnb-ui-body.css +1 -1
  159. package/style/dnb-ui-body.min.css +1 -1
  160. package/style/dnb-ui-components.css +4 -0
  161. package/style/dnb-ui-components.min.css +1 -1
  162. package/style/dnb-ui-core.css +1 -1
  163. package/style/dnb-ui-core.min.css +1 -1
  164. package/style/themes/theme-eiendom/eiendom-theme-components.css +4 -0
  165. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  166. package/style/themes/theme-sbanken/sbanken-theme-components.css +4 -0
  167. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  168. package/style/themes/theme-ui/ui-theme-components.css +4 -0
  169. package/style/themes/theme-ui/ui-theme-components.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 +2 -2
  174. package/umd/dnb-ui-lib.min.js +1 -1
@@ -78,7 +78,7 @@ export type CheckboxProps = {
78
78
  type DeprecatedCheckboxProps = {
79
79
  /** @deprecated use the `label` prop instead */
80
80
  children?: React.ReactNode;
81
- /** @deprecated use `onComplete` */
81
+ /** @deprecated use `onChange` */
82
82
  on_change?: (args: OnChangeParams) => void;
83
83
  /** @deprecated use `labelPosition` */
84
84
  label_position?: CheckboxLabelPosition;
@@ -72,7 +72,7 @@ function Checkbox(localProps) {
72
72
  const callOnChange = useCallback(args => {
73
73
  onChange === null || onChange === void 0 ? void 0 : onChange(args);
74
74
  }, [onChange]);
75
- const onChangeHandler = useCallback(event => {
75
+ const handleChange = useCallback(event => {
76
76
  if (readOnly) {
77
77
  return event.preventDefault();
78
78
  }
@@ -86,13 +86,16 @@ function Checkbox(localProps) {
86
86
  ref.current.focus();
87
87
  }
88
88
  }, [callOnChange, isChecked, readOnly, ref]);
89
+ const onChangeHandler = useCallback(event => {
90
+ handleChange(event);
91
+ }, [handleChange]);
89
92
  const onKeyDownHandler = useCallback(event => {
90
93
  switch (keycode(event)) {
91
94
  case 'enter':
92
- onChangeHandler(event);
95
+ handleChange(event);
93
96
  break;
94
97
  }
95
- }, [onChangeHandler]);
98
+ }, [handleChange]);
96
99
  const mainParams = {
97
100
  className: classnames("dnb-checkbox dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(props), className, status && `dnb-checkbox__status--${statusState}`, size && `dnb-checkbox--${size}`, label && `dnb-checkbox--label-position-${labelPosition || 'right'}`)
98
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["React","useCallback","useContext","useEffect","useRef","useState","classnames","keycode","validateDOMAttributes","getStatusState","combineDescribedBy","extendPropsWithContext","AlignmentHelper","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","useId","pickFormElementProps","convertSnakeCaseProps","FormLabel","FormStatus","CheckIcon","defaultProps","statusState","Checkbox","localProps","context","props","extractPropsFromContext","value","status","statusProps","statusNoAnimation","globalStatus","suffix","size","label","labelPosition","labelSrOnly","title","element","disabled","readOnly","skeleton","className","id","idProp","checked","onChange","innerRef","rest","_objectWithoutProperties","_excluded","isFn","refHook","ref","current","isChecked","setIsChecked","prevChecked","setPrevChecked","callOnChange","args","onChangeHandler","event","preventDefault","updatedCheck","focus","onKeyDownHandler","mainParams","showStatus","inputParams","handleInputAttributes","statusComp","createElement","_extends","show","text_id","width_selector","text","state","no_animation","Element","forId","srOnly","_AlignmentHelper","name","type","onKeyDown","_span","_objectSpread","FormRow","formElement"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["/**\n * Web Checkbox Component\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\n\nimport {\n validateDOMAttributes,\n getStatusState,\n combineDescribedBy,\n extendPropsWithContext,\n} from '../../shared/component-helper'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\nimport useId from '../../shared/helpers/useId'\nimport type { SpacingProps } from '../space/types'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport type { GlobalStatusConfigObject } from '../GlobalStatus'\n\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport CheckIcon from './CheckIcon'\n\nexport type CheckboxLabelPosition = 'left' | 'right'\nexport type CheckboxSize = 'default' | 'medium' | 'large'\nexport type CheckboxAttributes = string | Record<string, unknown>\nexport type OnChangeParams = {\n checked: boolean\n event: React.ChangeEvent<HTMLInputElement>\n}\n\nexport type CheckboxProps = {\n /**\n * Use either the `label` property or provide a custom one.\n */\n label?: React.ReactNode\n /**\n * Defines the position of the `label`. Use either `left` or `right`. Defaults to `right`.\n */\n labelPosition?: CheckboxLabelPosition\n /**\n * Use `true` to make the label only readable by screen readers.\n */\n labelSrOnly?: boolean\n /**\n * The `title` of the input - describing it a bit further for accessibility reasons.\n */\n title?: string\n /**\n * Determine whether the checkbox is checked or not. The default is `false`.\n */\n checked?: boolean | undefined | null\n /**\n * The size of the checkbox. For now there is \"medium\" (default) and \"large\".\n */\n size?: CheckboxSize\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 /**\n * Use an object to define additional FormStatus properties. See [FormStatus](/uilib/components/form-status/properties/)\n */\n statusProps?: FormStatusProps\n statusNoAnimation?: boolean\n /**\n * The [configuration](/uilib/components/global-status/properties/#configuration-object) used for the target [GlobalStatus](/uilib/components/global-status)\n */\n globalStatus?: GlobalStatusConfigObject\n /**\n * Text describing the content of the Checkbox more than the label. You can also send in a React component, so it gets wrapped inside the Checkbox component.\n */\n suffix?: React.ReactNode\n value?: string\n element?: React.ElementType\n attributes?: CheckboxAttributes\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * Will be called on state changes made by the user. Returns an boolean `{ checked, event }`.\n */\n onChange?: (args: OnChangeParams) => void\n /**\n * By providing a React.ref we can get the internally used input element (DOM). E.g. `innerRef={myRef}` by using `React.createRef()` or `React.useRef()`.\n */\n innerRef?:\n | React.MutableRefObject<HTMLInputElement>\n | ((elem: HTMLInputElement) => void)\n} & SpacingProps &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n 'ref' | 'label' | 'size' | 'onChange'\n > &\n DeprecatedCheckboxProps\n\n// depracated, can be removed in v11\ntype DeprecatedCheckboxProps = {\n /** @deprecated use the `label` prop instead */\n children?: React.ReactNode\n /** @deprecated use `onComplete` */\n on_change?: (args: OnChangeParams) => void\n /** @deprecated use `labelPosition` */\n label_position?: CheckboxLabelPosition\n /** @deprecated use `labelSrOnly` */\n label_sr_only?: boolean\n /** @deprecated use `statusState` */\n status_state?: FormStatusState\n /** @deprecated use `statusProps` */\n status_props?: FormStatusProps\n /** @deprecated use `statusNoAnimation` */\n status_no_animation?: boolean\n}\n\nconst defaultProps: CheckboxProps = {\n statusState: 'error',\n}\n\nfunction Checkbox(localProps: CheckboxProps) {\n const context = useContext(Context)\n\n const props = extractPropsFromContext()\n\n const {\n value,\n status,\n statusState,\n statusProps,\n statusNoAnimation,\n globalStatus,\n suffix,\n size,\n label,\n labelPosition,\n labelSrOnly,\n title,\n element,\n disabled,\n readOnly,\n skeleton,\n className,\n id: idProp,\n checked,\n onChange,\n innerRef,\n ...rest\n } = props\n\n const id = useId(idProp)\n\n const isFn = typeof innerRef === 'function'\n const refHook = useRef<HTMLInputElement>()\n const ref = (!isFn && innerRef) || refHook\n\n useEffect(() => {\n if (isFn) {\n innerRef?.(ref.current)\n }\n }, [innerRef, isFn, ref])\n\n const [isChecked, setIsChecked] = useState<boolean>(checked ?? false)\n const [prevChecked, setPrevChecked] = useState<boolean>(checked)\n\n useEffect(() => {\n if (checked !== prevChecked) {\n setIsChecked(!!checked)\n setPrevChecked(!!checked)\n }\n }, [checked, prevChecked])\n\n const callOnChange = useCallback(\n (args: OnChangeParams) => {\n onChange?.(args)\n },\n [onChange]\n )\n\n const onChangeHandler = useCallback(\n (event) => {\n if (readOnly) {\n return event.preventDefault()\n }\n const updatedCheck = !isChecked\n\n setIsChecked(updatedCheck)\n callOnChange({ checked: updatedCheck, event })\n\n // help firefox and safari to have an correct state after a click\n if (ref.current) {\n ref.current.focus()\n }\n },\n [callOnChange, isChecked, readOnly, ref]\n )\n\n const onKeyDownHandler = useCallback(\n (event) => {\n switch (keycode(event)) {\n case 'enter':\n onChangeHandler(event)\n break\n }\n },\n [onChangeHandler]\n )\n\n const mainParams = {\n className: classnames(\n 'dnb-checkbox',\n status && `dnb-checkbox__status--${statusState}`,\n size && `dnb-checkbox--${size}`,\n label && `dnb-checkbox--label-position-${labelPosition || 'right'}`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n className\n ),\n }\n\n const showStatus = getStatusState(status)\n\n const inputParams = handleInputAttributes()\n\n const statusComp = (\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n width_selector={id + ', ' + id + '-label'}\n text={status}\n state={statusState}\n no_animation={statusNoAnimation}\n skeleton={skeleton}\n {...statusProps}\n />\n )\n\n const Element = element || 'input'\n\n return (\n <span {...mainParams}>\n <span className=\"dnb-checkbox__order\">\n {label && (\n <FormLabel\n id={id + '-label'}\n forId={id}\n text={label}\n disabled={disabled}\n skeleton={skeleton}\n srOnly={labelSrOnly}\n />\n )}\n\n <span className=\"dnb-checkbox__inner\">\n <AlignmentHelper />\n {labelPosition === 'left' && statusComp}\n\n <span className=\"dnb-checkbox__shell\">\n <Element\n id={id}\n name={id}\n type=\"checkbox\"\n title={title}\n className=\"dnb-checkbox__input\"\n value={isChecked ? value || '' : ''}\n disabled={disabled}\n {...inputParams}\n onChange={onChangeHandler}\n onKeyDown={onKeyDownHandler}\n ref={ref}\n />\n\n <span\n className={classnames(\n 'dnb-checkbox__button',\n createSkeletonClass('shape', skeleton, context)\n )}\n aria-hidden\n >\n <span className=\"dnb-checkbox__focus\" />\n </span>\n\n <CheckIcon size={size} />\n </span>\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-checkbox__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {(labelPosition === 'right' || !labelPosition) && statusComp}\n </span>\n )\n\n /**\n * Adds aria attributes, calls validateDOMAttributes and skeletonDOMAttributes and returns the result\n */\n function handleInputAttributes() {\n const inputParams = {\n disabled,\n checked: isChecked,\n readOnly,\n ...rest,\n }\n\n if (showStatus || suffix) {\n inputParams['aria-describedby'] = combineDescribedBy(\n inputParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n inputParams['aria-readonly'] = inputParams.readOnly = true\n }\n\n // also used for code markup simulation\n return validateDOMAttributes(\n props,\n skeletonDOMAttributes(inputParams, skeleton, context)\n )\n }\n\n function extractPropsFromContext() {\n return extendPropsWithContext(\n convertSnakeCaseProps(localProps),\n defaultProps,\n context.Checkbox,\n {\n skeleton: context?.Checkbox,\n },\n // Deprecated – can be removed in v11\n pickFormElementProps(context?.FormRow),\n pickFormElementProps(context?.formElement)\n )\n }\n}\n\nexport default Checkbox\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":["React","useCallback","useContext","useEffect","useRef","useState","classnames","keycode","validateDOMAttributes","getStatusState","combineDescribedBy","extendPropsWithContext","AlignmentHelper","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","useId","pickFormElementProps","convertSnakeCaseProps","FormLabel","FormStatus","CheckIcon","defaultProps","statusState","Checkbox","localProps","context","props","extractPropsFromContext","value","status","statusProps","statusNoAnimation","globalStatus","suffix","size","label","labelPosition","labelSrOnly","title","element","disabled","readOnly","skeleton","className","id","idProp","checked","onChange","innerRef","rest","_objectWithoutProperties","_excluded","isFn","refHook","ref","current","isChecked","setIsChecked","prevChecked","setPrevChecked","callOnChange","args","handleChange","event","preventDefault","updatedCheck","focus","onChangeHandler","onKeyDownHandler","mainParams","showStatus","inputParams","handleInputAttributes","statusComp","createElement","_extends","show","text_id","width_selector","text","state","no_animation","Element","forId","srOnly","_AlignmentHelper","name","type","onKeyDown","_span","_objectSpread","FormRow","formElement"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["/**\n * Web Checkbox Component\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\n\nimport {\n validateDOMAttributes,\n getStatusState,\n combineDescribedBy,\n extendPropsWithContext,\n} from '../../shared/component-helper'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\nimport useId from '../../shared/helpers/useId'\nimport type { SpacingProps } from '../space/types'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport type { GlobalStatusConfigObject } from '../GlobalStatus'\n\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport CheckIcon from './CheckIcon'\n\nexport type CheckboxLabelPosition = 'left' | 'right'\nexport type CheckboxSize = 'default' | 'medium' | 'large'\nexport type CheckboxAttributes = string | Record<string, unknown>\nexport type OnChangeParams = {\n checked: boolean\n event: React.ChangeEvent<HTMLInputElement>\n}\n\nexport type CheckboxProps = {\n /**\n * Use either the `label` property or provide a custom one.\n */\n label?: React.ReactNode\n /**\n * Defines the position of the `label`. Use either `left` or `right`. Defaults to `right`.\n */\n labelPosition?: CheckboxLabelPosition\n /**\n * Use `true` to make the label only readable by screen readers.\n */\n labelSrOnly?: boolean\n /**\n * The `title` of the input - describing it a bit further for accessibility reasons.\n */\n title?: string\n /**\n * Determine whether the checkbox is checked or not. The default is `false`.\n */\n checked?: boolean | undefined | null\n /**\n * The size of the checkbox. For now there is \"medium\" (default) and \"large\".\n */\n size?: CheckboxSize\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 /**\n * Use an object to define additional FormStatus properties. See [FormStatus](/uilib/components/form-status/properties/)\n */\n statusProps?: FormStatusProps\n statusNoAnimation?: boolean\n /**\n * The [configuration](/uilib/components/global-status/properties/#configuration-object) used for the target [GlobalStatus](/uilib/components/global-status)\n */\n globalStatus?: GlobalStatusConfigObject\n /**\n * Text describing the content of the Checkbox more than the label. You can also send in a React component, so it gets wrapped inside the Checkbox component.\n */\n suffix?: React.ReactNode\n value?: string\n element?: React.ElementType\n attributes?: CheckboxAttributes\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * Will be called on state changes made by the user. Returns an boolean `{ checked, event }`.\n */\n onChange?: (args: OnChangeParams) => void\n /**\n * By providing a React.ref we can get the internally used input element (DOM). E.g. `innerRef={myRef}` by using `React.createRef()` or `React.useRef()`.\n */\n innerRef?:\n | React.MutableRefObject<HTMLInputElement>\n | ((elem: HTMLInputElement) => void)\n} & SpacingProps &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n 'ref' | 'label' | 'size' | 'onChange'\n > &\n DeprecatedCheckboxProps\n\n// depracated, can be removed in v11\ntype DeprecatedCheckboxProps = {\n /** @deprecated use the `label` prop instead */\n children?: React.ReactNode\n /** @deprecated use `onChange` */\n on_change?: (args: OnChangeParams) => void\n /** @deprecated use `labelPosition` */\n label_position?: CheckboxLabelPosition\n /** @deprecated use `labelSrOnly` */\n label_sr_only?: boolean\n /** @deprecated use `statusState` */\n status_state?: FormStatusState\n /** @deprecated use `statusProps` */\n status_props?: FormStatusProps\n /** @deprecated use `statusNoAnimation` */\n status_no_animation?: boolean\n}\n\nconst defaultProps: CheckboxProps = {\n statusState: 'error',\n}\n\nfunction Checkbox(localProps: CheckboxProps) {\n const context = useContext(Context)\n\n const props = extractPropsFromContext()\n\n const {\n value,\n status,\n statusState,\n statusProps,\n statusNoAnimation,\n globalStatus,\n suffix,\n size,\n label,\n labelPosition,\n labelSrOnly,\n title,\n element,\n disabled,\n readOnly,\n skeleton,\n className,\n id: idProp,\n checked,\n onChange,\n innerRef,\n ...rest\n } = props\n\n const id = useId(idProp)\n\n const isFn = typeof innerRef === 'function'\n const refHook = useRef<HTMLInputElement>()\n const ref = (!isFn && innerRef) || refHook\n\n useEffect(() => {\n if (isFn) {\n innerRef?.(ref.current)\n }\n }, [innerRef, isFn, ref])\n\n const [isChecked, setIsChecked] = useState<boolean>(checked ?? false)\n const [prevChecked, setPrevChecked] = useState<boolean>(checked)\n\n useEffect(() => {\n if (checked !== prevChecked) {\n setIsChecked(!!checked)\n setPrevChecked(!!checked)\n }\n }, [checked, prevChecked])\n\n const callOnChange: CheckboxProps['onChange'] = useCallback(\n (args) => {\n onChange?.(args)\n },\n [onChange]\n )\n\n const handleChange = useCallback(\n (event: OnChangeParams['event']) => {\n if (readOnly) {\n return event.preventDefault()\n }\n const updatedCheck = !isChecked\n\n setIsChecked(updatedCheck)\n callOnChange({ checked: updatedCheck, event })\n\n // help firefox and safari to have an correct state after a click\n if (ref.current) {\n ref.current.focus()\n }\n },\n [callOnChange, isChecked, readOnly, ref]\n )\n\n const onChangeHandler = useCallback(\n (event: OnChangeParams['event']) => {\n handleChange(event)\n },\n [handleChange]\n )\n\n const onKeyDownHandler = useCallback(\n (event: KeyboardEvent & OnChangeParams['event']) => {\n switch (keycode(event)) {\n case 'enter':\n handleChange(event)\n break\n }\n },\n [handleChange]\n )\n\n const mainParams = {\n className: classnames(\n 'dnb-checkbox',\n status && `dnb-checkbox__status--${statusState}`,\n size && `dnb-checkbox--${size}`,\n label && `dnb-checkbox--label-position-${labelPosition || 'right'}`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n className\n ),\n }\n\n const showStatus = getStatusState(status)\n\n const inputParams = handleInputAttributes()\n\n const statusComp = (\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n width_selector={id + ', ' + id + '-label'}\n text={status}\n state={statusState}\n no_animation={statusNoAnimation}\n skeleton={skeleton}\n {...statusProps}\n />\n )\n\n const Element = element || 'input'\n\n return (\n <span {...mainParams}>\n <span className=\"dnb-checkbox__order\">\n {label && (\n <FormLabel\n id={id + '-label'}\n forId={id}\n text={label}\n disabled={disabled}\n skeleton={skeleton}\n srOnly={labelSrOnly}\n />\n )}\n\n <span className=\"dnb-checkbox__inner\">\n <AlignmentHelper />\n {labelPosition === 'left' && statusComp}\n\n <span className=\"dnb-checkbox__shell\">\n <Element\n id={id}\n name={id}\n type=\"checkbox\"\n title={title}\n className=\"dnb-checkbox__input\"\n value={isChecked ? value || '' : ''}\n disabled={disabled}\n {...inputParams}\n onChange={onChangeHandler}\n onKeyDown={onKeyDownHandler}\n ref={ref}\n />\n\n <span\n className={classnames(\n 'dnb-checkbox__button',\n createSkeletonClass('shape', skeleton, context)\n )}\n aria-hidden\n >\n <span className=\"dnb-checkbox__focus\" />\n </span>\n\n <CheckIcon size={size} />\n </span>\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-checkbox__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {(labelPosition === 'right' || !labelPosition) && statusComp}\n </span>\n )\n\n /**\n * Adds aria attributes, calls validateDOMAttributes and skeletonDOMAttributes and returns the result\n */\n function handleInputAttributes() {\n const inputParams = {\n disabled,\n checked: isChecked,\n readOnly,\n ...rest,\n }\n\n if (showStatus || suffix) {\n inputParams['aria-describedby'] = combineDescribedBy(\n inputParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n inputParams['aria-readonly'] = inputParams.readOnly = true\n }\n\n // also used for code markup simulation\n return validateDOMAttributes(\n props,\n skeletonDOMAttributes(inputParams, skeleton, context)\n )\n }\n\n function extractPropsFromContext() {\n return extendPropsWithContext(\n convertSnakeCaseProps(localProps),\n defaultProps,\n context.Checkbox,\n {\n skeleton: context?.Checkbox,\n },\n // Deprecated – can be removed in v11\n pickFormElementProps(context?.FormRow),\n pickFormElementProps(context?.formElement)\n )\n }\n}\n\nexport default Checkbox\n"],"mappings":"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"}
@@ -124,4 +124,8 @@
124
124
 
125
125
  .dnb-flex-stack + .dnb-flex-stack {
126
126
  margin-top: var(--spacing-small);
127
+ }
128
+
129
+ .dnb-flex-stack > .dnb-button {
130
+ align-self: flex-start;
127
131
  }
@@ -1 +1 @@
1
- .dnb-flex-container{display:flex;row-gap:var(--gap,0)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-off{--gap:0}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}
1
+ .dnb-flex-container{display:flex;row-gap:var(--gap,0)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-off{--gap:0}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}.dnb-flex-stack>.dnb-button{align-self:flex-start}
@@ -1,3 +1,6 @@
1
1
  .dnb-flex-stack + .dnb-flex-stack {
2
2
  margin-top: var(--spacing-small);
3
3
  }
4
+ .dnb-flex-stack > .dnb-button {
5
+ align-self: flex-start;
6
+ }
@@ -140,19 +140,17 @@ export default class HeightAnimation {
140
140
  if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {
141
141
  return this.__currentHeight;
142
142
  }
143
- const width = this.elem.clientWidth;
144
143
  const clonedElem = this.elem.cloneNode(true);
145
144
  const inputs = clonedElem.querySelectorAll('input');
146
145
  inputs.forEach(input => {
147
146
  input.removeAttribute('name');
148
147
  input.removeAttribute('id');
149
148
  });
150
- (_this$elem$parentNode = this.elem.parentNode) === null || _this$elem$parentNode === void 0 ? void 0 : _this$elem$parentNode.insertBefore(clonedElem, this.elem.nextSibling);
151
149
  for (const key in this.firstPaintStyle) {
152
150
  clonedElem.style[key] = this.firstPaintStyle[key];
153
151
  }
154
- clonedElem.style.width = width ? `${String(width)}px` : 'auto';
155
152
  clonedElem.style.position = 'absolute';
153
+ (_this$elem$parentNode = this.elem.parentNode) === null || _this$elem$parentNode === void 0 ? void 0 : _this$elem$parentNode.insertBefore(clonedElem, this.elem.nextSibling);
156
154
  const height = parseFloat(String(clonedElem.clientHeight)) || parseFloat(clonedElem.getAttribute('data-height')) || null;
157
155
  (_clonedElem$parentNod = clonedElem.parentNode) === null || _clonedElem$parentNod === void 0 ? void 0 : _clonedElem$parentNod.removeChild(clonedElem);
158
156
  if (height) {
@@ -207,6 +205,9 @@ export default class HeightAnimation {
207
205
  const toHeight = this.getUnknownHeight();
208
206
  this.addEndEvent(e => {
209
207
  if (e.target === e.currentTarget || !e.currentTarget) {
208
+ if (this.elem) {
209
+ this.elem.style.overflowY = '';
210
+ }
210
211
  this.setState('opened');
211
212
  this.readjust();
212
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HeightAnimationInstance.js","names":["HeightAnimation","constructor","opts","arguments","length","undefined","_defineProperty","animate","visibility","opacity","height","isInBrowser","window","setState","setOptions","callAnimationStart","startTime","Date","now","firstTime","onStartStack","forEach","fn","state","callAnimationEnd","isAnimating","__currentHeight","removeEndEvents","onEndStack","addEndEvent","listener","_this$elem","_this$elem$addEventLi","handleTransitionEnd","e","canFinish","delay","duration","timeouts","push","setTimeout","events","elem","addEventListener","call","_this$elem2","_this$elem2$removeEve","removeEventListener","setElement","_this$elem3","_globalThis$animation","document","createElement","String","nodeName","toLowerCase","parentElement","globalThis","animationDuration","parseFloat","getComputedStyle","transitionDuration","Object","freeze","_objectSpread","getOptions","remove","stop","setAsOpen","setAsClosed","getHeight","_this$elem4","clientHeight","getUnknownHeight","_this$elem$parentNode","_clonedElem$parentNod","width","clientWidth","clonedElem","cloneNode","inputs","querySelectorAll","input","removeAttribute","parentNode","insertBefore","nextSibling","key","firstPaintStyle","style","position","getAttribute","removeChild","onStart","onEnd","start","fromHeight","toHeight","requestAnimationFrame","reqId1","reqId2","id","clearTimeout","cancelAnimationFrame","open","shouldBypassAnimation","target","currentTarget","readjust","close","overflowY","adjustTo","endHeight","newHeight","_globalThis$animation2","Boolean","_globalThis$bypassTim","IS_TEST","bypassTime"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["export type HeightAnimationOnStartStates =\n | 'opening'\n | 'closing'\n | 'adjusting'\nexport type HeightAnimationOnEndStates = 'opened' | 'closed' | 'adjusted'\nexport type HeightAnimationStates =\n | HeightAnimationOnStartStates\n | HeightAnimationOnEndStates\n | 'init'\nexport type HeightAnimationOptions = {\n animate?: boolean\n}\nexport type HeightAnimationOnStartCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnEndCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnStartStack =\n Array<HeightAnimationOnStartCallback>\nexport type HeightAnimationOnEndStack = Array<HeightAnimationOnEndCallback>\nexport type HeightAnimationEventListener = (e: Event) => void\nexport type HeightAnimationEvents = Array<HeightAnimationEventListener>\nexport type HeightAnimationElement = HTMLElement\nexport type HeightAnimationContainer = HTMLElement\nexport type HeightAnimationFromHeight = number\nexport type HeightAnimationToHeight = number\n\nexport default class HeightAnimation {\n private state: Readonly<HeightAnimationStates>\n isInBrowser: boolean\n onStartStack: HeightAnimationOnStartStack = []\n onEndStack: HeightAnimationOnEndStack = []\n events: HeightAnimationEvents = []\n opts: HeightAnimationOptions = { animate: true }\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n timeouts: NodeJS.Timeout[] = []\n firstTime?: number = 0\n startTime?: number = 0\n duration?: number = 0\n isAnimating: boolean\n __currentHeight: number\n\n firstPaintStyle = {\n visibility: 'hidden',\n opacity: '0', // prevents before/after elements to be visible\n height: 'auto',\n }\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.setState('init')\n this.setOptions(opts)\n }\n\n callAnimationStart() {\n this.startTime = Date.now()\n if (!this.firstTime) {\n this.firstTime = this.startTime\n }\n if (this.onStartStack) {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n callAnimationEnd() {\n this.isAnimating = false\n\n if (this.state !== 'opened') {\n delete this.__currentHeight\n }\n\n this.removeEndEvents()\n\n if (this.onEndStack) {\n this.onEndStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n addEndEvent(listener: HeightAnimationEventListener) {\n this.removeEndEvents() // also, remove events on every open (but not on close!)\n\n const handleTransitionEnd = (e) => {\n if (this.canFinish()) {\n listener(e)\n } else {\n const delay = this.duration - (Date.now() - this.startTime)\n\n if (delay === -1) {\n listener(e)\n } else {\n this.timeouts.push(setTimeout(() => listener(e), delay))\n }\n }\n }\n\n this.events.push(handleTransitionEnd)\n this.elem?.addEventListener?.('transitionend', handleTransitionEnd)\n }\n removeEndEvents() {\n this.events.forEach((listener) => {\n this.elem?.removeEventListener?.('transitionend', listener)\n })\n this.events = []\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this.elem =\n elem ||\n (typeof document !== 'undefined' && document.createElement('div'))\n\n // TODO: remove when responsive tables are supported\n if (String(this.elem?.nodeName).toLowerCase() === 'td') {\n this.elem = this.elem.parentElement\n }\n\n this.duration =\n globalThis.animationDuration ??\n (parseFloat(window.getComputedStyle(this.elem).transitionDuration) *\n 1000 ||\n 400) // The default duration\n }\n setState(state: HeightAnimationStates) {\n this.state = Object.freeze(state)\n }\n setOptions(opts: HeightAnimationOptions) {\n this.opts = Object.freeze({ ...this.opts, ...opts })\n }\n getOptions() {\n return this.opts\n }\n remove() {\n this.stop()\n this.removeEndEvents()\n this.setState('init')\n this.isAnimating = false\n this.onEndStack = []\n this.onStartStack = []\n this.__currentHeight = undefined\n this.elem = undefined\n }\n setAsOpen() {\n if (this.state === 'opened') {\n return\n }\n this.setState('opening')\n this.callAnimationStart()\n this.setState('opened')\n this.callAnimationEnd()\n }\n setAsClosed() {\n if (this.state === 'closed') {\n return\n }\n this.setState('closing')\n this.callAnimationStart()\n this.setState('closed')\n this.callAnimationEnd()\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {\n return this.__currentHeight\n }\n\n const width = this.elem.clientWidth\n const clonedElem = this.elem.cloneNode(true) as HTMLElement\n const inputs = clonedElem.querySelectorAll('input')\n inputs.forEach((input) => {\n input.removeAttribute('name') // because type=\"radio\" will be else effected negatively\n input.removeAttribute('id') // don't put IDs twice in the DOM\n })\n this.elem.parentNode?.insertBefore(clonedElem, this.elem.nextSibling)\n\n for (const key in this.firstPaintStyle) {\n clonedElem.style[key] = this.firstPaintStyle[key]\n }\n clonedElem.style.width = width ? `${String(width)}px` : 'auto' // set width because of the \"position: absolute\"\n clonedElem.style.position = 'absolute' // not a part of the \"firstPaintStyle\"\n\n const height =\n parseFloat(String(clonedElem.clientHeight)) ||\n // data-height is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-height')) ||\n null\n\n clonedElem.parentNode?.removeChild(clonedElem)\n\n if (height) {\n this.__currentHeight = height\n }\n\n return height\n }\n onStart(fn: HeightAnimationOnStartCallback) {\n this.onStartStack.push(fn)\n }\n onEnd(fn: HeightAnimationOnEndCallback) {\n this.onEndStack.push(fn)\n }\n start(\n fromHeight: HeightAnimationFromHeight,\n toHeight: HeightAnimationToHeight\n ) {\n if (\n !this.elem ||\n !(\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n )\n ) {\n return\n }\n\n const opts = this.getOptions()\n if (opts.animate === false) {\n return\n }\n\n this.stop()\n this.isAnimating = true\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n stop() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n open() {\n if (\n this.state === 'opened' ||\n this.state === 'opening' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsOpen()\n return\n }\n\n this.setState('opening')\n this.callAnimationStart()\n\n const toHeight = this.getUnknownHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n this.setState('opened')\n this.readjust()\n }\n })\n\n this.start(0, toHeight)\n }\n close() {\n if (\n this.state === 'closed' ||\n this.state === 'closing' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsClosed()\n return\n }\n\n this.setState('closing')\n this.callAnimationStart()\n\n const fromHeight = this.getHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n this.elem.style.overflowY = 'clip'\n }\n this.setState('closed')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, 0)\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null\n ) {\n const opts = this.getOptions()\n\n if (\n !this.elem ||\n opts.animate === false ||\n this.state === 'opening' ||\n this.state === 'closing'\n ) {\n return\n }\n\n if (fromHeight === 0 || fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n if (fromHeight === toHeight) {\n this.setState('adjusted')\n return\n }\n\n this.setState('adjusting')\n this.callAnimationStart()\n\n this.addEndEvent((e) => {\n if (\n this.state === 'adjusting' &&\n (e.target === e.currentTarget || !e.currentTarget)\n ) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n this.setState('adjusted')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, toHeight)\n }\n readjust() {\n const endHeight = this.getHeight()\n\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.__currentHeight = undefined\n const newHeight = this.getUnknownHeight()\n\n // If the height has changed during the animation, we need to adjust it\n if (endHeight !== newHeight) {\n this.adjustTo(endHeight, newHeight)\n } else {\n this.callAnimationEnd()\n }\n }\n /**\n * Determines whether the animation can finish.\n * Check for certain states and if the time passed is too short.\n * With a so short first state change, we do not call animation end.\n */\n canFinish() {\n return Boolean(\n this.startTime &&\n Date.now() - this.startTime >\n (globalThis.animationDuration ?? this.duration)\n )\n }\n /**\n * Determines whether the animation should be bypassed.\n * Check for certain states and if the time passed is too short to be correct.\n * With a very short first state change, we skip animation.\n */\n shouldBypassAnimation() {\n const opts = this.getOptions()\n\n if (!this.elem || opts.animate === false) {\n return true\n }\n\n if (\n this.isInBrowser &&\n (globalThis.IS_TEST || globalThis.bypassTime === -1)\n ) {\n return false\n }\n\n return Boolean(\n this.firstTime &&\n Date.now() - this.firstTime < (globalThis.bypassTime ?? 100)\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeightAnimationInstance.js","names":["HeightAnimation","constructor","opts","arguments","length","undefined","_defineProperty","animate","visibility","opacity","height","isInBrowser","window","setState","setOptions","callAnimationStart","startTime","Date","now","firstTime","onStartStack","forEach","fn","state","callAnimationEnd","isAnimating","__currentHeight","removeEndEvents","onEndStack","addEndEvent","listener","_this$elem","_this$elem$addEventLi","handleTransitionEnd","e","canFinish","delay","duration","timeouts","push","setTimeout","events","elem","addEventListener","call","_this$elem2","_this$elem2$removeEve","removeEventListener","setElement","_this$elem3","_globalThis$animation","document","createElement","String","nodeName","toLowerCase","parentElement","globalThis","animationDuration","parseFloat","getComputedStyle","transitionDuration","Object","freeze","_objectSpread","getOptions","remove","stop","setAsOpen","setAsClosed","getHeight","_this$elem4","clientHeight","getUnknownHeight","_this$elem$parentNode","_clonedElem$parentNod","clonedElem","cloneNode","inputs","querySelectorAll","input","removeAttribute","key","firstPaintStyle","style","position","parentNode","insertBefore","nextSibling","getAttribute","removeChild","onStart","onEnd","start","fromHeight","toHeight","requestAnimationFrame","reqId1","reqId2","id","clearTimeout","cancelAnimationFrame","open","shouldBypassAnimation","target","currentTarget","overflowY","readjust","close","adjustTo","endHeight","newHeight","_globalThis$animation2","Boolean","_globalThis$bypassTim","IS_TEST","bypassTime"],"sources":["../../../../src/components/height-animation/HeightAnimationInstance.ts"],"sourcesContent":["export type HeightAnimationOnStartStates =\n | 'opening'\n | 'closing'\n | 'adjusting'\nexport type HeightAnimationOnEndStates = 'opened' | 'closed' | 'adjusted'\nexport type HeightAnimationStates =\n | HeightAnimationOnStartStates\n | HeightAnimationOnEndStates\n | 'init'\nexport type HeightAnimationOptions = {\n animate?: boolean\n}\nexport type HeightAnimationOnStartCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnEndCallback = (\n state: HeightAnimationStates\n) => void\nexport type HeightAnimationOnStartStack =\n Array<HeightAnimationOnStartCallback>\nexport type HeightAnimationOnEndStack = Array<HeightAnimationOnEndCallback>\nexport type HeightAnimationEventListener = (e: Event) => void\nexport type HeightAnimationEvents = Array<HeightAnimationEventListener>\nexport type HeightAnimationElement = HTMLElement\nexport type HeightAnimationContainer = HTMLElement\nexport type HeightAnimationFromHeight = number\nexport type HeightAnimationToHeight = number\n\nexport default class HeightAnimation {\n private state: Readonly<HeightAnimationStates>\n isInBrowser: boolean\n onStartStack: HeightAnimationOnStartStack = []\n onEndStack: HeightAnimationOnEndStack = []\n events: HeightAnimationEvents = []\n opts: HeightAnimationOptions = { animate: true }\n elem: HeightAnimationElement\n reqId1: number\n reqId2: number\n resizeTimeout: NodeJS.Timeout\n timeouts: NodeJS.Timeout[] = []\n firstTime?: number = 0\n startTime?: number = 0\n duration?: number = 0\n isAnimating: boolean\n __currentHeight: number\n\n firstPaintStyle = {\n visibility: 'hidden',\n opacity: '0', // prevents before/after elements to be visible\n height: 'auto',\n }\n\n constructor(opts: HeightAnimationOptions = {}) {\n this.isInBrowser = typeof window !== 'undefined'\n this.setState('init')\n this.setOptions(opts)\n }\n\n callAnimationStart() {\n this.startTime = Date.now()\n if (!this.firstTime) {\n this.firstTime = this.startTime\n }\n if (this.onStartStack) {\n this.onStartStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n callAnimationEnd() {\n this.isAnimating = false\n\n if (this.state !== 'opened') {\n delete this.__currentHeight\n }\n\n this.removeEndEvents()\n\n if (this.onEndStack) {\n this.onEndStack.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(this.state)\n }\n })\n }\n }\n addEndEvent(listener: HeightAnimationEventListener) {\n this.removeEndEvents() // also, remove events on every open (but not on close!)\n\n const handleTransitionEnd = (e) => {\n if (this.canFinish()) {\n listener(e)\n } else {\n const delay = this.duration - (Date.now() - this.startTime)\n\n if (delay === -1) {\n listener(e)\n } else {\n this.timeouts.push(setTimeout(() => listener(e), delay))\n }\n }\n }\n\n this.events.push(handleTransitionEnd)\n this.elem?.addEventListener?.('transitionend', handleTransitionEnd)\n }\n removeEndEvents() {\n this.events.forEach((listener) => {\n this.elem?.removeEventListener?.('transitionend', listener)\n })\n this.events = []\n }\n\n // Public methods\n setElement(elem: HeightAnimationElement) {\n this.elem =\n elem ||\n (typeof document !== 'undefined' && document.createElement('div'))\n\n // TODO: remove when responsive tables are supported\n if (String(this.elem?.nodeName).toLowerCase() === 'td') {\n this.elem = this.elem.parentElement\n }\n\n this.duration =\n globalThis.animationDuration ??\n (parseFloat(window.getComputedStyle(this.elem).transitionDuration) *\n 1000 ||\n 400) // The default duration\n }\n setState(state: HeightAnimationStates) {\n this.state = Object.freeze(state)\n }\n setOptions(opts: HeightAnimationOptions) {\n this.opts = Object.freeze({ ...this.opts, ...opts })\n }\n getOptions() {\n return this.opts\n }\n remove() {\n this.stop()\n this.removeEndEvents()\n this.setState('init')\n this.isAnimating = false\n this.onEndStack = []\n this.onStartStack = []\n this.__currentHeight = undefined\n this.elem = undefined\n }\n setAsOpen() {\n if (this.state === 'opened') {\n return\n }\n this.setState('opening')\n this.callAnimationStart()\n this.setState('opened')\n this.callAnimationEnd()\n }\n setAsClosed() {\n if (this.state === 'closed') {\n return\n }\n this.setState('closing')\n this.callAnimationStart()\n this.setState('closed')\n this.callAnimationEnd()\n }\n getHeight() {\n return parseFloat(String(this.elem?.clientHeight)) || null\n }\n getUnknownHeight() {\n if (!this.elem) {\n return null\n }\n\n if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {\n return this.__currentHeight\n }\n\n const clonedElem = this.elem.cloneNode(true) as HTMLElement\n const inputs = clonedElem.querySelectorAll('input')\n inputs.forEach((input) => {\n input.removeAttribute('name') // because type=\"radio\" will be else effected negatively\n input.removeAttribute('id') // don't put IDs twice in the DOM\n })\n\n // Hide the cloned element\n for (const key in this.firstPaintStyle) {\n clonedElem.style[key] = this.firstPaintStyle[key]\n }\n clonedElem.style.position = 'absolute' // not a part of the \"firstPaintStyle\"\n\n this.elem.parentNode?.insertBefore(clonedElem, this.elem.nextSibling)\n\n const height =\n parseFloat(String(clonedElem.clientHeight)) ||\n // data-height is used for mockup testing with \"mockHeight\"\n parseFloat(clonedElem.getAttribute('data-height')) ||\n null\n\n clonedElem.parentNode?.removeChild(clonedElem)\n\n if (height) {\n this.__currentHeight = height\n }\n\n return height\n }\n onStart(fn: HeightAnimationOnStartCallback) {\n this.onStartStack.push(fn)\n }\n onEnd(fn: HeightAnimationOnEndCallback) {\n this.onEndStack.push(fn)\n }\n start(\n fromHeight: HeightAnimationFromHeight,\n toHeight: HeightAnimationToHeight\n ) {\n if (\n !this.elem ||\n !(\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n )\n ) {\n return\n }\n\n const opts = this.getOptions()\n if (opts.animate === false) {\n return\n }\n\n this.stop()\n this.isAnimating = true\n\n // make the animation\n this.reqId1 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${fromHeight}px`\n\n this.reqId2 = window.requestAnimationFrame(() => {\n if (!this.elem) {\n return\n }\n\n this.elem.style.height = `${toHeight}px`\n })\n })\n }\n stop() {\n this.timeouts.forEach((id) => clearTimeout(id))\n this.timeouts = []\n\n if (\n this.isInBrowser &&\n typeof window.requestAnimationFrame === 'function'\n ) {\n window.cancelAnimationFrame(this.reqId1)\n window.cancelAnimationFrame(this.reqId2)\n }\n }\n open() {\n if (\n this.state === 'opened' ||\n this.state === 'opening' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsOpen()\n return\n }\n\n this.setState('opening')\n this.callAnimationStart()\n\n const toHeight = this.getUnknownHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.overflowY = ''\n }\n this.setState('opened')\n this.readjust()\n }\n })\n\n this.start(0, toHeight)\n }\n close() {\n if (\n this.state === 'closed' ||\n this.state === 'closing' ||\n this.shouldBypassAnimation()\n ) {\n this.setAsClosed()\n return\n }\n\n this.setState('closing')\n this.callAnimationStart()\n\n const fromHeight = this.getHeight()\n\n this.addEndEvent((e) => {\n if (e.target === e.currentTarget || !e.currentTarget) {\n if (this.elem) {\n this.elem.style.visibility = 'hidden'\n this.elem.style.overflowY = 'clip'\n }\n this.setState('closed')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, 0)\n }\n adjustTo(\n fromHeight: HeightAnimationFromHeight = null,\n toHeight: HeightAnimationToHeight = null\n ) {\n const opts = this.getOptions()\n\n if (\n !this.elem ||\n opts.animate === false ||\n this.state === 'opening' ||\n this.state === 'closing'\n ) {\n return\n }\n\n if (fromHeight === 0 || fromHeight === null) {\n fromHeight = this.getHeight()\n }\n if (toHeight === null) {\n toHeight = this.getUnknownHeight()\n }\n\n if (fromHeight === toHeight) {\n this.setState('adjusted')\n return\n }\n\n this.setState('adjusting')\n this.callAnimationStart()\n\n this.addEndEvent((e) => {\n if (\n this.state === 'adjusting' &&\n (e.target === e.currentTarget || !e.currentTarget)\n ) {\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n this.setState('adjusted')\n this.callAnimationEnd()\n }\n })\n\n this.start(fromHeight, toHeight)\n }\n readjust() {\n const endHeight = this.getHeight()\n\n if (this.elem) {\n this.elem.style.height = 'auto'\n }\n\n this.__currentHeight = undefined\n const newHeight = this.getUnknownHeight()\n\n // If the height has changed during the animation, we need to adjust it\n if (endHeight !== newHeight) {\n this.adjustTo(endHeight, newHeight)\n } else {\n this.callAnimationEnd()\n }\n }\n /**\n * Determines whether the animation can finish.\n * Check for certain states and if the time passed is too short.\n * With a so short first state change, we do not call animation end.\n */\n canFinish() {\n return Boolean(\n this.startTime &&\n Date.now() - this.startTime >\n (globalThis.animationDuration ?? this.duration)\n )\n }\n /**\n * Determines whether the animation should be bypassed.\n * Check for certain states and if the time passed is too short to be correct.\n * With a very short first state change, we skip animation.\n */\n shouldBypassAnimation() {\n const opts = this.getOptions()\n\n if (!this.elem || opts.animate === false) {\n return true\n }\n\n if (\n this.isInBrowser &&\n (globalThis.IS_TEST || globalThis.bypassTime === -1)\n ) {\n return false\n }\n\n return Boolean(\n this.firstTime &&\n Date.now() - this.firstTime < (globalThis.bypassTime ?? 100)\n )\n }\n}\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ export function useTableAnimationHandler(_ref) {
15
15
  const scrollViewHandler = useCallback(clip => {
16
16
  const scrollView = getClosestScrollViewElement(trRef.current);
17
17
  if (scrollView instanceof HTMLElement) {
18
- scrollView.style.overflow = clip ? 'clip' : '';
18
+ scrollView.style.overflowY = clip ? 'clip' : '';
19
19
  }
20
20
  }, [trRef]);
21
21
  const onOpen = useCallback(state => {
@@ -1 +1 @@
1
- {"version":3,"file":"useTableAnimationHandler.js","names":["React","useCallback","getClosestScrollViewElement","useHeightAnimation","TableAccordionContext","useTableAnimationHandler","_ref","innerRef","trRef","expanded","noAnimation","tableAccordionContext","useContext","ariaLive","setAriaLive","useState","open","Boolean","trIsOpen","scrollViewHandler","clip","scrollView","current","HTMLElement","style","overflow","onOpen","state","onAnimationStart","onAnimationEnd","_tableAccordionContex","_tableAccordionContex2","event","target","onOpened","call","onClosed","isInDOM","isAnimating","isVisibleParallax","firstPaintStyle","animate"],"sources":["../../../../src/components/table/useTableAnimationHandler.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { getClosestScrollViewElement } from '../../shared/component-helper'\nimport { useHeightAnimation } from '../height-animation/useHeightAnimation'\nimport { TableAccordionTrProps } from './TableAccordionTr'\nimport { TableAccordionContext } from './TableContext'\n\nexport type useTableAnimationHandlerProps = {\n /**\n * Ref to <div> inside the <tr> element being expanded/collapsed\n */\n innerRef: React.MutableRefObject<HTMLDivElement>\n /**\n * Ref to the <tr> element being clicked\n */\n trRef: React.MutableRefObject<HTMLTableRowElement>\n}\n\nexport function useTableAnimationHandler({\n innerRef,\n trRef,\n expanded,\n noAnimation,\n}: useTableAnimationHandlerProps & TableAccordionTrProps) {\n const tableAccordionContext = React.useContext(TableAccordionContext)\n const [ariaLive, setAriaLive] = React.useState(null)\n const open = Boolean(expanded || tableAccordionContext?.trIsOpen)\n\n const scrollViewHandler = useCallback(\n (clip: boolean) => {\n const scrollView = getClosestScrollViewElement(\n trRef.current\n ) as HTMLElement\n if (scrollView instanceof HTMLElement) {\n scrollView.style.overflow = clip ? 'clip' : ''\n }\n },\n [trRef]\n )\n\n const onOpen = useCallback((state) => {\n setAriaLive(state ? true : null)\n }, [])\n\n const onAnimationStart = useCallback(() => {\n scrollViewHandler(true)\n }, [scrollViewHandler])\n\n const onAnimationEnd = useCallback(\n (state) => {\n const event = { target: trRef.current }\n switch (state) {\n case 'opened':\n tableAccordionContext.onOpened?.(event)\n break\n\n case 'closed':\n tableAccordionContext.onClosed?.(event)\n break\n }\n\n scrollViewHandler(false)\n },\n [scrollViewHandler, tableAccordionContext, trRef]\n )\n\n const { isInDOM, isAnimating, isVisibleParallax, firstPaintStyle } =\n useHeightAnimation(innerRef, {\n open,\n animate: Boolean(\n !noAnimation && !tableAccordionContext?.noAnimation\n ),\n onOpen,\n onAnimationStart,\n onAnimationEnd,\n })\n\n return {\n ariaLive,\n isInDOM,\n isAnimating,\n isVisibleParallax,\n firstPaintStyle,\n }\n}\n\nexport default useTableAnimationHandler\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,2BAA2B,QAAQ,+BAA+B;AAC3E,SAASC,kBAAkB,QAAQ,wCAAwC;AAE3E,SAASC,qBAAqB,QAAQ,gBAAgB;AAatD,OAAO,SAASC,wBAAwBA,CAAAC,IAAA,EAKkB;EAAA,IALjB;IACvCC,QAAQ;IACRC,KAAK;IACLC,QAAQ;IACRC;EACqD,CAAC,GAAAJ,IAAA;EACtD,MAAMK,qBAAqB,GAAGX,KAAK,CAACY,UAAU,CAACR,qBAAqB,CAAC;EACrE,MAAM,CAACS,QAAQ,EAAEC,WAAW,CAAC,GAAGd,KAAK,CAACe,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAMC,IAAI,GAAGC,OAAO,CAACR,QAAQ,KAAIE,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEO,QAAQ,EAAC;EAEjE,MAAMC,iBAAiB,GAAGlB,WAAW,CAClCmB,IAAa,IAAK;IACjB,MAAMC,UAAU,GAAGnB,2BAA2B,CAC5CM,KAAK,CAACc,OACR,CAAgB;IAChB,IAAID,UAAU,YAAYE,WAAW,EAAE;MACrCF,UAAU,CAACG,KAAK,CAACC,QAAQ,GAAGL,IAAI,GAAG,MAAM,GAAG,EAAE;IAChD;EACF,CAAC,EACD,CAACZ,KAAK,CACR,CAAC;EAED,MAAMkB,MAAM,GAAGzB,WAAW,CAAE0B,KAAK,IAAK;IACpCb,WAAW,CAACa,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG3B,WAAW,CAAC,MAAM;IACzCkB,iBAAiB,CAAC,IAAI,CAAC;EACzB,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAMU,cAAc,GAAG5B,WAAW,CAC/B0B,KAAK,IAAK;IAAA,IAAAG,qBAAA,EAAAC,sBAAA;IACT,MAAMC,KAAK,GAAG;MAAEC,MAAM,EAAEzB,KAAK,CAACc;IAAQ,CAAC;IACvC,QAAQK,KAAK;MACX,KAAK,QAAQ;QACX,CAAAG,qBAAA,GAAAnB,qBAAqB,CAACuB,QAAQ,cAAAJ,qBAAA,uBAA9BA,qBAAA,CAAAK,IAAA,CAAAxB,qBAAqB,EAAYqB,KAAK,CAAC;QACvC;MAEF,KAAK,QAAQ;QACX,CAAAD,sBAAA,GAAApB,qBAAqB,CAACyB,QAAQ,cAAAL,sBAAA,uBAA9BA,sBAAA,CAAAI,IAAA,CAAAxB,qBAAqB,EAAYqB,KAAK,CAAC;QACvC;IACJ;IAEAb,iBAAiB,CAAC,KAAK,CAAC;EAC1B,CAAC,EACD,CAACA,iBAAiB,EAAER,qBAAqB,EAAEH,KAAK,CAClD,CAAC;EAED,MAAM;IAAE6B,OAAO;IAAEC,WAAW;IAAEC,iBAAiB;IAAEC;EAAgB,CAAC,GAChErC,kBAAkB,CAACI,QAAQ,EAAE;IAC3BS,IAAI;IACJyB,OAAO,EAAExB,OAAO,CACd,CAACP,WAAW,IAAI,EAACC,qBAAqB,aAArBA,qBAAqB,eAArBA,qBAAqB,CAAED,WAAW,CACrD,CAAC;IACDgB,MAAM;IACNE,gBAAgB;IAChBC;EACF,CAAC,CAAC;EAEJ,OAAO;IACLhB,QAAQ;IACRwB,OAAO;IACPC,WAAW;IACXC,iBAAiB;IACjBC;EACF,CAAC;AACH;AAEA,eAAenC,wBAAwB"}
1
+ {"version":3,"file":"useTableAnimationHandler.js","names":["React","useCallback","getClosestScrollViewElement","useHeightAnimation","TableAccordionContext","useTableAnimationHandler","_ref","innerRef","trRef","expanded","noAnimation","tableAccordionContext","useContext","ariaLive","setAriaLive","useState","open","Boolean","trIsOpen","scrollViewHandler","clip","scrollView","current","HTMLElement","style","overflowY","onOpen","state","onAnimationStart","onAnimationEnd","_tableAccordionContex","_tableAccordionContex2","event","target","onOpened","call","onClosed","isInDOM","isAnimating","isVisibleParallax","firstPaintStyle","animate"],"sources":["../../../../src/components/table/useTableAnimationHandler.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { getClosestScrollViewElement } from '../../shared/component-helper'\nimport { useHeightAnimation } from '../height-animation/useHeightAnimation'\nimport { TableAccordionTrProps } from './TableAccordionTr'\nimport { TableAccordionContext } from './TableContext'\n\nexport type useTableAnimationHandlerProps = {\n /**\n * Ref to <div> inside the <tr> element being expanded/collapsed\n */\n innerRef: React.MutableRefObject<HTMLDivElement>\n /**\n * Ref to the <tr> element being clicked\n */\n trRef: React.MutableRefObject<HTMLTableRowElement>\n}\n\nexport function useTableAnimationHandler({\n innerRef,\n trRef,\n expanded,\n noAnimation,\n}: useTableAnimationHandlerProps & TableAccordionTrProps) {\n const tableAccordionContext = React.useContext(TableAccordionContext)\n const [ariaLive, setAriaLive] = React.useState(null)\n const open = Boolean(expanded || tableAccordionContext?.trIsOpen)\n\n const scrollViewHandler = useCallback(\n (clip: boolean) => {\n const scrollView = getClosestScrollViewElement(\n trRef.current\n ) as HTMLElement\n if (scrollView instanceof HTMLElement) {\n scrollView.style.overflowY = clip ? 'clip' : ''\n }\n },\n [trRef]\n )\n\n const onOpen = useCallback((state) => {\n setAriaLive(state ? true : null)\n }, [])\n\n const onAnimationStart = useCallback(() => {\n scrollViewHandler(true)\n }, [scrollViewHandler])\n\n const onAnimationEnd = useCallback(\n (state) => {\n const event = { target: trRef.current }\n switch (state) {\n case 'opened':\n tableAccordionContext.onOpened?.(event)\n break\n\n case 'closed':\n tableAccordionContext.onClosed?.(event)\n break\n }\n\n scrollViewHandler(false)\n },\n [scrollViewHandler, tableAccordionContext, trRef]\n )\n\n const { isInDOM, isAnimating, isVisibleParallax, firstPaintStyle } =\n useHeightAnimation(innerRef, {\n open,\n animate: Boolean(\n !noAnimation && !tableAccordionContext?.noAnimation\n ),\n onOpen,\n onAnimationStart,\n onAnimationEnd,\n })\n\n return {\n ariaLive,\n isInDOM,\n isAnimating,\n isVisibleParallax,\n firstPaintStyle,\n }\n}\n\nexport default useTableAnimationHandler\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,2BAA2B,QAAQ,+BAA+B;AAC3E,SAASC,kBAAkB,QAAQ,wCAAwC;AAE3E,SAASC,qBAAqB,QAAQ,gBAAgB;AAatD,OAAO,SAASC,wBAAwBA,CAAAC,IAAA,EAKkB;EAAA,IALjB;IACvCC,QAAQ;IACRC,KAAK;IACLC,QAAQ;IACRC;EACqD,CAAC,GAAAJ,IAAA;EACtD,MAAMK,qBAAqB,GAAGX,KAAK,CAACY,UAAU,CAACR,qBAAqB,CAAC;EACrE,MAAM,CAACS,QAAQ,EAAEC,WAAW,CAAC,GAAGd,KAAK,CAACe,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAMC,IAAI,GAAGC,OAAO,CAACR,QAAQ,KAAIE,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEO,QAAQ,EAAC;EAEjE,MAAMC,iBAAiB,GAAGlB,WAAW,CAClCmB,IAAa,IAAK;IACjB,MAAMC,UAAU,GAAGnB,2BAA2B,CAC5CM,KAAK,CAACc,OACR,CAAgB;IAChB,IAAID,UAAU,YAAYE,WAAW,EAAE;MACrCF,UAAU,CAACG,KAAK,CAACC,SAAS,GAAGL,IAAI,GAAG,MAAM,GAAG,EAAE;IACjD;EACF,CAAC,EACD,CAACZ,KAAK,CACR,CAAC;EAED,MAAMkB,MAAM,GAAGzB,WAAW,CAAE0B,KAAK,IAAK;IACpCb,WAAW,CAACa,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAG3B,WAAW,CAAC,MAAM;IACzCkB,iBAAiB,CAAC,IAAI,CAAC;EACzB,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAMU,cAAc,GAAG5B,WAAW,CAC/B0B,KAAK,IAAK;IAAA,IAAAG,qBAAA,EAAAC,sBAAA;IACT,MAAMC,KAAK,GAAG;MAAEC,MAAM,EAAEzB,KAAK,CAACc;IAAQ,CAAC;IACvC,QAAQK,KAAK;MACX,KAAK,QAAQ;QACX,CAAAG,qBAAA,GAAAnB,qBAAqB,CAACuB,QAAQ,cAAAJ,qBAAA,uBAA9BA,qBAAA,CAAAK,IAAA,CAAAxB,qBAAqB,EAAYqB,KAAK,CAAC;QACvC;MAEF,KAAK,QAAQ;QACX,CAAAD,sBAAA,GAAApB,qBAAqB,CAACyB,QAAQ,cAAAL,sBAAA,uBAA9BA,sBAAA,CAAAI,IAAA,CAAAxB,qBAAqB,EAAYqB,KAAK,CAAC;QACvC;IACJ;IAEAb,iBAAiB,CAAC,KAAK,CAAC;EAC1B,CAAC,EACD,CAACA,iBAAiB,EAAER,qBAAqB,EAAEH,KAAK,CAClD,CAAC;EAED,MAAM;IAAE6B,OAAO;IAAEC,WAAW;IAAEC,iBAAiB;IAAEC;EAAgB,CAAC,GAChErC,kBAAkB,CAACI,QAAQ,EAAE;IAC3BS,IAAI;IACJyB,OAAO,EAAExB,OAAO,CACd,CAACP,WAAW,IAAI,EAACC,qBAAqB,aAArBA,qBAAqB,eAArBA,qBAAqB,CAAED,WAAW,CACrD,CAAC;IACDgB,MAAM;IACNE,gBAAgB;IAChBC;EACF,CAAC,CAAC;EAEJ,OAAO;IACLhB,QAAQ;IACRwB,OAAO;IACPC,WAAW;IACXC,iBAAiB;IACjBC;EACF,CAAC;AACH;AAEA,eAAenC,wBAAwB"}
@@ -78,7 +78,7 @@ export type CheckboxProps = {
78
78
  type DeprecatedCheckboxProps = {
79
79
  /** @deprecated use the `label` prop instead */
80
80
  children?: React.ReactNode;
81
- /** @deprecated use `onComplete` */
81
+ /** @deprecated use `onChange` */
82
82
  on_change?: (args: OnChangeParams) => void;
83
83
  /** @deprecated use `labelPosition` */
84
84
  label_position?: CheckboxLabelPosition;
@@ -72,7 +72,7 @@ function Checkbox(localProps) {
72
72
  const callOnChange = useCallback(args => {
73
73
  onChange === null || onChange === void 0 ? void 0 : onChange(args);
74
74
  }, [onChange]);
75
- const onChangeHandler = useCallback(event => {
75
+ const handleChange = useCallback(event => {
76
76
  if (readOnly) {
77
77
  return event.preventDefault();
78
78
  }
@@ -86,13 +86,16 @@ function Checkbox(localProps) {
86
86
  ref.current.focus();
87
87
  }
88
88
  }, [callOnChange, isChecked, readOnly, ref]);
89
+ const onChangeHandler = useCallback(event => {
90
+ handleChange(event);
91
+ }, [handleChange]);
89
92
  const onKeyDownHandler = useCallback(event => {
90
93
  switch (keycode(event)) {
91
94
  case 'enter':
92
- onChangeHandler(event);
95
+ handleChange(event);
93
96
  break;
94
97
  }
95
- }, [onChangeHandler]);
98
+ }, [handleChange]);
96
99
  const mainParams = {
97
100
  className: classnames("dnb-checkbox dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(props), className, status && `dnb-checkbox__status--${statusState}`, size && `dnb-checkbox--${size}`, label && `dnb-checkbox--label-position-${labelPosition || 'right'}`)
98
101
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["React","useCallback","useContext","useEffect","useRef","useState","classnames","keycode","validateDOMAttributes","getStatusState","combineDescribedBy","extendPropsWithContext","AlignmentHelper","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","useId","pickFormElementProps","convertSnakeCaseProps","FormLabel","FormStatus","CheckIcon","defaultProps","statusState","Checkbox","localProps","context","props","extractPropsFromContext","value","status","statusProps","statusNoAnimation","globalStatus","suffix","size","label","labelPosition","labelSrOnly","title","element","disabled","readOnly","skeleton","className","id","idProp","checked","onChange","innerRef","rest","_objectWithoutProperties","_excluded","isFn","refHook","ref","current","isChecked","setIsChecked","prevChecked","setPrevChecked","callOnChange","args","onChangeHandler","event","preventDefault","updatedCheck","focus","onKeyDownHandler","mainParams","showStatus","inputParams","handleInputAttributes","statusComp","createElement","_extends","show","text_id","width_selector","text","state","no_animation","Element","forId","srOnly","_AlignmentHelper","name","type","onKeyDown","_span","_objectSpread","FormRow","formElement"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["/**\n * Web Checkbox Component\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\n\nimport {\n validateDOMAttributes,\n getStatusState,\n combineDescribedBy,\n extendPropsWithContext,\n} from '../../shared/component-helper'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\nimport useId from '../../shared/helpers/useId'\nimport type { SpacingProps } from '../space/types'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport type { GlobalStatusConfigObject } from '../GlobalStatus'\n\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport CheckIcon from './CheckIcon'\n\nexport type CheckboxLabelPosition = 'left' | 'right'\nexport type CheckboxSize = 'default' | 'medium' | 'large'\nexport type CheckboxAttributes = string | Record<string, unknown>\nexport type OnChangeParams = {\n checked: boolean\n event: React.ChangeEvent<HTMLInputElement>\n}\n\nexport type CheckboxProps = {\n /**\n * Use either the `label` property or provide a custom one.\n */\n label?: React.ReactNode\n /**\n * Defines the position of the `label`. Use either `left` or `right`. Defaults to `right`.\n */\n labelPosition?: CheckboxLabelPosition\n /**\n * Use `true` to make the label only readable by screen readers.\n */\n labelSrOnly?: boolean\n /**\n * The `title` of the input - describing it a bit further for accessibility reasons.\n */\n title?: string\n /**\n * Determine whether the checkbox is checked or not. The default is `false`.\n */\n checked?: boolean | undefined | null\n /**\n * The size of the checkbox. For now there is \"medium\" (default) and \"large\".\n */\n size?: CheckboxSize\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 /**\n * Use an object to define additional FormStatus properties. See [FormStatus](/uilib/components/form-status/properties/)\n */\n statusProps?: FormStatusProps\n statusNoAnimation?: boolean\n /**\n * The [configuration](/uilib/components/global-status/properties/#configuration-object) used for the target [GlobalStatus](/uilib/components/global-status)\n */\n globalStatus?: GlobalStatusConfigObject\n /**\n * Text describing the content of the Checkbox more than the label. You can also send in a React component, so it gets wrapped inside the Checkbox component.\n */\n suffix?: React.ReactNode\n value?: string\n element?: React.ElementType\n attributes?: CheckboxAttributes\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * Will be called on state changes made by the user. Returns an boolean `{ checked, event }`.\n */\n onChange?: (args: OnChangeParams) => void\n /**\n * By providing a React.ref we can get the internally used input element (DOM). E.g. `innerRef={myRef}` by using `React.createRef()` or `React.useRef()`.\n */\n innerRef?:\n | React.MutableRefObject<HTMLInputElement>\n | ((elem: HTMLInputElement) => void)\n} & SpacingProps &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n 'ref' | 'label' | 'size' | 'onChange'\n > &\n DeprecatedCheckboxProps\n\n// depracated, can be removed in v11\ntype DeprecatedCheckboxProps = {\n /** @deprecated use the `label` prop instead */\n children?: React.ReactNode\n /** @deprecated use `onComplete` */\n on_change?: (args: OnChangeParams) => void\n /** @deprecated use `labelPosition` */\n label_position?: CheckboxLabelPosition\n /** @deprecated use `labelSrOnly` */\n label_sr_only?: boolean\n /** @deprecated use `statusState` */\n status_state?: FormStatusState\n /** @deprecated use `statusProps` */\n status_props?: FormStatusProps\n /** @deprecated use `statusNoAnimation` */\n status_no_animation?: boolean\n}\n\nconst defaultProps: CheckboxProps = {\n statusState: 'error',\n}\n\nfunction Checkbox(localProps: CheckboxProps) {\n const context = useContext(Context)\n\n const props = extractPropsFromContext()\n\n const {\n value,\n status,\n statusState,\n statusProps,\n statusNoAnimation,\n globalStatus,\n suffix,\n size,\n label,\n labelPosition,\n labelSrOnly,\n title,\n element,\n disabled,\n readOnly,\n skeleton,\n className,\n id: idProp,\n checked,\n onChange,\n innerRef,\n ...rest\n } = props\n\n const id = useId(idProp)\n\n const isFn = typeof innerRef === 'function'\n const refHook = useRef<HTMLInputElement>()\n const ref = (!isFn && innerRef) || refHook\n\n useEffect(() => {\n if (isFn) {\n innerRef?.(ref.current)\n }\n }, [innerRef, isFn, ref])\n\n const [isChecked, setIsChecked] = useState<boolean>(checked ?? false)\n const [prevChecked, setPrevChecked] = useState<boolean>(checked)\n\n useEffect(() => {\n if (checked !== prevChecked) {\n setIsChecked(!!checked)\n setPrevChecked(!!checked)\n }\n }, [checked, prevChecked])\n\n const callOnChange = useCallback(\n (args: OnChangeParams) => {\n onChange?.(args)\n },\n [onChange]\n )\n\n const onChangeHandler = useCallback(\n (event) => {\n if (readOnly) {\n return event.preventDefault()\n }\n const updatedCheck = !isChecked\n\n setIsChecked(updatedCheck)\n callOnChange({ checked: updatedCheck, event })\n\n // help firefox and safari to have an correct state after a click\n if (ref.current) {\n ref.current.focus()\n }\n },\n [callOnChange, isChecked, readOnly, ref]\n )\n\n const onKeyDownHandler = useCallback(\n (event) => {\n switch (keycode(event)) {\n case 'enter':\n onChangeHandler(event)\n break\n }\n },\n [onChangeHandler]\n )\n\n const mainParams = {\n className: classnames(\n 'dnb-checkbox',\n status && `dnb-checkbox__status--${statusState}`,\n size && `dnb-checkbox--${size}`,\n label && `dnb-checkbox--label-position-${labelPosition || 'right'}`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n className\n ),\n }\n\n const showStatus = getStatusState(status)\n\n const inputParams = handleInputAttributes()\n\n const statusComp = (\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n width_selector={id + ', ' + id + '-label'}\n text={status}\n state={statusState}\n no_animation={statusNoAnimation}\n skeleton={skeleton}\n {...statusProps}\n />\n )\n\n const Element = element || 'input'\n\n return (\n <span {...mainParams}>\n <span className=\"dnb-checkbox__order\">\n {label && (\n <FormLabel\n id={id + '-label'}\n forId={id}\n text={label}\n disabled={disabled}\n skeleton={skeleton}\n srOnly={labelSrOnly}\n />\n )}\n\n <span className=\"dnb-checkbox__inner\">\n <AlignmentHelper />\n {labelPosition === 'left' && statusComp}\n\n <span className=\"dnb-checkbox__shell\">\n <Element\n id={id}\n name={id}\n type=\"checkbox\"\n title={title}\n className=\"dnb-checkbox__input\"\n value={isChecked ? value || '' : ''}\n disabled={disabled}\n {...inputParams}\n onChange={onChangeHandler}\n onKeyDown={onKeyDownHandler}\n ref={ref}\n />\n\n <span\n className={classnames(\n 'dnb-checkbox__button',\n createSkeletonClass('shape', skeleton, context)\n )}\n aria-hidden\n >\n <span className=\"dnb-checkbox__focus\" />\n </span>\n\n <CheckIcon size={size} />\n </span>\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-checkbox__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {(labelPosition === 'right' || !labelPosition) && statusComp}\n </span>\n )\n\n /**\n * Adds aria attributes, calls validateDOMAttributes and skeletonDOMAttributes and returns the result\n */\n function handleInputAttributes() {\n const inputParams = {\n disabled,\n checked: isChecked,\n readOnly,\n ...rest,\n }\n\n if (showStatus || suffix) {\n inputParams['aria-describedby'] = combineDescribedBy(\n inputParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n inputParams['aria-readonly'] = inputParams.readOnly = true\n }\n\n // also used for code markup simulation\n return validateDOMAttributes(\n props,\n skeletonDOMAttributes(inputParams, skeleton, context)\n )\n }\n\n function extractPropsFromContext() {\n return extendPropsWithContext(\n convertSnakeCaseProps(localProps),\n defaultProps,\n context.Checkbox,\n {\n skeleton: context?.Checkbox,\n },\n // Deprecated – can be removed in v11\n pickFormElementProps(context?.FormRow),\n pickFormElementProps(context?.formElement)\n )\n }\n}\n\nexport default Checkbox\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":["React","useCallback","useContext","useEffect","useRef","useState","classnames","keycode","validateDOMAttributes","getStatusState","combineDescribedBy","extendPropsWithContext","AlignmentHelper","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","useId","pickFormElementProps","convertSnakeCaseProps","FormLabel","FormStatus","CheckIcon","defaultProps","statusState","Checkbox","localProps","context","props","extractPropsFromContext","value","status","statusProps","statusNoAnimation","globalStatus","suffix","size","label","labelPosition","labelSrOnly","title","element","disabled","readOnly","skeleton","className","id","idProp","checked","onChange","innerRef","rest","_objectWithoutProperties","_excluded","isFn","refHook","ref","current","isChecked","setIsChecked","prevChecked","setPrevChecked","callOnChange","args","handleChange","event","preventDefault","updatedCheck","focus","onChangeHandler","onKeyDownHandler","mainParams","showStatus","inputParams","handleInputAttributes","statusComp","createElement","_extends","show","text_id","width_selector","text","state","no_animation","Element","forId","srOnly","_AlignmentHelper","name","type","onKeyDown","_span","_objectSpread","FormRow","formElement"],"sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["/**\n * Web Checkbox Component\n */\n\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\n\nimport {\n validateDOMAttributes,\n getStatusState,\n combineDescribedBy,\n extendPropsWithContext,\n} from '../../shared/component-helper'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\nimport useId from '../../shared/helpers/useId'\nimport type { SpacingProps } from '../space/types'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps'\n\nimport type {\n FormStatusProps,\n FormStatusState,\n FormStatusText,\n} from '../FormStatus'\nimport type { SkeletonShow } from '../Skeleton'\nimport type { GlobalStatusConfigObject } from '../GlobalStatus'\n\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport CheckIcon from './CheckIcon'\n\nexport type CheckboxLabelPosition = 'left' | 'right'\nexport type CheckboxSize = 'default' | 'medium' | 'large'\nexport type CheckboxAttributes = string | Record<string, unknown>\nexport type OnChangeParams = {\n checked: boolean\n event: React.ChangeEvent<HTMLInputElement>\n}\n\nexport type CheckboxProps = {\n /**\n * Use either the `label` property or provide a custom one.\n */\n label?: React.ReactNode\n /**\n * Defines the position of the `label`. Use either `left` or `right`. Defaults to `right`.\n */\n labelPosition?: CheckboxLabelPosition\n /**\n * Use `true` to make the label only readable by screen readers.\n */\n labelSrOnly?: boolean\n /**\n * The `title` of the input - describing it a bit further for accessibility reasons.\n */\n title?: string\n /**\n * Determine whether the checkbox is checked or not. The default is `false`.\n */\n checked?: boolean | undefined | null\n /**\n * The size of the checkbox. For now there is \"medium\" (default) and \"large\".\n */\n size?: CheckboxSize\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 /**\n * Use an object to define additional FormStatus properties. See [FormStatus](/uilib/components/form-status/properties/)\n */\n statusProps?: FormStatusProps\n statusNoAnimation?: boolean\n /**\n * The [configuration](/uilib/components/global-status/properties/#configuration-object) used for the target [GlobalStatus](/uilib/components/global-status)\n */\n globalStatus?: GlobalStatusConfigObject\n /**\n * Text describing the content of the Checkbox more than the label. You can also send in a React component, so it gets wrapped inside the Checkbox component.\n */\n suffix?: React.ReactNode\n value?: string\n element?: React.ElementType\n attributes?: CheckboxAttributes\n /**\n * If set to `true`, an overlaying skeleton with animation will be shown.\n */\n skeleton?: SkeletonShow\n /**\n * Will be called on state changes made by the user. Returns an boolean `{ checked, event }`.\n */\n onChange?: (args: OnChangeParams) => void\n /**\n * By providing a React.ref we can get the internally used input element (DOM). E.g. `innerRef={myRef}` by using `React.createRef()` or `React.useRef()`.\n */\n innerRef?:\n | React.MutableRefObject<HTMLInputElement>\n | ((elem: HTMLInputElement) => void)\n} & SpacingProps &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n 'ref' | 'label' | 'size' | 'onChange'\n > &\n DeprecatedCheckboxProps\n\n// depracated, can be removed in v11\ntype DeprecatedCheckboxProps = {\n /** @deprecated use the `label` prop instead */\n children?: React.ReactNode\n /** @deprecated use `onChange` */\n on_change?: (args: OnChangeParams) => void\n /** @deprecated use `labelPosition` */\n label_position?: CheckboxLabelPosition\n /** @deprecated use `labelSrOnly` */\n label_sr_only?: boolean\n /** @deprecated use `statusState` */\n status_state?: FormStatusState\n /** @deprecated use `statusProps` */\n status_props?: FormStatusProps\n /** @deprecated use `statusNoAnimation` */\n status_no_animation?: boolean\n}\n\nconst defaultProps: CheckboxProps = {\n statusState: 'error',\n}\n\nfunction Checkbox(localProps: CheckboxProps) {\n const context = useContext(Context)\n\n const props = extractPropsFromContext()\n\n const {\n value,\n status,\n statusState,\n statusProps,\n statusNoAnimation,\n globalStatus,\n suffix,\n size,\n label,\n labelPosition,\n labelSrOnly,\n title,\n element,\n disabled,\n readOnly,\n skeleton,\n className,\n id: idProp,\n checked,\n onChange,\n innerRef,\n ...rest\n } = props\n\n const id = useId(idProp)\n\n const isFn = typeof innerRef === 'function'\n const refHook = useRef<HTMLInputElement>()\n const ref = (!isFn && innerRef) || refHook\n\n useEffect(() => {\n if (isFn) {\n innerRef?.(ref.current)\n }\n }, [innerRef, isFn, ref])\n\n const [isChecked, setIsChecked] = useState<boolean>(checked ?? false)\n const [prevChecked, setPrevChecked] = useState<boolean>(checked)\n\n useEffect(() => {\n if (checked !== prevChecked) {\n setIsChecked(!!checked)\n setPrevChecked(!!checked)\n }\n }, [checked, prevChecked])\n\n const callOnChange: CheckboxProps['onChange'] = useCallback(\n (args) => {\n onChange?.(args)\n },\n [onChange]\n )\n\n const handleChange = useCallback(\n (event: OnChangeParams['event']) => {\n if (readOnly) {\n return event.preventDefault()\n }\n const updatedCheck = !isChecked\n\n setIsChecked(updatedCheck)\n callOnChange({ checked: updatedCheck, event })\n\n // help firefox and safari to have an correct state after a click\n if (ref.current) {\n ref.current.focus()\n }\n },\n [callOnChange, isChecked, readOnly, ref]\n )\n\n const onChangeHandler = useCallback(\n (event: OnChangeParams['event']) => {\n handleChange(event)\n },\n [handleChange]\n )\n\n const onKeyDownHandler = useCallback(\n (event: KeyboardEvent & OnChangeParams['event']) => {\n switch (keycode(event)) {\n case 'enter':\n handleChange(event)\n break\n }\n },\n [handleChange]\n )\n\n const mainParams = {\n className: classnames(\n 'dnb-checkbox',\n status && `dnb-checkbox__status--${statusState}`,\n size && `dnb-checkbox--${size}`,\n label && `dnb-checkbox--label-position-${labelPosition || 'right'}`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n className\n ),\n }\n\n const showStatus = getStatusState(status)\n\n const inputParams = handleInputAttributes()\n\n const statusComp = (\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n width_selector={id + ', ' + id + '-label'}\n text={status}\n state={statusState}\n no_animation={statusNoAnimation}\n skeleton={skeleton}\n {...statusProps}\n />\n )\n\n const Element = element || 'input'\n\n return (\n <span {...mainParams}>\n <span className=\"dnb-checkbox__order\">\n {label && (\n <FormLabel\n id={id + '-label'}\n forId={id}\n text={label}\n disabled={disabled}\n skeleton={skeleton}\n srOnly={labelSrOnly}\n />\n )}\n\n <span className=\"dnb-checkbox__inner\">\n <AlignmentHelper />\n {labelPosition === 'left' && statusComp}\n\n <span className=\"dnb-checkbox__shell\">\n <Element\n id={id}\n name={id}\n type=\"checkbox\"\n title={title}\n className=\"dnb-checkbox__input\"\n value={isChecked ? value || '' : ''}\n disabled={disabled}\n {...inputParams}\n onChange={onChangeHandler}\n onKeyDown={onKeyDownHandler}\n ref={ref}\n />\n\n <span\n className={classnames(\n 'dnb-checkbox__button',\n createSkeletonClass('shape', skeleton, context)\n )}\n aria-hidden\n >\n <span className=\"dnb-checkbox__focus\" />\n </span>\n\n <CheckIcon size={size} />\n </span>\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-checkbox__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {(labelPosition === 'right' || !labelPosition) && statusComp}\n </span>\n )\n\n /**\n * Adds aria attributes, calls validateDOMAttributes and skeletonDOMAttributes and returns the result\n */\n function handleInputAttributes() {\n const inputParams = {\n disabled,\n checked: isChecked,\n readOnly,\n ...rest,\n }\n\n if (showStatus || suffix) {\n inputParams['aria-describedby'] = combineDescribedBy(\n inputParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n inputParams['aria-readonly'] = inputParams.readOnly = true\n }\n\n // also used for code markup simulation\n return validateDOMAttributes(\n props,\n skeletonDOMAttributes(inputParams, skeleton, context)\n )\n }\n\n function extractPropsFromContext() {\n return extendPropsWithContext(\n convertSnakeCaseProps(localProps),\n defaultProps,\n context.Checkbox,\n {\n skeleton: context?.Checkbox,\n },\n // Deprecated – can be removed in v11\n pickFormElementProps(context?.FormRow),\n pickFormElementProps(context?.formElement)\n )\n }\n}\n\nexport default Checkbox\n"],"mappings":"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"}
@@ -124,4 +124,8 @@
124
124
 
125
125
  .dnb-flex-stack + .dnb-flex-stack {
126
126
  margin-top: var(--spacing-small);
127
+ }
128
+
129
+ .dnb-flex-stack > .dnb-button {
130
+ align-self: flex-start;
127
131
  }
@@ -1 +1 @@
1
- .dnb-flex-container{display:flex;row-gap:var(--gap,0)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-off{--gap:0}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}
1
+ .dnb-flex-container{display:flex;row-gap:var(--gap,0)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-off{--gap:0}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}.dnb-flex-stack>.dnb-button{align-self:flex-start}
@@ -1,3 +1,6 @@
1
1
  .dnb-flex-stack + .dnb-flex-stack {
2
2
  margin-top: var(--spacing-small);
3
3
  }
4
+ .dnb-flex-stack > .dnb-button {
5
+ align-self: flex-start;
6
+ }
@@ -139,19 +139,17 @@ export default class HeightAnimation {
139
139
  if (this.isAnimating && typeof this.__currentHeight !== 'undefined') {
140
140
  return this.__currentHeight;
141
141
  }
142
- const width = this.elem.clientWidth;
143
142
  const clonedElem = this.elem.cloneNode(true);
144
143
  const inputs = clonedElem.querySelectorAll('input');
145
144
  inputs.forEach(input => {
146
145
  input.removeAttribute('name');
147
146
  input.removeAttribute('id');
148
147
  });
149
- (_this$elem$parentNode = this.elem.parentNode) === null || _this$elem$parentNode === void 0 ? void 0 : _this$elem$parentNode.insertBefore(clonedElem, this.elem.nextSibling);
150
148
  for (const key in this.firstPaintStyle) {
151
149
  clonedElem.style[key] = this.firstPaintStyle[key];
152
150
  }
153
- clonedElem.style.width = width ? `${String(width)}px` : 'auto';
154
151
  clonedElem.style.position = 'absolute';
152
+ (_this$elem$parentNode = this.elem.parentNode) === null || _this$elem$parentNode === void 0 ? void 0 : _this$elem$parentNode.insertBefore(clonedElem, this.elem.nextSibling);
155
153
  const height = parseFloat(String(clonedElem.clientHeight)) || parseFloat(clonedElem.getAttribute('data-height')) || null;
156
154
  (_clonedElem$parentNod = clonedElem.parentNode) === null || _clonedElem$parentNod === void 0 ? void 0 : _clonedElem$parentNod.removeChild(clonedElem);
157
155
  if (height) {
@@ -206,6 +204,9 @@ export default class HeightAnimation {
206
204
  const toHeight = this.getUnknownHeight();
207
205
  this.addEndEvent(e => {
208
206
  if (e.target === e.currentTarget || !e.currentTarget) {
207
+ if (this.elem) {
208
+ this.elem.style.overflowY = '';
209
+ }
209
210
  this.setState('opened');
210
211
  this.readjust();
211
212
  }