@lumx/react 3.0.2-alpha-react-utils.2 → 3.0.2-alpha-react-utils.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_internal/{6340c129.js → ClickAwayProvider.js} +107 -2
- package/_internal/ClickAwayProvider.js.map +1 -0
- package/_internal/{eca6d4dc.d.ts → types.d.ts} +1 -1
- package/index.d.ts +2627 -56
- package/index.js +12438 -56
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/utils/index.d.ts +1 -1
- package/utils/index.js +1 -1
- package/_internal/0062d1bc.js +0 -220
- package/_internal/0062d1bc.js.map +0 -1
- package/_internal/03e8323d.d.ts +0 -118
- package/_internal/0402f9bc.d.ts +0 -183
- package/_internal/0b370acc.js +0 -796
- package/_internal/0b370acc.js.map +0 -1
- package/_internal/0d154d73.d.ts +0 -67
- package/_internal/113e3b40.d.ts +0 -31
- package/_internal/12ab39e4.js +0 -58
- package/_internal/12ab39e4.js.map +0 -1
- package/_internal/13e759f3.js +0 -343
- package/_internal/13e759f3.js.map +0 -1
- package/_internal/158b46d5.js +0 -151
- package/_internal/158b46d5.js.map +0 -1
- package/_internal/17b74e16.d.ts +0 -31
- package/_internal/1b1530a4.d.ts +0 -43
- package/_internal/20976405.js +0 -87
- package/_internal/20976405.js.map +0 -1
- package/_internal/20b0e9a5.d.ts +0 -77
- package/_internal/26cd9c63.js +0 -118
- package/_internal/26cd9c63.js.map +0 -1
- package/_internal/27f21164.js +0 -79
- package/_internal/27f21164.js.map +0 -1
- package/_internal/288dfd0f.js +0 -13
- package/_internal/288dfd0f.js.map +0 -1
- package/_internal/28aaf23a.d.ts +0 -41
- package/_internal/2c829c0b.d.ts +0 -57
- package/_internal/2cc0aec5.js +0 -86
- package/_internal/2cc0aec5.js.map +0 -1
- package/_internal/2d0a5b28.js +0 -23
- package/_internal/2d0a5b28.js.map +0 -1
- package/_internal/2d4b5a5e.d.ts +0 -92
- package/_internal/2d770113.d.ts +0 -38
- package/_internal/2fe97f00.js +0 -291
- package/_internal/2fe97f00.js.map +0 -1
- package/_internal/31c16fa0.d.ts +0 -37
- package/_internal/329a01d3.js +0 -25
- package/_internal/329a01d3.js.map +0 -1
- package/_internal/3326e990.js +0 -168
- package/_internal/3326e990.js.map +0 -1
- package/_internal/377b2f44.js +0 -70
- package/_internal/377b2f44.js.map +0 -1
- package/_internal/3b8d2a6e.js +0 -124
- package/_internal/3b8d2a6e.js.map +0 -1
- package/_internal/3bd3186e.d.ts +0 -57
- package/_internal/48e40868.js +0 -101
- package/_internal/48e40868.js.map +0 -1
- package/_internal/490ec1da.js +0 -322
- package/_internal/490ec1da.js.map +0 -1
- package/_internal/49127d69.d.ts +0 -52
- package/_internal/4dcd87cb.js +0 -78
- package/_internal/4dcd87cb.js.map +0 -1
- package/_internal/4f44d848.js +0 -157
- package/_internal/4f44d848.js.map +0 -1
- package/_internal/4fc64a2e.js +0 -27
- package/_internal/4fc64a2e.js.map +0 -1
- package/_internal/53a831be.js +0 -108
- package/_internal/53a831be.js.map +0 -1
- package/_internal/55271fa1.d.ts +0 -34
- package/_internal/55d30377.d.ts +0 -22
- package/_internal/56385b04.js +0 -116
- package/_internal/56385b04.js.map +0 -1
- package/_internal/599e250a.d.ts +0 -88
- package/_internal/5a054691.d.ts +0 -33
- package/_internal/5a127b58.js +0 -82
- package/_internal/5a127b58.js.map +0 -1
- package/_internal/5a1c0db4.js +0 -156
- package/_internal/5a1c0db4.js.map +0 -1
- package/_internal/5babcc39.js +0 -147
- package/_internal/5babcc39.js.map +0 -1
- package/_internal/5c1bf4d4.d.ts +0 -81
- package/_internal/5d8ed4ee.js +0 -113
- package/_internal/5d8ed4ee.js.map +0 -1
- package/_internal/616f2912.js +0 -301
- package/_internal/616f2912.js.map +0 -1
- package/_internal/61f915de.d.ts +0 -49
- package/_internal/620081fa.js +0 -122
- package/_internal/620081fa.js.map +0 -1
- package/_internal/6340c129.js.map +0 -1
- package/_internal/6581c863.d.ts +0 -34
- package/_internal/66de4d45.d.ts +0 -32
- package/_internal/6735c5c8.d.ts +0 -62
- package/_internal/69dd1472.js +0 -112
- package/_internal/69dd1472.js.map +0 -1
- package/_internal/6a0e1c77.js +0 -327
- package/_internal/6a0e1c77.js.map +0 -1
- package/_internal/701c20b0.d.ts +0 -24
- package/_internal/7391188a.js +0 -81
- package/_internal/7391188a.js.map +0 -1
- package/_internal/74cb6c26.js +0 -136
- package/_internal/74cb6c26.js.map +0 -1
- package/_internal/761031bf.js +0 -314
- package/_internal/761031bf.js.map +0 -1
- package/_internal/76fed69d.js +0 -50
- package/_internal/76fed69d.js.map +0 -1
- package/_internal/78ef8e34.js +0 -40
- package/_internal/78ef8e34.js.map +0 -1
- package/_internal/7b906e16.d.ts +0 -17
- package/_internal/7be11ddc.d.ts +0 -35
- package/_internal/7d39705e.d.ts +0 -20
- package/_internal/7e03266f.js +0 -47
- package/_internal/7e03266f.js.map +0 -1
- package/_internal/7e8d0ac5.js +0 -84
- package/_internal/7e8d0ac5.js.map +0 -1
- package/_internal/7ffa45f6.js +0 -48
- package/_internal/7ffa45f6.js.map +0 -1
- package/_internal/84c1ec44.js +0 -257
- package/_internal/84c1ec44.js.map +0 -1
- package/_internal/8518279f.js +0 -96
- package/_internal/8518279f.js.map +0 -1
- package/_internal/853713cd.js +0 -25
- package/_internal/853713cd.js.map +0 -1
- package/_internal/86566d75.d.ts +0 -27
- package/_internal/86d22dde.d.ts +0 -57
- package/_internal/8e755ded.d.ts +0 -101
- package/_internal/901471f5.d.ts +0 -37
- package/_internal/935ce959.d.ts +0 -49
- package/_internal/97089888.d.ts +0 -16
- package/_internal/97cc728c.d.ts +0 -26
- package/_internal/9ab3c637.js +0 -2474
- package/_internal/9ab3c637.js.map +0 -1
- package/_internal/9ca3f59c.js +0 -60
- package/_internal/9ca3f59c.js.map +0 -1
- package/_internal/9e95ea38.d.ts +0 -43
- package/_internal/a0108f92.js +0 -84
- package/_internal/a0108f92.js.map +0 -1
- package/_internal/a493a193.d.ts +0 -65
- package/_internal/a521723d.js +0 -120
- package/_internal/a521723d.js.map +0 -1
- package/_internal/a6fad025.d.ts +0 -107
- package/_internal/a8fa525f.js +0 -124
- package/_internal/a8fa525f.js.map +0 -1
- package/_internal/aca2ecf5.js +0 -141
- package/_internal/aca2ecf5.js.map +0 -1
- package/_internal/aef2ef1c.js +0 -53
- package/_internal/aef2ef1c.js.map +0 -1
- package/_internal/af048b0c.js +0 -89
- package/_internal/af048b0c.js.map +0 -1
- package/_internal/af2cd0cd.d.ts +0 -17
- package/_internal/afec6b62.js +0 -864
- package/_internal/afec6b62.js.map +0 -1
- package/_internal/b0eb3a30.js +0 -72
- package/_internal/b0eb3a30.js.map +0 -1
- package/_internal/b89517ea.js +0 -275
- package/_internal/b89517ea.js.map +0 -1
- package/_internal/bafa6fcc.js +0 -116
- package/_internal/bafa6fcc.js.map +0 -1
- package/_internal/bbbeb49e.js +0 -47
- package/_internal/bbbeb49e.js.map +0 -1
- package/_internal/c11f6162.d.ts +0 -52
- package/_internal/c723dab4.js +0 -133
- package/_internal/c723dab4.js.map +0 -1
- package/_internal/c87cc857.d.ts +0 -42
- package/_internal/c97f8d04.js +0 -424
- package/_internal/c97f8d04.js.map +0 -1
- package/_internal/cbb373ea.d.ts +0 -6
- package/_internal/cbef23b6.d.ts +0 -104
- package/_internal/cdf77f06.d.ts +0 -88
- package/_internal/d350f2ff.js +0 -105
- package/_internal/d350f2ff.js.map +0 -1
- package/_internal/d71a8cf7.js +0 -54
- package/_internal/d71a8cf7.js.map +0 -1
- package/_internal/d9337952.js +0 -96
- package/_internal/d9337952.js.map +0 -1
- package/_internal/def14e1a.d.ts +0 -24
- package/_internal/e0cd29c7.d.ts +0 -35
- package/_internal/e354228f.js +0 -145
- package/_internal/e354228f.js.map +0 -1
- package/_internal/e3922a05.d.ts +0 -22
- package/_internal/e3cb6177.d.ts +0 -75
- package/_internal/e810c841.d.ts +0 -182
- package/_internal/ea700b01.d.ts +0 -43
- package/_internal/eed07003.js +0 -122
- package/_internal/eed07003.js.map +0 -1
- package/_internal/f1c9b334.d.ts +0 -22
- package/_internal/f3c3a674.js +0 -281
- package/_internal/f3c3a674.js.map +0 -1
- package/_internal/f571cdcd.js +0 -132
- package/_internal/f571cdcd.js.map +0 -1
- package/_internal/f5bdff7e.js +0 -282
- package/_internal/f5bdff7e.js.map +0 -1
- package/_internal/f851fc00.d.ts +0 -34
- package/_internal/f859b007.d.ts +0 -49
- package/_internal/fb384b79.d.ts +0 -38
- package/_internal/fc4c034b.js +0 -63
- package/_internal/fc4c034b.js.map +0 -1
- package/_internal/fc608bd9.js +0 -16
- package/_internal/fc608bd9.js.map +0 -1
- package/_internal/fd1f4d68.d.ts +0 -36
- package/_internal/fd867c9d.js +0 -346
- package/_internal/fd867c9d.js.map +0 -1
- package/_internal/ff8081e5.js +0 -57
- package/_internal/ff8081e5.js.map +0 -1
- package/_internal/ffd1bfe3.js +0 -123
- package/_internal/ffd1bfe3.js.map +0 -1
- package/components/alert-dialog.d.ts +0 -6
- package/components/alert-dialog.js +0 -2
- package/components/alert-dialog.js.map +0 -1
- package/components/autocomplete.d.ts +0 -8
- package/components/autocomplete.js +0 -2
- package/components/autocomplete.js.map +0 -1
- package/components/avatar.d.ts +0 -4
- package/components/avatar.js +0 -2
- package/components/avatar.js.map +0 -1
- package/components/badge.d.ts +0 -3
- package/components/badge.js +0 -2
- package/components/badge.js.map +0 -1
- package/components/button.d.ts +0 -8
- package/components/button.js +0 -4
- package/components/button.js.map +0 -1
- package/components/checkbox.d.ts +0 -3
- package/components/checkbox.js +0 -2
- package/components/checkbox.js.map +0 -1
- package/components/chip.d.ts +0 -3
- package/components/chip.js +0 -3
- package/components/chip.js.map +0 -1
- package/components/comment-block.d.ts +0 -5
- package/components/comment-block.js +0 -2
- package/components/comment-block.js.map +0 -1
- package/components/date-picker.d.ts +0 -7
- package/components/date-picker.js +0 -2
- package/components/date-picker.js.map +0 -1
- package/components/dialog.d.ts +0 -3
- package/components/dialog.js +0 -2
- package/components/dialog.js.map +0 -1
- package/components/divider.d.ts +0 -3
- package/components/divider.js +0 -2
- package/components/divider.js.map +0 -1
- package/components/drag-handle.d.ts +0 -3
- package/components/drag-handle.js +0 -2
- package/components/drag-handle.js.map +0 -1
- package/components/dropdown.d.ts +0 -4
- package/components/dropdown.js +0 -2
- package/components/dropdown.js.map +0 -1
- package/components/expansion-panel.d.ts +0 -7
- package/components/expansion-panel.js +0 -2
- package/components/expansion-panel.js.map +0 -1
- package/components/flag.d.ts +0 -3
- package/components/flag.js +0 -2
- package/components/flag.js.map +0 -1
- package/components/flex-box.d.ts +0 -3
- package/components/flex-box.js +0 -2
- package/components/flex-box.js.map +0 -1
- package/components/generic-block.d.ts +0 -4
- package/components/generic-block.js +0 -2
- package/components/generic-block.js.map +0 -1
- package/components/grid.d.ts +0 -3
- package/components/grid.js +0 -2
- package/components/grid.js.map +0 -1
- package/components/heading.d.ts +0 -4
- package/components/heading.js +0 -2
- package/components/heading.js.map +0 -1
- package/components/icon.d.ts +0 -3
- package/components/icon.js +0 -2
- package/components/icon.js.map +0 -1
- package/components/image-block.d.ts +0 -4
- package/components/image-block.js +0 -2
- package/components/image-block.js.map +0 -1
- package/components/input-helper.d.ts +0 -3
- package/components/input-helper.js +0 -2
- package/components/input-helper.js.map +0 -1
- package/components/input-label.d.ts +0 -3
- package/components/input-label.js +0 -2
- package/components/input-label.js.map +0 -1
- package/components/lightbox.d.ts +0 -7
- package/components/lightbox.js +0 -2
- package/components/lightbox.js.map +0 -1
- package/components/link-preview.d.ts +0 -5
- package/components/link-preview.js +0 -2
- package/components/link-preview.js.map +0 -1
- package/components/link.d.ts +0 -3
- package/components/link.js +0 -2
- package/components/link.js.map +0 -1
- package/components/list.d.ts +0 -3
- package/components/list.js +0 -3
- package/components/list.js.map +0 -1
- package/components/message.d.ts +0 -3
- package/components/message.js +0 -2
- package/components/message.js.map +0 -1
- package/components/mosaic.d.ts +0 -4
- package/components/mosaic.js +0 -2
- package/components/mosaic.js.map +0 -1
- package/components/notification.d.ts +0 -3
- package/components/notification.js +0 -2
- package/components/notification.js.map +0 -1
- package/components/popover.d.ts +0 -3
- package/components/popover.js +0 -2
- package/components/popover.js.map +0 -1
- package/components/post-block.d.ts +0 -4
- package/components/post-block.js +0 -2
- package/components/post-block.js.map +0 -1
- package/components/progress-tracker.d.ts +0 -3
- package/components/progress-tracker.js +0 -2
- package/components/progress-tracker.js.map +0 -1
- package/components/progress.d.ts +0 -3
- package/components/progress.js +0 -2
- package/components/progress.js.map +0 -1
- package/components/radio-button.d.ts +0 -3
- package/components/radio-button.js +0 -2
- package/components/radio-button.js.map +0 -1
- package/components/select.d.ts +0 -7
- package/components/select.js +0 -2
- package/components/select.js.map +0 -1
- package/components/side-navigation.d.ts +0 -7
- package/components/side-navigation.js +0 -2
- package/components/side-navigation.js.map +0 -1
- package/components/skeleton.d.ts +0 -3
- package/components/skeleton.js +0 -2
- package/components/skeleton.js.map +0 -1
- package/components/slider.d.ts +0 -3
- package/components/slider.js +0 -2
- package/components/slider.js.map +0 -1
- package/components/slideshow.d.ts +0 -7
- package/components/slideshow.js +0 -2
- package/components/slideshow.js.map +0 -1
- package/components/switch.d.ts +0 -3
- package/components/switch.js +0 -2
- package/components/switch.js.map +0 -1
- package/components/table.d.ts +0 -3
- package/components/table.js +0 -2
- package/components/table.js.map +0 -1
- package/components/tabs.d.ts +0 -4
- package/components/tabs.js +0 -2
- package/components/tabs.js.map +0 -1
- package/components/text-field.d.ts +0 -7
- package/components/text-field.js +0 -2
- package/components/text-field.js.map +0 -1
- package/components/text.d.ts +0 -3
- package/components/text.js +0 -2
- package/components/text.js.map +0 -1
- package/components/thumbnail.d.ts +0 -4
- package/components/thumbnail.js +0 -3
- package/components/thumbnail.js.map +0 -1
- package/components/toolbar.d.ts +0 -3
- package/components/toolbar.js +0 -2
- package/components/toolbar.js.map +0 -1
- package/components/tooltip.d.ts +0 -4
- package/components/tooltip.js +0 -2
- package/components/tooltip.js.map +0 -1
- package/components/uploader.d.ts +0 -3
- package/components/uploader.js +0 -2
- package/components/uploader.js.map +0 -1
- package/components/user-block.d.ts +0 -5
- package/components/user-block.js +0 -2
- package/components/user-block.js.map +0 -1
- package/components.d.ts +0 -2
- package/components.js +0 -156
- package/components.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"490ec1da.js","sources":["../../src/components/text-field/TextField.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, Ref, SyntheticEvent, useEffect, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport { uid } from 'uid';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';\nimport { Emphasis, Icon, IconButton, IconButtonProps, InputHelper, InputLabel, Kind, Size, Theme } from '@lumx/react';\nimport { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\n\n/**\n * Defines the props of the component.\n */\nexport interface TextFieldProps extends GenericProps, HasTheme {\n /** Chip Group to be rendered before the main text input. */\n chips?: HTMLElement | ReactNode;\n /** Props to pass to the clear button (minus those already set by the TextField props). If not specified, the button won't be displayed. */\n clearButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Error message. */\n error?: string | ReactNode;\n /** Whether we force the focus style or not. */\n forceFocusStyle?: boolean;\n /** Whether the text field is displayed with error style or not. */\n hasError?: boolean;\n /** Additional element to put at the end of the text field. */\n afterElement?: ReactNode;\n /** Helper text. */\n helper?: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Native input id property (generated if not provided to link the label element). */\n id?: string;\n /** Reference to the <input> or <textarea> element. */\n inputRef?: Ref<HTMLInputElement | HTMLTextAreaElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is required or not. */\n isRequired?: boolean;\n /** Whether the text field is displayed with valid style or not. */\n isValid?: boolean;\n /** Label text. */\n label?: string;\n /** Max string length the input accepts (constrains the input and displays a character counter). */\n maxLength?: number;\n /** Minimum number of rows displayed in multiline mode (requires `multiline` to be enabled). */\n minimumRows?: number;\n /** Whether the text field is a textarea or an input. */\n multiline?: boolean;\n /** Native input name property. */\n name?: string;\n /** Placeholder text. */\n placeholder?: string;\n /** Reference to the wrapper. */\n textFieldRef?: Ref<HTMLDivElement>;\n /** Value. */\n value?: string;\n /** On blur callback. */\n onBlur?(event: React.FocusEvent): void;\n /** On change callback. */\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n /** On focus callback. */\n onFocus?(event: React.FocusEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TextField';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Default minimum number of rows in the multiline mode.\n */\nconst DEFAULT_MIN_ROWS = 2;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TextFieldProps> = {\n theme: Theme.light,\n type: 'text',\n};\n\n/**\n * Hook that allows to calculate the number of rows needed for a text area.\n * @param minimumRows Minimum number of rows that we want to display.\n * @return rows to be used and a callback to recalculate\n */\nconst useComputeNumberOfRows = (\n minimumRows: number,\n): {\n /** number of rows to be used on the text area */\n rows: number;\n /**\n * Callback in order to recalculate the number of rows due to a change on the text area\n */\n recomputeNumberOfRows(target: Element): void;\n} => {\n const [rows, setRows] = useState(minimumRows);\n\n const recompute = (target: Element) => {\n /**\n * HEAD's UP! This part is a little bit tricky. The idea here is to only\n * display the necessary rows on the textarea. In order to dynamically adjust\n * the height on that field, we need to:\n * 1. Set the current amount of rows to the minimum. That will make the scroll appear.\n * 2. With that, we will have the `scrollHeight`, meaning the height of the container adjusted to the current content\n * 3. With the scroll height, we can figure out how many rows we need to use by dividing the scroll height\n * by the line height.\n * 4. With that number, we can readjust the number of rows on the text area. We need to do that here, if we leave that to\n * the state change through React, there are some scenarios (resize, hitting ENTER or BACKSPACE which add or remove lines)\n * when we will not see the update and the rows will be resized to the minimum.\n * 5. In case there is any other update on the component that changes the UI, we need to keep the number of rows\n * on the state in order to allow React to re-render. Therefore, we save them using `useState`\n */\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = minimumRows;\n let currentRows = target.scrollHeight / (target.clientHeight / minimumRows);\n currentRows = currentRows >= minimumRows ? currentRows : minimumRows;\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = currentRows;\n\n setRows(currentRows);\n };\n\n return {\n recomputeNumberOfRows: recompute,\n rows,\n };\n};\n\ninterface InputNativeProps {\n id?: string;\n inputRef?: TextFieldProps['inputRef'];\n isDisabled?: boolean;\n isRequired?: boolean;\n multiline?: boolean;\n maxLength?: number;\n placeholder?: string;\n rows: number;\n type: string;\n name?: string;\n value?: string;\n setFocus(focus: boolean): void;\n recomputeNumberOfRows(target: Element): void;\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n onFocus?(value: React.FocusEvent): void;\n onBlur?(value: React.FocusEvent): void;\n}\n\nconst renderInputNative: React.FC<InputNativeProps> = (props) => {\n const {\n id,\n isDisabled,\n isRequired,\n placeholder,\n multiline,\n value,\n setFocus,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n rows,\n recomputeNumberOfRows,\n type,\n name,\n ...forwardedProps\n } = props;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const ref = useRef<HTMLElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // Recompute the number of rows for the first rendering\n if (multiline && ref && ref.current) {\n recomputeNumberOfRows(ref.current);\n }\n }, [ref, multiline, recomputeNumberOfRows, value]);\n\n const onTextFieldFocus = (event: React.FocusEvent) => {\n onFocus?.(event);\n setFocus(true);\n };\n\n const onTextFieldBlur = (event: React.FocusEvent) => {\n onBlur?.(event);\n setFocus(false);\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n onChange(get(event, 'target.value'), name, event);\n };\n\n const Component = multiline ? 'textarea' : 'input';\n const inputProps: any = {\n ...forwardedProps,\n id,\n className: multiline\n ? `${CLASSNAME}__input-native ${CLASSNAME}__input-native--textarea`\n : `${CLASSNAME}__input-native ${CLASSNAME}__input-native--text`,\n placeholder,\n value,\n name,\n disabled: isDisabled,\n required: isRequired,\n onFocus: onTextFieldFocus,\n onBlur: onTextFieldBlur,\n onChange: handleChange,\n ref: mergeRefs(inputRef as any, ref) as any,\n };\n if (multiline) {\n inputProps.rows = rows;\n } else {\n inputProps.type = type;\n }\n return <Component {...inputProps} />;\n};\n\n/**\n * TextField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TextField: Comp<TextFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n chips,\n className,\n clearButtonProps,\n disabled,\n error,\n forceFocusStyle,\n hasError,\n helper,\n icon,\n id,\n inputRef,\n isDisabled = disabled,\n isRequired,\n isValid,\n label,\n maxLength,\n minimumRows,\n multiline,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n textFieldRef,\n theme,\n type,\n value,\n afterElement,\n ...forwardedProps\n } = props;\n const textFieldId = useMemo(() => id || `text-field-${uid()}`, [id]);\n const [isFocus, setFocus] = useState(false);\n const { rows, recomputeNumberOfRows } = useComputeNumberOfRows(multiline ? minimumRows || DEFAULT_MIN_ROWS : 0);\n const valueLength = (value || '').length;\n const isNotEmpty = valueLength > 0;\n\n /**\n * Function triggered when the Clear Button is clicked.\n * The idea is to execute the `onChange` callback with an empty string\n * and remove focus from the clear button.\n * @param evt On clear event.\n */\n const onClear = (evt: React.ChangeEvent) => {\n evt.nativeEvent.preventDefault();\n evt.nativeEvent.stopPropagation();\n (evt.currentTarget as HTMLElement).blur();\n\n onChange('');\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChips: Boolean(chips),\n hasError: !isValid && hasError,\n hasIcon: Boolean(icon),\n hasInput: !multiline,\n hasInputClear: clearButtonProps && isNotEmpty,\n hasLabel: Boolean(label),\n hasPlaceholder: Boolean(placeholder),\n hasTextarea: multiline,\n hasValue: Boolean(value),\n isDisabled,\n isFocus: isFocus || forceFocusStyle,\n isValid,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n {(label || maxLength) && (\n <div className={`${CLASSNAME}__header`}>\n {label && (\n <InputLabel\n htmlFor={textFieldId}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n )}\n\n {maxLength && (\n <div className={`${CLASSNAME}__char-counter`}>\n <span>{maxLength - valueLength}</span>\n {maxLength - valueLength === 0 && <Icon icon={mdiAlertCircle} size={Size.xxs} />}\n </div>\n )}\n </div>\n )}\n\n <div className={`${CLASSNAME}__wrapper`} ref={textFieldRef}>\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n {chips && (\n <div className={`${CLASSNAME}__chips`}>\n {chips}\n\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {!chips && (\n <div className={`${CLASSNAME}__input-wrapper`}>\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {(isValid || hasError) && (\n <Icon\n className={`${CLASSNAME}__input-validity`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={isValid ? mdiCheckCircle : mdiAlertCircle}\n size={Size.xxs}\n />\n )}\n\n {clearButtonProps && isNotEmpty && (\n <IconButton\n {...clearButtonProps}\n className={`${CLASSNAME}__input-clear`}\n icon={mdiCloseCircle}\n emphasis={Emphasis.low}\n size={Size.s}\n theme={theme}\n onClick={onClear}\n type=\"button\"\n />\n )}\n\n {afterElement && <div className={`${CLASSNAME}__after-element`}>{afterElement}</div>}\n </div>\n\n {hasError && error && (\n <InputHelper className={`${CLASSNAME}__helper`} kind={Kind.error} theme={theme}>\n {error}\n </InputHelper>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n </div>\n );\n});\nTextField.displayName = COMPONENT_NAME;\nTextField.className = CLASSNAME;\nTextField.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_MIN_ROWS","DEFAULT_PROPS","theme","Theme","light","type","useComputeNumberOfRows","minimumRows","useState","rows","setRows","recompute","target","currentRows","scrollHeight","clientHeight","recomputeNumberOfRows","renderInputNative","props","id","isDisabled","isRequired","placeholder","multiline","value","setFocus","onChange","onFocus","onBlur","inputRef","name","forwardedProps","ref","useRef","useEffect","current","onTextFieldFocus","event","onTextFieldBlur","handleChange","get","Component","inputProps","className","disabled","required","mergeRefs","TextField","forwardRef","chips","clearButtonProps","error","forceFocusStyle","hasError","helper","icon","isValid","label","maxLength","textFieldRef","afterElement","textFieldId","useMemo","uid","isFocus","valueLength","length","isNotEmpty","onClear","evt","nativeEvent","preventDefault","stopPropagation","currentTarget","blur","classNames","handleBasicClasses","hasChips","Boolean","hasIcon","hasInput","hasInputClear","hasLabel","hasPlaceholder","hasTextarea","hasValue","prefix","mdiAlertCircle","Size","xxs","dark","undefined","xs","mdiCheckCircle","mdiCloseCircle","Emphasis","low","s","Kind","displayName","defaultProps"],"mappings":"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"}
|
package/_internal/49127d69.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import React, { SyntheticEvent } from 'react';
|
|
2
|
-
import { l as GenericProps, m as HasTheme, k as Comp } from './eca6d4dc.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Defines the props of the component.
|
|
6
|
-
*/
|
|
7
|
-
interface SliderProps extends GenericProps, HasTheme {
|
|
8
|
-
/** Helper text. */
|
|
9
|
-
helper?: string;
|
|
10
|
-
/** Whether the min and max labels should be hidden or not. */
|
|
11
|
-
hideMinMaxLabel?: boolean;
|
|
12
|
-
/** Whether the component is disabled or not. */
|
|
13
|
-
isDisabled?: boolean;
|
|
14
|
-
/** Label text. */
|
|
15
|
-
label?: string;
|
|
16
|
-
/** Maximum value on the range. */
|
|
17
|
-
max: number;
|
|
18
|
-
/** Minimum value of the range. */
|
|
19
|
-
min: number;
|
|
20
|
-
/** Native input name property. */
|
|
21
|
-
name?: string;
|
|
22
|
-
/** Number of digits in the fractional part of the selected value. */
|
|
23
|
-
precision?: number;
|
|
24
|
-
/** Range step value. */
|
|
25
|
-
steps?: number;
|
|
26
|
-
/** Selected ranged value. */
|
|
27
|
-
value: number;
|
|
28
|
-
/** On change callback. */
|
|
29
|
-
onChange(value: number, name?: string, event?: SyntheticEvent): void;
|
|
30
|
-
/** On click callback. */
|
|
31
|
-
onMouseDown?(event: React.SyntheticEvent): void;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Slider component.
|
|
35
|
-
*
|
|
36
|
-
* @param props Component props.
|
|
37
|
-
* @param ref Component ref.
|
|
38
|
-
* @return React element.
|
|
39
|
-
*/
|
|
40
|
-
declare const Slider: Comp<SliderProps, HTMLDivElement>;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Clamp value in range.
|
|
44
|
-
*
|
|
45
|
-
* @param value Value to clamp.
|
|
46
|
-
* @param min Minimum value.
|
|
47
|
-
* @param max Maximum value.
|
|
48
|
-
* @return Clamped value.
|
|
49
|
-
*/
|
|
50
|
-
declare const clamp: (value: number, min: number, max: number) => number;
|
|
51
|
-
|
|
52
|
-
export { SliderProps as S, Slider as a, clamp as c };
|
package/_internal/4dcd87cb.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { a as _defineProperty, b as _objectWithoutProperties, c as _extends } from './6340c129.js';
|
|
2
|
-
import { Size, ColorPalette, Kind } from '../components.js';
|
|
3
|
-
import React, { forwardRef } from 'react';
|
|
4
|
-
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './fd867c9d.js';
|
|
5
|
-
import { I as Icon, m as mdiAlert, a as mdiInformation, b as mdiCheckCircle, c as mdiAlertCircle } from './a521723d.js';
|
|
6
|
-
|
|
7
|
-
var _CONFIG;
|
|
8
|
-
/**
|
|
9
|
-
* Defines the props of the component.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Component display name.
|
|
14
|
-
*/
|
|
15
|
-
var COMPONENT_NAME = 'Message';
|
|
16
|
-
/**
|
|
17
|
-
* Component default class name and class prefix.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
var CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
21
|
-
/**
|
|
22
|
-
* Associative map from message kind to color and icon.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
var CONFIG = (_CONFIG = {}, _defineProperty(_CONFIG, Kind.error, {
|
|
26
|
-
color: ColorPalette.red,
|
|
27
|
-
icon: mdiAlert
|
|
28
|
-
}), _defineProperty(_CONFIG, Kind.info, {
|
|
29
|
-
color: ColorPalette.dark,
|
|
30
|
-
icon: mdiInformation
|
|
31
|
-
}), _defineProperty(_CONFIG, Kind.success, {
|
|
32
|
-
color: ColorPalette.green,
|
|
33
|
-
icon: mdiCheckCircle
|
|
34
|
-
}), _defineProperty(_CONFIG, Kind.warning, {
|
|
35
|
-
color: ColorPalette.yellow,
|
|
36
|
-
icon: mdiAlertCircle
|
|
37
|
-
}), _CONFIG);
|
|
38
|
-
/**
|
|
39
|
-
* Message component.
|
|
40
|
-
*
|
|
41
|
-
* @param props Component props.
|
|
42
|
-
* @param ref Component ref.
|
|
43
|
-
* @return React element.
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
var Message = forwardRef(function (props, ref) {
|
|
47
|
-
var children = props.children,
|
|
48
|
-
className = props.className,
|
|
49
|
-
hasBackground = props.hasBackground,
|
|
50
|
-
kind = props.kind,
|
|
51
|
-
customIcon = props.icon,
|
|
52
|
-
forwardedProps = _objectWithoutProperties(props, ["children", "className", "hasBackground", "kind", "icon"]);
|
|
53
|
-
|
|
54
|
-
var _ref = CONFIG[kind] || {},
|
|
55
|
-
color = _ref.color,
|
|
56
|
-
icon = _ref.icon;
|
|
57
|
-
|
|
58
|
-
return React.createElement("div", _extends({
|
|
59
|
-
ref: ref,
|
|
60
|
-
className: classnames(className, handleBasicClasses({
|
|
61
|
-
color: color,
|
|
62
|
-
hasBackground: hasBackground,
|
|
63
|
-
prefix: CLASSNAME
|
|
64
|
-
}))
|
|
65
|
-
}, forwardedProps), (customIcon || icon) && React.createElement(Icon, {
|
|
66
|
-
className: "".concat(CLASSNAME, "__icon"),
|
|
67
|
-
icon: customIcon || icon,
|
|
68
|
-
size: Size.xs,
|
|
69
|
-
color: color
|
|
70
|
-
}), React.createElement("div", {
|
|
71
|
-
className: "".concat(CLASSNAME, "__text")
|
|
72
|
-
}, children));
|
|
73
|
-
});
|
|
74
|
-
Message.displayName = COMPONENT_NAME;
|
|
75
|
-
Message.className = CLASSNAME;
|
|
76
|
-
|
|
77
|
-
export { Message as M };
|
|
78
|
-
//# sourceMappingURL=4dcd87cb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"4dcd87cb.js","sources":["../../src/components/message/Message.tsx"],"sourcesContent":["import { mdiAlert, mdiAlertCircle, mdiCheckCircle, mdiInformation } from '@lumx/icons';\nimport { ColorPalette, Icon, Kind, Size } from '@lumx/react';\nimport { Comp, GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport classNames from 'classnames';\nimport React, { forwardRef, ReactNode } from 'react';\n\n/**\n * Defines the props of the component.\n */\nexport interface MessageProps extends GenericProps {\n /** Content. */\n children?: ReactNode;\n /** Whether the message has a background or not. */\n hasBackground?: boolean;\n /** Message variant. */\n kind?: Kind;\n /** Message custom icon SVG path. */\n icon?: string;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Message';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Associative map from message kind to color and icon.\n */\nconst CONFIG = {\n [Kind.error]: { color: ColorPalette.red, icon: mdiAlert },\n [Kind.info]: { color: ColorPalette.dark, icon: mdiInformation },\n [Kind.success]: { color: ColorPalette.green, icon: mdiCheckCircle },\n [Kind.warning]: { color: ColorPalette.yellow, icon: mdiAlertCircle },\n};\n\n/**\n * Message component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Message: Comp<MessageProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, hasBackground, kind, icon: customIcon, ...forwardedProps } = props;\n const { color, icon } = CONFIG[kind as Kind] || {};\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n color,\n hasBackground,\n prefix: CLASSNAME,\n }),\n )}\n {...forwardedProps}\n >\n {(customIcon || icon) && (\n <Icon className={`${CLASSNAME}__icon`} icon={customIcon || icon} size={Size.xs} color={color} />\n )}\n <div className={`${CLASSNAME}__text`}>{children}</div>\n </div>\n );\n});\nMessage.displayName = COMPONENT_NAME;\nMessage.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","CONFIG","Kind","error","color","ColorPalette","red","icon","mdiAlert","info","dark","mdiInformation","success","green","mdiCheckCircle","warning","yellow","mdiAlertCircle","Message","forwardRef","props","ref","children","className","hasBackground","kind","customIcon","forwardedProps","classNames","handleBasicClasses","prefix","Size","xs","displayName"],"mappings":";;;;;;;AAOA;;;;AAcA;;;AAGA,IAAMA,cAAc,GAAG,SAAvB;AAEA;;;;AAGA,IAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAD,CAAlC;AAEA;;;;AAGA,IAAMG,MAAM,2CACPC,IAAI,CAACC,KADE,EACM;AAAEC,EAAAA,KAAK,EAAEC,YAAY,CAACC,GAAtB;AAA2BC,EAAAA,IAAI,EAAEC;AAAjC,CADN,4BAEPN,IAAI,CAACO,IAFE,EAEK;AAAEL,EAAAA,KAAK,EAAEC,YAAY,CAACK,IAAtB;AAA4BH,EAAAA,IAAI,EAAEI;AAAlC,CAFL,4BAGPT,IAAI,CAACU,OAHE,EAGQ;AAAER,EAAAA,KAAK,EAAEC,YAAY,CAACQ,KAAtB;AAA6BN,EAAAA,IAAI,EAAEO;AAAnC,CAHR,4BAIPZ,IAAI,CAACa,OAJE,EAIQ;AAAEX,EAAAA,KAAK,EAAEC,YAAY,CAACW,MAAtB;AAA8BT,EAAAA,IAAI,EAAEU;AAApC,CAJR,WAAZ;AAOA;;;;;;;;IAOaC,OAA2C,GAAGC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAC1EC,QAD0E,GACQF,KADR,CAC1EE,QAD0E;AAAA,MAChEC,SADgE,GACQH,KADR,CAChEG,SADgE;AAAA,MACrDC,aADqD,GACQJ,KADR,CACrDI,aADqD;AAAA,MACtCC,IADsC,GACQL,KADR,CACtCK,IADsC;AAAA,MAC1BC,UAD0B,GACQN,KADR,CAChCb,IADgC;AAAA,MACXoB,cADW,4BACQP,KADR;;AAAA,aAE1DnB,MAAM,CAACwB,IAAD,CAAN,IAAwB,EAFkC;AAAA,MAE1ErB,KAF0E,QAE1EA,KAF0E;AAAA,MAEnEG,IAFmE,QAEnEA,IAFmE;;AAIlF,SACI;AACI,IAAA,GAAG,EAAEc,GADT;AAEI,IAAA,SAAS,EAAEO,UAAU,CACjBL,SADiB,EAEjBM,kBAAkB,CAAC;AACfzB,MAAAA,KAAK,EAALA,KADe;AAEfoB,MAAAA,aAAa,EAAbA,aAFe;AAGfM,MAAAA,MAAM,EAAE/B;AAHO,KAAD,CAFD;AAFzB,KAUQ4B,cAVR,GAYK,CAACD,UAAU,IAAInB,IAAf,KACG,oBAAC,IAAD;AAAM,IAAA,SAAS,YAAKR,SAAL,WAAf;AAAuC,IAAA,IAAI,EAAE2B,UAAU,IAAInB,IAA3D;AAAiE,IAAA,IAAI,EAAEwB,IAAI,CAACC,EAA5E;AAAgF,IAAA,KAAK,EAAE5B;AAAvF,IAbR,EAeI;AAAK,IAAA,SAAS,YAAKL,SAAL;AAAd,KAAuCuB,QAAvC,CAfJ,CADJ;AAmBH,CAvBoE;AAwBrEJ,OAAO,CAACe,WAAR,GAAsBnC,cAAtB;AACAoB,OAAO,CAACK,SAAR,GAAoBxB,SAApB;;;;"}
|
package/_internal/4f44d848.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { b as _objectWithoutProperties, _ as _objectSpread2, c as _extends } from './6340c129.js';
|
|
2
|
-
import React, { useEffect, forwardRef, useRef, useMemo, cloneElement } from 'react';
|
|
3
|
-
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './fd867c9d.js';
|
|
4
|
-
import { a as Popover, P as Placement } from './9ab3c637.js';
|
|
5
|
-
import { i as isComponent } from './78ef8e34.js';
|
|
6
|
-
import { L as List } from './0b370acc.js';
|
|
7
|
-
|
|
8
|
-
// The error margin in px we want to have for triggering infinite scroll
|
|
9
|
-
var SCROLL_TRIGGER_MARGIN = 5;
|
|
10
|
-
/**
|
|
11
|
-
* Listen to clicks away from a given element and callback the passed in function.
|
|
12
|
-
*
|
|
13
|
-
* @param ref A reference to the element on which you want to listen scroll event.
|
|
14
|
-
* @param [callback] A callback function to call when the bottom of the reference element is reached.
|
|
15
|
-
* @param [callbackOnMount] A callback function to call when the component is mounted.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
var useInfiniteScroll = function useInfiniteScroll(ref, callback) {
|
|
19
|
-
var callbackOnMount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
20
|
-
var scrollTriggerMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : SCROLL_TRIGGER_MARGIN;
|
|
21
|
-
useEffect(function () {
|
|
22
|
-
var current = ref.current;
|
|
23
|
-
|
|
24
|
-
if (!callback || !current) {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var isAtBottom = function isAtBottom() {
|
|
29
|
-
return Boolean(current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
var onScroll = function onScroll(e) {
|
|
33
|
-
if (isAtBottom()) {
|
|
34
|
-
callback(e);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
if (isAtBottom()) {
|
|
39
|
-
onScroll();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
current.addEventListener('scroll', onScroll);
|
|
43
|
-
current.addEventListener('resize', onScroll);
|
|
44
|
-
return function () {
|
|
45
|
-
current.removeEventListener('scroll', onScroll);
|
|
46
|
-
current.removeEventListener('resize', onScroll);
|
|
47
|
-
};
|
|
48
|
-
}, [ref, callback, scrollTriggerMargin]);
|
|
49
|
-
useEffect(function () {
|
|
50
|
-
if (callback && callbackOnMount) {
|
|
51
|
-
callback();
|
|
52
|
-
}
|
|
53
|
-
}, [callback, callbackOnMount]);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Defines the props of the component.
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Component display name.
|
|
62
|
-
*/
|
|
63
|
-
var COMPONENT_NAME = 'Dropdown';
|
|
64
|
-
/**
|
|
65
|
-
* Component default class name and class prefix.
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
var CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
69
|
-
/**
|
|
70
|
-
* Component default props.
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
var DEFAULT_PROPS = {
|
|
74
|
-
closeOnClick: true,
|
|
75
|
-
closeOnClickAway: true,
|
|
76
|
-
closeOnEscape: true,
|
|
77
|
-
fitToAnchorWidth: true,
|
|
78
|
-
fitWithinViewportHeight: true,
|
|
79
|
-
placement: Placement.BOTTOM_START,
|
|
80
|
-
shouldFocusOnOpen: true,
|
|
81
|
-
focusAnchorOnClose: true
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Dropdown component.
|
|
85
|
-
*
|
|
86
|
-
* @param props Component props.
|
|
87
|
-
* @param ref Component ref.
|
|
88
|
-
* @return React element.
|
|
89
|
-
*/
|
|
90
|
-
|
|
91
|
-
var Dropdown = forwardRef(function (props, ref) {
|
|
92
|
-
var anchorRef = props.anchorRef,
|
|
93
|
-
children = props.children,
|
|
94
|
-
className = props.className,
|
|
95
|
-
closeOnClick = props.closeOnClick,
|
|
96
|
-
closeOnClickAway = props.closeOnClickAway,
|
|
97
|
-
closeOnEscape = props.closeOnEscape,
|
|
98
|
-
fitToAnchorWidth = props.fitToAnchorWidth,
|
|
99
|
-
fitWithinViewportHeight = props.fitWithinViewportHeight,
|
|
100
|
-
isOpen = props.isOpen,
|
|
101
|
-
offset = props.offset,
|
|
102
|
-
focusAnchorOnClose = props.focusAnchorOnClose,
|
|
103
|
-
onClose = props.onClose,
|
|
104
|
-
onInfiniteScroll = props.onInfiniteScroll,
|
|
105
|
-
placement = props.placement,
|
|
106
|
-
shouldFocusOnOpen = props.shouldFocusOnOpen,
|
|
107
|
-
zIndex = props.zIndex,
|
|
108
|
-
forwardedProps = _objectWithoutProperties(props, ["anchorRef", "children", "className", "closeOnClick", "closeOnClickAway", "closeOnEscape", "fitToAnchorWidth", "fitWithinViewportHeight", "isOpen", "offset", "focusAnchorOnClose", "onClose", "onInfiniteScroll", "placement", "shouldFocusOnOpen", "zIndex"]);
|
|
109
|
-
|
|
110
|
-
var innerRef = useRef(null);
|
|
111
|
-
var listElement = useRef(null);
|
|
112
|
-
useInfiniteScroll(innerRef, onInfiniteScroll);
|
|
113
|
-
var popperElement = useMemo(function () {
|
|
114
|
-
return !Array.isArray(children) && isComponent(List)(children) ? cloneElement(children, _objectSpread2({}, children.props, {
|
|
115
|
-
ref: listElement,
|
|
116
|
-
onClick: function onClick(evt) {
|
|
117
|
-
var _children$props$onCli, _children$props;
|
|
118
|
-
|
|
119
|
-
(_children$props$onCli = (_children$props = children.props).onClick) === null || _children$props$onCli === void 0 ? void 0 : _children$props$onCli.call(_children$props, evt);
|
|
120
|
-
|
|
121
|
-
if (closeOnClick) {
|
|
122
|
-
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
isClickable: true
|
|
126
|
-
})) : children;
|
|
127
|
-
}, [children, closeOnClick, onClose]);
|
|
128
|
-
return isOpen ? React.createElement(Popover, _extends({
|
|
129
|
-
ref: ref
|
|
130
|
-
}, forwardedProps, {
|
|
131
|
-
focusAnchorOnClose: focusAnchorOnClose,
|
|
132
|
-
anchorRef: anchorRef,
|
|
133
|
-
className: classnames(className, handleBasicClasses({
|
|
134
|
-
prefix: CLASSNAME
|
|
135
|
-
})),
|
|
136
|
-
elevation: 0,
|
|
137
|
-
closeOnClickAway: closeOnClickAway,
|
|
138
|
-
closeOnEscape: closeOnEscape,
|
|
139
|
-
fitToAnchorWidth: fitToAnchorWidth,
|
|
140
|
-
fitWithinViewportHeight: fitWithinViewportHeight,
|
|
141
|
-
focusElement: shouldFocusOnOpen ? listElement : undefined,
|
|
142
|
-
isOpen: isOpen,
|
|
143
|
-
offset: offset,
|
|
144
|
-
onClose: onClose,
|
|
145
|
-
placement: placement,
|
|
146
|
-
zIndex: zIndex
|
|
147
|
-
}), React.createElement("div", {
|
|
148
|
-
className: "".concat(CLASSNAME, "__menu"),
|
|
149
|
-
ref: innerRef
|
|
150
|
-
}, popperElement)) : null;
|
|
151
|
-
});
|
|
152
|
-
Dropdown.displayName = COMPONENT_NAME;
|
|
153
|
-
Dropdown.className = CLASSNAME;
|
|
154
|
-
Dropdown.defaultProps = DEFAULT_PROPS;
|
|
155
|
-
|
|
156
|
-
export { Dropdown as D };
|
|
157
|
-
//# sourceMappingURL=4f44d848.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"4f44d848.js","sources":["../../src/hooks/useInfiniteScroll.tsx","../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import React, { cloneElement, forwardRef, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Offset, Placement, Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { Comp, GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Whether the dropdown should fit to the anchor width (if dropdown is smaller) or not.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: boolean;\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown: Comp<DropdownProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick,\n closeOnClickAway,\n closeOnEscape,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement,\n shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","scrollTriggerMargin","useEffect","current","undefined","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","onClick","evt","isClickable","classNames","handleBasicClasses","prefix","displayName","defaultProps"],"mappings":"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"}
|
package/_internal/4fc64a2e.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import last from 'lodash/last';
|
|
2
|
-
import concat from 'lodash/concat';
|
|
3
|
-
import dropRight from 'lodash/dropRight';
|
|
4
|
-
import partition from 'lodash/partition';
|
|
5
|
-
import reduce from 'lodash/reduce';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Similar to lodash `partition` function but working with multiple predicates.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* const isString = (s) => typeof s === 'string'
|
|
12
|
-
* const isNumber = (s) => typeof s === 'number'
|
|
13
|
-
* const [strings, numbers, others] = partitionMulti(['a', 1, 'b', false], [isString, isNumber])
|
|
14
|
-
* //=> [['a', 'b'], [1], [false]]
|
|
15
|
-
*
|
|
16
|
-
* @param elements array of elements
|
|
17
|
-
* @param predicates array of predicates to apply on elements
|
|
18
|
-
* @return partitioned elements by the given predicates
|
|
19
|
-
*/
|
|
20
|
-
function partitionMulti(elements, predicates) {
|
|
21
|
-
return reduce(predicates, function (partitioned, predicate) {
|
|
22
|
-
return concat(dropRight(partitioned), partition(last(partitioned), predicate));
|
|
23
|
-
}, [elements]);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { partitionMulti as p };
|
|
27
|
-
//# sourceMappingURL=4fc64a2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"4fc64a2e.js","sources":["../../src/utils/partitionMulti.ts"],"sourcesContent":["import concat from 'lodash/concat';\nimport dropRight from 'lodash/dropRight';\nimport last from 'lodash/last';\nimport partition from 'lodash/partition';\nimport reduce from 'lodash/reduce';\nimport { Predicate } from './type';\n\n/**\n * Similar to lodash `partition` function but working with multiple predicates.\n *\n * @example\n * const isString = (s) => typeof s === 'string'\n * const isNumber = (s) => typeof s === 'number'\n * const [strings, numbers, others] = partitionMulti(['a', 1, 'b', false], [isString, isNumber])\n * //=> [['a', 'b'], [1], [false]]\n *\n * @param elements array of elements\n * @param predicates array of predicates to apply on elements\n * @return partitioned elements by the given predicates\n */\nexport function partitionMulti<T>(elements: T[], predicates: Array<Predicate<T>>): T[][] {\n return reduce(\n predicates,\n (partitioned: T[][], predicate: Predicate<T>) =>\n concat(dropRight(partitioned), partition(last(partitioned), predicate)),\n [elements],\n );\n}\n"],"names":["partitionMulti","elements","predicates","reduce","partitioned","predicate","concat","dropRight","partition","last"],"mappings":";;;;;;AAOA;;;;;;;;;;;;;AAaO,SAASA,cAAT,CAA2BC,QAA3B,EAA0CC,UAA1C,EAAkF;AACrF,SAAOC,MAAM,CACTD,UADS,EAET,UAACE,WAAD,EAAqBC,SAArB;AAAA,WACIC,MAAM,CAACC,SAAS,CAACH,WAAD,CAAV,EAAyBI,SAAS,CAACC,IAAI,CAACL,WAAD,CAAL,EAAoBC,SAApB,CAAlC,CADV;AAAA,GAFS,EAIT,CAACJ,QAAD,CAJS,CAAb;AAMH;;;;"}
|
package/_internal/53a831be.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { e as _toConsumableArray } from './6340c129.js';
|
|
2
|
-
import React, { useEffect, createContext, useContext, useMemo, useRef } from 'react';
|
|
3
|
-
import isEmpty from 'lodash/isEmpty';
|
|
4
|
-
|
|
5
|
-
var EVENT_TYPES = ['mousedown', 'touchstart'];
|
|
6
|
-
|
|
7
|
-
function isClickAway(target, refs) {
|
|
8
|
-
// The target element is not contained in any of the listed element references.
|
|
9
|
-
return !refs.some(function (e) {
|
|
10
|
-
var _e$current;
|
|
11
|
-
|
|
12
|
-
return e === null || e === void 0 ? void 0 : (_e$current = e.current) === null || _e$current === void 0 ? void 0 : _e$current.contains(target);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Listen to clicks away from the given elements and callback the passed in function.
|
|
18
|
-
*
|
|
19
|
-
* Warning: If you need to detect click away on nested React portals, please use the `ClickAwayProvider` component.
|
|
20
|
-
*/
|
|
21
|
-
function useClickAway(_ref) {
|
|
22
|
-
var callback = _ref.callback,
|
|
23
|
-
childrenRefs = _ref.childrenRefs;
|
|
24
|
-
useEffect(function () {
|
|
25
|
-
var currentRefs = childrenRefs.current;
|
|
26
|
-
|
|
27
|
-
if (!callback || !currentRefs || isEmpty(currentRefs)) {
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
var listener = function listener(evt) {
|
|
32
|
-
if (isClickAway(evt.target, currentRefs)) {
|
|
33
|
-
callback(evt);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
EVENT_TYPES.forEach(function (evtType) {
|
|
38
|
-
return document.addEventListener(evtType, listener);
|
|
39
|
-
});
|
|
40
|
-
return function () {
|
|
41
|
-
EVENT_TYPES.forEach(function (evtType) {
|
|
42
|
-
return document.removeEventListener(evtType, listener);
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
}, [callback, childrenRefs]);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
var ClickAwayAncestorContext = createContext(null);
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Component combining the `useClickAway` hook with a React context to hook into the React component tree and make sure
|
|
52
|
-
* we take into account both the DOM tree and the React tree to detect click away.
|
|
53
|
-
*
|
|
54
|
-
* @return the react component.
|
|
55
|
-
*/
|
|
56
|
-
var ClickAwayProvider = function ClickAwayProvider(_ref) {
|
|
57
|
-
var children = _ref.children,
|
|
58
|
-
callback = _ref.callback,
|
|
59
|
-
childrenRefs = _ref.childrenRefs,
|
|
60
|
-
parentRef = _ref.parentRef;
|
|
61
|
-
var parentContext = useContext(ClickAwayAncestorContext);
|
|
62
|
-
var currentContext = useMemo(function () {
|
|
63
|
-
var context = {
|
|
64
|
-
childrenRefs: [],
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Add element refs to the current context and propagate to the parent context.
|
|
68
|
-
*/
|
|
69
|
-
addRefs: function addRefs() {
|
|
70
|
-
var _context$childrenRefs;
|
|
71
|
-
|
|
72
|
-
// Add element refs that should be considered as inside the click away context.
|
|
73
|
-
(_context$childrenRefs = context.childrenRefs).push.apply(_context$childrenRefs, arguments);
|
|
74
|
-
|
|
75
|
-
if (parentContext) {
|
|
76
|
-
// Also add then to the parent context
|
|
77
|
-
parentContext.addRefs.apply(parentContext, arguments);
|
|
78
|
-
|
|
79
|
-
if (parentRef) {
|
|
80
|
-
// The parent element is also considered as inside the parent click away context but not inside the current context
|
|
81
|
-
parentContext.addRefs(parentRef);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
return context;
|
|
87
|
-
}, [parentContext, parentRef]);
|
|
88
|
-
useEffect(function () {
|
|
89
|
-
var currentRefs = childrenRefs.current;
|
|
90
|
-
|
|
91
|
-
if (!currentRefs) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
currentContext.addRefs.apply(currentContext, _toConsumableArray(currentRefs));
|
|
96
|
-
}, [currentContext, childrenRefs]);
|
|
97
|
-
useClickAway({
|
|
98
|
-
callback: callback,
|
|
99
|
-
childrenRefs: useRef(currentContext.childrenRefs)
|
|
100
|
-
});
|
|
101
|
-
return React.createElement(ClickAwayAncestorContext.Provider, {
|
|
102
|
-
value: currentContext
|
|
103
|
-
}, children);
|
|
104
|
-
};
|
|
105
|
-
ClickAwayProvider.displayName = 'ClickAwayProvider';
|
|
106
|
-
|
|
107
|
-
export { ClickAwayProvider as C };
|
|
108
|
-
//# sourceMappingURL=53a831be.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"53a831be.js","sources":["../../src/hooks/useClickAway.tsx","../../src/utils/ClickAwayProvider/ClickAwayProvider.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\nimport { Falsy } from '@lumx/react/utils/type';\n\nimport isEmpty from 'lodash/isEmpty';\n\nconst EVENT_TYPES = ['mousedown', 'touchstart'];\n\nfunction isClickAway(target: HTMLElement, refs: Array<RefObject<HTMLElement>>): boolean {\n // The target element is not contained in any of the listed element references.\n return !refs.some((e) => e?.current?.contains(target));\n}\n\nexport interface ClickAwayParameters {\n /**\n * A callback function to call when the user clicks away from the elements.\n */\n callback: EventListener | Falsy;\n /**\n * Elements considered within the click away context (clicking outside them will trigger the click away callback).\n */\n childrenRefs: RefObject<Array<RefObject<HTMLElement>>>;\n}\n\n/**\n * Listen to clicks away from the given elements and callback the passed in function.\n *\n * Warning: If you need to detect click away on nested React portals, please use the `ClickAwayProvider` component.\n */\nexport function useClickAway({ callback, childrenRefs }: ClickAwayParameters): void {\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!callback || !currentRefs || isEmpty(currentRefs)) {\n return undefined;\n }\n const listener: EventListener = (evt) => {\n if (isClickAway(evt.target as HTMLElement, currentRefs)) {\n callback(evt);\n }\n };\n\n EVENT_TYPES.forEach((evtType) => document.addEventListener(evtType, listener));\n return () => {\n EVENT_TYPES.forEach((evtType) => document.removeEventListener(evtType, listener));\n };\n }, [callback, childrenRefs]);\n}\n","import React, { createContext, RefObject, useContext, useEffect, useMemo, useRef } from 'react';\nimport { ClickAwayParameters, useClickAway } from '@lumx/react/hooks/useClickAway';\n\ninterface ContextValue {\n childrenRefs: Array<RefObject<HTMLElement>>;\n addRefs(...newChildrenRefs: Array<RefObject<HTMLElement>>): void;\n}\n\nconst ClickAwayAncestorContext = createContext<ContextValue | null>(null);\n\ninterface ClickAwayProviderProps extends ClickAwayParameters {\n /**\n * (Optional) Element that should be considered as part of the parent\n */\n parentRef?: RefObject<HTMLElement>;\n}\n\n/**\n * Component combining the `useClickAway` hook with a React context to hook into the React component tree and make sure\n * we take into account both the DOM tree and the React tree to detect click away.\n *\n * @return the react component.\n */\nexport const ClickAwayProvider: React.FC<ClickAwayProviderProps> = ({\n children,\n callback,\n childrenRefs,\n parentRef,\n}) => {\n const parentContext = useContext(ClickAwayAncestorContext);\n const currentContext = useMemo(() => {\n const context: ContextValue = {\n childrenRefs: [],\n /**\n * Add element refs to the current context and propagate to the parent context.\n */\n addRefs(...newChildrenRefs) {\n // Add element refs that should be considered as inside the click away context.\n context.childrenRefs.push(...newChildrenRefs);\n\n if (parentContext) {\n // Also add then to the parent context\n parentContext.addRefs(...newChildrenRefs);\n if (parentRef) {\n // The parent element is also considered as inside the parent click away context but not inside the current context\n parentContext.addRefs(parentRef);\n }\n }\n },\n };\n return context;\n }, [parentContext, parentRef]);\n\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!currentRefs) {\n return;\n }\n currentContext.addRefs(...currentRefs);\n }, [currentContext, childrenRefs]);\n\n useClickAway({ callback, childrenRefs: useRef(currentContext.childrenRefs) });\n return <ClickAwayAncestorContext.Provider value={currentContext}>{children}</ClickAwayAncestorContext.Provider>;\n};\nClickAwayProvider.displayName = 'ClickAwayProvider';\n"],"names":["EVENT_TYPES","isClickAway","target","refs","some","e","current","contains","useClickAway","callback","childrenRefs","useEffect","currentRefs","isEmpty","undefined","listener","evt","forEach","evtType","document","addEventListener","removeEventListener","ClickAwayAncestorContext","createContext","ClickAwayProvider","children","parentRef","parentContext","useContext","currentContext","useMemo","context","addRefs","push","useRef","displayName"],"mappings":"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"}
|
package/_internal/55271fa1.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { AriaAttributes, DetailedHTMLProps, ButtonHTMLAttributes } from 'react';
|
|
2
|
-
import { l as GenericProps, m as HasTheme, a as Color, E as Emphasis, S as Size } from './eca6d4dc.js';
|
|
3
|
-
|
|
4
|
-
declare type HTMLButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
|
|
5
|
-
/**
|
|
6
|
-
* Button size definition.
|
|
7
|
-
*/
|
|
8
|
-
declare type ButtonSize = Extract<Size, 's' | 'm'>;
|
|
9
|
-
interface BaseButtonProps extends GenericProps, Pick<AriaAttributes, 'aria-expanded' | 'aria-haspopup' | 'aria-pressed' | 'aria-label'>, HasTheme {
|
|
10
|
-
/** Color variant. */
|
|
11
|
-
color?: Color;
|
|
12
|
-
/** Emphasis variant. */
|
|
13
|
-
emphasis?: Emphasis;
|
|
14
|
-
/** Whether or not the button has a background color in low emphasis. */
|
|
15
|
-
hasBackground?: boolean;
|
|
16
|
-
/** Native anchor href property. It determines whether the Button will be a <button> or an <a>. */
|
|
17
|
-
href?: string;
|
|
18
|
-
/** Whether the component is disabled or not. */
|
|
19
|
-
isDisabled?: boolean;
|
|
20
|
-
/** Whether the component is selected or not. */
|
|
21
|
-
isSelected?: boolean;
|
|
22
|
-
/** Native button name property. */
|
|
23
|
-
name?: string;
|
|
24
|
-
/** Size variant. */
|
|
25
|
-
size?: ButtonSize;
|
|
26
|
-
/** Native anchor target property. */
|
|
27
|
-
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
28
|
-
/** Native button type. */
|
|
29
|
-
type?: HTMLButtonProps['type'];
|
|
30
|
-
/** Custom react component for the link (can be used to inject react router Link). */
|
|
31
|
-
linkAs?: 'a' | any;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export { BaseButtonProps as B };
|
package/_internal/55d30377.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { l as GenericProps, a as Color, k as Comp } from './eca6d4dc.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Defines the props of the component.
|
|
6
|
-
*/
|
|
7
|
-
interface BadgeProps extends GenericProps {
|
|
8
|
-
/** Badge content. */
|
|
9
|
-
children?: ReactNode;
|
|
10
|
-
/** Color variant. */
|
|
11
|
-
color?: Color;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Badge component.
|
|
15
|
-
*
|
|
16
|
-
* @param props Component props.
|
|
17
|
-
* @param ref Component ref.
|
|
18
|
-
* @return React element.
|
|
19
|
-
*/
|
|
20
|
-
declare const Badge: Comp<BadgeProps, HTMLDivElement>;
|
|
21
|
-
|
|
22
|
-
export { BadgeProps as B, Badge as a };
|