guestbell-forms 3.0.68 → 3.0.70
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/components/tags/Tags.d.ts +16 -12
- package/build/components/tags/Tags.js +8 -6
- package/build/components/tags/Tags.js.map +1 -1
- package/build/components/tags/subComponents/TagsSuggestions.d.ts +6 -5
- package/build/components/tags/subComponents/TagsSuggestions.js +1 -1
- package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
- package/build/dist/report.html +1 -1
- package/package.json +1 -1
- package/src/lib/components/tags/Tags.tsx +40 -19
- package/src/lib/components/tags/subComponents/TagsSuggestions.tsx +22 -11
@@ -3,16 +3,19 @@ import { TextProps } from '../text/Text';
|
|
3
3
|
import { BaseInputProps, BaseInputState, BaseInput, ValidationError } from '../base/input/BaseInput';
|
4
4
|
import { RenderSuggestionTagProps } from './subComponents/TagsSuggestions';
|
5
5
|
import { PopperProps } from '@mui/material/Popper/Popper';
|
6
|
-
export type Tag = {
|
7
|
-
id:
|
6
|
+
export type Tag<T extends number | string = number> = {
|
7
|
+
id: T;
|
8
8
|
name: string;
|
9
9
|
};
|
10
|
+
export type ResourceTConstraint<IdT extends number | string> = {
|
11
|
+
id: IdT;
|
12
|
+
};
|
10
13
|
export declare const defaultTagsTranslations: {
|
11
14
|
addNew: string;
|
12
15
|
required: string;
|
13
16
|
};
|
14
17
|
export type TagsTranslations = Partial<typeof defaultTagsTranslations>;
|
15
|
-
export type TagsProps<T extends
|
18
|
+
export type TagsProps<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> = {
|
16
19
|
className?: string;
|
17
20
|
tagsSuggestionsClassName?: string;
|
18
21
|
disabled?: boolean;
|
@@ -44,9 +47,10 @@ export type TagsProps<T extends Tag = Tag> = {
|
|
44
47
|
mobileVersionEnabled?: boolean;
|
45
48
|
isLoading?: boolean;
|
46
49
|
closeSuggestionsAfterCreate?: boolean;
|
47
|
-
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;
|
50
|
+
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;
|
51
|
+
getName?: (tag: T) => string;
|
48
52
|
} & BaseInputProps<HTMLInputElement, TagsTranslations>;
|
49
|
-
export interface TagsState<T extends
|
53
|
+
export interface TagsState<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> extends BaseInputState {
|
50
54
|
textIsFocused: boolean;
|
51
55
|
textErrors: ValidationError[];
|
52
56
|
textIsValid: boolean;
|
@@ -56,14 +60,14 @@ export interface TagsState<T extends Tag = Tag> extends BaseInputState {
|
|
56
60
|
preselectedSuggestion?: number;
|
57
61
|
}
|
58
62
|
type InjectedProps = {};
|
59
|
-
export declare class TagsRaw<T extends
|
63
|
+
export declare class TagsRaw<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> extends BaseInput<TagsProps<IdT, T> & InjectedProps, TagsState<IdT, T>, HTMLInputElement, TagsTranslations> {
|
60
64
|
static defaultProps: TagsProps;
|
61
65
|
private textRef;
|
62
66
|
private suggestionsRef;
|
63
67
|
private isMobile;
|
64
|
-
constructor(props: TagsProps<T> & InjectedProps);
|
68
|
+
constructor(props: TagsProps<IdT, T> & InjectedProps);
|
65
69
|
focus(): void;
|
66
|
-
componentDidUpdate(oldProps: TagsProps & InjectedProps): void;
|
70
|
+
componentDidUpdate(oldProps: TagsProps<IdT, T> & InjectedProps): void;
|
67
71
|
handleLeaveMobileClick(): void;
|
68
72
|
handleClickOutside(e: MouseEvent): void;
|
69
73
|
componentDidMount(): void;
|
@@ -84,9 +88,9 @@ export declare class TagsRaw<T extends Tag = Tag> extends BaseInput<TagsProps<T>
|
|
84
88
|
private tagClick;
|
85
89
|
private tagRemoveClick;
|
86
90
|
}
|
87
|
-
interface TagsFinal {
|
88
|
-
|
89
|
-
defaultProps?: Partial<TagsProps
|
91
|
+
interface TagsFinal<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> {
|
92
|
+
(item: TagsProps<IdT, T>): React.ReactElement;
|
93
|
+
defaultProps?: Partial<TagsProps<IdT, T>>;
|
90
94
|
}
|
91
|
-
export declare const Tags: TagsFinal
|
95
|
+
export declare const Tags: TagsFinal<number, Tag<number>>;
|
92
96
|
export default Tags;
|
@@ -99,7 +99,7 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
99
99
|
if (e.key === 'Enter' && (this.state.value !== '' || this.state.preselectedSuggestion !== undefined) && this.state.textErrors.length === 0) {
|
100
100
|
e.preventDefault();
|
101
101
|
e.stopPropagation();
|
102
|
-
const existingTag = this.props.existingTags && this.props.existingTags.find(et => et
|
102
|
+
const existingTag = this.props.existingTags && this.props.existingTags.find(et => this.props.getName(et) === this.state.value);
|
103
103
|
if (this.state.preselectedSuggestion !== undefined) {
|
104
104
|
this.props.onTagsChanged(this.props.tags.concat(suggestions[this.state.preselectedSuggestion]));
|
105
105
|
this.setState({
|
@@ -265,7 +265,7 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
265
265
|
});
|
266
266
|
if (this.props.addNewOnBlur && this.state.value) {
|
267
267
|
const suggestions = this.getSuggestions();
|
268
|
-
const existing = suggestions.find(s => s
|
268
|
+
const existing = suggestions.find(s => this.props.getName(s) === this.state.value);
|
269
269
|
if (existing) {
|
270
270
|
this.onSuggestionSelected(existing, suggestions.length === 1);
|
271
271
|
} else if (this.props.allowNew) {
|
@@ -362,7 +362,7 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
362
362
|
tags: suggestions,
|
363
363
|
onSelected: this.onSuggestionSelected,
|
364
364
|
value: this.state.value,
|
365
|
-
AddNewTagComponent: this.props.allowNew && this.state.value !== '' && (!this.props.existingTags || !this.props.existingTags.find(e => e
|
365
|
+
AddNewTagComponent: this.props.allowNew && this.state.value !== '' && (!this.props.existingTags || !this.props.existingTags.find(e => this.props.getName(e) === this.state.value)) && (!this.state.fetchedExistingTags || !this.state.fetchedExistingTags.find(e => this.props.getName(e) === this.state.value)) && this.state.textIsValid && /*#__PURE__*/React.createElement(_Button.Button, _extends({}, this.props.id && {
|
366
366
|
id: this.props.id + '-add-new-button'
|
367
367
|
}, {
|
368
368
|
className: "tags-input__suggestion tags-input__add-new",
|
@@ -370,7 +370,8 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
370
370
|
onClick: this.addNewTag
|
371
371
|
}), translations.addNew, " \"", this.state.value, "\""),
|
372
372
|
SuggestionTag: this.props.SuggestionTag,
|
373
|
-
popperProps: this.props.popperProps
|
373
|
+
popperProps: this.props.popperProps,
|
374
|
+
getName: this.props.getName
|
374
375
|
}))), this.renderDefaultValidation(), this.props.label && /*#__PURE__*/React.createElement("label", {
|
375
376
|
className: this.state.value !== '' || this.state.textIsFocused || this.props.readOnly || this.props.tags.length >= this.props.maxTags || showMobileVersion ? 'label--focused' : ''
|
376
377
|
}, this.renderLabel()))));
|
@@ -413,7 +414,7 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
413
414
|
return suggestions;
|
414
415
|
}
|
415
416
|
renderTag(tag, index) {
|
416
|
-
const body = /*#__PURE__*/React.createElement(React.Fragment, null, tag
|
417
|
+
const body = /*#__PURE__*/React.createElement(React.Fragment, null, this.props.getName(tag), !this.props.readOnly && /*#__PURE__*/React.createElement(_Button.Button, _extends({}, this.props.id && {
|
417
418
|
id: this.props.id + '-tag-' + index.toString()
|
418
419
|
}, {
|
419
420
|
circular: true,
|
@@ -468,7 +469,8 @@ TagsRaw.defaultProps = _objectSpread(_objectSpread({}, _BaseInput.BaseInput.defa
|
|
468
469
|
translations: defaultTagsTranslations,
|
469
470
|
minLettersToFetch: 0,
|
470
471
|
mobileVersionEnabled: true,
|
471
|
-
closeSuggestionsAfterCreate: false
|
472
|
+
closeSuggestionsAfterCreate: false,
|
473
|
+
getName: tag => tag.name
|
472
474
|
});
|
473
475
|
const Tags = (0, _withThemeContext.withThemeContext)(
|
474
476
|
// tslint:disable-next-line: no-any
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tags.js","names":["React","_interopRequireWildcard","require","_InputGroup","_Text","_BaseInput","_Button","_TagsSuggestions","_interopRequireDefault","_withFormContext","_classnames","_withThemeContext","_LinearProgress","_Portal","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","PlusIcon","props","createElement","d","defaultProps","xmlns","width","height","viewBox","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","exports","TagButtonComponent","p","className","id","onClick","children","TagsRaw","BaseInput","constructor","_this","this","textRef","suggestionsRef","isMobile","onTextErrorsChanged","textErrors","setState","handleErrors","onFocus","_this$props$onFocus","_this$props","state","suggestionsVisible","_this$props$onSuggest","_this$props2","onSuggestionsOpened","fetchExistingTags","textIsFocused","touched","showMobileVersion","mobileVersionEnabled","setTimeout","_this$textRef$current","current","focus","onKeyDown","suggestions","e","preselectedSuggestion","preventDefault","stopPropagation","existingTag","existingTags","find","et","name","onTagsChanged","tags","concat","allowNew","addNewTag","newTag","onNewTagAdded","closeSuggestionsAfterCreate","onSuggestionSelected","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","_this$props$onBlur","_this$props3","onTextChanged","isValid","textIsValid","errors","getErrors","setInvalid","setValid","tagClick","onTagClick","tagRemoveClick","sv","fetchingExistingTags","fetchedExistingTags","createRef","handleClickOutside","handleLeaveMobileClick","_require","componentDidUpdate","oldProps","validators","customValidators","required","_this$containerRef$cu","_this$containerRef$cu2","containerRef","querySelector","contains","_this$props$onSuggest2","_this$props4","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","render","translations","getTranslations","textProps","LeaveMobileButton","Button","noShadow","unobtrusive","showInput","Boolean","readOnly","container","body","disablePortal","InputGroup","title","tooltip","classNames","getValidationClass","placeholder","ref","map","item","index","renderTag","readonlyEmptyPlaceholder","Text","showClearButton","onErrorsChanged","onChange","showValidation","ignoreContext","before","showSuggestions","tagsSuggestionsClassName","innerRef","anchorEl","loading","isLoading","LoadingComponent","suggestionsLoadingComponent","isVisible","EmptyComponent","suggestionsEmptyComponent","WaitingForMoreInputComponent","waitingForMoreInputComponent","isWaitingForMoreInput","minLettersToFetch","onSelected","AddNewTagComponent","dropdown","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","Fragment","toString","circular","blank","Component","preventsDefault","showChips","small","disabled","newTagName","Promise","resolve","Date","getTime","text","Tags","withThemeContext","withFormContext","_default"],"sources":["../../../src/lib/components/tags/Tags.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport { InputGroup } from '../inputGroup/InputGroup';\r\nimport { Text, TextProps, TextRaw } from '../text/Text';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n ValidationError,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button, ButtonComponentProps } from '../button/Button';\r\nimport TagsSuggestions, {\r\n RenderSuggestionTagProps,\r\n} from './subComponents/TagsSuggestions';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport classNames from 'classnames';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { PopperProps } from '@mui/material/Popper/Popper';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport Portal from '@mui/material/Portal';\r\n\r\n// Misc\r\nexport type Tag = {\r\n id: number | string;\r\n name: string;\r\n};\r\n\r\nexport const defaultTagsTranslations = {\r\n ...defaultBaseTranslations,\r\n addNew: 'Add new',\r\n};\r\n\r\nexport type TagsTranslations = Partial<typeof defaultTagsTranslations>;\r\n\r\nexport type TagsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n tagsSuggestionsClassName?: string;\r\n disabled?: boolean;\r\n tags: T[];\r\n existingTags?: T[];\r\n fetchExistingTags?: (text: string) => Promise<T[]>;\r\n onTagsChanged: (newTags: T[]) => void;\r\n onNewTagAdded?: (newTagName: string) => Promise<T>;\r\n onTagClick?: (tag: T) => void;\r\n showChips?: boolean;\r\n allowNew?: boolean;\r\n addNewOnBlur?: boolean;\r\n textProps?: TextProps;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n maxTags?: number;\r\n valueNotAddedError?: string | JSX.Element;\r\n maxTagsSurpassedError?: string | JSX.Element;\r\n showSuggestions?: boolean;\r\n suggestionsLoadingComponent?: string | JSX.Element;\r\n suggestionsEmptyComponent?: string | JSX.Element | null;\r\n waitingForMoreInputComponent?: string | JSX.Element;\r\n loadingDelayMs?: number;\r\n filterExistingTags?: (text: string, existingTags: T[]) => T[];\r\n allowSameTagMultipleTimes?: boolean;\r\n maxSuggestions?: number;\r\n popperProps?: Partial<PopperProps>;\r\n minLettersToFetch?: number;\r\n mobileVersionEnabled?: boolean;\r\n isLoading?: boolean;\r\n closeSuggestionsAfterCreate?: boolean;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n} & BaseInputProps<HTMLInputElement, TagsTranslations>;\r\n\r\nexport interface TagsState<T extends Tag = Tag> extends BaseInputState {\r\n textIsFocused: boolean;\r\n textErrors: ValidationError[];\r\n textIsValid: boolean;\r\n suggestionsVisible: boolean;\r\n fetchedExistingTags: T[];\r\n fetchingExistingTags: boolean;\r\n preselectedSuggestion?: number;\r\n}\r\n\r\ntype InjectedProps = {};\r\n\r\nconst TagButtonComponent: React.FC<ButtonComponentProps> = (p) => (\r\n <a className={p.className} id={p.id} onClick={p.onClick}>\r\n {p.children}\r\n </a>\r\n);\r\n\r\nexport class TagsRaw<T extends Tag = Tag> extends BaseInput<\r\n TagsProps<T> & InjectedProps,\r\n TagsState<T>,\r\n HTMLInputElement,\r\n TagsTranslations\r\n> {\r\n public static defaultProps: TagsProps = {\r\n ...BaseInput.defaultProps,\r\n disabled: false,\r\n className: '',\r\n tags: [],\r\n existingTags: [],\r\n maxTags: 1000,\r\n onTagsChanged: () => undefined,\r\n onNewTagAdded: (newTagName) =>\r\n Promise.resolve({ name: newTagName, id: new Date().getTime() }),\r\n valueNotAddedError: <span>You forgot to add tag</span>,\r\n maxTagsSurpassedError: <span>Maximum number of tags surpassed</span>,\r\n waitingForMoreInputComponent: <span>Waiting for more input...</span>,\r\n showSuggestions: true,\r\n suggestionsLoadingComponent: (\r\n <LinearProgress className=\"tags-input__suggestions__defaultLoading\" />\r\n ),\r\n suggestionsEmptyComponent: 'No existing tags...',\r\n loadingDelayMs: 0,\r\n filterExistingTags: (text, tags) =>\r\n tags.filter((tag) => tag.name && tag.name.toLowerCase().startsWith(text)),\r\n maxSuggestions: 5,\r\n addNewOnBlur: false,\r\n translations: defaultTagsTranslations,\r\n minLettersToFetch: 0,\r\n mobileVersionEnabled: true,\r\n closeSuggestionsAfterCreate: false,\r\n };\r\n\r\n private textRef: React.RefObject<TextRaw>;\r\n private suggestionsRef: React.RefObject<HTMLDivElement>;\r\n private isMobile: boolean = false;\r\n\r\n constructor(props: TagsProps<T> & InjectedProps) {\r\n super(props);\r\n this.state = {\r\n ...this.state,\r\n textErrors: [],\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n fetchingExistingTags: false,\r\n textIsValid: false,\r\n fetchedExistingTags: [],\r\n };\r\n this.textRef = React.createRef();\r\n this.suggestionsRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n this.handleLeaveMobileClick = this.handleLeaveMobileClick.bind(this);\r\n if (props.mobileVersionEnabled) {\r\n this.isMobile = require('react-device-detect')?.isMobile;\r\n }\r\n }\r\n\r\n public focus() {\r\n if (this.textRef.current) {\r\n this.textRef.current.focus();\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: TagsProps & InjectedProps) {\r\n if (\r\n oldProps.tags !== this.props.tags ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required\r\n ) {\r\n this.handleErrors(this.props.tags);\r\n }\r\n }\r\n\r\n public handleLeaveMobileClick() {\r\n this.setState({\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n\r\n public handleClickOutside(e: MouseEvent) {\r\n if (\r\n !this.containerRef.current ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__tag__wrapper')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__text-input')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n !this.suggestionsRef.current ||\r\n this.suggestionsRef.current.contains(e.target as HTMLDivElement)\r\n ) {\r\n return;\r\n }\r\n if (this.state.suggestionsVisible) {\r\n this.props.onSuggestionsClosed?.();\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n if (this.props.addNewOnBlur && this.state.value) {\r\n const suggestions = this.getSuggestions();\r\n const existing = suggestions.find((s) => s.name === this.state.value);\r\n if (existing) {\r\n this.onSuggestionSelected(existing, suggestions.length === 1);\r\n } else if (this.props.allowNew) {\r\n this.addNewTag();\r\n }\r\n } /* else if (this.state.value) {\r\n this.setState({ value: '' });\r\n }*/\r\n }\r\n\r\n public componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n document.addEventListener('touchstart', this.handleClickOutside);\r\n this.handleErrors(this.props.tags);\r\n }\r\n\r\n public componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n document.removeEventListener('touchstart', this.handleClickOutside);\r\n super.componentWillUnmount();\r\n }\r\n\r\n public render() {\r\n const translations = this.getTranslations(defaultTagsTranslations);\r\n const textProps = this.props.textProps ? this.props.textProps : {};\r\n const suggestions = this.getSuggestions();\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n const LeaveMobileButton = showMobileVersion ? (\r\n <Button\r\n className=\"tags-input__leaveMobileTagsButton line-height--0\"\r\n onClick={this.handleLeaveMobileClick}\r\n noShadow={true}\r\n unobtrusive={true}\r\n >\r\n <LeftArrowIcon />\r\n </Button>\r\n ) : undefined;\r\n const showInput = Boolean(\r\n (!this.props.maxTags ||\r\n this.props.maxTags > (this.props.tags && this.props.tags.length)) &&\r\n !this.props.readOnly\r\n );\r\n return (\r\n <Portal container={document.body} disablePortal={!showMobileVersion}>\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base tags-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n {\r\n 'tags-input--readOnly': this.props.readOnly,\r\n 'tags-input--hasPlaceholder':\r\n this.props.textProps && this.props.textProps.placeholder,\r\n 'tags-input--mobile': showMobileVersion,\r\n }\r\n )}\r\n ref={this.containerRef}\r\n >\r\n {showMobileVersion && (\r\n <div className=\"tags-input__mobileBackdrop\" />\r\n )}\r\n <div className=\"tags-input__tags__wrapper\">\r\n {!showInput && showMobileVersion && LeaveMobileButton}\r\n {this.props.tags && this.props.tags.length > 0 ? (\r\n <div className=\"tags-input__tag__wrapper\">\r\n {this.props.tags.map((item, index) =>\r\n this.renderTag(item, index)\r\n )}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"tags-input__tag__wrapper\">\r\n <div className=\"tags-input__tag\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n {showInput && (\r\n <div\r\n className={\r\n 'tags-input__tags__wrapper ' +\r\n (this.props.readOnly ? 'filled ' : '')\r\n }\r\n >\r\n <Text\r\n showClearButton={true}\r\n {...textProps}\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n ref={this.textRef}\r\n required={\r\n this.props.tags.length > 0 ? false : this.props.required\r\n }\r\n className={\r\n 'tags-input__text-input ' +\r\n (textProps.className ? textProps.className : '')\r\n }\r\n onKeyDown={this.onKeyDown(suggestions)}\r\n onErrorsChanged={this.onTextErrorsChanged}\r\n onChange={this.onTextChanged}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n value={this.state.value}\r\n readOnly={this.props.readOnly}\r\n showValidation={false}\r\n ignoreContext={true}\r\n validators={this.props.validators}\r\n customValidators={this.props.customValidators}\r\n before={LeaveMobileButton}\r\n />\r\n {this.state.suggestionsVisible &&\r\n this.props.showSuggestions && (\r\n <TagsSuggestions<T>\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n className={classNames(\r\n this.props.tagsSuggestionsClassName\r\n )}\r\n innerRef={this.suggestionsRef}\r\n anchorEl={this.containerRef.current}\r\n allowNew={this.props.allowNew}\r\n preselectedSuggestion={this.state.preselectedSuggestion}\r\n loading={\r\n this.state.fetchingExistingTags || this.props.isLoading\r\n }\r\n LoadingComponent={this.props.suggestionsLoadingComponent}\r\n isVisible={this.state.suggestionsVisible}\r\n EmptyComponent={this.props.suggestionsEmptyComponent}\r\n WaitingForMoreInputComponent={\r\n this.props.waitingForMoreInputComponent\r\n }\r\n isWaitingForMoreInput={\r\n this.state.value.length < this.props.minLettersToFetch\r\n }\r\n tags={suggestions}\r\n onSelected={this.onSuggestionSelected}\r\n value={this.state.value}\r\n AddNewTagComponent={\r\n this.props.allowNew &&\r\n this.state.value !== '' &&\r\n (!this.props.existingTags ||\r\n !this.props.existingTags.find(\r\n (e) => e.name === this.state.value\r\n )) &&\r\n (!this.state.fetchedExistingTags ||\r\n !this.state.fetchedExistingTags.find(\r\n (e) => e.name === this.state.value\r\n )) &&\r\n this.state.textIsValid && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-new-button',\r\n })}\r\n className=\"tags-input__suggestion tags-input__add-new\"\r\n dropdown={true}\r\n onClick={this.addNewTag}\r\n >\r\n {translations.addNew} \"{this.state.value}\"\r\n </Button>\r\n )\r\n }\r\n SuggestionTag={this.props.SuggestionTag}\r\n popperProps={this.props.popperProps}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.state.value !== '' ||\r\n this.state.textIsFocused ||\r\n this.props.readOnly ||\r\n this.props.tags.length >= this.props.maxTags ||\r\n showMobileVersion\r\n ? 'label--focused'\r\n : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n </Portal>\r\n );\r\n }\r\n\r\n private onTextErrorsChanged = (textErrors: ValidationError[]) =>\r\n this.setState(\r\n () => ({ textErrors }),\r\n () => this.handleErrors()\r\n );\r\n\r\n private onFocus = () => {\r\n this.props.onFocus?.();\r\n if (!this.state.suggestionsVisible) {\r\n this.props.onSuggestionsOpened?.();\r\n }\r\n this.fetchExistingTags(this.state.value);\r\n this.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n if (\r\n !showMobileVersion &&\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile\r\n ) {\r\n setTimeout(() => this.textRef.current?.focus(), 100);\r\n }\r\n };\r\n\r\n private onKeyDown = (suggestions: T[]) => async (e: React.KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n if (\r\n e.key === 'Enter' &&\r\n (this.state.value !== '' ||\r\n this.state.preselectedSuggestion !== undefined) &&\r\n this.state.textErrors.length === 0\r\n ) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const existingTag =\r\n this.props.existingTags &&\r\n this.props.existingTags.find((et) => et.name === this.state.value);\r\n if (this.state.preselectedSuggestion !== undefined) {\r\n this.props.onTagsChanged(\r\n this.props.tags.concat(suggestions[this.state.preselectedSuggestion])\r\n );\r\n this.setState({ value: '', preselectedSuggestion: undefined }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (existingTag) {\r\n this.props.onTagsChanged(this.props.tags.concat(existingTag));\r\n this.setState({ value: '' }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (this.props.allowNew) {\r\n await this.addNewTag();\r\n this.handleErrors();\r\n }\r\n }\r\n if (suggestions.length > 0 && this.state.suggestionsVisible) {\r\n if (e.key === 'ArrowUp') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion === 0\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion - 1;\r\n this.setState({ preselectedSuggestion });\r\n } else if (e.key === 'ArrowDown') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? 0\r\n : this.state.preselectedSuggestion === suggestions.length - 1\r\n ? 0\r\n : this.state.preselectedSuggestion + 1;\r\n this.setState({ preselectedSuggestion });\r\n } else {\r\n this.setState({ preselectedSuggestion: undefined });\r\n }\r\n }\r\n };\r\n\r\n private addNewTag = async () => {\r\n const newTag = await this.props.onNewTagAdded(this.state.value);\r\n this.setState({\r\n suggestionsVisible: this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n });\r\n if (newTag) {\r\n this.props.onTagsChanged(\r\n this.props.tags ? this.props.tags.concat(newTag) : [newTag]\r\n );\r\n }\r\n this.setState({ value: '', textErrors: [] }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n };\r\n\r\n private onSuggestionSelected = (tag: T, lastSelected: boolean) => {\r\n const newTags = this.props.tags.concat(tag);\r\n this.props.onTagsChanged(newTags);\r\n const isMax = newTags.length === this.props.maxTags;\r\n const finalValue =\r\n !this.props.allowNew && !isMax && !lastSelected ? this.state.value : '';\r\n this.setState(\r\n {\r\n value: finalValue,\r\n suggestionsVisible:\r\n isMax || this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n preselectedSuggestion: undefined,\r\n textErrors: [],\r\n },\r\n () => {\r\n if (\r\n !this.props.maxTags ||\r\n this.props.tags.length + 1 < this.props.maxTags\r\n ) {\r\n this.fetchExistingTags(finalValue);\r\n }\r\n this.handleErrors();\r\n }\r\n );\r\n };\r\n\r\n private onBlur = () => {\r\n this.props.onBlur?.();\r\n this.setState(\r\n {\r\n textIsFocused: false,\r\n preselectedSuggestion: undefined,\r\n },\r\n () => this.handleErrors()\r\n );\r\n };\r\n\r\n private onTextChanged = (\r\n e: React.ChangeEvent<HTMLInputElement>,\r\n isValid: boolean\r\n ) => {\r\n const value = e.target.value;\r\n this.setState(\r\n () => ({\r\n value,\r\n isValid: isValid,\r\n textIsValid: isValid,\r\n suggestionsVisible: true,\r\n }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(e.target.value);\r\n };\r\n\r\n private handleErrors = (tags: T[] = this.props.tags) => {\r\n let errors = this.getErrors(tags);\r\n if (errors.length > 0) {\r\n this.setInvalid(errors);\r\n } else {\r\n this.setValid();\r\n }\r\n };\r\n\r\n private getErrors(tags: T[]) {\r\n let errors = [];\r\n if (tags.length < this.props.maxTags) {\r\n errors = errors.concat(this.state.textErrors);\r\n }\r\n if (this.state.value !== '' && tags.length === 0 && this.props.required) {\r\n errors = errors.concat(\r\n this.getTranslations(this.props.translations).required\r\n );\r\n }\r\n if (this.state.value && this.props.allowNew && !this.state.textIsFocused) {\r\n errors = errors.concat(this.props.valueNotAddedError);\r\n }\r\n if (this.props.maxTags < (this.props.tags && this.props.tags.length)) {\r\n errors = errors.concat(this.props.maxTagsSurpassedError);\r\n }\r\n return errors.filter((i) => i);\r\n }\r\n\r\n private fetchExistingTags(startsWith: string = '') {\r\n if (\r\n this.props.fetchExistingTags &&\r\n startsWith.length >= this.props.minLettersToFetch\r\n ) {\r\n const timer = setTimeout(\r\n () => this.setState(() => ({ fetchingExistingTags: true })),\r\n this.props.loadingDelayMs\r\n );\r\n this.props.fetchExistingTags(startsWith).then((fetchedExistingTags) => {\r\n clearTimeout(timer);\r\n this.setState(() => ({\r\n fetchedExistingTags,\r\n fetchingExistingTags: false,\r\n }));\r\n });\r\n }\r\n }\r\n\r\n private getSuggestions() {\r\n const existingTags: T[] = []\r\n .concat(this.props.existingTags ? this.props.existingTags : [])\r\n .concat(\r\n this.state.fetchedExistingTags ? this.state.fetchedExistingTags : []\r\n );\r\n const filteredTags = this.props.filterExistingTags(\r\n this.state.value ? this.state.value.toLowerCase() : '',\r\n existingTags\r\n );\r\n let suggestions = filteredTags\r\n .filter(\r\n (tag) =>\r\n this.props.allowSameTagMultipleTimes ||\r\n !this.props.tags.some((t) => t.id === tag.id)\r\n )\r\n .slice(0, this.props.maxSuggestions);\r\n return suggestions;\r\n }\r\n\r\n private renderTag(tag: T, index: number) {\r\n const body = (\r\n <>\r\n {tag.name}\r\n {!this.props.readOnly && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-tag-' + index.toString(),\r\n })}\r\n circular={true}\r\n blank={true}\r\n onClick={this.tagRemoveClick(tag)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n Component={TagButtonComponent}\r\n preventsDefault={false}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </>\r\n );\r\n const className = classNames('tags-input__tag', {\r\n 'tags-input__tag-chip': this.props.showChips,\r\n });\r\n if (this.props.onTagClick) {\r\n return (\r\n <Button\r\n onClick={this.tagClick(tag)}\r\n small={true}\r\n className={className}\r\n key={index}\r\n >\r\n {body}\r\n </Button>\r\n );\r\n }\r\n return (\r\n <div onClick={this.tagClick(tag)} className={className} key={index}>\r\n {body}\r\n </div>\r\n );\r\n }\r\n\r\n private tagClick = (tag: T) => () => {\r\n this.props.onTagClick && this.props.onTagClick(tag);\r\n };\r\n\r\n private tagRemoveClick = (tag: T) => (e: React.MouseEvent<HTMLElement>) => {\r\n e.stopPropagation();\r\n const newTags = this.props.tags.filter((sv) => sv.id !== tag.id);\r\n /*if (newTags.length === 0) {\r\n setTimeout(() => this.focus(), 50);\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n });*/\r\n this.props.onTagsChanged && this.props.onTagsChanged(newTags);\r\n this.handleErrors(newTags);\r\n // this.fetchExistingTags();\r\n };\r\n}\r\n\r\ninterface TagsFinal {\r\n <T extends Tag = Tag>(item: TagsProps<T>): React.ReactElement;\r\n defaultProps?: Partial<TagsProps>;\r\n}\r\n\r\nexport const Tags = withThemeContext<TagsProps, InstanceType<typeof TagsRaw>>(\r\n // tslint:disable-next-line: no-any\r\n withFormContext<TagsProps>(TagsRaw),\r\n 'tags'\r\n) as unknown as TagsFinal;\r\n\r\nexport default Tags;\r\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAGA,IAAAG,UAAA,GAAAH,OAAA;AAOA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAC,sBAAA,CAAAN,OAAA;AAGA,IAAAO,gBAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAF,sBAAA,CAAAN,OAAA;AACA,IAAAS,iBAAA,GAAAT,OAAA;AAEA,IAAAU,eAAA,GAAAJ,sBAAA,CAAAN,OAAA;AACA,IAAAW,OAAA,GAAAL,sBAAA,CAAAN,OAAA;AAA0C,SAAAM,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAjB,wBAAAa,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAV,GAAA,IAAAa,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAb,GAAA,KAAAS,MAAA,CAAAT,GAAA,IAAAa,MAAA,CAAAb,GAAA,gBAAAS,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAH,SAAA;AAAA,SAAAI,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAArB,MAAA,CAAAqB,IAAA,CAAAF,MAAA,OAAAnB,MAAA,CAAAsB,qBAAA,QAAAC,OAAA,GAAAvB,MAAA,CAAAsB,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAzB,MAAA,CAAAE,wBAAA,CAAAiB,MAAA,EAAAM,GAAA,EAAAC,UAAA,OAAAL,IAAA,CAAAM,IAAA,CAAAV,KAAA,CAAAI,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAO,cAAAhB,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAK,OAAA,CAAAlB,MAAA,CAAAgB,MAAA,OAAAa,OAAA,WAAA1B,GAAA,IAAA2B,eAAA,CAAAlB,MAAA,EAAAT,GAAA,EAAAa,MAAA,CAAAb,GAAA,SAAAH,MAAA,CAAA+B,yBAAA,GAAA/B,MAAA,CAAAgC,gBAAA,CAAApB,MAAA,EAAAZ,MAAA,CAAA+B,yBAAA,CAAAf,MAAA,KAAAE,OAAA,CAAAlB,MAAA,CAAAgB,MAAA,GAAAa,OAAA,WAAA1B,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAW,MAAA,EAAAT,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAAc,MAAA,EAAAb,GAAA,iBAAAS,MAAA;AAAA,SAAAkB,gBAAA3C,GAAA,EAAAgB,GAAA,EAAA8B,KAAA,IAAA9B,GAAA,GAAA+B,cAAA,CAAA/B,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAA8B,KAAA,EAAAA,KAAA,EAAAP,UAAA,QAAAS,YAAA,QAAAC,QAAA,oBAAAjD,GAAA,CAAAgB,GAAA,IAAA8B,KAAA,WAAA9C,GAAA;AAAA,SAAA+C,eAAAG,GAAA,QAAAlC,GAAA,GAAAmC,YAAA,CAAAD,GAAA,2BAAAlC,GAAA,gBAAAA,GAAA,GAAAoC,MAAA,CAAApC,GAAA;AAAA,SAAAmC,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAApC,IAAA,CAAAkC,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAC,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA,KAtB1C;AAAA,IAIYS,QAAQ,YAARA,QAAQA,CAAAC,KAAA;EAAA,oBAAA7E,KAAA,CAAA8E,aAAA,QAAAD,KAAA,eAAA7E,KAAA,CAAA8E,aAAA;IAAAC,CAAA;EAAA;AAAA;AAARH,QAAQ,CAAAI,YAAA;EAAAC,KAAA;EAAAC,KAAA;EAAAC,MAAA;EAAAC,OAAA;AAAA;AAAA,IACRC,aAAa,YAAbA,aAAaA,CAAAR,KAAA;EAAA,oBAAA7E,KAAA,CAAA8E,aAAA,QAAAD,KAAA,eAAA7E,KAAA,CAAA8E,aAAA;IAAAC,CAAA;EAAA;AAAA;AAAbM,aAAa,CAAAL,YAAA;EAAAC,KAAA;EAAAC,KAAA;EAAAC,MAAA;EAAAC,OAAA;AAAA;AAmBzB;;AAMO,MAAME,uBAAuB,GAAA/B,aAAA,CAAAA,aAAA,KAC/BgC,kCAAuB;EAC1BC,MAAM,EAAE;AAAS,EAClB;AAACC,OAAA,CAAAH,uBAAA,GAAAA,uBAAA;AAmDF,MAAMI,kBAAkD,GAAIC,CAAC,iBAC3D3F,KAAA,CAAA8E,aAAA;EAAGc,SAAS,EAAED,CAAC,CAACC,SAAU;EAACC,EAAE,EAAEF,CAAC,CAACE,EAAG;EAACC,OAAO,EAAEH,CAAC,CAACG;AAAQ,GACrDH,CAAC,CAACI,QACF,CACJ;AAEM,MAAMC,OAAO,SAA8BC,oBAAS,CAKzD;EAkCAC,WAAWA,CAACrB,KAAmC,EAAE;IAAA,IAAAsB,KAAA;IAC/C,KAAK,CAACtB,KAAK,CAAC;IAAAsB,KAAA,GAAAC,IAAA;IAAA,KALNC,OAAO;IAAA,KACPC,cAAc;IAAA,KACdC,QAAQ,GAAY,KAAK;IAAA,KA+QzBC,mBAAmB,GAAIC,UAA6B,IAC1D,IAAI,CAACC,QAAQ,CACX,OAAO;MAAED;IAAW,CAAC,CAAC,EACtB,MAAM,IAAI,CAACE,YAAY,CAAC,CAC1B,CAAC;IAAA,KAEKC,OAAO,GAAG,MAAM;MAAA,IAAAC,mBAAA,EAAAC,WAAA;MACtB,CAAAD,mBAAA,IAAAC,WAAA,OAAI,CAACjC,KAAK,EAAC+B,OAAO,cAAAC,mBAAA,uBAAlBA,mBAAA,CAAA5E,IAAA,CAAA6E,WAAqB,CAAC;MACtB,IAAI,CAAC,IAAI,CAACC,KAAK,CAACC,kBAAkB,EAAE;QAAA,IAAAC,qBAAA,EAAAC,YAAA;QAClC,CAAAD,qBAAA,IAAAC,YAAA,OAAI,CAACrC,KAAK,EAACsC,mBAAmB,cAAAF,qBAAA,uBAA9BA,qBAAA,CAAAhF,IAAA,CAAAiF,YAAiC,CAAC;MACpC;MACA,IAAI,CAACE,iBAAiB,CAAC,IAAI,CAACL,KAAK,CAACnD,KAAK,CAAC;MACxC,IAAI,CAAC8C,QAAQ,CACX,OAAO;QAAEW,aAAa,EAAE,IAAI;QAAEL,kBAAkB,EAAE,IAAI;QAAEM,OAAO,EAAE;MAAK,CAAC,CAAC,EACxE,MAAM,IAAI,CAACX,YAAY,CAAC,CAC1B,CAAC;MACD,MAAMY,iBAAiB,GACrB,IAAI,CAAC1C,KAAK,CAAC2C,oBAAoB,IAC/B,IAAI,CAACjB,QAAQ,KACZ,IAAI,CAACQ,KAAK,CAACM,aAAa,IAAI,IAAI,CAACN,KAAK,CAACC,kBAAkB,CAAC;MAC7D,IACE,CAACO,iBAAiB,IAClB,IAAI,CAAC1C,KAAK,CAAC2C,oBAAoB,IAC/B,IAAI,CAACjB,QAAQ,EACb;QACAkB,UAAU,CAAC;UAAA,IAAAC,qBAAA;UAAA,QAAAA,qBAAA,GAAM,IAAI,CAACrB,OAAO,CAACsB,OAAO,cAAAD,qBAAA,uBAApBA,qBAAA,CAAsBE,KAAK,CAAC,CAAC;QAAA,GAAE,GAAG,CAAC;MACtD;IACF,CAAC;IAAA,KAEOC,SAAS,GAAIC,WAAgB,IAAK,MAAOC,CAAsB,IAAK;MAC1E,IAAIA,CAAC,CAACjG,GAAG,KAAK,KAAK,EAAE;QACnB,IAAI,CAAC4E,QAAQ,CAAC;UACZM,kBAAkB,EAAE,KAAK;UACzBgB,qBAAqB,EAAExD;QACzB,CAAC,CAAC;MACJ;MACA,IACEuD,CAAC,CAACjG,GAAG,KAAK,OAAO,KAChB,IAAI,CAACiF,KAAK,CAACnD,KAAK,KAAK,EAAE,IACtB,IAAI,CAACmD,KAAK,CAACiB,qBAAqB,KAAKxD,SAAS,CAAC,IACjD,IAAI,CAACuC,KAAK,CAACN,UAAU,CAAC/D,MAAM,KAAK,CAAC,EAClC;QACAqF,CAAC,CAACE,cAAc,CAAC,CAAC;QAClBF,CAAC,CAACG,eAAe,CAAC,CAAC;QACnB,MAAMC,WAAW,GACf,IAAI,CAACtD,KAAK,CAACuD,YAAY,IACvB,IAAI,CAACvD,KAAK,CAACuD,YAAY,CAACC,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,IAAI,KAAK,IAAI,CAACxB,KAAK,CAACnD,KAAK,CAAC;QACpE,IAAI,IAAI,CAACmD,KAAK,CAACiB,qBAAqB,KAAKxD,SAAS,EAAE;UAClD,IAAI,CAACK,KAAK,CAAC2D,aAAa,CACtB,IAAI,CAAC3D,KAAK,CAAC4D,IAAI,CAACC,MAAM,CAACZ,WAAW,CAAC,IAAI,CAACf,KAAK,CAACiB,qBAAqB,CAAC,CACtE,CAAC;UACD,IAAI,CAACtB,QAAQ,CAAC;YAAE9C,KAAK,EAAE,EAAE;YAAEoE,qBAAqB,EAAExD;UAAU,CAAC,EAAE,MAAM;YACnE,IAAI,CAAC4C,iBAAiB,CAAC,CAAC;YACxB,IAAI,CAACT,YAAY,CAAC,CAAC;UACrB,CAAC,CAAC;QACJ,CAAC,MAAM,IAAIwB,WAAW,EAAE;UACtB,IAAI,CAACtD,KAAK,CAAC2D,aAAa,CAAC,IAAI,CAAC3D,KAAK,CAAC4D,IAAI,CAACC,MAAM,CAACP,WAAW,CAAC,CAAC;UAC7D,IAAI,CAACzB,QAAQ,CAAC;YAAE9C,KAAK,EAAE;UAAG,CAAC,EAAE,MAAM;YACjC,IAAI,CAACwD,iBAAiB,CAAC,CAAC;YACxB,IAAI,CAACT,YAAY,CAAC,CAAC;UACrB,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI,IAAI,CAAC9B,KAAK,CAAC8D,QAAQ,EAAE;UAC9B,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC;UACtB,IAAI,CAACjC,YAAY,CAAC,CAAC;QACrB;MACF;MACA,IAAImB,WAAW,CAACpF,MAAM,GAAG,CAAC,IAAI,IAAI,CAACqE,KAAK,CAACC,kBAAkB,EAAE;QAC3D,IAAIe,CAAC,CAACjG,GAAG,KAAK,SAAS,EAAE;UACvB,MAAMkG,qBAAqB,GACzB,IAAI,CAACjB,KAAK,CAACiB,qBAAqB,KAAKxD,SAAS,GAC1CsD,WAAW,CAACpF,MAAM,GAAG,CAAC,GACtB,IAAI,CAACqE,KAAK,CAACiB,qBAAqB,KAAK,CAAC,GACtCF,WAAW,CAACpF,MAAM,GAAG,CAAC,GACtB,IAAI,CAACqE,KAAK,CAACiB,qBAAqB,GAAG,CAAC;UAC1C,IAAI,CAACtB,QAAQ,CAAC;YAAEsB;UAAsB,CAAC,CAAC;QAC1C,CAAC,MAAM,IAAID,CAAC,CAACjG,GAAG,KAAK,WAAW,EAAE;UAChC,MAAMkG,qBAAqB,GACzB,IAAI,CAACjB,KAAK,CAACiB,qBAAqB,KAAKxD,SAAS,GAC1C,CAAC,GACD,IAAI,CAACuC,KAAK,CAACiB,qBAAqB,KAAKF,WAAW,CAACpF,MAAM,GAAG,CAAC,GAC3D,CAAC,GACD,IAAI,CAACqE,KAAK,CAACiB,qBAAqB,GAAG,CAAC;UAC1C,IAAI,CAACtB,QAAQ,CAAC;YAAEsB;UAAsB,CAAC,CAAC;QAC1C,CAAC,MAAM;UACL,IAAI,CAACtB,QAAQ,CAAC;YAAEsB,qBAAqB,EAAExD;UAAU,CAAC,CAAC;QACrD;MACF;IACF,CAAC;IAAA,KAEOoE,SAAS,GAAG,YAAY;MAC9B,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAChE,KAAK,CAACiE,aAAa,CAAC,IAAI,CAAC/B,KAAK,CAACnD,KAAK,CAAC;MAC/D,IAAI,CAAC8C,QAAQ,CAAC;QACZM,kBAAkB,EAAE,IAAI,CAACnC,KAAK,CAACkE,2BAA2B,GACtD,KAAK,GACL,IAAI,CAAChC,KAAK,CAACC;MACjB,CAAC,CAAC;MACF,IAAI6B,MAAM,EAAE;QACV,IAAI,CAAChE,KAAK,CAAC2D,aAAa,CACtB,IAAI,CAAC3D,KAAK,CAAC4D,IAAI,GAAG,IAAI,CAAC5D,KAAK,CAAC4D,IAAI,CAACC,MAAM,CAACG,MAAM,CAAC,GAAG,CAACA,MAAM,CAC5D,CAAC;MACH;MACA,IAAI,CAACnC,QAAQ,CAAC;QAAE9C,KAAK,EAAE,EAAE;QAAE6C,UAAU,EAAE;MAAG,CAAC,EAAE,MAAM;QACjD,IAAI,CAACW,iBAAiB,CAAC,CAAC;QACxB,IAAI,CAACT,YAAY,CAAC,CAAC;MACrB,CAAC,CAAC;IACJ,CAAC;IAAA,KAEOqC,oBAAoB,GAAG,CAACC,GAAM,EAAEC,YAAqB,KAAK;MAChE,MAAMC,OAAO,GAAG,IAAI,CAACtE,KAAK,CAAC4D,IAAI,CAACC,MAAM,CAACO,GAAG,CAAC;MAC3C,IAAI,CAACpE,KAAK,CAAC2D,aAAa,CAACW,OAAO,CAAC;MACjC,MAAMC,KAAK,GAAGD,OAAO,CAACzG,MAAM,KAAK,IAAI,CAACmC,KAAK,CAACwE,OAAO;MACnD,MAAMC,UAAU,GACd,CAAC,IAAI,CAACzE,KAAK,CAAC8D,QAAQ,IAAI,CAACS,KAAK,IAAI,CAACF,YAAY,GAAG,IAAI,CAACnC,KAAK,CAACnD,KAAK,GAAG,EAAE;MACzE,IAAI,CAAC8C,QAAQ,CACX;QACE9C,KAAK,EAAE0F,UAAU;QACjBtC,kBAAkB,EAChBoC,KAAK,IAAI,IAAI,CAACvE,KAAK,CAACkE,2BAA2B,GAC3C,KAAK,GACL,IAAI,CAAChC,KAAK,CAACC,kBAAkB;QACnCgB,qBAAqB,EAAExD,SAAS;QAChCiC,UAAU,EAAE;MACd,CAAC,EACD,MAAM;QACJ,IACE,CAAC,IAAI,CAAC5B,KAAK,CAACwE,OAAO,IACnB,IAAI,CAACxE,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,GAAG,CAAC,GAAG,IAAI,CAACmC,KAAK,CAACwE,OAAO,EAC/C;UACA,IAAI,CAACjC,iBAAiB,CAACkC,UAAU,CAAC;QACpC;QACA,IAAI,CAAC3C,YAAY,CAAC,CAAC;MACrB,CACF,CAAC;IACH,CAAC;IAAA,KAEO4C,MAAM,GAAG,MAAM;MAAA,IAAAC,kBAAA,EAAAC,YAAA;MACrB,CAAAD,kBAAA,IAAAC,YAAA,OAAI,CAAC5E,KAAK,EAAC0E,MAAM,cAAAC,kBAAA,uBAAjBA,kBAAA,CAAAvH,IAAA,CAAAwH,YAAoB,CAAC;MACrB,IAAI,CAAC/C,QAAQ,CACX;QACEW,aAAa,EAAE,KAAK;QACpBW,qBAAqB,EAAExD;MACzB,CAAC,EACD,MAAM,IAAI,CAACmC,YAAY,CAAC,CAC1B,CAAC;IACH,CAAC;IAAA,KAEO+C,aAAa,GAAG,CACtB3B,CAAsC,EACtC4B,OAAgB,KACb;MACH,MAAM/F,KAAK,GAAGmE,CAAC,CAACxF,MAAM,CAACqB,KAAK;MAC5B,IAAI,CAAC8C,QAAQ,CACX,OAAO;QACL9C,KAAK;QACL+F,OAAO,EAAEA,OAAO;QAChBC,WAAW,EAAED,OAAO;QACpB3C,kBAAkB,EAAE;MACtB,CAAC,CAAC,EACF,MAAM,IAAI,CAACL,YAAY,CAAC,CAC1B,CAAC;MACD,IAAI,CAACS,iBAAiB,CAACW,CAAC,CAACxF,MAAM,CAACqB,KAAK,CAAC;IACxC,CAAC;IAAA,KAEO+C,YAAY,GAAG,YAAiC;MAAA,IAAhC8B,IAAS,GAAAhG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA+B,SAAA,GAAA/B,SAAA,MAAG0D,KAAI,CAACtB,KAAK,CAAC4D,IAAI;MACjD,IAAIoB,MAAM,GAAG1D,KAAI,CAAC2D,SAAS,CAACrB,IAAI,CAAC;MACjC,IAAIoB,MAAM,CAACnH,MAAM,GAAG,CAAC,EAAE;QACrByD,KAAI,CAAC4D,UAAU,CAACF,MAAM,CAAC;MACzB,CAAC,MAAM;QACL1D,KAAI,CAAC6D,QAAQ,CAAC,CAAC;MACjB;IACF,CAAC;IAAA,KAuGOC,QAAQ,GAAIhB,GAAM,IAAK,MAAM;MACnC,IAAI,CAACpE,KAAK,CAACqF,UAAU,IAAI,IAAI,CAACrF,KAAK,CAACqF,UAAU,CAACjB,GAAG,CAAC;IACrD,CAAC;IAAA,KAEOkB,cAAc,GAAIlB,GAAM,IAAMlB,CAAgC,IAAK;MACzEA,CAAC,CAACG,eAAe,CAAC,CAAC;MACnB,MAAMiB,OAAO,GAAG,IAAI,CAACtE,KAAK,CAAC4D,IAAI,CAACtF,MAAM,CAAEiH,EAAE,IAAKA,EAAE,CAACvE,EAAE,KAAKoD,GAAG,CAACpD,EAAE,CAAC;MAChE;AACJ;AACA;AACA;AACA;AACA;MACI,IAAI,CAAChB,KAAK,CAAC2D,aAAa,IAAI,IAAI,CAAC3D,KAAK,CAAC2D,aAAa,CAACW,OAAO,CAAC;MAC7D,IAAI,CAACxC,YAAY,CAACwC,OAAO,CAAC;MAC1B;IACF,CAAC;IA5iBC,IAAI,CAACpC,KAAK,GAAAxD,aAAA,CAAAA,aAAA,KACL,IAAI,CAACwD,KAAK;MACbN,UAAU,EAAE,EAAE;MACdY,aAAa,EAAE,KAAK;MACpBL,kBAAkB,EAAE,KAAK;MACzBqD,oBAAoB,EAAE,KAAK;MAC3BT,WAAW,EAAE,KAAK;MAClBU,mBAAmB,EAAE;IAAE,EACxB;IACD,IAAI,CAACjE,OAAO,gBAAGrG,KAAK,CAACuK,SAAS,CAAC,CAAC;IAChC,IAAI,CAACjE,cAAc,gBAAGtG,KAAK,CAACuK,SAAS,CAAC,CAAC;IACvC,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAClI,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACmI,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACnI,IAAI,CAAC,IAAI,CAAC;IACpE,IAAIuC,KAAK,CAAC2C,oBAAoB,EAAE;MAAA,IAAAkD,QAAA;MAC9B,IAAI,CAACnE,QAAQ,IAAAmE,QAAA,GAAGxK,OAAO,CAAC,qBAAqB,CAAC,cAAAwK,QAAA,uBAA9BA,QAAA,CAAgCnE,QAAQ;IAC1D;EACF;EAEOqB,KAAKA,CAAA,EAAG;IACb,IAAI,IAAI,CAACvB,OAAO,CAACsB,OAAO,EAAE;MACxB,IAAI,CAACtB,OAAO,CAACsB,OAAO,CAACC,KAAK,CAAC,CAAC;IAC9B;EACF;EAEO+C,kBAAkBA,CAACC,QAAmC,EAAE;IAC7D,IACEA,QAAQ,CAACnC,IAAI,KAAK,IAAI,CAAC5D,KAAK,CAAC4D,IAAI,IACjCmC,QAAQ,CAACC,UAAU,KAAK,IAAI,CAAChG,KAAK,CAACgG,UAAU,IAC7CD,QAAQ,CAACE,gBAAgB,KAAK,IAAI,CAACjG,KAAK,CAACiG,gBAAgB,IACzDF,QAAQ,CAACG,QAAQ,KAAK,IAAI,CAAClG,KAAK,CAACkG,QAAQ,EACzC;MACA,IAAI,CAACpE,YAAY,CAAC,IAAI,CAAC9B,KAAK,CAAC4D,IAAI,CAAC;IACpC;EACF;EAEOgC,sBAAsBA,CAAA,EAAG;IAC9B,IAAI,CAAC/D,QAAQ,CAAC;MACZW,aAAa,EAAE,KAAK;MACpBL,kBAAkB,EAAE,KAAK;MACzBgB,qBAAqB,EAAExD;IACzB,CAAC,CAAC;EACJ;EAEOgG,kBAAkBA,CAACzC,CAAa,EAAE;IAAA,IAAAiD,qBAAA,EAAAC,sBAAA;IACvC,IACE,CAAC,IAAI,CAACC,YAAY,CAACvD,OAAO,KAAAqD,qBAAA,GAC1B,IAAI,CAACE,YAAY,CAACvD,OAAO,CACtBwD,aAAa,CAAC,2BAA2B,CAAC,cAAAH,qBAAA,eAD7CA,qBAAA,CAEII,QAAQ,CAACrD,CAAC,CAACxF,MAAwB,CAAC,KAAA0I,sBAAA,GACxC,IAAI,CAACC,YAAY,CAACvD,OAAO,CACtBwD,aAAa,CAAC,yBAAyB,CAAC,cAAAF,sBAAA,eAD3CA,sBAAA,CAEIG,QAAQ,CAACrD,CAAC,CAACxF,MAAwB,CAAC,IACxC,CAAC,IAAI,CAAC+D,cAAc,CAACqB,OAAO,IAC5B,IAAI,CAACrB,cAAc,CAACqB,OAAO,CAACyD,QAAQ,CAACrD,CAAC,CAACxF,MAAwB,CAAC,EAChE;MACA;IACF;IACA,IAAI,IAAI,CAACwE,KAAK,CAACC,kBAAkB,EAAE;MAAA,IAAAqE,sBAAA,EAAAC,YAAA;MACjC,CAAAD,sBAAA,IAAAC,YAAA,OAAI,CAACzG,KAAK,EAAC0G,mBAAmB,cAAAF,sBAAA,uBAA9BA,sBAAA,CAAApJ,IAAA,CAAAqJ,YAAiC,CAAC;IACpC;IACA,IAAI,CAAC5E,QAAQ,CAAC;MACZM,kBAAkB,EAAE,KAAK;MACzBgB,qBAAqB,EAAExD;IACzB,CAAC,CAAC;IACF,IAAI,IAAI,CAACK,KAAK,CAAC2G,YAAY,IAAI,IAAI,CAACzE,KAAK,CAACnD,KAAK,EAAE;MAC/C,MAAMkE,WAAW,GAAG,IAAI,CAAC2D,cAAc,CAAC,CAAC;MACzC,MAAMC,QAAQ,GAAG5D,WAAW,CAACO,IAAI,CAAEsD,CAAC,IAAKA,CAAC,CAACpD,IAAI,KAAK,IAAI,CAACxB,KAAK,CAACnD,KAAK,CAAC;MACrE,IAAI8H,QAAQ,EAAE;QACZ,IAAI,CAAC1C,oBAAoB,CAAC0C,QAAQ,EAAE5D,WAAW,CAACpF,MAAM,KAAK,CAAC,CAAC;MAC/D,CAAC,MAAM,IAAI,IAAI,CAACmC,KAAK,CAAC8D,QAAQ,EAAE;QAC9B,IAAI,CAACC,SAAS,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;AACN;AACA;EACE;;EAEOgD,iBAAiBA,CAAA,EAAG;IACzBC,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACtB,kBAAkB,CAAC;IAC/DqB,QAAQ,CAACC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACtB,kBAAkB,CAAC;IAChE,IAAI,CAAC7D,YAAY,CAAC,IAAI,CAAC9B,KAAK,CAAC4D,IAAI,CAAC;EACpC;EAEOsD,oBAAoBA,CAAA,EAAG;IAC5BF,QAAQ,CAACG,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACxB,kBAAkB,CAAC;IAClEqB,QAAQ,CAACG,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACxB,kBAAkB,CAAC;IACnE,KAAK,CAACuB,oBAAoB,CAAC,CAAC;EAC9B;EAEOE,MAAMA,CAAA,EAAG;IACd,MAAMC,YAAY,GAAG,IAAI,CAACC,eAAe,CAAC7G,uBAAuB,CAAC;IAClE,MAAM8G,SAAS,GAAG,IAAI,CAACvH,KAAK,CAACuH,SAAS,GAAG,IAAI,CAACvH,KAAK,CAACuH,SAAS,GAAG,CAAC,CAAC;IAClE,MAAMtE,WAAW,GAAG,IAAI,CAAC2D,cAAc,CAAC,CAAC;IACzC,MAAMlE,iBAAiB,GACrB,IAAI,CAAC1C,KAAK,CAAC2C,oBAAoB,IAC/B,IAAI,CAACjB,QAAQ,KACZ,IAAI,CAACQ,KAAK,CAACM,aAAa,IAAI,IAAI,CAACN,KAAK,CAACC,kBAAkB,CAAC;IAC7D,MAAMqF,iBAAiB,GAAG9E,iBAAiB,gBACzCvH,KAAA,CAAA8E,aAAA,CAACxE,OAAA,CAAAgM,MAAM;MACL1G,SAAS,EAAC,kDAAkD;MAC5DE,OAAO,EAAE,IAAI,CAAC2E,sBAAuB;MACrC8B,QAAQ,EAAE,IAAK;MACfC,WAAW,EAAE;IAAK,gBAElBxM,KAAA,CAAA8E,aAAA,CAACO,aAAa,MAAE,CACV,CAAC,GACPb,SAAS;IACb,MAAMiI,SAAS,GAAGC,OAAO,CACvB,CAAC,CAAC,IAAI,CAAC7H,KAAK,CAACwE,OAAO,IAClB,IAAI,CAACxE,KAAK,CAACwE,OAAO,IAAI,IAAI,CAACxE,KAAK,CAAC4D,IAAI,IAAI,IAAI,CAAC5D,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,CAAC,KAChE,CAAC,IAAI,CAACmC,KAAK,CAAC8H,QAChB,CAAC;IACD,oBACE3M,KAAA,CAAA8E,aAAA,CAACjE,OAAA,CAAAG,OAAM;MAAC4L,SAAS,EAAEf,QAAQ,CAACgB,IAAK;MAACC,aAAa,EAAE,CAACvF;IAAkB,gBAClEvH,KAAA,CAAA8E,aAAA,CAAC3E,WAAA,CAAA4M,UAAU;MAACC,KAAK,EAAE,IAAI,CAACnI,KAAK,CAACmI,KAAM;MAACC,OAAO,EAAE,IAAI,CAACpI,KAAK,CAACoI;IAAQ,gBAC/DjN,KAAA,CAAA8E,aAAA,QAAA1C,QAAA,KACO,IAAI,CAACyC,KAAK,CAACgB,EAAE,IAAI;MACpBA,EAAE,EAAE,IAAI,CAAChB,KAAK,CAACgB;IACjB,CAAC;MACDD,SAAS,EAAE,IAAAsH,mBAAU,EACnB,wBAAwB,EACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC,EACzB,IAAI,CAACtI,KAAK,CAACe,SAAS,EACpB;QACE,sBAAsB,EAAE,IAAI,CAACf,KAAK,CAAC8H,QAAQ;QAC3C,4BAA4B,EAC1B,IAAI,CAAC9H,KAAK,CAACuH,SAAS,IAAI,IAAI,CAACvH,KAAK,CAACuH,SAAS,CAACgB,WAAW;QAC1D,oBAAoB,EAAE7F;MACxB,CACF,CAAE;MACF8F,GAAG,EAAE,IAAI,CAACnC;IAAa,IAEtB3D,iBAAiB,iBAChBvH,KAAA,CAAA8E,aAAA;MAAKc,SAAS,EAAC;IAA4B,CAAE,CAC9C,eACD5F,KAAA,CAAA8E,aAAA;MAAKc,SAAS,EAAC;IAA2B,GACvC,CAAC6G,SAAS,IAAIlF,iBAAiB,IAAI8E,iBAAiB,EACpD,IAAI,CAACxH,KAAK,CAAC4D,IAAI,IAAI,IAAI,CAAC5D,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,GAAG,CAAC,gBAC5C1C,KAAA,CAAA8E,aAAA;MAAKc,SAAS,EAAC;IAA0B,GACtC,IAAI,CAACf,KAAK,CAAC4D,IAAI,CAAC6E,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAC/B,IAAI,CAACC,SAAS,CAACF,IAAI,EAAEC,KAAK,CAC5B,CACG,CAAC,GAEN,IAAI,CAAC3I,KAAK,CAAC8H,QAAQ,iBACjB3M,KAAA,CAAA8E,aAAA;MAAKc,SAAS,EAAC;IAA0B,gBACvC5F,KAAA,CAAA8E,aAAA;MAAKc,SAAS,EAAC;IAAiB,GAC7B,IAAI,CAACf,KAAK,CAAC6I,wBACT,CACF,CAGN,CAAC,EACLjB,SAAS,iBACRzM,KAAA,CAAA8E,aAAA;MACEc,SAAS,EACP,4BAA4B,IAC3B,IAAI,CAACf,KAAK,CAAC8H,QAAQ,GAAG,SAAS,GAAG,EAAE;IACtC,gBAED3M,KAAA,CAAA8E,aAAA,CAAC1E,KAAA,CAAAuN,IAAI,EAAAvL,QAAA;MACHwL,eAAe,EAAE;IAAK,GAClBxB,SAAS,EACR,IAAI,CAACvH,KAAK,CAACgB,EAAE,IAAI;MACpBA,EAAE,EAAE,IAAI,CAAChB,KAAK,CAACgB,EAAE,GAAG;IACtB,CAAC;MACDwH,GAAG,EAAE,IAAI,CAAChH,OAAQ;MAClB0E,QAAQ,EACN,IAAI,CAAClG,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAACmC,KAAK,CAACkG,QACjD;MACDnF,SAAS,EACP,yBAAyB,IACxBwG,SAAS,CAACxG,SAAS,GAAGwG,SAAS,CAACxG,SAAS,GAAG,EAAE,CAChD;MACDiC,SAAS,EAAE,IAAI,CAACA,SAAS,CAACC,WAAW,CAAE;MACvC+F,eAAe,EAAE,IAAI,CAACrH,mBAAoB;MAC1CsH,QAAQ,EAAE,IAAI,CAACpE,aAAc;MAC7B9C,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtB2C,MAAM,EAAE,IAAI,CAACA,MAAO;MACpB3F,KAAK,EAAE,IAAI,CAACmD,KAAK,CAACnD,KAAM;MACxB+I,QAAQ,EAAE,IAAI,CAAC9H,KAAK,CAAC8H,QAAS;MAC9BoB,cAAc,EAAE,KAAM;MACtBC,aAAa,EAAE,IAAK;MACpBnD,UAAU,EAAE,IAAI,CAAChG,KAAK,CAACgG,UAAW;MAClCC,gBAAgB,EAAE,IAAI,CAACjG,KAAK,CAACiG,gBAAiB;MAC9CmD,MAAM,EAAE5B;IAAkB,EAC3B,CAAC,EACD,IAAI,CAACtF,KAAK,CAACC,kBAAkB,IAC5B,IAAI,CAACnC,KAAK,CAACqJ,eAAe,iBACxBlO,KAAA,CAAA8E,aAAA,CAACvE,gBAAA,CAAAS,OAAe,EAAAoB,QAAA,KACT,IAAI,CAACyC,KAAK,CAACgB,EAAE,IAAI;MACpBA,EAAE,EAAE,IAAI,CAAChB,KAAK,CAACgB,EAAE,GAAG;IACtB,CAAC;MACDD,SAAS,EAAE,IAAAsH,mBAAU,EACnB,IAAI,CAACrI,KAAK,CAACsJ,wBACb,CAAE;MACFC,QAAQ,EAAE,IAAI,CAAC9H,cAAe;MAC9B+H,QAAQ,EAAE,IAAI,CAACnD,YAAY,CAACvD,OAAQ;MACpCgB,QAAQ,EAAE,IAAI,CAAC9D,KAAK,CAAC8D,QAAS;MAC9BX,qBAAqB,EAAE,IAAI,CAACjB,KAAK,CAACiB,qBAAsB;MACxDsG,OAAO,EACL,IAAI,CAACvH,KAAK,CAACsD,oBAAoB,IAAI,IAAI,CAACxF,KAAK,CAAC0J,SAC/C;MACDC,gBAAgB,EAAE,IAAI,CAAC3J,KAAK,CAAC4J,2BAA4B;MACzDC,SAAS,EAAE,IAAI,CAAC3H,KAAK,CAACC,kBAAmB;MACzC2H,cAAc,EAAE,IAAI,CAAC9J,KAAK,CAAC+J,yBAA0B;MACrDC,4BAA4B,EAC1B,IAAI,CAAChK,KAAK,CAACiK,4BACZ;MACDC,qBAAqB,EACnB,IAAI,CAAChI,KAAK,CAACnD,KAAK,CAAClB,MAAM,GAAG,IAAI,CAACmC,KAAK,CAACmK,iBACtC;MACDvG,IAAI,EAAEX,WAAY;MAClBmH,UAAU,EAAE,IAAI,CAACjG,oBAAqB;MACtCpF,KAAK,EAAE,IAAI,CAACmD,KAAK,CAACnD,KAAM;MACxBsL,kBAAkB,EAChB,IAAI,CAACrK,KAAK,CAAC8D,QAAQ,IACnB,IAAI,CAAC5B,KAAK,CAACnD,KAAK,KAAK,EAAE,KACtB,CAAC,IAAI,CAACiB,KAAK,CAACuD,YAAY,IACvB,CAAC,IAAI,CAACvD,KAAK,CAACuD,YAAY,CAACC,IAAI,CAC1BN,CAAC,IAAKA,CAAC,CAACQ,IAAI,KAAK,IAAI,CAACxB,KAAK,CAACnD,KAC/B,CAAC,CAAC,KACH,CAAC,IAAI,CAACmD,KAAK,CAACuD,mBAAmB,IAC9B,CAAC,IAAI,CAACvD,KAAK,CAACuD,mBAAmB,CAACjC,IAAI,CACjCN,CAAC,IAAKA,CAAC,CAACQ,IAAI,KAAK,IAAI,CAACxB,KAAK,CAACnD,KAC/B,CAAC,CAAC,IACJ,IAAI,CAACmD,KAAK,CAAC6C,WAAW,iBACpB5J,KAAA,CAAA8E,aAAA,CAACxE,OAAA,CAAAgM,MAAM,EAAAlK,QAAA,KACA,IAAI,CAACyC,KAAK,CAACgB,EAAE,IAAI;QACpBA,EAAE,EAAE,IAAI,CAAChB,KAAK,CAACgB,EAAE,GAAG;MACtB,CAAC;QACDD,SAAS,EAAC,4CAA4C;QACtDuJ,QAAQ,EAAE,IAAK;QACfrJ,OAAO,EAAE,IAAI,CAAC8C;MAAU,IAEvBsD,YAAY,CAAC1G,MAAM,EAAC,KAAE,EAAC,IAAI,CAACuB,KAAK,CAACnD,KAAK,EAAC,IACnC,CAEX;MACDwL,aAAa,EAAE,IAAI,CAACvK,KAAK,CAACuK,aAAc;MACxCC,WAAW,EAAE,IAAI,CAACxK,KAAK,CAACwK;IAAY,EACrC,CAEF,CACN,EACA,IAAI,CAACC,uBAAuB,CAAC,CAAC,EAC9B,IAAI,CAACzK,KAAK,CAAC0K,KAAK,iBACfvP,KAAA,CAAA8E,aAAA;MACEc,SAAS,EACP,IAAI,CAACmB,KAAK,CAACnD,KAAK,KAAK,EAAE,IACvB,IAAI,CAACmD,KAAK,CAACM,aAAa,IACxB,IAAI,CAACxC,KAAK,CAAC8H,QAAQ,IACnB,IAAI,CAAC9H,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,IAAI,IAAI,CAACmC,KAAK,CAACwE,OAAO,IAC5C9B,iBAAiB,GACb,gBAAgB,GAChB;IACL,GAEA,IAAI,CAACiI,WAAW,CAAC,CACb,CAEN,CACK,CACN,CAAC;EAEb;EA8KQ1F,SAASA,CAACrB,IAAS,EAAE;IAC3B,IAAIoB,MAAM,GAAG,EAAE;IACf,IAAIpB,IAAI,CAAC/F,MAAM,GAAG,IAAI,CAACmC,KAAK,CAACwE,OAAO,EAAE;MACpCQ,MAAM,GAAGA,MAAM,CAACnB,MAAM,CAAC,IAAI,CAAC3B,KAAK,CAACN,UAAU,CAAC;IAC/C;IACA,IAAI,IAAI,CAACM,KAAK,CAACnD,KAAK,KAAK,EAAE,IAAI6E,IAAI,CAAC/F,MAAM,KAAK,CAAC,IAAI,IAAI,CAACmC,KAAK,CAACkG,QAAQ,EAAE;MACvElB,MAAM,GAAGA,MAAM,CAACnB,MAAM,CACpB,IAAI,CAACyD,eAAe,CAAC,IAAI,CAACtH,KAAK,CAACqH,YAAY,CAAC,CAACnB,QAChD,CAAC;IACH;IACA,IAAI,IAAI,CAAChE,KAAK,CAACnD,KAAK,IAAI,IAAI,CAACiB,KAAK,CAAC8D,QAAQ,IAAI,CAAC,IAAI,CAAC5B,KAAK,CAACM,aAAa,EAAE;MACxEwC,MAAM,GAAGA,MAAM,CAACnB,MAAM,CAAC,IAAI,CAAC7D,KAAK,CAAC4K,kBAAkB,CAAC;IACvD;IACA,IAAI,IAAI,CAAC5K,KAAK,CAACwE,OAAO,IAAI,IAAI,CAACxE,KAAK,CAAC4D,IAAI,IAAI,IAAI,CAAC5D,KAAK,CAAC4D,IAAI,CAAC/F,MAAM,CAAC,EAAE;MACpEmH,MAAM,GAAGA,MAAM,CAACnB,MAAM,CAAC,IAAI,CAAC7D,KAAK,CAAC6K,qBAAqB,CAAC;IAC1D;IACA,OAAO7F,MAAM,CAAC1G,MAAM,CAAEX,CAAC,IAAKA,CAAC,CAAC;EAChC;EAEQ4E,iBAAiBA,CAAA,EAA0B;IAAA,IAAzBuI,UAAkB,GAAAlN,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA+B,SAAA,GAAA/B,SAAA,MAAG,EAAE;IAC/C,IACE,IAAI,CAACoC,KAAK,CAACuC,iBAAiB,IAC5BuI,UAAU,CAACjN,MAAM,IAAI,IAAI,CAACmC,KAAK,CAACmK,iBAAiB,EACjD;MACA,MAAMY,KAAK,GAAGnI,UAAU,CACtB,MAAM,IAAI,CAACf,QAAQ,CAAC,OAAO;QAAE2D,oBAAoB,EAAE;MAAK,CAAC,CAAC,CAAC,EAC3D,IAAI,CAACxF,KAAK,CAACgL,cACb,CAAC;MACD,IAAI,CAAChL,KAAK,CAACuC,iBAAiB,CAACuI,UAAU,CAAC,CAACG,IAAI,CAAExF,mBAAmB,IAAK;QACrEyF,YAAY,CAACH,KAAK,CAAC;QACnB,IAAI,CAAClJ,QAAQ,CAAC,OAAO;UACnB4D,mBAAmB;UACnBD,oBAAoB,EAAE;QACxB,CAAC,CAAC,CAAC;MACL,CAAC,CAAC;IACJ;EACF;EAEQoB,cAAcA,CAAA,EAAG;IACvB,MAAMrD,YAAiB,GAAG,EAAE,CACzBM,MAAM,CAAC,IAAI,CAAC7D,KAAK,CAACuD,YAAY,GAAG,IAAI,CAACvD,KAAK,CAACuD,YAAY,GAAG,EAAE,CAAC,CAC9DM,MAAM,CACL,IAAI,CAAC3B,KAAK,CAACuD,mBAAmB,GAAG,IAAI,CAACvD,KAAK,CAACuD,mBAAmB,GAAG,EACpE,CAAC;IACH,MAAM0F,YAAY,GAAG,IAAI,CAACnL,KAAK,CAACoL,kBAAkB,CAChD,IAAI,CAAClJ,KAAK,CAACnD,KAAK,GAAG,IAAI,CAACmD,KAAK,CAACnD,KAAK,CAACsM,WAAW,CAAC,CAAC,GAAG,EAAE,EACtD9H,YACF,CAAC;IACD,IAAIN,WAAW,GAAGkI,YAAY,CAC3B7M,MAAM,CACJ8F,GAAG,IACF,IAAI,CAACpE,KAAK,CAACsL,yBAAyB,IACpC,CAAC,IAAI,CAACtL,KAAK,CAAC4D,IAAI,CAAC2H,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACxK,EAAE,KAAKoD,GAAG,CAACpD,EAAE,CAChD,CAAC,CACAyK,KAAK,CAAC,CAAC,EAAE,IAAI,CAACzL,KAAK,CAAC0L,cAAc,CAAC;IACtC,OAAOzI,WAAW;EACpB;EAEQ2F,SAASA,CAACxE,GAAM,EAAEuE,KAAa,EAAE;IACvC,MAAMX,IAAI,gBACR7M,KAAA,CAAA8E,aAAA,CAAA9E,KAAA,CAAAwQ,QAAA,QACGvH,GAAG,CAACV,IAAI,EACR,CAAC,IAAI,CAAC1D,KAAK,CAAC8H,QAAQ,iBACnB3M,KAAA,CAAA8E,aAAA,CAACxE,OAAA,CAAAgM,MAAM,EAAAlK,QAAA,KACA,IAAI,CAACyC,KAAK,CAACgB,EAAE,IAAI;MACpBA,EAAE,EAAE,IAAI,CAAChB,KAAK,CAACgB,EAAE,GAAG,OAAO,GAAG2H,KAAK,CAACiD,QAAQ,CAAC;IAC/C,CAAC;MACDC,QAAQ,EAAE,IAAK;MACfC,KAAK,EAAE,IAAK;MACZ7K,OAAO,EAAE,IAAI,CAACqE,cAAc,CAAClB,GAAG,CAAE;MAClCrD,SAAS,EAAC,8CAA8C;MACxDgL,SAAS,EAAElL,kBAAmB;MAC9BmL,eAAe,EAAE;IAAM,iBAEvB7Q,KAAA,CAAA8E,aAAA,CAACF,QAAQ,MAAE,CACL,CAEV,CACH;IACD,MAAMgB,SAAS,GAAG,IAAAsH,mBAAU,EAAC,iBAAiB,EAAE;MAC9C,sBAAsB,EAAE,IAAI,CAACrI,KAAK,CAACiM;IACrC,CAAC,CAAC;IACF,IAAI,IAAI,CAACjM,KAAK,CAACqF,UAAU,EAAE;MACzB,oBACElK,KAAA,CAAA8E,aAAA,CAACxE,OAAA,CAAAgM,MAAM;QACLxG,OAAO,EAAE,IAAI,CAACmE,QAAQ,CAAChB,GAAG,CAAE;QAC5B8H,KAAK,EAAE,IAAK;QACZnL,SAAS,EAAEA,SAAU;QACrB9D,GAAG,EAAE0L;MAAM,GAEVX,IACK,CAAC;IAEb;IACA,oBACE7M,KAAA,CAAA8E,aAAA;MAAKgB,OAAO,EAAE,IAAI,CAACmE,QAAQ,CAAChB,GAAG,CAAE;MAACrD,SAAS,EAAEA,SAAU;MAAC9D,GAAG,EAAE0L;IAAM,GAChEX,IACE,CAAC;EAEV;AAmBF;AAACpH,OAAA,CAAAO,OAAA,GAAAA,OAAA;AAtlBYA,OAAO,CAMJhB,YAAY,GAAAzB,aAAA,CAAAA,aAAA,KACrB0C,oBAAS,CAACjB,YAAY;EACzBgM,QAAQ,EAAE,KAAK;EACfpL,SAAS,EAAE,EAAE;EACb6C,IAAI,EAAE,EAAE;EACRL,YAAY,EAAE,EAAE;EAChBiB,OAAO,EAAE,IAAI;EACbb,aAAa,EAAEA,CAAA,KAAMhE,SAAS;EAC9BsE,aAAa,EAAGmI,UAAU,IACxBC,OAAO,CAACC,OAAO,CAAC;IAAE5I,IAAI,EAAE0I,UAAU;IAAEpL,EAAE,EAAE,IAAIuL,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC;EAAE,CAAC,CAAC;EACjE5B,kBAAkB,eAAEzP,KAAA,CAAA8E,aAAA,eAAM,uBAA2B,CAAC;EACtD4K,qBAAqB,eAAE1P,KAAA,CAAA8E,aAAA,eAAM,kCAAsC,CAAC;EACpEgK,4BAA4B,eAAE9O,KAAA,CAAA8E,aAAA,eAAM,2BAA+B,CAAC;EACpEoJ,eAAe,EAAE,IAAI;EACrBO,2BAA2B,eACzBzO,KAAA,CAAA8E,aAAA,CAAClE,eAAA,CAAAI,OAAc;IAAC4E,SAAS,EAAC;EAAyC,CAAE,CACtE;EACDgJ,yBAAyB,EAAE,qBAAqB;EAChDiB,cAAc,EAAE,CAAC;EACjBI,kBAAkB,EAAEA,CAACqB,IAAI,EAAE7I,IAAI,KAC7BA,IAAI,CAACtF,MAAM,CAAE8F,GAAG,IAAKA,GAAG,CAACV,IAAI,IAAIU,GAAG,CAACV,IAAI,CAAC2H,WAAW,CAAC,CAAC,CAACP,UAAU,CAAC2B,IAAI,CAAC,CAAC;EAC3Ef,cAAc,EAAE,CAAC;EACjB/E,YAAY,EAAE,KAAK;EACnBU,YAAY,EAAE5G,uBAAuB;EACrC0J,iBAAiB,EAAE,CAAC;EACpBxH,oBAAoB,EAAE,IAAI;EAC1BuB,2BAA2B,EAAE;AAAK;AA6jB/B,MAAMwI,IAAI,GAAG,IAAAC,kCAAgB;AAClC;AACA,IAAAC,gCAAe,EAAYzL,OAAO,CAAC,EACnC,MACF,CAAyB;AAACP,OAAA,CAAA8L,IAAA,GAAAA,IAAA;AAAA,IAAAG,QAAA,GAEXH,IAAI;AAAA9L,OAAA,CAAAzE,OAAA,GAAA0Q,QAAA"}
|
1
|
+
{"version":3,"file":"Tags.js","names":["React","_interopRequireWildcard","require","_InputGroup","_Text","_BaseInput","_Button","_TagsSuggestions","_interopRequireDefault","_withFormContext","_classnames","_withThemeContext","_LinearProgress","_Portal","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","PlusIcon","props","createElement","d","defaultProps","xmlns","width","height","viewBox","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","exports","TagButtonComponent","p","className","id","onClick","children","TagsRaw","BaseInput","constructor","_this","this","textRef","suggestionsRef","isMobile","onTextErrorsChanged","textErrors","setState","handleErrors","onFocus","_this$props$onFocus","_this$props","state","suggestionsVisible","_this$props$onSuggest","_this$props2","onSuggestionsOpened","fetchExistingTags","textIsFocused","touched","showMobileVersion","mobileVersionEnabled","setTimeout","_this$textRef$current","current","focus","onKeyDown","suggestions","e","preselectedSuggestion","preventDefault","stopPropagation","existingTag","existingTags","find","et","getName","onTagsChanged","tags","concat","allowNew","addNewTag","newTag","onNewTagAdded","closeSuggestionsAfterCreate","onSuggestionSelected","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","_this$props$onBlur","_this$props3","onTextChanged","isValid","textIsValid","errors","getErrors","setInvalid","setValid","tagClick","onTagClick","tagRemoveClick","sv","fetchingExistingTags","fetchedExistingTags","createRef","handleClickOutside","handleLeaveMobileClick","_require","componentDidUpdate","oldProps","validators","customValidators","required","_this$containerRef$cu","_this$containerRef$cu2","containerRef","querySelector","contains","_this$props$onSuggest2","_this$props4","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","render","translations","getTranslations","textProps","LeaveMobileButton","Button","noShadow","unobtrusive","showInput","Boolean","readOnly","container","body","disablePortal","InputGroup","title","tooltip","classNames","getValidationClass","placeholder","ref","map","item","index","renderTag","readonlyEmptyPlaceholder","Text","showClearButton","onErrorsChanged","onChange","showValidation","ignoreContext","before","showSuggestions","tagsSuggestionsClassName","innerRef","anchorEl","loading","isLoading","LoadingComponent","suggestionsLoadingComponent","isVisible","EmptyComponent","suggestionsEmptyComponent","WaitingForMoreInputComponent","waitingForMoreInputComponent","isWaitingForMoreInput","minLettersToFetch","onSelected","AddNewTagComponent","dropdown","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","Fragment","toString","circular","blank","Component","preventsDefault","showChips","small","disabled","newTagName","Promise","resolve","name","Date","getTime","text","Tags","withThemeContext","withFormContext","_default"],"sources":["../../../src/lib/components/tags/Tags.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport { InputGroup } from '../inputGroup/InputGroup';\r\nimport { Text, TextProps, TextRaw } from '../text/Text';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n ValidationError,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button, ButtonComponentProps } from '../button/Button';\r\nimport TagsSuggestions, {\r\n RenderSuggestionTagProps,\r\n} from './subComponents/TagsSuggestions';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport classNames from 'classnames';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { PopperProps } from '@mui/material/Popper/Popper';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport Portal from '@mui/material/Portal';\r\n\r\n// Misc\r\nexport type Tag<T extends number | string = number> = {\r\n id: T;\r\n name: string;\r\n};\r\n\r\nexport type ResourceTConstraint<IdT extends number | string> = { id: IdT };\r\n\r\nexport const defaultTagsTranslations = {\r\n ...defaultBaseTranslations,\r\n addNew: 'Add new',\r\n};\r\n\r\nexport type TagsTranslations = Partial<typeof defaultTagsTranslations>;\r\n\r\nexport type TagsProps<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> = {\r\n className?: string;\r\n tagsSuggestionsClassName?: string;\r\n disabled?: boolean;\r\n tags: T[];\r\n existingTags?: T[];\r\n fetchExistingTags?: (text: string) => Promise<T[]>;\r\n onTagsChanged: (newTags: T[]) => void;\r\n onNewTagAdded?: (newTagName: string) => Promise<T>;\r\n onTagClick?: (tag: T) => void;\r\n showChips?: boolean;\r\n allowNew?: boolean;\r\n addNewOnBlur?: boolean;\r\n textProps?: TextProps;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n maxTags?: number;\r\n valueNotAddedError?: string | JSX.Element;\r\n maxTagsSurpassedError?: string | JSX.Element;\r\n showSuggestions?: boolean;\r\n suggestionsLoadingComponent?: string | JSX.Element;\r\n suggestionsEmptyComponent?: string | JSX.Element | null;\r\n waitingForMoreInputComponent?: string | JSX.Element;\r\n loadingDelayMs?: number;\r\n filterExistingTags?: (text: string, existingTags: T[]) => T[];\r\n allowSameTagMultipleTimes?: boolean;\r\n maxSuggestions?: number;\r\n popperProps?: Partial<PopperProps>;\r\n minLettersToFetch?: number;\r\n mobileVersionEnabled?: boolean;\r\n isLoading?: boolean;\r\n closeSuggestionsAfterCreate?: boolean;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;\r\n getName?: (tag: T) => string;\r\n} & BaseInputProps<HTMLInputElement, TagsTranslations>;\r\n\r\nexport interface TagsState<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> extends BaseInputState {\r\n textIsFocused: boolean;\r\n textErrors: ValidationError[];\r\n textIsValid: boolean;\r\n suggestionsVisible: boolean;\r\n fetchedExistingTags: T[];\r\n fetchingExistingTags: boolean;\r\n preselectedSuggestion?: number;\r\n}\r\n\r\ntype InjectedProps = {};\r\n\r\nconst TagButtonComponent: React.FC<ButtonComponentProps> = (p) => (\r\n <a className={p.className} id={p.id} onClick={p.onClick}>\r\n {p.children}\r\n </a>\r\n);\r\n\r\nexport class TagsRaw<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> extends BaseInput<\r\n TagsProps<IdT, T> & InjectedProps,\r\n TagsState<IdT, T>,\r\n HTMLInputElement,\r\n TagsTranslations\r\n> {\r\n public static defaultProps: TagsProps = {\r\n ...BaseInput.defaultProps,\r\n disabled: false,\r\n className: '',\r\n tags: [],\r\n existingTags: [],\r\n maxTags: 1000,\r\n onTagsChanged: () => undefined,\r\n onNewTagAdded: (newTagName) =>\r\n Promise.resolve({ name: newTagName, id: new Date().getTime() }),\r\n valueNotAddedError: <span>You forgot to add tag</span>,\r\n maxTagsSurpassedError: <span>Maximum number of tags surpassed</span>,\r\n waitingForMoreInputComponent: <span>Waiting for more input...</span>,\r\n showSuggestions: true,\r\n suggestionsLoadingComponent: (\r\n <LinearProgress className=\"tags-input__suggestions__defaultLoading\" />\r\n ),\r\n suggestionsEmptyComponent: 'No existing tags...',\r\n loadingDelayMs: 0,\r\n filterExistingTags: (text, tags) =>\r\n tags.filter((tag) => tag.name && tag.name.toLowerCase().startsWith(text)),\r\n maxSuggestions: 5,\r\n addNewOnBlur: false,\r\n translations: defaultTagsTranslations,\r\n minLettersToFetch: 0,\r\n mobileVersionEnabled: true,\r\n closeSuggestionsAfterCreate: false,\r\n getName: (tag) => tag.name,\r\n };\r\n\r\n private textRef: React.RefObject<TextRaw>;\r\n private suggestionsRef: React.RefObject<HTMLDivElement>;\r\n private isMobile: boolean = false;\r\n\r\n constructor(props: TagsProps<IdT, T> & InjectedProps) {\r\n super(props);\r\n this.state = {\r\n ...this.state,\r\n textErrors: [],\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n fetchingExistingTags: false,\r\n textIsValid: false,\r\n fetchedExistingTags: [],\r\n };\r\n this.textRef = React.createRef();\r\n this.suggestionsRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n this.handleLeaveMobileClick = this.handleLeaveMobileClick.bind(this);\r\n if (props.mobileVersionEnabled) {\r\n this.isMobile = require('react-device-detect')?.isMobile;\r\n }\r\n }\r\n\r\n public focus() {\r\n if (this.textRef.current) {\r\n this.textRef.current.focus();\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: TagsProps<IdT, T> & InjectedProps) {\r\n if (\r\n oldProps.tags !== this.props.tags ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required\r\n ) {\r\n this.handleErrors(this.props.tags);\r\n }\r\n }\r\n\r\n public handleLeaveMobileClick() {\r\n this.setState({\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n\r\n public handleClickOutside(e: MouseEvent) {\r\n if (\r\n !this.containerRef.current ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__tag__wrapper')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__text-input')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n !this.suggestionsRef.current ||\r\n this.suggestionsRef.current.contains(e.target as HTMLDivElement)\r\n ) {\r\n return;\r\n }\r\n if (this.state.suggestionsVisible) {\r\n this.props.onSuggestionsClosed?.();\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n if (this.props.addNewOnBlur && this.state.value) {\r\n const suggestions = this.getSuggestions();\r\n const existing = suggestions.find(\r\n (s) => this.props.getName(s) === this.state.value\r\n );\r\n if (existing) {\r\n this.onSuggestionSelected(existing, suggestions.length === 1);\r\n } else if (this.props.allowNew) {\r\n this.addNewTag();\r\n }\r\n } /* else if (this.state.value) {\r\n this.setState({ value: '' });\r\n }*/\r\n }\r\n\r\n public componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n document.addEventListener('touchstart', this.handleClickOutside);\r\n this.handleErrors(this.props.tags);\r\n }\r\n\r\n public componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n document.removeEventListener('touchstart', this.handleClickOutside);\r\n super.componentWillUnmount();\r\n }\r\n\r\n public render() {\r\n const translations = this.getTranslations(defaultTagsTranslations);\r\n const textProps = this.props.textProps ? this.props.textProps : {};\r\n const suggestions = this.getSuggestions();\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n const LeaveMobileButton = showMobileVersion ? (\r\n <Button\r\n className=\"tags-input__leaveMobileTagsButton line-height--0\"\r\n onClick={this.handleLeaveMobileClick}\r\n noShadow={true}\r\n unobtrusive={true}\r\n >\r\n <LeftArrowIcon />\r\n </Button>\r\n ) : undefined;\r\n const showInput = Boolean(\r\n (!this.props.maxTags ||\r\n this.props.maxTags > (this.props.tags && this.props.tags.length)) &&\r\n !this.props.readOnly\r\n );\r\n return (\r\n <Portal container={document.body} disablePortal={!showMobileVersion}>\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base tags-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n {\r\n 'tags-input--readOnly': this.props.readOnly,\r\n 'tags-input--hasPlaceholder':\r\n this.props.textProps && this.props.textProps.placeholder,\r\n 'tags-input--mobile': showMobileVersion,\r\n }\r\n )}\r\n ref={this.containerRef}\r\n >\r\n {showMobileVersion && (\r\n <div className=\"tags-input__mobileBackdrop\" />\r\n )}\r\n <div className=\"tags-input__tags__wrapper\">\r\n {!showInput && showMobileVersion && LeaveMobileButton}\r\n {this.props.tags && this.props.tags.length > 0 ? (\r\n <div className=\"tags-input__tag__wrapper\">\r\n {this.props.tags.map((item, index) =>\r\n this.renderTag(item, index)\r\n )}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"tags-input__tag__wrapper\">\r\n <div className=\"tags-input__tag\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n {showInput && (\r\n <div\r\n className={\r\n 'tags-input__tags__wrapper ' +\r\n (this.props.readOnly ? 'filled ' : '')\r\n }\r\n >\r\n <Text\r\n showClearButton={true}\r\n {...textProps}\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n ref={this.textRef}\r\n required={\r\n this.props.tags.length > 0 ? false : this.props.required\r\n }\r\n className={\r\n 'tags-input__text-input ' +\r\n (textProps.className ? textProps.className : '')\r\n }\r\n onKeyDown={this.onKeyDown(suggestions)}\r\n onErrorsChanged={this.onTextErrorsChanged}\r\n onChange={this.onTextChanged}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n value={this.state.value}\r\n readOnly={this.props.readOnly}\r\n showValidation={false}\r\n ignoreContext={true}\r\n validators={this.props.validators}\r\n customValidators={this.props.customValidators}\r\n before={LeaveMobileButton}\r\n />\r\n {this.state.suggestionsVisible &&\r\n this.props.showSuggestions && (\r\n <TagsSuggestions<IdT, T>\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n className={classNames(\r\n this.props.tagsSuggestionsClassName\r\n )}\r\n innerRef={this.suggestionsRef}\r\n anchorEl={this.containerRef.current}\r\n allowNew={this.props.allowNew}\r\n preselectedSuggestion={this.state.preselectedSuggestion}\r\n loading={\r\n this.state.fetchingExistingTags || this.props.isLoading\r\n }\r\n LoadingComponent={this.props.suggestionsLoadingComponent}\r\n isVisible={this.state.suggestionsVisible}\r\n EmptyComponent={this.props.suggestionsEmptyComponent}\r\n WaitingForMoreInputComponent={\r\n this.props.waitingForMoreInputComponent\r\n }\r\n isWaitingForMoreInput={\r\n this.state.value.length < this.props.minLettersToFetch\r\n }\r\n tags={suggestions}\r\n onSelected={this.onSuggestionSelected}\r\n value={this.state.value}\r\n AddNewTagComponent={\r\n this.props.allowNew &&\r\n this.state.value !== '' &&\r\n (!this.props.existingTags ||\r\n !this.props.existingTags.find(\r\n (e) => this.props.getName(e) === this.state.value\r\n )) &&\r\n (!this.state.fetchedExistingTags ||\r\n !this.state.fetchedExistingTags.find(\r\n (e) => this.props.getName(e) === this.state.value\r\n )) &&\r\n this.state.textIsValid && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-new-button',\r\n })}\r\n className=\"tags-input__suggestion tags-input__add-new\"\r\n dropdown={true}\r\n onClick={this.addNewTag}\r\n >\r\n {translations.addNew} \"{this.state.value}\"\r\n </Button>\r\n )\r\n }\r\n SuggestionTag={this.props.SuggestionTag}\r\n popperProps={this.props.popperProps}\r\n getName={this.props.getName}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.state.value !== '' ||\r\n this.state.textIsFocused ||\r\n this.props.readOnly ||\r\n this.props.tags.length >= this.props.maxTags ||\r\n showMobileVersion\r\n ? 'label--focused'\r\n : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n </Portal>\r\n );\r\n }\r\n\r\n private onTextErrorsChanged = (textErrors: ValidationError[]) =>\r\n this.setState(\r\n () => ({ textErrors }),\r\n () => this.handleErrors()\r\n );\r\n\r\n private onFocus = () => {\r\n this.props.onFocus?.();\r\n if (!this.state.suggestionsVisible) {\r\n this.props.onSuggestionsOpened?.();\r\n }\r\n this.fetchExistingTags(this.state.value);\r\n this.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n if (\r\n !showMobileVersion &&\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile\r\n ) {\r\n setTimeout(() => this.textRef.current?.focus(), 100);\r\n }\r\n };\r\n\r\n private onKeyDown = (suggestions: T[]) => async (e: React.KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n if (\r\n e.key === 'Enter' &&\r\n (this.state.value !== '' ||\r\n this.state.preselectedSuggestion !== undefined) &&\r\n this.state.textErrors.length === 0\r\n ) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const existingTag =\r\n this.props.existingTags &&\r\n this.props.existingTags.find(\r\n (et) => this.props.getName(et) === this.state.value\r\n );\r\n if (this.state.preselectedSuggestion !== undefined) {\r\n this.props.onTagsChanged(\r\n this.props.tags.concat(suggestions[this.state.preselectedSuggestion])\r\n );\r\n this.setState({ value: '', preselectedSuggestion: undefined }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (existingTag) {\r\n this.props.onTagsChanged(this.props.tags.concat(existingTag));\r\n this.setState({ value: '' }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (this.props.allowNew) {\r\n await this.addNewTag();\r\n this.handleErrors();\r\n }\r\n }\r\n if (suggestions.length > 0 && this.state.suggestionsVisible) {\r\n if (e.key === 'ArrowUp') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion === 0\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion - 1;\r\n this.setState({ preselectedSuggestion });\r\n } else if (e.key === 'ArrowDown') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? 0\r\n : this.state.preselectedSuggestion === suggestions.length - 1\r\n ? 0\r\n : this.state.preselectedSuggestion + 1;\r\n this.setState({ preselectedSuggestion });\r\n } else {\r\n this.setState({ preselectedSuggestion: undefined });\r\n }\r\n }\r\n };\r\n\r\n private addNewTag = async () => {\r\n const newTag = await this.props.onNewTagAdded(this.state.value);\r\n this.setState({\r\n suggestionsVisible: this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n });\r\n if (newTag) {\r\n this.props.onTagsChanged(\r\n this.props.tags ? this.props.tags.concat(newTag) : [newTag]\r\n );\r\n }\r\n this.setState({ value: '', textErrors: [] }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n };\r\n\r\n private onSuggestionSelected = (tag: T, lastSelected: boolean) => {\r\n const newTags = this.props.tags.concat(tag);\r\n this.props.onTagsChanged(newTags);\r\n const isMax = newTags.length === this.props.maxTags;\r\n const finalValue =\r\n !this.props.allowNew && !isMax && !lastSelected ? this.state.value : '';\r\n this.setState(\r\n {\r\n value: finalValue,\r\n suggestionsVisible:\r\n isMax || this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n preselectedSuggestion: undefined,\r\n textErrors: [],\r\n },\r\n () => {\r\n if (\r\n !this.props.maxTags ||\r\n this.props.tags.length + 1 < this.props.maxTags\r\n ) {\r\n this.fetchExistingTags(finalValue);\r\n }\r\n this.handleErrors();\r\n }\r\n );\r\n };\r\n\r\n private onBlur = () => {\r\n this.props.onBlur?.();\r\n this.setState(\r\n {\r\n textIsFocused: false,\r\n preselectedSuggestion: undefined,\r\n },\r\n () => this.handleErrors()\r\n );\r\n };\r\n\r\n private onTextChanged = (\r\n e: React.ChangeEvent<HTMLInputElement>,\r\n isValid: boolean\r\n ) => {\r\n const value = e.target.value;\r\n this.setState(\r\n () => ({\r\n value,\r\n isValid: isValid,\r\n textIsValid: isValid,\r\n suggestionsVisible: true,\r\n }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(e.target.value);\r\n };\r\n\r\n private handleErrors = (tags: T[] = this.props.tags) => {\r\n let errors = this.getErrors(tags);\r\n if (errors.length > 0) {\r\n this.setInvalid(errors);\r\n } else {\r\n this.setValid();\r\n }\r\n };\r\n\r\n private getErrors(tags: T[]) {\r\n let errors = [];\r\n if (tags.length < this.props.maxTags) {\r\n errors = errors.concat(this.state.textErrors);\r\n }\r\n if (this.state.value !== '' && tags.length === 0 && this.props.required) {\r\n errors = errors.concat(\r\n this.getTranslations(this.props.translations).required\r\n );\r\n }\r\n if (this.state.value && this.props.allowNew && !this.state.textIsFocused) {\r\n errors = errors.concat(this.props.valueNotAddedError);\r\n }\r\n if (this.props.maxTags < (this.props.tags && this.props.tags.length)) {\r\n errors = errors.concat(this.props.maxTagsSurpassedError);\r\n }\r\n return errors.filter((i) => i);\r\n }\r\n\r\n private fetchExistingTags(startsWith: string = '') {\r\n if (\r\n this.props.fetchExistingTags &&\r\n startsWith.length >= this.props.minLettersToFetch\r\n ) {\r\n const timer = setTimeout(\r\n () => this.setState(() => ({ fetchingExistingTags: true })),\r\n this.props.loadingDelayMs\r\n );\r\n this.props.fetchExistingTags(startsWith).then((fetchedExistingTags) => {\r\n clearTimeout(timer);\r\n this.setState(() => ({\r\n fetchedExistingTags,\r\n fetchingExistingTags: false,\r\n }));\r\n });\r\n }\r\n }\r\n\r\n private getSuggestions() {\r\n const existingTags: T[] = []\r\n .concat(this.props.existingTags ? this.props.existingTags : [])\r\n .concat(\r\n this.state.fetchedExistingTags ? this.state.fetchedExistingTags : []\r\n );\r\n const filteredTags = this.props.filterExistingTags(\r\n this.state.value ? this.state.value.toLowerCase() : '',\r\n existingTags\r\n );\r\n let suggestions = filteredTags\r\n .filter(\r\n (tag) =>\r\n this.props.allowSameTagMultipleTimes ||\r\n !this.props.tags.some((t) => t.id === tag.id)\r\n )\r\n .slice(0, this.props.maxSuggestions);\r\n return suggestions;\r\n }\r\n\r\n private renderTag(tag: T, index: number) {\r\n const body = (\r\n <>\r\n {this.props.getName(tag)}\r\n {!this.props.readOnly && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-tag-' + index.toString(),\r\n })}\r\n circular={true}\r\n blank={true}\r\n onClick={this.tagRemoveClick(tag)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n Component={TagButtonComponent}\r\n preventsDefault={false}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </>\r\n );\r\n const className = classNames('tags-input__tag', {\r\n 'tags-input__tag-chip': this.props.showChips,\r\n });\r\n if (this.props.onTagClick) {\r\n return (\r\n <Button\r\n onClick={this.tagClick(tag)}\r\n small={true}\r\n className={className}\r\n key={index}\r\n >\r\n {body}\r\n </Button>\r\n );\r\n }\r\n return (\r\n <div onClick={this.tagClick(tag)} className={className} key={index}>\r\n {body}\r\n </div>\r\n );\r\n }\r\n\r\n private tagClick = (tag: T) => () => {\r\n this.props.onTagClick && this.props.onTagClick(tag);\r\n };\r\n\r\n private tagRemoveClick = (tag: T) => (e: React.MouseEvent<HTMLElement>) => {\r\n e.stopPropagation();\r\n const newTags = this.props.tags.filter((sv) => sv.id !== tag.id);\r\n /*if (newTags.length === 0) {\r\n setTimeout(() => this.focus(), 50);\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n });*/\r\n this.props.onTagsChanged && this.props.onTagsChanged(newTags);\r\n this.handleErrors(newTags);\r\n // this.fetchExistingTags();\r\n };\r\n}\r\n\r\ninterface TagsFinal<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> {\r\n (item: TagsProps<IdT, T>): React.ReactElement;\r\n defaultProps?: Partial<TagsProps<IdT, T>>;\r\n}\r\n\r\nexport const Tags = withThemeContext<TagsProps, InstanceType<typeof TagsRaw>>(\r\n // tslint:disable-next-line: no-any\r\n withFormContext<TagsProps>(TagsRaw),\r\n 'tags'\r\n) as unknown as TagsFinal;\r\n\r\nexport default Tags;\r\n"],"mappings":"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"}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { Tag } from '..';
|
2
|
+
import { ResourceTConstraint, Tag } from '..';
|
3
3
|
import { PopperProps } from '@mui/material/Popper';
|
4
|
-
export type RenderSuggestionTagProps<T extends
|
4
|
+
export type RenderSuggestionTagProps<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> = {
|
5
5
|
tag: T;
|
6
6
|
index: number;
|
7
7
|
id?: string;
|
8
8
|
onClick: (e: React.MouseEvent<HTMLElement>) => void;
|
9
9
|
isPreselected: boolean;
|
10
10
|
};
|
11
|
-
export type SuggestionsProps<T extends
|
11
|
+
export type SuggestionsProps<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>> = {
|
12
12
|
className?: string;
|
13
13
|
innerRef: React.RefObject<HTMLDivElement>;
|
14
14
|
anchorEl: HTMLElement;
|
@@ -26,9 +26,10 @@ export type SuggestionsProps<T extends Tag = Tag> = {
|
|
26
26
|
WaitingForMoreInputComponent?: string | JSX.Element;
|
27
27
|
allowNew: boolean;
|
28
28
|
popperProps?: Partial<PopperProps>;
|
29
|
-
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;
|
29
|
+
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;
|
30
|
+
getName: (tag: T) => string;
|
30
31
|
};
|
31
32
|
type InjectedProps = {};
|
32
|
-
declare function Suggestions<T extends
|
33
|
+
declare function Suggestions<IdT extends number | string = number, T extends ResourceTConstraint<IdT> = Tag<IdT>>(props: SuggestionsProps<IdT, T> & InjectedProps): React.JSX.Element;
|
33
34
|
declare const SuggestionsWrapped: typeof Suggestions;
|
34
35
|
export default SuggestionsWrapped;
|
@@ -32,7 +32,7 @@ function DefaultSuggestionTag(_ref) {
|
|
32
32
|
className: 'w-100 tags-input__suggestion ' + (isPreselected ? 'tags-input__suggestion--preselected' : ''),
|
33
33
|
onClick: onClick,
|
34
34
|
dropdown: true
|
35
|
-
}), tag
|
35
|
+
}), this.props.getName(tag)));
|
36
36
|
}
|
37
37
|
function Suggestions(props) {
|
38
38
|
var _props$anchorEl2;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TagsSuggestions.js","names":["React","_interopRequireWildcard","require","_button","_Popper","_interopRequireDefault","_classnames","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","popperModifiers","name","enabled","DefaultSuggestionTag","_ref","index","tag","id","onClick","isPreselected","createElement","Button","toString","className","dropdown","Suggestions","props","_props$anchorEl2","onSelected","onSelectedFactory","useCallback","lastSelected","e","popperStyle","useMemo","_props$anchorEl","width","anchorEl","scrollWidth","zIndex","SuggestionTag","open","isVisible","style","placement","modifiers","popperProps","classNames","loading","ref","innerRef","AddNewTagComponent","LoadingComponent","isWaitingForMoreInput","WaitingForMoreInputComponent","tags","map","preselectedSuggestion","undefined","EmptyComponent","allowNew","SuggestionsWrapped","_default","exports"],"sources":["../../../../src/lib/components/tags/subComponents/TagsSuggestions.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { Tag } from '..';\r\nimport { Button } from '../../button';\r\nimport Popper, { PopperProps } from '@mui/material/Popper';\r\nimport classNames from 'classnames';\r\n\r\nexport type RenderSuggestionTagProps<T extends Tag = Tag> = {\r\n tag: T;\r\n index: number;\r\n id?: string;\r\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n isPreselected: boolean;\r\n};\r\n\r\nexport type SuggestionsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n innerRef: React.RefObject<HTMLDivElement>;\r\n anchorEl: HTMLElement;\r\n id?: string;\r\n preselectedSuggestion?: number;\r\n isVisible: boolean;\r\n isWaitingForMoreInput: boolean;\r\n tags: T[];\r\n onSelected: (tag: T, lastSelected: boolean) => void;\r\n value: string;\r\n loading: boolean;\r\n LoadingComponent?: string | JSX.Element;\r\n EmptyComponent?: string | JSX.Element;\r\n AddNewTagComponent?: JSX.Element;\r\n WaitingForMoreInputComponent?: string | JSX.Element;\r\n allowNew: boolean;\r\n popperProps?: Partial<PopperProps>;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n};\r\n\r\ntype InjectedProps = {};\r\n\r\nconst popperModifiers: PopperProps['modifiers'] = [\r\n {\r\n name: 'flip',\r\n enabled: true,\r\n },\r\n];\r\n\r\nfunction DefaultSuggestionTag<T extends Tag = Tag>({\r\n index,\r\n tag,\r\n id,\r\n onClick,\r\n isPreselected,\r\n}: RenderSuggestionTagProps<T>) {\r\n return (\r\n <li key={index}>\r\n <Button\r\n {...(id && {\r\n id: id + '-suggestion-' + index.toString(),\r\n })}\r\n className={\r\n 'w-100 tags-input__suggestion ' +\r\n (isPreselected ? 'tags-input__suggestion--preselected' : '')\r\n }\r\n onClick={onClick}\r\n dropdown={true}\r\n >\r\n {tag.name}\r\n </Button>\r\n </li>\r\n );\r\n}\r\n\r\nfunction Suggestions<T extends Tag = Tag>(\r\n props: SuggestionsProps<T> & InjectedProps\r\n) {\r\n const { onSelected } = props;\r\n const onSelectedFactory = React.useCallback(\r\n (tag: T, lastSelected: boolean) => (e: React.MouseEvent) => {\r\n onSelected(tag, lastSelected);\r\n },\r\n [onSelected]\r\n );\r\n const popperStyle = React.useMemo(\r\n () => ({\r\n width: props.anchorEl?.scrollWidth,\r\n zIndex: 10000,\r\n }),\r\n [props.anchorEl?.scrollWidth]\r\n );\r\n\r\n const { SuggestionTag = DefaultSuggestionTag } = props;\r\n return (\r\n props.anchorEl && (\r\n <Popper\r\n open={props.isVisible}\r\n anchorEl={props.anchorEl}\r\n style={popperStyle}\r\n placement=\"bottom-start\"\r\n modifiers={popperModifiers}\r\n {...props.popperProps}\r\n >\r\n <div\r\n {...(props.id && {\r\n id: props.id,\r\n })}\r\n className={classNames('tags-input__suggestions', props.className, {\r\n 'tags-input__suggestions--loading': props.loading,\r\n })}\r\n ref={props.innerRef}\r\n >\r\n <ul>\r\n {props.AddNewTagComponent}\r\n {props.loading && props.LoadingComponent}\r\n {props.isWaitingForMoreInput &&\r\n props.WaitingForMoreInputComponent && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.WaitingForMoreInputComponent}\r\n </li>\r\n )}\r\n {!props.isWaitingForMoreInput &&\r\n props.tags.map((tag, index) => (\r\n <SuggestionTag\r\n key={tag.id}\r\n index={index}\r\n tag={tag}\r\n onClick={onSelectedFactory(tag, props.tags.length === 1)}\r\n id={props.id}\r\n isPreselected={\r\n props.preselectedSuggestion !== undefined &&\r\n props.preselectedSuggestion === index\r\n }\r\n />\r\n ))}\r\n {props.EmptyComponent &&\r\n props.tags.length === 0 &&\r\n !props.allowNew &&\r\n !props.isWaitingForMoreInput &&\r\n !props.loading && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.EmptyComponent}\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </Popper>\r\n )\r\n );\r\n}\r\n\r\nconst SuggestionsWrapped = Suggestions;\r\n\r\nexport default SuggestionsWrapped;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"TagsSuggestions.js","names":["React","_interopRequireWildcard","require","_button","_Popper","_interopRequireDefault","_classnames","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","popperModifiers","name","enabled","DefaultSuggestionTag","_ref","index","tag","id","onClick","isPreselected","createElement","Button","toString","className","dropdown","props","getName","Suggestions","_props$anchorEl2","onSelected","onSelectedFactory","useCallback","lastSelected","e","popperStyle","useMemo","_props$anchorEl","width","anchorEl","scrollWidth","zIndex","SuggestionTag","open","isVisible","style","placement","modifiers","popperProps","classNames","loading","ref","innerRef","AddNewTagComponent","LoadingComponent","isWaitingForMoreInput","WaitingForMoreInputComponent","tags","map","preselectedSuggestion","undefined","EmptyComponent","allowNew","SuggestionsWrapped","_default","exports"],"sources":["../../../../src/lib/components/tags/subComponents/TagsSuggestions.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { ResourceTConstraint, Tag } from '..';\r\nimport { Button } from '../../button';\r\nimport Popper, { PopperProps } from '@mui/material/Popper';\r\nimport classNames from 'classnames';\r\n\r\nexport type RenderSuggestionTagProps<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> = {\r\n tag: T;\r\n index: number;\r\n id?: string;\r\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n isPreselected: boolean;\r\n};\r\n\r\nexport type SuggestionsProps<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n> = {\r\n className?: string;\r\n innerRef: React.RefObject<HTMLDivElement>;\r\n anchorEl: HTMLElement;\r\n id?: string;\r\n preselectedSuggestion?: number;\r\n isVisible: boolean;\r\n isWaitingForMoreInput: boolean;\r\n tags: T[];\r\n onSelected: (tag: T, lastSelected: boolean) => void;\r\n value: string;\r\n loading: boolean;\r\n LoadingComponent?: string | JSX.Element;\r\n EmptyComponent?: string | JSX.Element;\r\n AddNewTagComponent?: JSX.Element;\r\n WaitingForMoreInputComponent?: string | JSX.Element;\r\n allowNew: boolean;\r\n popperProps?: Partial<PopperProps>;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;\r\n getName: (tag: T) => string;\r\n};\r\n\r\ntype InjectedProps = {};\r\n\r\nconst popperModifiers: PopperProps['modifiers'] = [\r\n {\r\n name: 'flip',\r\n enabled: true,\r\n },\r\n];\r\n\r\nfunction DefaultSuggestionTag<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n>({\r\n index,\r\n tag,\r\n id,\r\n onClick,\r\n isPreselected,\r\n}: RenderSuggestionTagProps<IdT, T>) {\r\n return (\r\n <li key={index}>\r\n <Button\r\n {...(id && {\r\n id: id + '-suggestion-' + index.toString(),\r\n })}\r\n className={\r\n 'w-100 tags-input__suggestion ' +\r\n (isPreselected ? 'tags-input__suggestion--preselected' : '')\r\n }\r\n onClick={onClick}\r\n dropdown={true}\r\n >\r\n {this.props.getName(tag)}\r\n </Button>\r\n </li>\r\n );\r\n}\r\n\r\nfunction Suggestions<\r\n IdT extends number | string = number,\r\n T extends ResourceTConstraint<IdT> = Tag<IdT>\r\n>(props: SuggestionsProps<IdT, T> & InjectedProps) {\r\n const { onSelected } = props;\r\n const onSelectedFactory = React.useCallback(\r\n (tag: T, lastSelected: boolean) => (e: React.MouseEvent) => {\r\n onSelected(tag, lastSelected);\r\n },\r\n [onSelected]\r\n );\r\n const popperStyle = React.useMemo(\r\n () => ({\r\n width: props.anchorEl?.scrollWidth,\r\n zIndex: 10000,\r\n }),\r\n [props.anchorEl?.scrollWidth]\r\n );\r\n\r\n const { SuggestionTag = DefaultSuggestionTag } = props;\r\n return (\r\n props.anchorEl && (\r\n <Popper\r\n open={props.isVisible}\r\n anchorEl={props.anchorEl}\r\n style={popperStyle}\r\n placement=\"bottom-start\"\r\n modifiers={popperModifiers}\r\n {...props.popperProps}\r\n >\r\n <div\r\n {...(props.id && {\r\n id: props.id,\r\n })}\r\n className={classNames('tags-input__suggestions', props.className, {\r\n 'tags-input__suggestions--loading': props.loading,\r\n })}\r\n ref={props.innerRef}\r\n >\r\n <ul>\r\n {props.AddNewTagComponent}\r\n {props.loading && props.LoadingComponent}\r\n {props.isWaitingForMoreInput &&\r\n props.WaitingForMoreInputComponent && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.WaitingForMoreInputComponent}\r\n </li>\r\n )}\r\n {!props.isWaitingForMoreInput &&\r\n props.tags.map((tag, index) => (\r\n <SuggestionTag<IdT, T>\r\n key={tag.id}\r\n index={index}\r\n tag={tag}\r\n onClick={onSelectedFactory(tag, props.tags.length === 1)}\r\n id={props.id}\r\n isPreselected={\r\n props.preselectedSuggestion !== undefined &&\r\n props.preselectedSuggestion === index\r\n }\r\n />\r\n ))}\r\n {props.EmptyComponent &&\r\n props.tags.length === 0 &&\r\n !props.allowNew &&\r\n !props.isWaitingForMoreInput &&\r\n !props.loading && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.EmptyComponent}\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </Popper>\r\n )\r\n );\r\n}\r\n\r\nconst SuggestionsWrapped = Suggestions;\r\n\r\nexport default SuggestionsWrapped;\r\n"],"mappings":"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"}
|
package/build/dist/report.html
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="UTF-8"/>
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
6
|
-
<title>guestbell-forms [
|
6
|
+
<title>guestbell-forms [16 Jul 2023 at 13:27]</title>
|
7
7
|
<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
|
8
8
|
|
9
9
|
<script>
|
package/package.json
CHANGED
@@ -23,11 +23,13 @@ import LinearProgress from '@mui/material/LinearProgress';
|
|
23
23
|
import Portal from '@mui/material/Portal';
|
24
24
|
|
25
25
|
// Misc
|
26
|
-
export type Tag = {
|
27
|
-
id:
|
26
|
+
export type Tag<T extends number | string = number> = {
|
27
|
+
id: T;
|
28
28
|
name: string;
|
29
29
|
};
|
30
30
|
|
31
|
+
export type ResourceTConstraint<IdT extends number | string> = { id: IdT };
|
32
|
+
|
31
33
|
export const defaultTagsTranslations = {
|
32
34
|
...defaultBaseTranslations,
|
33
35
|
addNew: 'Add new',
|
@@ -35,7 +37,10 @@ export const defaultTagsTranslations = {
|
|
35
37
|
|
36
38
|
export type TagsTranslations = Partial<typeof defaultTagsTranslations>;
|
37
39
|
|
38
|
-
export type TagsProps<
|
40
|
+
export type TagsProps<
|
41
|
+
IdT extends number | string = number,
|
42
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
43
|
+
> = {
|
39
44
|
className?: string;
|
40
45
|
tagsSuggestionsClassName?: string;
|
41
46
|
disabled?: boolean;
|
@@ -67,10 +72,14 @@ export type TagsProps<T extends Tag = Tag> = {
|
|
67
72
|
mobileVersionEnabled?: boolean;
|
68
73
|
isLoading?: boolean;
|
69
74
|
closeSuggestionsAfterCreate?: boolean;
|
70
|
-
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;
|
75
|
+
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;
|
76
|
+
getName?: (tag: T) => string;
|
71
77
|
} & BaseInputProps<HTMLInputElement, TagsTranslations>;
|
72
78
|
|
73
|
-
export interface TagsState<
|
79
|
+
export interface TagsState<
|
80
|
+
IdT extends number | string = number,
|
81
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
82
|
+
> extends BaseInputState {
|
74
83
|
textIsFocused: boolean;
|
75
84
|
textErrors: ValidationError[];
|
76
85
|
textIsValid: boolean;
|
@@ -88,9 +97,12 @@ const TagButtonComponent: React.FC<ButtonComponentProps> = (p) => (
|
|
88
97
|
</a>
|
89
98
|
);
|
90
99
|
|
91
|
-
export class TagsRaw<
|
92
|
-
|
93
|
-
|
100
|
+
export class TagsRaw<
|
101
|
+
IdT extends number | string = number,
|
102
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
103
|
+
> extends BaseInput<
|
104
|
+
TagsProps<IdT, T> & InjectedProps,
|
105
|
+
TagsState<IdT, T>,
|
94
106
|
HTMLInputElement,
|
95
107
|
TagsTranslations
|
96
108
|
> {
|
@@ -121,13 +133,14 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
121
133
|
minLettersToFetch: 0,
|
122
134
|
mobileVersionEnabled: true,
|
123
135
|
closeSuggestionsAfterCreate: false,
|
136
|
+
getName: (tag) => tag.name,
|
124
137
|
};
|
125
138
|
|
126
139
|
private textRef: React.RefObject<TextRaw>;
|
127
140
|
private suggestionsRef: React.RefObject<HTMLDivElement>;
|
128
141
|
private isMobile: boolean = false;
|
129
142
|
|
130
|
-
constructor(props: TagsProps<T> & InjectedProps) {
|
143
|
+
constructor(props: TagsProps<IdT, T> & InjectedProps) {
|
131
144
|
super(props);
|
132
145
|
this.state = {
|
133
146
|
...this.state,
|
@@ -153,7 +166,7 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
153
166
|
}
|
154
167
|
}
|
155
168
|
|
156
|
-
public componentDidUpdate(oldProps: TagsProps & InjectedProps) {
|
169
|
+
public componentDidUpdate(oldProps: TagsProps<IdT, T> & InjectedProps) {
|
157
170
|
if (
|
158
171
|
oldProps.tags !== this.props.tags ||
|
159
172
|
oldProps.validators !== this.props.validators ||
|
@@ -195,7 +208,9 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
195
208
|
});
|
196
209
|
if (this.props.addNewOnBlur && this.state.value) {
|
197
210
|
const suggestions = this.getSuggestions();
|
198
|
-
const existing = suggestions.find(
|
211
|
+
const existing = suggestions.find(
|
212
|
+
(s) => this.props.getName(s) === this.state.value
|
213
|
+
);
|
199
214
|
if (existing) {
|
200
215
|
this.onSuggestionSelected(existing, suggestions.length === 1);
|
201
216
|
} else if (this.props.allowNew) {
|
@@ -318,7 +333,7 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
318
333
|
/>
|
319
334
|
{this.state.suggestionsVisible &&
|
320
335
|
this.props.showSuggestions && (
|
321
|
-
<TagsSuggestions<T>
|
336
|
+
<TagsSuggestions<IdT, T>
|
322
337
|
{...(this.props.id && {
|
323
338
|
id: this.props.id + '-text-input',
|
324
339
|
})}
|
@@ -349,11 +364,11 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
349
364
|
this.state.value !== '' &&
|
350
365
|
(!this.props.existingTags ||
|
351
366
|
!this.props.existingTags.find(
|
352
|
-
(e) => e
|
367
|
+
(e) => this.props.getName(e) === this.state.value
|
353
368
|
)) &&
|
354
369
|
(!this.state.fetchedExistingTags ||
|
355
370
|
!this.state.fetchedExistingTags.find(
|
356
|
-
(e) => e
|
371
|
+
(e) => this.props.getName(e) === this.state.value
|
357
372
|
)) &&
|
358
373
|
this.state.textIsValid && (
|
359
374
|
<Button
|
@@ -370,6 +385,7 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
370
385
|
}
|
371
386
|
SuggestionTag={this.props.SuggestionTag}
|
372
387
|
popperProps={this.props.popperProps}
|
388
|
+
getName={this.props.getName}
|
373
389
|
/>
|
374
390
|
)}
|
375
391
|
</div>
|
@@ -442,7 +458,9 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
442
458
|
e.stopPropagation();
|
443
459
|
const existingTag =
|
444
460
|
this.props.existingTags &&
|
445
|
-
this.props.existingTags.find(
|
461
|
+
this.props.existingTags.find(
|
462
|
+
(et) => this.props.getName(et) === this.state.value
|
463
|
+
);
|
446
464
|
if (this.state.preselectedSuggestion !== undefined) {
|
447
465
|
this.props.onTagsChanged(
|
448
466
|
this.props.tags.concat(suggestions[this.state.preselectedSuggestion])
|
@@ -629,7 +647,7 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
629
647
|
private renderTag(tag: T, index: number) {
|
630
648
|
const body = (
|
631
649
|
<>
|
632
|
-
{tag
|
650
|
+
{this.props.getName(tag)}
|
633
651
|
{!this.props.readOnly && (
|
634
652
|
<Button
|
635
653
|
{...(this.props.id && {
|
@@ -688,9 +706,12 @@ export class TagsRaw<T extends Tag = Tag> extends BaseInput<
|
|
688
706
|
};
|
689
707
|
}
|
690
708
|
|
691
|
-
interface TagsFinal
|
692
|
-
|
693
|
-
|
709
|
+
interface TagsFinal<
|
710
|
+
IdT extends number | string = number,
|
711
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
712
|
+
> {
|
713
|
+
(item: TagsProps<IdT, T>): React.ReactElement;
|
714
|
+
defaultProps?: Partial<TagsProps<IdT, T>>;
|
694
715
|
}
|
695
716
|
|
696
717
|
export const Tags = withThemeContext<TagsProps, InstanceType<typeof TagsRaw>>(
|
@@ -1,10 +1,13 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import { Tag } from '..';
|
2
|
+
import { ResourceTConstraint, Tag } from '..';
|
3
3
|
import { Button } from '../../button';
|
4
4
|
import Popper, { PopperProps } from '@mui/material/Popper';
|
5
5
|
import classNames from 'classnames';
|
6
6
|
|
7
|
-
export type RenderSuggestionTagProps<
|
7
|
+
export type RenderSuggestionTagProps<
|
8
|
+
IdT extends number | string = number,
|
9
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
10
|
+
> = {
|
8
11
|
tag: T;
|
9
12
|
index: number;
|
10
13
|
id?: string;
|
@@ -12,7 +15,10 @@ export type RenderSuggestionTagProps<T extends Tag = Tag> = {
|
|
12
15
|
isPreselected: boolean;
|
13
16
|
};
|
14
17
|
|
15
|
-
export type SuggestionsProps<
|
18
|
+
export type SuggestionsProps<
|
19
|
+
IdT extends number | string = number,
|
20
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
21
|
+
> = {
|
16
22
|
className?: string;
|
17
23
|
innerRef: React.RefObject<HTMLDivElement>;
|
18
24
|
anchorEl: HTMLElement;
|
@@ -30,7 +36,8 @@ export type SuggestionsProps<T extends Tag = Tag> = {
|
|
30
36
|
WaitingForMoreInputComponent?: string | JSX.Element;
|
31
37
|
allowNew: boolean;
|
32
38
|
popperProps?: Partial<PopperProps>;
|
33
|
-
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;
|
39
|
+
SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<IdT, T>>;
|
40
|
+
getName: (tag: T) => string;
|
34
41
|
};
|
35
42
|
|
36
43
|
type InjectedProps = {};
|
@@ -42,13 +49,16 @@ const popperModifiers: PopperProps['modifiers'] = [
|
|
42
49
|
},
|
43
50
|
];
|
44
51
|
|
45
|
-
function DefaultSuggestionTag<
|
52
|
+
function DefaultSuggestionTag<
|
53
|
+
IdT extends number | string = number,
|
54
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
55
|
+
>({
|
46
56
|
index,
|
47
57
|
tag,
|
48
58
|
id,
|
49
59
|
onClick,
|
50
60
|
isPreselected,
|
51
|
-
}: RenderSuggestionTagProps<T>) {
|
61
|
+
}: RenderSuggestionTagProps<IdT, T>) {
|
52
62
|
return (
|
53
63
|
<li key={index}>
|
54
64
|
<Button
|
@@ -62,15 +72,16 @@ function DefaultSuggestionTag<T extends Tag = Tag>({
|
|
62
72
|
onClick={onClick}
|
63
73
|
dropdown={true}
|
64
74
|
>
|
65
|
-
{tag
|
75
|
+
{this.props.getName(tag)}
|
66
76
|
</Button>
|
67
77
|
</li>
|
68
78
|
);
|
69
79
|
}
|
70
80
|
|
71
|
-
function Suggestions<
|
72
|
-
|
73
|
-
|
81
|
+
function Suggestions<
|
82
|
+
IdT extends number | string = number,
|
83
|
+
T extends ResourceTConstraint<IdT> = Tag<IdT>
|
84
|
+
>(props: SuggestionsProps<IdT, T> & InjectedProps) {
|
74
85
|
const { onSelected } = props;
|
75
86
|
const onSelectedFactory = React.useCallback(
|
76
87
|
(tag: T, lastSelected: boolean) => (e: React.MouseEvent) => {
|
@@ -117,7 +128,7 @@ function Suggestions<T extends Tag = Tag>(
|
|
117
128
|
)}
|
118
129
|
{!props.isWaitingForMoreInput &&
|
119
130
|
props.tags.map((tag, index) => (
|
120
|
-
<SuggestionTag
|
131
|
+
<SuggestionTag<IdT, T>
|
121
132
|
key={tag.id}
|
122
133
|
index={index}
|
123
134
|
tag={tag}
|