guestbell-forms 2.0.304 → 2.0.306

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.
Files changed (29) hide show
  1. package/build/components/base/input/BaseInput.d.ts +1 -0
  2. package/build/components/base/input/BaseInput.js.map +1 -1
  3. package/build/components/checkbox/Checkbox.js +2 -1
  4. package/build/components/checkbox/Checkbox.js.map +1 -1
  5. package/build/components/form/index.d.ts +2 -0
  6. package/build/components/form/index.js +28 -0
  7. package/build/components/form/index.js.map +1 -1
  8. package/build/components/money/Money.d.ts +2 -1
  9. package/build/components/money/Money.js +3 -1
  10. package/build/components/money/Money.js.map +1 -1
  11. package/build/components/numberInput/NumberInput.js +3 -1
  12. package/build/components/numberInput/NumberInput.js.map +1 -1
  13. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.d.ts +2 -1
  14. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.d.ts +2 -1
  15. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.d.ts +2 -1
  16. package/build/components/select/Select.d.ts +2 -1
  17. package/build/components/select/Select.js +2 -1
  18. package/build/components/select/Select.js.map +1 -1
  19. package/build/components/submit/Submit.d.ts +4 -2
  20. package/build/components/text/Text.js +2 -1
  21. package/build/components/text/Text.js.map +1 -1
  22. package/build/components/textArea/TextArea.js +3 -1
  23. package/build/components/textArea/TextArea.js.map +1 -1
  24. package/build/components/time/Time.js +2 -1
  25. package/build/components/time/Time.js.map +1 -1
  26. package/build/components/timeSpan/TimeSpan.js +2 -1
  27. package/build/components/timeSpan/TimeSpan.js.map +1 -1
  28. package/build/dist/report.html +1 -1
  29. package/package.json +1 -1
@@ -48,6 +48,7 @@ export declare type BaseInputProps<HTMLType extends AllowedHtmlElements, Transla
48
48
  reRendersWhenContextChanges?: boolean;
49
49
  defaultTouched?: boolean;
50
50
  translations?: TranslationsT;
51
+ inputGroupClassName?: string;
51
52
  } & FormContextProps;
52
53
  export interface BaseInputState {
53
54
  isValid: boolean;
@@ -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 { 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} & 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","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 { 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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"}
@@ -106,7 +106,8 @@ class CheckboxRaw extends _BaseInput.BaseInput {
106
106
  }));
107
107
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
108
108
  title: this.props.title,
109
- tooltip: this.props.tooltip
109
+ tooltip: this.props.tooltip,
110
+ className: this.props.inputGroupClassName
110
111
  }, /*#__PURE__*/React.createElement("div", {
111
112
  className: containerClassName,
112
113
  ref: this.containerRef
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["classNames","require","CheckboxRaw","BaseInput","constructor","props","state","Object","assign","checked","Boolean","isValid","required","errors","getTranslations","defaultBaseTranslations","handleChecked","bind","handleKeyDown","subscribeSelf","componentDidMount","finalIndeterminate","supportsIndeterminate","inputRef","current","indeterminate","componentDidUpdate","oldProps","undefined","setState","setValid","setInvalid","render","containerClassName","getValidationClass","className","label","disabled","input","id","value","handleBlur","handleFocus","title","tooltip","containerRef","renderTooltip","renderDefaultValidation","renderLabel","e","onChecked","key","click","defaultProps","Checkbox","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/checkbox/Checkbox.tsx"],"sourcesContent":["// 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 BaseInput,\r\n BaseInputState,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nvar classNames = require('classnames');\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface CheckboxProps extends BaseInputProps<HTMLInputElement> {\r\n onChecked?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onChange?: never;\r\n type?: string;\r\n checked?: boolean;\r\n supportsIndeterminate?: boolean;\r\n}\r\n\r\nexport interface CheckboxState extends BaseInputState {\r\n checked: boolean;\r\n}\r\n\r\nexport class CheckboxRaw extends BaseInput<\r\n CheckboxProps,\r\n CheckboxState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n // checked: false,\r\n }) as CheckboxProps;\r\n\r\n constructor(props: CheckboxProps) {\r\n super(props, false);\r\n this.state = Object.assign(this.state, {\r\n checked: Boolean(props.checked),\r\n isValid: props.required ? props.checked : true,\r\n errors:\r\n props.required && !props.checked\r\n ? [this.getTranslations(defaultBaseTranslations).required]\r\n : [],\r\n });\r\n this.handleChecked = this.handleChecked.bind(this);\r\n this.handleKeyDown = this.handleKeyDown.bind(this);\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public componentDidMount() {\r\n const finalIndeterminate = Boolean(\r\n this.props.supportsIndeterminate &&\r\n typeof this.props.checked !== 'boolean'\r\n );\r\n if (\r\n typeof this.props.checked !== 'boolean' &&\r\n this.inputRef.current &&\r\n this.inputRef.current?.indeterminate !== finalIndeterminate\r\n ) {\r\n this.inputRef.current.indeterminate = finalIndeterminate;\r\n }\r\n super.componentDidMount?.();\r\n }\r\n\r\n public componentDidUpdate(oldProps: CheckboxProps) {\r\n if (\r\n this.props.checked !== undefined &&\r\n this.props.checked !== this.state.checked\r\n ) {\r\n this.setState({ checked: this.props.checked });\r\n if (this.props.checked) {\r\n this.setValid();\r\n } else {\r\n if (this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n }\r\n }\r\n }\r\n if (oldProps.required !== this.props.required) {\r\n if (this.props.required && !this.props.checked) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n } else {\r\n this.setValid();\r\n }\r\n }\r\n const finalIndeterminate = Boolean(\r\n this.props.supportsIndeterminate &&\r\n typeof this.props.checked !== 'boolean'\r\n );\r\n if (\r\n this.props.supportsIndeterminate &&\r\n this.inputRef.current?.indeterminate !== finalIndeterminate\r\n ) {\r\n this.inputRef.current.indeterminate = finalIndeterminate;\r\n }\r\n }\r\n\r\n public render() {\r\n const containerClassName = classNames([\r\n 'input__base checkbox-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n { ['checkbox-input--with-label']: Boolean(this.props.label) },\r\n { ['checkbox-input--disabled']: this.props.disabled },\r\n ]);\r\n const input = (\r\n <input\r\n {...(this.props.id && { id: this.props.id })}\r\n ref={this.inputRef}\r\n value={this.props.value || ''}\r\n type=\"checkbox\"\r\n required={this.props.required}\r\n checked={this.state.checked ?? false}\r\n onChange={this.handleChecked}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n onKeyDown={this.handleKeyDown}\r\n tabIndex={this.props.disabled ? -1 : 0}\r\n />\r\n );\r\n return (\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div className={containerClassName} ref={this.containerRef}>\r\n {this.props.title && !this.props.label && input}\r\n {!this.props.title && !this.props.label && this.renderTooltip(input)}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label className=\"checkbox-input__label\">\r\n {input}\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private handleChecked(e: React.ChangeEvent<HTMLInputElement>) {\r\n if (!this.props.disabled) {\r\n this.props.onChecked && this.props.onChecked(e);\r\n this.setState({ checked: !this.state.checked });\r\n if (!this.state.checked) {\r\n this.setValid();\r\n } else {\r\n if (this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\r\n if (!this.props.disabled) {\r\n if (e.key === 'Enter') {\r\n this.inputRef.current?.click();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const Checkbox = withThemeContext<\r\n CheckboxProps,\r\n InstanceType<typeof CheckboxRaw>\r\n>(withFormContext<CheckboxProps>(CheckboxRaw), 'checkbox');\r\n\r\nexport default Checkbox;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":["classNames","require","CheckboxRaw","BaseInput","constructor","props","state","Object","assign","checked","Boolean","isValid","required","errors","getTranslations","defaultBaseTranslations","handleChecked","bind","handleKeyDown","subscribeSelf","componentDidMount","finalIndeterminate","supportsIndeterminate","inputRef","current","indeterminate","componentDidUpdate","oldProps","undefined","setState","setValid","setInvalid","render","containerClassName","getValidationClass","className","label","disabled","input","id","value","handleBlur","handleFocus","title","tooltip","inputGroupClassName","containerRef","renderTooltip","renderDefaultValidation","renderLabel","e","onChecked","key","click","defaultProps","Checkbox","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/checkbox/Checkbox.tsx"],"sourcesContent":["// 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 BaseInput,\r\n BaseInputState,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nvar classNames = require('classnames');\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface CheckboxProps extends BaseInputProps<HTMLInputElement> {\r\n onChecked?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onChange?: never;\r\n type?: string;\r\n checked?: boolean;\r\n supportsIndeterminate?: boolean;\r\n}\r\n\r\nexport interface CheckboxState extends BaseInputState {\r\n checked: boolean;\r\n}\r\n\r\nexport class CheckboxRaw extends BaseInput<\r\n CheckboxProps,\r\n CheckboxState,\r\n HTMLInputElement\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n // checked: false,\r\n }) as CheckboxProps;\r\n\r\n constructor(props: CheckboxProps) {\r\n super(props, false);\r\n this.state = Object.assign(this.state, {\r\n checked: Boolean(props.checked),\r\n isValid: props.required ? props.checked : true,\r\n errors:\r\n props.required && !props.checked\r\n ? [this.getTranslations(defaultBaseTranslations).required]\r\n : [],\r\n });\r\n this.handleChecked = this.handleChecked.bind(this);\r\n this.handleKeyDown = this.handleKeyDown.bind(this);\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public componentDidMount() {\r\n const finalIndeterminate = Boolean(\r\n this.props.supportsIndeterminate &&\r\n typeof this.props.checked !== 'boolean'\r\n );\r\n if (\r\n typeof this.props.checked !== 'boolean' &&\r\n this.inputRef.current &&\r\n this.inputRef.current?.indeterminate !== finalIndeterminate\r\n ) {\r\n this.inputRef.current.indeterminate = finalIndeterminate;\r\n }\r\n super.componentDidMount?.();\r\n }\r\n\r\n public componentDidUpdate(oldProps: CheckboxProps) {\r\n if (\r\n this.props.checked !== undefined &&\r\n this.props.checked !== this.state.checked\r\n ) {\r\n this.setState({ checked: this.props.checked });\r\n if (this.props.checked) {\r\n this.setValid();\r\n } else {\r\n if (this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n }\r\n }\r\n }\r\n if (oldProps.required !== this.props.required) {\r\n if (this.props.required && !this.props.checked) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n } else {\r\n this.setValid();\r\n }\r\n }\r\n const finalIndeterminate = Boolean(\r\n this.props.supportsIndeterminate &&\r\n typeof this.props.checked !== 'boolean'\r\n );\r\n if (\r\n this.props.supportsIndeterminate &&\r\n this.inputRef.current?.indeterminate !== finalIndeterminate\r\n ) {\r\n this.inputRef.current.indeterminate = finalIndeterminate;\r\n }\r\n }\r\n\r\n public render() {\r\n const containerClassName = classNames([\r\n 'input__base checkbox-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n { ['checkbox-input--with-label']: Boolean(this.props.label) },\r\n { ['checkbox-input--disabled']: this.props.disabled },\r\n ]);\r\n const input = (\r\n <input\r\n {...(this.props.id && { id: this.props.id })}\r\n ref={this.inputRef}\r\n value={this.props.value || ''}\r\n type=\"checkbox\"\r\n required={this.props.required}\r\n checked={this.state.checked ?? false}\r\n onChange={this.handleChecked}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n onKeyDown={this.handleKeyDown}\r\n tabIndex={this.props.disabled ? -1 : 0}\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 className={containerClassName} ref={this.containerRef}>\r\n {this.props.title && !this.props.label && input}\r\n {!this.props.title && !this.props.label && this.renderTooltip(input)}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label className=\"checkbox-input__label\">\r\n {input}\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private handleChecked(e: React.ChangeEvent<HTMLInputElement>) {\r\n if (!this.props.disabled) {\r\n this.props.onChecked && this.props.onChecked(e);\r\n this.setState({ checked: !this.state.checked });\r\n if (!this.state.checked) {\r\n this.setValid();\r\n } else {\r\n if (this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultBaseTranslations).required,\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\r\n if (!this.props.disabled) {\r\n if (e.key === 'Enter') {\r\n this.inputRef.current?.click();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const Checkbox = withThemeContext<\r\n CheckboxProps,\r\n InstanceType<typeof CheckboxRaw>\r\n>(withFormContext<CheckboxProps>(CheckboxRaw), 'checkbox');\r\n\r\nexport default Checkbox;\r\n"],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  export * from './Form';
2
2
  export * from './FormValidationSummary';
3
+ export * from './FormContext';
4
+ export * from './withFormContext';
3
5
  export { default } from './Form';
@@ -39,6 +39,34 @@ Object.keys(_FormValidationSummary).forEach(function (key) {
39
39
  });
40
40
  });
41
41
 
42
+ var _FormContext = require("./FormContext");
43
+
44
+ Object.keys(_FormContext).forEach(function (key) {
45
+ if (key === "default" || key === "__esModule") return;
46
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
47
+ if (key in exports && exports[key] === _FormContext[key]) return;
48
+ Object.defineProperty(exports, key, {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _FormContext[key];
52
+ }
53
+ });
54
+ });
55
+
56
+ var _withFormContext = require("./withFormContext");
57
+
58
+ Object.keys(_withFormContext).forEach(function (key) {
59
+ if (key === "default" || key === "__esModule") return;
60
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
61
+ if (key in exports && exports[key] === _withFormContext[key]) return;
62
+ Object.defineProperty(exports, key, {
63
+ enumerable: true,
64
+ get: function () {
65
+ return _withFormContext[key];
66
+ }
67
+ });
68
+ });
69
+
42
70
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
71
 
44
72
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/lib/components/form/index.tsx"],"sourcesContent":["export * from './Form';\r\nexport * from './FormValidationSummary';\r\nexport { default } from './Form';\r\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/lib/components/form/index.tsx"],"sourcesContent":["export * from './Form';\r\nexport * from './FormValidationSummary';\r\nexport * from './FormContext';\r\nexport * from './withFormContext';\r\nexport { default } from './Form';\r\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -57,7 +57,8 @@ export declare class MoneyRaw extends BaseInput<MoneyProps, MoneyState, never, M
57
57
  translations?: Partial<{
58
58
  required: string;
59
59
  }>;
60
- } & import("../form/FormContext").FormContextProps & {
60
+ inputGroupClassName?: string;
61
+ } & import("../form").FormContextProps & {
61
62
  type: string;
62
63
  allowMultiple: boolean;
63
64
  onChange: any;
@@ -161,7 +161,9 @@ class MoneyRaw extends _BaseInput.BaseInput {
161
161
  let unusedCurrencies = this.props.currencies;
162
162
  const translations = this.getTranslations(defaultMoneyTranslations);
163
163
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
164
- title: this.props.title
164
+ title: this.props.title,
165
+ tooltip: this.props.tooltip,
166
+ className: this.props.inputGroupClassName
165
167
  }, /*#__PURE__*/React.createElement("div", _extends({}, this.props.id && {
166
168
  id: this.props.id
167
169
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Money.js","names":["PlusIcon","defaultMoneyTranslations","defaultBaseTranslations","cannotRemoveDefaultCurrency","removePrice","addPrice","addNewCurrency","MoneyRaw","BaseInput","constructor","props","index","currentCurrencies","e","newPrices","concat","prices","currency","filter","cc","value","toString","target","onPricesChange","num","Number","parts","split","length","isNaN","str","state","touched","touch","price","itemIndex","required","setInvalid","getTranslations","unusedCurrencies","setValid","setState","focused","currencies","Error","Object","assign","isValid","errors","handleValueChangeEnabled","forcedCurrencies","c","forceSelected","missingForced","find","p","map","undefined","subscribeSelf","render","translations","title","id","getValidationClass","className","containerRef","item","priceCurrency","priceIndex","retComponents","onFocus","onBlur","onCurrencyChanged","label","onTheFlightValidate","onPriceChanged","disableDelete","removePriceClick","Button","defaultProps","buttonProps","allowMultiple","addPriceClick","renderDefaultValidation","renderLabel","type","onChange","Money","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/money/Money.tsx"],"sourcesContent":["import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport { Select, SelectValue } from '../select/Select';\r\nimport { Text } from '../text/Text';\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\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 MoneyWithCurrency {\r\n value: number;\r\n currency: SelectValue;\r\n}\r\n\r\nexport const defaultMoneyTranslations = {\r\n ...defaultBaseTranslations,\r\n cannotRemoveDefaultCurrency: 'Cannot remove default currency',\r\n removePrice: 'Remove price',\r\n addPrice: 'Add price',\r\n addNewCurrency: 'Add new currency',\r\n};\r\n\r\nexport type MoneyTranslations = Partial<typeof defaultMoneyTranslations>;\r\n\r\nexport interface MoneyProps extends BaseInputProps<never, MoneyTranslations> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onPricesChange: (prices: MoneyWithCurrency[]) => void;\r\n allowMultiple?: boolean;\r\n currencies: SelectValue[];\r\n prices: MoneyWithCurrency[];\r\n disableDelete?: boolean;\r\n}\r\n\r\nexport interface MoneyState extends BaseInputState {}\r\n\r\nexport class MoneyRaw extends BaseInput<\r\n MoneyProps,\r\n MoneyState,\r\n never,\r\n MoneyTranslations\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'money',\r\n allowMultiple: false,\r\n onChange: undefined,\r\n });\r\n\r\n constructor(props: MoneyProps) {\r\n super(props, false);\r\n if (!props.currencies || !props.currencies.length) {\r\n throw Error('No currencies supplied to money input');\r\n }\r\n this.state = Object.assign(this.state, {\r\n isValid: props.required ? props.prices.length > 0 : true,\r\n errors:\r\n props.required && props.prices.length === 0\r\n ? [this.getTranslations(defaultMoneyTranslations).required]\r\n : [],\r\n handleValueChangeEnabled: false,\r\n });\r\n const forcedCurrencies = props.currencies.filter(c => c.forceSelected);\r\n const missingForced = forcedCurrencies.filter(\r\n c => !props.prices.find(p => p.currency.value === c.value)\r\n );\r\n if (missingForced.length > 0) {\r\n props.onPricesChange(\r\n props.prices.concat(\r\n missingForced.map(c => ({ currency: c, value: undefined }))\r\n )\r\n );\r\n }\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public render() {\r\n let unusedCurrencies = this.props.currencies;\r\n const translations = this.getTranslations(defaultMoneyTranslations);\r\n return (\r\n <InputGroup title={this.props.title}>\r\n <div\r\n {...(this.props.id && { id: this.props.id })}\r\n className={\r\n 'input__base money-input ' +\r\n this.getValidationClass() +\r\n (this.props.className ? ' ' + this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.props.prices &&\r\n this.props.prices.map((item, index) => {\r\n let currentCurrencies = this.props.currencies.filter(\r\n c =>\r\n this.props.prices.filter(\r\n (priceCurrency, priceIndex) =>\r\n priceIndex !== index &&\r\n priceCurrency.currency.value === c.value\r\n ).length === 0\r\n );\r\n const currency = this.props.currencies.find(\r\n c => c.value === item.currency.value\r\n );\r\n let retComponents = currentCurrencies.length ? (\r\n <div key={index}>\r\n {currentCurrencies.length > 1 ? (\r\n <Select\r\n {...(this.props.id && {\r\n id:\r\n this.props.id +\r\n '-currency-select-' +\r\n index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n className={'money-input__select m-0'}\r\n values={currentCurrencies}\r\n onChange={this.onCurrencyChanged(\r\n index,\r\n currentCurrencies\r\n )}\r\n value={item.currency.value.toString()}\r\n />\r\n ) : (\r\n currentCurrencies?.[0]?.label\r\n )}\r\n <Text\r\n {...(this.props.id && {\r\n id: this.props.id + '-amount-input-' + index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n onTheFlightValidate={this.onTheFlightValidate}\r\n placeholder={'0.00'}\r\n className={'money-input__text m-0'}\r\n validators={['number']}\r\n value={item.value ? item.value.toString() : ''}\r\n onChange={this.onPriceChanged(index)}\r\n type=\"number\"\r\n />\r\n {!this.props.disableDelete && this.props.prices.length > 0 && (\r\n <Button\r\n {...(this.props.id && {\r\n id:\r\n this.props.id + '-remove-button-' + index.toString(),\r\n })}\r\n blank={true}\r\n type=\"error\"\r\n onClick={this.removePriceClick(index)}\r\n className=\"transform-rotate--45 line-height--0\"\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n currency && currency.forceSelected\r\n ? translations.cannotRemoveDefaultCurrency\r\n : translations.removePrice,\r\n }}\r\n circular={true}\r\n disabled={currency && currency.forceSelected}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ) : null;\r\n unusedCurrencies = unusedCurrencies.filter(\r\n c => c.value !== item.currency.value\r\n );\r\n return retComponents;\r\n })}\r\n {(this.props.allowMultiple ||\r\n (this.props.prices && !this.props.prices.length)) &&\r\n unusedCurrencies.length ? (\r\n <Button\r\n blank={true}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-button',\r\n })}\r\n type=\"primary\"\r\n className=\"line-height--0 align-self-start\"\r\n onClick={this.addPriceClick(unusedCurrencies)}\r\n circular={true}\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n this.props.prices && this.props.prices.length === 0\r\n ? translations.addPrice\r\n : translations.addNewCurrency,\r\n }}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n ) : null}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.props.prices && this.props.prices ? 'label--focused' : ''\r\n }\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 onCurrencyChanged = (\r\n index: number,\r\n currentCurrencies: SelectValue[]\r\n ) => e => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n newPrices[index].currency = currentCurrencies.filter(\r\n cc => cc.value.toString() === e.target.value\r\n )[0];\r\n this.props.onPricesChange(newPrices);\r\n };\r\n\r\n private onTheFlightValidate = value => {\r\n let num = Number(value);\r\n const parts = value.split('.');\r\n if (parts && parts.length > 1 && parts[parts.length - 1].length > 2) {\r\n return false;\r\n }\r\n if (!isNaN(num)) {\r\n return true;\r\n }\r\n if (num) {\r\n return false;\r\n }\r\n };\r\n\r\n private onPriceChanged = (index: number) => (\r\n e: React.ChangeEvent<HTMLInputElement>\r\n ) => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n let str = e.target.value;\r\n let num = Number(str);\r\n if (!isNaN(num)) {\r\n newPrices[index].value = num;\r\n }\r\n this.props.onPricesChange(newPrices);\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private removePriceClick = (index: number) => () => {\r\n const newPrices = this.props.prices.filter(\r\n (price, itemIndex) => itemIndex !== index\r\n );\r\n this.props.onPricesChange(newPrices);\r\n if (newPrices.length === 0 && this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultMoneyTranslations).required,\r\n ]);\r\n }\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private addPriceClick = (unusedCurrencies: SelectValue[]) => () => {\r\n this.props.onPricesChange(\r\n this.props.prices.concat([{ value: 0, currency: unusedCurrencies[0] }])\r\n );\r\n this.setValid();\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private onFocus = () => this.setState({ focused: true });\r\n\r\n private onBlur = () => this.setState({ focused: false });\r\n}\r\n\r\nexport const Money = withThemeContext<\r\n MoneyProps,\r\n InstanceType<typeof MoneyRaw>\r\n>(withFormContext<MoneyProps>(MoneyRaw), 'money');\r\n\r\nexport default Money;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Money.js","names":["PlusIcon","defaultMoneyTranslations","defaultBaseTranslations","cannotRemoveDefaultCurrency","removePrice","addPrice","addNewCurrency","MoneyRaw","BaseInput","constructor","props","index","currentCurrencies","e","newPrices","concat","prices","currency","filter","cc","value","toString","target","onPricesChange","num","Number","parts","split","length","isNaN","str","state","touched","touch","price","itemIndex","required","setInvalid","getTranslations","unusedCurrencies","setValid","setState","focused","currencies","Error","Object","assign","isValid","errors","handleValueChangeEnabled","forcedCurrencies","c","forceSelected","missingForced","find","p","map","undefined","subscribeSelf","render","translations","title","tooltip","inputGroupClassName","id","getValidationClass","className","containerRef","item","priceCurrency","priceIndex","retComponents","onFocus","onBlur","onCurrencyChanged","label","onTheFlightValidate","onPriceChanged","disableDelete","removePriceClick","Button","defaultProps","buttonProps","allowMultiple","addPriceClick","renderDefaultValidation","renderLabel","type","onChange","Money","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/money/Money.tsx"],"sourcesContent":["import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport { Select, SelectValue } from '../select/Select';\r\nimport { Text } from '../text/Text';\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\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 MoneyWithCurrency {\r\n value: number;\r\n currency: SelectValue;\r\n}\r\n\r\nexport const defaultMoneyTranslations = {\r\n ...defaultBaseTranslations,\r\n cannotRemoveDefaultCurrency: 'Cannot remove default currency',\r\n removePrice: 'Remove price',\r\n addPrice: 'Add price',\r\n addNewCurrency: 'Add new currency',\r\n};\r\n\r\nexport type MoneyTranslations = Partial<typeof defaultMoneyTranslations>;\r\n\r\nexport interface MoneyProps extends BaseInputProps<never, MoneyTranslations> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onPricesChange: (prices: MoneyWithCurrency[]) => void;\r\n allowMultiple?: boolean;\r\n currencies: SelectValue[];\r\n prices: MoneyWithCurrency[];\r\n disableDelete?: boolean;\r\n}\r\n\r\nexport interface MoneyState extends BaseInputState {}\r\n\r\nexport class MoneyRaw extends BaseInput<\r\n MoneyProps,\r\n MoneyState,\r\n never,\r\n MoneyTranslations\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'money',\r\n allowMultiple: false,\r\n onChange: undefined,\r\n });\r\n\r\n constructor(props: MoneyProps) {\r\n super(props, false);\r\n if (!props.currencies || !props.currencies.length) {\r\n throw Error('No currencies supplied to money input');\r\n }\r\n this.state = Object.assign(this.state, {\r\n isValid: props.required ? props.prices.length > 0 : true,\r\n errors:\r\n props.required && props.prices.length === 0\r\n ? [this.getTranslations(defaultMoneyTranslations).required]\r\n : [],\r\n handleValueChangeEnabled: false,\r\n });\r\n const forcedCurrencies = props.currencies.filter(c => c.forceSelected);\r\n const missingForced = forcedCurrencies.filter(\r\n c => !props.prices.find(p => p.currency.value === c.value)\r\n );\r\n if (missingForced.length > 0) {\r\n props.onPricesChange(\r\n props.prices.concat(\r\n missingForced.map(c => ({ currency: c, value: undefined }))\r\n )\r\n );\r\n }\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public render() {\r\n let unusedCurrencies = this.props.currencies;\r\n const translations = this.getTranslations(defaultMoneyTranslations);\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 && { id: this.props.id })}\r\n className={\r\n 'input__base money-input ' +\r\n this.getValidationClass() +\r\n (this.props.className ? ' ' + this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.props.prices &&\r\n this.props.prices.map((item, index) => {\r\n let currentCurrencies = this.props.currencies.filter(\r\n c =>\r\n this.props.prices.filter(\r\n (priceCurrency, priceIndex) =>\r\n priceIndex !== index &&\r\n priceCurrency.currency.value === c.value\r\n ).length === 0\r\n );\r\n const currency = this.props.currencies.find(\r\n c => c.value === item.currency.value\r\n );\r\n let retComponents = currentCurrencies.length ? (\r\n <div key={index}>\r\n {currentCurrencies.length > 1 ? (\r\n <Select\r\n {...(this.props.id && {\r\n id:\r\n this.props.id +\r\n '-currency-select-' +\r\n index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n className={'money-input__select m-0'}\r\n values={currentCurrencies}\r\n onChange={this.onCurrencyChanged(\r\n index,\r\n currentCurrencies\r\n )}\r\n value={item.currency.value.toString()}\r\n />\r\n ) : (\r\n currentCurrencies?.[0]?.label\r\n )}\r\n <Text\r\n {...(this.props.id && {\r\n id: this.props.id + '-amount-input-' + index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n onTheFlightValidate={this.onTheFlightValidate}\r\n placeholder={'0.00'}\r\n className={'money-input__text m-0'}\r\n validators={['number']}\r\n value={item.value ? item.value.toString() : ''}\r\n onChange={this.onPriceChanged(index)}\r\n type=\"number\"\r\n />\r\n {!this.props.disableDelete && this.props.prices.length > 0 && (\r\n <Button\r\n {...(this.props.id && {\r\n id:\r\n this.props.id + '-remove-button-' + index.toString(),\r\n })}\r\n blank={true}\r\n type=\"error\"\r\n onClick={this.removePriceClick(index)}\r\n className=\"transform-rotate--45 line-height--0\"\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n currency && currency.forceSelected\r\n ? translations.cannotRemoveDefaultCurrency\r\n : translations.removePrice,\r\n }}\r\n circular={true}\r\n disabled={currency && currency.forceSelected}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ) : null;\r\n unusedCurrencies = unusedCurrencies.filter(\r\n c => c.value !== item.currency.value\r\n );\r\n return retComponents;\r\n })}\r\n {(this.props.allowMultiple ||\r\n (this.props.prices && !this.props.prices.length)) &&\r\n unusedCurrencies.length ? (\r\n <Button\r\n blank={true}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-button',\r\n })}\r\n type=\"primary\"\r\n className=\"line-height--0 align-self-start\"\r\n onClick={this.addPriceClick(unusedCurrencies)}\r\n circular={true}\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n this.props.prices && this.props.prices.length === 0\r\n ? translations.addPrice\r\n : translations.addNewCurrency,\r\n }}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n ) : null}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.props.prices && this.props.prices ? 'label--focused' : ''\r\n }\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 onCurrencyChanged = (\r\n index: number,\r\n currentCurrencies: SelectValue[]\r\n ) => e => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n newPrices[index].currency = currentCurrencies.filter(\r\n cc => cc.value.toString() === e.target.value\r\n )[0];\r\n this.props.onPricesChange(newPrices);\r\n };\r\n\r\n private onTheFlightValidate = value => {\r\n let num = Number(value);\r\n const parts = value.split('.');\r\n if (parts && parts.length > 1 && parts[parts.length - 1].length > 2) {\r\n return false;\r\n }\r\n if (!isNaN(num)) {\r\n return true;\r\n }\r\n if (num) {\r\n return false;\r\n }\r\n };\r\n\r\n private onPriceChanged = (index: number) => (\r\n e: React.ChangeEvent<HTMLInputElement>\r\n ) => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n let str = e.target.value;\r\n let num = Number(str);\r\n if (!isNaN(num)) {\r\n newPrices[index].value = num;\r\n }\r\n this.props.onPricesChange(newPrices);\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private removePriceClick = (index: number) => () => {\r\n const newPrices = this.props.prices.filter(\r\n (price, itemIndex) => itemIndex !== index\r\n );\r\n this.props.onPricesChange(newPrices);\r\n if (newPrices.length === 0 && this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultMoneyTranslations).required,\r\n ]);\r\n }\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private addPriceClick = (unusedCurrencies: SelectValue[]) => () => {\r\n this.props.onPricesChange(\r\n this.props.prices.concat([{ value: 0, currency: unusedCurrencies[0] }])\r\n );\r\n this.setValid();\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private onFocus = () => this.setState({ focused: true });\r\n\r\n private onBlur = () => this.setState({ focused: false });\r\n}\r\n\r\nexport const Money = withThemeContext<\r\n MoneyProps,\r\n InstanceType<typeof MoneyRaw>\r\n>(withFormContext<MoneyProps>(MoneyRaw), 'money');\r\n\r\nexport default Money;\r\n"],"mappings":"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"}
@@ -81,7 +81,9 @@ class NumberInputRaw extends _BaseInput.BaseInput {
81
81
  unit
82
82
  } = this.props;
83
83
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
84
- title: this.props.title
84
+ title: this.props.title,
85
+ className: this.props.inputGroupClassName,
86
+ tooltip: this.props.tooltip
85
87
  }, /*#__PURE__*/React.createElement("div", _extends({}, this.props.id && {
86
88
  id: this.props.id
87
89
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":["ArrowIcon","classNames","require","NumberInputRaw","BaseInput","constructor","props","e","commitState","handleBlur","preventDefault","handleLimits","number","setState","currentText","target","value","key","removeUnitClick","bind","addUnitClick","onUnitChanged","render","unit","title","id","getValidationClass","className","containerRef","getDisabled","required","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\nvar classNames = require('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 title={this.props.title}>\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","classNames","require","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","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\nvar classNames = require('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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"}
@@ -62,7 +62,8 @@ export declare class OpeningHoursDayRaw extends BaseInput<OpeningHoursDayProps,
62
62
  translations?: Partial<{
63
63
  required: string;
64
64
  }>;
65
- } & import("../../form/FormContext").FormContextProps & {
65
+ inputGroupClassName?: string;
66
+ } & import("../../form").FormContextProps & {
66
67
  onChange: any;
67
68
  type: string;
68
69
  allowMultiple: boolean;
@@ -70,7 +70,8 @@ export declare class OpeningHoursSpecialRaw extends BaseInput<OpeningHoursSpecia
70
70
  translations?: Partial<{
71
71
  required: string;
72
72
  }>;
73
- } & import("../../form/FormContext").FormContextProps & {
73
+ inputGroupClassName?: string;
74
+ } & import("../../form").FormContextProps & {
74
75
  type: string;
75
76
  placeholder: string;
76
77
  };
@@ -85,7 +85,8 @@ export declare class OpeningHoursWeekRaw extends BaseInput<OpeningHoursWeekProps
85
85
  translations?: Partial<{
86
86
  required: string;
87
87
  }>;
88
- } & import("../../form/FormContext").FormContextProps & {
88
+ inputGroupClassName?: string;
89
+ } & import("../../form").FormContextProps & {
89
90
  onChange: any;
90
91
  type: string;
91
92
  placeholder: string;
@@ -51,7 +51,8 @@ export declare class SelectRaw extends BaseInput<SelectProps, SelectState, HTMLS
51
51
  translations?: Partial<{
52
52
  required: string;
53
53
  }>;
54
- } & import("../form/FormContext").FormContextProps & {
54
+ inputGroupClassName?: string;
55
+ } & import("../form").FormContextProps & {
55
56
  defaultEmpty: boolean;
56
57
  multiple: boolean;
57
58
  readOnly: boolean;
@@ -75,7 +75,8 @@ class SelectRaw extends _BaseInput.BaseInput {
75
75
  const finalValues = this.props.multiple ? this.props.values.filter(item => this.props.selectedValues.findIndex(t => t.value === item.value) < 0) : this.props.values;
76
76
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
77
77
  title: this.props.title,
78
- tooltip: this.props.tooltip
78
+ tooltip: this.props.tooltip,
79
+ className: this.props.inputGroupClassName
79
80
  }, /*#__PURE__*/React.createElement("div", {
80
81
  className: 'input__base select-input ' + this.getValidationClass() + ' ' + (this.props.className ? this.props.className : '') + ' ' + (this.props.readOnly ? 'readonly' : '') + ' ' + (this.props.multiple ? 'multiple' : ''),
81
82
  ref: this.containerRef
@@ -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","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 title={this.props.title} tooltip={this.props.tooltip}>\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","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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"}
@@ -49,7 +49,8 @@ export declare class SubmitRaw extends BaseInput<SubmitProps, SubmitState, never
49
49
  translations?: Partial<{
50
50
  required: string;
51
51
  }>;
52
- } & import("../form/FormContext").FormContextProps & {
52
+ inputGroupClassName?: string;
53
+ } & import("../form").FormContextProps & {
53
54
  validateForm: boolean;
54
55
  ignoreContext: boolean;
55
56
  reRendersWhenContextChanges: boolean;
@@ -96,7 +97,8 @@ export declare const Submit: React.ForwardRefExoticComponent<{
96
97
  needsFixing: string;
97
98
  required: string;
98
99
  }>;
99
- } & import("../form/FormContext").FormContextProps & {
100
+ inputGroupClassName?: string;
101
+ } & import("../form").FormContextProps & {
100
102
  id?: string;
101
103
  onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
102
104
  style?: React.CSSProperties;
@@ -118,7 +118,8 @@ class TextRaw extends _BaseInput.BaseInput {
118
118
  const clearButtonHidden = !((_this$state$value = this.state.value) !== null && _this$state$value !== void 0 && _this$state$value.length) || this.props.disabled;
119
119
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
120
120
  title: this.props.title,
121
- tooltip: this.props.tooltip
121
+ tooltip: this.props.tooltip,
122
+ className: this.props.inputGroupClassName
122
123
  }, /*#__PURE__*/React.createElement("div", {
123
124
  className: `input__base text-input ${this.getValidationClass()}
124
125
  ${this.props.readOnly ? 'text-input--readOnly' : ''} ${this.props.className ? this.props.className : ''}`,
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","names":["PlusIcon","classNames","require","TextRaw","BaseInput","constructor","props","inputRef","current","nativeTextAreaValueSetter","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","event","Event","bubbles","dispatchEvent","e","stopClickPropagation","stopPropagation","onKeyDown","number","undefined","onNumberChange","value","toString","res","handleValueChange","state","isValid","errors","ignoreContext","formContext","updateCallback","componentId","validation","componentDidUpdate","prevProps","prevState","Number","num","isNaN","validators","customValidators","required","render","clearButtonHidden","length","disabled","title","tooltip","getValidationClass","readOnly","className","containerClick","containerRef","before","id","placeholder","getDisabled","handleChange","handleBlur","handleFocus","type","onClick","maxLength","sizeFromValue","after","showClearButton","clearClick","renderDefaultValidation","label","renderLabel","assign","defaultProps","Text","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/text/Text.tsx"],"sourcesContent":["// 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 Button from '../button';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\nvar classNames = require('classnames');\r\n\r\nexport interface TextProps extends BaseInputProps<HTMLInputElement> {\r\n mask?: string;\r\n reverse?: boolean;\r\n placeholder?: string;\r\n stopClickPropagation?: boolean;\r\n inputRef?: React.Ref<HTMLInputElement>;\r\n readOnly?: boolean;\r\n type?: 'number' | 'text';\r\n maxLength?: number;\r\n showClearButton?: boolean;\r\n after?: React.ReactNode;\r\n before?: React.ReactNode;\r\n sizeFromValue?: boolean;\r\n onNumberChange?: (number: number, isValid: boolean) => void;\r\n number?: number;\r\n}\r\n\r\nexport interface TextState extends BaseInputState {}\r\n\r\nexport class TextRaw extends BaseInput<TextProps, TextState, HTMLInputElement> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'text',\r\n stopClickPropagation: true,\r\n readOnly: false,\r\n }) as TextProps;\r\n\r\n constructor(props: TextProps) {\r\n super(props);\r\n if (props.number !== undefined || props.onNumberChange) {\r\n const value = props.number?.toString() ?? '';\r\n const res = this.handleValueChange(value, true, [], props, true);\r\n this.state = {\r\n ...this.state,\r\n isValid: res.isValid,\r\n errors: res.errors,\r\n value,\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: res.isValid,\r\n errors: res.errors,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n public componentDidUpdate(prevProps: TextProps, prevState: TextState) {\r\n if (\r\n this.props.onNumberChange &&\r\n (this.state.isValid !== prevState.isValid ||\r\n this.state.value !== prevState.value) &&\r\n this.props.number !== Number(this.state.value)\r\n ) {\r\n const num = Number(this.state.value);\r\n if (this.state.value === '') {\r\n this.props.onNumberChange(undefined, this.state.isValid);\r\n } else if (!isNaN(num)) {\r\n this.props.onNumberChange(num, this.state.isValid);\r\n }\r\n }\r\n if (\r\n (prevProps.number !== undefined || this.props.number !== undefined) &&\r\n this.props.number !== prevProps.number\r\n ) {\r\n this.handleValueChange(this.props.number?.toString() ?? '');\r\n }\r\n if (\r\n !this.props.onNumberChange &&\r\n (prevProps.value !== this.props.value ||\r\n prevProps.validators !== this.props.validators ||\r\n prevProps.customValidators !== this.props.customValidators ||\r\n prevProps.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 render() {\r\n const clearButtonHidden = !this.state.value?.length || this.props.disabled;\r\n return (\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div\r\n className={`input__base text-input ${this.getValidationClass()} \r\n ${this.props.readOnly ? 'text-input--readOnly' : ''} ${\r\n this.props.className ? this.props.className : ''\r\n }`}\r\n onClick={this.containerClick}\r\n ref={this.containerRef}\r\n >\r\n <div className=\"text-input__textWrapper\">\r\n {this.props.before}\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.inputRef}\r\n placeholder={this.props.placeholder}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={this.state.value ? 'filled' : ''}\r\n onChange={this.handleChange}\r\n value={this.state.value ?? ''}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n readOnly={this.props.readOnly}\r\n onKeyDown={this.onKeyDown}\r\n type={this.props.type}\r\n onClick={this.props.onClick}\r\n maxLength={this.props.maxLength}\r\n size={\r\n this.props.sizeFromValue\r\n ? this.props.value?.length || 1\r\n : undefined\r\n }\r\n />\r\n {this.props.after}\r\n {!this.props.readOnly && this.props.showClearButton && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-clear-button',\r\n })}\r\n disabled={clearButtonHidden}\r\n unobtrusive={true}\r\n noShadow={true}\r\n onClick={this.clearClick}\r\n className={classNames(\r\n 'text-input__clearButton line-height--0',\r\n {\r\n 'text-input__clearButton--hidden': clearButtonHidden,\r\n }\r\n )}\r\n >\r\n <PlusIcon className=\"transform-rotate--45 line-height--0\" />\r\n </Button>\r\n )}\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label className={this.props.readOnly ? 'label--focused' : ''}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private clearClick = () => {\r\n if (this.inputRef.current) {\r\n var nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n window.HTMLInputElement.prototype,\r\n 'value'\r\n ).set;\r\n if (nativeTextAreaValueSetter) {\r\n nativeTextAreaValueSetter.call(this.inputRef.current, '');\r\n\r\n const event = new Event('input', { bubbles: true });\r\n this.inputRef.current.dispatchEvent(event);\r\n }\r\n }\r\n };\r\n\r\n private containerClick = (e: React.MouseEvent<HTMLDivElement>) =>\r\n this.props.stopClickPropagation && e.stopPropagation();\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) =>\r\n this.props.onKeyDown && this.props.onKeyDown(e);\r\n}\r\n\r\nexport const Text = withThemeContext<TextProps, InstanceType<typeof TextRaw>>(\r\n withFormContext<TextProps>(TextRaw),\r\n 'text'\r\n);\r\n\r\nexport default Text;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Text.js","names":["PlusIcon","classNames","require","TextRaw","BaseInput","constructor","props","inputRef","current","nativeTextAreaValueSetter","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","event","Event","bubbles","dispatchEvent","e","stopClickPropagation","stopPropagation","onKeyDown","number","undefined","onNumberChange","value","toString","res","handleValueChange","state","isValid","errors","ignoreContext","formContext","updateCallback","componentId","validation","componentDidUpdate","prevProps","prevState","Number","num","isNaN","validators","customValidators","required","render","clearButtonHidden","length","disabled","title","tooltip","inputGroupClassName","getValidationClass","readOnly","className","containerClick","containerRef","before","id","placeholder","getDisabled","handleChange","handleBlur","handleFocus","type","onClick","maxLength","sizeFromValue","after","showClearButton","clearClick","renderDefaultValidation","label","renderLabel","assign","defaultProps","Text","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/text/Text.tsx"],"sourcesContent":["// 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 Button from '../button';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\nvar classNames = require('classnames');\r\n\r\nexport interface TextProps extends BaseInputProps<HTMLInputElement> {\r\n mask?: string;\r\n reverse?: boolean;\r\n placeholder?: string;\r\n stopClickPropagation?: boolean;\r\n inputRef?: React.Ref<HTMLInputElement>;\r\n readOnly?: boolean;\r\n type?: 'number' | 'text';\r\n maxLength?: number;\r\n showClearButton?: boolean;\r\n after?: React.ReactNode;\r\n before?: React.ReactNode;\r\n sizeFromValue?: boolean;\r\n onNumberChange?: (number: number, isValid: boolean) => void;\r\n number?: number;\r\n}\r\n\r\nexport interface TextState extends BaseInputState {}\r\n\r\nexport class TextRaw extends BaseInput<TextProps, TextState, HTMLInputElement> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'text',\r\n stopClickPropagation: true,\r\n readOnly: false,\r\n }) as TextProps;\r\n\r\n constructor(props: TextProps) {\r\n super(props);\r\n if (props.number !== undefined || props.onNumberChange) {\r\n const value = props.number?.toString() ?? '';\r\n const res = this.handleValueChange(value, true, [], props, true);\r\n this.state = {\r\n ...this.state,\r\n isValid: res.isValid,\r\n errors: res.errors,\r\n value,\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: res.isValid,\r\n errors: res.errors,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n public componentDidUpdate(prevProps: TextProps, prevState: TextState) {\r\n if (\r\n this.props.onNumberChange &&\r\n (this.state.isValid !== prevState.isValid ||\r\n this.state.value !== prevState.value) &&\r\n this.props.number !== Number(this.state.value)\r\n ) {\r\n const num = Number(this.state.value);\r\n if (this.state.value === '') {\r\n this.props.onNumberChange(undefined, this.state.isValid);\r\n } else if (!isNaN(num)) {\r\n this.props.onNumberChange(num, this.state.isValid);\r\n }\r\n }\r\n if (\r\n (prevProps.number !== undefined || this.props.number !== undefined) &&\r\n this.props.number !== prevProps.number\r\n ) {\r\n this.handleValueChange(this.props.number?.toString() ?? '');\r\n }\r\n if (\r\n !this.props.onNumberChange &&\r\n (prevProps.value !== this.props.value ||\r\n prevProps.validators !== this.props.validators ||\r\n prevProps.customValidators !== this.props.customValidators ||\r\n prevProps.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 render() {\r\n const clearButtonHidden = !this.state.value?.length || this.props.disabled;\r\n return (\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip} className={this.props.inputGroupClassName}>\r\n <div\r\n className={`input__base text-input ${this.getValidationClass()} \r\n ${this.props.readOnly ? 'text-input--readOnly' : ''} ${\r\n this.props.className ? this.props.className : ''\r\n }`}\r\n onClick={this.containerClick}\r\n ref={this.containerRef}\r\n >\r\n <div className=\"text-input__textWrapper\">\r\n {this.props.before}\r\n <input\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.inputRef}\r\n placeholder={this.props.placeholder}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={this.state.value ? 'filled' : ''}\r\n onChange={this.handleChange}\r\n value={this.state.value ?? ''}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n readOnly={this.props.readOnly}\r\n onKeyDown={this.onKeyDown}\r\n type={this.props.type}\r\n onClick={this.props.onClick}\r\n maxLength={this.props.maxLength}\r\n size={\r\n this.props.sizeFromValue\r\n ? this.props.value?.length || 1\r\n : undefined\r\n }\r\n />\r\n {this.props.after}\r\n {!this.props.readOnly && this.props.showClearButton && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-clear-button',\r\n })}\r\n disabled={clearButtonHidden}\r\n unobtrusive={true}\r\n noShadow={true}\r\n onClick={this.clearClick}\r\n className={classNames(\r\n 'text-input__clearButton line-height--0',\r\n {\r\n 'text-input__clearButton--hidden': clearButtonHidden,\r\n }\r\n )}\r\n >\r\n <PlusIcon className=\"transform-rotate--45 line-height--0\" />\r\n </Button>\r\n )}\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label className={this.props.readOnly ? 'label--focused' : ''}>\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private clearClick = () => {\r\n if (this.inputRef.current) {\r\n var nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(\r\n window.HTMLInputElement.prototype,\r\n 'value'\r\n ).set;\r\n if (nativeTextAreaValueSetter) {\r\n nativeTextAreaValueSetter.call(this.inputRef.current, '');\r\n\r\n const event = new Event('input', { bubbles: true });\r\n this.inputRef.current.dispatchEvent(event);\r\n }\r\n }\r\n };\r\n\r\n private containerClick = (e: React.MouseEvent<HTMLDivElement>) =>\r\n this.props.stopClickPropagation && e.stopPropagation();\r\n\r\n private onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) =>\r\n this.props.onKeyDown && this.props.onKeyDown(e);\r\n}\r\n\r\nexport const Text = withThemeContext<TextProps, InstanceType<typeof TextRaw>>(\r\n withFormContext<TextProps>(TextRaw),\r\n 'text'\r\n);\r\n\r\nexport default Text;\r\n"],"mappings":"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"}
@@ -45,7 +45,9 @@ class TextAreaRaw extends _BaseInput.BaseInput {
45
45
 
46
46
  render() {
47
47
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
48
- title: this.props.title
48
+ title: this.props.title,
49
+ className: this.props.inputGroupClassName,
50
+ tooltip: this.props.tooltip
49
51
  }, /*#__PURE__*/React.createElement("div", {
50
52
  className: `input__base textArea-input ${this.getValidationClass()}
51
53
  ${this.props.readOnly ? 'textArea-input--readOnly' : ''}
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","names":["TextAreaRaw","BaseInput","constructor","props","e","onKeyDown","elem","inputRef","stopClickPropagation","stopPropagation","render","title","getValidationClass","readOnly","className","onContainerClick","containerRef","id","elemRef","placeholder","getDisabled","required","state","value","handleChange","handleBlur","handleFocus","minRows","maxRows","maxLength","renderDefaultValidation","label","renderLabel","focus","Object","assign","defaultProps","type","TextArea","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/textArea/TextArea.tsx"],"sourcesContent":["// 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 TextareaAutosize from '@material-ui/core/TextareaAutosize';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface TextAreaProps extends BaseInputProps<HTMLTextAreaElement> {\r\n mask?: string;\r\n reverse?: boolean;\r\n placeholder?: string;\r\n stopClickPropagation?: boolean;\r\n inputRef?: (input: HTMLTextAreaElement) => void;\r\n readOnly?: boolean;\r\n type?: 'number' | 'text';\r\n minRows?: number;\r\n maxRows?: number;\r\n maxLength?: number;\r\n}\r\n\r\nexport interface TextAreaState extends BaseInputState {}\r\n\r\nexport class TextAreaRaw extends BaseInput<\r\n TextAreaProps,\r\n TextAreaState,\r\n HTMLTextAreaElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'text',\r\n placeholder: '',\r\n stopClickPropagation: true,\r\n readOnly: false,\r\n }) as unknown) as TextAreaProps;\r\n private elem: HTMLTextAreaElement;\r\n\r\n constructor(props: TextAreaProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n return (\r\n <InputGroup title={this.props.title}>\r\n <div\r\n className={`input__base textArea-input ${this.getValidationClass()} \r\n ${this.props.readOnly ? 'textArea-input--readOnly' : ''} \r\n ${this.props.className ? this.props.className : ''}`}\r\n onClick={this.onContainerClick}\r\n ref={this.containerRef}\r\n >\r\n <TextareaAutosize\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.elemRef}\r\n placeholder={this.props.placeholder}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={this.state.value ? 'filled' : ''}\r\n onChange={this.handleChange}\r\n value={this.state.value}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n readOnly={this.props.readOnly}\r\n onKeyDown={this.onKeyDown}\r\n rows={this.props.minRows}\r\n rowsMax={this.props.maxRows}\r\n maxLength={this.props.maxLength}\r\n />\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && <label>{this.renderLabel()}</label>}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n public focus() {\r\n this.elem && this.elem.focus();\r\n }\r\n\r\n private onKeyDown = e => this.props.onKeyDown && this.props.onKeyDown(e);\r\n\r\n private elemRef = (elem: HTMLTextAreaElement) => {\r\n this.elem = elem;\r\n this.props.inputRef && this.props.inputRef(elem);\r\n };\r\n\r\n private onContainerClick = e =>\r\n this.props.stopClickPropagation && e.stopPropagation();\r\n}\r\n\r\nexport const TextArea = withThemeContext<\r\n TextAreaProps,\r\n InstanceType<typeof TextAreaRaw>\r\n>(withFormContext<TextAreaProps>(TextAreaRaw), 'textArea');\r\n\r\nexport default TextArea;\r\n"],"mappings":";;;;;;;AACA;;AAGA;;AACA;;AAKA;;AACA;;AACA;;;;;;;;;;;;AAiBO,MAAMA,WAAN,SAA0BC,oBAA1B,CAIL;EASAC,WAAW,CAACC,KAAD,EAAuB;IAChC,MAAMA,KAAN;;IADgC;;IAAA,mCA8CdC,CAAC,IAAI,KAAKD,KAAL,CAAWE,SAAX,IAAwB,KAAKF,KAAL,CAAWE,SAAX,CAAqBD,CAArB,CA9Cf;;IAAA,iCAgDfE,IAAD,IAA+B;MAC/C,KAAKA,IAAL,GAAYA,IAAZ;MACA,KAAKH,KAAL,CAAWI,QAAX,IAAuB,KAAKJ,KAAL,CAAWI,QAAX,CAAoBD,IAApB,CAAvB;IACD,CAnDiC;;IAAA,0CAqDPF,CAAC,IAC1B,KAAKD,KAAL,CAAWK,oBAAX,IAAmCJ,CAAC,CAACK,eAAF,EAtDH;EAEjC;;EAEMC,MAAM,GAAG;IACd,oBACE,oBAAC,mBAAD;MAAY,KAAK,EAAE,KAAKP,KAAL,CAAWQ;IAA9B,gBACE;MACE,SAAS,EAAG,8BAA6B,KAAKC,kBAAL,EAA0B;AAC7E,sBAAsB,KAAKT,KAAL,CAAWU,QAAX,GAAsB,0BAAtB,GAAmD,EAAG;AAC5E,sBAAsB,KAAKV,KAAL,CAAWW,SAAX,GAAuB,KAAKX,KAAL,CAAWW,SAAlC,GAA8C,EAAG,EAH/D;MAIE,OAAO,EAAE,KAAKC,gBAJhB;MAKE,GAAG,EAAE,KAAKC;IALZ,gBAOE,oBAAC,yBAAD,eACO,KAAKb,KAAL,CAAWc,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKd,KAAL,CAAWc;IADK,CADxB;MAIE,GAAG,EAAE,KAAKC,OAJZ;MAKE,WAAW,EAAE,KAAKf,KAAL,CAAWgB,WAL1B;MAME,QAAQ,EAAE,KAAKC,WAAL,EANZ;MAOE,QAAQ,EAAE,KAAKjB,KAAL,CAAWkB,QAPvB;MAQE,SAAS,EAAE,KAAKC,KAAL,CAAWC,KAAX,GAAmB,QAAnB,GAA8B,EAR3C;MASE,QAAQ,EAAE,KAAKC,YATjB;MAUE,KAAK,EAAE,KAAKF,KAAL,CAAWC,KAVpB;MAWE,MAAM,EAAE,KAAKE,UAXf;MAYE,OAAO,EAAE,KAAKC,WAZhB;MAaE,QAAQ,EAAE,KAAKvB,KAAL,CAAWU,QAbvB;MAcE,SAAS,EAAE,KAAKR,SAdlB;MAeE,IAAI,EAAE,KAAKF,KAAL,CAAWwB,OAfnB;MAgBE,OAAO,EAAE,KAAKxB,KAAL,CAAWyB,OAhBtB;MAiBE,SAAS,EAAE,KAAKzB,KAAL,CAAW0B;IAjBxB,GAPF,eA0BE;MAAM,SAAS,EAAC;IAAhB,EA1BF,eA2BE;MAAM,SAAS,EAAC;IAAhB,EA3BF,EA4BG,KAAKC,uBAAL,EA5BH,EA6BG,KAAK3B,KAAL,CAAW4B,KAAX,iBAAoB,mCAAQ,KAAKC,WAAL,EAAR,CA7BvB,CADF,CADF;EAmCD;;EAEMC,KAAK,GAAG;IACb,KAAK3B,IAAL,IAAa,KAAKA,IAAL,CAAU2B,KAAV,EAAb;EACD;;AArDD;;;;gBAJWjC,W,kBAKmBkC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBlC,oBAAA,CAAUmC,YAA5B,EAA0C;EACtEC,IAAI,EAAE,MADgE;EAEtElB,WAAW,EAAE,EAFyD;EAGtEX,oBAAoB,EAAE,IAHgD;EAItEK,QAAQ,EAAE;AAJ4D,CAA1C,C;;AAiEzB,MAAMyB,QAAQ,GAAG,IAAAC,kCAAA,EAGtB,IAAAC,gCAAA,EAA+BxC,WAA/B,CAHsB,EAGuB,UAHvB,CAAjB;;eAKQsC,Q"}
1
+ {"version":3,"file":"TextArea.js","names":["TextAreaRaw","BaseInput","constructor","props","e","onKeyDown","elem","inputRef","stopClickPropagation","stopPropagation","render","title","inputGroupClassName","tooltip","getValidationClass","readOnly","className","onContainerClick","containerRef","id","elemRef","placeholder","getDisabled","required","state","value","handleChange","handleBlur","handleFocus","minRows","maxRows","maxLength","renderDefaultValidation","label","renderLabel","focus","Object","assign","defaultProps","type","TextArea","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/textArea/TextArea.tsx"],"sourcesContent":["// 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 TextareaAutosize from '@material-ui/core/TextareaAutosize';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface TextAreaProps extends BaseInputProps<HTMLTextAreaElement> {\r\n mask?: string;\r\n reverse?: boolean;\r\n placeholder?: string;\r\n stopClickPropagation?: boolean;\r\n inputRef?: (input: HTMLTextAreaElement) => void;\r\n readOnly?: boolean;\r\n type?: 'number' | 'text';\r\n minRows?: number;\r\n maxRows?: number;\r\n maxLength?: number;\r\n}\r\n\r\nexport interface TextAreaState extends BaseInputState {}\r\n\r\nexport class TextAreaRaw extends BaseInput<\r\n TextAreaProps,\r\n TextAreaState,\r\n HTMLTextAreaElement\r\n> {\r\n public static defaultProps = (Object.assign({}, BaseInput.defaultProps, {\r\n type: 'text',\r\n placeholder: '',\r\n stopClickPropagation: true,\r\n readOnly: false,\r\n }) as unknown) as TextAreaProps;\r\n private elem: HTMLTextAreaElement;\r\n\r\n constructor(props: TextAreaProps) {\r\n super(props);\r\n }\r\n\r\n public render() {\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 className={`input__base textArea-input ${this.getValidationClass()} \r\n ${this.props.readOnly ? 'textArea-input--readOnly' : ''} \r\n ${this.props.className ? this.props.className : ''}`}\r\n onClick={this.onContainerClick}\r\n ref={this.containerRef}\r\n >\r\n <TextareaAutosize\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n ref={this.elemRef}\r\n placeholder={this.props.placeholder}\r\n disabled={this.getDisabled()}\r\n required={this.props.required}\r\n className={this.state.value ? 'filled' : ''}\r\n onChange={this.handleChange}\r\n value={this.state.value}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n readOnly={this.props.readOnly}\r\n onKeyDown={this.onKeyDown}\r\n rows={this.props.minRows}\r\n rowsMax={this.props.maxRows}\r\n maxLength={this.props.maxLength}\r\n />\r\n <span className=\"highlight\" />\r\n <span className=\"bar\" />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && <label>{this.renderLabel()}</label>}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n public focus() {\r\n this.elem && this.elem.focus();\r\n }\r\n\r\n private onKeyDown = e => this.props.onKeyDown && this.props.onKeyDown(e);\r\n\r\n private elemRef = (elem: HTMLTextAreaElement) => {\r\n this.elem = elem;\r\n this.props.inputRef && this.props.inputRef(elem);\r\n };\r\n\r\n private onContainerClick = e =>\r\n this.props.stopClickPropagation && e.stopPropagation();\r\n}\r\n\r\nexport const TextArea = withThemeContext<\r\n TextAreaProps,\r\n InstanceType<typeof TextAreaRaw>\r\n>(withFormContext<TextAreaProps>(TextAreaRaw), 'textArea');\r\n\r\nexport default TextArea;\r\n"],"mappings":";;;;;;;AACA;;AAGA;;AACA;;AAKA;;AACA;;AACA;;;;;;;;;;;;AAiBO,MAAMA,WAAN,SAA0BC,oBAA1B,CAIL;EASAC,WAAW,CAACC,KAAD,EAAuB;IAChC,MAAMA,KAAN;;IADgC;;IAAA,mCAkDdC,CAAC,IAAI,KAAKD,KAAL,CAAWE,SAAX,IAAwB,KAAKF,KAAL,CAAWE,SAAX,CAAqBD,CAArB,CAlDf;;IAAA,iCAoDfE,IAAD,IAA+B;MAC/C,KAAKA,IAAL,GAAYA,IAAZ;MACA,KAAKH,KAAL,CAAWI,QAAX,IAAuB,KAAKJ,KAAL,CAAWI,QAAX,CAAoBD,IAApB,CAAvB;IACD,CAvDiC;;IAAA,0CAyDPF,CAAC,IAC1B,KAAKD,KAAL,CAAWK,oBAAX,IAAmCJ,CAAC,CAACK,eAAF,EA1DH;EAEjC;;EAEMC,MAAM,GAAG;IACd,oBACE,oBAAC,mBAAD;MACE,KAAK,EAAE,KAAKP,KAAL,CAAWQ,KADpB;MAEE,SAAS,EAAE,KAAKR,KAAL,CAAWS,mBAFxB;MAGE,OAAO,EAAE,KAAKT,KAAL,CAAWU;IAHtB,gBAKE;MACE,SAAS,EAAG,8BAA6B,KAAKC,kBAAL,EAA0B;AAC7E,sBAAsB,KAAKX,KAAL,CAAWY,QAAX,GAAsB,0BAAtB,GAAmD,EAAG;AAC5E,sBAAsB,KAAKZ,KAAL,CAAWa,SAAX,GAAuB,KAAKb,KAAL,CAAWa,SAAlC,GAA8C,EAAG,EAH/D;MAIE,OAAO,EAAE,KAAKC,gBAJhB;MAKE,GAAG,EAAE,KAAKC;IALZ,gBAOE,oBAAC,yBAAD,eACO,KAAKf,KAAL,CAAWgB,EAAX,IAAiB;MACpBA,EAAE,EAAE,KAAKhB,KAAL,CAAWgB;IADK,CADxB;MAIE,GAAG,EAAE,KAAKC,OAJZ;MAKE,WAAW,EAAE,KAAKjB,KAAL,CAAWkB,WAL1B;MAME,QAAQ,EAAE,KAAKC,WAAL,EANZ;MAOE,QAAQ,EAAE,KAAKnB,KAAL,CAAWoB,QAPvB;MAQE,SAAS,EAAE,KAAKC,KAAL,CAAWC,KAAX,GAAmB,QAAnB,GAA8B,EAR3C;MASE,QAAQ,EAAE,KAAKC,YATjB;MAUE,KAAK,EAAE,KAAKF,KAAL,CAAWC,KAVpB;MAWE,MAAM,EAAE,KAAKE,UAXf;MAYE,OAAO,EAAE,KAAKC,WAZhB;MAaE,QAAQ,EAAE,KAAKzB,KAAL,CAAWY,QAbvB;MAcE,SAAS,EAAE,KAAKV,SAdlB;MAeE,IAAI,EAAE,KAAKF,KAAL,CAAW0B,OAfnB;MAgBE,OAAO,EAAE,KAAK1B,KAAL,CAAW2B,OAhBtB;MAiBE,SAAS,EAAE,KAAK3B,KAAL,CAAW4B;IAjBxB,GAPF,eA0BE;MAAM,SAAS,EAAC;IAAhB,EA1BF,eA2BE;MAAM,SAAS,EAAC;IAAhB,EA3BF,EA4BG,KAAKC,uBAAL,EA5BH,EA6BG,KAAK7B,KAAL,CAAW8B,KAAX,iBAAoB,mCAAQ,KAAKC,WAAL,EAAR,CA7BvB,CALF,CADF;EAuCD;;EAEMC,KAAK,GAAG;IACb,KAAK7B,IAAL,IAAa,KAAKA,IAAL,CAAU6B,KAAV,EAAb;EACD;;AAzDD;;;;gBAJWnC,W,kBAKmBoC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBpC,oBAAA,CAAUqC,YAA5B,EAA0C;EACtEC,IAAI,EAAE,MADgE;EAEtElB,WAAW,EAAE,EAFyD;EAGtEb,oBAAoB,EAAE,IAHgD;EAItEO,QAAQ,EAAE;AAJ4D,CAA1C,C;;AAqEzB,MAAMyB,QAAQ,GAAG,IAAAC,kCAAA,EAGtB,IAAAC,gCAAA,EAA+B1C,WAA/B,CAHsB,EAGuB,UAHvB,CAAjB;;eAKQwC,Q"}
@@ -143,7 +143,8 @@ class TimeRaw extends _BaseInput.BaseInput {
143
143
 
144
144
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
145
145
  title: this.props.title,
146
- tooltip: this.props.tooltip
146
+ tooltip: this.props.tooltip,
147
+ className: this.props.inputGroupClassName
147
148
  }, /*#__PURE__*/React.createElement("div", _extends({}, this.props.id && {
148
149
  id: this.props.id
149
150
  }, {
@@ -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","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 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 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","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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"}
@@ -134,7 +134,8 @@ class TimeSpanRaw extends _BaseInput.BaseInput {
134
134
  const unitsArr = allUnits.filter(u => (units & u) !== 0).reverse();
135
135
  return /*#__PURE__*/React.createElement(_InputGroup.default, {
136
136
  title: this.props.title,
137
- tooltip: this.props.tooltip
137
+ tooltip: this.props.tooltip,
138
+ className: this.props.inputGroupClassName
138
139
  }, /*#__PURE__*/React.createElement("div", _extends({}, this.props.id && {
139
140
  id: this.props.id
140
141
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"TimeSpan.js","names":["ArrowIcon","classNames","require","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","id","getValidationClass","className","containerRef","map","getDisabled","required","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\nvar classNames = require('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 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={\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","classNames","require","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","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\nvar classNames = require('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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"}
@@ -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 [5 Oct 2022 at 11:18]</title>
6
+ <title>guestbell-forms [5 Oct 2022 at 13:51]</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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.304",
2
+ "version": "2.0.306",
3
3
  "description": "React forms with validation as used in GuestBell",
4
4
  "keywords": [
5
5
  "react",