guestbell-forms 3.0.103 → 3.0.104
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/base/input/useBaseInput.d.ts +44 -0
- package/build/components/base/input/useBaseInput.js +181 -0
- package/build/components/base/input/useBaseInput.js.map +1 -0
- package/build/components/tags/Tags.d.ts +1 -1
- package/build/components/tags/Tags.js +18 -13
- package/build/components/tags/Tags.js.map +1 -1
- package/build/dist/guestbell-forms.css +9 -10
- package/build/dist/guestbell-forms.css.map +1 -1
- package/build/dist/guestbell-forms.min.css +1 -1
- package/build/dist/report.html +2 -2
- package/build/scss/components/tags/tags.scss +9 -8
- package/package.json +1 -1
- package/src/lib/components/base/input/useBaseInput.tsx +239 -0
- package/src/lib/components/tags/Tags.tsx +31 -16
- package/src/lib/scss/components/tags/tags.scss +9 -8
- package/src/stories/TagsDemo.tsx +9 -5
@@ -0,0 +1,44 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { AllowedHtmlElements, BaseTranslations, ValidationError } from './BaseInput';
|
3
|
+
import * as Validators from '../../../validators';
|
4
|
+
import { FormContextState } from '../../form/FormContext';
|
5
|
+
interface UseBaseInputProps<TranslationsT extends BaseTranslations> {
|
6
|
+
value?: string;
|
7
|
+
required?: boolean;
|
8
|
+
validators?: string[];
|
9
|
+
customValidators?: Validators.IBaseValidator[];
|
10
|
+
onTheFlightValidate?: (value: string) => boolean;
|
11
|
+
onChange?: (event: React.ChangeEvent<AllowedHtmlElements>, isValid: boolean) => void;
|
12
|
+
onBlur?: () => void;
|
13
|
+
onFocus?: () => void;
|
14
|
+
errors?: ValidationError[];
|
15
|
+
infoText?: string;
|
16
|
+
touchOn?: 'focus' | 'blur';
|
17
|
+
showValidation?: boolean;
|
18
|
+
disabled?: boolean;
|
19
|
+
ignoreContext?: boolean;
|
20
|
+
formContext?: FormContextState;
|
21
|
+
translations?: TranslationsT;
|
22
|
+
validationName?: string;
|
23
|
+
label?: string | JSX.Element;
|
24
|
+
}
|
25
|
+
export declare function useBaseInput<TranslationsT extends BaseTranslations = BaseTranslations>(props: UseBaseInputProps<TranslationsT>): {
|
26
|
+
value: string;
|
27
|
+
setValue: (newValue: string) => void;
|
28
|
+
isValid: boolean;
|
29
|
+
errors: ValidationError[];
|
30
|
+
touched: boolean;
|
31
|
+
focused: boolean;
|
32
|
+
inputRef: import("react").MutableRefObject<AllowedHtmlElements>;
|
33
|
+
containerRef: import("react").MutableRefObject<HTMLDivElement>;
|
34
|
+
handleFocus: () => void;
|
35
|
+
handleBlur: () => void;
|
36
|
+
scrollTo: () => void;
|
37
|
+
setValid: () => void;
|
38
|
+
setInvalid: (validationErrors?: ValidationError[]) => void;
|
39
|
+
disableComponent: () => void;
|
40
|
+
enableComponent: () => void;
|
41
|
+
setTouched: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
42
|
+
componentDisabled: boolean;
|
43
|
+
};
|
44
|
+
export {};
|
@@ -0,0 +1,181 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useBaseInput = useBaseInput;
|
7
|
+
var _react = require("react");
|
8
|
+
var Validators = _interopRequireWildcard(require("../../../validators"));
|
9
|
+
var _Guid = _interopRequireDefault(require("../../utils/Guid"));
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
13
|
+
// experimental and unfinished and unused for now
|
14
|
+
|
15
|
+
function useBaseInput(props) {
|
16
|
+
const {
|
17
|
+
value: initialValue = '',
|
18
|
+
required = false,
|
19
|
+
validators = [],
|
20
|
+
customValidators = [],
|
21
|
+
onTheFlightValidate,
|
22
|
+
onChange,
|
23
|
+
onBlur,
|
24
|
+
onFocus,
|
25
|
+
//errors: propErrors = [],
|
26
|
+
//infoText,
|
27
|
+
touchOn = 'focus',
|
28
|
+
//showValidation = true,
|
29
|
+
disabled = false,
|
30
|
+
ignoreContext = false,
|
31
|
+
formContext,
|
32
|
+
translations,
|
33
|
+
validationName,
|
34
|
+
label
|
35
|
+
} = props;
|
36
|
+
const [value, setValue] = (0, _react.useState)(initialValue);
|
37
|
+
const [touched, setTouched] = (0, _react.useState)(false);
|
38
|
+
const [isValid, setIsValid] = (0, _react.useState)(true);
|
39
|
+
const [errors, setErrors] = (0, _react.useState)([]);
|
40
|
+
const [focused, setFocused] = (0, _react.useState)(false);
|
41
|
+
const [componentDisabled, setComponentDisabled] = (0, _react.useState)(disabled);
|
42
|
+
const inputRef = (0, _react.useRef)(null);
|
43
|
+
const containerRef = (0, _react.useRef)(null);
|
44
|
+
const componentId = (0, _react.useRef)((0, _Guid.default)());
|
45
|
+
const handleValidation = (0, _react.useCallback)(function (currentValue) {
|
46
|
+
let initializing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
47
|
+
let validationErrors = [];
|
48
|
+
let validationStatus = true;
|
49
|
+
if (required && !currentValue) {
|
50
|
+
validationErrors.push((translations === null || translations === void 0 ? void 0 : translations.required) || 'This field is required');
|
51
|
+
validationStatus = false;
|
52
|
+
} else if (validators) {
|
53
|
+
validators.forEach(validator => {
|
54
|
+
let isValidForValidator = false;
|
55
|
+
switch (validator) {
|
56
|
+
case 'email':
|
57
|
+
isValidForValidator = new Validators.EmailValidator().Validate(currentValue, required, error => validationErrors.push(error));
|
58
|
+
break;
|
59
|
+
// Add other validators as needed
|
60
|
+
default:
|
61
|
+
throw new Error(`Validator ${validator} not implemented`);
|
62
|
+
}
|
63
|
+
if (!isValidForValidator) validationStatus = false;
|
64
|
+
});
|
65
|
+
}
|
66
|
+
customValidators.forEach(customValidator => {
|
67
|
+
const isValidForCustomValidator = customValidator.Validate(currentValue, required, error => validationErrors.push(error));
|
68
|
+
if (!isValidForCustomValidator) validationStatus = false;
|
69
|
+
});
|
70
|
+
setErrors(validationErrors);
|
71
|
+
setIsValid(validationStatus);
|
72
|
+
if (!initializing && !ignoreContext) {
|
73
|
+
formContext === null || formContext === void 0 ? void 0 : formContext.updateCallback(componentId.current, {
|
74
|
+
isValid: validationStatus,
|
75
|
+
errors: validationErrors
|
76
|
+
});
|
77
|
+
}
|
78
|
+
return {
|
79
|
+
isValid: validationStatus,
|
80
|
+
errors: validationErrors
|
81
|
+
};
|
82
|
+
}, [required, validators, customValidators, formContext, translations, ignoreContext]);
|
83
|
+
const handleValueChange = (0, _react.useCallback)(newValue => {
|
84
|
+
if (!onTheFlightValidate || onTheFlightValidate(newValue)) {
|
85
|
+
const result = handleValidation(newValue);
|
86
|
+
setValue(newValue);
|
87
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({
|
88
|
+
target: {
|
89
|
+
value: newValue
|
90
|
+
}
|
91
|
+
}, result.isValid);
|
92
|
+
}
|
93
|
+
}, [handleValidation, onTheFlightValidate, onChange]);
|
94
|
+
const handleFocus = (0, _react.useCallback)(() => {
|
95
|
+
if (!disabled) {
|
96
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus();
|
97
|
+
setFocused(true);
|
98
|
+
if (touchOn === 'focus') setTouched(true);
|
99
|
+
}
|
100
|
+
}, [disabled, onFocus, touchOn]);
|
101
|
+
const handleBlur = (0, _react.useCallback)(() => {
|
102
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
103
|
+
setFocused(false);
|
104
|
+
if (touchOn === 'blur') setTouched(true);
|
105
|
+
}, [onBlur, touchOn]);
|
106
|
+
const scrollTo = (0, _react.useCallback)(() => {
|
107
|
+
var _containerRef$current;
|
108
|
+
(_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.scrollIntoView({
|
109
|
+
behavior: 'smooth'
|
110
|
+
});
|
111
|
+
}, []);
|
112
|
+
const setValid = (0, _react.useCallback)(() => {
|
113
|
+
setIsValid(true);
|
114
|
+
setErrors([]);
|
115
|
+
formContext === null || formContext === void 0 ? void 0 : formContext.updateCallback(componentId.current, {
|
116
|
+
isValid: true,
|
117
|
+
errors: []
|
118
|
+
});
|
119
|
+
}, [formContext]);
|
120
|
+
const setInvalid = (0, _react.useCallback)(function () {
|
121
|
+
let validationErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
122
|
+
setIsValid(false);
|
123
|
+
setErrors(validationErrors);
|
124
|
+
formContext === null || formContext === void 0 ? void 0 : formContext.updateCallback(componentId.current, {
|
125
|
+
isValid: false,
|
126
|
+
errors: validationErrors
|
127
|
+
});
|
128
|
+
}, [formContext]);
|
129
|
+
const disableComponent = (0, _react.useCallback)(() => {
|
130
|
+
setComponentDisabled(true);
|
131
|
+
}, []);
|
132
|
+
const enableComponent = (0, _react.useCallback)(() => {
|
133
|
+
setComponentDisabled(false);
|
134
|
+
}, []);
|
135
|
+
(0, _react.useEffect)(() => {
|
136
|
+
handleValidation(value, true);
|
137
|
+
if (!ignoreContext && formContext) {
|
138
|
+
formContext.subscribe(componentId.current, {
|
139
|
+
componentApi: {
|
140
|
+
disableComponent,
|
141
|
+
enableComponent,
|
142
|
+
focus: () => {
|
143
|
+
var _inputRef$current;
|
144
|
+
return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
145
|
+
},
|
146
|
+
scrollTo,
|
147
|
+
touch: () => setTouched(true),
|
148
|
+
unTouch: () => setTouched(false)
|
149
|
+
},
|
150
|
+
validation: {
|
151
|
+
isValid,
|
152
|
+
errors,
|
153
|
+
name: validationName || label
|
154
|
+
}
|
155
|
+
});
|
156
|
+
}
|
157
|
+
return () => {
|
158
|
+
if (!ignoreContext) formContext === null || formContext === void 0 ? void 0 : formContext.unSubscribe(componentId.current);
|
159
|
+
};
|
160
|
+
}, [formContext, ignoreContext, handleValidation, value]);
|
161
|
+
return {
|
162
|
+
value,
|
163
|
+
setValue: handleValueChange,
|
164
|
+
isValid,
|
165
|
+
errors,
|
166
|
+
touched,
|
167
|
+
focused,
|
168
|
+
inputRef,
|
169
|
+
containerRef,
|
170
|
+
handleFocus,
|
171
|
+
handleBlur,
|
172
|
+
scrollTo,
|
173
|
+
setValid,
|
174
|
+
setInvalid,
|
175
|
+
disableComponent,
|
176
|
+
enableComponent,
|
177
|
+
setTouched,
|
178
|
+
componentDisabled
|
179
|
+
};
|
180
|
+
}
|
181
|
+
//# sourceMappingURL=useBaseInput.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useBaseInput.js","names":["_react","require","Validators","_interopRequireWildcard","_Guid","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","useBaseInput","props","value","initialValue","required","validators","customValidators","onTheFlightValidate","onChange","onBlur","onFocus","touchOn","disabled","ignoreContext","formContext","translations","validationName","label","setValue","useState","touched","setTouched","isValid","setIsValid","errors","setErrors","focused","setFocused","componentDisabled","setComponentDisabled","inputRef","useRef","containerRef","componentId","guid","handleValidation","useCallback","currentValue","initializing","arguments","length","undefined","validationErrors","validationStatus","push","forEach","validator","isValidForValidator","EmailValidator","Validate","error","Error","customValidator","isValidForCustomValidator","updateCallback","current","handleValueChange","newValue","result","target","handleFocus","handleBlur","scrollTo","_containerRef$current","scrollIntoView","behavior","setValid","setInvalid","disableComponent","enableComponent","useEffect","subscribe","componentApi","focus","_inputRef$current","touch","unTouch","validation","name","unSubscribe"],"sources":["../../../../src/lib/components/base/input/useBaseInput.tsx"],"sourcesContent":["// experimental and unfinished and unused for now\nimport { useState, useRef, useCallback, useEffect } from 'react';\nimport {\n AllowedHtmlElements,\n BaseTranslations,\n ValidationError,\n} from './BaseInput';\nimport * as Validators from '../../../validators';\nimport { FormContextState } from '../../form/FormContext';\nimport guid from '../../utils/Guid';\n\ninterface UseBaseInputProps<TranslationsT extends BaseTranslations> {\n value?: string;\n required?: boolean;\n validators?: string[];\n customValidators?: Validators.IBaseValidator[];\n onTheFlightValidate?: (value: string) => boolean;\n onChange?: (\n event: React.ChangeEvent<AllowedHtmlElements>,\n isValid: boolean\n ) => void;\n onBlur?: () => void;\n onFocus?: () => void;\n errors?: ValidationError[];\n infoText?: string;\n touchOn?: 'focus' | 'blur';\n showValidation?: boolean;\n disabled?: boolean;\n ignoreContext?: boolean;\n formContext?: FormContextState;\n translations?: TranslationsT;\n validationName?: string;\n label?: string | JSX.Element;\n}\n\nexport function useBaseInput<\n TranslationsT extends BaseTranslations = BaseTranslations\n>(props: UseBaseInputProps<TranslationsT>) {\n const {\n value: initialValue = '',\n required = false,\n validators = [],\n customValidators = [],\n onTheFlightValidate,\n onChange,\n onBlur,\n onFocus,\n //errors: propErrors = [],\n //infoText,\n touchOn = 'focus',\n //showValidation = true,\n disabled = false,\n ignoreContext = false,\n formContext,\n translations,\n validationName,\n label,\n } = props;\n\n const [value, setValue] = useState<string>(initialValue);\n const [touched, setTouched] = useState<boolean>(false);\n const [isValid, setIsValid] = useState<boolean>(true);\n const [errors, setErrors] = useState<ValidationError[]>([]);\n const [focused, setFocused] = useState<boolean>(false);\n const [componentDisabled, setComponentDisabled] = useState<boolean>(disabled);\n\n const inputRef = useRef<AllowedHtmlElements>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const componentId = useRef(guid());\n\n const handleValidation = useCallback(\n (currentValue: string, initializing = false) => {\n let validationErrors: ValidationError[] = [];\n let validationStatus = true;\n\n if (required && !currentValue) {\n validationErrors.push(\n translations?.required || 'This field is required'\n );\n validationStatus = false;\n } else if (validators) {\n validators.forEach((validator) => {\n let isValidForValidator = false;\n switch (validator) {\n case 'email':\n isValidForValidator = new Validators.EmailValidator().Validate(\n currentValue,\n required,\n (error) => validationErrors.push(error)\n );\n break;\n // Add other validators as needed\n default:\n throw new Error(`Validator ${validator} not implemented`);\n }\n if (!isValidForValidator) validationStatus = false;\n });\n }\n\n customValidators.forEach((customValidator) => {\n const isValidForCustomValidator = customValidator.Validate(\n currentValue,\n required,\n (error) => validationErrors.push(error)\n );\n if (!isValidForCustomValidator) validationStatus = false;\n });\n\n setErrors(validationErrors);\n setIsValid(validationStatus);\n\n if (!initializing && !ignoreContext) {\n formContext?.updateCallback(componentId.current, {\n isValid: validationStatus,\n errors: validationErrors,\n });\n }\n\n return { isValid: validationStatus, errors: validationErrors };\n },\n [\n required,\n validators,\n customValidators,\n formContext,\n translations,\n ignoreContext,\n ]\n );\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n if (!onTheFlightValidate || onTheFlightValidate(newValue)) {\n const result = handleValidation(newValue);\n setValue(newValue);\n onChange?.(\n {\n target: { value: newValue },\n } as React.ChangeEvent<AllowedHtmlElements>,\n result.isValid\n );\n }\n },\n [handleValidation, onTheFlightValidate, onChange]\n );\n\n const handleFocus = useCallback(() => {\n if (!disabled) {\n onFocus?.();\n setFocused(true);\n if (touchOn === 'focus') setTouched(true);\n }\n }, [disabled, onFocus, touchOn]);\n\n const handleBlur = useCallback(() => {\n onBlur?.();\n setFocused(false);\n if (touchOn === 'blur') setTouched(true);\n }, [onBlur, touchOn]);\n\n const scrollTo = useCallback(() => {\n containerRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, []);\n\n const setValid = useCallback(() => {\n setIsValid(true);\n setErrors([]);\n formContext?.updateCallback(componentId.current, {\n isValid: true,\n errors: [],\n });\n }, [formContext]);\n\n const setInvalid = useCallback(\n (validationErrors: ValidationError[] = []) => {\n setIsValid(false);\n setErrors(validationErrors);\n formContext?.updateCallback(componentId.current, {\n isValid: false,\n errors: validationErrors,\n });\n },\n [formContext]\n );\n\n const disableComponent = useCallback(() => {\n setComponentDisabled(true);\n }, []);\n\n const enableComponent = useCallback(() => {\n setComponentDisabled(false);\n }, []);\n\n useEffect(() => {\n handleValidation(value, true);\n\n if (!ignoreContext && formContext) {\n formContext.subscribe(componentId.current, {\n componentApi: {\n disableComponent,\n enableComponent,\n focus: () => inputRef.current?.focus(),\n scrollTo,\n touch: () => setTouched(true),\n unTouch: () => setTouched(false),\n },\n validation: {\n isValid,\n errors,\n name: validationName || label,\n },\n });\n }\n\n return () => {\n if (!ignoreContext) formContext?.unSubscribe(componentId.current);\n };\n }, [formContext, ignoreContext, handleValidation, value]);\n\n return {\n value,\n setValue: handleValueChange,\n isValid,\n errors,\n touched,\n focused,\n inputRef,\n containerRef,\n handleFocus,\n handleBlur,\n scrollTo,\n setValid,\n setInvalid,\n disableComponent,\n enableComponent,\n setTouched,\n componentDisabled,\n };\n}\n"],"mappings":"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"}
|
@@ -79,7 +79,7 @@ export declare class TagsRaw<IdT extends number | string = number, T extends Res
|
|
79
79
|
private isMobile;
|
80
80
|
constructor(props: TagsProps<IdT, T> & InjectedProps);
|
81
81
|
focus(): void;
|
82
|
-
componentDidUpdate(oldProps: TagsProps<IdT, T> & InjectedProps): void;
|
82
|
+
componentDidUpdate(oldProps: TagsProps<IdT, T> & InjectedProps, oldState: TagsState<IdT, T>): void;
|
83
83
|
handleLeaveMobileClick(): void;
|
84
84
|
handleClickOutside(e: MouseEvent): void;
|
85
85
|
componentDidMount(): void;
|
@@ -80,7 +80,6 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
80
80
|
var _this$props$onSuggest, _this$props2;
|
81
81
|
(_this$props$onSuggest = (_this$props2 = this.props).onSuggestionsOpened) === null || _this$props$onSuggest === void 0 ? void 0 : _this$props$onSuggest.call(_this$props2);
|
82
82
|
}
|
83
|
-
this.fetchExistingTags(this.state.value);
|
84
83
|
this.setState(() => ({
|
85
84
|
textIsFocused: true,
|
86
85
|
suggestionsVisible: true,
|
@@ -111,7 +110,6 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
111
110
|
value: '',
|
112
111
|
preselectedSuggestion: undefined
|
113
112
|
}, () => {
|
114
|
-
this.fetchExistingTags();
|
115
113
|
this.handleErrors();
|
116
114
|
});
|
117
115
|
} else if (existingTag) {
|
@@ -119,7 +117,6 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
119
117
|
this.setState({
|
120
118
|
value: ''
|
121
119
|
}, () => {
|
122
|
-
this.fetchExistingTags();
|
123
120
|
this.handleErrors();
|
124
121
|
});
|
125
122
|
} else if (this.props.allowNew) {
|
@@ -150,14 +147,14 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
150
147
|
this.setState({
|
151
148
|
suggestionsVisible: this.props.closeSuggestionsAfterCreate ? false : this.state.suggestionsVisible
|
152
149
|
});
|
150
|
+
const newTags = newTag ? this.props.tags ? this.props.tags.concat(newTag) : [newTag] : this.props.tags;
|
153
151
|
if (newTag) {
|
154
|
-
this.props.onTagsChanged(
|
152
|
+
this.props.onTagsChanged(newTags);
|
155
153
|
}
|
156
154
|
this.setState({
|
157
155
|
value: '',
|
158
156
|
textErrors: []
|
159
157
|
}, () => {
|
160
|
-
this.fetchExistingTags();
|
161
158
|
this.handleErrors();
|
162
159
|
});
|
163
160
|
};
|
@@ -199,7 +196,6 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
199
196
|
textIsValid: isValid,
|
200
197
|
suggestionsVisible: true
|
201
198
|
}), () => this.handleErrors());
|
202
|
-
this.fetchExistingTags(e.target.value);
|
203
199
|
};
|
204
200
|
this.handleErrors = function () {
|
205
201
|
let tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props.tags;
|
@@ -253,12 +249,12 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
253
249
|
this.textRef.current.focus();
|
254
250
|
}
|
255
251
|
}
|
256
|
-
componentDidUpdate(oldProps) {
|
252
|
+
componentDidUpdate(oldProps, oldState) {
|
257
253
|
if (oldProps.tags !== this.props.tags || oldProps.validators !== this.props.validators || oldProps.customValidators !== this.props.customValidators || oldProps.required !== this.props.required) {
|
258
254
|
this.handleErrors(this.props.tags);
|
259
255
|
}
|
260
|
-
if (oldProps.tags !== this.props.tags
|
261
|
-
this.fetchExistingTags();
|
256
|
+
if (this.state.suggestionsVisible && (oldProps.tags !== this.props.tags || oldProps.existingTags !== this.props.existingTags || this.state.value !== oldState.value || this.state.suggestionsVisible !== oldState.suggestionsVisible)) {
|
257
|
+
this.fetchExistingTags(this.state.value);
|
262
258
|
}
|
263
259
|
}
|
264
260
|
handleLeaveMobileClick() {
|
@@ -423,9 +419,16 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
423
419
|
fetchingExistingTags: true
|
424
420
|
})), this.props.loadingDelayMs);
|
425
421
|
this.props.fetchExistingTags(startsWith, this.props.tags).then(fetchedExistingTags => {
|
422
|
+
if (fetchedExistingTags) {
|
423
|
+
clearTimeout(timer);
|
424
|
+
this.setState(() => ({
|
425
|
+
fetchedExistingTags,
|
426
|
+
fetchingExistingTags: false
|
427
|
+
}));
|
428
|
+
}
|
429
|
+
}).catch(() => {
|
426
430
|
clearTimeout(timer);
|
427
431
|
this.setState(() => ({
|
428
|
-
fetchedExistingTags,
|
429
432
|
fetchingExistingTags: false
|
430
433
|
}));
|
431
434
|
});
|
@@ -447,10 +450,12 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
447
450
|
circular: true,
|
448
451
|
blank: true,
|
449
452
|
onClick: this.tagRemoveClick(tag),
|
450
|
-
className: "
|
453
|
+
className: "tags-input__tag__removeButton p-0",
|
451
454
|
Component: TagButtonComponent,
|
452
455
|
preventsDefault: false
|
453
|
-
}), /*#__PURE__*/React.createElement(PlusIcon,
|
456
|
+
}), /*#__PURE__*/React.createElement(PlusIcon, {
|
457
|
+
className: "transform-rotate--45"
|
458
|
+
})));
|
454
459
|
const className = (0, _classnames.default)('tags-input__tag', {
|
455
460
|
'tags-input__tag-chip': this.props.showChips
|
456
461
|
});
|
@@ -462,7 +467,7 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
462
467
|
key: index
|
463
468
|
}, body);
|
464
469
|
}
|
465
|
-
return /*#__PURE__*/React.createElement("
|
470
|
+
return /*#__PURE__*/React.createElement("span", {
|
466
471
|
onClick: this.tagClick(tag),
|
467
472
|
className: className,
|
468
473
|
key: index
|