@dnb/eufemia 10.4.2 → 10.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/cjs/components/anchor/style/anchor-mixins.scss +17 -23
- package/cjs/components/anchor/style/dnb-anchor.css +26 -15
- package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
- package/cjs/components/anchor/style/dnb-anchor.scss +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
- package/cjs/components/autocomplete/Autocomplete.js +2 -2
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/cjs/components/dialog/Dialog.d.ts +1 -1
- package/cjs/components/dialog/DialogContent.d.ts +1 -1
- package/cjs/components/dialog/DialogContent.js +4 -2
- package/cjs/components/dialog/DialogContent.js.map +1 -1
- package/cjs/components/dialog/parts/DialogAction.d.ts +5 -1
- package/cjs/components/dialog/parts/DialogAction.js +3 -2
- package/cjs/components/dialog/parts/DialogAction.js.map +1 -1
- package/cjs/components/form-row/FormRow.js.map +1 -1
- package/cjs/components/form-row/style/dnb-form-row.scss +2 -2
- package/cjs/components/form-set/FormSet.js.map +1 -1
- package/cjs/components/height-animation/HeightAnimation.d.ts +1 -1
- package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
- package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
- package/cjs/components/icon/lib/SvgComparison.js.map +1 -1
- package/cjs/components/input/style/dnb-input.scss +1 -1
- package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/cjs/components/input-masked/TextMask.js.map +1 -1
- package/cjs/components/modal/Modal.js +0 -2
- package/cjs/components/modal/Modal.js.map +1 -1
- package/cjs/components/modal/bodyScrollLock.js.map +1 -1
- package/cjs/components/number-format/NumberUtils.js.map +1 -1
- package/cjs/components/number-format/style/dnb-number-format.css +0 -7
- package/cjs/components/number-format/style/dnb-number-format.scss +0 -1
- package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
- package/cjs/components/radio/Radio.js.map +1 -1
- package/cjs/components/section/style/themes/dnb-section-theme-ui.css +14 -7
- package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/cjs/components/slider/hooks/useSliderEvents.js.map +1 -1
- package/cjs/components/slider/types.d.ts +1 -1
- package/cjs/components/slider/types.js.map +1 -1
- package/cjs/components/space/SpacingHelper.js.map +1 -1
- package/cjs/components/table/TableAccordion.js.map +1 -1
- package/cjs/components/table/TableTr.js.map +1 -1
- package/cjs/components/textarea/Textarea.js.map +1 -1
- package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
- package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/cjs/components/tooltip/TooltipContainer.js.map +1 -1
- package/cjs/components/upload/Upload.js +2 -2
- package/cjs/components/upload/Upload.js.map +1 -1
- package/cjs/components/upload/useUpload.d.ts +1 -1
- package/cjs/components/upload/useUpload.js +2 -2
- package/cjs/components/upload/useUpload.js.map +1 -1
- package/cjs/elements/blockquote/Blockquote.d.ts +1 -1
- package/cjs/elements/blockquote/Blockquote.js.map +1 -1
- package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
- package/cjs/extensions/payment-card/utils/Types.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/VisibilityByTheme.d.ts +1 -1
- package/cjs/shared/VisibilityByTheme.js.map +1 -1
- package/cjs/shared/helpers.d.ts +2 -2
- package/cjs/shared/helpers.js.map +1 -1
- package/cjs/style/dnb-ui-components.css +26 -22
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
- package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
- package/cjs/style/themes/theme-ui/ui-theme-basis.css +17 -11
- package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +60 -39
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-elements.css +17 -11
- package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-tags.css +23 -11
- package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/components/anchor/style/anchor-mixins.scss +17 -23
- package/components/anchor/style/dnb-anchor.css +26 -15
- package/components/anchor/style/dnb-anchor.min.css +1 -1
- package/components/anchor/style/dnb-anchor.scss +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
- package/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
- package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
- package/components/autocomplete/Autocomplete.js +2 -2
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/components/dialog/Dialog.d.ts +1 -1
- package/components/dialog/DialogContent.d.ts +1 -1
- package/components/dialog/DialogContent.js +4 -2
- package/components/dialog/DialogContent.js.map +1 -1
- package/components/dialog/parts/DialogAction.d.ts +5 -1
- package/components/dialog/parts/DialogAction.js +3 -2
- package/components/dialog/parts/DialogAction.js.map +1 -1
- package/components/form-row/FormRow.js.map +1 -1
- package/components/form-row/style/dnb-form-row.scss +2 -2
- package/components/form-set/FormSet.js.map +1 -1
- package/components/height-animation/HeightAnimation.d.ts +1 -1
- package/components/height-animation/HeightAnimation.js.map +1 -1
- package/components/height-animation/useHeightAnimation.js.map +1 -1
- package/components/icon/lib/SvgComparison.js.map +1 -1
- package/components/input/style/dnb-input.scss +1 -1
- package/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/components/input-masked/TextMask.js.map +1 -1
- package/components/modal/Modal.js +0 -2
- package/components/modal/Modal.js.map +1 -1
- package/components/modal/bodyScrollLock.js.map +1 -1
- package/components/number-format/NumberUtils.js.map +1 -1
- package/components/number-format/style/dnb-number-format.css +0 -7
- package/components/number-format/style/dnb-number-format.scss +0 -1
- package/components/pagination/PaginationInfinity.js.map +1 -1
- package/components/radio/Radio.js.map +1 -1
- package/components/section/style/themes/dnb-section-theme-ui.css +14 -7
- package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/components/slider/hooks/useSliderEvents.js.map +1 -1
- package/components/slider/types.d.ts +1 -1
- package/components/slider/types.js.map +1 -1
- package/components/space/SpacingHelper.js.map +1 -1
- package/components/table/TableAccordion.js.map +1 -1
- package/components/table/TableTr.js.map +1 -1
- package/components/textarea/Textarea.js.map +1 -1
- package/components/toggle-button/ToggleButton.js.map +1 -1
- package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/components/tooltip/TooltipContainer.js.map +1 -1
- package/components/upload/Upload.js +2 -2
- package/components/upload/Upload.js.map +1 -1
- package/components/upload/useUpload.d.ts +1 -1
- package/components/upload/useUpload.js +2 -2
- package/components/upload/useUpload.js.map +1 -1
- package/elements/blockquote/Blockquote.d.ts +1 -1
- package/elements/blockquote/Blockquote.js.map +1 -1
- package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
- package/es/components/anchor/style/anchor-mixins.scss +17 -23
- package/es/components/anchor/style/dnb-anchor.css +26 -15
- package/es/components/anchor/style/dnb-anchor.min.css +1 -1
- package/es/components/anchor/style/dnb-anchor.scss +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
- package/es/components/autocomplete/Autocomplete.js +2 -2
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/es/components/dialog/Dialog.d.ts +1 -1
- package/es/components/dialog/DialogContent.d.ts +1 -1
- package/es/components/dialog/DialogContent.js +4 -2
- package/es/components/dialog/DialogContent.js.map +1 -1
- package/es/components/dialog/parts/DialogAction.d.ts +5 -1
- package/es/components/dialog/parts/DialogAction.js +3 -2
- package/es/components/dialog/parts/DialogAction.js.map +1 -1
- package/es/components/form-row/FormRow.js.map +1 -1
- package/es/components/form-row/style/dnb-form-row.scss +2 -2
- package/es/components/form-set/FormSet.js.map +1 -1
- package/es/components/height-animation/HeightAnimation.d.ts +1 -1
- package/es/components/height-animation/HeightAnimation.js.map +1 -1
- package/es/components/height-animation/useHeightAnimation.js.map +1 -1
- package/es/components/icon/lib/SvgComparison.js.map +1 -1
- package/es/components/input/style/dnb-input.scss +1 -1
- package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/es/components/input-masked/TextMask.js.map +1 -1
- package/es/components/modal/Modal.js +0 -2
- package/es/components/modal/Modal.js.map +1 -1
- package/es/components/modal/bodyScrollLock.js.map +1 -1
- package/es/components/number-format/NumberUtils.js.map +1 -1
- package/es/components/number-format/style/dnb-number-format.css +0 -7
- package/es/components/number-format/style/dnb-number-format.scss +0 -1
- package/es/components/pagination/PaginationInfinity.js.map +1 -1
- package/es/components/radio/Radio.js.map +1 -1
- package/es/components/section/style/themes/dnb-section-theme-ui.css +14 -7
- package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/es/components/slider/hooks/useSliderEvents.js.map +1 -1
- package/es/components/slider/types.d.ts +1 -1
- package/es/components/slider/types.js.map +1 -1
- package/es/components/space/SpacingHelper.js.map +1 -1
- package/es/components/table/TableAccordion.js.map +1 -1
- package/es/components/table/TableTr.js.map +1 -1
- package/es/components/textarea/Textarea.js.map +1 -1
- package/es/components/toggle-button/ToggleButton.js.map +1 -1
- package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
- package/es/components/tooltip/TooltipContainer.js.map +1 -1
- package/es/components/upload/Upload.js +2 -2
- package/es/components/upload/Upload.js.map +1 -1
- package/es/components/upload/useUpload.d.ts +1 -1
- package/es/components/upload/useUpload.js +2 -2
- package/es/components/upload/useUpload.js.map +1 -1
- package/es/elements/blockquote/Blockquote.d.ts +1 -1
- package/es/elements/blockquote/Blockquote.js.map +1 -1
- package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
- package/es/extensions/payment-card/utils/Types.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/VisibilityByTheme.d.ts +1 -1
- package/es/shared/VisibilityByTheme.js.map +1 -1
- package/es/shared/helpers.d.ts +2 -2
- package/es/shared/helpers.js.map +1 -1
- package/es/style/dnb-ui-components.css +26 -22
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
- package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
- package/es/style/themes/theme-ui/ui-theme-basis.css +17 -11
- package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +60 -39
- package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-elements.css +17 -11
- package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-tags.css +23 -11
- package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +1 -1
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/payment-card/utils/Types.js.map +1 -1
- package/fragments/drawer-list/DrawerList.js.map +1 -1
- package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/VisibilityByTheme.d.ts +1 -1
- package/shared/VisibilityByTheme.js.map +1 -1
- package/shared/helpers.d.ts +2 -2
- package/shared/helpers.js.map +1 -1
- package/style/dnb-ui-components.css +26 -22
- package/style/dnb-ui-components.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
- package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
- package/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
- package/style/themes/theme-ui/ui-theme-basis.css +17 -11
- package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +60 -39
- package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-elements.css +17 -11
- package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-tags.css +23 -11
- package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +1 -1
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeightAnimation.js","names":["React","classnames","useHeightAnimation","Space","HeightAnimation","_ref","open","animate","keepInDOM","showOverflow","element","duration","className","innerRef","children","onInit","onOpen","onAnimationEnd","rest","_objectWithoutProperties","_excluded","ref","useRef","props","isInDOM","isVisible","isVisibleParallax","isAnimating","style","createElement","_extends","undefined"],"sources":["../../../../src/components/height-animation/HeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n useHeightAnimation,\n useHeightAnimationOptions,\n} from './useHeightAnimation'\nimport Space, { SpaceProps } from '../space/Space'\n\nimport type { DynamicElement } from '../../shared/types'\n\nexport type HeightAnimationProps = {\n /**\n *
|
|
1
|
+
{"version":3,"file":"HeightAnimation.js","names":["React","classnames","useHeightAnimation","Space","HeightAnimation","_ref","open","animate","keepInDOM","showOverflow","element","duration","className","innerRef","children","onInit","onOpen","onAnimationEnd","rest","_objectWithoutProperties","_excluded","ref","useRef","props","isInDOM","isVisible","isVisibleParallax","isAnimating","style","createElement","_extends","undefined"],"sources":["../../../../src/components/height-animation/HeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n useHeightAnimation,\n useHeightAnimationOptions,\n} from './useHeightAnimation'\nimport Space, { SpaceProps } from '../space/Space'\n\nimport type { DynamicElement } from '../../shared/types'\n\nexport type HeightAnimationProps = {\n /**\n * Whether the nested children content should be kept in the DOM or not.\n * Default: false\n */\n keepInDOM?: boolean\n\n /**\n * Set to `true` to omit the usage of \"overflow: hidden;\"\n * Default: false\n */\n showOverflow?: boolean\n\n /**\n * Set to `true` ensure the nested children content will be kept in the DOM.\n * Default: 400\n */\n duration?: number\n\n /**\n * Define a custom HTML Element.\n * Default: div\n */\n element?: DynamicElement\n\n /**\n * Send along a custom React Ref.\n * Default: null\n */\n innerRef?: React.RefObject<HTMLElement>\n} & useHeightAnimationOptions\n\nexport type HeightAnimationAllProps = HeightAnimationProps &\n SpacingProps &\n Omit<React.HTMLProps<HTMLElement>, 'ref'>\n\nexport default function HeightAnimation({\n open = true,\n animate = true,\n keepInDOM = false,\n showOverflow = false,\n element,\n duration,\n className,\n innerRef,\n children,\n onInit = null,\n onOpen = null,\n onAnimationEnd = null,\n ...rest\n}: HeightAnimationAllProps) {\n const ref = React.useRef<HTMLElement>()\n const props = rest as SpaceProps\n\n const { isInDOM, isVisible, isVisibleParallax, isAnimating } =\n useHeightAnimation(innerRef || ref, {\n open,\n animate,\n children,\n onInit,\n onOpen,\n onAnimationEnd,\n })\n\n if (!isInDOM && !keepInDOM) {\n return null\n }\n\n const style: React.CSSProperties = {}\n if (duration) {\n style['--duration'] = `${duration}ms`\n }\n\n return (\n <Space\n innerRef={innerRef || ref}\n element={element || 'div'}\n className={classnames(\n 'dnb-height-animation',\n isInDOM && 'dnb-height-animation--is-in-dom',\n isVisible && 'dnb-height-animation--is-visible',\n isVisibleParallax && 'dnb-height-animation--parallax',\n isAnimating && 'dnb-height-animation--animating',\n !isVisible &&\n !isAnimating &&\n !open &&\n 'dnb-height-animation--hidden',\n showOverflow && 'dnb-height-animation--show-overflow',\n className\n )}\n style={style}\n aria-hidden={keepInDOM ? !open : undefined}\n {...props}\n >\n {children}\n </Space>\n )\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAEnC,SACEC,kBAAkB,QAEb,sBAAsB;AAC7B,OAAOC,KAAK,MAAsB,gBAAgB;AAwClD,eAAe,SAASC,eAAeA,CAAAC,IAAA,EAcX;EAAA,IAdY;MACtCC,IAAI,GAAG,IAAI;MACXC,OAAO,GAAG,IAAI;MACdC,SAAS,GAAG,KAAK;MACjBC,YAAY,GAAG,KAAK;MACpBC,OAAO;MACPC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MACRC,QAAQ;MACRC,MAAM,GAAG,IAAI;MACbC,MAAM,GAAG,IAAI;MACbC,cAAc,GAAG;IAEM,CAAC,GAAAZ,IAAA;IADrBa,IAAI,GAAAC,wBAAA,CAAAd,IAAA,EAAAe,SAAA;EAEP,MAAMC,GAAG,GAAGrB,KAAK,CAACsB,MAAM,CAAc,CAAC;EACvC,MAAMC,KAAK,GAAGL,IAAkB;EAEhC,MAAM;IAAEM,OAAO;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAY,CAAC,GAC1DzB,kBAAkB,CAACW,QAAQ,IAAIQ,GAAG,EAAE;IAClCf,IAAI;IACJC,OAAO;IACPO,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC;EACF,CAAC,CAAC;EAEJ,IAAI,CAACO,OAAO,IAAI,CAAChB,SAAS,EAAE;IAC1B,OAAO,IAAI;EACb;EAEA,MAAMoB,KAA0B,GAAG,CAAC,CAAC;EACrC,IAAIjB,QAAQ,EAAE;IACZiB,KAAK,CAAC,YAAY,CAAC,GAAI,GAAEjB,QAAS,IAAG;EACvC;EAEA,OACEX,KAAA,CAAA6B,aAAA,CAAC1B,KAAK,EAAA2B,QAAA;IACJjB,QAAQ,EAAEA,QAAQ,IAAIQ,GAAI;IAC1BX,OAAO,EAAEA,OAAO,IAAI,KAAM;IAC1BE,SAAS,EAAEX,UAAU,CACnB,sBAAsB,EAUtBW,SAAS,EARTa,SAAS,GAAI,kCAAkC,GAI7C,CAACE,WAAW,IACZ,CAACrB,IAAI,IACL,8BAA8B,EAPhCkB,OAAO,IAAI,iCAAiC,EAE5CE,iBAAiB,IAAI,gCAAgC,EACrDC,WAAW,IAAI,iCAAiC,EAKhDlB,YAAY,IAAI,qCAElB,CAAE;IACFmB,KAAK,EAAEA,KAAM;IACb,eAAapB,SAAS,GAAG,CAACF,IAAI,GAAGyB;EAAU,GACvCR,KAAK,GAERT,QACI,CAAC;AAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHeightAnimation.js","names":["React","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationEnd","animRef","useRef","isOpen","setIsOpen","useState","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","isInitialRender","setIsMounted","global","IS_TEST","current","onStart","state","onEnd","_animRef$current","remove","useOpenClose","useAdjust","isInDOM","anim","setElement","close","fromHeight","shouldAdjust","_animRef$current2","useMemo","_animRef$current3","getHeight","elem","style","height","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport HeightAnimationInstance from './HeightAnimationInstance'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type useHeightAnimationOptions = {\n /**\n * Set to `true`, when initially `false` was given, to animate from 0px to auto.\n * Default: true\n */\n open?: boolean\n\n /**\n * Set to `false` to omit the animation.\n * Default: true\n */\n animate?: boolean\n\n /**\n * In order to let the Hook know when children has changed\n */\n children?: React.ReactNode | HTMLElement\n\n /**\n * Is called once before mounting the component (useLayoutEffect)\n */\n onInit?: (instance: HeightAnimationInstance) => void\n\n /**\n * Is called when fully opened or closed\n */\n onOpen?: (isOpen: boolean) => void\n\n /**\n * Is called when animation is done and the full height is reached.\n */\n onAnimationEnd?: (state: HeightAnimationOnEndTypes) => void\n}\n\nexport type HeightAnimationOnStartTypes =\n | 'opening'\n | 'closing'\n | 'adjusting'\n\nexport type HeightAnimationOnEndTypes = 'opened' | 'closed' | 'adjusted'\n\nexport function useHeightAnimation(\n targetRef: React.RefObject<HTMLElement>,\n {\n open = true,\n animate = true,\n children = null,\n onInit = null,\n onOpen = null,\n onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const animRef = React.useRef<HeightAnimationInstance>(null)\n const [isOpen, setIsOpen] = React.useState(open)\n const [isVisible, setIsVisible] = React.useState(false)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [isVisibleParallax, setParallax] = React.useState(open)\n const [isInitialRender, setIsMounted] = React.useState(true)\n\n if (typeof global !== 'undefined' && global.IS_TEST) {\n animate = false\n }\n\n React.useEffect(() => setIsMounted(false), []) // eslint-disable-line\n\n useLayoutEffect(() => {\n animRef.current = new HeightAnimationInstance({ animate })\n\n if (isInitialRender && onInit) {\n onInit(animRef.current)\n }\n\n if (isInitialRender && isOpen) {\n onOpen?.(true)\n }\n\n if (animate) {\n animRef.current.onStart((state: HeightAnimationOnStartTypes) => {\n switch (state) {\n case 'opening':\n setIsVisible(true)\n setParallax(true)\n setIsAnimating(true)\n break\n\n case 'closing':\n setParallax(false)\n setIsAnimating(true)\n break\n\n case 'adjusting':\n setIsAnimating(true)\n break\n }\n })\n\n animRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\n setIsOpen(true)\n setIsAnimating(false)\n onOpen?.(true)\n break\n\n case 'closed':\n setIsVisible(false)\n setIsOpen(false)\n setParallax(false)\n setIsAnimating(false)\n onOpen?.(false)\n break\n\n case 'adjusted':\n setIsAnimating(false)\n break\n }\n\n onAnimationEnd?.(state)\n })\n }\n\n return () => animRef.current?.remove()\n }, [animate]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, animRef, targetRef, isInitialRender })\n useAdjust({ children, animRef, isInitialRender })\n\n return {\n open,\n isOpen,\n isInDOM: open || isVisible,\n isVisible,\n isVisibleParallax,\n isAnimating,\n }\n}\n\nfunction useOpenClose({ open, animRef, targetRef, isInitialRender }) {\n useLayoutEffect(() => {\n if (!targetRef.current) {\n return // stop here\n }\n\n const anim = animRef.current\n\n anim.setElement(targetRef.current)\n\n if (open) {\n anim.open({ animate: !isInitialRender })\n } else if (anim.state === 'init') {\n anim.close({ animate: false })\n } else {\n anim.close()\n }\n }, [open, targetRef, animRef]) // eslint-disable-line\n}\n\nfunction useAdjust({ children, animRef, isInitialRender }) {\n const fromHeight = React.useRef(0)\n\n const shouldAdjust = () => {\n switch (animRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return !isInitialRender\n }\n\n return false\n }\n\n React.useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = animRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\n /**\n * Ensure we don't have height, while we get the \"toHeight\" again\n * We may move this inside of the HeightAnimationInstance class later,\n * but the \"GlobalStatus\" is currently relaying on \"getUnknownHeight\" inside of adjustTo\n */\n animRef.current.elem.style.height = ''\n\n animRef.current.adjustTo(\n fromHeight.current,\n animRef.current.getHeight() // use getHeight instead of getUnknownHeight because of the additional, disturbing DOM manipupation\n )\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useHeightAnimation.js","names":["React","HeightAnimationInstance","useLayoutEffect","window","useEffect","useHeightAnimation","targetRef","open","animate","children","onInit","onOpen","onAnimationEnd","animRef","useRef","isOpen","setIsOpen","useState","isVisible","setIsVisible","isAnimating","setIsAnimating","isVisibleParallax","setParallax","isInitialRender","setIsMounted","global","IS_TEST","current","onStart","state","onEnd","_animRef$current","remove","useOpenClose","useAdjust","isInDOM","anim","setElement","close","fromHeight","shouldAdjust","_animRef$current2","useMemo","_animRef$current3","getHeight","elem","style","height","adjustTo"],"sources":["../../../../src/components/height-animation/useHeightAnimation.tsx"],"sourcesContent":["import React from 'react'\nimport HeightAnimationInstance from './HeightAnimationInstance'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type useHeightAnimationOptions = {\n /**\n * Set to `true`, when initially `false` was given, to animate from 0px to auto.\n * Default: true\n */\n open?: boolean\n\n /**\n * Set to `false` to omit the animation.\n * Default: true\n */\n animate?: boolean\n\n /**\n * In order to let the Hook know when children has changed\n */\n children?: React.ReactNode | HTMLElement\n\n /**\n * Is called once before mounting the component (useLayoutEffect)\n */\n onInit?: (instance: HeightAnimationInstance) => void\n\n /**\n * Is called when fully opened or closed\n */\n onOpen?: (isOpen: boolean) => void\n\n /**\n * Is called when animation is done and the full height is reached.\n */\n onAnimationEnd?: (state: HeightAnimationOnEndTypes) => void\n}\n\nexport type HeightAnimationOnStartTypes =\n | 'opening'\n | 'closing'\n | 'adjusting'\n\nexport type HeightAnimationOnEndTypes = 'opened' | 'closed' | 'adjusted'\n\nexport function useHeightAnimation(\n targetRef: React.RefObject<HTMLElement>,\n {\n open = true,\n animate = true,\n children = null,\n onInit = null,\n onOpen = null,\n onAnimationEnd = null,\n }: useHeightAnimationOptions = {}\n) {\n const animRef = React.useRef<HeightAnimationInstance>(null)\n const [isOpen, setIsOpen] = React.useState(open)\n const [isVisible, setIsVisible] = React.useState(false)\n const [isAnimating, setIsAnimating] = React.useState(false)\n const [isVisibleParallax, setParallax] = React.useState(open)\n const [isInitialRender, setIsMounted] = React.useState(true)\n\n if (typeof global !== 'undefined' && global.IS_TEST) {\n animate = false\n }\n\n React.useEffect(() => setIsMounted(false), []) // eslint-disable-line\n\n useLayoutEffect(() => {\n animRef.current = new HeightAnimationInstance({ animate })\n\n if (isInitialRender && onInit) {\n onInit(animRef.current)\n }\n\n if (isInitialRender && isOpen) {\n onOpen?.(true)\n }\n\n if (animate) {\n animRef.current.onStart((state: HeightAnimationOnStartTypes) => {\n switch (state) {\n case 'opening':\n setIsVisible(true)\n setParallax(true)\n setIsAnimating(true)\n break\n\n case 'closing':\n setParallax(false)\n setIsAnimating(true)\n break\n\n case 'adjusting':\n setIsAnimating(true)\n break\n }\n })\n\n animRef.current.onEnd((state: HeightAnimationOnEndTypes) => {\n switch (state) {\n case 'opened':\n setIsOpen(true)\n setIsAnimating(false)\n onOpen?.(true)\n break\n\n case 'closed':\n setIsVisible(false)\n setIsOpen(false)\n setParallax(false)\n setIsAnimating(false)\n onOpen?.(false)\n break\n\n case 'adjusted':\n setIsAnimating(false)\n break\n }\n\n onAnimationEnd?.(state)\n })\n }\n\n return () => animRef.current?.remove()\n }, [animate]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useOpenClose({ open, animRef, targetRef, isInitialRender })\n useAdjust({ children, animRef, isInitialRender })\n\n return {\n open,\n isOpen,\n isInDOM: open || isVisible,\n isVisible,\n isVisibleParallax,\n isAnimating,\n }\n}\n\nfunction useOpenClose({ open, animRef, targetRef, isInitialRender }) {\n useLayoutEffect(() => {\n if (!targetRef.current) {\n return // stop here\n }\n\n const anim = animRef.current\n\n anim.setElement(targetRef.current)\n\n if (open) {\n anim.open({ animate: !isInitialRender })\n } else if (anim.state === 'init') {\n anim.close({ animate: false })\n } else {\n anim.close()\n }\n }, [open, targetRef, animRef]) // eslint-disable-line\n}\n\nfunction useAdjust({ children, animRef, isInitialRender }) {\n const fromHeight = React.useRef(0)\n\n const shouldAdjust = () => {\n switch (animRef.current?.state) {\n case 'opened':\n case 'adjusted':\n case 'adjusting':\n return !isInitialRender\n }\n\n return false\n }\n\n React.useMemo(() => {\n if (shouldAdjust()) {\n fromHeight.current = animRef.current?.getHeight()\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useLayoutEffect(() => {\n if (shouldAdjust()) {\n /**\n * Ensure we don't have height, while we get the \"toHeight\" again\n * We may move this inside of the HeightAnimationInstance class later,\n * but the \"GlobalStatus\" is currently relaying on \"getUnknownHeight\" inside of adjustTo\n */\n animRef.current.elem.style.height = ''\n\n animRef.current.adjustTo(\n fromHeight.current,\n animRef.current.getHeight() // use getHeight instead of getUnknownHeight because of the additional, disturbing DOM manipulation\n )\n }\n }, [children]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SvgComparison.js","names":["React","SvgComparison","props","createElement","Fragment","_extends","width","height","_path","d","stroke","fill","strokeweight","strokeLinecap","strokeLinejoin","_path2","clipRule","_path3","_path4","_path5","fillRule","_path6","_path7"],"sources":["../../../../../src/components/icon/lib/SvgComparison.js"],"sourcesContent":["/**\n * I used this tools:\n * to convert https://svg2jsx.herokuapp.com\n * to
|
|
1
|
+
{"version":3,"file":"SvgComparison.js","names":["React","SvgComparison","props","createElement","Fragment","_extends","width","height","_path","d","stroke","fill","strokeweight","strokeLinecap","strokeLinejoin","_path2","clipRule","_path3","_path4","_path5","fillRule","_path6","_path7"],"sources":["../../../../../src/components/icon/lib/SvgComparison.js"],"sourcesContent":["/**\n * I used this tools:\n * to convert https://svg2jsx.herokuapp.com\n * to optimize https://jakearchibald.github.io/svgomg/\n */\n\nimport React from 'react'\n\nconst SvgComparison = (props) => (\n <React.Fragment>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n d=\"M.5 23.56h23\"\n stroke=\"black\"\n fill=\"white\"\n strokeweight=\"40\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M4.5 19.24a.49.49 0 0 0-.5-.48H2a.49.49 0 0 0-.5.48v4.32h3v-4.32zM10.5 14.44a.49.49 0 0 0-.5-.48H8a.49.49 0 0 0-.5.48v9.12h3v-9.12zM16.5 16.36a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v7.2h3v-7.2zM22.5 9.64a.49.49 0 0 0-.5-.48h-2a.49.49 0 0 0-.5.48v13.92h3V9.64zM3 13.48c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM9 8.68c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM15 10.6c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44zM21 4.36c.828 0 1.5-.645 1.5-1.44 0-.795-.672-1.44-1.5-1.44s-1.5.645-1.5 1.44c0 .795.672 1.44 1.5 1.44z\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4.261 11.032l3.587-2.87M10.424 7.695l3.153 1.009M19.8 3.784l-3.759 4.21\"\n stroke=\"black\"\n fill=\"white\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path d=\"M.5 23.06a.5.5 0 1 0 0 1v-1zm23 1a.5.5 0 0 0 0-1v1zm-22-.5H1a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H7a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H13a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zm3 0H19a.5.5 0 0 0 .5.5v-.5zm3 0v.5a.5.5 0 0 0 .5-.5h-.5zM3.949 10.642a.5.5 0 0 0 .624.78l-.624-.78zm4.211-2.09a.5.5 0 1 0-.624-.78l.624.78zm2.416-1.333a.5.5 0 1 0-.304.952l.304-.952zm2.849 1.961a.5.5 0 1 0 .304-.952l-.304.952zm6.748-5.063a.5.5 0 0 0-.746-.666l.746.666zm-4.505 3.544a.5.5 0 1 0 .746.666l-.746-.666zM.5 24.06h23v-1H.5v1zM5 19.24c0-.56-.467-.98-1-.98v1l.007.001a.02.02 0 0 1-.004-.006A.038.038 0 0 1 4 19.24h1zm-1-.98H2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L2 19.26v-1zm-1 .98v4.32h1v-4.32H1zm.5 4.82h3v-1h-3v1zm3.5-.5v-4.32H4v4.32h1zm6-9.12c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 10 14.44h1zm-1-.98H8v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1l-.003.015a.02.02 0 0 1-.004.006L8 14.46v-1zm-1 .98v9.12h1v-9.12H7zm.5 9.62h3v-1h-3v1zm3.5-.5v-9.12h-1v9.12h1zm6-7.2c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 16 16.36h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L14 16.38v-1zm-1 .98v7.2h1v-7.2h-1zm.5 7.7h3v-1h-3v1zm3.5-.5v-7.2h-1v7.2h1zm6-13.92c0-.56-.467-.98-1-.98v1l.007.001-.004-.006A.04.04 0 0 1 22 9.64h1zm-1-.98h-2v1h2v-1zm-2 0c-.533 0-1 .42-1 .98h1a.04.04 0 0 1-.003.015.022.022 0 0 1-.004.006L20 9.66v-1zm-1 .98v13.92h1V9.64h-1zm.5 14.42h3v-1h-3v1zm3.5-.5V9.64h-1v13.92h1zM3 13.98c1.085 0 2-.85 2-1.94H4c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM3 10.1c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H1zm8-2.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM9 5.3c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zM7 7.24c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94H7zm8 3.86c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zm-2-1.94c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zm8-4.3c1.085 0 2-.85 2-1.94h-1c0 .5-.428.94-1 .94v1zm2-1.94c0-1.09-.915-1.94-2-1.94v1c.572 0 1 .44 1 .94h1zM21 .98c-1.085 0-2 .85-2 1.94h1c0-.5.428-.94 1-.94v-1zm-2 1.94c0 1.09.915 1.94 2 1.94v-1c-.572 0-1-.44-1-.94h-1zM4.573 11.422l3.587-2.87-.624-.78-3.587 2.87.624.78zm5.699-3.25l3.153 1.008.304-.952-3.153-1.01-.304.953zm9.155-4.721l-3.759 4.21.746.666 3.759-4.21-.746-.666z\" />\n </svg>\n <svg width=\"24\" height=\"24\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M.5 23.08a.5.5 0 0 1 .5-.5h23a.5.5 0 1 1 0 1H1a.5.5 0 0 1-.5-.5z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.5 18.76c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v4.32a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4.32zm1 .02v3.8h2v-3.8h-2zM7.5 13.96c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v9.12a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5v-9.12zm1 .02v8.6h2v-8.6h-2zM13.5 15.88c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v7.2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-7.2zm1 .02v6.68h2V15.9h-2zM19.5 9.16c0-.56.467-.98 1-.98h2c.533 0 1 .42 1 .98v13.92a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V9.16zm1 .02v13.4h2V9.18h-2zM1.5 11.56c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM7.5 6.76c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM13.5 8.68c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94zM19.5 2.44c0-1.09.915-1.94 2-1.94s2 .85 2 1.94c0 1.09-.915 1.94-2 1.94s-2-.85-2-1.94zm2-.94c-.572 0-1 .44-1 .94 0 .5.428.94 1 .94.572 0 1-.44 1-.94 0-.5-.428-.94-1-.94z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.738 7.37a.5.5 0 0 1-.078.702l-3.587 2.87a.5.5 0 0 1-.624-.78l3.587-2.87a.5.5 0 0 1 .702.077zM10.448 7.063a.5.5 0 0 1 .628-.324l3.153 1.009a.5.5 0 1 1-.304.952l-3.153-1.009a.5.5 0 0 1-.324-.628zM20.633 2.931a.5.5 0 0 1 .04.706l-3.759 4.21a.5.5 0 0 1-.746-.666l3.76-4.21a.5.5 0 0 1 .705-.04z\"\n />\n </svg>\n </React.Fragment>\n)\n\nexport default SvgComparison\n"],"mappings":";;AAMA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,aAAa,GAAIC,KAAK,IAC1BF,KAAA,CAAAG,aAAA,CAACH,KAAK,CAACI,QAAQ,QACbJ,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAM,KAAA,KAAAA,KAAA,GACnCR,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,cAAc;EAChBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZC,YAAY,EAAC,IAAI;EACjBC,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAC,MAAA,KAAAA,MAAA,GACFf,KAAA,CAAAG,aAAA;EACEa,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC,mqBAAmqB;EACrqBC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,GAAAG,MAAA,KAAAA,MAAA,GACFjB,KAAA,CAAAG,aAAA;EACEM,CAAC,EAAC,0EAA0E;EAC5EC,MAAM,EAAC,OAAO;EACdC,IAAI,EAAC,OAAO;EACZE,aAAa,EAAC,OAAO;EACrBC,cAAc,EAAC;AAAO,CACvB,CAAC,CACC,CAAC,EACNd,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAgB,MAAA,KAAAA,MAAA,GACnClB,KAAA,CAAAG,aAAA;EAAMM,CAAC,EAAC;AAAo/E,CAAE,CAAC,CAC5/E,CAAC,EACNT,KAAA,CAAAG,aAAA,QAAAE,QAAA;EAAKC,KAAK,EAAC,IAAI;EAACC,MAAM,EAAC;AAAI,GAAKL,KAAK,GAAAiB,MAAA,KAAAA,MAAA,GACnCnB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAkE,CACrE,CAAC,GAAAY,MAAA,KAAAA,MAAA,GACFrB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAgoC,CACnoC,CAAC,GAAAa,MAAA,KAAAA,MAAA,GACFtB,KAAA,CAAAG,aAAA;EACEiB,QAAQ,EAAC,SAAS;EAClBJ,QAAQ,EAAC,SAAS;EAClBP,CAAC,EAAC;AAAsS,CACzS,CAAC,CACC,CACS,CACjB;AAED,eAAeR,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_ANDROID","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","correction","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","undefined","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","showMask","fix","currency","handleNumberMask","number_mask","getInputModeFromMask","allowNegative","instanceOf","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value = String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everyting else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParams, props) => {\n const correction = () => {\n try {\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(mask) === false) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const maskParams = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...mask_options,\n ...currency_mask,\n }\n\n const fix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof maskParams.currency === 'string'\n ? maskParams.currency\n : 'kr'\n\n maskParams.suffix = ` ${fix}`\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getInputModeFromMask(mask) {\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on Android and iOS\n if ((IS_ANDROID || IS_IOS) && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n if (maskParams && mask?.instanceOf === 'createNumberMask') {\n return maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric'\n }\n return undefined\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_ANDROID","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","correction","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","undefined","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","showMask","fix","currency","handleNumberMask","number_mask","getInputModeFromMask","allowNegative","instanceOf","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_ANDROID, IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value = String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everything else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParams, props) => {\n const correction = () => {\n try {\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(mask) === false) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const maskParams = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...mask_options,\n ...currency_mask,\n }\n\n const fix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof maskParams.currency === 'string'\n ? maskParams.currency\n : 'kr'\n\n maskParams.suffix = ` ${fix}`\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getInputModeFromMask(mask) {\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on Android and iOS\n if ((IS_ANDROID || IS_IOS) && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n if (maskParams && mask?.instanceOf === 'createNumberMask') {\n return maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric'\n }\n return undefined\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextMask.js","names":["React","PropTypes","createTextMaskInputElement","isNil","TextMask","PureComponent","constructor","props","_defineProperty","event","textMaskInputElement","update","onChange","inputRef","createRef","componentDidMount","initTextMask","value","_objectSpread","inputElement","current","componentDidUpdate","prevProps","pipe","mask","guide","placeholderChar","showMask","settings","isPipeChanged","toString","isMaskChanged","isSettingChanged","Object","keys","some","prop","isValueChanged","render","_this$props","keepCharPositions","_objectWithoutProperties","_excluded","params","defaultValue","cloneElement","createElement","_extends","ref","process","env","NODE_ENV","propTypes","oneOfType","array","func","bool","shape","isRequired","object","node","string","number"],"sources":["../../../../src/components/input-masked/TextMask.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport createTextMaskInputElement from './text-mask/createTextMaskInputElement'\nimport { isNil } from './text-mask/utilities'\n\nexport default class TextMask extends React.PureComponent {\n static propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.func,\n PropTypes.bool,\n PropTypes.shape({\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n pipe: PropTypes.func,\n }),\n ]).isRequired,\n inputRef: PropTypes.object,\n inputElement: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n onChange: PropTypes.func,\n guide: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n pipe: PropTypes.func,\n placeholderChar: PropTypes.string,\n keepCharPositions: PropTypes.bool,\n showMask: PropTypes.bool,\n }\n\n static defaultProps = {\n inputElement: null,\n inputRef: null,\n onChange: null,\n guide: null,\n value: null,\n pipe: null,\n placeholderChar: null,\n keepCharPositions: null,\n showMask: null,\n }\n\n constructor(props) {\n super(props)\n\n this.inputRef = props.inputRef || React.createRef()\n }\n\n componentDidMount() {\n this.initTextMask()\n }\n\n initTextMask() {\n const {\n props,\n props: { value },\n } = this\n\n this.textMaskInputElement = createTextMaskInputElement({\n ...props,\n inputElement: this.inputRef.current,\n })\n this.textMaskInputElement.update(value)\n }\n\n onChange = (event) => {\n this.textMaskInputElement.update()\n\n if (typeof this.props.onChange === 'function') {\n return this.props.onChange(event)\n }\n }\n\n componentDidUpdate(prevProps) {\n // Getting props affecting value\n const { value, pipe, mask, guide, placeholderChar, showMask } =\n this.props\n\n // Сalculate that settings was changed:\n // - `pipe` converting to string, to compare function content\n // - `mask` converting to string, to compare values or function content\n // - `keepCharPositions`
|
|
1
|
+
{"version":3,"file":"TextMask.js","names":["React","PropTypes","createTextMaskInputElement","isNil","TextMask","PureComponent","constructor","props","_defineProperty","event","textMaskInputElement","update","onChange","inputRef","createRef","componentDidMount","initTextMask","value","_objectSpread","inputElement","current","componentDidUpdate","prevProps","pipe","mask","guide","placeholderChar","showMask","settings","isPipeChanged","toString","isMaskChanged","isSettingChanged","Object","keys","some","prop","isValueChanged","render","_this$props","keepCharPositions","_objectWithoutProperties","_excluded","params","defaultValue","cloneElement","createElement","_extends","ref","process","env","NODE_ENV","propTypes","oneOfType","array","func","bool","shape","isRequired","object","node","string","number"],"sources":["../../../../src/components/input-masked/TextMask.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport createTextMaskInputElement from './text-mask/createTextMaskInputElement'\nimport { isNil } from './text-mask/utilities'\n\nexport default class TextMask extends React.PureComponent {\n static propTypes = {\n mask: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.func,\n PropTypes.bool,\n PropTypes.shape({\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n pipe: PropTypes.func,\n }),\n ]).isRequired,\n inputRef: PropTypes.object,\n inputElement: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n onChange: PropTypes.func,\n guide: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n pipe: PropTypes.func,\n placeholderChar: PropTypes.string,\n keepCharPositions: PropTypes.bool,\n showMask: PropTypes.bool,\n }\n\n static defaultProps = {\n inputElement: null,\n inputRef: null,\n onChange: null,\n guide: null,\n value: null,\n pipe: null,\n placeholderChar: null,\n keepCharPositions: null,\n showMask: null,\n }\n\n constructor(props) {\n super(props)\n\n this.inputRef = props.inputRef || React.createRef()\n }\n\n componentDidMount() {\n this.initTextMask()\n }\n\n initTextMask() {\n const {\n props,\n props: { value },\n } = this\n\n this.textMaskInputElement = createTextMaskInputElement({\n ...props,\n inputElement: this.inputRef.current,\n })\n this.textMaskInputElement.update(value)\n }\n\n onChange = (event) => {\n this.textMaskInputElement.update()\n\n if (typeof this.props.onChange === 'function') {\n return this.props.onChange(event)\n }\n }\n\n componentDidUpdate(prevProps) {\n // Getting props affecting value\n const { value, pipe, mask, guide, placeholderChar, showMask } =\n this.props\n\n // Сalculate that settings was changed:\n // - `pipe` converting to string, to compare function content\n // - `mask` converting to string, to compare values or function content\n // - `keepCharPositions` excludes, because it affect only cursor position\n const settings = { guide, placeholderChar, showMask }\n const isPipeChanged =\n typeof pipe === 'function' && typeof prevProps.pipe === 'function'\n ? pipe.toString() !== prevProps.pipe.toString()\n : (isNil(pipe) && !isNil(prevProps.pipe)) ||\n (!isNil(pipe) && isNil(prevProps.pipe))\n const isMaskChanged = mask.toString() !== prevProps.mask.toString()\n const isSettingChanged =\n Object.keys(settings).some(\n (prop) => settings[prop] !== prevProps[prop]\n ) ||\n isMaskChanged ||\n isPipeChanged\n\n // Сalculate that value was changed\n const isValueChanged =\n value !== this.inputRef.current.value || prevProps.value !== value\n\n // Check value and settings to prevent duplicating update() call\n if (isValueChanged || isSettingChanged) {\n this.initTextMask()\n }\n }\n\n render() {\n const {\n inputElement,\n inputRef, // eslint-disable-line\n mask, // eslint-disable-line\n guide, // eslint-disable-line\n pipe, // eslint-disable-line\n placeholderChar, // eslint-disable-line\n keepCharPositions, // eslint-disable-line\n value, // eslint-disable-line\n onChange, // eslint-disable-line\n showMask, // eslint-disable-line\n\n ...props\n } = this.props\n\n const params = {\n onChange: this.onChange,\n defaultValue: this.props.value,\n ...props,\n }\n\n return inputElement ? (\n React.cloneElement(inputElement, params)\n ) : (\n <input ref={this.inputRef} {...params} />\n )\n }\n}\n"],"mappings":"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"}
|
|
@@ -248,7 +248,6 @@ class Modal extends React.PureComponent {
|
|
|
248
248
|
}
|
|
249
249
|
try {
|
|
250
250
|
document.documentElement.removeAttribute('data-dnb-modal-active');
|
|
251
|
-
document.body.setAttribute('data-dnb-modal-active', 'false');
|
|
252
251
|
} catch (e) {
|
|
253
252
|
warn('Modal: Error on remove "data-dnb-modal-active"', e);
|
|
254
253
|
}
|
|
@@ -260,7 +259,6 @@ class Modal extends React.PureComponent {
|
|
|
260
259
|
if (typeof document !== 'undefined') {
|
|
261
260
|
try {
|
|
262
261
|
document.documentElement.setAttribute('data-dnb-modal-active', modalId);
|
|
263
|
-
document.body.setAttribute('data-dnb-modal-active', 'true');
|
|
264
262
|
} catch (e) {
|
|
265
263
|
warn('Modal: Error on set "data-dnb-modal-active"', e);
|
|
266
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","open_state","_open_state","hide","no_animation","modalActive","constructor","_defineProperty","event","showModal","preventDefault","toggleNow","animation_duration","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","ifIsLatest","triggeredBy","prevent_close","id","close","list","length","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","body","modalId","render","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n\n state = {\n hide: false,\n modalActive: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n open_state: null,\n direct_dom_return: false,\n class: null,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(props.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(props.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.props\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay, no_animation } = this.props\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive } = this.state\n const { close_modal, open_state, animation_duration } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n\n this.setActiveState(this._id)\n } else if (modalActive === false) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n }, parseFloat(String(animation_duration)) / 3)\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = null } = { ifIsLatest: true }\n ) => {\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n\n // Deprecated\n document.body.setAttribute('data-dnb-modal-active', 'false')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n\n // Deprecated\n document.body.setAttribute('data-dnb-modal-active', 'true')\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n\n id, // eslint-disable-line\n open_state, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.class,\n triggerAttributes.className\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","open_state","_open_state","hide","no_animation","modalActive","constructor","_defineProperty","event","showModal","preventDefault","toggleNow","animation_duration","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","ifIsLatest","triggeredBy","prevent_close","id","close","list","length","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","modalId","render","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n\n state = {\n hide: false,\n modalActive: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n open_state: null,\n direct_dom_return: false,\n class: null,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(props.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(props.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.props\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay, no_animation } = this.props\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive } = this.state\n const { close_modal, open_state, animation_duration } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n\n this.setActiveState(this._id)\n } else if (modalActive === false) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n }, parseFloat(String(animation_duration)) / 3)\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = null } = { ifIsLatest: true }\n ) => {\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n\n id, // eslint-disable-line\n open_state, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.class,\n triggerAttributes.className\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyScrollLock.js","names":["warn","isChildOfElement","checkIfHasScrollbar","isServer","window","detectOS","ua","navigator","userAgent","ipad","test","iphone","android","ios","lockedNum","initialClientY","initialClientX","callbackUnlock","documentListenerAdded","lockedElements","eventListenerOptions","getEventListenerOptions","passive","options","isSupportOptions","capture","setOverflowHidden","htmlElement","document","documentElement","bodyElement","body","htmlStyle","Object","assign","style","bodyStyle","scrollBarWidth","innerWidth","clientWidth","overflow","height","setProperty","boxSizing","marginRight","forEach","x","removeProperty","e","setOverflowHiddenIOS","targetElement","elementArray","Array","isArray","element","indexOf","ontouchstart","event","targetTouches","clientY","clientX","ontouchmove","length","handleScroll","push","addEventListener","preventDefault","index","splice","removeEventListener","setOverflowHiddenAndroid","unbind","scrollTop","position","top","left","right","scrollBehavior","getComputedStyle","found","find","target","cancelable","scrollLeft","scrollWidth","scrollHeight","clientHeight","isVertical","Math","abs","isOnTop","isOnLeft","isOnRight","isOnBottom","hasScrollbar","stopPropagation","checkTargetElement","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","pop"],"sources":["../../../../src/components/modal/bodyScrollLock.js"],"sourcesContent":["import {\n warn,\n isChildOfElement,\n checkIfHasScrollbar,\n} from '../../shared/component-helper'\n\nconst isServer = () => typeof window === 'undefined'\nconst detectOS = (ua) => {\n ua = ua || navigator.userAgent\n const ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua)\n const iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua)\n const android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua)\n const ios = iphone || ipad\n return { ios, android }\n}\n\nlet lockedNum = 0\nlet initialClientY = 0\nlet initialClientX = 0\nlet callbackUnlock = null\nlet documentListenerAdded = false\n\nconst lockedElements = []\nconst eventListenerOptions = getEventListenerOptions({ passive: false })\nfunction getEventListenerOptions(options) {\n if (isServer()) {\n return // stop here\n }\n\n let isSupportOptions = true\n const { capture } = options\n return isSupportOptions\n ? options\n : typeof capture !== 'undefined'\n ? capture\n : false\n}\n\nconst setOverflowHidden = () => {\n try {\n const htmlElement = document.documentElement\n const bodyElement = document.body\n const htmlStyle = Object.assign({}, htmlElement.style)\n const bodyStyle = Object.assign({}, bodyElement.style)\n const scrollBarWidth =\n window.innerWidth - (bodyElement.clientWidth || window.innerWidth)\n\n htmlElement.style.overflow = 'hidden'\n htmlElement.style.height = '100%'\n htmlElement.style.setProperty(\n '--scrollbar-width',\n `${scrollBarWidth}px`\n )\n\n bodyElement.style.overflow = 'hidden'\n bodyElement.style.height = 'auto'\n bodyElement.style.boxSizing = 'border-box'\n bodyElement.style.marginRight = `${scrollBarWidth}px`\n\n return () => {\n try {\n // eslint-disable-next-line\n ;['overflow', 'height'].forEach((x) => {\n htmlElement.style[x] = htmlStyle[x] || ''\n })\n ;['overflow', 'height', 'boxSizing', 'margin'].forEach((x) => {\n bodyElement.style[x] = bodyStyle[x] || ''\n })\n htmlElement.style.removeProperty('--scrollbar-width')\n } catch (e) {\n warn(e)\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n\nconst setOverflowHiddenIOS = (targetElement) => {\n if (targetElement) {\n const elementArray = Array.isArray(targetElement)\n ? targetElement\n : [targetElement]\n elementArray.forEach((element) => {\n if (element && lockedElements.indexOf(element) === -1) {\n element.ontouchstart = (event) => {\n initialClientY = event.targetTouches[0].clientY\n initialClientX = event.targetTouches[0].clientX\n }\n element.ontouchmove = (event) => {\n if (event.targetTouches.length !== 1) {\n return // stop here\n }\n handleScroll(event, element)\n }\n lockedElements.push(element)\n }\n })\n }\n\n if (!documentListenerAdded) {\n document.addEventListener(\n 'touchmove',\n preventDefault,\n eventListenerOptions\n )\n documentListenerAdded = true\n }\n\n return () => {\n if (targetElement) {\n const elementArray = Array.isArray(targetElement)\n ? targetElement\n : [targetElement]\n elementArray.forEach((element) => {\n const index = lockedElements.indexOf(element)\n if (index !== -1) {\n element.ontouchmove = null\n element.ontouchstart = null\n lockedElements.splice(index, 1)\n }\n })\n }\n\n if (documentListenerAdded) {\n document.removeEventListener(\n 'touchmove',\n preventDefault,\n eventListenerOptions\n )\n documentListenerAdded = false\n }\n }\n}\n\nconst setOverflowHiddenAndroid = () => {\n try {\n const unbind = setOverflowHidden()\n\n const htmlElement = document.documentElement\n const bodyElement = document.body\n const scrollTop = htmlElement.scrollTop || bodyElement.scrollTop\n const bodyStyle = Object.assign({}, bodyElement.style)\n\n bodyElement.style.position = 'fixed'\n bodyElement.style.top = `-${scrollTop}px`\n bodyElement.style.left = '0'\n bodyElement.style.right = '0'\n\n return () => {\n unbind()\n\n try {\n // eslint-disable-next-line\n ;['position', 'top', 'right', 'left'].forEach((x) => {\n bodyElement.style[x] = bodyStyle[x] || ''\n })\n\n const scrollBehavior =\n window.getComputedStyle(htmlElement).scrollBehavior\n htmlElement.style.scrollBehavior = 'auto'\n htmlElement.scrollTop = scrollTop\n htmlElement.style.scrollBehavior = scrollBehavior\n } catch (e) {\n warn(e)\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n\nconst preventDefault = (event) => {\n const found = lockedElements.find((targetElement) => {\n return isChildOfElement(event.target, targetElement)\n })\n\n if (found || !event.cancelable) {\n return // stop here\n }\n\n event.preventDefault()\n}\n\n// Depreciated – this function can be removed as soon as we do not need to support iOS < 14\nconst handleScroll = (event, targetElement) => {\n try {\n if (targetElement) {\n const {\n scrollTop,\n scrollLeft,\n scrollWidth,\n scrollHeight,\n clientWidth,\n clientHeight,\n } = targetElement\n const clientX = event.targetTouches[0].clientX - initialClientX\n const clientY = event.targetTouches[0].clientY - initialClientY\n const isVertical = Math.abs(clientY) > Math.abs(clientX)\n const isOnTop = clientY > 0 && scrollTop === 0\n const isOnLeft = clientX > 0 && scrollLeft === 0\n const isOnRight =\n clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth\n const isOnBottom =\n clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight\n if (\n (isVertical && (isOnTop || isOnBottom)) ||\n (!isVertical && (isOnLeft || isOnRight))\n ) {\n const hasScrollbar = isChildOfElement(\n event.target,\n targetElement,\n checkIfHasScrollbar\n )\n\n if (hasScrollbar && hasScrollbar !== targetElement) {\n return true\n }\n\n return event.cancelable && event.preventDefault()\n }\n }\n\n event.stopPropagation()\n\n return true\n } catch (e) {\n warn(e)\n }\n}\n\nconst checkTargetElement = (targetElement) => {\n if (targetElement) return\n if (targetElement === null) return\n warn(\n `If scrolling is also required in the floating layer, ` +\n `the target element must be provided.`\n )\n}\n\nexport const disableBodyScroll = (targetElement) => {\n if (isServer()) {\n return // stop here\n }\n\n checkTargetElement(targetElement)\n\n try {\n // iOS\n if (detectOS().ios) {\n callbackUnlock = setOverflowHiddenIOS(targetElement)\n\n // Android or Desktop\n } else if (lockedNum <= 0) {\n if (detectOS().android) {\n callbackUnlock = setOverflowHiddenAndroid()\n } else {\n callbackUnlock = setOverflowHidden()\n }\n }\n\n lockedNum += 1\n } catch (e) {\n warn(e)\n }\n}\n\nexport const enableBodyScroll = (targetElement) => {\n if (isServer()) {\n return\n }\n\n checkTargetElement(targetElement)\n\n try {\n lockedNum -= 1\n\n if (lockedNum > 0) {\n return // stop here\n }\n\n if (typeof callbackUnlock === 'function') {\n callbackUnlock()\n }\n } catch (e) {\n warn(e)\n }\n}\n\nexport const clearAllBodyScrollLocks = () => {\n if (isServer()) {\n return // stop here\n }\n\n try {\n lockedNum = 0\n\n if (typeof callbackUnlock === 'function') {\n callbackUnlock()\n }\n\n // iOS\n if (detectOS().ios) {\n if (lockedElements && lockedElements.length) {\n // clear events\n let element = lockedElements.pop()\n while (element) {\n element.ontouchmove = null\n element.ontouchstart = null\n element = lockedElements.pop()\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bodyScrollLock.js","names":["warn","isChildOfElement","checkIfHasScrollbar","isServer","window","detectOS","ua","navigator","userAgent","ipad","test","iphone","android","ios","lockedNum","initialClientY","initialClientX","callbackUnlock","documentListenerAdded","lockedElements","eventListenerOptions","getEventListenerOptions","passive","options","isSupportOptions","capture","setOverflowHidden","htmlElement","document","documentElement","bodyElement","body","htmlStyle","Object","assign","style","bodyStyle","scrollBarWidth","innerWidth","clientWidth","overflow","height","setProperty","boxSizing","marginRight","forEach","x","removeProperty","e","setOverflowHiddenIOS","targetElement","elementArray","Array","isArray","element","indexOf","ontouchstart","event","targetTouches","clientY","clientX","ontouchmove","length","handleScroll","push","addEventListener","preventDefault","index","splice","removeEventListener","setOverflowHiddenAndroid","unbind","scrollTop","position","top","left","right","scrollBehavior","getComputedStyle","found","find","target","cancelable","scrollLeft","scrollWidth","scrollHeight","clientHeight","isVertical","Math","abs","isOnTop","isOnLeft","isOnRight","isOnBottom","hasScrollbar","stopPropagation","checkTargetElement","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","pop"],"sources":["../../../../src/components/modal/bodyScrollLock.js"],"sourcesContent":["import {\n warn,\n isChildOfElement,\n checkIfHasScrollbar,\n} from '../../shared/component-helper'\n\nconst isServer = () => typeof window === 'undefined'\nconst detectOS = (ua) => {\n ua = ua || navigator.userAgent\n const ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua)\n const iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua)\n const android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua)\n const ios = iphone || ipad\n return { ios, android }\n}\n\nlet lockedNum = 0\nlet initialClientY = 0\nlet initialClientX = 0\nlet callbackUnlock = null\nlet documentListenerAdded = false\n\nconst lockedElements = []\nconst eventListenerOptions = getEventListenerOptions({ passive: false })\nfunction getEventListenerOptions(options) {\n if (isServer()) {\n return // stop here\n }\n\n let isSupportOptions = true\n const { capture } = options\n return isSupportOptions\n ? options\n : typeof capture !== 'undefined'\n ? capture\n : false\n}\n\nconst setOverflowHidden = () => {\n try {\n const htmlElement = document.documentElement\n const bodyElement = document.body\n const htmlStyle = Object.assign({}, htmlElement.style)\n const bodyStyle = Object.assign({}, bodyElement.style)\n const scrollBarWidth =\n window.innerWidth - (bodyElement.clientWidth || window.innerWidth)\n\n htmlElement.style.overflow = 'hidden'\n htmlElement.style.height = '100%'\n htmlElement.style.setProperty(\n '--scrollbar-width',\n `${scrollBarWidth}px`\n )\n\n bodyElement.style.overflow = 'hidden'\n bodyElement.style.height = 'auto'\n bodyElement.style.boxSizing = 'border-box'\n bodyElement.style.marginRight = `${scrollBarWidth}px`\n\n return () => {\n try {\n // eslint-disable-next-line\n ;['overflow', 'height'].forEach((x) => {\n htmlElement.style[x] = htmlStyle[x] || ''\n })\n ;['overflow', 'height', 'boxSizing', 'margin'].forEach((x) => {\n bodyElement.style[x] = bodyStyle[x] || ''\n })\n htmlElement.style.removeProperty('--scrollbar-width')\n } catch (e) {\n warn(e)\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n\nconst setOverflowHiddenIOS = (targetElement) => {\n if (targetElement) {\n const elementArray = Array.isArray(targetElement)\n ? targetElement\n : [targetElement]\n elementArray.forEach((element) => {\n if (element && lockedElements.indexOf(element) === -1) {\n element.ontouchstart = (event) => {\n initialClientY = event.targetTouches[0].clientY\n initialClientX = event.targetTouches[0].clientX\n }\n element.ontouchmove = (event) => {\n if (event.targetTouches.length !== 1) {\n return // stop here\n }\n handleScroll(event, element)\n }\n lockedElements.push(element)\n }\n })\n }\n\n if (!documentListenerAdded) {\n document.addEventListener(\n 'touchmove',\n preventDefault,\n eventListenerOptions\n )\n documentListenerAdded = true\n }\n\n return () => {\n if (targetElement) {\n const elementArray = Array.isArray(targetElement)\n ? targetElement\n : [targetElement]\n elementArray.forEach((element) => {\n const index = lockedElements.indexOf(element)\n if (index !== -1) {\n element.ontouchmove = null\n element.ontouchstart = null\n lockedElements.splice(index, 1)\n }\n })\n }\n\n if (documentListenerAdded) {\n document.removeEventListener(\n 'touchmove',\n preventDefault,\n eventListenerOptions\n )\n documentListenerAdded = false\n }\n }\n}\n\nconst setOverflowHiddenAndroid = () => {\n try {\n const unbind = setOverflowHidden()\n\n const htmlElement = document.documentElement\n const bodyElement = document.body\n const scrollTop = htmlElement.scrollTop || bodyElement.scrollTop\n const bodyStyle = Object.assign({}, bodyElement.style)\n\n bodyElement.style.position = 'fixed'\n bodyElement.style.top = `-${scrollTop}px`\n bodyElement.style.left = '0'\n bodyElement.style.right = '0'\n\n return () => {\n unbind()\n\n try {\n // eslint-disable-next-line\n ;['position', 'top', 'right', 'left'].forEach((x) => {\n bodyElement.style[x] = bodyStyle[x] || ''\n })\n\n const scrollBehavior =\n window.getComputedStyle(htmlElement).scrollBehavior\n htmlElement.style.scrollBehavior = 'auto'\n htmlElement.scrollTop = scrollTop\n htmlElement.style.scrollBehavior = scrollBehavior\n } catch (e) {\n warn(e)\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n\nconst preventDefault = (event) => {\n const found = lockedElements.find((targetElement) => {\n return isChildOfElement(event.target, targetElement)\n })\n\n if (found || !event.cancelable) {\n return // stop here\n }\n\n event.preventDefault()\n}\n\n// Deprecated – this function can be removed as soon as we do not need to support iOS < 14\nconst handleScroll = (event, targetElement) => {\n try {\n if (targetElement) {\n const {\n scrollTop,\n scrollLeft,\n scrollWidth,\n scrollHeight,\n clientWidth,\n clientHeight,\n } = targetElement\n const clientX = event.targetTouches[0].clientX - initialClientX\n const clientY = event.targetTouches[0].clientY - initialClientY\n const isVertical = Math.abs(clientY) > Math.abs(clientX)\n const isOnTop = clientY > 0 && scrollTop === 0\n const isOnLeft = clientX > 0 && scrollLeft === 0\n const isOnRight =\n clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth\n const isOnBottom =\n clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight\n if (\n (isVertical && (isOnTop || isOnBottom)) ||\n (!isVertical && (isOnLeft || isOnRight))\n ) {\n const hasScrollbar = isChildOfElement(\n event.target,\n targetElement,\n checkIfHasScrollbar\n )\n\n if (hasScrollbar && hasScrollbar !== targetElement) {\n return true\n }\n\n return event.cancelable && event.preventDefault()\n }\n }\n\n event.stopPropagation()\n\n return true\n } catch (e) {\n warn(e)\n }\n}\n\nconst checkTargetElement = (targetElement) => {\n if (targetElement) return\n if (targetElement === null) return\n warn(\n `If scrolling is also required in the floating layer, ` +\n `the target element must be provided.`\n )\n}\n\nexport const disableBodyScroll = (targetElement) => {\n if (isServer()) {\n return // stop here\n }\n\n checkTargetElement(targetElement)\n\n try {\n // iOS\n if (detectOS().ios) {\n callbackUnlock = setOverflowHiddenIOS(targetElement)\n\n // Android or Desktop\n } else if (lockedNum <= 0) {\n if (detectOS().android) {\n callbackUnlock = setOverflowHiddenAndroid()\n } else {\n callbackUnlock = setOverflowHidden()\n }\n }\n\n lockedNum += 1\n } catch (e) {\n warn(e)\n }\n}\n\nexport const enableBodyScroll = (targetElement) => {\n if (isServer()) {\n return\n }\n\n checkTargetElement(targetElement)\n\n try {\n lockedNum -= 1\n\n if (lockedNum > 0) {\n return // stop here\n }\n\n if (typeof callbackUnlock === 'function') {\n callbackUnlock()\n }\n } catch (e) {\n warn(e)\n }\n}\n\nexport const clearAllBodyScrollLocks = () => {\n if (isServer()) {\n return // stop here\n }\n\n try {\n lockedNum = 0\n\n if (typeof callbackUnlock === 'function') {\n callbackUnlock()\n }\n\n // iOS\n if (detectOS().ios) {\n if (lockedElements && lockedElements.length) {\n // clear events\n let element = lockedElements.pop()\n while (element) {\n element.ontouchmove = null\n element.ontouchstart = null\n element = lockedElements.pop()\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n}\n"],"mappings":"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"}
|