@ntbjs/react-components 2.0.8-rc.1 → 2.0.8-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/data/index.js +0 -1
- package/build/data/index.js.map +1 -1
- package/build/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.js +0 -1
- package/build/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.js.map +1 -1
- package/build/inputs/CompactStarRating/CompactStarRating.js +0 -1
- package/build/inputs/CompactStarRating/CompactStarRating.js.map +1 -1
- package/build/inputs/CompactTextInput/CompactTextInput.js +0 -1
- package/build/inputs/CompactTextInput/CompactTextInput.js.map +1 -1
- package/build/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.js +0 -1
- package/build/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.js.map +1 -1
- package/build/inputs/TextArea/TextArea.js +0 -1
- package/build/inputs/TextArea/TextArea.js.map +1 -1
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.js +1 -2
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.js.map +1 -1
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.js +4 -2
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryCompactCard/AssetGalleryCompactCard.styled.js.map +1 -1
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.js +1 -2
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.js.map +1 -1
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.js +5 -3
- package/build/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.js.map +1 -1
- package/build/widgets/AssetGallery/asset.propType.js +2 -1
- package/build/widgets/AssetGallery/asset.propType.js.map +1 -1
- package/build/{data → widgets}/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js +29 -27
- package/build/widgets/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js.map +1 -0
- package/build/{data → widgets}/InstructionsSeverityDisplay/InstructionsSeverityDisplay.styled.js +14 -9
- package/build/widgets/InstructionsSeverityDisplay/InstructionsSeverityDisplay.styled.js.map +1 -0
- package/build/widgets/SummaryCard/SummaryCard.js +12 -14
- package/build/widgets/SummaryCard/SummaryCard.js.map +1 -1
- package/build/widgets/SummaryCard/SummaryCard.styled.js +1 -0
- package/build/widgets/SummaryCard/SummaryCard.styled.js.map +1 -1
- package/build/widgets/index.js +1 -0
- package/build/widgets/index.js.map +1 -1
- package/package.json +1 -1
- package/build/data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js.map +0 -1
- package/build/data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.styled.js.map +0 -1
package/build/data/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { default as Alert } from './Alert/Alert.js';
|
|
2
2
|
export { default as Badge } from './Badge/Badge.js';
|
|
3
|
-
export { default as InstructionsSeverityDisplay } from './InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
4
3
|
export { default as Popover } from './Popover/Popover.js';
|
|
5
4
|
export { default as Tab } from './Tab/Tab.js';
|
|
6
5
|
export { default as Tabs } from './Tabs/Tabs.js';
|
package/build/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -5,7 +5,6 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import React__default, { useState, useMemo } from 'react';
|
|
6
6
|
import '../../data/Alert/Alert.js';
|
|
7
7
|
import '../../data/Badge/Badge.js';
|
|
8
|
-
import '../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
9
8
|
import '../../data/Popover/Popover.js';
|
|
10
9
|
import '../../data/Tab/Tab.js';
|
|
11
10
|
import '../../data/Tabs/Tabs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactAutocompleteSelect.js","sources":["../../../src/components/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.js"],"sourcesContent":["import { isEmpty } from 'lodash';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport React, { useMemo, useState } from 'react';\nimport { Tooltip } from '../../data';\n\nimport * as S from './CompactAutocompleteSelect.styled';\n\n/**\n * Select input control with autocomplete, async and creatable support.\n *\n * This control allows users to search through a predefined set of options, asynchronously load additional options,\n * and even create new options on-the-fly. It combines the benefits of autocomplete functionality,\n * asynchronous data fetching, and creatable option support.\n *\n * The component uses [react-select](https://react-select.com/) for the main select functionality,\n * with [react-select-async-paginate](https://www.npmjs.com/package/react-select-async-paginate) for pagination.\n *\n * <br /> ### Import\n *\n * ``` js\n * import { CompactAutocompleteSelect } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactAutocompleteSelect from '@ntbjs/react-components/inputs/CompactAutocompleteSelect'\n * ```\n *\n * <br /> ## Option `object` format\n * Options are represented by an `Array` of `objects` with the following format:\n *\n * ``` js\n * {\n * value: \"Example\",\n * label: \"Example\"\n * }\n * ```\n * The `label` is what will visible to the end-user. Whether `value` and `label`\n * should be different will depend on your use-case, but they are not required to.\n *\n * <br /> ## Update handling\n * Changes from the end-user to the selected/available options can be handled with a callback function\n * passed through the `onUpdateCallback` prop, which is triggered any time the selected values change.\n *\n * The callback function will be passed two arguments:\n * * `action: string`\n * * `updatedOption: object`\n *\n * <br />#### `action`\n * A `string` indicating what kind of update was made.\n *\n * The possible values of `action` are:\n * * `create-option`: an option that didn't exist in the original list of available options were added\n * * `select-option`: an option was selected\n * * `deselect-option`: an option was de-selected by clicking the X in the dropdown menu\n * * `remove-value`: an option was de-selected by clicking the X on the option label/box\n * * `pop-value`: an option was de-selected with backspace\n * * `clear`: all options were de-selected by clicking the clear indicator (not currently in use)\n *\n * <br />#### `updatedOption`\n * Option `object`of the updated option:\n *\n * In addition to the default `value` and `label` keys, an `__isNew__` flag will be present if the option was\n * not part of the original list of available options, i.e. created by the user in the current \"session\".\n * This is the case regardless of whether the list is provided through `availableOptions` or\n * asynchronously through `loadOptions`.\n *\n *\n * <br />## Asynchronous fetching/filtering with pagination\n * The list of available options can be fetched and filtered asynchronously with a `Promise`\n * passed through the `loadOptions` prop.\n *\n * It will be passed two arguments:\n *\n * * `inputValue: string`: current input value/search\n * * `prevOptions: Array`: previously loaded options for the current search\n *\n * The function is triggered and the first page is fetched when the dropdown menu opens.\n * Whenever the user scrolls down to the bottom of the list, `loadOptions` will\n * be triggered again to fetch the next page.\n *\n * The `Promise` should return an `object` with the following keys:\n *\n * ``` js\n * {\n * options: Array,\n * hasMore: boolean\n * }\n * ```\n *\n * `options` should contain the current page of options. It will be concatenated to the previous\n * set of options automatically. The `hasMore` flag indicates whether there is another page to be fetched.\n *\n * **Example:**\n *\n * ``` js\n *\n * const availableOptions = [\n * { value: \"Example 1\", label: \"Example 1\" },\n * ...\n * { value: \"Example N\", label: \"Example N\" }\n * ];\n *\n * const filterOptions = inputValue => {\n * return availableOptions.filter(option => {\n * return option.label.toLowerCase().includes(inputValue.toLowerCase());\n * });\n * };\n *\n * const loadOptionsFunc = (inputValue, prevOptions) => {\n * const currentLength = prevOptions.length;\n * const pageLength = 10;\n *\n * let filteredOptions;\n *\n * if (inputValue) {\n * filteredOptions = filterOptions(inputValue);\n * } else {\n * filteredOptions = availableOptions;\n * }\n *\n * const hasMore = filteredOptions.length > currentLength + pageLength;\n * const slicedOptions = filteredOptions.slice(currentLength, currentLength + pageLength);\n *\n * return {\n * options: slicedOptions,\n * hasMore\n * };\n * };\n *\n * const loadOptions = (inputValue, prevOptions) => {\n * return new Promise(resolve => {\n * resolve(loadOptionsFunc(inputValue, prevOptions));\n * });\n * };\n * ```\n *\n * While waiting for the `Promise` to resolve, the component will be in a loading state.\n * The loading state is showcased in the \"Primary With Fetching Timeout\" Story.\n *\n * <br />#### Without asynchronous fetching/filtering\n * If you wish to not use asynchronous fetching/filtering, leave the `loadOptions` prop undefined\n * and pass the `Array` of all available options to the `availableOptions` prop instead.\n * The component will use the built-in filtering on `label` from `react-select`, and the options\n * will not be paginated.\n *\n * <br />\n */\n\nconst CompactAutocompleteSelect = React.forwardRef(function CompactAutocompleteSelect(\n {\n label,\n availableOptions,\n placeholder,\n selectedOption,\n loadOptions,\n noOptionsMessageFunc,\n createNewOptionMessageFunc,\n onUpdateCallback,\n loadingMessageFunc,\n creatable,\n readOnly,\n edit,\n disabled,\n hidden,\n type,\n descriptionToolTip,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const [uniqueId] = useState(nanoid());\n const [selected, setSelected] = useState(selectedOption);\n const [focused, setFocused] = useState(false);\n const [cacheUnique, setCacheUnique] = useState(0);\n\n const memoizedDescriptionToolTip = useMemo(() => {\n return descriptionToolTip;\n }, [descriptionToolTip]);\n\n /**\n * Adds displayname to inner components\n */\n const Control = props => {\n return <S.Control className=\"select-control\" edit={edit} type={type} {...props} />;\n };\n\n const ValueContainer = useMemo(() => {\n const valueContainer = props => {\n return (\n <>\n <S.ValueContainer type={type} {...props} />\n </>\n );\n };\n valueContainer.displayName = 'ValueContainerWrapper';\n return valueContainer;\n }, [type]);\n\n const Input = useMemo(() => {\n const selectInput = props => {\n return <S.Input className=\"select-input\" {...props} />;\n };\n selectInput.displayName = 'InputWrapper';\n return selectInput;\n }, []);\n\n const Menu = useMemo(() => {\n const menu = props => {\n return <S.Menu className=\"select-menu\" {...props} />;\n };\n menu.displayName = 'MenuWrapper';\n return menu;\n }, []);\n\n const Placeholder = props => {\n return <S.Placeholder className=\"select-placeholder\" type={type} {...props} />;\n };\n\n const Option = props => {\n return !props.data.link ? (\n <S.Option className=\"menu-item\" {...props} />\n ) : (\n <S.Option {...props}>\n <a href={props.data.link}>\n {props.data.icon}\n {props.label}\n </a>\n </S.Option>\n );\n };\n\n const SingleValue = props => {\n return <S.SingleValue className=\"menu-value\" {...props} />;\n };\n\n Option.propTypes = {\n data: PropTypes.shape({\n icon: PropTypes.node,\n link: PropTypes.string\n }),\n label: PropTypes.string\n };\n\n const DropdownIndicator = props => {\n return (\n <S.DropdownIndicator className=\"dropdown-indicator\" {...props}>\n <S.DropdownIndicatorIcon />\n </S.DropdownIndicator>\n );\n };\n\n const ClearIndicator = props => {\n return (\n <S.ClearIndicator className=\"clear-indicator\" {...props}>\n <S.ClearIndicatorIcon />\n </S.ClearIndicator>\n );\n };\n\n const IndicatorSeparator = props => {\n return <S.IndicatorSeparator className=\"indicator-separator\" {...props} />;\n };\n\n /**\n * Adds classnames to inner components\n */\n const innerComponents = {\n Control,\n ValueContainer,\n DropdownIndicator,\n IndicatorSeparator,\n ClearIndicator,\n Option,\n SingleValue,\n Input,\n Placeholder,\n Menu\n };\n\n const sharedSelectProps = {\n ref: forwardedRef,\n options: loadOptions ? undefined : availableOptions,\n value: selected,\n loadOptions: loadOptions,\n loadingMessage: loadingMessageFunc,\n formatCreateLabel: createNewOptionMessageFunc,\n noOptionsMessage: input => {\n return noOptionsMessageFunc(input.inputValue);\n },\n onFocus: () => {\n setFocused(true);\n },\n onBlur: () => {\n setFocused(false);\n },\n focused: focused,\n isDisabled: disabled || readOnly,\n components: innerComponents,\n isClearable: true,\n isSearchable: true,\n placeholder: placeholder,\n id: uniqueId,\n cacheUniqs: loadOptions ? [cacheUnique] : undefined,\n onChange: (selected, actionMeta) => {\n switch (actionMeta.action) {\n case 'create-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n if (loadOptions) {\n setCacheUnique(cacheUnique + 1);\n }\n\n setSelected(selected);\n break;\n\n case 'select-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'remove-value':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'pop-value':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'deselect-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'clear':\n setSelected(selected);\n break;\n\n default:\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n }\n }\n };\n\n if (hidden) return null;\n\n const input = () => {\n return (\n <S.CompactAutocompleteSelect disabled={disabled}>\n <S.InputContainer>\n {label && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.Label>\n )}\n {loadOptions ? (\n creatable ? (\n <S.AsyncCreatableAutocompleteSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n ) : (\n <S.AsyncAutocompleteSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n )\n ) : creatable ? (\n <S.AutocompletCreatableSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n ) : (\n <S.AutocompletSelect $hasLabel={!isEmpty(label)} {...sharedSelectProps} {...props} />\n )}\n </S.InputContainer>\n </S.CompactAutocompleteSelect>\n );\n };\n\n return (\n <>\n {!memoizedDescriptionToolTip && input()}\n {memoizedDescriptionToolTip && (\n <div>\n <Tooltip\n content={memoizedDescriptionToolTip}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n zIndex={999999}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n </>\n );\n});\n\nCompactAutocompleteSelect.propTypes = {\n /**\n * The label of the input field – leave `undefined` to hide the label\n */\n label: PropTypes.string,\n /**\n * The placeholder of the input. Text to be displayed on the input element when the component is enabled and not focused – e.g. \"Search categories...\"\n */\n placeholder: PropTypes.string,\n /**\n * `Array` of `objects` that populate the select menu. This is only needed\n * when asynchronous option fetching with the `loadOptions` prop is not used.\n *\n * **Note:**\n * <br />This will be overridden by the `loadOptions` prop if both props are set.\n */\n availableOptions: PropTypes.arrayOf(PropTypes.object),\n /**\n * `Array` of `objects` containing the selected options.\n */\n selectedOption: PropTypes.object,\n /**\n * Function with a `Promise` returning filtered options.\n *\n * See [Asynchronous fetching/filtering with pagination](#asynchronous-fetchingfiltering-with-pagination)\n * for details.\n *\n * **Note:**\n * <br />This will override the `availableOptions` prop if both props are set.\n */\n loadOptions: PropTypes.func,\n /**\n * Function for custom \"Loading...\" message while waiting for the first page\n * from `loadOptions` to resolve. Defaults to \"Loading...\" if no function is provided.\n */\n loadingMessageFunc: PropTypes.func,\n /**\n * Callback function for formatting the message displayed in the dropdown when there\n * are no matching options, and the user has permission to create new options.\n * The callback function will be given the current input value as an argument.\n */\n createNewOptionMessageFunc: PropTypes.func,\n /**\n * If the list of options is empty, or if the current input value doesn't match\n * any of the available options and the user doesn't have permission to add options,\n * this function will be called and passed the current input value as an argument.\n */\n noOptionsMessageFunc: PropTypes.func,\n /**\n * Whether the value is read only\n */\n readOnly: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * There is an error present – 'error be prioritized over warnings if both are set to 'true'.\n */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * There is a warning present.\n */\n warning: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * Callback function for sending updates to the backend whenever the selected values are updated.\n * See [Update handling](#update-handling) for details.\n */\n onUpdateCallback: PropTypes.func,\n /**\n * Whether the user have permission to create new options\n */\n creatable: PropTypes.bool,\n /**\n * Whether the multi-select should be disabled.\n * The user will not be able to trigger the on-click effect of the selected options.\n */\n disabled: PropTypes.bool,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'instructions-warning', 'loading', 'success']),\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element\n};\n\nCompactAutocompleteSelect.defaultProps = {\n noOptionsMessageFunc: inputValue => {\n if (inputValue) {\n return `No matches for \"${inputValue}\"`;\n } else {\n return 'No available options';\n }\n },\n readOnly: false,\n disabled: false,\n creatable: true,\n edit: false,\n error: false,\n warning: false,\n hidden: false,\n type: '',\n descriptionToolTip: ''\n};\n\nexport default CompactAutocompleteSelect;\n"],"names":["CompactAutocompleteSelect","React","forwardRef","label","availableOptions","placeholder","selectedOption","loadOptions","noOptionsMessageFunc","createNewOptionMessageFunc","onUpdateCallback","loadingMessageFunc","creatable","readOnly","edit","disabled","hidden","type","descriptionToolTip","loadingIcon","successIcon","props","forwardedRef","uniqueId","useState","nanoid","selected","setSelected","focused","setFocused","cacheUnique","setCacheUnique","memoizedDescriptionToolTip","useMemo","Control","createElement","S","_extends","className","ValueContainer","valueContainer","Fragment","displayName","Input","selectInput","Menu","menu","Placeholder","Option","data","link","href","icon","SingleValue","propTypes","process","env","NODE_ENV","PropTypes","shape","node","string","DropdownIndicator","ClearIndicator","IndicatorSeparator","innerComponents","sharedSelectProps","ref","options","undefined","value","loadingMessage","formatCreateLabel","noOptionsMessage","input","inputValue","onFocus","onBlur","isDisabled","components","isClearable","isSearchable","id","cacheUniqs","onChange","actionMeta","action","htmlFor","$hasLabel","isEmpty","Tooltip","content","key","placement","trigger","zIndex","arrayOf","object","func","bool","error","oneOfType","warning","oneOf","element","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompactAutocompleteSelect.js","sources":["../../../src/components/inputs/CompactAutocompleteSelect/CompactAutocompleteSelect.js"],"sourcesContent":["import { isEmpty } from 'lodash';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport React, { useMemo, useState } from 'react';\nimport { Tooltip } from '../../data';\n\nimport * as S from './CompactAutocompleteSelect.styled';\n\n/**\n * Select input control with autocomplete, async and creatable support.\n *\n * This control allows users to search through a predefined set of options, asynchronously load additional options,\n * and even create new options on-the-fly. It combines the benefits of autocomplete functionality,\n * asynchronous data fetching, and creatable option support.\n *\n * The component uses [react-select](https://react-select.com/) for the main select functionality,\n * with [react-select-async-paginate](https://www.npmjs.com/package/react-select-async-paginate) for pagination.\n *\n * <br /> ### Import\n *\n * ``` js\n * import { CompactAutocompleteSelect } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactAutocompleteSelect from '@ntbjs/react-components/inputs/CompactAutocompleteSelect'\n * ```\n *\n * <br /> ## Option `object` format\n * Options are represented by an `Array` of `objects` with the following format:\n *\n * ``` js\n * {\n * value: \"Example\",\n * label: \"Example\"\n * }\n * ```\n * The `label` is what will visible to the end-user. Whether `value` and `label`\n * should be different will depend on your use-case, but they are not required to.\n *\n * <br /> ## Update handling\n * Changes from the end-user to the selected/available options can be handled with a callback function\n * passed through the `onUpdateCallback` prop, which is triggered any time the selected values change.\n *\n * The callback function will be passed two arguments:\n * * `action: string`\n * * `updatedOption: object`\n *\n * <br />#### `action`\n * A `string` indicating what kind of update was made.\n *\n * The possible values of `action` are:\n * * `create-option`: an option that didn't exist in the original list of available options were added\n * * `select-option`: an option was selected\n * * `deselect-option`: an option was de-selected by clicking the X in the dropdown menu\n * * `remove-value`: an option was de-selected by clicking the X on the option label/box\n * * `pop-value`: an option was de-selected with backspace\n * * `clear`: all options were de-selected by clicking the clear indicator (not currently in use)\n *\n * <br />#### `updatedOption`\n * Option `object`of the updated option:\n *\n * In addition to the default `value` and `label` keys, an `__isNew__` flag will be present if the option was\n * not part of the original list of available options, i.e. created by the user in the current \"session\".\n * This is the case regardless of whether the list is provided through `availableOptions` or\n * asynchronously through `loadOptions`.\n *\n *\n * <br />## Asynchronous fetching/filtering with pagination\n * The list of available options can be fetched and filtered asynchronously with a `Promise`\n * passed through the `loadOptions` prop.\n *\n * It will be passed two arguments:\n *\n * * `inputValue: string`: current input value/search\n * * `prevOptions: Array`: previously loaded options for the current search\n *\n * The function is triggered and the first page is fetched when the dropdown menu opens.\n * Whenever the user scrolls down to the bottom of the list, `loadOptions` will\n * be triggered again to fetch the next page.\n *\n * The `Promise` should return an `object` with the following keys:\n *\n * ``` js\n * {\n * options: Array,\n * hasMore: boolean\n * }\n * ```\n *\n * `options` should contain the current page of options. It will be concatenated to the previous\n * set of options automatically. The `hasMore` flag indicates whether there is another page to be fetched.\n *\n * **Example:**\n *\n * ``` js\n *\n * const availableOptions = [\n * { value: \"Example 1\", label: \"Example 1\" },\n * ...\n * { value: \"Example N\", label: \"Example N\" }\n * ];\n *\n * const filterOptions = inputValue => {\n * return availableOptions.filter(option => {\n * return option.label.toLowerCase().includes(inputValue.toLowerCase());\n * });\n * };\n *\n * const loadOptionsFunc = (inputValue, prevOptions) => {\n * const currentLength = prevOptions.length;\n * const pageLength = 10;\n *\n * let filteredOptions;\n *\n * if (inputValue) {\n * filteredOptions = filterOptions(inputValue);\n * } else {\n * filteredOptions = availableOptions;\n * }\n *\n * const hasMore = filteredOptions.length > currentLength + pageLength;\n * const slicedOptions = filteredOptions.slice(currentLength, currentLength + pageLength);\n *\n * return {\n * options: slicedOptions,\n * hasMore\n * };\n * };\n *\n * const loadOptions = (inputValue, prevOptions) => {\n * return new Promise(resolve => {\n * resolve(loadOptionsFunc(inputValue, prevOptions));\n * });\n * };\n * ```\n *\n * While waiting for the `Promise` to resolve, the component will be in a loading state.\n * The loading state is showcased in the \"Primary With Fetching Timeout\" Story.\n *\n * <br />#### Without asynchronous fetching/filtering\n * If you wish to not use asynchronous fetching/filtering, leave the `loadOptions` prop undefined\n * and pass the `Array` of all available options to the `availableOptions` prop instead.\n * The component will use the built-in filtering on `label` from `react-select`, and the options\n * will not be paginated.\n *\n * <br />\n */\n\nconst CompactAutocompleteSelect = React.forwardRef(function CompactAutocompleteSelect(\n {\n label,\n availableOptions,\n placeholder,\n selectedOption,\n loadOptions,\n noOptionsMessageFunc,\n createNewOptionMessageFunc,\n onUpdateCallback,\n loadingMessageFunc,\n creatable,\n readOnly,\n edit,\n disabled,\n hidden,\n type,\n descriptionToolTip,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const [uniqueId] = useState(nanoid());\n const [selected, setSelected] = useState(selectedOption);\n const [focused, setFocused] = useState(false);\n const [cacheUnique, setCacheUnique] = useState(0);\n\n const memoizedDescriptionToolTip = useMemo(() => {\n return descriptionToolTip;\n }, [descriptionToolTip]);\n\n /**\n * Adds displayname to inner components\n */\n const Control = props => {\n return <S.Control className=\"select-control\" edit={edit} type={type} {...props} />;\n };\n\n const ValueContainer = useMemo(() => {\n const valueContainer = props => {\n return (\n <>\n <S.ValueContainer type={type} {...props} />\n </>\n );\n };\n valueContainer.displayName = 'ValueContainerWrapper';\n return valueContainer;\n }, [type]);\n\n const Input = useMemo(() => {\n const selectInput = props => {\n return <S.Input className=\"select-input\" {...props} />;\n };\n selectInput.displayName = 'InputWrapper';\n return selectInput;\n }, []);\n\n const Menu = useMemo(() => {\n const menu = props => {\n return <S.Menu className=\"select-menu\" {...props} />;\n };\n menu.displayName = 'MenuWrapper';\n return menu;\n }, []);\n\n const Placeholder = props => {\n return <S.Placeholder className=\"select-placeholder\" type={type} {...props} />;\n };\n\n const Option = props => {\n return !props.data.link ? (\n <S.Option className=\"menu-item\" {...props} />\n ) : (\n <S.Option {...props}>\n <a href={props.data.link}>\n {props.data.icon}\n {props.label}\n </a>\n </S.Option>\n );\n };\n\n const SingleValue = props => {\n return <S.SingleValue className=\"menu-value\" {...props} />;\n };\n\n Option.propTypes = {\n data: PropTypes.shape({\n icon: PropTypes.node,\n link: PropTypes.string\n }),\n label: PropTypes.string\n };\n\n const DropdownIndicator = props => {\n return (\n <S.DropdownIndicator className=\"dropdown-indicator\" {...props}>\n <S.DropdownIndicatorIcon />\n </S.DropdownIndicator>\n );\n };\n\n const ClearIndicator = props => {\n return (\n <S.ClearIndicator className=\"clear-indicator\" {...props}>\n <S.ClearIndicatorIcon />\n </S.ClearIndicator>\n );\n };\n\n const IndicatorSeparator = props => {\n return <S.IndicatorSeparator className=\"indicator-separator\" {...props} />;\n };\n\n /**\n * Adds classnames to inner components\n */\n const innerComponents = {\n Control,\n ValueContainer,\n DropdownIndicator,\n IndicatorSeparator,\n ClearIndicator,\n Option,\n SingleValue,\n Input,\n Placeholder,\n Menu\n };\n\n const sharedSelectProps = {\n ref: forwardedRef,\n options: loadOptions ? undefined : availableOptions,\n value: selected,\n loadOptions: loadOptions,\n loadingMessage: loadingMessageFunc,\n formatCreateLabel: createNewOptionMessageFunc,\n noOptionsMessage: input => {\n return noOptionsMessageFunc(input.inputValue);\n },\n onFocus: () => {\n setFocused(true);\n },\n onBlur: () => {\n setFocused(false);\n },\n focused: focused,\n isDisabled: disabled || readOnly,\n components: innerComponents,\n isClearable: true,\n isSearchable: true,\n placeholder: placeholder,\n id: uniqueId,\n cacheUniqs: loadOptions ? [cacheUnique] : undefined,\n onChange: (selected, actionMeta) => {\n switch (actionMeta.action) {\n case 'create-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n if (loadOptions) {\n setCacheUnique(cacheUnique + 1);\n }\n\n setSelected(selected);\n break;\n\n case 'select-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'remove-value':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'pop-value':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'deselect-option':\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n\n case 'clear':\n setSelected(selected);\n break;\n\n default:\n if (onUpdateCallback) {\n onUpdateCallback(actionMeta.action, selected.value);\n }\n\n setSelected(selected);\n break;\n }\n }\n };\n\n if (hidden) return null;\n\n const input = () => {\n return (\n <S.CompactAutocompleteSelect disabled={disabled}>\n <S.InputContainer>\n {label && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.Label>\n )}\n {loadOptions ? (\n creatable ? (\n <S.AsyncCreatableAutocompleteSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n ) : (\n <S.AsyncAutocompleteSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n )\n ) : creatable ? (\n <S.AutocompletCreatableSelect\n $hasLabel={!isEmpty(label)}\n {...sharedSelectProps}\n {...props}\n />\n ) : (\n <S.AutocompletSelect $hasLabel={!isEmpty(label)} {...sharedSelectProps} {...props} />\n )}\n </S.InputContainer>\n </S.CompactAutocompleteSelect>\n );\n };\n\n return (\n <>\n {!memoizedDescriptionToolTip && input()}\n {memoizedDescriptionToolTip && (\n <div>\n <Tooltip\n content={memoizedDescriptionToolTip}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n zIndex={999999}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n </>\n );\n});\n\nCompactAutocompleteSelect.propTypes = {\n /**\n * The label of the input field – leave `undefined` to hide the label\n */\n label: PropTypes.string,\n /**\n * The placeholder of the input. Text to be displayed on the input element when the component is enabled and not focused – e.g. \"Search categories...\"\n */\n placeholder: PropTypes.string,\n /**\n * `Array` of `objects` that populate the select menu. This is only needed\n * when asynchronous option fetching with the `loadOptions` prop is not used.\n *\n * **Note:**\n * <br />This will be overridden by the `loadOptions` prop if both props are set.\n */\n availableOptions: PropTypes.arrayOf(PropTypes.object),\n /**\n * `Array` of `objects` containing the selected options.\n */\n selectedOption: PropTypes.object,\n /**\n * Function with a `Promise` returning filtered options.\n *\n * See [Asynchronous fetching/filtering with pagination](#asynchronous-fetchingfiltering-with-pagination)\n * for details.\n *\n * **Note:**\n * <br />This will override the `availableOptions` prop if both props are set.\n */\n loadOptions: PropTypes.func,\n /**\n * Function for custom \"Loading...\" message while waiting for the first page\n * from `loadOptions` to resolve. Defaults to \"Loading...\" if no function is provided.\n */\n loadingMessageFunc: PropTypes.func,\n /**\n * Callback function for formatting the message displayed in the dropdown when there\n * are no matching options, and the user has permission to create new options.\n * The callback function will be given the current input value as an argument.\n */\n createNewOptionMessageFunc: PropTypes.func,\n /**\n * If the list of options is empty, or if the current input value doesn't match\n * any of the available options and the user doesn't have permission to add options,\n * this function will be called and passed the current input value as an argument.\n */\n noOptionsMessageFunc: PropTypes.func,\n /**\n * Whether the value is read only\n */\n readOnly: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * There is an error present – 'error be prioritized over warnings if both are set to 'true'.\n */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * There is a warning present.\n */\n warning: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * Callback function for sending updates to the backend whenever the selected values are updated.\n * See [Update handling](#update-handling) for details.\n */\n onUpdateCallback: PropTypes.func,\n /**\n * Whether the user have permission to create new options\n */\n creatable: PropTypes.bool,\n /**\n * Whether the multi-select should be disabled.\n * The user will not be able to trigger the on-click effect of the selected options.\n */\n disabled: PropTypes.bool,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'instructions-warning', 'loading', 'success']),\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element\n};\n\nCompactAutocompleteSelect.defaultProps = {\n noOptionsMessageFunc: inputValue => {\n if (inputValue) {\n return `No matches for \"${inputValue}\"`;\n } else {\n return 'No available options';\n }\n },\n readOnly: false,\n disabled: false,\n creatable: true,\n edit: false,\n error: false,\n warning: false,\n hidden: false,\n type: '',\n descriptionToolTip: ''\n};\n\nexport default CompactAutocompleteSelect;\n"],"names":["CompactAutocompleteSelect","React","forwardRef","label","availableOptions","placeholder","selectedOption","loadOptions","noOptionsMessageFunc","createNewOptionMessageFunc","onUpdateCallback","loadingMessageFunc","creatable","readOnly","edit","disabled","hidden","type","descriptionToolTip","loadingIcon","successIcon","props","forwardedRef","uniqueId","useState","nanoid","selected","setSelected","focused","setFocused","cacheUnique","setCacheUnique","memoizedDescriptionToolTip","useMemo","Control","createElement","S","_extends","className","ValueContainer","valueContainer","Fragment","displayName","Input","selectInput","Menu","menu","Placeholder","Option","data","link","href","icon","SingleValue","propTypes","process","env","NODE_ENV","PropTypes","shape","node","string","DropdownIndicator","ClearIndicator","IndicatorSeparator","innerComponents","sharedSelectProps","ref","options","undefined","value","loadingMessage","formatCreateLabel","noOptionsMessage","input","inputValue","onFocus","onBlur","isDisabled","components","isClearable","isSearchable","id","cacheUniqs","onChange","actionMeta","action","htmlFor","$hasLabel","isEmpty","Tooltip","content","key","placement","trigger","zIndex","arrayOf","object","func","bool","error","oneOfType","warning","oneOf","element","defaultProps"],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ import { ReactComponent as SvgStarFilled } from '../../icons/star-filled.svg.js'
|
|
|
5
5
|
import { ReactComponent as SvgStar } from '../../icons/star.svg.js';
|
|
6
6
|
import '../../data/Alert/Alert.js';
|
|
7
7
|
import '../../data/Badge/Badge.js';
|
|
8
|
-
import '../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
9
8
|
import '../../data/Popover/Popover.js';
|
|
10
9
|
import '../../data/Tab/Tab.js';
|
|
11
10
|
import '../../data/Tabs/Tabs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactStarRating.js","sources":["../../../src/components/inputs/CompactStarRating/CompactStarRating.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState, useMemo } from 'react';\nimport { ReactComponent as StarIconFill } from '../../../icons/star-filled.svg';\nimport { ReactComponent as StarIcon } from '../../../icons/star.svg';\nimport { Tooltip } from '../../data';\n\nimport * as S from './CompactStarRating.styled';\n\n/**\n * A compact star rating.\n *\n * To remove a rating (i.e. show 0 stars), click the first star to give a 1-star rating, and then click the first star again.\n *\n * ### Import\n *\n * ``` js\n * import { CompactStarRating } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactStarRating from '@ntbjs/react-components/inputs/CompactStarRating'\n * ```\n * ### Values\n * Pass default value as a prop (`defaultValue`) into the component: 0 or state value.\n * ```\n */\n\nconst CompactStarRating = React.forwardRef(function CompactStarRating(\n {\n label,\n icon,\n iconFill,\n max,\n defaultValue,\n value,\n name,\n viewEmpty,\n onChange,\n onBlur,\n type,\n descriptionToolTip,\n disabled,\n readOnly,\n edit,\n hidden,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const stars = Array.from(Array(max).keys());\n const [rating, setRating] = useState('');\n const [hover, setHover] = useState(false);\n const [tempRating, setTempRating] = useState('');\n const [initialRating, setInitialRating] = useState('');\n const inputRef = useRef();\n\n useEffect(() => {\n setRating(value || defaultValue);\n setInitialRating(value || defaultValue);\n }, [value, defaultValue]);\n\n useEffect(() => {\n inputRef.current.value = String(rating);\n if (rating === initialRating) {\n return undefined;\n } else {\n setInitialRating(rating);\n onChange({ target: inputRef.current });\n }\n }, [rating]);\n\n const memoizedDescriptionToolTip = useMemo(() => {\n return descriptionToolTip;\n }, [descriptionToolTip]);\n\n const starIconRender = key => {\n if (rating > 0 && rating >= key + 1) {\n return (\n <S.StarFill\n readOnly={readOnly}\n disabled={disabled}\n onClick={event => {\n event.preventDefault();\n if (key + 1 > 1) {\n return setRating(key + 1);\n } else if (key + 1 == 1) {\n setRating(current => {\n return current === 1 ? 0 : key + 1;\n });\n }\n }}\n onMouseEnter={() => {\n setTempRating(key + 1);\n setHover(true);\n }}\n onMouseLeave={() => {\n setTempRating(0);\n setHover(false);\n }}\n $hover={hover && key + 1 <= tempRating}\n type=\"button\"\n key={key}\n >\n {iconFill}\n </S.StarFill>\n );\n } else if (viewEmpty) {\n return (\n <S.Star\n readOnly={readOnly}\n disabled={disabled}\n onClick={event => {\n event.preventDefault();\n setRating(key + 1);\n }}\n onMouseEnter={() => {\n setTempRating(key + 1);\n setHover(true);\n }}\n onMouseLeave={() => {\n setTempRating(0);\n setHover(false);\n }}\n $hover={hover && key + 1 <= tempRating}\n type=\"button\"\n key={key}\n >\n {icon}\n </S.Star>\n );\n }\n };\n\n const input = () => {\n return (\n <S.CompactStarRating\n ref={forwardedRef}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n {...props}\n >\n <S.labelWidth disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.labelWidth>\n <S.starsWidth $edit={edit} type={type} readOnly={readOnly}>\n {stars.map(key => {\n return (\n <div key={key}>\n <input type=\"number\" name={name} ref={inputRef} />\n {starIconRender(key, value)}\n </div>\n );\n })}\n </S.starsWidth>\n </S.CompactStarRating>\n );\n };\n\n if (hidden) return null;\n\n return (\n <>\n {!memoizedDescriptionToolTip && input()}\n {memoizedDescriptionToolTip && (\n <div>\n <Tooltip\n content={memoizedDescriptionToolTip}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n zIndex={999999}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n </>\n );\n});\n\nCompactStarRating.propTypes = {\n /**\n * Whether the star rating is read-only\n */\n readOnly: PropTypes.bool,\n /**\n * Whether the star rating is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Displays a grey background to show that the star rating is editable\n */\n edit: PropTypes.bool,\n /**\n * Rating value (0-5)\n */\n value: PropTypes.number,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'loading', 'success']),\n /**\n * Default rating value\n */\n defaultValue: PropTypes.number,\n /**\n * Compact star rating label\n */\n label: PropTypes.string,\n /**\n * Name of the text area (used when sending form data)\n */\n name: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<StarIcon />}`\n */\n icon: PropTypes.element,\n /**\n * Filled icon element – E.g: `icon={<StarIcon />}`\n */\n iconFill: PropTypes.element,\n /**\n * Max number of stars: 5\n */\n max: PropTypes.number,\n /**\n * View Compact Star Rating component when no values have been assigned\n */\n viewEmpty: PropTypes.bool,\n\n /**\n * Optional callback function for `onChange`\n */\n onChange: PropTypes.func,\n /**\n * Optional callback function for `onBlur`\n */\n onBlur: PropTypes.func,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element,\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string\n};\n\nCompactStarRating.defaultProps = {\n label: 'Rating',\n max: 5,\n value: 0,\n defaultValue: 0,\n viewEmpty: true,\n icon: <StarIcon />,\n iconFill: <StarIconFill />,\n hidden: false,\n type: '',\n descriptionToolTip: '',\n onChange: () => {}\n};\n\nexport default CompactStarRating;\n"],"names":["CompactStarRating","React","forwardRef","label","icon","iconFill","max","defaultValue","value","name","viewEmpty","onChange","onBlur","type","descriptionToolTip","disabled","readOnly","edit","hidden","loadingIcon","successIcon","props","forwardedRef","stars","Array","from","keys","rating","setRating","useState","hover","setHover","tempRating","setTempRating","initialRating","setInitialRating","inputRef","useRef","useEffect","current","String","undefined","target","memoizedDescriptionToolTip","useMemo","starIconRender","key","createElement","S","onClick","event","preventDefault","onMouseEnter","onMouseLeave","$hover","input","_extends","ref","$edit","map","Fragment","Tooltip","content","placement","trigger","zIndex","propTypes","process","env","NODE_ENV","PropTypes","bool","number","oneOf","string","element","func","defaultProps","StarIcon","StarIconFill"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompactStarRating.js","sources":["../../../src/components/inputs/CompactStarRating/CompactStarRating.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState, useMemo } from 'react';\nimport { ReactComponent as StarIconFill } from '../../../icons/star-filled.svg';\nimport { ReactComponent as StarIcon } from '../../../icons/star.svg';\nimport { Tooltip } from '../../data';\n\nimport * as S from './CompactStarRating.styled';\n\n/**\n * A compact star rating.\n *\n * To remove a rating (i.e. show 0 stars), click the first star to give a 1-star rating, and then click the first star again.\n *\n * ### Import\n *\n * ``` js\n * import { CompactStarRating } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactStarRating from '@ntbjs/react-components/inputs/CompactStarRating'\n * ```\n * ### Values\n * Pass default value as a prop (`defaultValue`) into the component: 0 or state value.\n * ```\n */\n\nconst CompactStarRating = React.forwardRef(function CompactStarRating(\n {\n label,\n icon,\n iconFill,\n max,\n defaultValue,\n value,\n name,\n viewEmpty,\n onChange,\n onBlur,\n type,\n descriptionToolTip,\n disabled,\n readOnly,\n edit,\n hidden,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const stars = Array.from(Array(max).keys());\n const [rating, setRating] = useState('');\n const [hover, setHover] = useState(false);\n const [tempRating, setTempRating] = useState('');\n const [initialRating, setInitialRating] = useState('');\n const inputRef = useRef();\n\n useEffect(() => {\n setRating(value || defaultValue);\n setInitialRating(value || defaultValue);\n }, [value, defaultValue]);\n\n useEffect(() => {\n inputRef.current.value = String(rating);\n if (rating === initialRating) {\n return undefined;\n } else {\n setInitialRating(rating);\n onChange({ target: inputRef.current });\n }\n }, [rating]);\n\n const memoizedDescriptionToolTip = useMemo(() => {\n return descriptionToolTip;\n }, [descriptionToolTip]);\n\n const starIconRender = key => {\n if (rating > 0 && rating >= key + 1) {\n return (\n <S.StarFill\n readOnly={readOnly}\n disabled={disabled}\n onClick={event => {\n event.preventDefault();\n if (key + 1 > 1) {\n return setRating(key + 1);\n } else if (key + 1 == 1) {\n setRating(current => {\n return current === 1 ? 0 : key + 1;\n });\n }\n }}\n onMouseEnter={() => {\n setTempRating(key + 1);\n setHover(true);\n }}\n onMouseLeave={() => {\n setTempRating(0);\n setHover(false);\n }}\n $hover={hover && key + 1 <= tempRating}\n type=\"button\"\n key={key}\n >\n {iconFill}\n </S.StarFill>\n );\n } else if (viewEmpty) {\n return (\n <S.Star\n readOnly={readOnly}\n disabled={disabled}\n onClick={event => {\n event.preventDefault();\n setRating(key + 1);\n }}\n onMouseEnter={() => {\n setTempRating(key + 1);\n setHover(true);\n }}\n onMouseLeave={() => {\n setTempRating(0);\n setHover(false);\n }}\n $hover={hover && key + 1 <= tempRating}\n type=\"button\"\n key={key}\n >\n {icon}\n </S.Star>\n );\n }\n };\n\n const input = () => {\n return (\n <S.CompactStarRating\n ref={forwardedRef}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChange}\n onBlur={onBlur}\n {...props}\n >\n <S.labelWidth disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.labelWidth>\n <S.starsWidth $edit={edit} type={type} readOnly={readOnly}>\n {stars.map(key => {\n return (\n <div key={key}>\n <input type=\"number\" name={name} ref={inputRef} />\n {starIconRender(key, value)}\n </div>\n );\n })}\n </S.starsWidth>\n </S.CompactStarRating>\n );\n };\n\n if (hidden) return null;\n\n return (\n <>\n {!memoizedDescriptionToolTip && input()}\n {memoizedDescriptionToolTip && (\n <div>\n <Tooltip\n content={memoizedDescriptionToolTip}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n zIndex={999999}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n </>\n );\n});\n\nCompactStarRating.propTypes = {\n /**\n * Whether the star rating is read-only\n */\n readOnly: PropTypes.bool,\n /**\n * Whether the star rating is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Displays a grey background to show that the star rating is editable\n */\n edit: PropTypes.bool,\n /**\n * Rating value (0-5)\n */\n value: PropTypes.number,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'loading', 'success']),\n /**\n * Default rating value\n */\n defaultValue: PropTypes.number,\n /**\n * Compact star rating label\n */\n label: PropTypes.string,\n /**\n * Name of the text area (used when sending form data)\n */\n name: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<StarIcon />}`\n */\n icon: PropTypes.element,\n /**\n * Filled icon element – E.g: `icon={<StarIcon />}`\n */\n iconFill: PropTypes.element,\n /**\n * Max number of stars: 5\n */\n max: PropTypes.number,\n /**\n * View Compact Star Rating component when no values have been assigned\n */\n viewEmpty: PropTypes.bool,\n\n /**\n * Optional callback function for `onChange`\n */\n onChange: PropTypes.func,\n /**\n * Optional callback function for `onBlur`\n */\n onBlur: PropTypes.func,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element,\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string\n};\n\nCompactStarRating.defaultProps = {\n label: 'Rating',\n max: 5,\n value: 0,\n defaultValue: 0,\n viewEmpty: true,\n icon: <StarIcon />,\n iconFill: <StarIconFill />,\n hidden: false,\n type: '',\n descriptionToolTip: '',\n onChange: () => {}\n};\n\nexport default CompactStarRating;\n"],"names":["CompactStarRating","React","forwardRef","label","icon","iconFill","max","defaultValue","value","name","viewEmpty","onChange","onBlur","type","descriptionToolTip","disabled","readOnly","edit","hidden","loadingIcon","successIcon","props","forwardedRef","stars","Array","from","keys","rating","setRating","useState","hover","setHover","tempRating","setTempRating","initialRating","setInitialRating","inputRef","useRef","useEffect","current","String","undefined","target","memoizedDescriptionToolTip","useMemo","starIconRender","key","createElement","S","onClick","event","preventDefault","onMouseEnter","onMouseLeave","$hover","input","_extends","ref","$edit","map","Fragment","Tooltip","content","placement","trigger","zIndex","propTypes","process","env","NODE_ENV","PropTypes","bool","number","oneOf","string","element","func","defaultProps","StarIcon","StarIconFill"],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ import { ReactComponent as SvgEditNote } from '../../icons/edit-note.svg.js';
|
|
|
7
7
|
import { ReactComponent as SvgLink } from '../../icons/link.svg.js';
|
|
8
8
|
import '../../data/Alert/Alert.js';
|
|
9
9
|
import '../../data/Badge/Badge.js';
|
|
10
|
-
import '../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
11
10
|
import Popover from '../../data/Popover/Popover.js';
|
|
12
11
|
import '../../data/Tab/Tab.js';
|
|
13
12
|
import '../../data/Tabs/Tabs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactTextInput.js","sources":["../../../src/components/inputs/CompactTextInput/CompactTextInput.js"],"sourcesContent":["import { isEmpty, isFunction } from 'lodash';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useState, useEffect } from 'react';\nimport useTooltipAutoShow from '../../../hooks/useTooltipAutoShow';\nimport { ReactComponent as EditNoteIcon } from '../../../icons/edit-note.svg';\nimport { ReactComponent as LinkIcon } from '../../../icons/link.svg';\nimport { Tooltip, Popover } from '../../data';\nimport * as S from './CompactTextInput.styled';\n\n// const ConditionalWrapper = ({ condition, wrapper, children }) =>\n// condition ? wrapper(children) : children;\n\n/**\n * Compact text inputs let users enter and edit text in the UI in a compact way. They typically appear in forms or displays of metadata.\n *\n * ### Import\n *\n * ``` js\n * import { CompactTextInput } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactTextInput from '@ntbjs/react-components/inputs/CompactTextInput'\n * ```\n */\nconst CompactTextInput = React.forwardRef(function CompactTextInput(\n {\n label,\n inputType,\n name,\n defaultValue,\n value,\n placeholder,\n link,\n linkTarget,\n linkHandler,\n activeLinkHandler,\n autoSelect,\n readOnly,\n disabled,\n edit,\n type,\n descriptionToolTip,\n bold,\n hidden,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const [uniqueId] = useState(nanoid());\n const [currentValue, setCurrentValue] = useState();\n const [autoFocus, setAutoFocus] = useState(false);\n\n const { toolTipDisabled, toolTipVisible, toolTipOnMouseLeave, toolTipContent } =\n useTooltipAutoShow(descriptionToolTip);\n\n useEffect(() => {\n setCurrentValue(value || defaultValue);\n setAutoFocus(false);\n }, [value, defaultValue]);\n\n const onChange = useCallback(\n event => {\n setCurrentValue(event.target.value);\n\n if (!autoFocus) {\n setAutoFocus(true);\n }\n if (isFunction(onChangeProp)) {\n onChangeProp(event);\n }\n },\n [onChangeProp]\n );\n\n const onFocus = useCallback(\n event => {\n if (autoSelect) {\n event.target.select();\n }\n\n if (isFunction(onFocusProp)) {\n onFocusProp(event);\n }\n },\n [autoSelect, readOnly, onFocusProp]\n );\n\n const onBlur = useCallback(\n event => {\n if (isFunction(onBlurProp)) {\n onBlurProp(event);\n }\n },\n [onBlurProp]\n );\n\n const input = () => {\n return (\n <S.Input\n ref={forwardedRef}\n id={uniqueId}\n key={uniqueId}\n autoFocus={autoFocus}\n inputtype={inputType}\n name={name}\n readOnly={readOnly}\n disabled={disabled}\n $edit={edit}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value ?? ''}\n $type={type}\n $bold={bold}\n $haslink={!isEmpty(link)}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n />\n );\n };\n\n if (hidden) return null;\n\n return (\n <S.CompactTextInput {...props}>\n {label && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.Label>\n )}\n <S.InputContainer $hasLabel={!isEmpty(label)}>\n {!link && (\n <div onMouseLeave={toolTipOnMouseLeave}>\n <Tooltip\n content={toolTipContent}\n key=\"tooltip1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n disabled={toolTipDisabled}\n zIndex={999999}\n visible={toolTipVisible}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n {link && !readOnly && (\n <div>\n <Popover\n arrow={false}\n content={\n <S.LinkPopoverContainer>\n {activeLinkHandler ? (\n <S.StyledLink\n href={link}\n target={linkTarget}\n onClick={e => {\n if (activeLinkHandler) {\n e.preventDefault();\n linkHandler();\n } else null;\n }}\n rel=\"noreferrer\"\n >\n <LinkIcon />\n {currentValue}\n </S.StyledLink>\n ) : (\n <S.StyledLink href={link} target={linkTarget} rel=\"noreferrer\">\n <LinkIcon />\n {currentValue}\n </S.StyledLink>\n )}\n </S.LinkPopoverContainer>\n }\n key=\"tooltip2\"\n placement=\"bottom-start\"\n trigger=\"focusin\"\n zIndex={999999}\n interactive={true}\n >\n {input()}\n </Popover>\n </div>\n )}\n {link && readOnly && (\n <S.ReadOnlyLinkContainer>\n <S.StyledLink\n href={link}\n rel=\"noreferrer\"\n style={{ display: 'inline-block' }}\n target={linkTarget}\n >\n {currentValue}\n </S.StyledLink>\n </S.ReadOnlyLinkContainer>\n )}\n {!readOnly && !disabled && (\n <>\n <S.InputIconContainer $type={type}>\n <EditNoteIcon />\n </S.InputIconContainer>\n {isEmpty(label) && (\n <S.InputSuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.InputSuccessContainer>\n )}\n </>\n )}\n </S.InputContainer>\n </S.CompactTextInput>\n );\n});\n\nCompactTextInput.propTypes = {\n /**\n * The label of the input field - leave `undefined` to hide the label\n */\n label: PropTypes.string,\n /**\n * Displays a light green background to show that an action was successful.\n */\n success: PropTypes.bool,\n /**\n * The input type - eg. `text`, `number`\n */\n inputType: PropTypes.string,\n /**\n * The input name\n */\n name: PropTypes.string,\n /**\n * The default value of the input - creates an uncontrolled input\n */\n defaultValue: PropTypes.string,\n /**\n * The value of the input - creates a controlled input\n */\n value: PropTypes.string,\n /**\n * The placeholder of the input\n */\n placeholder: PropTypes.string,\n /**\n * A URL associated with the input value. Creates a clickable link that accepts full or relative URL\n */\n link: PropTypes.string,\n /**\n * The target for the link. Only applies when the field is in read-only mode\n */\n linkTarget: PropTypes.oneOf(['_self', '_blank', '_parent', '_top']),\n /**\n * Whether the link has a onClick event.\n */\n linkHandler: PropTypes.func,\n /**\n * Whether the handler should preceed the link behavior.\n */\n activeLinkHandler: PropTypes.bool,\n /**\n * Whether to auto select the entire value when the input is focused – does also work when the field is in read-only mode\n */\n autoSelect: PropTypes.bool,\n /**\n * Whether the value is read only\n */\n readOnly: PropTypes.bool,\n /**\n * Whether the value is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * There is an error present - 'error be prioritized over warnings if both are set to 'true'.\n */\n // error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * There is a warning present.\n */\n warning: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * Whether to bold the input content - Slightly increases the font size and font weight of the input value\n */\n bold: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Callback for `onChange`\n */\n onChange: PropTypes.func,\n /**\n * Callback for `onFocus`\n */\n onFocus: PropTypes.func,\n /**\n * Callback for `onBlur`\n */\n onBlur: PropTypes.func,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'loading', 'success']),\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element\n};\n\nCompactTextInput.defaultProps = {\n inputType: 'text',\n autoSelect: true,\n linkTarget: '_self',\n bold: false,\n readOnly: false,\n descriptionToolTip: '',\n edit: false,\n hidden: false,\n type: '',\n linkHandler: () => {},\n activeLinkHandler: false,\n onChange: () => {}\n};\n\nexport default CompactTextInput;\n"],"names":["CompactTextInput","React","forwardRef","label","inputType","name","defaultValue","value","placeholder","link","linkTarget","linkHandler","activeLinkHandler","autoSelect","readOnly","disabled","edit","type","descriptionToolTip","bold","hidden","onChange","onChangeProp","onFocus","onFocusProp","onBlur","onBlurProp","loadingIcon","successIcon","props","forwardedRef","uniqueId","useState","nanoid","currentValue","setCurrentValue","autoFocus","setAutoFocus","toolTipDisabled","toolTipVisible","toolTipOnMouseLeave","toolTipContent","useTooltipAutoShow","useEffect","useCallback","event","target","isFunction","select","input","createElement","S","ref","id","key","inputtype","$edit","$type","$bold","$haslink","isEmpty","htmlFor","$hasLabel","onMouseLeave","Tooltip","content","placement","trigger","zIndex","visible","Popover","arrow","href","onClick","e","preventDefault","rel","LinkIcon","interactive","style","display","Fragment","EditNoteIcon","propTypes","process","env","NODE_ENV","PropTypes","string","success","bool","oneOf","func","warning","oneOfType","element","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CompactTextInput.js","sources":["../../../src/components/inputs/CompactTextInput/CompactTextInput.js"],"sourcesContent":["import { isEmpty, isFunction } from 'lodash';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useState, useEffect } from 'react';\nimport useTooltipAutoShow from '../../../hooks/useTooltipAutoShow';\nimport { ReactComponent as EditNoteIcon } from '../../../icons/edit-note.svg';\nimport { ReactComponent as LinkIcon } from '../../../icons/link.svg';\nimport { Tooltip, Popover } from '../../data';\nimport * as S from './CompactTextInput.styled';\n\n// const ConditionalWrapper = ({ condition, wrapper, children }) =>\n// condition ? wrapper(children) : children;\n\n/**\n * Compact text inputs let users enter and edit text in the UI in a compact way. They typically appear in forms or displays of metadata.\n *\n * ### Import\n *\n * ``` js\n * import { CompactTextInput } from '@ntbjs/react-components/inputs'\n * // or\n * import CompactTextInput from '@ntbjs/react-components/inputs/CompactTextInput'\n * ```\n */\nconst CompactTextInput = React.forwardRef(function CompactTextInput(\n {\n label,\n inputType,\n name,\n defaultValue,\n value,\n placeholder,\n link,\n linkTarget,\n linkHandler,\n activeLinkHandler,\n autoSelect,\n readOnly,\n disabled,\n edit,\n type,\n descriptionToolTip,\n bold,\n hidden,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n loadingIcon,\n successIcon,\n ...props\n },\n forwardedRef\n) {\n const [uniqueId] = useState(nanoid());\n const [currentValue, setCurrentValue] = useState();\n const [autoFocus, setAutoFocus] = useState(false);\n\n const { toolTipDisabled, toolTipVisible, toolTipOnMouseLeave, toolTipContent } =\n useTooltipAutoShow(descriptionToolTip);\n\n useEffect(() => {\n setCurrentValue(value || defaultValue);\n setAutoFocus(false);\n }, [value, defaultValue]);\n\n const onChange = useCallback(\n event => {\n setCurrentValue(event.target.value);\n\n if (!autoFocus) {\n setAutoFocus(true);\n }\n if (isFunction(onChangeProp)) {\n onChangeProp(event);\n }\n },\n [onChangeProp]\n );\n\n const onFocus = useCallback(\n event => {\n if (autoSelect) {\n event.target.select();\n }\n\n if (isFunction(onFocusProp)) {\n onFocusProp(event);\n }\n },\n [autoSelect, readOnly, onFocusProp]\n );\n\n const onBlur = useCallback(\n event => {\n if (isFunction(onBlurProp)) {\n onBlurProp(event);\n }\n },\n [onBlurProp]\n );\n\n const input = () => {\n return (\n <S.Input\n ref={forwardedRef}\n id={uniqueId}\n key={uniqueId}\n autoFocus={autoFocus}\n inputtype={inputType}\n name={name}\n readOnly={readOnly}\n disabled={disabled}\n $edit={edit}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value ?? ''}\n $type={type}\n $bold={bold}\n $haslink={!isEmpty(link)}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n />\n );\n };\n\n if (hidden) return null;\n\n return (\n <S.CompactTextInput {...props}>\n {label && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {label}\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n </S.Label>\n )}\n <S.InputContainer $hasLabel={!isEmpty(label)}>\n {!link && (\n <div onMouseLeave={toolTipOnMouseLeave}>\n <Tooltip\n content={toolTipContent}\n key=\"tooltip1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n disabled={toolTipDisabled}\n zIndex={999999}\n visible={toolTipVisible}\n >\n {input()}\n </Tooltip>\n </div>\n )}\n {link && !readOnly && (\n <div>\n <Popover\n arrow={false}\n content={\n <S.LinkPopoverContainer>\n {activeLinkHandler ? (\n <S.StyledLink\n href={link}\n target={linkTarget}\n onClick={e => {\n if (activeLinkHandler) {\n e.preventDefault();\n linkHandler();\n } else null;\n }}\n rel=\"noreferrer\"\n >\n <LinkIcon />\n {currentValue}\n </S.StyledLink>\n ) : (\n <S.StyledLink href={link} target={linkTarget} rel=\"noreferrer\">\n <LinkIcon />\n {currentValue}\n </S.StyledLink>\n )}\n </S.LinkPopoverContainer>\n }\n key=\"tooltip2\"\n placement=\"bottom-start\"\n trigger=\"focusin\"\n zIndex={999999}\n interactive={true}\n >\n {input()}\n </Popover>\n </div>\n )}\n {link && readOnly && (\n <S.ReadOnlyLinkContainer>\n <S.StyledLink\n href={link}\n rel=\"noreferrer\"\n style={{ display: 'inline-block' }}\n target={linkTarget}\n >\n {currentValue}\n </S.StyledLink>\n </S.ReadOnlyLinkContainer>\n )}\n {!readOnly && !disabled && (\n <>\n <S.InputIconContainer $type={type}>\n <EditNoteIcon />\n </S.InputIconContainer>\n {isEmpty(label) && (\n <S.InputSuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.InputSuccessContainer>\n )}\n </>\n )}\n </S.InputContainer>\n </S.CompactTextInput>\n );\n});\n\nCompactTextInput.propTypes = {\n /**\n * The label of the input field - leave `undefined` to hide the label\n */\n label: PropTypes.string,\n /**\n * Displays a light green background to show that an action was successful.\n */\n success: PropTypes.bool,\n /**\n * The input type - eg. `text`, `number`\n */\n inputType: PropTypes.string,\n /**\n * The input name\n */\n name: PropTypes.string,\n /**\n * The default value of the input - creates an uncontrolled input\n */\n defaultValue: PropTypes.string,\n /**\n * The value of the input - creates a controlled input\n */\n value: PropTypes.string,\n /**\n * The placeholder of the input\n */\n placeholder: PropTypes.string,\n /**\n * A URL associated with the input value. Creates a clickable link that accepts full or relative URL\n */\n link: PropTypes.string,\n /**\n * The target for the link. Only applies when the field is in read-only mode\n */\n linkTarget: PropTypes.oneOf(['_self', '_blank', '_parent', '_top']),\n /**\n * Whether the link has a onClick event.\n */\n linkHandler: PropTypes.func,\n /**\n * Whether the handler should preceed the link behavior.\n */\n activeLinkHandler: PropTypes.bool,\n /**\n * Whether to auto select the entire value when the input is focused – does also work when the field is in read-only mode\n */\n autoSelect: PropTypes.bool,\n /**\n * Whether the value is read only\n */\n readOnly: PropTypes.bool,\n /**\n * Whether the value is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * There is an error present - 'error be prioritized over warnings if both are set to 'true'.\n */\n // error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * There is a warning present.\n */\n warning: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * Whether to bold the input content - Slightly increases the font size and font weight of the input value\n */\n bold: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Callback for `onChange`\n */\n onChange: PropTypes.func,\n /**\n * Callback for `onFocus`\n */\n onFocus: PropTypes.func,\n /**\n * Callback for `onBlur`\n */\n onBlur: PropTypes.func,\n /**\n * Define the type based on error, warning, loading and success.\n */\n type: PropTypes.oneOf(['', 'error', 'warning', 'loading', 'success']),\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Icon element – E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element – E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element\n};\n\nCompactTextInput.defaultProps = {\n inputType: 'text',\n autoSelect: true,\n linkTarget: '_self',\n bold: false,\n readOnly: false,\n descriptionToolTip: '',\n edit: false,\n hidden: false,\n type: '',\n linkHandler: () => {},\n activeLinkHandler: false,\n onChange: () => {}\n};\n\nexport default CompactTextInput;\n"],"names":["CompactTextInput","React","forwardRef","label","inputType","name","defaultValue","value","placeholder","link","linkTarget","linkHandler","activeLinkHandler","autoSelect","readOnly","disabled","edit","type","descriptionToolTip","bold","hidden","onChange","onChangeProp","onFocus","onFocusProp","onBlur","onBlurProp","loadingIcon","successIcon","props","forwardedRef","uniqueId","useState","nanoid","currentValue","setCurrentValue","autoFocus","setAutoFocus","toolTipDisabled","toolTipVisible","toolTipOnMouseLeave","toolTipContent","useTooltipAutoShow","useEffect","useCallback","event","target","isFunction","select","input","createElement","S","ref","id","key","inputtype","$edit","$type","$bold","$haslink","isEmpty","htmlFor","$hasLabel","onMouseLeave","Tooltip","content","placement","trigger","zIndex","visible","Popover","arrow","href","onClick","e","preventDefault","rel","LinkIcon","interactive","style","display","Fragment","EditNoteIcon","propTypes","process","env","NODE_ENV","PropTypes","string","success","bool","oneOf","func","warning","oneOfType","element","defaultProps"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
import { MultiLevelCheckboxSelect as MultiLevelCheckboxSelect$1, PopoverContainer, PopoverHeader, SearchContainer, OptionsContainer, MultiLevelCheckboxSelectInput, Label, Placeholder, Item, ItemLabel, ItemRemoveButton } from './MultiLevelCheckboxSelect.styled.js';
|
|
5
5
|
import '../../data/Alert/Alert.js';
|
|
6
6
|
import '../../data/Badge/Badge.js';
|
|
7
|
-
import '../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
8
7
|
import Popover from '../../data/Popover/Popover.js';
|
|
9
8
|
import '../../data/Tab/Tab.js';
|
|
10
9
|
import '../../data/Tabs/Tabs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLevelCheckboxSelect.js","sources":["../../../src/components/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.js"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport * as S from './MultiLevelCheckboxSelect.styled';\nimport { Popover } from '../../data';\nimport MultiLevelCheckbox from '../MultiLevelCheckbox';\nimport TextInput from '../TextInput';\nimport { SectionSeparator } from '../../layout';\nimport { ReactComponent as SearchIcon } from '../../../icons/search.svg';\nimport { ReactComponent as CloseIcon } from '../../../icons/close.svg';\nimport { findChildValues, NodeType } from '../MultiLevelCheckbox';\nimport { useEventListener } from '../../../hooks/useEventListner';\nimport { useOnClickOutside } from '../../../hooks/useOnClickOutside';\nimport useUpdateEffect from '@restart/hooks/useUpdateEffect';\nimport { isFunction } from 'lodash';\n\n/**\n * MultiLevelCheckboxSelect allow the user to select one or more items from a nested set into a MultiSelect-styled input.\n *\n * This component is controlled which means that the consumer will have to keep track of what options are selected. The selected options should be provided to the `checked`-prop. On any selection or deselection onChange will be called with an updated `checked`-list.\n *\n * ### Import\n *\n * ```js\n * import { MultiLevelCheckboxSelect } from '@ntbjs/react-components/inputs'\n * // or\n * import MultiLevelCheckboxSelect from '@ntbjs/react-components/inputs/MultiLevelCheckboxSelect'\n * ```\n */\nconst MultiLevelCheckboxSelect = React.forwardRef(function MultiLevelCheckboxSelect(\n {\n label,\n options,\n checked: checkedProp,\n placeholder,\n noResultsText,\n onChange,\n onParentChange,\n ...props\n },\n forwardedRef\n) {\n const inputRef = useRef(null);\n const popoverContentRef = useRef(null);\n const searchInputRef = useRef(null);\n const [searchString, setSearchString] = useState('');\n const [open, setOpen] = useState(false);\n\n const handleClickInside = useCallback(() => {\n setOpen(true);\n searchInputRef.current?.focus();\n }, []);\n\n const handleKeyDown = useCallback(\n event => {\n if (!open) return;\n if (event.key === 'Escape') {\n setOpen(false);\n }\n },\n [open]\n );\n\n useEventListener('focus', handleClickInside, inputRef);\n useEventListener('mousedown', handleClickInside, inputRef);\n useEventListener('keydown', handleKeyDown);\n\n const handleClickOutside = event => {\n if (\n popoverContentRef?.current === event.target ||\n popoverContentRef?.current?.contains(event.target)\n ) {\n return;\n }\n setOpen(false);\n };\n\n useOnClickOutside(inputRef, handleClickOutside);\n\n const checked = useMemo(() => {\n const checkedParents = [];\n\n function iterate(nodes) {\n nodes.forEach(node => {\n if (checkedProp.includes(node.value)) {\n return checkedParents.push(node.value);\n }\n\n if (node.children) {\n iterate(node.children);\n }\n });\n }\n\n iterate(options);\n return checkedParents.sort();\n }, [JSON.stringify(options), JSON.stringify(checkedProp)]);\n\n const getLabelByValue = useCallback(\n (targetValue, nodes = options) => {\n for (const node of nodes) {\n if (node.value === targetValue) {\n return node.label;\n }\n\n if (node.children) {\n const result = getLabelByValue(targetValue, node.children);\n if (result) {\n return result;\n }\n }\n }\n\n return null; // Return null if the value is not found in the array\n },\n [options]\n );\n\n const removeItem = useCallback(\n value => {\n let node = null;\n\n function findNodeByValue(options, value) {\n for (let i = 0; i < options.length; i++) {\n if (options[i].value === value) {\n node = options[i];\n break; // This will exit the loop when the condition is met\n }\n\n if (options[i].children) {\n findNodeByValue(options[i].children, value);\n }\n }\n }\n\n findNodeByValue(options, value);\n\n if (node) {\n const childValues = findChildValues(node);\n const valuesToRemove = [value, ...childValues];\n onChange(checkedProp.filter(value => !valuesToRemove.includes(value)));\n }\n },\n [options, checkedProp]\n );\n\n useUpdateEffect(() => {\n if (isFunction(onParentChange)) {\n onParentChange(checked);\n }\n }, [checked]);\n\n return (\n <S.MultiLevelCheckboxSelect ref={forwardedRef} {...props}>\n <Popover\n visible={open}\n arrow={false}\n placement={'bottom'}\n offset={[0, 6]}\n modifiers={[\n {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;\n }\n }\n ]}\n content={\n <S.PopoverContainer ref={popoverContentRef}>\n <S.PopoverHeader>\n <S.SearchContainer>\n <TextInput\n ref={searchInputRef}\n onBlur={e => {\n if (open) {\n e.target.focus();\n }\n }}\n icon={<SearchIcon />}\n value={searchString}\n onChange={e => setSearchString(e.target.value)}\n />\n </S.SearchContainer>\n <SectionSeparator />\n </S.PopoverHeader>\n <S.OptionsContainer>\n <MultiLevelCheckbox\n options={options}\n checked={checkedProp}\n search={searchString}\n noResultsText={noResultsText}\n onChange={onChange}\n />\n </S.OptionsContainer>\n </S.PopoverContainer>\n }\n >\n <S.MultiLevelCheckboxSelectInput tabIndex=\"0\" ref={inputRef}>\n {label && <S.Label>{label}</S.Label>}\n {checked.length === 0 && <S.Placeholder>{placeholder}</S.Placeholder>}\n {checked.map(option => (\n <S.Item key={option}>\n <S.ItemLabel>{getLabelByValue(option)}</S.ItemLabel>\n <S.ItemRemoveButton\n onClick={() => {\n removeItem(option);\n }}\n >\n <CloseIcon />\n </S.ItemRemoveButton>\n </S.Item>\n ))}\n </S.MultiLevelCheckboxSelectInput>\n </Popover>\n </S.MultiLevelCheckboxSelect>\n );\n});\n\nMultiLevelCheckboxSelect.propTypes = {\n /**\n * Label text for the MultiLevelCheckbox\n */\n label: PropTypes.string,\n /**\n * The placeholder of the input. Text to be displayed on the input element when the component is enabled and not focused – e.g. \"Select categories...\"\n */\n placeholder: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n children: PropTypes.arrayOf(NodeType)\n })\n ).isRequired,\n\n /**\n * Array of checked option values\n */\n checked: PropTypes.array.isRequired,\n\n /**\n * Optional text to display when no results are found while searching.`\n */\n noResultsText: PropTypes.string,\n\n /**\n * Callback function for the `onChange` event\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback function for the `onChange` event – returns only the checked parents\n */\n onParentChange: PropTypes.func\n};\n\nMultiLevelCheckboxSelect.defaultProps = {\n checked: []\n};\n\nexport default MultiLevelCheckboxSelect;\n"],"names":["MultiLevelCheckboxSelect","React","forwardRef","label","options","checked","checkedProp","placeholder","noResultsText","onChange","onParentChange","props","forwardedRef","inputRef","useRef","popoverContentRef","searchInputRef","searchString","setSearchString","useState","open","setOpen","handleClickInside","useCallback","current","focus","handleKeyDown","event","key","useEventListener","handleClickOutside","target","contains","useOnClickOutside","useMemo","checkedParents","iterate","nodes","forEach","node","includes","value","push","children","sort","JSON","stringify","getLabelByValue","targetValue","result","removeItem","findNodeByValue","i","length","childValues","findChildValues","valuesToRemove","filter","useUpdateEffect","isFunction","createElement","S","_extends","ref","Popover","visible","arrow","placement","offset","modifiers","name","enabled","phase","requires","fn","state","styles","popper","width","rects","reference","effect","elements","style","offsetWidth","content","TextInput","onBlur","e","icon","SearchIcon","SectionSeparator","MultiLevelCheckbox","search","tabIndex","map","option","onClick","CloseIcon","propTypes","process","env","NODE_ENV","PropTypes","string","arrayOf","shape","isRequired","any","NodeType","array","func","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiLevelCheckboxSelect.js","sources":["../../../src/components/inputs/MultiLevelCheckboxSelect/MultiLevelCheckboxSelect.js"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport * as S from './MultiLevelCheckboxSelect.styled';\nimport { Popover } from '../../data';\nimport MultiLevelCheckbox from '../MultiLevelCheckbox';\nimport TextInput from '../TextInput';\nimport { SectionSeparator } from '../../layout';\nimport { ReactComponent as SearchIcon } from '../../../icons/search.svg';\nimport { ReactComponent as CloseIcon } from '../../../icons/close.svg';\nimport { findChildValues, NodeType } from '../MultiLevelCheckbox';\nimport { useEventListener } from '../../../hooks/useEventListner';\nimport { useOnClickOutside } from '../../../hooks/useOnClickOutside';\nimport useUpdateEffect from '@restart/hooks/useUpdateEffect';\nimport { isFunction } from 'lodash';\n\n/**\n * MultiLevelCheckboxSelect allow the user to select one or more items from a nested set into a MultiSelect-styled input.\n *\n * This component is controlled which means that the consumer will have to keep track of what options are selected. The selected options should be provided to the `checked`-prop. On any selection or deselection onChange will be called with an updated `checked`-list.\n *\n * ### Import\n *\n * ```js\n * import { MultiLevelCheckboxSelect } from '@ntbjs/react-components/inputs'\n * // or\n * import MultiLevelCheckboxSelect from '@ntbjs/react-components/inputs/MultiLevelCheckboxSelect'\n * ```\n */\nconst MultiLevelCheckboxSelect = React.forwardRef(function MultiLevelCheckboxSelect(\n {\n label,\n options,\n checked: checkedProp,\n placeholder,\n noResultsText,\n onChange,\n onParentChange,\n ...props\n },\n forwardedRef\n) {\n const inputRef = useRef(null);\n const popoverContentRef = useRef(null);\n const searchInputRef = useRef(null);\n const [searchString, setSearchString] = useState('');\n const [open, setOpen] = useState(false);\n\n const handleClickInside = useCallback(() => {\n setOpen(true);\n searchInputRef.current?.focus();\n }, []);\n\n const handleKeyDown = useCallback(\n event => {\n if (!open) return;\n if (event.key === 'Escape') {\n setOpen(false);\n }\n },\n [open]\n );\n\n useEventListener('focus', handleClickInside, inputRef);\n useEventListener('mousedown', handleClickInside, inputRef);\n useEventListener('keydown', handleKeyDown);\n\n const handleClickOutside = event => {\n if (\n popoverContentRef?.current === event.target ||\n popoverContentRef?.current?.contains(event.target)\n ) {\n return;\n }\n setOpen(false);\n };\n\n useOnClickOutside(inputRef, handleClickOutside);\n\n const checked = useMemo(() => {\n const checkedParents = [];\n\n function iterate(nodes) {\n nodes.forEach(node => {\n if (checkedProp.includes(node.value)) {\n return checkedParents.push(node.value);\n }\n\n if (node.children) {\n iterate(node.children);\n }\n });\n }\n\n iterate(options);\n return checkedParents.sort();\n }, [JSON.stringify(options), JSON.stringify(checkedProp)]);\n\n const getLabelByValue = useCallback(\n (targetValue, nodes = options) => {\n for (const node of nodes) {\n if (node.value === targetValue) {\n return node.label;\n }\n\n if (node.children) {\n const result = getLabelByValue(targetValue, node.children);\n if (result) {\n return result;\n }\n }\n }\n\n return null; // Return null if the value is not found in the array\n },\n [options]\n );\n\n const removeItem = useCallback(\n value => {\n let node = null;\n\n function findNodeByValue(options, value) {\n for (let i = 0; i < options.length; i++) {\n if (options[i].value === value) {\n node = options[i];\n break; // This will exit the loop when the condition is met\n }\n\n if (options[i].children) {\n findNodeByValue(options[i].children, value);\n }\n }\n }\n\n findNodeByValue(options, value);\n\n if (node) {\n const childValues = findChildValues(node);\n const valuesToRemove = [value, ...childValues];\n onChange(checkedProp.filter(value => !valuesToRemove.includes(value)));\n }\n },\n [options, checkedProp]\n );\n\n useUpdateEffect(() => {\n if (isFunction(onParentChange)) {\n onParentChange(checked);\n }\n }, [checked]);\n\n return (\n <S.MultiLevelCheckboxSelect ref={forwardedRef} {...props}>\n <Popover\n visible={open}\n arrow={false}\n placement={'bottom'}\n offset={[0, 6]}\n modifiers={[\n {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`;\n }\n }\n ]}\n content={\n <S.PopoverContainer ref={popoverContentRef}>\n <S.PopoverHeader>\n <S.SearchContainer>\n <TextInput\n ref={searchInputRef}\n onBlur={e => {\n if (open) {\n e.target.focus();\n }\n }}\n icon={<SearchIcon />}\n value={searchString}\n onChange={e => setSearchString(e.target.value)}\n />\n </S.SearchContainer>\n <SectionSeparator />\n </S.PopoverHeader>\n <S.OptionsContainer>\n <MultiLevelCheckbox\n options={options}\n checked={checkedProp}\n search={searchString}\n noResultsText={noResultsText}\n onChange={onChange}\n />\n </S.OptionsContainer>\n </S.PopoverContainer>\n }\n >\n <S.MultiLevelCheckboxSelectInput tabIndex=\"0\" ref={inputRef}>\n {label && <S.Label>{label}</S.Label>}\n {checked.length === 0 && <S.Placeholder>{placeholder}</S.Placeholder>}\n {checked.map(option => (\n <S.Item key={option}>\n <S.ItemLabel>{getLabelByValue(option)}</S.ItemLabel>\n <S.ItemRemoveButton\n onClick={() => {\n removeItem(option);\n }}\n >\n <CloseIcon />\n </S.ItemRemoveButton>\n </S.Item>\n ))}\n </S.MultiLevelCheckboxSelectInput>\n </Popover>\n </S.MultiLevelCheckboxSelect>\n );\n});\n\nMultiLevelCheckboxSelect.propTypes = {\n /**\n * Label text for the MultiLevelCheckbox\n */\n label: PropTypes.string,\n /**\n * The placeholder of the input. Text to be displayed on the input element when the component is enabled and not focused – e.g. \"Select categories...\"\n */\n placeholder: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n children: PropTypes.arrayOf(NodeType)\n })\n ).isRequired,\n\n /**\n * Array of checked option values\n */\n checked: PropTypes.array.isRequired,\n\n /**\n * Optional text to display when no results are found while searching.`\n */\n noResultsText: PropTypes.string,\n\n /**\n * Callback function for the `onChange` event\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback function for the `onChange` event – returns only the checked parents\n */\n onParentChange: PropTypes.func\n};\n\nMultiLevelCheckboxSelect.defaultProps = {\n checked: []\n};\n\nexport default MultiLevelCheckboxSelect;\n"],"names":["MultiLevelCheckboxSelect","React","forwardRef","label","options","checked","checkedProp","placeholder","noResultsText","onChange","onParentChange","props","forwardedRef","inputRef","useRef","popoverContentRef","searchInputRef","searchString","setSearchString","useState","open","setOpen","handleClickInside","useCallback","current","focus","handleKeyDown","event","key","useEventListener","handleClickOutside","target","contains","useOnClickOutside","useMemo","checkedParents","iterate","nodes","forEach","node","includes","value","push","children","sort","JSON","stringify","getLabelByValue","targetValue","result","removeItem","findNodeByValue","i","length","childValues","findChildValues","valuesToRemove","filter","useUpdateEffect","isFunction","createElement","S","_extends","ref","Popover","visible","arrow","placement","offset","modifiers","name","enabled","phase","requires","fn","state","styles","popper","width","rects","reference","effect","elements","style","offsetWidth","content","TextInput","onBlur","e","icon","SearchIcon","SectionSeparator","MultiLevelCheckbox","search","tabIndex","map","option","onClick","CloseIcon","propTypes","process","env","NODE_ENV","PropTypes","string","arrayOf","shape","isRequired","any","NodeType","array","func","defaultProps"],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ import { nanoid } from 'nanoid';
|
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import '../../data/Alert/Alert.js';
|
|
9
9
|
import '../../data/Badge/Badge.js';
|
|
10
|
-
import '../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
11
10
|
import '../../data/Popover/Popover.js';
|
|
12
11
|
import '../../data/Tab/Tab.js';
|
|
13
12
|
import '../../data/Tabs/Tabs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","sources":["../../../src/components/inputs/TextArea/TextArea.js"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport useTooltipAutoShow from '../../../hooks/useTooltipAutoShow';\n\nimport { isEmpty } from 'lodash';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport { Tooltip } from '../../data';\n\nimport { ReactComponent as EditNoteIcon } from '../../../icons/edit-note.svg';\nimport * as S from './TextArea.styled';\n\n/**\n * Text areas let users enter and edit text in the UI. They typically appear in forms and dialogs.\n *\n * ### Import\n *\n * ``` js\n * import { TextArea } from '@ntbjs/react-components/inputs'\n * // or\n * import TextArea from '@ntbjs/react-components/inputs/TextArea'\n * ```\n */\nconst TextArea = React.forwardRef(function TextArea(\n {\n value,\n defaultValue,\n name,\n label,\n placeholder,\n required,\n disabled,\n hidden,\n readOnly,\n edit,\n autoComplete,\n description,\n type,\n icon,\n rows,\n className,\n style,\n onChange,\n onBlur,\n noBorder,\n loadingIcon,\n successIcon,\n padding,\n descriptionToolTip,\n borderRadius,\n fieldLabel,\n ...rest\n },\n forwardedRef\n) {\n const textInputDomNode = useRef(null);\n const textInputRef = useMergedRefs(forwardedRef, textInputDomNode);\n\n const [inputIsEmpty, setInputIsEmpty] = useState(!(value || defaultValue));\n const [autoFocus, setAutoFocus] = useState(false);\n\n const [uniqueId] = useState(nanoid());\n\n const { toolTipDisabled, toolTipVisible, toolTipOnMouseLeave, toolTipContent } =\n useTooltipAutoShow(descriptionToolTip);\n\n useEffect(() => {\n setAutoFocus(false);\n }, [value, defaultValue]);\n\n const onKeyDown = useCallback(event => {\n if (event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const input = () => {\n return (\n <S.TextAreaContainter>\n {fieldLabel && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {fieldLabel}\n <S.SuccessContainerLabel>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainerLabel>\n </S.Label>\n )}\n <S.TextInput\n $fieldLabel={!isEmpty(fieldLabel)}\n disabled={disabled}\n readOnly={readOnly}\n $type={type}\n className={className}\n style={style}\n >\n <S.TextInputFieldIconAlert $type={type}>{icon}</S.TextInputFieldIconAlert>\n <S.TextInputField\n autoFocus={autoFocus}\n $borderRadius={borderRadius}\n ref={textInputRef}\n rows={rows}\n value={value}\n defaultValue={defaultValue}\n name={name}\n placeholder={placeholder || ' '}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n $edit={edit}\n $type={type}\n autoComplete={autoComplete}\n $hasIcon={Boolean(icon)}\n id={`text-input-${uniqueId}`}\n key={uniqueId}\n $padding={padding}\n onChange={e => {\n if (e.target.value) {\n setInputIsEmpty(false);\n if (!autoFocus) {\n setAutoFocus(true);\n }\n } else {\n setInputIsEmpty(true);\n if (!autoFocus) {\n setAutoFocus(true);\n }\n }\n onChange(e);\n }}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n $noBorder={noBorder}\n {...rest}\n />\n {!fieldLabel && (type === 'loading' || type === 'success') && (\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n )}\n {!readOnly && (edit || noBorder) && (\n <S.InputIconContainer disabled={disabled}>\n <EditNoteIcon className={padding === 'small' ? 'smallPadingIcon' : undefined} />\n </S.InputIconContainer>\n )}\n {label && (\n <S.TextInputLabel\n htmlFor={`text-input-${uniqueId}`}\n $hasPlaceholder={Boolean(placeholder)}\n $hasIcon={Boolean(icon)}\n $inputIsEmpty={inputIsEmpty}\n >\n {label}\n {required && ' *'}\n </S.TextInputLabel>\n )}\n {typeof description === 'string' && description.length > 0 && (\n <S.Description $type={type}>{description}</S.Description>\n )}\n </S.TextInput>\n </S.TextAreaContainter>\n );\n };\n\n if (hidden) return null;\n\n return (\n <>\n <div onMouseLeave={toolTipOnMouseLeave}>\n <Tooltip\n content={toolTipContent}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n disabled={toolTipDisabled}\n zIndex={999999}\n visible={toolTipVisible}\n >\n {input()}\n </Tooltip>\n </div>\n </>\n );\n});\n\nTextArea.defaultProps = {\n rows: 4,\n noBorder: false,\n readOnly: false,\n edit: false,\n hidden: false,\n type: '',\n padding: 'medium',\n descriptionToolTip: '',\n onChange: () => {},\n borderRadius: 0\n};\n\nTextArea.propTypes = {\n /**\n * Value to be sent. Typically the content of the text area.\n */\n value: PropTypes.string,\n\n /**\n * Default value/text to be displayed in the text area by default.\n */\n defaultValue: PropTypes.string,\n\n /**\n * Name of the text area (used when sending form data)\n */\n name: PropTypes.string,\n\n /**\n * Label text for the text area. If the text area is empty (no input and no placeholder)\n * and isn't in focus, the label text will be displayed grayed out in the text area itself.\n * Otherwise, the label text will be displayed in the top left corner.\n */\n label: PropTypes.string,\n\n /**\n * Field Label text for the text area field. I\n */\n fieldLabel: PropTypes.string,\n\n /**\n * Placeholder text to be displayed if the text area is empty (no input)\n */\n placeholder: PropTypes.string,\n\n /**\n * Whether the user is required to fill in the text area\n */\n required: PropTypes.bool,\n\n /**\n * Whether the text area is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Whether the text area is read-only\n */\n readOnly: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * ?\n */\n autoComplete: PropTypes.string,\n /**\n * Descriptive text displayed below the text area\n */\n description: PropTypes.string,\n\n /**\n * Optional icon to be displayed left of the text inside the text area\n */\n icon: PropTypes.element,\n /**\n * How many rows/lines of text to be displayed by default\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Add custom class names to the HTML element\n */\n className: PropTypes.string,\n /**\n * Add custom CSS styling\n */\n style: PropTypes.object,\n /**\n * Add padding (small-medium-large)\n */\n padding: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * Optional callback function for the `onChange` event\n */\n onChange: PropTypes.func,\n /**\n * Optional callback function for the `onBlur` event\n */\n onBlur: PropTypes.func,\n noBorder: PropTypes.bool,\n // warningAlert: PropTypes.bool,\n // errorAlert: PropTypes.bool,\n /**\n * Define the type based on error,error-border , warning, loading and success.\n */\n type: PropTypes.oneOf([\n '',\n 'error',\n 'error-border',\n 'warning-border',\n 'warning',\n 'loading',\n 'success'\n ]),\n /**\n * Icon element â€\" E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element â€\" E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element,\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Border Radius for rounded borders.\n */\n borderRadius: PropTypes.number\n};\n\nexport default TextArea;\n"],"names":["TextArea","React","forwardRef","value","defaultValue","name","label","placeholder","required","disabled","hidden","readOnly","edit","autoComplete","description","type","icon","rows","className","style","onChange","onBlur","noBorder","loadingIcon","successIcon","padding","descriptionToolTip","borderRadius","fieldLabel","rest","forwardedRef","textInputDomNode","useRef","textInputRef","useMergedRefs","inputIsEmpty","setInputIsEmpty","useState","autoFocus","setAutoFocus","uniqueId","nanoid","toolTipDisabled","toolTipVisible","toolTipOnMouseLeave","toolTipContent","useTooltipAutoShow","useEffect","onKeyDown","useCallback","event","key","stopPropagation","input","createElement","S","htmlFor","$fieldLabel","isEmpty","$type","_extends","$borderRadius","ref","$edit","$hasIcon","Boolean","id","$padding","e","target","$noBorder","EditNoteIcon","undefined","$hasPlaceholder","$inputIsEmpty","length","Fragment","onMouseLeave","Tooltip","content","placement","trigger","zIndex","visible","defaultProps","propTypes","process","env","NODE_ENV","PropTypes","string","bool","element","oneOfType","number","object","oneOf","func"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextArea.js","sources":["../../../src/components/inputs/TextArea/TextArea.js"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport useTooltipAutoShow from '../../../hooks/useTooltipAutoShow';\n\nimport { isEmpty } from 'lodash';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { nanoid } from 'nanoid';\nimport PropTypes from 'prop-types';\nimport { Tooltip } from '../../data';\n\nimport { ReactComponent as EditNoteIcon } from '../../../icons/edit-note.svg';\nimport * as S from './TextArea.styled';\n\n/**\n * Text areas let users enter and edit text in the UI. They typically appear in forms and dialogs.\n *\n * ### Import\n *\n * ``` js\n * import { TextArea } from '@ntbjs/react-components/inputs'\n * // or\n * import TextArea from '@ntbjs/react-components/inputs/TextArea'\n * ```\n */\nconst TextArea = React.forwardRef(function TextArea(\n {\n value,\n defaultValue,\n name,\n label,\n placeholder,\n required,\n disabled,\n hidden,\n readOnly,\n edit,\n autoComplete,\n description,\n type,\n icon,\n rows,\n className,\n style,\n onChange,\n onBlur,\n noBorder,\n loadingIcon,\n successIcon,\n padding,\n descriptionToolTip,\n borderRadius,\n fieldLabel,\n ...rest\n },\n forwardedRef\n) {\n const textInputDomNode = useRef(null);\n const textInputRef = useMergedRefs(forwardedRef, textInputDomNode);\n\n const [inputIsEmpty, setInputIsEmpty] = useState(!(value || defaultValue));\n const [autoFocus, setAutoFocus] = useState(false);\n\n const [uniqueId] = useState(nanoid());\n\n const { toolTipDisabled, toolTipVisible, toolTipOnMouseLeave, toolTipContent } =\n useTooltipAutoShow(descriptionToolTip);\n\n useEffect(() => {\n setAutoFocus(false);\n }, [value, defaultValue]);\n\n const onKeyDown = useCallback(event => {\n if (event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const input = () => {\n return (\n <S.TextAreaContainter>\n {fieldLabel && (\n <S.Label htmlFor={uniqueId} disabled={disabled}>\n {fieldLabel}\n <S.SuccessContainerLabel>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainerLabel>\n </S.Label>\n )}\n <S.TextInput\n $fieldLabel={!isEmpty(fieldLabel)}\n disabled={disabled}\n readOnly={readOnly}\n $type={type}\n className={className}\n style={style}\n >\n <S.TextInputFieldIconAlert $type={type}>{icon}</S.TextInputFieldIconAlert>\n <S.TextInputField\n autoFocus={autoFocus}\n $borderRadius={borderRadius}\n ref={textInputRef}\n rows={rows}\n value={value}\n defaultValue={defaultValue}\n name={name}\n placeholder={placeholder || ' '}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n $edit={edit}\n $type={type}\n autoComplete={autoComplete}\n $hasIcon={Boolean(icon)}\n id={`text-input-${uniqueId}`}\n key={uniqueId}\n $padding={padding}\n onChange={e => {\n if (e.target.value) {\n setInputIsEmpty(false);\n if (!autoFocus) {\n setAutoFocus(true);\n }\n } else {\n setInputIsEmpty(true);\n if (!autoFocus) {\n setAutoFocus(true);\n }\n }\n onChange(e);\n }}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n $noBorder={noBorder}\n {...rest}\n />\n {!fieldLabel && (type === 'loading' || type === 'success') && (\n <S.SuccessContainer>\n {type === 'loading' && loadingIcon}\n {type === 'success' && successIcon}\n </S.SuccessContainer>\n )}\n {!readOnly && (edit || noBorder) && (\n <S.InputIconContainer disabled={disabled}>\n <EditNoteIcon className={padding === 'small' ? 'smallPadingIcon' : undefined} />\n </S.InputIconContainer>\n )}\n {label && (\n <S.TextInputLabel\n htmlFor={`text-input-${uniqueId}`}\n $hasPlaceholder={Boolean(placeholder)}\n $hasIcon={Boolean(icon)}\n $inputIsEmpty={inputIsEmpty}\n >\n {label}\n {required && ' *'}\n </S.TextInputLabel>\n )}\n {typeof description === 'string' && description.length > 0 && (\n <S.Description $type={type}>{description}</S.Description>\n )}\n </S.TextInput>\n </S.TextAreaContainter>\n );\n };\n\n if (hidden) return null;\n\n return (\n <>\n <div onMouseLeave={toolTipOnMouseLeave}>\n <Tooltip\n content={toolTipContent}\n key=\"tooltipTextArea1\"\n placement=\"bottom-end\"\n trigger={'mouseenter'}\n disabled={toolTipDisabled}\n zIndex={999999}\n visible={toolTipVisible}\n >\n {input()}\n </Tooltip>\n </div>\n </>\n );\n});\n\nTextArea.defaultProps = {\n rows: 4,\n noBorder: false,\n readOnly: false,\n edit: false,\n hidden: false,\n type: '',\n padding: 'medium',\n descriptionToolTip: '',\n onChange: () => {},\n borderRadius: 0\n};\n\nTextArea.propTypes = {\n /**\n * Value to be sent. Typically the content of the text area.\n */\n value: PropTypes.string,\n\n /**\n * Default value/text to be displayed in the text area by default.\n */\n defaultValue: PropTypes.string,\n\n /**\n * Name of the text area (used when sending form data)\n */\n name: PropTypes.string,\n\n /**\n * Label text for the text area. If the text area is empty (no input and no placeholder)\n * and isn't in focus, the label text will be displayed grayed out in the text area itself.\n * Otherwise, the label text will be displayed in the top left corner.\n */\n label: PropTypes.string,\n\n /**\n * Field Label text for the text area field. I\n */\n fieldLabel: PropTypes.string,\n\n /**\n * Placeholder text to be displayed if the text area is empty (no input)\n */\n placeholder: PropTypes.string,\n\n /**\n * Whether the user is required to fill in the text area\n */\n required: PropTypes.bool,\n\n /**\n * Whether the text area is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Whether the component is hidden or visible.\n */\n hidden: PropTypes.bool,\n /**\n * Whether the text area is read-only\n */\n readOnly: PropTypes.bool,\n /**\n * Displays a grey background to show that value is editable\n */\n edit: PropTypes.bool,\n /**\n * ?\n */\n autoComplete: PropTypes.string,\n /**\n * Descriptive text displayed below the text area\n */\n description: PropTypes.string,\n\n /**\n * Optional icon to be displayed left of the text inside the text area\n */\n icon: PropTypes.element,\n /**\n * How many rows/lines of text to be displayed by default\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Add custom class names to the HTML element\n */\n className: PropTypes.string,\n /**\n * Add custom CSS styling\n */\n style: PropTypes.object,\n /**\n * Add padding (small-medium-large)\n */\n padding: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * Optional callback function for the `onChange` event\n */\n onChange: PropTypes.func,\n /**\n * Optional callback function for the `onBlur` event\n */\n onBlur: PropTypes.func,\n noBorder: PropTypes.bool,\n // warningAlert: PropTypes.bool,\n // errorAlert: PropTypes.bool,\n /**\n * Define the type based on error,error-border , warning, loading and success.\n */\n type: PropTypes.oneOf([\n '',\n 'error',\n 'error-border',\n 'warning-border',\n 'warning',\n 'loading',\n 'success'\n ]),\n /**\n * Icon element â€\" E.g: `icon={<Spinner />}`\n */\n loadingIcon: PropTypes.element,\n /**\n * Icon element â€\" E.g: `icon={<Check />}`\n */\n successIcon: PropTypes.element,\n /**\n * Description ToolTip text.\n */\n descriptionToolTip: PropTypes.string,\n /**\n * Border Radius for rounded borders.\n */\n borderRadius: PropTypes.number\n};\n\nexport default TextArea;\n"],"names":["TextArea","React","forwardRef","value","defaultValue","name","label","placeholder","required","disabled","hidden","readOnly","edit","autoComplete","description","type","icon","rows","className","style","onChange","onBlur","noBorder","loadingIcon","successIcon","padding","descriptionToolTip","borderRadius","fieldLabel","rest","forwardedRef","textInputDomNode","useRef","textInputRef","useMergedRefs","inputIsEmpty","setInputIsEmpty","useState","autoFocus","setAutoFocus","uniqueId","nanoid","toolTipDisabled","toolTipVisible","toolTipOnMouseLeave","toolTipContent","useTooltipAutoShow","useEffect","onKeyDown","useCallback","event","key","stopPropagation","input","createElement","S","htmlFor","$fieldLabel","isEmpty","$type","_extends","$borderRadius","ref","$edit","$hasIcon","Boolean","id","$padding","e","target","$noBorder","EditNoteIcon","undefined","$hasPlaceholder","$inputIsEmpty","length","Fragment","onMouseLeave","Tooltip","content","placement","trigger","zIndex","visible","defaultProps","propTypes","process","env","NODE_ENV","PropTypes","string","bool","element","oneOfType","number","object","oneOf","func"],"mappings":";;;;;;;;;;;;;;;;;AAuBMA,MAAAA,QAAQ,GAAGC,cAAK,CAACC,UAAU,CAAC,SAASF,QAAQA,CACjD;EACEG,KAAK;EACLC,YAAY;EACZC,IAAI;EACJC,KAAK;EACLC,WAAW;EACXC,QAAQ;EACRC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,IAAI;EACJC,YAAY;EACZC,WAAW;EACXC,IAAI;EACJC,IAAI;EACJC,IAAI;EACJC,SAAS;EACTC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,WAAW;EACXC,WAAW;EACXC,OAAO;EACPC,kBAAkB;EAClBC,YAAY;EACZC,UAAU;EACV,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;AACA,EAAA,MAAMC,gBAAgB,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AACrC,EAAA,MAAMC,YAAY,GAAGC,aAAa,CAACJ,YAAY,EAAEC,gBAAgB,CAAC,CAAA;AAElE,EAAA,MAAM,CAACI,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,CAAC,EAAElC,KAAK,IAAIC,YAAY,CAAC,CAAC,CAAA;EAC1E,MAAM,CAACkC,SAAS,EAAEC,YAAY,CAAC,GAAGF,QAAQ,CAAC,KAAK,CAAC,CAAA;EAEjD,MAAM,CAACG,QAAQ,CAAC,GAAGH,QAAQ,CAACI,MAAM,EAAE,CAAC,CAAA;EAErC,MAAM;IAAEC,eAAe;IAAEC,cAAc;IAAEC,mBAAmB;AAAEC,IAAAA,cAAAA;AAAe,GAAC,GAC5EC,kBAAkB,CAACpB,kBAAkB,CAAC,CAAA;AAExCqB,EAAAA,SAAS,CAAC,MAAM;IACdR,YAAY,CAAC,KAAK,CAAC,CAAA;AACrB,GAAC,EAAE,CAACpC,KAAK,EAAEC,YAAY,CAAC,CAAC,CAAA;AAEzB,EAAA,MAAM4C,SAAS,GAAGC,WAAW,CAACC,KAAK,IAAI;AACrC,IAAA,IAAIA,KAAK,CAACC,GAAG,KAAK,OAAO,EAAE;MACzBD,KAAK,CAACE,eAAe,EAAE,CAAA;AACzB,KAAA;GACD,EAAE,EAAE,CAAC,CAAA;EAEN,MAAMC,KAAK,GAAGA,MAAM;AAClB,IAAA,OACEpD,cAAA,CAAAqD,aAAA,CAACC,kBAAoB,EAAA,IAAA,EAClB3B,UAAU,IACT3B,cAAA,CAAAqD,aAAA,CAACC,KAAO,EAAA;AAACC,MAAAA,OAAO,EAAEhB,QAAS;AAAC/B,MAAAA,QAAQ,EAAEA,QAAAA;AAAS,KAAA,EAC5CmB,UAAU,EACX3B,cAAA,CAAAqD,aAAA,CAACC,qBAAuB,EAAA,IAAA,EACrBxC,IAAI,KAAK,SAAS,IAAIQ,WAAW,EACjCR,IAAI,KAAK,SAAS,IAAIS,WACA,CAClB,CACV,EACDvB,cAAA,CAAAqD,aAAA,CAACC,SAAW,EAAA;AACVE,MAAAA,WAAW,EAAE,CAACC,OAAO,CAAC9B,UAAU,CAAE;AAClCnB,MAAAA,QAAQ,EAAEA,QAAS;AACnBE,MAAAA,QAAQ,EAAEA,QAAS;AACnBgD,MAAAA,KAAK,EAAE5C,IAAK;AACZG,MAAAA,SAAS,EAAEA,SAAU;AACrBC,MAAAA,KAAK,EAAEA,KAAAA;AAAM,KAAA,EAEblB,cAAA,CAAAqD,aAAA,CAACC,uBAAyB,EAAA;AAACI,MAAAA,KAAK,EAAE5C,IAAAA;KAAOC,EAAAA,IAAgC,CAAC,EAC1Ef,cAAA,CAAAqD,aAAA,CAACC,cAAgB,EAAAK,QAAA,CAAA;AACftB,MAAAA,SAAS,EAAEA,SAAU;AACrBuB,MAAAA,aAAa,EAAElC,YAAa;AAC5BmC,MAAAA,GAAG,EAAE7B,YAAa;AAClBhB,MAAAA,IAAI,EAAEA,IAAK;AACXd,MAAAA,KAAK,EAAEA,KAAM;AACbC,MAAAA,YAAY,EAAEA,YAAa;AAC3BC,MAAAA,IAAI,EAAEA,IAAK;MACXE,WAAW,EAAEA,WAAW,IAAI,GAAI;AAChCC,MAAAA,QAAQ,EAAEA,QAAS;AACnBG,MAAAA,QAAQ,EAAEA,QAAS;AACnBF,MAAAA,QAAQ,EAAEA,QAAS;AACnBsD,MAAAA,KAAK,EAAEnD,IAAK;AACZ+C,MAAAA,KAAK,EAAE5C,IAAK;AACZF,MAAAA,YAAY,EAAEA,YAAa;AAC3BmD,MAAAA,QAAQ,EAAEC,OAAO,CAACjD,IAAI,CAAE;MACxBkD,EAAE,EAAE,CAAc1B,WAAAA,EAAAA,QAAQ,CAAG,CAAA;AAC7BW,MAAAA,GAAG,EAAEX,QAAS;AACd2B,MAAAA,QAAQ,EAAE1C,OAAQ;MAClBL,QAAQ,EAAEgD,CAAC,IAAI;AACb,QAAA,IAAIA,CAAC,CAACC,MAAM,CAAClE,KAAK,EAAE;UAClBiC,eAAe,CAAC,KAAK,CAAC,CAAA;UACtB,IAAI,CAACE,SAAS,EAAE;YACdC,YAAY,CAAC,IAAI,CAAC,CAAA;AACpB,WAAA;AACF,SAAC,MAAM;UACLH,eAAe,CAAC,IAAI,CAAC,CAAA;UACrB,IAAI,CAACE,SAAS,EAAE;YACdC,YAAY,CAAC,IAAI,CAAC,CAAA;AACpB,WAAA;AACF,SAAA;QACAnB,QAAQ,CAACgD,CAAC,CAAC,CAAA;OACX;AACFpB,MAAAA,SAAS,EAAEA,SAAU;AACrB3B,MAAAA,MAAM,EAAEA,MAAO;AACfiD,MAAAA,SAAS,EAAEhD,QAAAA;KACPO,EAAAA,IAAI,CACT,CAAC,EACD,CAACD,UAAU,KAAKb,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,SAAS,CAAC,IACxDd,cAAA,CAAAqD,aAAA,CAACC,gBAAkB,EAChBxC,IAAAA,EAAAA,IAAI,KAAK,SAAS,IAAIQ,WAAW,EACjCR,IAAI,KAAK,SAAS,IAAIS,WACL,CACrB,EACA,CAACb,QAAQ,KAAKC,IAAI,IAAIU,QAAQ,CAAC,IAC9BrB,cAAA,CAAAqD,aAAA,CAACC,kBAAoB,EAAA;AAAC9C,MAAAA,QAAQ,EAAEA,QAAAA;AAAS,KAAA,EACvCR,cAAA,CAAAqD,aAAA,CAACiB,WAAY,EAAA;AAACrD,MAAAA,SAAS,EAAEO,OAAO,KAAK,OAAO,GAAG,iBAAiB,GAAG+C,SAAAA;KAAY,CAC3D,CACvB,EACAlE,KAAK,IACJL,cAAA,CAAAqD,aAAA,CAACC,cAAgB,EAAA;MACfC,OAAO,EAAE,CAAchB,WAAAA,EAAAA,QAAQ,CAAG,CAAA;AAClCiC,MAAAA,eAAe,EAAER,OAAO,CAAC1D,WAAW,CAAE;AACtCyD,MAAAA,QAAQ,EAAEC,OAAO,CAACjD,IAAI,CAAE;AACxB0D,MAAAA,aAAa,EAAEvC,YAAAA;KAEd7B,EAAAA,KAAK,EACLE,QAAQ,IAAI,IACG,CACnB,EACA,OAAOM,WAAW,KAAK,QAAQ,IAAIA,WAAW,CAAC6D,MAAM,GAAG,CAAC,IACxD1E,cAAA,CAAAqD,aAAA,CAACC,WAAa,EAAA;AAACI,MAAAA,KAAK,EAAE5C,IAAAA;KAAOD,EAAAA,WAA2B,CAE/C,CACO,CAAC,CAAA;GAE1B,CAAA;EAED,IAAIJ,MAAM,EAAE,OAAO,IAAI,CAAA;EAEvB,OACET,cAAA,CAAAqD,aAAA,CAAArD,cAAA,CAAA2E,QAAA,EAAA,IAAA,EACE3E,cAAA,CAAAqD,aAAA,CAAA,KAAA,EAAA;AAAKuB,IAAAA,YAAY,EAAEjC,mBAAAA;AAAoB,GAAA,EACrC3C,cAAA,CAAAqD,aAAA,CAACwB,OAAO,EAAA;AACNC,IAAAA,OAAO,EAAElC,cAAe;AACxBM,IAAAA,GAAG,EAAC,kBAAkB;AACtB6B,IAAAA,SAAS,EAAC,YAAY;AACtBC,IAAAA,OAAO,EAAE,YAAa;AACtBxE,IAAAA,QAAQ,EAAEiC,eAAgB;AAC1BwC,IAAAA,MAAM,EAAE,MAAO;AACfC,IAAAA,OAAO,EAAExC,cAAAA;AAAe,GAAA,EAEvBU,KAAK,EACC,CACN,CACL,CAAC,CAAA;AAEP,CAAC,EAAC;AAEFrD,QAAQ,CAACoF,YAAY,GAAG;AACtBnE,EAAAA,IAAI,EAAE,CAAC;AACPK,EAAAA,QAAQ,EAAE,KAAK;AACfX,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,IAAI,EAAE,KAAK;AACXF,EAAAA,MAAM,EAAE,KAAK;AACbK,EAAAA,IAAI,EAAE,EAAE;AACRU,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,kBAAkB,EAAE,EAAE;AACtBN,EAAAA,QAAQ,EAAEA,MAAM,EAAE;AAClBO,EAAAA,YAAY,EAAE,CAAA;AAChB,CAAC,CAAA;AAED3B,QAAQ,CAACqF,SAAS,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,KAAG,YAAA,GAAA;EAInBrF,KAAK,EAAEsF,SAAS,CAACC,MAAM;EAKvBtF,YAAY,EAAEqF,SAAS,CAACC,MAAM;EAK9BrF,IAAI,EAAEoF,SAAS,CAACC,MAAM;EAOtBpF,KAAK,EAAEmF,SAAS,CAACC,MAAM;EAKvB9D,UAAU,EAAE6D,SAAS,CAACC,MAAM;EAK5BnF,WAAW,EAAEkF,SAAS,CAACC,MAAM;EAK7BlF,QAAQ,EAAEiF,SAAS,CAACE,IAAI;EAKxBlF,QAAQ,EAAEgF,SAAS,CAACE,IAAI;EAIxBjF,MAAM,EAAE+E,SAAS,CAACE,IAAI;EAItBhF,QAAQ,EAAE8E,SAAS,CAACE,IAAI;EAIxB/E,IAAI,EAAE6E,SAAS,CAACE,IAAI;EAIpB9E,YAAY,EAAE4E,SAAS,CAACC,MAAM;EAI9B5E,WAAW,EAAE2E,SAAS,CAACC,MAAM;EAK7B1E,IAAI,EAAEyE,SAAS,CAACG,OAAO;AAIvB3E,EAAAA,IAAI,EAAEwE,SAAS,CAACI,SAAS,CAAC,CAACJ,SAAS,CAACK,MAAM,EAAEL,SAAS,CAACC,MAAM,CAAC,CAAC;EAI/DxE,SAAS,EAAEuE,SAAS,CAACC,MAAM;EAI3BvE,KAAK,EAAEsE,SAAS,CAACM,MAAM;AAIvBtE,EAAAA,OAAO,EAAEgE,SAAS,CAACO,KAAK,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;EAItD5E,QAAQ,EAAEqE,SAAS,CAACQ,IAAI;EAIxB5E,MAAM,EAAEoE,SAAS,CAACQ,IAAI;EACtB3E,QAAQ,EAAEmE,SAAS,CAACE,IAAI;EAMxB5E,IAAI,EAAE0E,SAAS,CAACO,KAAK,CAAC,CACpB,EAAE,EACF,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;EAIFzE,WAAW,EAAEkE,SAAS,CAACG,OAAO;EAI9BpE,WAAW,EAAEiE,SAAS,CAACG,OAAO;EAI9BlE,kBAAkB,EAAE+D,SAAS,CAACC,MAAM;EAIpC/D,YAAY,EAAE8D,SAAS,CAACK,MAAAA;AAC1B,CAAC,GAAA,EAAA;;;;"}
|
|
@@ -12,7 +12,6 @@ import { ReactComponent as SvgWarningCircle } from '../../../../icons/warning-ci
|
|
|
12
12
|
import { convertMsToHMS } from '../../../../utils/dateTime.js';
|
|
13
13
|
import '../../../../data/Alert/Alert.js';
|
|
14
14
|
import Badge from '../../../../data/Badge/Badge.js';
|
|
15
|
-
import '../../../../data/InstructionsSeverityDisplay/InstructionsSeverityDisplay.js';
|
|
16
15
|
import '../../../../data/Popover/Popover.js';
|
|
17
16
|
import '../../../../data/Tab/Tab.js';
|
|
18
17
|
import '../../../../data/Tabs/Tabs.js';
|
|
@@ -308,7 +307,7 @@ const AssetGalleryCompactCard = props => {
|
|
|
308
307
|
title: asset?.title || '',
|
|
309
308
|
description: asset?.description || '',
|
|
310
309
|
instructions: asset?.imageRights || '',
|
|
311
|
-
|
|
310
|
+
instructionsSeverity: asset?.instructionSeverity,
|
|
312
311
|
headerRight: asset?.summary?.headerRight || '',
|
|
313
312
|
headerLeft: React__default.createElement(React__default.Fragment, null, renderSummaryCardHeaderLeft(), asset?.summary?.headerLeft || ''),
|
|
314
313
|
footerLeft: asset?.summary?.footerLeft || '',
|