guestbell-forms 3.0.10 → 3.0.11
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/BaseInput.d.ts +3 -3
- package/build/components/base/input/BaseInput.js +11 -4
- package/build/components/base/input/BaseInput.js.map +1 -1
- package/build/components/externalValidationComponent/ExternalValidationComponent.js +1 -2
- package/build/components/externalValidationComponent/ExternalValidationComponent.js.map +1 -1
- package/build/components/money/Money.d.ts +1 -1
- package/build/components/numberInput/NumberInput.js +2 -2
- package/build/components/numberInput/NumberInput.js.map +1 -1
- package/build/components/openingHours/openingHoursDay/OpeningHoursDay.d.ts +1 -1
- package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.d.ts +1 -1
- package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.d.ts +1 -1
- package/build/components/select/Select.d.ts +3 -3
- package/build/components/select/Select.js +5 -3
- package/build/components/select/Select.js.map +1 -1
- package/build/components/submit/Submit.d.ts +2 -2
- package/build/components/tags/Tags.js +2 -2
- package/build/components/tags/Tags.js.map +1 -1
- package/build/components/time/Time.js +2 -2
- package/build/components/time/Time.js.map +1 -1
- package/build/components/timeSpan/TimeSpan.js +2 -2
- package/build/components/timeSpan/TimeSpan.js.map +1 -1
- package/build/dist/report.html +1 -1
- package/package.json +1 -1
@@ -35,7 +35,7 @@ export declare type BaseInputProps<HTMLType extends AllowedHtmlElements, Transla
|
|
35
35
|
touchOn?: 'focus' | 'blur';
|
36
36
|
ignoreContext?: boolean;
|
37
37
|
onTheFlightValidate?: (value: string) => boolean;
|
38
|
-
onFocus?: (
|
38
|
+
onFocus?: () => void;
|
39
39
|
onBlur?: () => void;
|
40
40
|
onSuggestionsClosed?: () => void;
|
41
41
|
onSuggestionsOpened?: () => void;
|
@@ -80,8 +80,8 @@ export declare class BaseInput<P extends BaseInputProps<HTMLType, TranslationsT>
|
|
80
80
|
protected renderDefaultValidation(extraErrors?: ValidationError[]): JSX.Element;
|
81
81
|
protected handleChange(event: React.ChangeEvent<HTMLType>, isValid?: boolean, errors?: ValidationError[]): void;
|
82
82
|
protected subscribeSelf(props: P): void;
|
83
|
-
protected handleBlur(
|
84
|
-
protected handleFocus(
|
83
|
+
protected handleBlur(): void;
|
84
|
+
protected handleFocus(): void;
|
85
85
|
protected getDisabled(): S["disabled"] | P["disabled"];
|
86
86
|
protected setValid(): void;
|
87
87
|
protected setInvalid(errors?: ValidationError[]): void;
|
@@ -123,11 +123,14 @@ class BaseInput extends React.Component {
|
|
123
123
|
}
|
124
124
|
|
125
125
|
focus() {
|
126
|
+
var _this$props$onFocus, _this$props;
|
127
|
+
|
126
128
|
if (this.inputRef) {
|
127
129
|
const domNode = ReactDOM.findDOMNode(this.inputRef.current);
|
128
130
|
domNode && domNode.focus();
|
129
131
|
}
|
130
132
|
|
133
|
+
(_this$props$onFocus = (_this$props = this.props).onFocus) === null || _this$props$onFocus === void 0 ? void 0 : _this$props$onFocus.call(_this$props);
|
131
134
|
this.touch();
|
132
135
|
}
|
133
136
|
|
@@ -216,8 +219,10 @@ class BaseInput extends React.Component {
|
|
216
219
|
}
|
217
220
|
}
|
218
221
|
|
219
|
-
handleBlur(
|
220
|
-
|
222
|
+
handleBlur() {
|
223
|
+
var _this$props$onBlur, _this$props2;
|
224
|
+
|
225
|
+
(_this$props$onBlur = (_this$props2 = this.props).onBlur) === null || _this$props$onBlur === void 0 ? void 0 : _this$props$onBlur.call(_this$props2);
|
221
226
|
let state = {
|
222
227
|
focused: false
|
223
228
|
};
|
@@ -232,9 +237,11 @@ class BaseInput extends React.Component {
|
|
232
237
|
this.setState(state);
|
233
238
|
}
|
234
239
|
|
235
|
-
handleFocus(
|
240
|
+
handleFocus() {
|
236
241
|
if (!this.props.disabled) {
|
237
|
-
|
242
|
+
var _this$props$onFocus2, _this$props3;
|
243
|
+
|
244
|
+
(_this$props$onFocus2 = (_this$props3 = this.props).onFocus) === null || _this$props$onFocus2 === void 0 ? void 0 : _this$props$onFocus2.call(_this$props3);
|
238
245
|
let state = {
|
239
246
|
focused: true
|
240
247
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BaseInput.js","names":["defaultBaseTranslations","required","BaseInput","React","Component","constructor","props","subscribe","guid","res","handleValueChange","value","state","isValid","errors","touched","defaultTouched","disabled","focused","handleValueChangeEnabled","containerRef","createRef","inputRef","handleChange","bind","handleBlur","handleFocus","setValid","focus","scrollTo","setInvalid","disableComponent","enableComponent","touch","unTouch","subscribeSelf","componentWillUnmount","ignoreContext","formContext","unSubscribe","componentId","componentDidUpdate","oldProps","oldState","validators","customValidators","domNode","ReactDOM","findDOMNode","current","scrollIntoView","behavior","setState","shouldComponentUpdate","nextProps","nextState","shouldUpdate","shallowEqual","reRendersWhenContextChanges","undefined","getValidationClass","extraErrors","showValidation","length","renderDefaultValidation","finalErrors","concat","filter","i","lastValidation","map","item","index","event","target","onTheFlightValidate","onChange","componentApi","validation","name","validationName","title","label","e","onBlur","touchOn","Object","assign","onFocus","getDisabled","updateCallback","renderLabel","touchable","tooltip","classNames","renderTooltip","renderTitle","initializing","translations","getTranslations","push","forEach","validator","validInner","Validators","EmailValidator","Validate","error","NumberValidator","LatitudeValidator","LongitudeValidator","UrlValidator","Error","customValidator","onErrorsChanged","content","Tippy","require","default","document","body","tooltipProps","_defaultTranslations","className"],"sources":["../../../../src/lib/components/base/input/BaseInput.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport type { TippyProps } from '@tippy.js/react';\r\n\r\n// Misc\r\nimport * as Validators from '../../../validators';\r\nimport guid from '../../utils/Guid';\r\nimport { FormContextProps } from '../../form/FormContext';\r\nimport { shallowEqual } from '../../utils/ShallowEqual';\r\nimport { Theme } from '../../../types/Theme';\r\nimport classNames from 'classnames';\r\n\r\nexport interface ComponentApi {\r\n focus: () => void;\r\n touch: () => void;\r\n unTouch: () => void;\r\n enableComponent: () => void;\r\n disableComponent: () => void;\r\n scrollTo: () => void;\r\n}\r\n\r\nexport type ValidationError = string | JSX.Element;\r\n\r\nexport type AllowedHtmlElements =\r\n | HTMLInputElement\r\n | HTMLSelectElement\r\n | HTMLTextAreaElement;\r\n\r\nexport const defaultBaseTranslations = {\r\n required: 'Required',\r\n};\r\n\r\nexport type BaseTranslations = Partial<typeof defaultBaseTranslations>;\r\n\r\nexport type BaseInputProps<\r\n HTMLType extends AllowedHtmlElements,\r\n TranslationsT extends BaseTranslations = BaseTranslations\r\n> = {\r\n theme?: Theme;\r\n id?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n label?: string | JSX.Element;\r\n tooltip?: string | JSX.Element;\r\n tooltipProps?: TippyProps;\r\n value?: string;\r\n onChange?: (e: React.ChangeEvent<HTMLType>, isValid: boolean) => void;\r\n required?: boolean;\r\n customValidators?: Validators.IBaseValidator[];\r\n validators?: Validators.ValidatorTypes[];\r\n noValidate?: boolean;\r\n validationName?: string;\r\n touchOn?: 'focus' | 'blur';\r\n ignoreContext?: boolean;\r\n onTheFlightValidate?: (value: string) => boolean;\r\n onFocus?: (e: React.SyntheticEvent<{}>) => void;\r\n onBlur?: () => void;\r\n onSuggestionsClosed?: () => void;\r\n onSuggestionsOpened?: () => void;\r\n onClick?: (e: React.MouseEvent) => void;\r\n title?: string | JSX.Element;\r\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\r\n errors?: ValidationError[];\r\n onErrorsChanged?: (errors: ValidationError[]) => void;\r\n showValidation?: boolean;\r\n reRendersWhenContextChanges?: boolean;\r\n defaultTouched?: boolean;\r\n translations?: TranslationsT;\r\n inputGroupClassName?: string;\r\n} & FormContextProps;\r\n\r\nexport interface BaseInputState {\r\n isValid: boolean;\r\n value: string;\r\n errors: ValidationError[];\r\n validator: undefined;\r\n touched: boolean;\r\n disabled: boolean;\r\n focused: boolean;\r\n handleValueChangeEnabled: boolean;\r\n}\r\n\r\nexport class BaseInput<\r\n P extends BaseInputProps<HTMLType, TranslationsT>,\r\n S extends BaseInputState,\r\n HTMLType extends AllowedHtmlElements,\r\n TranslationsT extends BaseTranslations = BaseTranslations\r\n> extends React.Component<P, S> implements ComponentApi {\r\n public static defaultProps: BaseInputProps<never> = {\r\n className: undefined,\r\n required: false,\r\n label: undefined,\r\n disabled: false,\r\n touchOn: 'focus',\r\n ignoreContext: false,\r\n showValidation: true,\r\n formContext: undefined,\r\n reRendersWhenContextChanges: false,\r\n };\r\n\r\n public componentId = guid();\r\n\r\n public inputRef: React.RefObject<HTMLType>;\r\n\r\n protected containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n private lastValidation: JSX.Element[];\r\n\r\n constructor(props: P, subscribe: boolean = true) {\r\n super(props);\r\n const res = this.handleValueChange(this.props.value, true, [], props, true);\r\n this.state = {\r\n isValid: res.isValid,\r\n errors: res.errors,\r\n value: props.value ? props.value : '',\r\n touched: props.defaultTouched,\r\n disabled: false,\r\n focused: false,\r\n handleValueChangeEnabled: true,\r\n } as S;\r\n this.containerRef = React.createRef<HTMLDivElement>();\r\n this.inputRef = React.createRef<HTMLType>();\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleBlur = this.handleBlur.bind(this);\r\n this.handleFocus = this.handleFocus.bind(this);\r\n this.setValid = this.setValid.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.scrollTo = this.scrollTo.bind(this);\r\n this.setInvalid = this.setInvalid.bind(this);\r\n this.disableComponent = this.disableComponent.bind(this);\r\n this.enableComponent = this.enableComponent.bind(this);\r\n this.touch = this.touch.bind(this);\r\n this.unTouch = this.unTouch.bind(this);\r\n if (subscribe) {\r\n this.subscribeSelf(props);\r\n }\r\n }\r\n\r\n public componentWillUnmount() {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.unSubscribe(this.componentId);\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: P, oldState: S) {\r\n if (\r\n oldProps.value !== this.props.value ||\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.handleValueChange(this.props.value, true, [], this.props);\r\n }\r\n }\r\n\r\n public scrollTo() {\r\n const domNode: HTMLDivElement = ReactDOM.findDOMNode(\r\n (this.containerRef as React.RefObject<HTMLDivElement>).current\r\n ) as HTMLDivElement;\r\n domNode && domNode.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n public touch() {\r\n this.setState({ touched: true });\r\n this.handleValueChange(this.state.value || '');\r\n }\r\n\r\n public unTouch() {\r\n this.setState({ touched: false });\r\n }\r\n\r\n public disableComponent() {\r\n this.setState({ disabled: true });\r\n }\r\n\r\n public enableComponent() {\r\n this.setState({ disabled: false });\r\n }\r\n\r\n public focus() {\r\n if (this.inputRef) {\r\n const domNode: HTMLElement = ReactDOM.findDOMNode(\r\n (this.inputRef as React.RefObject<HTMLElement>).current\r\n ) as HTMLElement;\r\n domNode && domNode.focus();\r\n }\r\n this.touch();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: P, nextState: S) {\r\n let shouldUpdate =\r\n !shallowEqual(\r\n this.props,\r\n nextProps,\r\n !this.props.reRendersWhenContextChanges ? 'formContext' : undefined\r\n ) || !shallowEqual(this.state, nextState);\r\n return shouldUpdate;\r\n }\r\n\r\n protected getValidationClass(extraErrors?: ValidationError[]) {\r\n if (!this.props.showValidation || !this.state.touched) {\r\n return 'validation__success';\r\n }\r\n return this.state.isValid &&\r\n (!this.props.errors || this.props.errors.length === 0) &&\r\n (!this.state.errors || this.state.errors.length === 0) &&\r\n (!extraErrors || extraErrors.length === 0)\r\n ? 'validation__success'\r\n : 'validation__error';\r\n }\r\n\r\n protected renderDefaultValidation(extraErrors?: ValidationError[]) {\r\n if (this.props.disabled) {\r\n return null;\r\n }\r\n if (!this.props.showValidation) {\r\n return null;\r\n }\r\n let finalErrors: ValidationError[] = this.state.errors;\r\n if (!finalErrors) {\r\n finalErrors = [];\r\n }\r\n if (extraErrors) {\r\n finalErrors = finalErrors.concat(extraErrors);\r\n }\r\n if (this.props.errors) {\r\n finalErrors = finalErrors.concat(this.props.errors);\r\n }\r\n finalErrors = finalErrors.filter(i => i);\r\n if (finalErrors.length > 0) {\r\n this.lastValidation = finalErrors.map((item, index) => (\r\n <li key={index} className=\"validation__item\">\r\n {item}\r\n </li>\r\n ));\r\n }\r\n return (\r\n <div className=\"validation__container\">\r\n <ul className=\"validation__ul\">{this.lastValidation}</ul>\r\n </div>\r\n );\r\n }\r\n\r\n protected handleChange(\r\n event: React.ChangeEvent<HTMLType>,\r\n isValid?: boolean,\r\n errors: ValidationError[] = []\r\n ) {\r\n let value = event.target.value;\r\n if (\r\n !this.props.onTheFlightValidate ||\r\n (this.props.onTheFlightValidate && this.props.onTheFlightValidate(value))\r\n ) {\r\n const res = this.handleValueChange(value, isValid, errors);\r\n if (this.props.onChange) {\r\n this.props.onChange(event, res.isValid);\r\n }\r\n }\r\n }\r\n\r\n protected subscribeSelf(props: P) {\r\n if (!props.ignoreContext && props.formContext) {\r\n props.formContext.subscribe(this.componentId, {\r\n componentApi: {\r\n disableComponent: this.disableComponent,\r\n enableComponent: this.enableComponent,\r\n touch: this.touch,\r\n unTouch: this.unTouch,\r\n scrollTo: this.scrollTo,\r\n focus: this.focus,\r\n },\r\n validation: {\r\n isValid: this.state.isValid,\r\n errors: this.state.errors,\r\n name: this.props.validationName\r\n ? this.props.validationName\r\n : this.props.title\r\n ? this.props.title\r\n : this.props.label,\r\n },\r\n });\r\n }\r\n }\r\n\r\n protected handleBlur(e: React.FocusEvent<HTMLType>) {\r\n this.props.onBlur && this.props.onBlur();\r\n let state = { focused: false };\r\n if (!this.state.touched && this.props.touchOn === 'blur') {\r\n state = Object.assign(state, { touched: true });\r\n this.handleValueChange(this.state.value);\r\n }\r\n this.setState(state);\r\n }\r\n\r\n protected handleFocus(e: React.FocusEvent<HTMLType>) {\r\n if (!this.props.disabled) {\r\n this.props.onFocus && this.props.onFocus(e);\r\n let state = { focused: true };\r\n if (!this.state.touched && this.props.touchOn === 'focus') {\r\n state = Object.assign(state, { touched: true });\r\n this.handleValueChange(this.state.value);\r\n }\r\n this.setState(state);\r\n }\r\n }\r\n\r\n protected getDisabled() {\r\n return this.state.disabled ? this.state.disabled : this.props.disabled;\r\n }\r\n\r\n protected setValid() {\r\n this.setState(\r\n () => ({ isValid: true, errors: [] }),\r\n () => {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: true,\r\n errors: [],\r\n },\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n protected setInvalid(errors: ValidationError[] = []) {\r\n this.setState(\r\n () => ({ isValid: false, errors }),\r\n () => {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: false,\r\n errors: errors,\r\n },\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n protected renderLabel(touchable: boolean = false) {\r\n if (!this.props.tooltip || (this.props.tooltip && this.props.title)) {\r\n return (\r\n <span\r\n className={classNames('w-100', { 'label--no-touch': !touchable })}\r\n >\r\n {this.props.label}\r\n </span>\r\n );\r\n }\r\n return (\r\n <React.Fragment>\r\n <span className={touchable ? '' : 'label--no-touch'}>\r\n {this.props.label}\r\n </span>\r\n {this.renderTooltip()}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n protected renderTitle() {\r\n if (!this.props.tooltip) {\r\n return this.props.title;\r\n }\r\n return (\r\n <React.Fragment>\r\n {this.props.title}\r\n {this.renderTooltip()}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n protected handleValueChange(\r\n value: string,\r\n isValid: boolean = true,\r\n errors: ValidationError[] = [],\r\n props: P = this.props,\r\n initializing: boolean = false\r\n ): {\r\n isValid: boolean;\r\n errors: ValidationError[];\r\n } {\r\n if (!initializing && !this.state.handleValueChangeEnabled) {\r\n return { isValid, errors: [] };\r\n }\r\n if (props.required && !value) {\r\n const translations = this.getTranslations(defaultBaseTranslations);\r\n errors.push(translations.required);\r\n isValid = false;\r\n } else {\r\n if (!props.required && !value) {\r\n isValid = true;\r\n } else {\r\n if (props.validators) {\r\n isValid = true;\r\n props.validators.forEach(validator => {\r\n let validInner = false;\r\n switch (validator) {\r\n case 'email':\r\n validInner = new Validators.EmailValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'number':\r\n validInner = new Validators.NumberValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'latitude':\r\n validInner = new Validators.LatitudeValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'longitude':\r\n validInner = new Validators.LongitudeValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'url':\r\n validInner = new Validators.UrlValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n default:\r\n throw new Error(`Validator ${validator} not implemented`);\r\n }\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n if (props.customValidators) {\r\n props.customValidators.forEach(customValidator => {\r\n let validInner = false;\r\n validInner = customValidator.Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n props.onErrorsChanged && props.onErrorsChanged(errors);\r\n if (!initializing) {\r\n this.setState({ value, isValid, errors });\r\n if (!props.ignoreContext) {\r\n props.formContext &&\r\n props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: isValid,\r\n errors: errors,\r\n },\r\n });\r\n }\r\n }\r\n return { isValid, errors };\r\n }\r\n\r\n protected renderTooltip(\r\n content: JSX.Element = <span className=\"label--help-icon\">?</span>\r\n ) {\r\n if (this.props.tooltip) {\r\n const Tippy = require('@tippy.js/react').default;\r\n return (\r\n <Tippy\r\n content={this.props.tooltip}\r\n placement=\"bottom\"\r\n animation=\"scale-subtle\"\r\n arrow={false}\r\n duration={200}\r\n delay={[75, 0]}\r\n distance={8}\r\n interactive={true}\r\n appendTo={document?.body}\r\n trigger=\"mouseenter focus\"\r\n {...this.props.tooltipProps}\r\n >\r\n {content}\r\n </Tippy>\r\n );\r\n }\r\n return content;\r\n }\r\n\r\n protected getTranslations(\r\n _defaultTranslations: BaseTranslations\r\n ): TranslationsT {\r\n return {\r\n ..._defaultTranslations,\r\n ...this.props.translations,\r\n };\r\n }\r\n}\r\nexport default BaseInput;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"BaseInput.js","names":["defaultBaseTranslations","required","BaseInput","React","Component","constructor","props","subscribe","guid","res","handleValueChange","value","state","isValid","errors","touched","defaultTouched","disabled","focused","handleValueChangeEnabled","containerRef","createRef","inputRef","handleChange","bind","handleBlur","handleFocus","setValid","focus","scrollTo","setInvalid","disableComponent","enableComponent","touch","unTouch","subscribeSelf","componentWillUnmount","ignoreContext","formContext","unSubscribe","componentId","componentDidUpdate","oldProps","oldState","validators","customValidators","domNode","ReactDOM","findDOMNode","current","scrollIntoView","behavior","setState","onFocus","shouldComponentUpdate","nextProps","nextState","shouldUpdate","shallowEqual","reRendersWhenContextChanges","undefined","getValidationClass","extraErrors","showValidation","length","renderDefaultValidation","finalErrors","concat","filter","i","lastValidation","map","item","index","event","target","onTheFlightValidate","onChange","componentApi","validation","name","validationName","title","label","onBlur","touchOn","Object","assign","getDisabled","updateCallback","renderLabel","touchable","tooltip","classNames","renderTooltip","renderTitle","initializing","translations","getTranslations","push","forEach","validator","validInner","Validators","EmailValidator","Validate","error","NumberValidator","LatitudeValidator","LongitudeValidator","UrlValidator","Error","customValidator","onErrorsChanged","content","Tippy","require","default","document","body","tooltipProps","_defaultTranslations","className"],"sources":["../../../../src/lib/components/base/input/BaseInput.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport type { TippyProps } from '@tippy.js/react';\r\n\r\n// Misc\r\nimport * as Validators from '../../../validators';\r\nimport guid from '../../utils/Guid';\r\nimport { FormContextProps } from '../../form/FormContext';\r\nimport { shallowEqual } from '../../utils/ShallowEqual';\r\nimport { Theme } from '../../../types/Theme';\r\nimport classNames from 'classnames';\r\n\r\nexport interface ComponentApi {\r\n focus: () => void;\r\n touch: () => void;\r\n unTouch: () => void;\r\n enableComponent: () => void;\r\n disableComponent: () => void;\r\n scrollTo: () => void;\r\n}\r\n\r\nexport type ValidationError = string | JSX.Element;\r\n\r\nexport type AllowedHtmlElements =\r\n | HTMLInputElement\r\n | HTMLSelectElement\r\n | HTMLTextAreaElement;\r\n\r\nexport const defaultBaseTranslations = {\r\n required: 'Required',\r\n};\r\n\r\nexport type BaseTranslations = Partial<typeof defaultBaseTranslations>;\r\n\r\nexport type BaseInputProps<\r\n HTMLType extends AllowedHtmlElements,\r\n TranslationsT extends BaseTranslations = BaseTranslations\r\n> = {\r\n theme?: Theme;\r\n id?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n label?: string | JSX.Element;\r\n tooltip?: string | JSX.Element;\r\n tooltipProps?: TippyProps;\r\n value?: string;\r\n onChange?: (e: React.ChangeEvent<HTMLType>, isValid: boolean) => void;\r\n required?: boolean;\r\n customValidators?: Validators.IBaseValidator[];\r\n validators?: Validators.ValidatorTypes[];\r\n noValidate?: boolean;\r\n validationName?: string;\r\n touchOn?: 'focus' | 'blur';\r\n ignoreContext?: boolean;\r\n onTheFlightValidate?: (value: string) => boolean;\r\n onFocus?: () => void;\r\n onBlur?: () => void;\r\n onSuggestionsClosed?: () => void;\r\n onSuggestionsOpened?: () => void;\r\n onClick?: (e: React.MouseEvent) => void;\r\n title?: string | JSX.Element;\r\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\r\n errors?: ValidationError[];\r\n onErrorsChanged?: (errors: ValidationError[]) => void;\r\n showValidation?: boolean;\r\n reRendersWhenContextChanges?: boolean;\r\n defaultTouched?: boolean;\r\n translations?: TranslationsT;\r\n inputGroupClassName?: string;\r\n} & FormContextProps;\r\n\r\nexport interface BaseInputState {\r\n isValid: boolean;\r\n value: string;\r\n errors: ValidationError[];\r\n validator: undefined;\r\n touched: boolean;\r\n disabled: boolean;\r\n focused: boolean;\r\n handleValueChangeEnabled: boolean;\r\n}\r\n\r\nexport class BaseInput<\r\n P extends BaseInputProps<HTMLType, TranslationsT>,\r\n S extends BaseInputState,\r\n HTMLType extends AllowedHtmlElements,\r\n TranslationsT extends BaseTranslations = BaseTranslations\r\n> extends React.Component<P, S> implements ComponentApi {\r\n public static defaultProps: BaseInputProps<never> = {\r\n className: undefined,\r\n required: false,\r\n label: undefined,\r\n disabled: false,\r\n touchOn: 'focus',\r\n ignoreContext: false,\r\n showValidation: true,\r\n formContext: undefined,\r\n reRendersWhenContextChanges: false,\r\n };\r\n\r\n public componentId = guid();\r\n\r\n public inputRef: React.RefObject<HTMLType>;\r\n\r\n protected containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n private lastValidation: JSX.Element[];\r\n\r\n constructor(props: P, subscribe: boolean = true) {\r\n super(props);\r\n const res = this.handleValueChange(this.props.value, true, [], props, true);\r\n this.state = {\r\n isValid: res.isValid,\r\n errors: res.errors,\r\n value: props.value ? props.value : '',\r\n touched: props.defaultTouched,\r\n disabled: false,\r\n focused: false,\r\n handleValueChangeEnabled: true,\r\n } as S;\r\n this.containerRef = React.createRef<HTMLDivElement>();\r\n this.inputRef = React.createRef<HTMLType>();\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleBlur = this.handleBlur.bind(this);\r\n this.handleFocus = this.handleFocus.bind(this);\r\n this.setValid = this.setValid.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.scrollTo = this.scrollTo.bind(this);\r\n this.setInvalid = this.setInvalid.bind(this);\r\n this.disableComponent = this.disableComponent.bind(this);\r\n this.enableComponent = this.enableComponent.bind(this);\r\n this.touch = this.touch.bind(this);\r\n this.unTouch = this.unTouch.bind(this);\r\n if (subscribe) {\r\n this.subscribeSelf(props);\r\n }\r\n }\r\n\r\n public componentWillUnmount() {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.unSubscribe(this.componentId);\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: P, oldState: S) {\r\n if (\r\n oldProps.value !== this.props.value ||\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.handleValueChange(this.props.value, true, [], this.props);\r\n }\r\n }\r\n\r\n public scrollTo() {\r\n const domNode: HTMLDivElement = ReactDOM.findDOMNode(\r\n (this.containerRef as React.RefObject<HTMLDivElement>).current\r\n ) as HTMLDivElement;\r\n domNode && domNode.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n public touch() {\r\n this.setState({ touched: true });\r\n this.handleValueChange(this.state.value || '');\r\n }\r\n\r\n public unTouch() {\r\n this.setState({ touched: false });\r\n }\r\n\r\n public disableComponent() {\r\n this.setState({ disabled: true });\r\n }\r\n\r\n public enableComponent() {\r\n this.setState({ disabled: false });\r\n }\r\n\r\n public focus() {\r\n if (this.inputRef) {\r\n const domNode: HTMLElement = ReactDOM.findDOMNode(\r\n (this.inputRef as React.RefObject<HTMLElement>).current\r\n ) as HTMLElement;\r\n domNode && domNode.focus();\r\n }\r\n this.props.onFocus?.();\r\n this.touch();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: P, nextState: S) {\r\n let shouldUpdate =\r\n !shallowEqual(\r\n this.props,\r\n nextProps,\r\n !this.props.reRendersWhenContextChanges ? 'formContext' : undefined\r\n ) || !shallowEqual(this.state, nextState);\r\n return shouldUpdate;\r\n }\r\n\r\n protected getValidationClass(extraErrors?: ValidationError[]) {\r\n if (!this.props.showValidation || !this.state.touched) {\r\n return 'validation__success';\r\n }\r\n return this.state.isValid &&\r\n (!this.props.errors || this.props.errors.length === 0) &&\r\n (!this.state.errors || this.state.errors.length === 0) &&\r\n (!extraErrors || extraErrors.length === 0)\r\n ? 'validation__success'\r\n : 'validation__error';\r\n }\r\n\r\n protected renderDefaultValidation(extraErrors?: ValidationError[]) {\r\n if (this.props.disabled) {\r\n return null;\r\n }\r\n if (!this.props.showValidation) {\r\n return null;\r\n }\r\n let finalErrors: ValidationError[] = this.state.errors;\r\n if (!finalErrors) {\r\n finalErrors = [];\r\n }\r\n if (extraErrors) {\r\n finalErrors = finalErrors.concat(extraErrors);\r\n }\r\n if (this.props.errors) {\r\n finalErrors = finalErrors.concat(this.props.errors);\r\n }\r\n finalErrors = finalErrors.filter(i => i);\r\n if (finalErrors.length > 0) {\r\n this.lastValidation = finalErrors.map((item, index) => (\r\n <li key={index} className=\"validation__item\">\r\n {item}\r\n </li>\r\n ));\r\n }\r\n return (\r\n <div className=\"validation__container\">\r\n <ul className=\"validation__ul\">{this.lastValidation}</ul>\r\n </div>\r\n );\r\n }\r\n\r\n protected handleChange(\r\n event: React.ChangeEvent<HTMLType>,\r\n isValid?: boolean,\r\n errors: ValidationError[] = []\r\n ) {\r\n let value = event.target.value;\r\n if (\r\n !this.props.onTheFlightValidate ||\r\n (this.props.onTheFlightValidate && this.props.onTheFlightValidate(value))\r\n ) {\r\n const res = this.handleValueChange(value, isValid, errors);\r\n if (this.props.onChange) {\r\n this.props.onChange(event, res.isValid);\r\n }\r\n }\r\n }\r\n\r\n protected subscribeSelf(props: P) {\r\n if (!props.ignoreContext && props.formContext) {\r\n props.formContext.subscribe(this.componentId, {\r\n componentApi: {\r\n disableComponent: this.disableComponent,\r\n enableComponent: this.enableComponent,\r\n touch: this.touch,\r\n unTouch: this.unTouch,\r\n scrollTo: this.scrollTo,\r\n focus: this.focus,\r\n },\r\n validation: {\r\n isValid: this.state.isValid,\r\n errors: this.state.errors,\r\n name: this.props.validationName\r\n ? this.props.validationName\r\n : this.props.title\r\n ? this.props.title\r\n : this.props.label,\r\n },\r\n });\r\n }\r\n }\r\n\r\n protected handleBlur() {\r\n this.props.onBlur?.();\r\n let state = { focused: false };\r\n if (!this.state.touched && this.props.touchOn === 'blur') {\r\n state = Object.assign(state, { touched: true });\r\n this.handleValueChange(this.state.value);\r\n }\r\n this.setState(state);\r\n }\r\n\r\n protected handleFocus() {\r\n if (!this.props.disabled) {\r\n this.props.onFocus?.();\r\n let state = { focused: true };\r\n if (!this.state.touched && this.props.touchOn === 'focus') {\r\n state = Object.assign(state, { touched: true });\r\n this.handleValueChange(this.state.value);\r\n }\r\n this.setState(state);\r\n }\r\n }\r\n\r\n protected getDisabled() {\r\n return this.state.disabled ? this.state.disabled : this.props.disabled;\r\n }\r\n\r\n protected setValid() {\r\n this.setState(\r\n () => ({ isValid: true, errors: [] }),\r\n () => {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: true,\r\n errors: [],\r\n },\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n protected setInvalid(errors: ValidationError[] = []) {\r\n this.setState(\r\n () => ({ isValid: false, errors }),\r\n () => {\r\n if (!this.props.ignoreContext) {\r\n this.props.formContext &&\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: false,\r\n errors: errors,\r\n },\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n protected renderLabel(touchable: boolean = false) {\r\n if (!this.props.tooltip || (this.props.tooltip && this.props.title)) {\r\n return (\r\n <span\r\n className={classNames('w-100', { 'label--no-touch': !touchable })}\r\n >\r\n {this.props.label}\r\n </span>\r\n );\r\n }\r\n return (\r\n <React.Fragment>\r\n <span className={touchable ? '' : 'label--no-touch'}>\r\n {this.props.label}\r\n </span>\r\n {this.renderTooltip()}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n protected renderTitle() {\r\n if (!this.props.tooltip) {\r\n return this.props.title;\r\n }\r\n return (\r\n <React.Fragment>\r\n {this.props.title}\r\n {this.renderTooltip()}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n protected handleValueChange(\r\n value: string,\r\n isValid: boolean = true,\r\n errors: ValidationError[] = [],\r\n props: P = this.props,\r\n initializing: boolean = false\r\n ): {\r\n isValid: boolean;\r\n errors: ValidationError[];\r\n } {\r\n if (!initializing && !this.state.handleValueChangeEnabled) {\r\n return { isValid, errors: [] };\r\n }\r\n if (props.required && !value) {\r\n const translations = this.getTranslations(defaultBaseTranslations);\r\n errors.push(translations.required);\r\n isValid = false;\r\n } else {\r\n if (!props.required && !value) {\r\n isValid = true;\r\n } else {\r\n if (props.validators) {\r\n isValid = true;\r\n props.validators.forEach(validator => {\r\n let validInner = false;\r\n switch (validator) {\r\n case 'email':\r\n validInner = new Validators.EmailValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'number':\r\n validInner = new Validators.NumberValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'latitude':\r\n validInner = new Validators.LatitudeValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'longitude':\r\n validInner = new Validators.LongitudeValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n case 'url':\r\n validInner = new Validators.UrlValidator().Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n break;\r\n default:\r\n throw new Error(`Validator ${validator} not implemented`);\r\n }\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n if (props.customValidators) {\r\n props.customValidators.forEach(customValidator => {\r\n let validInner = false;\r\n validInner = customValidator.Validate(\r\n value,\r\n props.required,\r\n error => errors.push(error)\r\n );\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n props.onErrorsChanged && props.onErrorsChanged(errors);\r\n if (!initializing) {\r\n this.setState({ value, isValid, errors });\r\n if (!props.ignoreContext) {\r\n props.formContext &&\r\n props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: isValid,\r\n errors: errors,\r\n },\r\n });\r\n }\r\n }\r\n return { isValid, errors };\r\n }\r\n\r\n protected renderTooltip(\r\n content: JSX.Element = <span className=\"label--help-icon\">?</span>\r\n ) {\r\n if (this.props.tooltip) {\r\n const Tippy = require('@tippy.js/react').default;\r\n return (\r\n <Tippy\r\n content={this.props.tooltip}\r\n placement=\"bottom\"\r\n animation=\"scale-subtle\"\r\n arrow={false}\r\n duration={200}\r\n delay={[75, 0]}\r\n distance={8}\r\n interactive={true}\r\n appendTo={document?.body}\r\n trigger=\"mouseenter focus\"\r\n {...this.props.tooltipProps}\r\n >\r\n {content}\r\n </Tippy>\r\n );\r\n }\r\n return content;\r\n }\r\n\r\n protected getTranslations(\r\n _defaultTranslations: BaseTranslations\r\n ): TranslationsT {\r\n return {\r\n ..._defaultTranslations,\r\n ...this.props.translations,\r\n };\r\n }\r\n}\r\nexport default BaseInput;\r\n"],"mappings":";;;;;;;AACA;;AACA;;AAIA;;AACA;;AAEA;;AAEA;;;;;;;;;;;;;;;;AAkBO,MAAMA,uBAAuB,GAAG;EACrCC,QAAQ,EAAE;AAD2B,CAAhC;;;AAsDA,MAAMC,SAAN,SAKGC,KAAK,CAACC,SALT,CAKiD;EAqBtDC,WAAW,CAACC,KAAD,EAAsC;IAAA,IAA3BC,SAA2B,uEAAN,IAAM;IAC/C,MAAMD,KAAN;;IAD+C,qCAR5B,IAAAE,aAAA,GAQ4B;;IAAA;;IAAA;;IAAA;;IAE/C,MAAMC,GAAG,GAAG,KAAKC,iBAAL,CAAuB,KAAKJ,KAAL,CAAWK,KAAlC,EAAyC,IAAzC,EAA+C,EAA/C,EAAmDL,KAAnD,EAA0D,IAA1D,CAAZ;IACA,KAAKM,KAAL,GAAa;MACXC,OAAO,EAAEJ,GAAG,CAACI,OADF;MAEXC,MAAM,EAAEL,GAAG,CAACK,MAFD;MAGXH,KAAK,EAAEL,KAAK,CAACK,KAAN,GAAcL,KAAK,CAACK,KAApB,GAA4B,EAHxB;MAIXI,OAAO,EAAET,KAAK,CAACU,cAJJ;MAKXC,QAAQ,EAAE,KALC;MAMXC,OAAO,EAAE,KANE;MAOXC,wBAAwB,EAAE;IAPf,CAAb;IASA,KAAKC,YAAL,gBAAoBjB,KAAK,CAACkB,SAAN,EAApB;IACA,KAAKC,QAAL,gBAAgBnB,KAAK,CAACkB,SAAN,EAAhB;IACA,KAAKE,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKC,UAAL,GAAkB,KAAKA,UAAL,CAAgBD,IAAhB,CAAqB,IAArB,CAAlB;IACA,KAAKE,WAAL,GAAmB,KAAKA,WAAL,CAAiBF,IAAjB,CAAsB,IAAtB,CAAnB;IACA,KAAKG,QAAL,GAAgB,KAAKA,QAAL,CAAcH,IAAd,CAAmB,IAAnB,CAAhB;IACA,KAAKI,KAAL,GAAa,KAAKA,KAAL,CAAWJ,IAAX,CAAgB,IAAhB,CAAb;IACA,KAAKK,QAAL,GAAgB,KAAKA,QAAL,CAAcL,IAAd,CAAmB,IAAnB,CAAhB;IACA,KAAKM,UAAL,GAAkB,KAAKA,UAAL,CAAgBN,IAAhB,CAAqB,IAArB,CAAlB;IACA,KAAKO,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBP,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKQ,eAAL,GAAuB,KAAKA,eAAL,CAAqBR,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKS,KAAL,GAAa,KAAKA,KAAL,CAAWT,IAAX,CAAgB,IAAhB,CAAb;IACA,KAAKU,OAAL,GAAe,KAAKA,OAAL,CAAaV,IAAb,CAAkB,IAAlB,CAAf;;IACA,IAAIjB,SAAJ,EAAe;MACb,KAAK4B,aAAL,CAAmB7B,KAAnB;IACD;EACF;;EAEM8B,oBAAoB,GAAG;IAC5B,IAAI,CAAC,KAAK9B,KAAL,CAAW+B,aAAhB,EAA+B;MAC7B,KAAK/B,KAAL,CAAWgC,WAAX,IACE,KAAKhC,KAAL,CAAWgC,WAAX,CAAuBC,WAAvB,CAAmC,KAAKC,WAAxC,CADF;IAED;EACF;;EAEMC,kBAAkB,CAACC,QAAD,EAAcC,QAAd,EAA2B;IAClD,IACED,QAAQ,CAAC/B,KAAT,KAAmB,KAAKL,KAAL,CAAWK,KAA9B,IACA+B,QAAQ,CAACE,UAAT,KAAwB,KAAKtC,KAAL,CAAWsC,UADnC,IAEAF,QAAQ,CAACG,gBAAT,KAA8B,KAAKvC,KAAL,CAAWuC,gBAFzC,IAGAH,QAAQ,CAACzC,QAAT,KAAsB,KAAKK,KAAL,CAAWL,QAJnC,EAKE;MACA,KAAKS,iBAAL,CAAuB,KAAKJ,KAAL,CAAWK,KAAlC,EAAyC,IAAzC,EAA+C,EAA/C,EAAmD,KAAKL,KAAxD;IACD;EACF;;EAEMuB,QAAQ,GAAG;IAChB,MAAMiB,OAAuB,GAAGC,QAAQ,CAACC,WAAT,CAC7B,KAAK5B,YAAN,CAAuD6B,OADzB,CAAhC;IAGAH,OAAO,IAAIA,OAAO,CAACI,cAAR,CAAuB;MAAEC,QAAQ,EAAE;IAAZ,CAAvB,CAAX;EACD;;EAEMlB,KAAK,GAAG;IACb,KAAKmB,QAAL,CAAc;MAAErC,OAAO,EAAE;IAAX,CAAd;IACA,KAAKL,iBAAL,CAAuB,KAAKE,KAAL,CAAWD,KAAX,IAAoB,EAA3C;EACD;;EAEMuB,OAAO,GAAG;IACf,KAAKkB,QAAL,CAAc;MAAErC,OAAO,EAAE;IAAX,CAAd;EACD;;EAEMgB,gBAAgB,GAAG;IACxB,KAAKqB,QAAL,CAAc;MAAEnC,QAAQ,EAAE;IAAZ,CAAd;EACD;;EAEMe,eAAe,GAAG;IACvB,KAAKoB,QAAL,CAAc;MAAEnC,QAAQ,EAAE;IAAZ,CAAd;EACD;;EAEMW,KAAK,GAAG;IAAA;;IACb,IAAI,KAAKN,QAAT,EAAmB;MACjB,MAAMwB,OAAoB,GAAGC,QAAQ,CAACC,WAAT,CAC1B,KAAK1B,QAAN,CAAgD2B,OADrB,CAA7B;MAGAH,OAAO,IAAIA,OAAO,CAAClB,KAAR,EAAX;IACD;;IACD,2CAAKtB,KAAL,EAAW+C,OAAX;IACA,KAAKpB,KAAL;EACD;;EAEMqB,qBAAqB,CAACC,SAAD,EAAeC,SAAf,EAA6B;IACvD,IAAIC,YAAY,GACd,CAAC,IAAAC,0BAAA,EACC,KAAKpD,KADN,EAECiD,SAFD,EAGC,CAAC,KAAKjD,KAAL,CAAWqD,2BAAZ,GAA0C,aAA1C,GAA0DC,SAH3D,CAAD,IAIK,CAAC,IAAAF,0BAAA,EAAa,KAAK9C,KAAlB,EAAyB4C,SAAzB,CALR;IAMA,OAAOC,YAAP;EACD;;EAESI,kBAAkB,CAACC,WAAD,EAAkC;IAC5D,IAAI,CAAC,KAAKxD,KAAL,CAAWyD,cAAZ,IAA8B,CAAC,KAAKnD,KAAL,CAAWG,OAA9C,EAAuD;MACrD,OAAO,qBAAP;IACD;;IACD,OAAO,KAAKH,KAAL,CAAWC,OAAX,KACJ,CAAC,KAAKP,KAAL,CAAWQ,MAAZ,IAAsB,KAAKR,KAAL,CAAWQ,MAAX,CAAkBkD,MAAlB,KAA6B,CAD/C,MAEJ,CAAC,KAAKpD,KAAL,CAAWE,MAAZ,IAAsB,KAAKF,KAAL,CAAWE,MAAX,CAAkBkD,MAAlB,KAA6B,CAF/C,MAGJ,CAACF,WAAD,IAAgBA,WAAW,CAACE,MAAZ,KAAuB,CAHnC,IAIH,qBAJG,GAKH,mBALJ;EAMD;;EAESC,uBAAuB,CAACH,WAAD,EAAkC;IACjE,IAAI,KAAKxD,KAAL,CAAWW,QAAf,EAAyB;MACvB,OAAO,IAAP;IACD;;IACD,IAAI,CAAC,KAAKX,KAAL,CAAWyD,cAAhB,EAAgC;MAC9B,OAAO,IAAP;IACD;;IACD,IAAIG,WAA8B,GAAG,KAAKtD,KAAL,CAAWE,MAAhD;;IACA,IAAI,CAACoD,WAAL,EAAkB;MAChBA,WAAW,GAAG,EAAd;IACD;;IACD,IAAIJ,WAAJ,EAAiB;MACfI,WAAW,GAAGA,WAAW,CAACC,MAAZ,CAAmBL,WAAnB,CAAd;IACD;;IACD,IAAI,KAAKxD,KAAL,CAAWQ,MAAf,EAAuB;MACrBoD,WAAW,GAAGA,WAAW,CAACC,MAAZ,CAAmB,KAAK7D,KAAL,CAAWQ,MAA9B,CAAd;IACD;;IACDoD,WAAW,GAAGA,WAAW,CAACE,MAAZ,CAAmBC,CAAC,IAAIA,CAAxB,CAAd;;IACA,IAAIH,WAAW,CAACF,MAAZ,GAAqB,CAAzB,EAA4B;MAC1B,KAAKM,cAAL,GAAsBJ,WAAW,CAACK,GAAZ,CAAgB,CAACC,IAAD,EAAOC,KAAP,kBACpC;QAAI,GAAG,EAAEA,KAAT;QAAgB,SAAS,EAAC;MAA1B,GACGD,IADH,CADoB,CAAtB;IAKD;;IACD,oBACE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAI,SAAS,EAAC;IAAd,GAAgC,KAAKF,cAArC,CADF,CADF;EAKD;;EAES/C,YAAY,CACpBmD,KADoB,EAEpB7D,OAFoB,EAIpB;IAAA,IADAC,MACA,uEAD4B,EAC5B;IACA,IAAIH,KAAK,GAAG+D,KAAK,CAACC,MAAN,CAAahE,KAAzB;;IACA,IACE,CAAC,KAAKL,KAAL,CAAWsE,mBAAZ,IACC,KAAKtE,KAAL,CAAWsE,mBAAX,IAAkC,KAAKtE,KAAL,CAAWsE,mBAAX,CAA+BjE,KAA/B,CAFrC,EAGE;MACA,MAAMF,GAAG,GAAG,KAAKC,iBAAL,CAAuBC,KAAvB,EAA8BE,OAA9B,EAAuCC,MAAvC,CAAZ;;MACA,IAAI,KAAKR,KAAL,CAAWuE,QAAf,EAAyB;QACvB,KAAKvE,KAAL,CAAWuE,QAAX,CAAoBH,KAApB,EAA2BjE,GAAG,CAACI,OAA/B;MACD;IACF;EACF;;EAESsB,aAAa,CAAC7B,KAAD,EAAW;IAChC,IAAI,CAACA,KAAK,CAAC+B,aAAP,IAAwB/B,KAAK,CAACgC,WAAlC,EAA+C;MAC7ChC,KAAK,CAACgC,WAAN,CAAkB/B,SAAlB,CAA4B,KAAKiC,WAAjC,EAA8C;QAC5CsC,YAAY,EAAE;UACZ/C,gBAAgB,EAAE,KAAKA,gBADX;UAEZC,eAAe,EAAE,KAAKA,eAFV;UAGZC,KAAK,EAAE,KAAKA,KAHA;UAIZC,OAAO,EAAE,KAAKA,OAJF;UAKZL,QAAQ,EAAE,KAAKA,QALH;UAMZD,KAAK,EAAE,KAAKA;QANA,CAD8B;QAS5CmD,UAAU,EAAE;UACVlE,OAAO,EAAE,KAAKD,KAAL,CAAWC,OADV;UAEVC,MAAM,EAAE,KAAKF,KAAL,CAAWE,MAFT;UAGVkE,IAAI,EAAE,KAAK1E,KAAL,CAAW2E,cAAX,GACF,KAAK3E,KAAL,CAAW2E,cADT,GAEF,KAAK3E,KAAL,CAAW4E,KAAX,GACA,KAAK5E,KAAL,CAAW4E,KADX,GAEA,KAAK5E,KAAL,CAAW6E;QAPL;MATgC,CAA9C;IAmBD;EACF;;EAES1D,UAAU,GAAG;IAAA;;IACrB,2CAAKnB,KAAL,EAAW8E,MAAX;IACA,IAAIxE,KAAK,GAAG;MAAEM,OAAO,EAAE;IAAX,CAAZ;;IACA,IAAI,CAAC,KAAKN,KAAL,CAAWG,OAAZ,IAAuB,KAAKT,KAAL,CAAW+E,OAAX,KAAuB,MAAlD,EAA0D;MACxDzE,KAAK,GAAG0E,MAAM,CAACC,MAAP,CAAc3E,KAAd,EAAqB;QAAEG,OAAO,EAAE;MAAX,CAArB,CAAR;MACA,KAAKL,iBAAL,CAAuB,KAAKE,KAAL,CAAWD,KAAlC;IACD;;IACD,KAAKyC,QAAL,CAAcxC,KAAd;EACD;;EAESc,WAAW,GAAG;IACtB,IAAI,CAAC,KAAKpB,KAAL,CAAWW,QAAhB,EAA0B;MAAA;;MACxB,6CAAKX,KAAL,EAAW+C,OAAX;MACA,IAAIzC,KAAK,GAAG;QAAEM,OAAO,EAAE;MAAX,CAAZ;;MACA,IAAI,CAAC,KAAKN,KAAL,CAAWG,OAAZ,IAAuB,KAAKT,KAAL,CAAW+E,OAAX,KAAuB,OAAlD,EAA2D;QACzDzE,KAAK,GAAG0E,MAAM,CAACC,MAAP,CAAc3E,KAAd,EAAqB;UAAEG,OAAO,EAAE;QAAX,CAArB,CAAR;QACA,KAAKL,iBAAL,CAAuB,KAAKE,KAAL,CAAWD,KAAlC;MACD;;MACD,KAAKyC,QAAL,CAAcxC,KAAd;IACD;EACF;;EAES4E,WAAW,GAAG;IACtB,OAAO,KAAK5E,KAAL,CAAWK,QAAX,GAAsB,KAAKL,KAAL,CAAWK,QAAjC,GAA4C,KAAKX,KAAL,CAAWW,QAA9D;EACD;;EAESU,QAAQ,GAAG;IACnB,KAAKyB,QAAL,CACE,OAAO;MAAEvC,OAAO,EAAE,IAAX;MAAiBC,MAAM,EAAE;IAAzB,CAAP,CADF,EAEE,MAAM;MACJ,IAAI,CAAC,KAAKR,KAAL,CAAW+B,aAAhB,EAA+B;QAC7B,KAAK/B,KAAL,CAAWgC,WAAX,IACE,KAAKhC,KAAL,CAAWgC,WAAX,CAAuBmD,cAAvB,CAAsC,KAAKjD,WAA3C,EAAwD;UACtDuC,UAAU,EAAE;YACVlE,OAAO,EAAE,IADC;YAEVC,MAAM,EAAE;UAFE;QAD0C,CAAxD,CADF;MAOD;IACF,CAZH;EAcD;;EAESgB,UAAU,GAAiC;IAAA,IAAhChB,MAAgC,uEAAJ,EAAI;IACnD,KAAKsC,QAAL,CACE,OAAO;MAAEvC,OAAO,EAAE,KAAX;MAAkBC;IAAlB,CAAP,CADF,EAEE,MAAM;MACJ,IAAI,CAAC,KAAKR,KAAL,CAAW+B,aAAhB,EAA+B;QAC7B,KAAK/B,KAAL,CAAWgC,WAAX,IACE,KAAKhC,KAAL,CAAWgC,WAAX,CAAuBmD,cAAvB,CAAsC,KAAKjD,WAA3C,EAAwD;UACtDuC,UAAU,EAAE;YACVlE,OAAO,EAAE,KADC;YAEVC,MAAM,EAAEA;UAFE;QAD0C,CAAxD,CADF;MAOD;IACF,CAZH;EAcD;;EAES4E,WAAW,GAA6B;IAAA,IAA5BC,SAA4B,uEAAP,KAAO;;IAChD,IAAI,CAAC,KAAKrF,KAAL,CAAWsF,OAAZ,IAAwB,KAAKtF,KAAL,CAAWsF,OAAX,IAAsB,KAAKtF,KAAL,CAAW4E,KAA7D,EAAqE;MACnE,oBACE;QACE,SAAS,EAAE,IAAAW,mBAAA,EAAW,OAAX,EAAoB;UAAE,mBAAmB,CAACF;QAAtB,CAApB;MADb,GAGG,KAAKrF,KAAL,CAAW6E,KAHd,CADF;IAOD;;IACD,oBACE,oBAAC,KAAD,CAAO,QAAP,qBACE;MAAM,SAAS,EAAEQ,SAAS,GAAG,EAAH,GAAQ;IAAlC,GACG,KAAKrF,KAAL,CAAW6E,KADd,CADF,EAIG,KAAKW,aAAL,EAJH,CADF;EAQD;;EAESC,WAAW,GAAG;IACtB,IAAI,CAAC,KAAKzF,KAAL,CAAWsF,OAAhB,EAAyB;MACvB,OAAO,KAAKtF,KAAL,CAAW4E,KAAlB;IACD;;IACD,oBACE,oBAAC,KAAD,CAAO,QAAP,QACG,KAAK5E,KAAL,CAAW4E,KADd,EAEG,KAAKY,aAAL,EAFH,CADF;EAMD;;EAESpF,iBAAiB,CACzBC,KADyB,EASzB;IAAA,IAPAE,OAOA,uEAPmB,IAOnB;IAAA,IANAC,MAMA,uEAN4B,EAM5B;IAAA,IALAR,KAKA,uEALW,KAAKA,KAKhB;IAAA,IAJA0F,YAIA,uEAJwB,KAIxB;;IACA,IAAI,CAACA,YAAD,IAAiB,CAAC,KAAKpF,KAAL,CAAWO,wBAAjC,EAA2D;MACzD,OAAO;QAAEN,OAAF;QAAWC,MAAM,EAAE;MAAnB,CAAP;IACD;;IACD,IAAIR,KAAK,CAACL,QAAN,IAAkB,CAACU,KAAvB,EAA8B;MAC5B,MAAMsF,YAAY,GAAG,KAAKC,eAAL,CAAqBlG,uBAArB,CAArB;MACAc,MAAM,CAACqF,IAAP,CAAYF,YAAY,CAAChG,QAAzB;MACAY,OAAO,GAAG,KAAV;IACD,CAJD,MAIO;MACL,IAAI,CAACP,KAAK,CAACL,QAAP,IAAmB,CAACU,KAAxB,EAA+B;QAC7BE,OAAO,GAAG,IAAV;MACD,CAFD,MAEO;QACL,IAAIP,KAAK,CAACsC,UAAV,EAAsB;UACpB/B,OAAO,GAAG,IAAV;UACAP,KAAK,CAACsC,UAAN,CAAiBwD,OAAjB,CAAyBC,SAAS,IAAI;YACpC,IAAIC,UAAU,GAAG,KAAjB;;YACA,QAAQD,SAAR;cACE,KAAK,OAAL;gBACEC,UAAU,GAAG,IAAIC,UAAU,CAACC,cAAf,GAAgCC,QAAhC,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;gBAKA;;cACF,KAAK,QAAL;gBACEJ,UAAU,GAAG,IAAIC,UAAU,CAACI,eAAf,GAAiCF,QAAjC,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;gBAKA;;cACF,KAAK,UAAL;gBACEJ,UAAU,GAAG,IAAIC,UAAU,CAACK,iBAAf,GAAmCH,QAAnC,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;gBAKA;;cACF,KAAK,WAAL;gBACEJ,UAAU,GAAG,IAAIC,UAAU,CAACM,kBAAf,GAAoCJ,QAApC,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;gBAKA;;cACF,KAAK,KAAL;gBACEJ,UAAU,GAAG,IAAIC,UAAU,CAACO,YAAf,GAA8BL,QAA9B,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;gBAKA;;cACF;gBACE,MAAM,IAAIK,KAAJ,CAAW,aAAYV,SAAU,kBAAjC,CAAN;YArCJ;;YAuCA,IAAIxF,OAAO,IAAI,CAACyF,UAAhB,EAA4B;cAC1BzF,OAAO,GAAGyF,UAAV;YACD;UACF,CA5CD;QA6CD;;QACD,IAAIhG,KAAK,CAACuC,gBAAV,EAA4B;UAC1BvC,KAAK,CAACuC,gBAAN,CAAuBuD,OAAvB,CAA+BY,eAAe,IAAI;YAChD,IAAIV,UAAU,GAAG,KAAjB;YACAA,UAAU,GAAGU,eAAe,CAACP,QAAhB,CACX9F,KADW,EAEXL,KAAK,CAACL,QAFK,EAGXyG,KAAK,IAAI5F,MAAM,CAACqF,IAAP,CAAYO,KAAZ,CAHE,CAAb;;YAKA,IAAI7F,OAAO,IAAI,CAACyF,UAAhB,EAA4B;cAC1BzF,OAAO,GAAGyF,UAAV;YACD;UACF,CAVD;QAWD;MACF;IACF;;IACDhG,KAAK,CAAC2G,eAAN,IAAyB3G,KAAK,CAAC2G,eAAN,CAAsBnG,MAAtB,CAAzB;;IACA,IAAI,CAACkF,YAAL,EAAmB;MACjB,KAAK5C,QAAL,CAAc;QAAEzC,KAAF;QAASE,OAAT;QAAkBC;MAAlB,CAAd;;MACA,IAAI,CAACR,KAAK,CAAC+B,aAAX,EAA0B;QACxB/B,KAAK,CAACgC,WAAN,IACEhC,KAAK,CAACgC,WAAN,CAAkBmD,cAAlB,CAAiC,KAAKjD,WAAtC,EAAmD;UACjDuC,UAAU,EAAE;YACVlE,OAAO,EAAEA,OADC;YAEVC,MAAM,EAAEA;UAFE;QADqC,CAAnD,CADF;MAOD;IACF;;IACD,OAAO;MAAED,OAAF;MAAWC;IAAX,CAAP;EACD;;EAESgF,aAAa,GAErB;IAAA,IADAoB,OACA,oFADuB;MAAM,SAAS,EAAC;IAAhB,OACvB;;IACA,IAAI,KAAK5G,KAAL,CAAWsF,OAAf,EAAwB;MAAA;;MACtB,MAAMuB,KAAK,GAAGC,OAAO,CAAC,iBAAD,CAAP,CAA2BC,OAAzC;;MACA,oBACE,oBAAC,KAAD;QACE,OAAO,EAAE,KAAK/G,KAAL,CAAWsF,OADtB;QAEE,SAAS,EAAC,QAFZ;QAGE,SAAS,EAAC,cAHZ;QAIE,KAAK,EAAE,KAJT;QAKE,QAAQ,EAAE,GALZ;QAME,KAAK,EAAE,CAAC,EAAD,EAAK,CAAL,CANT;QAOE,QAAQ,EAAE,CAPZ;QAQE,WAAW,EAAE,IARf;QASE,QAAQ,eAAE0B,QAAF,8CAAE,UAAUC,IATtB;QAUE,OAAO,EAAC;MAVV,GAWM,KAAKjH,KAAL,CAAWkH,YAXjB,GAaGN,OAbH,CADF;IAiBD;;IACD,OAAOA,OAAP;EACD;;EAEShB,eAAe,CACvBuB,oBADuB,EAER;IACf,uCACKA,oBADL,GAEK,KAAKnH,KAAL,CAAW2F,YAFhB;EAID;;AAxaqD;;;;gBAL3C/F,S,kBAMyC;EAClDwH,SAAS,EAAE9D,SADuC;EAElD3D,QAAQ,EAAE,KAFwC;EAGlDkF,KAAK,EAAEvB,SAH2C;EAIlD3C,QAAQ,EAAE,KAJwC;EAKlDoE,OAAO,EAAE,OALyC;EAMlDhD,aAAa,EAAE,KANmC;EAOlD0B,cAAc,EAAE,IAPkC;EAQlDzB,WAAW,EAAEsB,SARqC;EASlDD,2BAA2B,EAAE;AATqB,C;;eAyavCzD,S"}
|
@@ -56,8 +56,7 @@ class ExternalValidationComponentRaw extends _BaseInput.BaseInput {
|
|
56
56
|
exports.ExternalValidationComponentRaw = ExternalValidationComponentRaw;
|
57
57
|
|
58
58
|
_defineProperty(ExternalValidationComponentRaw, "defaultProps", Object.assign({}, _BaseInput.BaseInput.defaultProps, {
|
59
|
-
isValid: true
|
60
|
-
handleValueChangeEnabled: false
|
59
|
+
isValid: true
|
61
60
|
}));
|
62
61
|
|
63
62
|
const ExternalValidationComponent = (0, _withThemeContext.withThemeContext)((0, _withFormContext.withFormContext)(ExternalValidationComponentRaw), 'text');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ExternalValidationComponent.js","names":["ExternalValidationComponentRaw","BaseInput","constructor","props","state","handleValueChangeEnabled","ignoreContext","formContext","updateCallback","componentId","validation","isValid","errors","componentDidUpdate","prevProps","prevState","render","Object","assign","defaultProps","ExternalValidationComponent","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/externalValidationComponent/ExternalValidationComponent.tsx"],"sourcesContent":["// Libs\r\n\r\n// Misc\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface ExternalValidationComponentProps\r\n extends BaseInputProps<HTMLInputElement> {\r\n isValid: boolean;\r\n}\r\n\r\nexport interface ExternalValidationComponentState extends BaseInputState {}\r\n\r\nexport class ExternalValidationComponentRaw extends BaseInput<\r\n ExternalValidationComponentProps,\r\n ExternalValidationComponentState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n isValid: true,\r\n
|
1
|
+
{"version":3,"file":"ExternalValidationComponent.js","names":["ExternalValidationComponentRaw","BaseInput","constructor","props","state","handleValueChangeEnabled","ignoreContext","formContext","updateCallback","componentId","validation","isValid","errors","componentDidUpdate","prevProps","prevState","render","Object","assign","defaultProps","ExternalValidationComponent","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/externalValidationComponent/ExternalValidationComponent.tsx"],"sourcesContent":["// Libs\r\n\r\n// Misc\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface ExternalValidationComponentProps\r\n extends BaseInputProps<HTMLInputElement> {\r\n isValid: boolean;\r\n}\r\n\r\nexport interface ExternalValidationComponentState extends BaseInputState {}\r\n\r\nexport class ExternalValidationComponentRaw extends BaseInput<\r\n ExternalValidationComponentProps,\r\n ExternalValidationComponentState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n isValid: true,\r\n }) as ExternalValidationComponentProps;\r\n\r\n constructor(props: ExternalValidationComponentProps) {\r\n super(props);\r\n this.state = {\r\n ...this.state,\r\n handleValueChangeEnabled: false,\r\n };\r\n if (!this.props.ignoreContext && this.props.formContext) {\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: props.isValid,\r\n errors: props.errors,\r\n },\r\n });\r\n }\r\n }\r\n\r\n public componentDidUpdate(\r\n prevProps: ExternalValidationComponentProps,\r\n prevState: ExternalValidationComponentState\r\n ) {\r\n if (\r\n this.props.isValid !== prevProps.isValid ||\r\n this.props.errors !== prevProps.errors\r\n ) {\r\n if (!this.props.ignoreContext && this.props.formContext) {\r\n this.props.formContext.updateCallback(this.componentId, {\r\n validation: {\r\n isValid: this.props.isValid,\r\n errors: this.props.errors,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n public render() {\r\n return null;\r\n }\r\n}\r\n\r\nexport const ExternalValidationComponent = withThemeContext<\r\n ExternalValidationComponentProps,\r\n InstanceType<typeof ExternalValidationComponentRaw>\r\n>(\r\n withFormContext<ExternalValidationComponentProps>(\r\n ExternalValidationComponentRaw\r\n ),\r\n 'text'\r\n);\r\n\r\nexport default ExternalValidationComponent;\r\n"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;;;;;;;AASO,MAAMA,8BAAN,SAA6CC,oBAA7C,CAIL;EAKAC,WAAW,CAACC,KAAD,EAA0C;IACnD,MAAMA,KAAN;IACA,KAAKC,KAAL,mCACK,KAAKA,KADV;MAEEC,wBAAwB,EAAE;IAF5B;;IAIA,IAAI,CAAC,KAAKF,KAAL,CAAWG,aAAZ,IAA6B,KAAKH,KAAL,CAAWI,WAA5C,EAAyD;MACvD,KAAKJ,KAAL,CAAWI,WAAX,CAAuBC,cAAvB,CAAsC,KAAKC,WAA3C,EAAwD;QACtDC,UAAU,EAAE;UACVC,OAAO,EAAER,KAAK,CAACQ,OADL;UAEVC,MAAM,EAAET,KAAK,CAACS;QAFJ;MAD0C,CAAxD;IAMD;EACF;;EAEMC,kBAAkB,CACvBC,SADuB,EAEvBC,SAFuB,EAGvB;IACA,IACE,KAAKZ,KAAL,CAAWQ,OAAX,KAAuBG,SAAS,CAACH,OAAjC,IACA,KAAKR,KAAL,CAAWS,MAAX,KAAsBE,SAAS,CAACF,MAFlC,EAGE;MACA,IAAI,CAAC,KAAKT,KAAL,CAAWG,aAAZ,IAA6B,KAAKH,KAAL,CAAWI,WAA5C,EAAyD;QACvD,KAAKJ,KAAL,CAAWI,WAAX,CAAuBC,cAAvB,CAAsC,KAAKC,WAA3C,EAAwD;UACtDC,UAAU,EAAE;YACVC,OAAO,EAAE,KAAKR,KAAL,CAAWQ,OADV;YAEVC,MAAM,EAAE,KAAKT,KAAL,CAAWS;UAFT;QAD0C,CAAxD;MAMD;IACF;EACF;;EAEMI,MAAM,GAAG;IACd,OAAO,IAAP;EACD;;AA1CD;;;;gBAJWhB,8B,kBAKkBiB,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBjB,oBAAA,CAAUkB,YAA5B,EAA0C;EACrER,OAAO,EAAE;AAD4D,CAA1C,C;;AA4CxB,MAAMS,2BAA2B,GAAG,IAAAC,kCAAA,EAIzC,IAAAC,gCAAA,EACEtB,8BADF,CAJyC,EAOzC,MAPyC,CAApC;;eAUQoB,2B"}
|
@@ -42,7 +42,7 @@ export declare class MoneyRaw extends BaseInput<MoneyProps, MoneyState, never, M
|
|
42
42
|
touchOn?: "focus" | "blur";
|
43
43
|
ignoreContext?: boolean;
|
44
44
|
onTheFlightValidate?: (value: string) => boolean;
|
45
|
-
onFocus?: (
|
45
|
+
onFocus?: () => void;
|
46
46
|
onBlur?: () => void;
|
47
47
|
onSuggestionsClosed?: () => void;
|
48
48
|
onSuggestionsOpened?: () => void;
|
@@ -44,9 +44,9 @@ class NumberInputRaw extends _BaseInput.BaseInput {
|
|
44
44
|
constructor(props) {
|
45
45
|
super(props);
|
46
46
|
|
47
|
-
_defineProperty(this, "onBlur",
|
47
|
+
_defineProperty(this, "onBlur", () => {
|
48
48
|
this.commitState();
|
49
|
-
this.handleBlur(
|
49
|
+
this.handleBlur();
|
50
50
|
});
|
51
51
|
|
52
52
|
_defineProperty(this, "removeUnitClick", e => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NumberInput.js","names":["ArrowIcon","NumberInputRaw","BaseInput","constructor","props","e","commitState","handleBlur","preventDefault","handleLimits","number","setState","currentText","target","value","key","removeUnitClick","bind","addUnitClick","onUnitChanged","render","unit","title","inputGroupClassName","tooltip","id","getValidationClass","className","containerRef","getDisabled","required","classNames","filled","undefined","state","onBlur","handleFocus","onKeyDown","renderDefaultValidation","focused","label","renderLabel","num","Number","isNaN","min","onNumberChange","max","Object","assign","defaultProps","type","placeholder","NumberInput","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/numberInput/NumberInput.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport interface NumberInputProps extends BaseInputProps<HTMLInputElement> {\r\n value?: never;\r\n onChange?: never;\r\n onNumberChange: (num: number) => void;\r\n number: number;\r\n min?: number;\r\n max?: number;\r\n unit?: string;\r\n}\r\n\r\nexport interface NumberInputState extends BaseInputState {\r\n currentText: string;\r\n}\r\n\r\nexport class NumberInputRaw extends BaseInput<\r\n NumberInputProps,\r\n NumberInputState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n }) as unknown) as Partial<NumberInputProps>;\r\n\r\n constructor(props: NumberInputProps) {\r\n super(props);\r\n this.removeUnitClick = this.removeUnitClick.bind(this);\r\n this.addUnitClick = this.addUnitClick.bind(this);\r\n this.onUnitChanged = this.onUnitChanged.bind(this);\r\n }\r\n\r\n public render() {\r\n const { unit } = this.props;\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n className={this.props.inputGroupClassName}\r\n tooltip={this.props.tooltip}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={\r\n 'input__base number-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n <div className=\"\">\r\n <div className=\"number-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={classNames('number-input__time', {\r\n filled: this.props.number !== undefined,\r\n })}\r\n onChange={this.onUnitChanged}\r\n value={\r\n this.state.currentText !== undefined\r\n ? this.state.currentText\r\n : this.props.number\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n onKeyDown={this.onKeyDown}\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n {unit}\r\n </div>\r\n {this.renderDefaultValidation()}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label className={classNames('number-input__label label--focused')}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private commitState() {\r\n if (this.state.currentText) {\r\n var num = Number(this.state.currentText);\r\n if (!isNaN(num)) {\r\n this.handleLimits(num);\r\n }\r\n this.setState({ currentText: undefined });\r\n }\r\n }\r\n\r\n private onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\r\n this.commitState();\r\n this.handleBlur(e);\r\n };\r\n\r\n private removeUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleLimits((this.props.number || 0) - 1);\r\n };\r\n\r\n private onUnitChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ currentText: e.target.value });\r\n };\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n this.commitState();\r\n }\r\n };\r\n\r\n private addUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleLimits((this.props.number || 0) + 1);\r\n };\r\n\r\n private handleLimits(num: number) {\r\n if (this.props.min !== undefined) {\r\n if (num - this.props.min <= 0) {\r\n this.props.onNumberChange(this.props.min);\r\n return;\r\n }\r\n }\r\n if (this.props.max !== undefined) {\r\n if (this.props.max - num <= 0) {\r\n this.props.onNumberChange(this.props.max);\r\n return;\r\n }\r\n }\r\n this.props.onNumberChange(num);\r\n }\r\n}\r\n\r\nexport const NumberInput = withThemeContext<\r\n NumberInputProps,\r\n InstanceType<typeof NumberInputRaw>\r\n>(withFormContext<NumberInputProps>(NumberInputRaw), 'numberInput');\r\n\r\nexport default NumberInput;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"NumberInput.js","names":["ArrowIcon","NumberInputRaw","BaseInput","constructor","props","commitState","handleBlur","e","preventDefault","handleLimits","number","setState","currentText","target","value","key","removeUnitClick","bind","addUnitClick","onUnitChanged","render","unit","title","inputGroupClassName","tooltip","id","getValidationClass","className","containerRef","getDisabled","required","classNames","filled","undefined","state","onBlur","handleFocus","onKeyDown","renderDefaultValidation","focused","label","renderLabel","num","Number","isNaN","min","onNumberChange","max","Object","assign","defaultProps","type","placeholder","NumberInput","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/numberInput/NumberInput.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport interface NumberInputProps extends BaseInputProps<HTMLInputElement> {\r\n value?: never;\r\n onChange?: never;\r\n onNumberChange: (num: number) => void;\r\n number: number;\r\n min?: number;\r\n max?: number;\r\n unit?: string;\r\n}\r\n\r\nexport interface NumberInputState extends BaseInputState {\r\n currentText: string;\r\n}\r\n\r\nexport class NumberInputRaw extends BaseInput<\r\n NumberInputProps,\r\n NumberInputState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n }) as unknown) as Partial<NumberInputProps>;\r\n\r\n constructor(props: NumberInputProps) {\r\n super(props);\r\n this.removeUnitClick = this.removeUnitClick.bind(this);\r\n this.addUnitClick = this.addUnitClick.bind(this);\r\n this.onUnitChanged = this.onUnitChanged.bind(this);\r\n }\r\n\r\n public render() {\r\n const { unit } = this.props;\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n className={this.props.inputGroupClassName}\r\n tooltip={this.props.tooltip}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={\r\n 'input__base number-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n <div className=\"\">\r\n <div className=\"number-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={classNames('number-input__time', {\r\n filled: this.props.number !== undefined,\r\n })}\r\n onChange={this.onUnitChanged}\r\n value={\r\n this.state.currentText !== undefined\r\n ? this.state.currentText\r\n : this.props.number\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n onKeyDown={this.onKeyDown}\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n {unit}\r\n </div>\r\n {this.renderDefaultValidation()}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label className={classNames('number-input__label label--focused')}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private commitState() {\r\n if (this.state.currentText) {\r\n var num = Number(this.state.currentText);\r\n if (!isNaN(num)) {\r\n this.handleLimits(num);\r\n }\r\n this.setState({ currentText: undefined });\r\n }\r\n }\r\n\r\n private onBlur = () => {\r\n this.commitState();\r\n this.handleBlur();\r\n };\r\n\r\n private removeUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleLimits((this.props.number || 0) - 1);\r\n };\r\n\r\n private onUnitChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ currentText: e.target.value });\r\n };\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n this.commitState();\r\n }\r\n };\r\n\r\n private addUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleLimits((this.props.number || 0) + 1);\r\n };\r\n\r\n private handleLimits(num: number) {\r\n if (this.props.min !== undefined) {\r\n if (num - this.props.min <= 0) {\r\n this.props.onNumberChange(this.props.min);\r\n return;\r\n }\r\n }\r\n if (this.props.max !== undefined) {\r\n if (this.props.max - num <= 0) {\r\n this.props.onNumberChange(this.props.max);\r\n return;\r\n }\r\n }\r\n this.props.onNumberChange(num);\r\n }\r\n}\r\n\r\nexport const NumberInput = withThemeContext<\r\n NumberInputProps,\r\n InstanceType<typeof NumberInputRaw>\r\n>(withFormContext<NumberInputProps>(NumberInputRaw), 'numberInput');\r\n\r\nexport default NumberInput;\r\n"],"mappings":"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"}
|
@@ -47,7 +47,7 @@ export declare class OpeningHoursDayRaw extends BaseInput<OpeningHoursDayProps,
|
|
47
47
|
touchOn?: "focus" | "blur";
|
48
48
|
ignoreContext?: boolean;
|
49
49
|
onTheFlightValidate?: (value: string) => boolean;
|
50
|
-
onFocus?: (
|
50
|
+
onFocus?: () => void;
|
51
51
|
onBlur?: () => void;
|
52
52
|
onSuggestionsClosed?: () => void;
|
53
53
|
onSuggestionsOpened?: () => void;
|
@@ -55,7 +55,7 @@ export declare class OpeningHoursSpecialRaw extends BaseInput<OpeningHoursSpecia
|
|
55
55
|
touchOn?: "focus" | "blur";
|
56
56
|
ignoreContext?: boolean;
|
57
57
|
onTheFlightValidate?: (value: string) => boolean;
|
58
|
-
onFocus?: (
|
58
|
+
onFocus?: () => void;
|
59
59
|
onBlur?: () => void;
|
60
60
|
onSuggestionsClosed?: () => void;
|
61
61
|
onSuggestionsOpened?: () => void;
|
@@ -70,7 +70,7 @@ export declare class OpeningHoursWeekRaw extends BaseInput<OpeningHoursWeekProps
|
|
70
70
|
touchOn?: "focus" | "blur";
|
71
71
|
ignoreContext?: boolean;
|
72
72
|
onTheFlightValidate?: (value: string) => boolean;
|
73
|
-
onFocus?: (
|
73
|
+
onFocus?: () => void;
|
74
74
|
onBlur?: () => void;
|
75
75
|
onSuggestionsClosed?: () => void;
|
76
76
|
onSuggestionsOpened?: () => void;
|
@@ -36,7 +36,7 @@ export declare class SelectRaw extends BaseInput<SelectProps, SelectState, HTMLS
|
|
36
36
|
touchOn?: "focus" | "blur";
|
37
37
|
ignoreContext?: boolean;
|
38
38
|
onTheFlightValidate?: (value: string) => boolean;
|
39
|
-
onFocus?: (
|
39
|
+
onFocus?: () => void;
|
40
40
|
onBlur?: () => void;
|
41
41
|
onSuggestionsClosed?: () => void;
|
42
42
|
onSuggestionsOpened?: () => void;
|
@@ -66,8 +66,8 @@ export declare class SelectRaw extends BaseInput<SelectProps, SelectState, HTMLS
|
|
66
66
|
isValid: boolean;
|
67
67
|
errors: ValidationError[];
|
68
68
|
};
|
69
|
-
protected handleBlur(
|
70
|
-
protected handleFocus(
|
69
|
+
protected handleBlur(): void;
|
70
|
+
protected handleFocus(): void;
|
71
71
|
private handleChangeCustom;
|
72
72
|
private handleValid;
|
73
73
|
private renderReadonly;
|
@@ -131,7 +131,7 @@ class SelectRaw extends _BaseInput.BaseInput {
|
|
131
131
|
};
|
132
132
|
}
|
133
133
|
|
134
|
-
handleBlur(
|
134
|
+
handleBlur() {
|
135
135
|
this.props.onBlur && this.props.onBlur();
|
136
136
|
let state = {
|
137
137
|
focused: false
|
@@ -152,8 +152,10 @@ class SelectRaw extends _BaseInput.BaseInput {
|
|
152
152
|
this.setState(state);
|
153
153
|
}
|
154
154
|
|
155
|
-
handleFocus(
|
156
|
-
|
155
|
+
handleFocus() {
|
156
|
+
var _this$props$onFocus, _this$props;
|
157
|
+
|
158
|
+
(_this$props$onFocus = (_this$props = this.props).onFocus) === null || _this$props$onFocus === void 0 ? void 0 : _this$props$onFocus.call(_this$props);
|
157
159
|
let state = {
|
158
160
|
focused: true
|
159
161
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Select.js","names":["PlusIcon","SelectRaw","BaseInput","constructor","props","item","newValues","selectedValues","filter","sv","value","handleValid","onSelectedValuesChange","val","defaultEmpty","values","length","state","Object","assign","handleChangeCustom","bind","componentDidMount","multiple","componentDidUpdate","oldProps","validators","customValidators","required","handleValueChange","render","finalValues","findIndex","t","title","tooltip","inputGroupClassName","getValidationClass","className","readOnly","containerRef","renderSelectedValues","id","inputRef","getDisabled","handleBlur","handleFocus","display","map","index","label","renderReadonly","renderDefaultValidation","renderLabel","isValid","errors","initializing","e","onBlur","focused","touched","touchOn","setState","onFocus","event","target","isNaN","Number","valNumber","concat","handleChange","push","getTranslations","defaultBaseTranslations","forEach","customValidator","validInner","Validate","error","setValid","setInvalid","toString","forceSelected","removeItemClick","readonlyEmptyPlaceholder","defaultProps","Select","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/select/Select.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_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 } from '../button/Button';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface SelectValue {\r\n value: number | string;\r\n label?: string;\r\n forceSelected?: boolean;\r\n}\r\n\r\nexport interface SelectProps extends BaseInputProps<HTMLSelectElement> {\r\n values?: SelectValue[];\r\n defaultEmpty?: boolean;\r\n multiple?: boolean;\r\n selectedValues?: SelectValue[];\r\n onSelectedValuesChange?: (newValues: SelectValue[]) => void;\r\n inputRef?: (input: HTMLSelectElement) => void;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n}\r\n\r\nexport interface SelectState extends BaseInputState {}\r\n\r\nexport class SelectRaw extends BaseInput<\r\n SelectProps,\r\n SelectState,\r\n HTMLSelectElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n defaultEmpty: true,\r\n multiple: false,\r\n readOnly: false,\r\n readonlyEmptyPlaceholder: 'N/A',\r\n });\r\n\r\n constructor(props: SelectProps) {\r\n super(props);\r\n const val = !props.value\r\n ? props.defaultEmpty\r\n ? ''\r\n : props.values && props.values.length > 0\r\n ? props.values[0]\r\n : ''\r\n : props.value;\r\n this.state = Object.assign(this.state, { value: val });\r\n this.handleChangeCustom = this.handleChangeCustom.bind(this);\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.multiple && this.handleValid(this.props.selectedValues);\r\n }\r\n\r\n public componentDidUpdate(oldProps: SelectProps) {\r\n if (\r\n oldProps.value !== this.props.value ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required ||\r\n oldProps.selectedValues !== this.props.selectedValues\r\n ) {\r\n if (this.props.multiple) {\r\n this.handleValid(this.props.selectedValues);\r\n } else {\r\n this.handleValueChange(this.props.value, true, [], this.props);\r\n }\r\n }\r\n }\r\n\r\n public render() {\r\n const finalValues = this.props.multiple\r\n ? this.props.values.filter(\r\n item =>\r\n this.props.selectedValues.findIndex(t => t.value === item.value) < 0\r\n )\r\n : this.props.values;\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n className={\r\n 'input__base select-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '') +\r\n ' ' +\r\n (this.props.readOnly ? 'readonly' : '') +\r\n ' ' +\r\n (this.props.multiple ? 'multiple' : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.renderSelectedValues()}\r\n {finalValues.length > 0 &&\r\n ((this.props.multiple && !this.props.readOnly) ||\r\n !this.props.multiple) && (\r\n <div className=\"select-input__select__wrapper\">\r\n {(!this.props.multiple && !this.props.readOnly) ||\r\n this.props.multiple ? (\r\n <select\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.inputRef}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n onChange={this.handleChangeCustom}\r\n value={this.state.value}\r\n className={\r\n 'select-input__select ' +\r\n (this.state.value !== '' ||\r\n (this.props.selectedValues &&\r\n this.props.selectedValues.length > 0)\r\n ? 'filled'\r\n : '')\r\n }\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n tabIndex={0}\r\n >\r\n {this.props.defaultEmpty && (\r\n <option\r\n key={-1}\r\n disabled={true}\r\n value=\"\"\r\n style={{ display: 'none' }}\r\n />\r\n )}\r\n {finalValues.map((value, index) => (\r\n <option key={index} value={value.value}>\r\n {value.label ? value.label : value.value}\r\n </option>\r\n ))}\r\n </select>\r\n ) : (\r\n <span\r\n className={\r\n 'select-input__select ' +\r\n (this.state.value !== '' ||\r\n (this.props.selectedValues &&\r\n this.props.selectedValues.length > 0)\r\n ? 'filled'\r\n : '')\r\n }\r\n >\r\n {this.renderReadonly()}\r\n </span>\r\n )}\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && finalValues.length > 0 && (\r\n <label>{this.renderLabel()}</label>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n protected handleValueChange(\r\n value: string,\r\n isValid: boolean = true,\r\n errors: ValidationError[] = [],\r\n props: SelectProps = this.props,\r\n initializing: boolean = false\r\n ) {\r\n if (!this.props.multiple) {\r\n return super.handleValueChange(\r\n value,\r\n isValid,\r\n errors,\r\n props,\r\n initializing\r\n );\r\n } else if (!initializing) {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n return {\r\n isValid: true,\r\n errors: [],\r\n };\r\n }\r\n\r\n protected handleBlur(e: React.FocusEvent<HTMLSelectElement>) {\r\n this.props.onBlur && this.props.onBlur();\r\n let state = { focused: false };\r\n if (!this.state.touched && this.props.touchOn === 'blur') {\r\n state = Object.assign(state, { touched: true });\r\n if (!this.props.multiple) {\r\n this.handleValueChange(this.state.value);\r\n } else {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n\r\n protected handleFocus(e: React.FocusEvent<HTMLSelectElement>) {\r\n this.props.onFocus && this.props.onFocus(e);\r\n let state = { focused: true };\r\n if (!this.state.touched && this.props.touchOn === 'focus') {\r\n state = Object.assign(state, { touched: true });\r\n if (!this.props.multiple) {\r\n this.handleValueChange(this.state.value);\r\n } else {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n\r\n private handleChangeCustom(event: React.ChangeEvent<HTMLSelectElement>) {\r\n if (this.props.multiple) {\r\n let value = event.target.value;\r\n let val = this.props.values.filter(item => item.value === value)[0];\r\n if (!val) {\r\n if (!isNaN(Number(value))) {\r\n let valNumber = Number(value);\r\n val = this.props.values.filter(item => item.value === valNumber)[0];\r\n }\r\n }\r\n let newValues = this.props.selectedValues.concat(val);\r\n if (val) {\r\n this.props.onSelectedValuesChange &&\r\n this.props.onSelectedValuesChange(newValues);\r\n this.handleValid(newValues);\r\n this.setState({ value: '' });\r\n }\r\n } else {\r\n this.handleChange(event);\r\n }\r\n }\r\n\r\n private handleValid(newValues: SelectValue[]) {\r\n let isValid = true;\r\n let errors: ValidationError[] = [];\r\n if (this.props.required) {\r\n if (newValues.length === 0) {\r\n isValid = false;\r\n errors.push(this.getTranslations(defaultBaseTranslations).required);\r\n }\r\n }\r\n if (this.props.customValidators) {\r\n this.props.customValidators.forEach(customValidator => {\r\n let validInner = false;\r\n validInner = customValidator.Validate(\r\n this.state?.value,\r\n this.props.required,\r\n error => errors.push(error)\r\n );\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n if (isValid) {\r\n this.setValid();\r\n } else {\r\n this.setInvalid(errors);\r\n }\r\n }\r\n\r\n private renderReadonly() {\r\n const value = this.props.values.filter(\r\n item => item.value.toString() === this.state.value\r\n )[0];\r\n return value ? (value.label ? value.label : value.value) : '';\r\n }\r\n\r\n private renderSelectedValues() {\r\n return this.props.multiple ? (\r\n this.props.selectedValues.length > 0 ? (\r\n <div className=\"select-input__selectedValue__wrapper\">\r\n {this.props.selectedValues.map((item, index) => (\r\n <div className=\"select-input__selectedValue\" key={index}>\r\n {item.label ? item.label : item.value}\r\n {!this.props.readOnly && (\r\n <Button\r\n disabled={item.forceSelected}\r\n circular={true}\r\n blank={true}\r\n onClick={this.removeItemClick(item)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"select-input__selectedValue__wrapper\">\r\n <div className=\"select-input__selectedValue\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )\r\n ) : null;\r\n }\r\n\r\n private removeItemClick = (item: SelectValue) => () => {\r\n const newValues = this.props.selectedValues.filter(\r\n sv => sv.value !== item.value\r\n );\r\n this.handleValid(newValues);\r\n this.props.onSelectedValuesChange &&\r\n this.props.onSelectedValuesChange(newValues);\r\n };\r\n}\r\n\r\nexport const Select = withThemeContext<\r\n SelectProps,\r\n InstanceType<typeof SelectRaw>\r\n>(withFormContext<SelectProps>(SelectRaw), 'select');\r\n\r\nexport default Select;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Select.js","names":["PlusIcon","SelectRaw","BaseInput","constructor","props","item","newValues","selectedValues","filter","sv","value","handleValid","onSelectedValuesChange","val","defaultEmpty","values","length","state","Object","assign","handleChangeCustom","bind","componentDidMount","multiple","componentDidUpdate","oldProps","validators","customValidators","required","handleValueChange","render","finalValues","findIndex","t","title","tooltip","inputGroupClassName","getValidationClass","className","readOnly","containerRef","renderSelectedValues","id","inputRef","getDisabled","handleBlur","handleFocus","display","map","index","label","renderReadonly","renderDefaultValidation","renderLabel","isValid","errors","initializing","onBlur","focused","touched","touchOn","setState","onFocus","event","target","isNaN","Number","valNumber","concat","handleChange","push","getTranslations","defaultBaseTranslations","forEach","customValidator","validInner","Validate","error","setValid","setInvalid","toString","forceSelected","removeItemClick","readonlyEmptyPlaceholder","defaultProps","Select","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/select/Select.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_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 } from '../button/Button';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface SelectValue {\r\n value: number | string;\r\n label?: string;\r\n forceSelected?: boolean;\r\n}\r\n\r\nexport interface SelectProps extends BaseInputProps<HTMLSelectElement> {\r\n values?: SelectValue[];\r\n defaultEmpty?: boolean;\r\n multiple?: boolean;\r\n selectedValues?: SelectValue[];\r\n onSelectedValuesChange?: (newValues: SelectValue[]) => void;\r\n inputRef?: (input: HTMLSelectElement) => void;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n}\r\n\r\nexport interface SelectState extends BaseInputState {}\r\n\r\nexport class SelectRaw extends BaseInput<\r\n SelectProps,\r\n SelectState,\r\n HTMLSelectElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n defaultEmpty: true,\r\n multiple: false,\r\n readOnly: false,\r\n readonlyEmptyPlaceholder: 'N/A',\r\n });\r\n\r\n constructor(props: SelectProps) {\r\n super(props);\r\n const val = !props.value\r\n ? props.defaultEmpty\r\n ? ''\r\n : props.values && props.values.length > 0\r\n ? props.values[0]\r\n : ''\r\n : props.value;\r\n this.state = Object.assign(this.state, { value: val });\r\n this.handleChangeCustom = this.handleChangeCustom.bind(this);\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.multiple && this.handleValid(this.props.selectedValues);\r\n }\r\n\r\n public componentDidUpdate(oldProps: SelectProps) {\r\n if (\r\n oldProps.value !== this.props.value ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required ||\r\n oldProps.selectedValues !== this.props.selectedValues\r\n ) {\r\n if (this.props.multiple) {\r\n this.handleValid(this.props.selectedValues);\r\n } else {\r\n this.handleValueChange(this.props.value, true, [], this.props);\r\n }\r\n }\r\n }\r\n\r\n public render() {\r\n const finalValues = this.props.multiple\r\n ? this.props.values.filter(\r\n item =>\r\n this.props.selectedValues.findIndex(t => t.value === item.value) < 0\r\n )\r\n : this.props.values;\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n className={\r\n 'input__base select-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '') +\r\n ' ' +\r\n (this.props.readOnly ? 'readonly' : '') +\r\n ' ' +\r\n (this.props.multiple ? 'multiple' : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.renderSelectedValues()}\r\n {finalValues.length > 0 &&\r\n ((this.props.multiple && !this.props.readOnly) ||\r\n !this.props.multiple) && (\r\n <div className=\"select-input__select__wrapper\">\r\n {(!this.props.multiple && !this.props.readOnly) ||\r\n this.props.multiple ? (\r\n <select\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.inputRef}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n onChange={this.handleChangeCustom}\r\n value={this.state.value}\r\n className={\r\n 'select-input__select ' +\r\n (this.state.value !== '' ||\r\n (this.props.selectedValues &&\r\n this.props.selectedValues.length > 0)\r\n ? 'filled'\r\n : '')\r\n }\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n tabIndex={0}\r\n >\r\n {this.props.defaultEmpty && (\r\n <option\r\n key={-1}\r\n disabled={true}\r\n value=\"\"\r\n style={{ display: 'none' }}\r\n />\r\n )}\r\n {finalValues.map((value, index) => (\r\n <option key={index} value={value.value}>\r\n {value.label ? value.label : value.value}\r\n </option>\r\n ))}\r\n </select>\r\n ) : (\r\n <span\r\n className={\r\n 'select-input__select ' +\r\n (this.state.value !== '' ||\r\n (this.props.selectedValues &&\r\n this.props.selectedValues.length > 0)\r\n ? 'filled'\r\n : '')\r\n }\r\n >\r\n {this.renderReadonly()}\r\n </span>\r\n )}\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && finalValues.length > 0 && (\r\n <label>{this.renderLabel()}</label>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n protected handleValueChange(\r\n value: string,\r\n isValid: boolean = true,\r\n errors: ValidationError[] = [],\r\n props: SelectProps = this.props,\r\n initializing: boolean = false\r\n ) {\r\n if (!this.props.multiple) {\r\n return super.handleValueChange(\r\n value,\r\n isValid,\r\n errors,\r\n props,\r\n initializing\r\n );\r\n } else if (!initializing) {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n return {\r\n isValid: true,\r\n errors: [],\r\n };\r\n }\r\n\r\n protected handleBlur() {\r\n this.props.onBlur && this.props.onBlur();\r\n let state = { focused: false };\r\n if (!this.state.touched && this.props.touchOn === 'blur') {\r\n state = Object.assign(state, { touched: true });\r\n if (!this.props.multiple) {\r\n this.handleValueChange(this.state.value);\r\n } else {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n\r\n protected handleFocus() {\r\n this.props.onFocus?.();\r\n let state = { focused: true };\r\n if (!this.state.touched && this.props.touchOn === 'focus') {\r\n state = Object.assign(state, { touched: true });\r\n if (!this.props.multiple) {\r\n this.handleValueChange(this.state.value);\r\n } else {\r\n this.handleValid(this.props.selectedValues);\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n\r\n private handleChangeCustom(event: React.ChangeEvent<HTMLSelectElement>) {\r\n if (this.props.multiple) {\r\n let value = event.target.value;\r\n let val = this.props.values.filter(item => item.value === value)[0];\r\n if (!val) {\r\n if (!isNaN(Number(value))) {\r\n let valNumber = Number(value);\r\n val = this.props.values.filter(item => item.value === valNumber)[0];\r\n }\r\n }\r\n let newValues = this.props.selectedValues.concat(val);\r\n if (val) {\r\n this.props.onSelectedValuesChange &&\r\n this.props.onSelectedValuesChange(newValues);\r\n this.handleValid(newValues);\r\n this.setState({ value: '' });\r\n }\r\n } else {\r\n this.handleChange(event);\r\n }\r\n }\r\n\r\n private handleValid(newValues: SelectValue[]) {\r\n let isValid = true;\r\n let errors: ValidationError[] = [];\r\n if (this.props.required) {\r\n if (newValues.length === 0) {\r\n isValid = false;\r\n errors.push(this.getTranslations(defaultBaseTranslations).required);\r\n }\r\n }\r\n if (this.props.customValidators) {\r\n this.props.customValidators.forEach(customValidator => {\r\n let validInner = false;\r\n validInner = customValidator.Validate(\r\n this.state?.value,\r\n this.props.required,\r\n error => errors.push(error)\r\n );\r\n if (isValid && !validInner) {\r\n isValid = validInner;\r\n }\r\n });\r\n }\r\n if (isValid) {\r\n this.setValid();\r\n } else {\r\n this.setInvalid(errors);\r\n }\r\n }\r\n\r\n private renderReadonly() {\r\n const value = this.props.values.filter(\r\n item => item.value.toString() === this.state.value\r\n )[0];\r\n return value ? (value.label ? value.label : value.value) : '';\r\n }\r\n\r\n private renderSelectedValues() {\r\n return this.props.multiple ? (\r\n this.props.selectedValues.length > 0 ? (\r\n <div className=\"select-input__selectedValue__wrapper\">\r\n {this.props.selectedValues.map((item, index) => (\r\n <div className=\"select-input__selectedValue\" key={index}>\r\n {item.label ? item.label : item.value}\r\n {!this.props.readOnly && (\r\n <Button\r\n disabled={item.forceSelected}\r\n circular={true}\r\n blank={true}\r\n onClick={this.removeItemClick(item)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"select-input__selectedValue__wrapper\">\r\n <div className=\"select-input__selectedValue\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )\r\n ) : null;\r\n }\r\n\r\n private removeItemClick = (item: SelectValue) => () => {\r\n const newValues = this.props.selectedValues.filter(\r\n sv => sv.value !== item.value\r\n );\r\n this.handleValid(newValues);\r\n this.props.onSelectedValuesChange &&\r\n this.props.onSelectedValuesChange(newValues);\r\n };\r\n}\r\n\r\nexport const Select = withThemeContext<\r\n SelectProps,\r\n InstanceType<typeof SelectRaw>\r\n>(withFormContext<SelectProps>(SelectRaw), 'select');\r\n\r\nexport default Select;\r\n"],"mappings":"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"}
|
@@ -34,7 +34,7 @@ export declare class SubmitRaw extends BaseInput<SubmitProps, SubmitState, never
|
|
34
34
|
touchOn?: "focus" | "blur";
|
35
35
|
ignoreContext?: boolean;
|
36
36
|
onTheFlightValidate?: (value: string) => boolean;
|
37
|
-
onFocus?: (
|
37
|
+
onFocus?: () => void;
|
38
38
|
onBlur?: () => void;
|
39
39
|
onSuggestionsClosed?: () => void;
|
40
40
|
onSuggestionsOpened?: () => void;
|
@@ -80,7 +80,7 @@ export declare const Submit: React.ForwardRefExoticComponent<{
|
|
80
80
|
touchOn?: "focus" | "blur";
|
81
81
|
ignoreContext?: boolean;
|
82
82
|
onTheFlightValidate?: (value: string) => boolean;
|
83
|
-
onFocus?: (
|
83
|
+
onFocus?: () => void;
|
84
84
|
onBlur?: () => void;
|
85
85
|
onSuggestionsClosed?: () => void;
|
86
86
|
onSuggestionsOpened?: () => void;
|
@@ -96,10 +96,10 @@ class TagsRaw extends _BaseInput.BaseInput {
|
|
96
96
|
textErrors
|
97
97
|
}), () => this.handleErrors()));
|
98
98
|
|
99
|
-
_defineProperty(this, "onFocus",
|
99
|
+
_defineProperty(this, "onFocus", () => {
|
100
100
|
var _this$props$onFocus, _this$props;
|
101
101
|
|
102
|
-
(_this$props$onFocus = (_this$props = this.props).onFocus) === null || _this$props$onFocus === void 0 ? void 0 : _this$props$onFocus.call(_this$props
|
102
|
+
(_this$props$onFocus = (_this$props = this.props).onFocus) === null || _this$props$onFocus === void 0 ? void 0 : _this$props$onFocus.call(_this$props);
|
103
103
|
|
104
104
|
if (!this.state.suggestionsVisible) {
|
105
105
|
var _this$props$onSuggest, _this$props2;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tags.js","names":["PlusIcon","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","TagButtonComponent","p","className","id","onClick","children","TagsRaw","BaseInput","constructor","props","textErrors","setState","handleErrors","e","onFocus","state","suggestionsVisible","onSuggestionsOpened","textIsFocused","touched","fetchExistingTags","value","showMobileVersion","mobileVersionEnabled","isMobile","setTimeout","textRef","current","focus","suggestions","key","preselectedSuggestion","undefined","length","preventDefault","stopPropagation","existingTag","existingTags","find","et","name","onTagsChanged","tags","concat","allowNew","addNewTag","newTag","onNewTagAdded","closeSuggestionsAfterCreate","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","isValid","target","textIsValid","errors","getErrors","setInvalid","setValid","onTagClick","filter","sv","fetchingExistingTags","fetchedExistingTags","React","createRef","suggestionsRef","handleClickOutside","bind","handleLeaveMobileClick","require","componentDidUpdate","oldProps","validators","customValidators","required","containerRef","querySelector","contains","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","onSuggestionSelected","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","render","translations","getTranslations","textProps","LeaveMobileButton","showInput","Boolean","readOnly","body","title","tooltip","classNames","getValidationClass","placeholder","map","item","index","renderTag","readonlyEmptyPlaceholder","onKeyDown","onTextErrorsChanged","onTextChanged","showSuggestions","tagsSuggestionsClassName","isLoading","suggestionsLoadingComponent","suggestionsEmptyComponent","waitingForMoreInputComponent","minLettersToFetch","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","i","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","toString","tagRemoveClick","showChips","tagClick","defaultProps","disabled","newTagName","Promise","resolve","Date","getTime","text","Tags","withThemeContext","withFormContext"],"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;\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: 500,\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 ) : (\r\n undefined\r\n );\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 && 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(this.props.tagsSuggestionsClassName)}\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 = (e: React.SyntheticEvent<{}>) => {\r\n this.props.onFocus?.(e);\r\n if (!this.state.suggestionsVisible) {\r\n this.props.onSuggestionsOpened?.();\r\n }\r\n this.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(this.state.value);\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":"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"}
|
1
|
+
{"version":3,"file":"Tags.js","names":["PlusIcon","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","TagButtonComponent","p","className","id","onClick","children","TagsRaw","BaseInput","constructor","props","textErrors","setState","handleErrors","onFocus","state","suggestionsVisible","onSuggestionsOpened","textIsFocused","touched","fetchExistingTags","value","showMobileVersion","mobileVersionEnabled","isMobile","setTimeout","textRef","current","focus","suggestions","e","key","preselectedSuggestion","undefined","length","preventDefault","stopPropagation","existingTag","existingTags","find","et","name","onTagsChanged","tags","concat","allowNew","addNewTag","newTag","onNewTagAdded","closeSuggestionsAfterCreate","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","isValid","target","textIsValid","errors","getErrors","setInvalid","setValid","onTagClick","filter","sv","fetchingExistingTags","fetchedExistingTags","React","createRef","suggestionsRef","handleClickOutside","bind","handleLeaveMobileClick","require","componentDidUpdate","oldProps","validators","customValidators","required","containerRef","querySelector","contains","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","onSuggestionSelected","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","render","translations","getTranslations","textProps","LeaveMobileButton","showInput","Boolean","readOnly","body","title","tooltip","classNames","getValidationClass","placeholder","map","item","index","renderTag","readonlyEmptyPlaceholder","onKeyDown","onTextErrorsChanged","onTextChanged","showSuggestions","tagsSuggestionsClassName","isLoading","suggestionsLoadingComponent","suggestionsEmptyComponent","waitingForMoreInputComponent","minLettersToFetch","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","i","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","toString","tagRemoveClick","showChips","tagClick","defaultProps","disabled","newTagName","Promise","resolve","Date","getTime","text","Tags","withThemeContext","withFormContext"],"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;\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: 500,\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 ) : (\r\n undefined\r\n );\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 && 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(this.props.tagsSuggestionsClassName)}\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.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(this.state.value);\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":"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"}
|
@@ -48,7 +48,7 @@ class TimeRaw extends _BaseInput.BaseInput {
|
|
48
48
|
constructor(props) {
|
49
49
|
super(props);
|
50
50
|
|
51
|
-
_defineProperty(this, "onBlur",
|
51
|
+
_defineProperty(this, "onBlur", () => {
|
52
52
|
if (this.state.hoursText) {
|
53
53
|
this.handleHoursChange(this.state.hoursText);
|
54
54
|
}
|
@@ -60,7 +60,7 @@ class TimeRaw extends _BaseInput.BaseInput {
|
|
60
60
|
this.setState({
|
61
61
|
minutesText: undefined,
|
62
62
|
hoursText: undefined
|
63
|
-
}, () => this.handleBlur(
|
63
|
+
}, () => this.handleBlur());
|
64
64
|
});
|
65
65
|
|
66
66
|
_defineProperty(this, "onMinutesChanged", e => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Time.js","names":["ArrowIcon","TimeRaw","BaseInput","constructor","props","e","state","hoursText","handleHoursChange","minutesText","handleMinutesChange","setState","undefined","handleBlur","target","value","preventDefault","time","minutes","toString","hours","bind","render","mid","showDateDiff","min","diffDays","TimeUtil","dayDiff","title","tooltip","inputGroupClassName","id","classNames","getValidationClass","className","containerRef","addHourClick","getDisabled","required","onHoursChanged","onBlur","handleFocus","removeHourClick","addMinuteClick","onMinutesChanged","removeMinuteClick","renderDefaultValidation","focused","label","renderLabel","handleLimits","asMilliseconds","timeChange","clone","max","hoursString","num","Number","isNaN","newTime","duration","subtract","add","minutesString","Object","assign","defaultProps","type","placeholder","Time","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/time/Time.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport TimeUtil from '../utils/TimeUtil';\r\nimport { Duration, duration } from 'moment';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport interface TimeProps extends BaseInputProps<HTMLInputElement> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n timeChange: (time: Duration) => void;\r\n time: Duration;\r\n min?: Duration;\r\n max?: Duration;\r\n showDateDiff?: boolean;\r\n}\r\n\r\nexport interface TimeState extends BaseInputState {\r\n hoursText?: string;\r\n minutesText?: string;\r\n}\r\n\r\nexport class TimeRaw extends BaseInput<TimeProps, TimeState, HTMLInputElement> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n }) as unknown) as TimeProps;\r\n\r\n constructor(props: TimeProps) {\r\n super(props);\r\n this.handleHoursChange = this.handleHoursChange.bind(this);\r\n this.handleMinutesChange = this.handleMinutesChange.bind(this);\r\n }\r\n\r\n public render() {\r\n let hours = this.props.time?.hours?.() ?? 0;\r\n let minutes = this.props.time?.minutes?.() ?? 0;\r\n if (minutes < 0) {\r\n hours--;\r\n }\r\n minutes = (minutes + 60) % 60;\r\n hours = (hours + 24) % 24;\r\n var mid = 'AM';\r\n if (hours % 24 >= 12) {\r\n hours = hours % 12;\r\n mid = 'PM';\r\n }\r\n if (hours % 12 === 0) {\r\n // At 00 hours we need to show 12 am\r\n hours = 12;\r\n }\r\n if (this.props.showDateDiff && this.props.min) {\r\n const diffDays = TimeUtil.dayDiff(this.props.min, this.props.time);\r\n if (diffDays > 0) {\r\n mid += ' +' + diffDays.toString();\r\n }\r\n }\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base time-input',\r\n this.getValidationClass(),\r\n this.props.className\r\n )}\r\n ref={this.containerRef}\r\n >\r\n <div className=\"\">\r\n <div className=\"time-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addHourClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-hours-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={\r\n 'time-input__time ' + (this.state.value ? 'filled' : '')\r\n }\r\n onChange={this.onHoursChanged}\r\n value={\r\n this.state.hoursText !== undefined\r\n ? this.state.hoursText\r\n : hours\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeHourClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n </div>\r\n <span className=\"\">:</span>\r\n <div className=\"\">\r\n <div className=\"time-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addMinuteClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-minutes-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-minutes-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={\r\n 'time-input__time ' + (this.state.value ? 'filled' : '')\r\n }\r\n onChange={this.onMinutesChanged}\r\n value={\r\n this.state.minutesText !== undefined\r\n ? this.state.minutesText\r\n : minutes < 10\r\n ? '0' + minutes.toString()\r\n : minutes.toString()\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeMinuteClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-minutes-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n </div>\r\n {this.renderDefaultValidation()}\r\n <span className=\"time-input__am-pm\">{mid}</span>\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label className={classNames('time-input__label label--focused')}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\r\n if (this.state.hoursText) {\r\n this.handleHoursChange(this.state.hoursText);\r\n }\r\n if (this.state.minutesText) {\r\n this.handleMinutesChange(this.state.minutesText);\r\n }\r\n this.setState({ minutesText: undefined, hoursText: undefined }, () =>\r\n this.handleBlur(e)\r\n );\r\n };\r\n\r\n private onMinutesChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleMinutesChange(e.target.value);\r\n this.setState({ minutesText: e.target.value });\r\n };\r\n\r\n private removeMinuteClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleMinutesChange(\r\n ((this.props.time?.minutes?.() ?? 0) - 1).toString()\r\n );\r\n };\r\n\r\n private addMinuteClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleMinutesChange(\r\n ((this.props.time?.minutes?.() ?? 0) + 1).toString()\r\n );\r\n };\r\n\r\n private removeHourClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleHoursChange(((this.props.time?.hours?.() ?? 0) - 1).toString());\r\n };\r\n\r\n private onHoursChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleHoursChange(e.target.value);\r\n this.setState({ hoursText: e.target.value });\r\n };\r\n\r\n private addHourClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleHoursChange(((this.props.time?.hours?.() ?? 0) + 1).toString());\r\n };\r\n\r\n private handleLimits(time: Duration) {\r\n if (this.props.min) {\r\n if (\r\n (time?.asMilliseconds?.() ?? 0) - this.props.min.asMilliseconds() <=\r\n 0\r\n ) {\r\n this.props.timeChange(this.props.min.clone());\r\n return;\r\n }\r\n }\r\n if (this.props.max) {\r\n if (\r\n this.props.max.asMilliseconds() - (time?.asMilliseconds?.() ?? 0) <=\r\n 0\r\n ) {\r\n this.props.timeChange(this.props.max.clone());\r\n return;\r\n }\r\n }\r\n this.props.timeChange(time);\r\n }\r\n\r\n private handleHoursChange(hoursString: string) {\r\n let num = Number(hoursString);\r\n if (hoursString === '') {\r\n num = 0;\r\n }\r\n if (!isNaN(num)) {\r\n let newTime: Duration = duration(\r\n this.props.time?.asMilliseconds?.() ?? 0,\r\n 'milliseconds'\r\n )\r\n .subtract(this.props.time?.hours?.() ?? 0, 'hours')\r\n .add(num, 'hours');\r\n this.handleLimits(newTime);\r\n }\r\n }\r\n\r\n private handleMinutesChange(minutesString: string) {\r\n let num = Number(minutesString);\r\n if (minutesString === '') {\r\n num = 0;\r\n }\r\n if (!isNaN(num)) {\r\n let newTime: Duration = duration(\r\n this.props.time?.asMilliseconds?.() ?? 0,\r\n 'milliseconds'\r\n )\r\n .subtract(this.props.time?.minutes?.() ?? 0, 'minutes')\r\n .add(num, 'minutes');\r\n this.handleLimits(newTime);\r\n }\r\n }\r\n}\r\n\r\nexport const Time = withThemeContext<TimeProps, InstanceType<typeof TimeRaw>>(\r\n withFormContext<TimeProps>(TimeRaw),\r\n 'time'\r\n);\r\n\r\nexport default Time;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Time.js","names":["ArrowIcon","TimeRaw","BaseInput","constructor","props","state","hoursText","handleHoursChange","minutesText","handleMinutesChange","setState","undefined","handleBlur","e","target","value","preventDefault","time","minutes","toString","hours","bind","render","mid","showDateDiff","min","diffDays","TimeUtil","dayDiff","title","tooltip","inputGroupClassName","id","classNames","getValidationClass","className","containerRef","addHourClick","getDisabled","required","onHoursChanged","onBlur","handleFocus","removeHourClick","addMinuteClick","onMinutesChanged","removeMinuteClick","renderDefaultValidation","focused","label","renderLabel","handleLimits","asMilliseconds","timeChange","clone","max","hoursString","num","Number","isNaN","newTime","duration","subtract","add","minutesString","Object","assign","defaultProps","type","placeholder","Time","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/time/Time.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport TimeUtil from '../utils/TimeUtil';\r\nimport { Duration, duration } from 'moment';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport interface TimeProps extends BaseInputProps<HTMLInputElement> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n timeChange: (time: Duration) => void;\r\n time: Duration;\r\n min?: Duration;\r\n max?: Duration;\r\n showDateDiff?: boolean;\r\n}\r\n\r\nexport interface TimeState extends BaseInputState {\r\n hoursText?: string;\r\n minutesText?: string;\r\n}\r\n\r\nexport class TimeRaw extends BaseInput<TimeProps, TimeState, HTMLInputElement> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n }) as unknown) as TimeProps;\r\n\r\n constructor(props: TimeProps) {\r\n super(props);\r\n this.handleHoursChange = this.handleHoursChange.bind(this);\r\n this.handleMinutesChange = this.handleMinutesChange.bind(this);\r\n }\r\n\r\n public render() {\r\n let hours = this.props.time?.hours?.() ?? 0;\r\n let minutes = this.props.time?.minutes?.() ?? 0;\r\n if (minutes < 0) {\r\n hours--;\r\n }\r\n minutes = (minutes + 60) % 60;\r\n hours = (hours + 24) % 24;\r\n var mid = 'AM';\r\n if (hours % 24 >= 12) {\r\n hours = hours % 12;\r\n mid = 'PM';\r\n }\r\n if (hours % 12 === 0) {\r\n // At 00 hours we need to show 12 am\r\n hours = 12;\r\n }\r\n if (this.props.showDateDiff && this.props.min) {\r\n const diffDays = TimeUtil.dayDiff(this.props.min, this.props.time);\r\n if (diffDays > 0) {\r\n mid += ' +' + diffDays.toString();\r\n }\r\n }\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base time-input',\r\n this.getValidationClass(),\r\n this.props.className\r\n )}\r\n ref={this.containerRef}\r\n >\r\n <div className=\"\">\r\n <div className=\"time-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addHourClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-hours-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={\r\n 'time-input__time ' + (this.state.value ? 'filled' : '')\r\n }\r\n onChange={this.onHoursChanged}\r\n value={\r\n this.state.hoursText !== undefined\r\n ? this.state.hoursText\r\n : hours\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeHourClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n </div>\r\n <span className=\"\">:</span>\r\n <div className=\"\">\r\n <div className=\"time-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addMinuteClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-minutes-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-minutes-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={\r\n 'time-input__time ' + (this.state.value ? 'filled' : '')\r\n }\r\n onChange={this.onMinutesChanged}\r\n value={\r\n this.state.minutesText !== undefined\r\n ? this.state.minutesText\r\n : minutes < 10\r\n ? '0' + minutes.toString()\r\n : minutes.toString()\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeMinuteClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-minutes-button',\r\n })}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n </div>\r\n {this.renderDefaultValidation()}\r\n <span className=\"time-input__am-pm\">{mid}</span>\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label className={classNames('time-input__label label--focused')}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private onBlur = () => {\r\n if (this.state.hoursText) {\r\n this.handleHoursChange(this.state.hoursText);\r\n }\r\n if (this.state.minutesText) {\r\n this.handleMinutesChange(this.state.minutesText);\r\n }\r\n this.setState({ minutesText: undefined, hoursText: undefined }, () =>\r\n this.handleBlur()\r\n );\r\n };\r\n\r\n private onMinutesChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleMinutesChange(e.target.value);\r\n this.setState({ minutesText: e.target.value });\r\n };\r\n\r\n private removeMinuteClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleMinutesChange(\r\n ((this.props.time?.minutes?.() ?? 0) - 1).toString()\r\n );\r\n };\r\n\r\n private addMinuteClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleMinutesChange(\r\n ((this.props.time?.minutes?.() ?? 0) + 1).toString()\r\n );\r\n };\r\n\r\n private removeHourClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleHoursChange(((this.props.time?.hours?.() ?? 0) - 1).toString());\r\n };\r\n\r\n private onHoursChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleHoursChange(e.target.value);\r\n this.setState({ hoursText: e.target.value });\r\n };\r\n\r\n private addHourClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n this.handleHoursChange(((this.props.time?.hours?.() ?? 0) + 1).toString());\r\n };\r\n\r\n private handleLimits(time: Duration) {\r\n if (this.props.min) {\r\n if (\r\n (time?.asMilliseconds?.() ?? 0) - this.props.min.asMilliseconds() <=\r\n 0\r\n ) {\r\n this.props.timeChange(this.props.min.clone());\r\n return;\r\n }\r\n }\r\n if (this.props.max) {\r\n if (\r\n this.props.max.asMilliseconds() - (time?.asMilliseconds?.() ?? 0) <=\r\n 0\r\n ) {\r\n this.props.timeChange(this.props.max.clone());\r\n return;\r\n }\r\n }\r\n this.props.timeChange(time);\r\n }\r\n\r\n private handleHoursChange(hoursString: string) {\r\n let num = Number(hoursString);\r\n if (hoursString === '') {\r\n num = 0;\r\n }\r\n if (!isNaN(num)) {\r\n let newTime: Duration = duration(\r\n this.props.time?.asMilliseconds?.() ?? 0,\r\n 'milliseconds'\r\n )\r\n .subtract(this.props.time?.hours?.() ?? 0, 'hours')\r\n .add(num, 'hours');\r\n this.handleLimits(newTime);\r\n }\r\n }\r\n\r\n private handleMinutesChange(minutesString: string) {\r\n let num = Number(minutesString);\r\n if (minutesString === '') {\r\n num = 0;\r\n }\r\n if (!isNaN(num)) {\r\n let newTime: Duration = duration(\r\n this.props.time?.asMilliseconds?.() ?? 0,\r\n 'milliseconds'\r\n )\r\n .subtract(this.props.time?.minutes?.() ?? 0, 'minutes')\r\n .add(num, 'minutes');\r\n this.handleLimits(newTime);\r\n }\r\n }\r\n}\r\n\r\nexport const Time = withThemeContext<TimeProps, InstanceType<typeof TimeRaw>>(\r\n withFormContext<TimeProps>(TimeRaw),\r\n 'time'\r\n);\r\n\r\nexport default Time;\r\n"],"mappings":"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"}
|
@@ -76,9 +76,9 @@ class TimeSpanRaw extends _BaseInput.BaseInput {
|
|
76
76
|
constructor(props) {
|
77
77
|
super(props);
|
78
78
|
|
79
|
-
_defineProperty(this, "onBlur",
|
79
|
+
_defineProperty(this, "onBlur", () => {
|
80
80
|
this.commitState();
|
81
|
-
this.handleBlur(
|
81
|
+
this.handleBlur();
|
82
82
|
});
|
83
83
|
|
84
84
|
_defineProperty(this, "removeUnitClick", e => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TimeSpan.js","names":["ArrowIcon","TimeSpanUnit","allTimeSpanUnits","Day","Hour","Millisecond","Minute","Second","Year","getValues","enumeration","values","value","isNaN","Number","push","allUnits","TimeSpanRaw","BaseInput","constructor","props","e","commitState","handleBlur","preventDefault","unit","currentTarget","dataset","diff","oneUnitInMs","newDate","duration","timeSpan","asMilliseconds","handleLimits","setState","currentUnitText","target","currentUnit","key","removeUnitClick","bind","addUnitClick","onUnitChanged","render","validUnits","initialUnits","units","_units","getUnits","unitsArr","filter","u","reverse","title","tooltip","inputGroupClassName","id","getValidationClass","className","containerRef","map","getDisabled","required","classNames","filled","state","getValue","onBlur","handleFocus","onKeyDown","unitToString","renderDefaultValidation","focused","label","renderLabel","time","undefined","ms","tagMask","Math","floor","get","maxOfUnit","num","newOfUnitMs","oldOfUnitMs","maxOfUnitMs","moreThanMax","min","timeSpanChange","clone","max","Object","assign","defaultProps","type","placeholder","Dynamic","TimeSpan","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/timeSpan/TimeSpan.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { Duration, duration } from 'moment';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport enum TimeSpanUnit {\r\n Dynamic = 0,\r\n Millisecond = 1,\r\n Second = 2,\r\n Minute = 4,\r\n Hour = 8,\r\n Day = 16,\r\n Year = 32,\r\n}\r\n\r\nexport const allTimeSpanUnits: TimeSpanUnit =\r\n TimeSpanUnit.Day |\r\n TimeSpanUnit.Hour |\r\n TimeSpanUnit.Millisecond |\r\n TimeSpanUnit.Minute |\r\n TimeSpanUnit.Second |\r\n TimeSpanUnit.Year;\r\n\r\nfunction getValues<T>(enumeration: T): T[keyof T][] {\r\n var values: T[keyof T][] = [];\r\n for (var value in enumeration) {\r\n if (isNaN(Number(value))) {\r\n values.push(enumeration[value]);\r\n }\r\n }\r\n return values;\r\n}\r\n\r\nconst allUnits = getValues(TimeSpanUnit);\r\n\r\nexport interface TimeSpanProps extends BaseInputProps<HTMLInputElement> {\r\n onChange?: never;\r\n timeSpanChange: (time: Duration) => void;\r\n timeSpan: Duration;\r\n min?: Duration;\r\n max?: Duration;\r\n initialUnits?: TimeSpanUnit;\r\n units?: TimeSpanUnit;\r\n validUnits?: TimeSpanUnit;\r\n unitToString?: (unit: TimeSpanUnit) => string;\r\n}\r\n\r\nexport interface TimeSpanState extends BaseInputState {\r\n currentUnitText: string;\r\n currentUnit: TimeSpanUnit;\r\n}\r\n\r\nexport class TimeSpanRaw extends BaseInput<\r\n TimeSpanProps,\r\n TimeSpanState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n validUnits: allTimeSpanUnits,\r\n initialUnits: allTimeSpanUnits,\r\n units: TimeSpanUnit.Dynamic,\r\n unitToString: (unit: TimeSpanUnit) => {\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 'ms';\r\n case TimeSpanUnit.Second:\r\n return 's';\r\n case TimeSpanUnit.Minute:\r\n return 'm';\r\n case TimeSpanUnit.Hour:\r\n return 'h';\r\n case TimeSpanUnit.Day:\r\n return 'd';\r\n case TimeSpanUnit.Year:\r\n return 'y';\r\n default:\r\n return '';\r\n }\r\n },\r\n min: duration(0),\r\n }) as unknown) as TimeSpanProps;\r\n\r\n constructor(props: TimeSpanProps) {\r\n super(props);\r\n this.removeUnitClick = this.removeUnitClick.bind(this);\r\n this.addUnitClick = this.addUnitClick.bind(this);\r\n this.onUnitChanged = this.onUnitChanged.bind(this);\r\n }\r\n\r\n public render() {\r\n const { timeSpan, validUnits, initialUnits, units: _units } = this.props;\r\n const units = _units || this.getUnits(timeSpan, validUnits, initialUnits);\r\n const unitsArr = allUnits.filter(u => (units & u) !== 0).reverse();\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={\r\n 'input__base timeSpan-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {unitsArr.map(unit => (\r\n <div className=\"\" key={unit}>\r\n <div className=\"timeSpan-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n data-unit={unit}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-' + unit + '-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={classNames('timeSpan-input__time', {\r\n filled: this.state.value,\r\n 'timeSpan-input__time--ms':\r\n unit === TimeSpanUnit.Millisecond,\r\n })}\r\n onChange={this.onUnitChanged}\r\n value={\r\n this.state.currentUnit === unit\r\n ? this.state.currentUnitText\r\n : this.getValue(timeSpan, unit)\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n data-unit={unit}\r\n onKeyDown={this.onKeyDown}\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n data-unit={unit}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n {this.props.unitToString(unit)}\r\n </div>\r\n ))}\r\n {this.renderDefaultValidation()}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label\r\n className={classNames('timeSpan-input__label label--focused')}\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private getUnits(\r\n time: Duration,\r\n validUnits: TimeSpanUnit,\r\n initialUnits: TimeSpanUnit\r\n ) {\r\n if (time === null || time === undefined) {\r\n return initialUnits;\r\n }\r\n const ms = time.asMilliseconds();\r\n let units: TimeSpanUnit = TimeSpanUnit.Millisecond | TimeSpanUnit.Second;\r\n if (ms >= 1000) {\r\n units += TimeSpanUnit.Minute;\r\n }\r\n if (ms >= 60000) {\r\n units += TimeSpanUnit.Hour;\r\n }\r\n if (ms >= 60 * 60000) {\r\n units += TimeSpanUnit.Day;\r\n }\r\n if (ms >= 24 * 60 * 60000) {\r\n units += TimeSpanUnit.Year;\r\n }\r\n const tagMask = allTimeSpanUnits & ~validUnits;\r\n units &= ~tagMask;\r\n return units || initialUnits;\r\n }\r\n\r\n private getValue(time: Duration, unit: TimeSpanUnit) {\r\n if (!time || !unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return Math.floor(time.get('millisecond'));\r\n case TimeSpanUnit.Second:\r\n return Math.floor(time.get('second'));\r\n case TimeSpanUnit.Minute:\r\n return Math.floor(time.get('minute'));\r\n case TimeSpanUnit.Hour:\r\n return Math.floor(time.get('hour'));\r\n case TimeSpanUnit.Day:\r\n return Math.floor(time.get('day'));\r\n case TimeSpanUnit.Year:\r\n return Math.floor(time.get('year'));\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private oneUnitInMs(unit: TimeSpanUnit) {\r\n if (!unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 1;\r\n case TimeSpanUnit.Second:\r\n return 1000;\r\n case TimeSpanUnit.Minute:\r\n return 60000;\r\n case TimeSpanUnit.Hour:\r\n return 3600000;\r\n case TimeSpanUnit.Day:\r\n return 24 * 3600000;\r\n case TimeSpanUnit.Year:\r\n return 24 * 365 * 3600000;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private maxOfUnit(unit: TimeSpanUnit) {\r\n if (!unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 1000;\r\n case TimeSpanUnit.Second:\r\n return 60;\r\n case TimeSpanUnit.Minute:\r\n return 60;\r\n case TimeSpanUnit.Hour:\r\n return 24;\r\n case TimeSpanUnit.Day:\r\n return 365;\r\n case TimeSpanUnit.Year:\r\n return 9999;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private commitState() {\r\n if (this.state.currentUnit) {\r\n var num = Number(this.state.currentUnitText);\r\n if (!isNaN(num)) {\r\n const newOfUnitMs = num * this.oneUnitInMs(this.state.currentUnit);\r\n const oldOfUnitMs =\r\n this.getValue(this.props.timeSpan, this.state.currentUnit) *\r\n this.oneUnitInMs(this.state.currentUnit);\r\n const maxOfUnitMs =\r\n this.maxOfUnit(this.state.currentUnit) *\r\n this.oneUnitInMs(this.state.currentUnit);\r\n const moreThanMax = maxOfUnitMs < newOfUnitMs;\r\n const diff = newOfUnitMs - oldOfUnitMs;\r\n if (moreThanMax) {\r\n this.handleLimits(duration(newOfUnitMs, 'millisecond'));\r\n } else {\r\n this.handleLimits(\r\n duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'millisecond'\r\n )\r\n );\r\n }\r\n }\r\n this.setState({ currentUnit: undefined, currentUnitText: undefined });\r\n }\r\n }\r\n\r\n private onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\r\n this.commitState();\r\n this.handleBlur(e);\r\n };\r\n\r\n private removeUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n const diff = -1 * this.oneUnitInMs(unit);\r\n const newDate = duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'millisecond'\r\n );\r\n this.handleLimits(newDate);\r\n };\r\n\r\n private onUnitChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleHoursChange(e.target.value);\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n this.setState({ currentUnitText: e.target.value, currentUnit: unit });\r\n };\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n this.commitState();\r\n }\r\n };\r\n\r\n private addUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n const diff = this.oneUnitInMs(unit);\r\n const newDate = duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'milliseconds'\r\n );\r\n this.handleLimits(newDate);\r\n };\r\n\r\n private handleLimits(time: Duration) {\r\n if (this.props.min) {\r\n if (time.asMilliseconds() - this.props.min.asMilliseconds() <= 0) {\r\n this.props.timeSpanChange(this.props.min.clone());\r\n return;\r\n }\r\n }\r\n if (this.props.max) {\r\n if (this.props.max.asMilliseconds() - time.asMilliseconds() <= 0) {\r\n this.props.timeSpanChange(this.props.max.clone());\r\n return;\r\n }\r\n }\r\n this.props.timeSpanChange(time);\r\n }\r\n}\r\n\r\nexport const TimeSpan = withThemeContext<\r\n TimeSpanProps,\r\n InstanceType<typeof TimeSpanRaw>\r\n>(withFormContext<TimeSpanProps>(TimeSpanRaw), 'timeSpan');\r\n\r\nexport default TimeSpan;\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"TimeSpan.js","names":["ArrowIcon","TimeSpanUnit","allTimeSpanUnits","Day","Hour","Millisecond","Minute","Second","Year","getValues","enumeration","values","value","isNaN","Number","push","allUnits","TimeSpanRaw","BaseInput","constructor","props","commitState","handleBlur","e","preventDefault","unit","currentTarget","dataset","diff","oneUnitInMs","newDate","duration","timeSpan","asMilliseconds","handleLimits","setState","currentUnitText","target","currentUnit","key","removeUnitClick","bind","addUnitClick","onUnitChanged","render","validUnits","initialUnits","units","_units","getUnits","unitsArr","filter","u","reverse","title","tooltip","inputGroupClassName","id","getValidationClass","className","containerRef","map","getDisabled","required","classNames","filled","state","getValue","onBlur","handleFocus","onKeyDown","unitToString","renderDefaultValidation","focused","label","renderLabel","time","undefined","ms","tagMask","Math","floor","get","maxOfUnit","num","newOfUnitMs","oldOfUnitMs","maxOfUnitMs","moreThanMax","min","timeSpanChange","clone","max","Object","assign","defaultProps","type","placeholder","Dynamic","TimeSpan","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/timeSpan/TimeSpan.tsx"],"sourcesContent":["import * as ArrowIcon from 'material-design-icons/hardware/svg/production/ic_keyboard_arrow_down_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n} from '../base/input/BaseInput';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { Duration, duration } from 'moment';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport classNames from 'classnames';\r\n\r\nexport enum TimeSpanUnit {\r\n Dynamic = 0,\r\n Millisecond = 1,\r\n Second = 2,\r\n Minute = 4,\r\n Hour = 8,\r\n Day = 16,\r\n Year = 32,\r\n}\r\n\r\nexport const allTimeSpanUnits: TimeSpanUnit =\r\n TimeSpanUnit.Day |\r\n TimeSpanUnit.Hour |\r\n TimeSpanUnit.Millisecond |\r\n TimeSpanUnit.Minute |\r\n TimeSpanUnit.Second |\r\n TimeSpanUnit.Year;\r\n\r\nfunction getValues<T>(enumeration: T): T[keyof T][] {\r\n var values: T[keyof T][] = [];\r\n for (var value in enumeration) {\r\n if (isNaN(Number(value))) {\r\n values.push(enumeration[value]);\r\n }\r\n }\r\n return values;\r\n}\r\n\r\nconst allUnits = getValues(TimeSpanUnit);\r\n\r\nexport interface TimeSpanProps extends BaseInputProps<HTMLInputElement> {\r\n onChange?: never;\r\n timeSpanChange: (time: Duration) => void;\r\n timeSpan: Duration;\r\n min?: Duration;\r\n max?: Duration;\r\n initialUnits?: TimeSpanUnit;\r\n units?: TimeSpanUnit;\r\n validUnits?: TimeSpanUnit;\r\n unitToString?: (unit: TimeSpanUnit) => string;\r\n}\r\n\r\nexport interface TimeSpanState extends BaseInputState {\r\n currentUnitText: string;\r\n currentUnit: TimeSpanUnit;\r\n}\r\n\r\nexport class TimeSpanRaw extends BaseInput<\r\n TimeSpanProps,\r\n TimeSpanState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'time',\r\n placeholder: '',\r\n validUnits: allTimeSpanUnits,\r\n initialUnits: allTimeSpanUnits,\r\n units: TimeSpanUnit.Dynamic,\r\n unitToString: (unit: TimeSpanUnit) => {\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 'ms';\r\n case TimeSpanUnit.Second:\r\n return 's';\r\n case TimeSpanUnit.Minute:\r\n return 'm';\r\n case TimeSpanUnit.Hour:\r\n return 'h';\r\n case TimeSpanUnit.Day:\r\n return 'd';\r\n case TimeSpanUnit.Year:\r\n return 'y';\r\n default:\r\n return '';\r\n }\r\n },\r\n min: duration(0),\r\n }) as unknown) as TimeSpanProps;\r\n\r\n constructor(props: TimeSpanProps) {\r\n super(props);\r\n this.removeUnitClick = this.removeUnitClick.bind(this);\r\n this.addUnitClick = this.addUnitClick.bind(this);\r\n this.onUnitChanged = this.onUnitChanged.bind(this);\r\n }\r\n\r\n public render() {\r\n const { timeSpan, validUnits, initialUnits, units: _units } = this.props;\r\n const units = _units || this.getUnits(timeSpan, validUnits, initialUnits);\r\n const unitsArr = allUnits.filter(u => (units & u) !== 0).reverse();\r\n return (\r\n <InputGroup\r\n title={this.props.title}\r\n tooltip={this.props.tooltip}\r\n className={this.props.inputGroupClassName}\r\n >\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={\r\n 'input__base timeSpan-input ' +\r\n this.getValidationClass() +\r\n ' ' +\r\n (this.props.className ? this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {unitsArr.map(unit => (\r\n <div className=\"\" key={unit}>\r\n <div className=\"timeSpan-input__arrows__container\">\r\n <button\r\n className=\"plus\"\r\n onClick={this.addUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-hours-button',\r\n })}\r\n data-unit={unit}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n <div className=\"input-padding\">\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id + '-' + unit + '-input',\r\n })}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={classNames('timeSpan-input__time', {\r\n filled: this.state.value,\r\n 'timeSpan-input__time--ms':\r\n unit === TimeSpanUnit.Millisecond,\r\n })}\r\n onChange={this.onUnitChanged}\r\n value={\r\n this.state.currentUnit === unit\r\n ? this.state.currentUnitText\r\n : this.getValue(timeSpan, unit)\r\n }\r\n onBlur={this.onBlur}\r\n onFocus={this.handleFocus}\r\n type=\"number\"\r\n data-unit={unit}\r\n onKeyDown={this.onKeyDown}\r\n />\r\n <span className=\"highlight\" />\r\n </div>\r\n <button\r\n className=\"minus\"\r\n onClick={this.removeUnitClick}\r\n {...(this.props.id && {\r\n id: this.props.id + '-subtract-hours-button',\r\n })}\r\n data-unit={unit}\r\n tabIndex={0}\r\n >\r\n <ArrowIcon />\r\n </button>\r\n </div>\r\n {this.props.unitToString(unit)}\r\n </div>\r\n ))}\r\n {this.renderDefaultValidation()}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.props.label && (\r\n <label\r\n className={classNames('timeSpan-input__label label--focused')}\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private getUnits(\r\n time: Duration,\r\n validUnits: TimeSpanUnit,\r\n initialUnits: TimeSpanUnit\r\n ) {\r\n if (time === null || time === undefined) {\r\n return initialUnits;\r\n }\r\n const ms = time.asMilliseconds();\r\n let units: TimeSpanUnit = TimeSpanUnit.Millisecond | TimeSpanUnit.Second;\r\n if (ms >= 1000) {\r\n units += TimeSpanUnit.Minute;\r\n }\r\n if (ms >= 60000) {\r\n units += TimeSpanUnit.Hour;\r\n }\r\n if (ms >= 60 * 60000) {\r\n units += TimeSpanUnit.Day;\r\n }\r\n if (ms >= 24 * 60 * 60000) {\r\n units += TimeSpanUnit.Year;\r\n }\r\n const tagMask = allTimeSpanUnits & ~validUnits;\r\n units &= ~tagMask;\r\n return units || initialUnits;\r\n }\r\n\r\n private getValue(time: Duration, unit: TimeSpanUnit) {\r\n if (!time || !unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return Math.floor(time.get('millisecond'));\r\n case TimeSpanUnit.Second:\r\n return Math.floor(time.get('second'));\r\n case TimeSpanUnit.Minute:\r\n return Math.floor(time.get('minute'));\r\n case TimeSpanUnit.Hour:\r\n return Math.floor(time.get('hour'));\r\n case TimeSpanUnit.Day:\r\n return Math.floor(time.get('day'));\r\n case TimeSpanUnit.Year:\r\n return Math.floor(time.get('year'));\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private oneUnitInMs(unit: TimeSpanUnit) {\r\n if (!unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 1;\r\n case TimeSpanUnit.Second:\r\n return 1000;\r\n case TimeSpanUnit.Minute:\r\n return 60000;\r\n case TimeSpanUnit.Hour:\r\n return 3600000;\r\n case TimeSpanUnit.Day:\r\n return 24 * 3600000;\r\n case TimeSpanUnit.Year:\r\n return 24 * 365 * 3600000;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private maxOfUnit(unit: TimeSpanUnit) {\r\n if (!unit) {\r\n return 0;\r\n }\r\n switch (unit) {\r\n case TimeSpanUnit.Millisecond:\r\n return 1000;\r\n case TimeSpanUnit.Second:\r\n return 60;\r\n case TimeSpanUnit.Minute:\r\n return 60;\r\n case TimeSpanUnit.Hour:\r\n return 24;\r\n case TimeSpanUnit.Day:\r\n return 365;\r\n case TimeSpanUnit.Year:\r\n return 9999;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private commitState() {\r\n if (this.state.currentUnit) {\r\n var num = Number(this.state.currentUnitText);\r\n if (!isNaN(num)) {\r\n const newOfUnitMs = num * this.oneUnitInMs(this.state.currentUnit);\r\n const oldOfUnitMs =\r\n this.getValue(this.props.timeSpan, this.state.currentUnit) *\r\n this.oneUnitInMs(this.state.currentUnit);\r\n const maxOfUnitMs =\r\n this.maxOfUnit(this.state.currentUnit) *\r\n this.oneUnitInMs(this.state.currentUnit);\r\n const moreThanMax = maxOfUnitMs < newOfUnitMs;\r\n const diff = newOfUnitMs - oldOfUnitMs;\r\n if (moreThanMax) {\r\n this.handleLimits(duration(newOfUnitMs, 'millisecond'));\r\n } else {\r\n this.handleLimits(\r\n duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'millisecond'\r\n )\r\n );\r\n }\r\n }\r\n this.setState({ currentUnit: undefined, currentUnitText: undefined });\r\n }\r\n }\r\n\r\n private onBlur = () => {\r\n this.commitState();\r\n this.handleBlur();\r\n };\r\n\r\n private removeUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n const diff = -1 * this.oneUnitInMs(unit);\r\n const newDate = duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'millisecond'\r\n );\r\n this.handleLimits(newDate);\r\n };\r\n\r\n private onUnitChanged = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // this.handleHoursChange(e.target.value);\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n this.setState({ currentUnitText: e.target.value, currentUnit: unit });\r\n };\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n this.commitState();\r\n }\r\n };\r\n\r\n private addUnitClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.preventDefault();\r\n const unit: TimeSpanUnit = Number(e.currentTarget.dataset.unit);\r\n const diff = this.oneUnitInMs(unit);\r\n const newDate = duration(\r\n (this.props.timeSpan?.asMilliseconds() || 0) + diff,\r\n 'milliseconds'\r\n );\r\n this.handleLimits(newDate);\r\n };\r\n\r\n private handleLimits(time: Duration) {\r\n if (this.props.min) {\r\n if (time.asMilliseconds() - this.props.min.asMilliseconds() <= 0) {\r\n this.props.timeSpanChange(this.props.min.clone());\r\n return;\r\n }\r\n }\r\n if (this.props.max) {\r\n if (this.props.max.asMilliseconds() - time.asMilliseconds() <= 0) {\r\n this.props.timeSpanChange(this.props.max.clone());\r\n return;\r\n }\r\n }\r\n this.props.timeSpanChange(time);\r\n }\r\n}\r\n\r\nexport const TimeSpan = withThemeContext<\r\n TimeSpanProps,\r\n InstanceType<typeof TimeSpanRaw>\r\n>(withFormContext<TimeSpanProps>(TimeSpanRaw), 'timeSpan');\r\n\r\nexport default TimeSpan;\r\n"],"mappings":";;;;;;;AAGA;;AAGA;;AACA;;AAKA;;AACA;;AACA;;AACA;;;;;;;;;;;;IAfYA,S,YAAAA,S;;;;;;AAAAA,S;;;;;GAEZ;;IAeYC,Y;;;WAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;GAAAA,Y,4BAAAA,Y;;AAUL,MAAMC,gBAA8B,GACzCD,YAAY,CAACE,GAAb,GACAF,YAAY,CAACG,IADb,GAEAH,YAAY,CAACI,WAFb,GAGAJ,YAAY,CAACK,MAHb,GAIAL,YAAY,CAACM,MAJb,GAKAN,YAAY,CAACO,IANR;;;AAQP,SAASC,SAAT,CAAsBC,WAAtB,EAAoD;EAClD,IAAIC,MAAoB,GAAG,EAA3B;;EACA,KAAK,IAAIC,KAAT,IAAkBF,WAAlB,EAA+B;IAC7B,IAAIG,KAAK,CAACC,MAAM,CAACF,KAAD,CAAP,CAAT,EAA0B;MACxBD,MAAM,CAACI,IAAP,CAAYL,WAAW,CAACE,KAAD,CAAvB;IACD;EACF;;EACD,OAAOD,MAAP;AACD;;AAED,MAAMK,QAAQ,GAAGP,SAAS,CAACR,YAAD,CAA1B;;AAmBO,MAAMgB,WAAN,SAA0BC,oBAA1B,CAIL;EA4BAC,WAAW,CAACC,KAAD,EAAuB;IAChC,MAAMA,KAAN;;IADgC,gCA4NjB,MAAM;MACrB,KAAKC,WAAL;MACA,KAAKC,UAAL;IACD,CA/NiC;;IAAA,yCAiOPC,CAAD,IAA4C;MAAA;;MACpEA,CAAC,CAACC,cAAF;MACA,MAAMC,IAAkB,GAAGX,MAAM,CAACS,CAAC,CAACG,aAAF,CAAgBC,OAAhB,CAAwBF,IAAzB,CAAjC;MACA,MAAMG,IAAI,GAAG,CAAC,CAAD,GAAK,KAAKC,WAAL,CAAiBJ,IAAjB,CAAlB;MACA,MAAMK,OAAO,GAAG,IAAAC,gBAAA,EACd,CAAC,8BAAKX,KAAL,CAAWY,QAAX,8EAAqBC,cAArB,OAAyC,CAA1C,IAA+CL,IADjC,EAEd,aAFc,CAAhB;MAIA,KAAKM,YAAL,CAAkBJ,OAAlB;IACD,CA1OiC;;IAAA,uCA4OTP,CAAD,IAA4C;MAClE;MACA,MAAME,IAAkB,GAAGX,MAAM,CAACS,CAAC,CAACG,aAAF,CAAgBC,OAAhB,CAAwBF,IAAzB,CAAjC;MACA,KAAKU,QAAL,CAAc;QAAEC,eAAe,EAAEb,CAAC,CAACc,MAAF,CAASzB,KAA5B;QAAmC0B,WAAW,EAAEb;MAAhD,CAAd;IACD,CAhPiC;;IAAA,mCAkPbF,CAAD,IAA8C;MAChE,IAAIA,CAAC,CAACgB,GAAF,KAAU,OAAd,EAAuB;QACrB,KAAKlB,WAAL;MACD;IACF,CAtPiC;;IAAA,sCAwPVE,CAAD,IAA4C;MAAA;;MACjEA,CAAC,CAACC,cAAF;MACA,MAAMC,IAAkB,GAAGX,MAAM,CAACS,CAAC,CAACG,aAAF,CAAgBC,OAAhB,CAAwBF,IAAzB,CAAjC;MACA,MAAMG,IAAI,GAAG,KAAKC,WAAL,CAAiBJ,IAAjB,CAAb;MACA,MAAMK,OAAO,GAAG,IAAAC,gBAAA,EACd,CAAC,+BAAKX,KAAL,CAAWY,QAAX,gFAAqBC,cAArB,OAAyC,CAA1C,IAA+CL,IADjC,EAEd,cAFc,CAAhB;MAIA,KAAKM,YAAL,CAAkBJ,OAAlB;IACD,CAjQiC;;IAEhC,KAAKU,eAAL,GAAuB,KAAKA,eAAL,CAAqBC,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBD,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKE,aAAL,GAAqB,KAAKA,aAAL,CAAmBF,IAAnB,CAAwB,IAAxB,CAArB;EACD;;EAEMG,MAAM,GAAG;IACd,MAAM;MAAEZ,QAAF;MAAYa,UAAZ;MAAwBC,YAAxB;MAAsCC,KAAK,EAAEC;IAA7C,IAAwD,KAAK5B,KAAnE;;IACA,MAAM2B,KAAK,GAAGC,MAAM,IAAI,KAAKC,QAAL,CAAcjB,QAAd,EAAwBa,UAAxB,EAAoCC,YAApC,CAAxB;;IACA,MAAMI,QAAQ,GAAGlC,QAAQ,CAACmC,MAAT,CAAgBC,CAAC,IAAI,CAACL,KAAK,GAAGK,CAAT,MAAgB,CAArC,EAAwCC,OAAxC,EAAjB;IACA,oBACE,oBAAC,mBAAD;MACE,KAAK,EAAE,KAAKjC,KAAL,CAAWkC,KADpB;MAEE,OAAO,EAAE,KAAKlC,KAAL,CAAWmC,OAFtB;MAGE,SAAS,EAAE,KAAKnC,KAAL,CAAWoC;IAHxB,gBAKE,wCACO,KAAKpC,KAAL,CAAWqC,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKrC,KAAL,CAAWqC;IADK,CADxB;MAIE,SAAS,EACP,gCACA,KAAKC,kBAAL,EADA,GAEA,GAFA,IAGC,KAAKtC,KAAL,CAAWuC,SAAX,GAAuB,KAAKvC,KAAL,CAAWuC,SAAlC,GAA8C,EAH/C,CALJ;MAUE,GAAG,EAAE,KAAKC;IAVZ,IAYGV,QAAQ,CAACW,GAAT,CAAapC,IAAI,iBAChB;MAAK,SAAS,EAAC,EAAf;MAAkB,GAAG,EAAEA;IAAvB,gBACE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,SAAS,EAAC,MADZ;MAEE,OAAO,EAAE,KAAKiB;IAFhB,GAGO,KAAKtB,KAAL,CAAWqC,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKrC,KAAL,CAAWqC,EAAX,GAAgB;IADA,CAHxB;MAME,aAAWhC,IANb;MAOE,QAAQ,EAAE;IAPZ,iBASE,oBAAC,SAAD,OATF,CADF,eAYE;MAAK,SAAS,EAAC;IAAf,gBACE,0CACO,KAAKL,KAAL,CAAWqC,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKrC,KAAL,CAAWqC,EAAX,GAAgB,GAAhB,GAAsBhC,IAAtB,GAA6B;IADb,CADxB;MAIE,QAAQ,EAAE,KAAKqC,WAAL,EAJZ;MAKE,QAAQ,EAAE,KAAK1C,KAAL,CAAW2C,QALvB;MAME,SAAS,EAAE,IAAAC,mBAAA,EAAW,sBAAX,EAAmC;QAC5CC,MAAM,EAAE,KAAKC,KAAL,CAAWtD,KADyB;QAE5C,4BACEa,IAAI,KAAKxB,YAAY,CAACI;MAHoB,CAAnC,CANb;MAWE,QAAQ,EAAE,KAAKsC,aAXjB;MAYE,KAAK,EACH,KAAKuB,KAAL,CAAW5B,WAAX,KAA2Bb,IAA3B,GACI,KAAKyC,KAAL,CAAW9B,eADf,GAEI,KAAK+B,QAAL,CAAcnC,QAAd,EAAwBP,IAAxB,CAfR;MAiBE,MAAM,EAAE,KAAK2C,MAjBf;MAkBE,OAAO,EAAE,KAAKC,WAlBhB;MAmBE,IAAI,EAAC,QAnBP;MAoBE,aAAW5C,IApBb;MAqBE,SAAS,EAAE,KAAK6C;IArBlB,GADF,eAwBE;MAAM,SAAS,EAAC;IAAhB,EAxBF,CAZF,eAsCE;MACE,SAAS,EAAC,OADZ;MAEE,OAAO,EAAE,KAAK9B;IAFhB,GAGO,KAAKpB,KAAL,CAAWqC,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKrC,KAAL,CAAWqC,EAAX,GAAgB;IADA,CAHxB;MAME,aAAWhC,IANb;MAOE,QAAQ,EAAE;IAPZ,iBASE,oBAAC,SAAD,OATF,CAtCF,CADF,EAmDG,KAAKL,KAAL,CAAWmD,YAAX,CAAwB9C,IAAxB,CAnDH,CADD,CAZH,EAmEG,KAAK+C,uBAAL,EAnEH,eAoEE;MAAM,SAAS,EAAC;IAAhB,EApEF,eAqEE;MAAM,SAAS,EAAE,UAAU,KAAKN,KAAL,CAAWO,OAAX,GAAqB,SAArB,GAAiC,EAA3C;IAAjB,EArEF,EAsEG,KAAKrD,KAAL,CAAWsD,KAAX,iBACC;MACE,SAAS,EAAE,IAAAV,mBAAA,EAAW,sCAAX;IADb,GAGG,KAAKW,WAAL,EAHH,CAvEJ,CALF,CADF;EAsFD;;EAEO1B,QAAQ,CACd2B,IADc,EAEd/B,UAFc,EAGdC,YAHc,EAId;IACA,IAAI8B,IAAI,KAAK,IAAT,IAAiBA,IAAI,KAAKC,SAA9B,EAAyC;MACvC,OAAO/B,YAAP;IACD;;IACD,MAAMgC,EAAE,GAAGF,IAAI,CAAC3C,cAAL,EAAX;IACA,IAAIc,KAAmB,GAAG9C,YAAY,CAACI,WAAb,GAA2BJ,YAAY,CAACM,MAAlE;;IACA,IAAIuE,EAAE,IAAI,IAAV,EAAgB;MACd/B,KAAK,IAAI9C,YAAY,CAACK,MAAtB;IACD;;IACD,IAAIwE,EAAE,IAAI,KAAV,EAAiB;MACf/B,KAAK,IAAI9C,YAAY,CAACG,IAAtB;IACD;;IACD,IAAI0E,EAAE,IAAI,KAAK,KAAf,EAAsB;MACpB/B,KAAK,IAAI9C,YAAY,CAACE,GAAtB;IACD;;IACD,IAAI2E,EAAE,IAAI,KAAK,EAAL,GAAU,KAApB,EAA2B;MACzB/B,KAAK,IAAI9C,YAAY,CAACO,IAAtB;IACD;;IACD,MAAMuE,OAAO,GAAG7E,gBAAgB,GAAG,CAAC2C,UAApC;IACAE,KAAK,IAAI,CAACgC,OAAV;IACA,OAAOhC,KAAK,IAAID,YAAhB;EACD;;EAEOqB,QAAQ,CAACS,IAAD,EAAiBnD,IAAjB,EAAqC;IACnD,IAAI,CAACmD,IAAD,IAAS,CAACnD,IAAd,EAAoB;MAClB,OAAO,CAAP;IACD;;IACD,QAAQA,IAAR;MACE,KAAKxB,YAAY,CAACI,WAAlB;QACE,OAAO2E,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,aAAT,CAAX,CAAP;;MACF,KAAKjF,YAAY,CAACM,MAAlB;QACE,OAAOyE,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,QAAT,CAAX,CAAP;;MACF,KAAKjF,YAAY,CAACK,MAAlB;QACE,OAAO0E,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,QAAT,CAAX,CAAP;;MACF,KAAKjF,YAAY,CAACG,IAAlB;QACE,OAAO4E,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,MAAT,CAAX,CAAP;;MACF,KAAKjF,YAAY,CAACE,GAAlB;QACE,OAAO6E,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,KAAT,CAAX,CAAP;;MACF,KAAKjF,YAAY,CAACO,IAAlB;QACE,OAAOwE,IAAI,CAACC,KAAL,CAAWL,IAAI,CAACM,GAAL,CAAS,MAAT,CAAX,CAAP;;MACF;QACE,OAAO,CAAP;IAdJ;EAgBD;;EAEOrD,WAAW,CAACJ,IAAD,EAAqB;IACtC,IAAI,CAACA,IAAL,EAAW;MACT,OAAO,CAAP;IACD;;IACD,QAAQA,IAAR;MACE,KAAKxB,YAAY,CAACI,WAAlB;QACE,OAAO,CAAP;;MACF,KAAKJ,YAAY,CAACM,MAAlB;QACE,OAAO,IAAP;;MACF,KAAKN,YAAY,CAACK,MAAlB;QACE,OAAO,KAAP;;MACF,KAAKL,YAAY,CAACG,IAAlB;QACE,OAAO,OAAP;;MACF,KAAKH,YAAY,CAACE,GAAlB;QACE,OAAO,KAAK,OAAZ;;MACF,KAAKF,YAAY,CAACO,IAAlB;QACE,OAAO,KAAK,GAAL,GAAW,OAAlB;;MACF;QACE,OAAO,CAAP;IAdJ;EAgBD;;EAEO2E,SAAS,CAAC1D,IAAD,EAAqB;IACpC,IAAI,CAACA,IAAL,EAAW;MACT,OAAO,CAAP;IACD;;IACD,QAAQA,IAAR;MACE,KAAKxB,YAAY,CAACI,WAAlB;QACE,OAAO,IAAP;;MACF,KAAKJ,YAAY,CAACM,MAAlB;QACE,OAAO,EAAP;;MACF,KAAKN,YAAY,CAACK,MAAlB;QACE,OAAO,EAAP;;MACF,KAAKL,YAAY,CAACG,IAAlB;QACE,OAAO,EAAP;;MACF,KAAKH,YAAY,CAACE,GAAlB;QACE,OAAO,GAAP;;MACF,KAAKF,YAAY,CAACO,IAAlB;QACE,OAAO,IAAP;;MACF;QACE,OAAO,CAAP;IAdJ;EAgBD;;EAEOa,WAAW,GAAG;IACpB,IAAI,KAAK6C,KAAL,CAAW5B,WAAf,EAA4B;MAC1B,IAAI8C,GAAG,GAAGtE,MAAM,CAAC,KAAKoD,KAAL,CAAW9B,eAAZ,CAAhB;;MACA,IAAI,CAACvB,KAAK,CAACuE,GAAD,CAAV,EAAiB;QACf,MAAMC,WAAW,GAAGD,GAAG,GAAG,KAAKvD,WAAL,CAAiB,KAAKqC,KAAL,CAAW5B,WAA5B,CAA1B;QACA,MAAMgD,WAAW,GACf,KAAKnB,QAAL,CAAc,KAAK/C,KAAL,CAAWY,QAAzB,EAAmC,KAAKkC,KAAL,CAAW5B,WAA9C,IACA,KAAKT,WAAL,CAAiB,KAAKqC,KAAL,CAAW5B,WAA5B,CAFF;QAGA,MAAMiD,WAAW,GACf,KAAKJ,SAAL,CAAe,KAAKjB,KAAL,CAAW5B,WAA1B,IACA,KAAKT,WAAL,CAAiB,KAAKqC,KAAL,CAAW5B,WAA5B,CAFF;QAGA,MAAMkD,WAAW,GAAGD,WAAW,GAAGF,WAAlC;QACA,MAAMzD,IAAI,GAAGyD,WAAW,GAAGC,WAA3B;;QACA,IAAIE,WAAJ,EAAiB;UACf,KAAKtD,YAAL,CAAkB,IAAAH,gBAAA,EAASsD,WAAT,EAAsB,aAAtB,CAAlB;QACD,CAFD,MAEO;UAAA;;UACL,KAAKnD,YAAL,CACE,IAAAH,gBAAA,EACE,CAAC,+BAAKX,KAAL,CAAWY,QAAX,gFAAqBC,cAArB,OAAyC,CAA1C,IAA+CL,IADjD,EAEE,aAFF,CADF;QAMD;MACF;;MACD,KAAKO,QAAL,CAAc;QAAEG,WAAW,EAAEuC,SAAf;QAA0BzC,eAAe,EAAEyC;MAA3C,CAAd;IACD;EACF;;EAyCO3C,YAAY,CAAC0C,IAAD,EAAiB;IACnC,IAAI,KAAKxD,KAAL,CAAWqE,GAAf,EAAoB;MAClB,IAAIb,IAAI,CAAC3C,cAAL,KAAwB,KAAKb,KAAL,CAAWqE,GAAX,CAAexD,cAAf,EAAxB,IAA2D,CAA/D,EAAkE;QAChE,KAAKb,KAAL,CAAWsE,cAAX,CAA0B,KAAKtE,KAAL,CAAWqE,GAAX,CAAeE,KAAf,EAA1B;QACA;MACD;IACF;;IACD,IAAI,KAAKvE,KAAL,CAAWwE,GAAf,EAAoB;MAClB,IAAI,KAAKxE,KAAL,CAAWwE,GAAX,CAAe3D,cAAf,KAAkC2C,IAAI,CAAC3C,cAAL,EAAlC,IAA2D,CAA/D,EAAkE;QAChE,KAAKb,KAAL,CAAWsE,cAAX,CAA0B,KAAKtE,KAAL,CAAWwE,GAAX,CAAeD,KAAf,EAA1B;QACA;MACD;IACF;;IACD,KAAKvE,KAAL,CAAWsE,cAAX,CAA0Bd,IAA1B;EACD;;AA7SD;;;;gBAJW3D,W,kBAKmB4E,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB5E,oBAAA,CAAU6E,YAA5B,EAA0C;EACtEC,IAAI,EAAE,MADgE;EAEtEC,WAAW,EAAE,EAFyD;EAGtEpD,UAAU,EAAE3C,gBAH0D;EAItE4C,YAAY,EAAE5C,gBAJwD;EAKtE6C,KAAK,EAAE9C,YAAY,CAACiG,OALkD;EAMtE3B,YAAY,EAAG9C,IAAD,IAAwB;IACpC,QAAQA,IAAR;MACE,KAAKxB,YAAY,CAACI,WAAlB;QACE,OAAO,IAAP;;MACF,KAAKJ,YAAY,CAACM,MAAlB;QACE,OAAO,GAAP;;MACF,KAAKN,YAAY,CAACK,MAAlB;QACE,OAAO,GAAP;;MACF,KAAKL,YAAY,CAACG,IAAlB;QACE,OAAO,GAAP;;MACF,KAAKH,YAAY,CAACE,GAAlB;QACE,OAAO,GAAP;;MACF,KAAKF,YAAY,CAACO,IAAlB;QACE,OAAO,GAAP;;MACF;QACE,OAAO,EAAP;IAdJ;EAgBD,CAvBqE;EAwBtEiF,GAAG,EAAE,IAAA1D,gBAAA,EAAS,CAAT;AAxBiE,CAA1C,C;;AA+SzB,MAAMoE,QAAQ,GAAG,IAAAC,kCAAA,EAGtB,IAAAC,gCAAA,EAA+BpF,WAA/B,CAHsB,EAGuB,UAHvB,CAAjB;;eAKQkF,Q"}
|
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 [31 Mar 2023 at
|
6
|
+
<title>guestbell-forms [31 Mar 2023 at 16:48]</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