@react-spectrum/textfield 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -87,13 +87,13 @@ $40cb3a00c193680f$export$d35bc1e505d1ebbf = "is-disabled_73bc77";
87
87
 
88
88
 
89
89
  function $86793250183ac29e$var$TextFieldBase(props, ref) {
90
- let { validationState: validationState , icon: icon , isQuiet: isQuiet = false , isDisabled: isDisabled , multiLine: multiLine , autoFocus: autoFocus , inputClassName: inputClassName , wrapperChildren: wrapperChildren , labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps , inputRef: inputRef , isLoading: isLoading , loadingIndicator: loadingIndicator , validationIconClassName: validationIconClassName } = props;
90
+ let { validationState: validationState , icon: icon , isQuiet: isQuiet = false , isDisabled: isDisabled , multiLine: multiLine , autoFocus: autoFocus , inputClassName: inputClassName , wrapperChildren: wrapperChildren , labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps , inputRef: userInputRef , isLoading: isLoading , loadingIndicator: loadingIndicator , validationIconClassName: validationIconClassName } = props;
91
91
  let { hoverProps: hoverProps , isHovered: isHovered } = $74aPB$reactariainteractions.useHover({
92
92
  isDisabled: isDisabled
93
93
  });
94
94
  let domRef = $74aPB$react.useRef(null);
95
95
  let defaultInputRef = $74aPB$react.useRef(null);
96
- inputRef = inputRef || defaultInputRef;
96
+ let inputRef = userInputRef || defaultInputRef;
97
97
  // Expose imperative interface for ref
98
98
  $74aPB$react.useImperativeHandle(ref, ()=>({
99
99
  ...$74aPB$reactspectrumutils.createFocusableRef(domRef, inputRef),
@@ -161,11 +161,11 @@ function $eec649e464f3832d$var$TextArea(props, ref) {
161
161
  // not in stately because this is so we know when to re-measure, which is a spectrum design
162
162
  let [inputValue, setInputValue] = $74aPB$reactstatelyutils.useControlledState(props.value, props.defaultValue, ()=>{
163
163
  });
164
- let inputRef = $74aPB$react.useRef();
164
+ let inputRef = $74aPB$react.useRef(null);
165
165
  let onHeightChange = $74aPB$react.useCallback(()=>{
166
166
  // Quiet textareas always grow based on their text content.
167
167
  // Standard textareas also grow by default, unless an explicit height is set.
168
- if (isQuiet || !props.height) {
168
+ if ((isQuiet || !props.height) && inputRef.current) {
169
169
  let input = inputRef.current;
170
170
  let prevAlignment = input.style.alignSelf;
171
171
  let prevOverflow = input.style.overflow;
@@ -227,7 +227,7 @@ function $eec649e464f3832d$var$TextArea(props, ref) {
227
227
 
228
228
  function $34fd51d50eb4b056$var$TextField(props, ref) {
229
229
  props = $74aPB$reactspectrumprovider.useProviderProps(props);
230
- let inputRef = $74aPB$react.useRef();
230
+ let inputRef = $74aPB$react.useRef(null);
231
231
  let { labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps } = $74aPB$reactariatextfield.useTextField(props, inputRef);
232
232
  if (props.placeholder) console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');
233
233
  return(/*#__PURE__*/ ($parcel$interopDefault($74aPB$react)).createElement($86793250183ac29e$export$d22444a338b6e3c2, {
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/textfield/src/index.ts","packages/@react-spectrum/textfield/src/TextArea.tsx","packages/@react-spectrum/textfield/src/TextFieldBase.tsx","packages/@adobe/spectrum-css-temp/components/textfield/vars.css","packages/@react-spectrum/textfield/src/TextField.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {TextArea} from './TextArea';\nexport {TextField} from './TextField';\nexport {TextFieldBase} from './TextFieldBase';\nexport type {SpectrumTextFieldProps} from '@react-types/textfield';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {chain, useLayoutEffect} from '@react-aria/utils';\nimport React, {RefObject, useCallback, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useControlledState} from '@react-stately/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextArea(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {\n props = useProviderProps(props);\n let {\n isDisabled = false,\n isQuiet = false,\n isReadOnly = false,\n isRequired = false,\n onChange,\n ...otherProps\n } = props;\n\n // not in stately because this is so we know when to re-measure, which is a spectrum design\n let [inputValue, setInputValue] = useControlledState(props.value, props.defaultValue, () => {});\n let inputRef = useRef<HTMLTextAreaElement>();\n\n let onHeightChange = useCallback(() => {\n // Quiet textareas always grow based on their text content.\n // Standard textareas also grow by default, unless an explicit height is set.\n if (isQuiet || !props.height) {\n let input = inputRef.current;\n let prevAlignment = input.style.alignSelf;\n let prevOverflow = input.style.overflow;\n // Firefox scroll position is lost when overflow: 'hidden' is applied so we skip applying it.\n // The measure/applied height is also incorrect/reset if we turn on and off\n // overflow: hidden in Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n let isFirefox = 'MozAppearance' in input.style;\n if (!isFirefox) {\n input.style.overflow = 'hidden';\n }\n input.style.alignSelf = 'start';\n input.style.height = 'auto';\n // offsetHeight - clientHeight accounts for the border/padding.\n input.style.height = `${input.scrollHeight + (input.offsetHeight - input.clientHeight)}px`;\n input.style.overflow = prevOverflow;\n input.style.alignSelf = prevAlignment;\n }\n }, [isQuiet, inputRef, props.height]);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n onHeightChange();\n }\n }, [onHeightChange, inputValue, inputRef]);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextArea.html#help-text');\n }\n\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField({\n ...props,\n onChange: chain(onChange, setInputValue),\n inputElementType: 'textarea'\n }, inputRef);\n\n return (\n <TextFieldBase\n {...otherProps}\n ref={ref}\n inputRef={inputRef}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n multiLine\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n isReadOnly={isReadOnly}\n isRequired={isRequired} />\n );\n}\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter. They allow for all customizations that\n * are available to text fields.\n */\nlet _TextArea = React.forwardRef(TextArea);\nexport {_TextArea as TextArea};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, createFocusableRef} from '@react-spectrum/utils';\nimport {Field} from '@react-spectrum/label';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport {PressEvents} from '@react-types/shared';\nimport React, {cloneElement, forwardRef, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, ReactElement, Ref, RefObject, TextareaHTMLAttributes, useImperativeHandle, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport styles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useHover} from '@react-aria/interactions';\n\ninterface TextFieldBaseProps extends Omit<SpectrumTextFieldProps, 'onChange'>, PressEvents {\n wrapperChildren?: ReactElement | ReactElement[],\n inputClassName?: string,\n validationIconClassName?: string,\n multiLine?: boolean,\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>,\n inputProps: InputHTMLAttributes<HTMLInputElement> | TextareaHTMLAttributes<HTMLTextAreaElement>,\n descriptionProps?: HTMLAttributes<HTMLElement>,\n errorMessageProps?: HTMLAttributes<HTMLElement>,\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>,\n loadingIndicator?: ReactElement,\n isLoading?: boolean\n}\n\nfunction TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {\n let {\n validationState,\n icon,\n isQuiet = false,\n isDisabled,\n multiLine,\n autoFocus,\n inputClassName,\n wrapperChildren,\n labelProps,\n inputProps,\n descriptionProps,\n errorMessageProps,\n inputRef,\n isLoading,\n loadingIndicator,\n validationIconClassName\n } = props;\n let {hoverProps, isHovered} = useHover({isDisabled});\n let domRef = useRef<HTMLDivElement>(null);\n let defaultInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n inputRef = inputRef || defaultInputRef;\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef.current;\n }\n }));\n\n let ElementType: React.ElementType = multiLine ? 'textarea' : 'input';\n let isInvalid = validationState === 'invalid';\n\n if (icon) {\n let UNSAFE_className = classNames(\n styles,\n icon.props && icon.props.UNSAFE_className,\n 'spectrum-Textfield-icon'\n );\n\n icon = cloneElement(icon, {\n UNSAFE_className,\n size: 'S'\n });\n }\n\n let validationIcon = isInvalid ? <AlertMedium /> : <CheckmarkMedium />;\n let validation = cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n styles,\n 'spectrum-Textfield-validationIcon',\n validationIconClassName\n )\n });\n\n let textField = (\n <div\n className={\n classNames(\n styles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': isInvalid,\n 'spectrum-Textfield--valid': validationState === 'valid',\n 'spectrum-Textfield--loadable': loadingIndicator,\n 'spectrum-Textfield--quiet': isQuiet,\n 'spectrum-Textfield--multiline': multiLine\n }\n )\n }>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')} isTextInput autoFocus={autoFocus}>\n <ElementType\n {...mergeProps(inputProps, hoverProps)}\n ref={inputRef as any}\n rows={multiLine ? 1 : undefined}\n className={\n classNames(\n styles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': icon,\n 'is-hovered': isHovered\n },\n inputClassName\n )\n } />\n </FocusRing>\n {icon}\n {validationState && !isLoading ? validation : null}\n {isLoading && loadingIndicator}\n {wrapperChildren}\n </div>\n );\n\n return (\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n wrapperClassName={classNames(styles, 'spectrum-Textfield-wrapper')}\n showErrorIcon={false}\n ref={domRef}>\n {textField}\n </Field>\n );\n}\n\nconst _TextFieldBase = forwardRef(TextFieldBase);\nexport {_TextFieldBase as TextFieldBase};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {forwardRef, RefObject, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextField(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {\n props = useProviderProps(props);\n\n let inputRef = useRef<HTMLInputElement>();\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField(props, inputRef);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');\n }\n\n return (\n <TextFieldBase\n {...props}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n ref={ref}\n inputRef={inputRef} />\n );\n}\n\n/**\n * TextFields are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _TextField = forwardRef(TextField);\nexport {_TextField as TextField};\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/textfield/src/index.ts","packages/@react-spectrum/textfield/src/TextArea.tsx","packages/@react-spectrum/textfield/src/TextFieldBase.tsx","packages/@adobe/spectrum-css-temp/components/textfield/vars.css","packages/@react-spectrum/textfield/src/TextField.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {TextArea} from './TextArea';\nexport {TextField} from './TextField';\nexport {TextFieldBase} from './TextFieldBase';\nexport type {SpectrumTextFieldProps} from '@react-types/textfield';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {chain, useLayoutEffect} from '@react-aria/utils';\nimport React, {Ref, useCallback, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useControlledState} from '@react-stately/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextArea(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {\n props = useProviderProps(props);\n let {\n isDisabled = false,\n isQuiet = false,\n isReadOnly = false,\n isRequired = false,\n onChange,\n ...otherProps\n } = props;\n\n // not in stately because this is so we know when to re-measure, which is a spectrum design\n let [inputValue, setInputValue] = useControlledState(props.value, props.defaultValue, () => {});\n let inputRef = useRef<HTMLTextAreaElement>(null);\n\n let onHeightChange = useCallback(() => {\n // Quiet textareas always grow based on their text content.\n // Standard textareas also grow by default, unless an explicit height is set.\n if ((isQuiet || !props.height) && inputRef.current) {\n let input = inputRef.current;\n let prevAlignment = input.style.alignSelf;\n let prevOverflow = input.style.overflow;\n // Firefox scroll position is lost when overflow: 'hidden' is applied so we skip applying it.\n // The measure/applied height is also incorrect/reset if we turn on and off\n // overflow: hidden in Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n let isFirefox = 'MozAppearance' in input.style;\n if (!isFirefox) {\n input.style.overflow = 'hidden';\n }\n input.style.alignSelf = 'start';\n input.style.height = 'auto';\n // offsetHeight - clientHeight accounts for the border/padding.\n input.style.height = `${input.scrollHeight + (input.offsetHeight - input.clientHeight)}px`;\n input.style.overflow = prevOverflow;\n input.style.alignSelf = prevAlignment;\n }\n }, [isQuiet, inputRef, props.height]);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n onHeightChange();\n }\n }, [onHeightChange, inputValue, inputRef]);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextArea.html#help-text');\n }\n\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField({\n ...props,\n onChange: chain(onChange, setInputValue),\n inputElementType: 'textarea'\n }, inputRef);\n\n return (\n <TextFieldBase\n {...otherProps}\n ref={ref}\n inputRef={inputRef}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n multiLine\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n isReadOnly={isReadOnly}\n isRequired={isRequired} />\n );\n}\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter. They allow for all customizations that\n * are available to text fields.\n */\nlet _TextArea = React.forwardRef(TextArea);\nexport {_TextArea as TextArea};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, createFocusableRef} from '@react-spectrum/utils';\nimport {Field} from '@react-spectrum/label';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport {PressEvents} from '@react-types/shared';\nimport React, {cloneElement, forwardRef, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, ReactElement, Ref, RefObject, TextareaHTMLAttributes, useImperativeHandle, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport styles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useHover} from '@react-aria/interactions';\n\ninterface TextFieldBaseProps extends Omit<SpectrumTextFieldProps, 'onChange'>, PressEvents {\n wrapperChildren?: ReactElement | ReactElement[],\n inputClassName?: string,\n validationIconClassName?: string,\n multiLine?: boolean,\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>,\n inputProps: InputHTMLAttributes<HTMLInputElement> | TextareaHTMLAttributes<HTMLTextAreaElement>,\n descriptionProps?: HTMLAttributes<HTMLElement>,\n errorMessageProps?: HTMLAttributes<HTMLElement>,\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>,\n loadingIndicator?: ReactElement,\n isLoading?: boolean\n}\n\nfunction TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {\n let {\n validationState,\n icon,\n isQuiet = false,\n isDisabled,\n multiLine,\n autoFocus,\n inputClassName,\n wrapperChildren,\n labelProps,\n inputProps,\n descriptionProps,\n errorMessageProps,\n inputRef: userInputRef,\n isLoading,\n loadingIndicator,\n validationIconClassName\n } = props;\n let {hoverProps, isHovered} = useHover({isDisabled});\n let domRef = useRef<HTMLDivElement>(null);\n let defaultInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n let inputRef = userInputRef || defaultInputRef;\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef.current;\n }\n }));\n\n let ElementType: React.ElementType = multiLine ? 'textarea' : 'input';\n let isInvalid = validationState === 'invalid';\n\n if (icon) {\n let UNSAFE_className = classNames(\n styles,\n icon.props && icon.props.UNSAFE_className,\n 'spectrum-Textfield-icon'\n );\n\n icon = cloneElement(icon, {\n UNSAFE_className,\n size: 'S'\n });\n }\n\n let validationIcon = isInvalid ? <AlertMedium /> : <CheckmarkMedium />;\n let validation = cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n styles,\n 'spectrum-Textfield-validationIcon',\n validationIconClassName\n )\n });\n\n let textField = (\n <div\n className={\n classNames(\n styles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': isInvalid,\n 'spectrum-Textfield--valid': validationState === 'valid',\n 'spectrum-Textfield--loadable': loadingIndicator,\n 'spectrum-Textfield--quiet': isQuiet,\n 'spectrum-Textfield--multiline': multiLine\n }\n )\n }>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')} isTextInput autoFocus={autoFocus}>\n <ElementType\n {...mergeProps(inputProps, hoverProps)}\n ref={inputRef as any}\n rows={multiLine ? 1 : undefined}\n className={\n classNames(\n styles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': icon,\n 'is-hovered': isHovered\n },\n inputClassName\n )\n } />\n </FocusRing>\n {icon}\n {validationState && !isLoading ? validation : null}\n {isLoading && loadingIndicator}\n {wrapperChildren}\n </div>\n );\n\n return (\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n wrapperClassName={classNames(styles, 'spectrum-Textfield-wrapper')}\n showErrorIcon={false}\n ref={domRef}>\n {textField}\n </Field>\n );\n}\n\nconst _TextFieldBase = forwardRef(TextFieldBase);\nexport {_TextFieldBase as TextFieldBase};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {forwardRef, Ref, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextField(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {\n props = useProviderProps(props);\n\n let inputRef = useRef<HTMLInputElement>(null);\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField(props, inputRef);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');\n }\n\n return (\n <TextFieldBase\n {...props}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n ref={ref}\n inputRef={inputRef} />\n );\n}\n\n/**\n * TextFields are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _TextField = forwardRef(TextField);\nexport {_TextField as TextField};\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -83,13 +83,13 @@ $c14528ddc146317f$export$d35bc1e505d1ebbf = "is-disabled_73bc77";
83
83
 
84
84
 
85
85
  function $599adb75312e6492$var$TextFieldBase(props, ref) {
86
- let { validationState: validationState , icon: icon , isQuiet: isQuiet = false , isDisabled: isDisabled , multiLine: multiLine , autoFocus: autoFocus , inputClassName: inputClassName , wrapperChildren: wrapperChildren , labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps , inputRef: inputRef , isLoading: isLoading , loadingIndicator: loadingIndicator , validationIconClassName: validationIconClassName } = props;
86
+ let { validationState: validationState , icon: icon , isQuiet: isQuiet = false , isDisabled: isDisabled , multiLine: multiLine , autoFocus: autoFocus , inputClassName: inputClassName , wrapperChildren: wrapperChildren , labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps , inputRef: userInputRef , isLoading: isLoading , loadingIndicator: loadingIndicator , validationIconClassName: validationIconClassName } = props;
87
87
  let { hoverProps: hoverProps , isHovered: isHovered } = $evhxb$useHover({
88
88
  isDisabled: isDisabled
89
89
  });
90
90
  let domRef = $evhxb$useRef(null);
91
91
  let defaultInputRef = $evhxb$useRef(null);
92
- inputRef = inputRef || defaultInputRef;
92
+ let inputRef = userInputRef || defaultInputRef;
93
93
  // Expose imperative interface for ref
94
94
  $evhxb$useImperativeHandle(ref, ()=>({
95
95
  ...$evhxb$createFocusableRef(domRef, inputRef),
@@ -157,11 +157,11 @@ function $cc187bf91f8eea73$var$TextArea(props, ref) {
157
157
  // not in stately because this is so we know when to re-measure, which is a spectrum design
158
158
  let [inputValue, setInputValue] = $evhxb$useControlledState(props.value, props.defaultValue, ()=>{
159
159
  });
160
- let inputRef = $evhxb$useRef();
160
+ let inputRef = $evhxb$useRef(null);
161
161
  let onHeightChange = $evhxb$useCallback(()=>{
162
162
  // Quiet textareas always grow based on their text content.
163
163
  // Standard textareas also grow by default, unless an explicit height is set.
164
- if (isQuiet || !props.height) {
164
+ if ((isQuiet || !props.height) && inputRef.current) {
165
165
  let input = inputRef.current;
166
166
  let prevAlignment = input.style.alignSelf;
167
167
  let prevOverflow = input.style.overflow;
@@ -223,7 +223,7 @@ function $cc187bf91f8eea73$var$TextArea(props, ref) {
223
223
 
224
224
  function $265457f9427aa380$var$TextField(props, ref) {
225
225
  props = $evhxb$useProviderProps(props);
226
- let inputRef = $evhxb$useRef();
226
+ let inputRef = $evhxb$useRef(null);
227
227
  let { labelProps: labelProps , inputProps: inputProps , descriptionProps: descriptionProps , errorMessageProps: errorMessageProps } = $evhxb$useTextField(props, inputRef);
228
228
  if (props.placeholder) console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');
229
229
  return(/*#__PURE__*/ $evhxb$react.createElement($599adb75312e6492$export$d22444a338b6e3c2, {
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/textfield/src/index.ts","packages/@react-spectrum/textfield/src/TextArea.tsx","packages/@react-spectrum/textfield/src/TextFieldBase.tsx","packages/@adobe/spectrum-css-temp/components/textfield/vars.css","packages/@react-spectrum/textfield/src/TextField.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {TextArea} from './TextArea';\nexport {TextField} from './TextField';\nexport {TextFieldBase} from './TextFieldBase';\nexport type {SpectrumTextFieldProps} from '@react-types/textfield';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {chain, useLayoutEffect} from '@react-aria/utils';\nimport React, {RefObject, useCallback, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useControlledState} from '@react-stately/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextArea(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {\n props = useProviderProps(props);\n let {\n isDisabled = false,\n isQuiet = false,\n isReadOnly = false,\n isRequired = false,\n onChange,\n ...otherProps\n } = props;\n\n // not in stately because this is so we know when to re-measure, which is a spectrum design\n let [inputValue, setInputValue] = useControlledState(props.value, props.defaultValue, () => {});\n let inputRef = useRef<HTMLTextAreaElement>();\n\n let onHeightChange = useCallback(() => {\n // Quiet textareas always grow based on their text content.\n // Standard textareas also grow by default, unless an explicit height is set.\n if (isQuiet || !props.height) {\n let input = inputRef.current;\n let prevAlignment = input.style.alignSelf;\n let prevOverflow = input.style.overflow;\n // Firefox scroll position is lost when overflow: 'hidden' is applied so we skip applying it.\n // The measure/applied height is also incorrect/reset if we turn on and off\n // overflow: hidden in Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n let isFirefox = 'MozAppearance' in input.style;\n if (!isFirefox) {\n input.style.overflow = 'hidden';\n }\n input.style.alignSelf = 'start';\n input.style.height = 'auto';\n // offsetHeight - clientHeight accounts for the border/padding.\n input.style.height = `${input.scrollHeight + (input.offsetHeight - input.clientHeight)}px`;\n input.style.overflow = prevOverflow;\n input.style.alignSelf = prevAlignment;\n }\n }, [isQuiet, inputRef, props.height]);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n onHeightChange();\n }\n }, [onHeightChange, inputValue, inputRef]);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextArea.html#help-text');\n }\n\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField({\n ...props,\n onChange: chain(onChange, setInputValue),\n inputElementType: 'textarea'\n }, inputRef);\n\n return (\n <TextFieldBase\n {...otherProps}\n ref={ref}\n inputRef={inputRef}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n multiLine\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n isReadOnly={isReadOnly}\n isRequired={isRequired} />\n );\n}\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter. They allow for all customizations that\n * are available to text fields.\n */\nlet _TextArea = React.forwardRef(TextArea);\nexport {_TextArea as TextArea};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, createFocusableRef} from '@react-spectrum/utils';\nimport {Field} from '@react-spectrum/label';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport {PressEvents} from '@react-types/shared';\nimport React, {cloneElement, forwardRef, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, ReactElement, Ref, RefObject, TextareaHTMLAttributes, useImperativeHandle, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport styles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useHover} from '@react-aria/interactions';\n\ninterface TextFieldBaseProps extends Omit<SpectrumTextFieldProps, 'onChange'>, PressEvents {\n wrapperChildren?: ReactElement | ReactElement[],\n inputClassName?: string,\n validationIconClassName?: string,\n multiLine?: boolean,\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>,\n inputProps: InputHTMLAttributes<HTMLInputElement> | TextareaHTMLAttributes<HTMLTextAreaElement>,\n descriptionProps?: HTMLAttributes<HTMLElement>,\n errorMessageProps?: HTMLAttributes<HTMLElement>,\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>,\n loadingIndicator?: ReactElement,\n isLoading?: boolean\n}\n\nfunction TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {\n let {\n validationState,\n icon,\n isQuiet = false,\n isDisabled,\n multiLine,\n autoFocus,\n inputClassName,\n wrapperChildren,\n labelProps,\n inputProps,\n descriptionProps,\n errorMessageProps,\n inputRef,\n isLoading,\n loadingIndicator,\n validationIconClassName\n } = props;\n let {hoverProps, isHovered} = useHover({isDisabled});\n let domRef = useRef<HTMLDivElement>(null);\n let defaultInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n inputRef = inputRef || defaultInputRef;\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef.current;\n }\n }));\n\n let ElementType: React.ElementType = multiLine ? 'textarea' : 'input';\n let isInvalid = validationState === 'invalid';\n\n if (icon) {\n let UNSAFE_className = classNames(\n styles,\n icon.props && icon.props.UNSAFE_className,\n 'spectrum-Textfield-icon'\n );\n\n icon = cloneElement(icon, {\n UNSAFE_className,\n size: 'S'\n });\n }\n\n let validationIcon = isInvalid ? <AlertMedium /> : <CheckmarkMedium />;\n let validation = cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n styles,\n 'spectrum-Textfield-validationIcon',\n validationIconClassName\n )\n });\n\n let textField = (\n <div\n className={\n classNames(\n styles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': isInvalid,\n 'spectrum-Textfield--valid': validationState === 'valid',\n 'spectrum-Textfield--loadable': loadingIndicator,\n 'spectrum-Textfield--quiet': isQuiet,\n 'spectrum-Textfield--multiline': multiLine\n }\n )\n }>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')} isTextInput autoFocus={autoFocus}>\n <ElementType\n {...mergeProps(inputProps, hoverProps)}\n ref={inputRef as any}\n rows={multiLine ? 1 : undefined}\n className={\n classNames(\n styles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': icon,\n 'is-hovered': isHovered\n },\n inputClassName\n )\n } />\n </FocusRing>\n {icon}\n {validationState && !isLoading ? validation : null}\n {isLoading && loadingIndicator}\n {wrapperChildren}\n </div>\n );\n\n return (\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n wrapperClassName={classNames(styles, 'spectrum-Textfield-wrapper')}\n showErrorIcon={false}\n ref={domRef}>\n {textField}\n </Field>\n );\n}\n\nconst _TextFieldBase = forwardRef(TextFieldBase);\nexport {_TextFieldBase as TextFieldBase};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {forwardRef, RefObject, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextField(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {\n props = useProviderProps(props);\n\n let inputRef = useRef<HTMLInputElement>();\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField(props, inputRef);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');\n }\n\n return (\n <TextFieldBase\n {...props}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n ref={ref}\n inputRef={inputRef} />\n );\n}\n\n/**\n * TextFields are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _TextField = forwardRef(TextField);\nexport {_TextField as TextField};\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/textfield/src/index.ts","packages/@react-spectrum/textfield/src/TextArea.tsx","packages/@react-spectrum/textfield/src/TextFieldBase.tsx","packages/@adobe/spectrum-css-temp/components/textfield/vars.css","packages/@react-spectrum/textfield/src/TextField.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {TextArea} from './TextArea';\nexport {TextField} from './TextField';\nexport {TextFieldBase} from './TextFieldBase';\nexport type {SpectrumTextFieldProps} from '@react-types/textfield';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {chain, useLayoutEffect} from '@react-aria/utils';\nimport React, {Ref, useCallback, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useControlledState} from '@react-stately/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextArea(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {\n props = useProviderProps(props);\n let {\n isDisabled = false,\n isQuiet = false,\n isReadOnly = false,\n isRequired = false,\n onChange,\n ...otherProps\n } = props;\n\n // not in stately because this is so we know when to re-measure, which is a spectrum design\n let [inputValue, setInputValue] = useControlledState(props.value, props.defaultValue, () => {});\n let inputRef = useRef<HTMLTextAreaElement>(null);\n\n let onHeightChange = useCallback(() => {\n // Quiet textareas always grow based on their text content.\n // Standard textareas also grow by default, unless an explicit height is set.\n if ((isQuiet || !props.height) && inputRef.current) {\n let input = inputRef.current;\n let prevAlignment = input.style.alignSelf;\n let prevOverflow = input.style.overflow;\n // Firefox scroll position is lost when overflow: 'hidden' is applied so we skip applying it.\n // The measure/applied height is also incorrect/reset if we turn on and off\n // overflow: hidden in Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n let isFirefox = 'MozAppearance' in input.style;\n if (!isFirefox) {\n input.style.overflow = 'hidden';\n }\n input.style.alignSelf = 'start';\n input.style.height = 'auto';\n // offsetHeight - clientHeight accounts for the border/padding.\n input.style.height = `${input.scrollHeight + (input.offsetHeight - input.clientHeight)}px`;\n input.style.overflow = prevOverflow;\n input.style.alignSelf = prevAlignment;\n }\n }, [isQuiet, inputRef, props.height]);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n onHeightChange();\n }\n }, [onHeightChange, inputValue, inputRef]);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextArea.html#help-text');\n }\n\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField({\n ...props,\n onChange: chain(onChange, setInputValue),\n inputElementType: 'textarea'\n }, inputRef);\n\n return (\n <TextFieldBase\n {...otherProps}\n ref={ref}\n inputRef={inputRef}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n multiLine\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n isReadOnly={isReadOnly}\n isRequired={isRequired} />\n );\n}\n\n/**\n * TextAreas are multiline text inputs, useful for cases where users have\n * a sizable amount of text to enter. They allow for all customizations that\n * are available to text fields.\n */\nlet _TextArea = React.forwardRef(TextArea);\nexport {_TextArea as TextArea};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, createFocusableRef} from '@react-spectrum/utils';\nimport {Field} from '@react-spectrum/label';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport {PressEvents} from '@react-types/shared';\nimport React, {cloneElement, forwardRef, HTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, ReactElement, Ref, RefObject, TextareaHTMLAttributes, useImperativeHandle, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport styles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useHover} from '@react-aria/interactions';\n\ninterface TextFieldBaseProps extends Omit<SpectrumTextFieldProps, 'onChange'>, PressEvents {\n wrapperChildren?: ReactElement | ReactElement[],\n inputClassName?: string,\n validationIconClassName?: string,\n multiLine?: boolean,\n labelProps?: LabelHTMLAttributes<HTMLLabelElement>,\n inputProps: InputHTMLAttributes<HTMLInputElement> | TextareaHTMLAttributes<HTMLTextAreaElement>,\n descriptionProps?: HTMLAttributes<HTMLElement>,\n errorMessageProps?: HTMLAttributes<HTMLElement>,\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>,\n loadingIndicator?: ReactElement,\n isLoading?: boolean\n}\n\nfunction TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {\n let {\n validationState,\n icon,\n isQuiet = false,\n isDisabled,\n multiLine,\n autoFocus,\n inputClassName,\n wrapperChildren,\n labelProps,\n inputProps,\n descriptionProps,\n errorMessageProps,\n inputRef: userInputRef,\n isLoading,\n loadingIndicator,\n validationIconClassName\n } = props;\n let {hoverProps, isHovered} = useHover({isDisabled});\n let domRef = useRef<HTMLDivElement>(null);\n let defaultInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n let inputRef = userInputRef || defaultInputRef;\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef.current;\n }\n }));\n\n let ElementType: React.ElementType = multiLine ? 'textarea' : 'input';\n let isInvalid = validationState === 'invalid';\n\n if (icon) {\n let UNSAFE_className = classNames(\n styles,\n icon.props && icon.props.UNSAFE_className,\n 'spectrum-Textfield-icon'\n );\n\n icon = cloneElement(icon, {\n UNSAFE_className,\n size: 'S'\n });\n }\n\n let validationIcon = isInvalid ? <AlertMedium /> : <CheckmarkMedium />;\n let validation = cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n styles,\n 'spectrum-Textfield-validationIcon',\n validationIconClassName\n )\n });\n\n let textField = (\n <div\n className={\n classNames(\n styles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': isInvalid,\n 'spectrum-Textfield--valid': validationState === 'valid',\n 'spectrum-Textfield--loadable': loadingIndicator,\n 'spectrum-Textfield--quiet': isQuiet,\n 'spectrum-Textfield--multiline': multiLine\n }\n )\n }>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')} isTextInput autoFocus={autoFocus}>\n <ElementType\n {...mergeProps(inputProps, hoverProps)}\n ref={inputRef as any}\n rows={multiLine ? 1 : undefined}\n className={\n classNames(\n styles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': icon,\n 'is-hovered': isHovered\n },\n inputClassName\n )\n } />\n </FocusRing>\n {icon}\n {validationState && !isLoading ? validation : null}\n {isLoading && loadingIndicator}\n {wrapperChildren}\n </div>\n );\n\n return (\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n wrapperClassName={classNames(styles, 'spectrum-Textfield-wrapper')}\n showErrorIcon={false}\n ref={domRef}>\n {textField}\n </Field>\n );\n}\n\nconst _TextFieldBase = forwardRef(TextFieldBase);\nexport {_TextFieldBase as TextFieldBase};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {forwardRef, Ref, useRef} from 'react';\nimport {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';\nimport {TextFieldBase} from './TextFieldBase';\nimport {useProviderProps} from '@react-spectrum/provider';\nimport {useTextField} from '@react-aria/textfield';\n\nfunction TextField(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {\n props = useProviderProps(props);\n\n let inputRef = useRef<HTMLInputElement>(null);\n let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField(props, inputRef);\n\n if (props.placeholder) {\n console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead. See the docs for details: https://react-spectrum.adobe.com/react-spectrum/TextField.html#help-text');\n }\n\n return (\n <TextFieldBase\n {...props}\n labelProps={labelProps}\n inputProps={inputProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n ref={ref}\n inputRef={inputRef} />\n );\n}\n\n/**\n * TextFields are text inputs that allow users to input custom text entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _TextField = forwardRef(TextField);\nexport {_TextField as TextField};\n"],"names":[],"version":3,"file":"module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-spectrum/textfield",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -32,17 +32,17 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.6.2",
35
- "@react-aria/focus": "^3.8.0",
36
- "@react-aria/i18n": "^3.6.0",
37
- "@react-aria/interactions": "^3.11.0",
38
- "@react-aria/textfield": "^3.7.1",
39
- "@react-aria/utils": "^3.13.3",
40
- "@react-spectrum/label": "^3.7.1",
41
- "@react-spectrum/utils": "^3.7.3",
35
+ "@react-aria/focus": "^3.9.0",
36
+ "@react-aria/i18n": "^3.6.1",
37
+ "@react-aria/interactions": "^3.12.0",
38
+ "@react-aria/textfield": "^3.7.2",
39
+ "@react-aria/utils": "^3.14.0",
40
+ "@react-spectrum/label": "^3.8.0",
41
+ "@react-spectrum/utils": "^3.7.4",
42
42
  "@react-stately/utils": "^3.5.1",
43
- "@react-types/shared": "^3.14.1",
44
- "@react-types/textfield": "^3.5.3",
45
- "@spectrum-icons/ui": "^3.3.2"
43
+ "@react-types/shared": "^3.15.0",
44
+ "@react-types/textfield": "^3.6.0",
45
+ "@spectrum-icons/ui": "^3.3.3"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@adobe/spectrum-css-temp": "3.0.0-alpha.1",
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  },
58
- "gitHead": "b03ef51e6317547dd0a840f151e59d039b1e1fd3"
58
+ "gitHead": "9202ef59e8c104dd06ffe33148445ef7932a5d1b"
59
59
  }
package/src/TextArea.tsx CHANGED
@@ -11,14 +11,14 @@
11
11
  */
12
12
 
13
13
  import {chain, useLayoutEffect} from '@react-aria/utils';
14
- import React, {RefObject, useCallback, useRef} from 'react';
14
+ import React, {Ref, useCallback, useRef} from 'react';
15
15
  import {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';
16
16
  import {TextFieldBase} from './TextFieldBase';
17
17
  import {useControlledState} from '@react-stately/utils';
18
18
  import {useProviderProps} from '@react-spectrum/provider';
19
19
  import {useTextField} from '@react-aria/textfield';
20
20
 
21
- function TextArea(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {
21
+ function TextArea(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {
22
22
  props = useProviderProps(props);
23
23
  let {
24
24
  isDisabled = false,
@@ -31,12 +31,12 @@ function TextArea(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {
31
31
 
32
32
  // not in stately because this is so we know when to re-measure, which is a spectrum design
33
33
  let [inputValue, setInputValue] = useControlledState(props.value, props.defaultValue, () => {});
34
- let inputRef = useRef<HTMLTextAreaElement>();
34
+ let inputRef = useRef<HTMLTextAreaElement>(null);
35
35
 
36
36
  let onHeightChange = useCallback(() => {
37
37
  // Quiet textareas always grow based on their text content.
38
38
  // Standard textareas also grow by default, unless an explicit height is set.
39
- if (isQuiet || !props.height) {
39
+ if ((isQuiet || !props.height) && inputRef.current) {
40
40
  let input = inputRef.current;
41
41
  let prevAlignment = input.style.alignSelf;
42
42
  let prevOverflow = input.style.overflow;
package/src/TextField.tsx CHANGED
@@ -10,16 +10,16 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import React, {forwardRef, RefObject, useRef} from 'react';
13
+ import React, {forwardRef, Ref, useRef} from 'react';
14
14
  import {SpectrumTextFieldProps, TextFieldRef} from '@react-types/textfield';
15
15
  import {TextFieldBase} from './TextFieldBase';
16
16
  import {useProviderProps} from '@react-spectrum/provider';
17
17
  import {useTextField} from '@react-aria/textfield';
18
18
 
19
- function TextField(props: SpectrumTextFieldProps, ref: RefObject<TextFieldRef>) {
19
+ function TextField(props: SpectrumTextFieldProps, ref: Ref<TextFieldRef>) {
20
20
  props = useProviderProps(props);
21
21
 
22
- let inputRef = useRef<HTMLInputElement>();
22
+ let inputRef = useRef<HTMLInputElement>(null);
23
23
  let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField(props, inputRef);
24
24
 
25
25
  if (props.placeholder) {
@@ -50,7 +50,7 @@ function TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {
50
50
  inputProps,
51
51
  descriptionProps,
52
52
  errorMessageProps,
53
- inputRef,
53
+ inputRef: userInputRef,
54
54
  isLoading,
55
55
  loadingIndicator,
56
56
  validationIconClassName
@@ -58,7 +58,7 @@ function TextFieldBase(props: TextFieldBaseProps, ref: Ref<TextFieldRef>) {
58
58
  let {hoverProps, isHovered} = useHover({isDisabled});
59
59
  let domRef = useRef<HTMLDivElement>(null);
60
60
  let defaultInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);
61
- inputRef = inputRef || defaultInputRef;
61
+ let inputRef = userInputRef || defaultInputRef;
62
62
 
63
63
  // Expose imperative interface for ref
64
64
  useImperativeHandle(ref, () => ({