@openedx/paragon 22.3.1 → 22.3.2

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.
@@ -151,8 +151,8 @@ SearchFieldAdvanced.propTypes = {
151
151
  value: PropTypes.string,
152
152
  /** specifies the icon element(s) to use for the clear and submit buttons. */
153
153
  icons: PropTypes.shape({
154
- submit: PropTypes.element.isRequired,
155
- clear: PropTypes.element
154
+ submit: PropTypes.elementType.isRequired,
155
+ clear: PropTypes.elementType
156
156
  }),
157
157
  /** specifies the aria-label attribute on the form element. This is useful if you use the `SearchField` component
158
158
  * more than once on a page. */
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFieldAdvanced.js","names":["React","useRef","createContext","useState","useEffect","PropTypes","classNames","Search","Close","newId","SearchFieldContext","BUTTON_LOCATION_VARIANTS","SearchFieldAdvanced","props","children","className","screenReaderText","icons","onSubmit","onClear","onChange","onBlur","onFocus","initialValue","value","formAriaLabel","disabled","submitButtonLocation","rest","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","hasFocus","setHasFocus","_useState3","_useState4","setValue","isInitialMount","inputId","concat","inputRef","submitButtonRef","current","handleSubmit","event","preventDefault","focus","handleClear","handleFocus","handleBlur","handleChange","target","createElement","_extends","role","onReset","Provider","refs","input","submitButton","propTypes","node","isRequired","func","string","shape","label","oneOfType","element","clearButton","submit","clear","bool","oneOf","defaultProps","undefined"],"sources":["../../src/SearchField/SearchFieldAdvanced.jsx"],"sourcesContent":["import React, {\n useRef, createContext, useState, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Search, Close } from '../../icons';\nimport newId from '../utils/newId';\n\nexport const SearchFieldContext = createContext();\n\nconst BUTTON_LOCATION_VARIANTS = [\n 'internal',\n 'external',\n];\n\nfunction SearchFieldAdvanced(props) {\n const {\n children,\n className,\n screenReaderText,\n icons,\n onSubmit,\n onClear,\n onChange,\n onBlur,\n onFocus,\n value: initialValue,\n formAriaLabel,\n disabled,\n submitButtonLocation,\n ...rest\n } = props;\n\n const [hasFocus, setHasFocus] = useState(false);\n const [value, setValue] = useState(initialValue);\n\n const isInitialMount = useRef(true);\n const inputId = useRef(`${newId('pgn-searchfield-input-')}`);\n const inputRef = useRef();\n const submitButtonRef = useRef();\n\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else {\n onChange(value);\n }\n }, [value, onChange]);\n\n const handleSubmit = (event) => {\n event.preventDefault();\n onSubmit(value);\n if (submitButtonRef && submitButtonRef.current) {\n submitButtonRef.current.focus();\n }\n };\n\n const handleClear = () => {\n setValue('');\n onClear();\n if (inputRef && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const handleFocus = (event) => {\n setHasFocus(true);\n onFocus(event);\n };\n\n const handleBlur = (event) => {\n setHasFocus(false);\n onBlur(event);\n };\n\n const handleChange = (event) => {\n setValue(event.target.value);\n };\n\n return (\n <div\n className={classNames(\n 'pgn__searchfield',\n 'd-flex',\n {\n 'has-focus': hasFocus,\n disabled,\n 'pgn__searchfield--external': submitButtonLocation === 'external',\n },\n className,\n )}\n {...rest}\n >\n <form\n role=\"search\"\n onSubmit={handleSubmit}\n onReset={handleClear}\n className=\"pgn__searchfield-form\"\n aria-label={formAriaLabel}\n >\n <SearchFieldContext.Provider\n value={{\n inputId,\n screenReaderText,\n icons,\n value,\n disabled,\n handleFocus,\n handleBlur,\n handleChange,\n refs: {\n input: inputRef,\n submitButton: submitButtonRef,\n },\n }}\n >\n {children}\n </SearchFieldContext.Provider>\n </form>\n </div>\n );\n}\n\nSearchFieldAdvanced.propTypes = {\n /** specifies the nested child elements. At a minimum, `SearchField.Label` and `SearchField.Input` are required. */\n children: PropTypes.node.isRequired,\n /** specifies a callback function for when the `SearchField` is submitted by the user. For example:\n ```jsx\n <SearchField onSubmit={(value) => { console.log(value); } />\n ``` */\n onSubmit: PropTypes.func.isRequired,\n /** specifies a custom class name. */\n className: PropTypes.string,\n /** specifies a callback function for when the user loses focus in the `SearchField` component.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onBlur={event => console.log(event)} />\n ``` */\n onBlur: PropTypes.func,\n /** specifies a callback function for when the value in `SearchField` is changed by the user.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onChange={value => console.log(value)} />\n ``` */\n onChange: PropTypes.func,\n /** specifies a callback function for when the value in `SearchField` is cleared by the user.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onClear={() => console.log('search cleared')} />\n ``` */\n onClear: PropTypes.func,\n /** specifies a callback function for when the user focuses in the `SearchField` component.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onFocus={event => console.log(event)} />\n ``` */\n onFocus: PropTypes.func,\n /** specifies the screenreader text for both the clear and submit buttons (e.g., for i18n translations).\n * The default is `{ label: 'search', clearButton: 'clear search', searchButton: 'submit search' }`. */\n screenReaderText: PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n submitButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n clearButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n }),\n /** specifies the initial value for the input. The default is an empty string. */\n value: PropTypes.string,\n /** specifies the icon element(s) to use for the clear and submit buttons. */\n icons: PropTypes.shape({\n submit: PropTypes.element.isRequired,\n clear: PropTypes.element,\n }),\n /** specifies the aria-label attribute on the form element. This is useful if you use the `SearchField` component\n * more than once on a page. */\n formAriaLabel: PropTypes.string,\n /** Specifies whether the `SearchField` is disabled. */\n disabled: PropTypes.bool,\n /** Controls whether the search button is internal as an icon or external as a button. */\n submitButtonLocation: PropTypes.oneOf(BUTTON_LOCATION_VARIANTS),\n};\n\nSearchFieldAdvanced.defaultProps = {\n className: undefined,\n formAriaLabel: undefined,\n value: '',\n screenReaderText: {\n label: 'search',\n submitButton: 'submit search',\n clearButton: 'clear search',\n },\n icons: {\n clear: Close,\n submit: Search,\n },\n onBlur: () => {},\n onChange: () => {},\n onFocus: () => {},\n onClear: () => {},\n disabled: false,\n submitButtonLocation: 'internal',\n};\n\nexport default SearchFieldAdvanced;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchFieldAdvanced.js","names":["React","useRef","createContext","useState","useEffect","PropTypes","classNames","Search","Close","newId","SearchFieldContext","BUTTON_LOCATION_VARIANTS","SearchFieldAdvanced","props","children","className","screenReaderText","icons","onSubmit","onClear","onChange","onBlur","onFocus","initialValue","value","formAriaLabel","disabled","submitButtonLocation","rest","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","hasFocus","setHasFocus","_useState3","_useState4","setValue","isInitialMount","inputId","concat","inputRef","submitButtonRef","current","handleSubmit","event","preventDefault","focus","handleClear","handleFocus","handleBlur","handleChange","target","createElement","_extends","role","onReset","Provider","refs","input","submitButton","propTypes","node","isRequired","func","string","shape","label","oneOfType","element","clearButton","submit","elementType","clear","bool","oneOf","defaultProps","undefined"],"sources":["../../src/SearchField/SearchFieldAdvanced.jsx"],"sourcesContent":["import React, {\n useRef, createContext, useState, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Search, Close } from '../../icons';\nimport newId from '../utils/newId';\n\nexport const SearchFieldContext = createContext();\n\nconst BUTTON_LOCATION_VARIANTS = [\n 'internal',\n 'external',\n];\n\nfunction SearchFieldAdvanced(props) {\n const {\n children,\n className,\n screenReaderText,\n icons,\n onSubmit,\n onClear,\n onChange,\n onBlur,\n onFocus,\n value: initialValue,\n formAriaLabel,\n disabled,\n submitButtonLocation,\n ...rest\n } = props;\n\n const [hasFocus, setHasFocus] = useState(false);\n const [value, setValue] = useState(initialValue);\n\n const isInitialMount = useRef(true);\n const inputId = useRef(`${newId('pgn-searchfield-input-')}`);\n const inputRef = useRef();\n const submitButtonRef = useRef();\n\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else {\n onChange(value);\n }\n }, [value, onChange]);\n\n const handleSubmit = (event) => {\n event.preventDefault();\n onSubmit(value);\n if (submitButtonRef && submitButtonRef.current) {\n submitButtonRef.current.focus();\n }\n };\n\n const handleClear = () => {\n setValue('');\n onClear();\n if (inputRef && inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n const handleFocus = (event) => {\n setHasFocus(true);\n onFocus(event);\n };\n\n const handleBlur = (event) => {\n setHasFocus(false);\n onBlur(event);\n };\n\n const handleChange = (event) => {\n setValue(event.target.value);\n };\n\n return (\n <div\n className={classNames(\n 'pgn__searchfield',\n 'd-flex',\n {\n 'has-focus': hasFocus,\n disabled,\n 'pgn__searchfield--external': submitButtonLocation === 'external',\n },\n className,\n )}\n {...rest}\n >\n <form\n role=\"search\"\n onSubmit={handleSubmit}\n onReset={handleClear}\n className=\"pgn__searchfield-form\"\n aria-label={formAriaLabel}\n >\n <SearchFieldContext.Provider\n value={{\n inputId,\n screenReaderText,\n icons,\n value,\n disabled,\n handleFocus,\n handleBlur,\n handleChange,\n refs: {\n input: inputRef,\n submitButton: submitButtonRef,\n },\n }}\n >\n {children}\n </SearchFieldContext.Provider>\n </form>\n </div>\n );\n}\n\nSearchFieldAdvanced.propTypes = {\n /** specifies the nested child elements. At a minimum, `SearchField.Label` and `SearchField.Input` are required. */\n children: PropTypes.node.isRequired,\n /** specifies a callback function for when the `SearchField` is submitted by the user. For example:\n ```jsx\n <SearchField onSubmit={(value) => { console.log(value); } />\n ``` */\n onSubmit: PropTypes.func.isRequired,\n /** specifies a custom class name. */\n className: PropTypes.string,\n /** specifies a callback function for when the user loses focus in the `SearchField` component.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onBlur={event => console.log(event)} />\n ``` */\n onBlur: PropTypes.func,\n /** specifies a callback function for when the value in `SearchField` is changed by the user.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onChange={value => console.log(value)} />\n ``` */\n onChange: PropTypes.func,\n /** specifies a callback function for when the value in `SearchField` is cleared by the user.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onClear={() => console.log('search cleared')} />\n ``` */\n onClear: PropTypes.func,\n /** specifies a callback function for when the user focuses in the `SearchField` component.\n * The default is an empty function. For example:\n ```jsx\n <SearchField onFocus={event => console.log(event)} />\n ``` */\n onFocus: PropTypes.func,\n /** specifies the screenreader text for both the clear and submit buttons (e.g., for i18n translations).\n * The default is `{ label: 'search', clearButton: 'clear search', searchButton: 'submit search' }`. */\n screenReaderText: PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n submitButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n clearButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n }),\n /** specifies the initial value for the input. The default is an empty string. */\n value: PropTypes.string,\n /** specifies the icon element(s) to use for the clear and submit buttons. */\n icons: PropTypes.shape({\n submit: PropTypes.elementType.isRequired,\n clear: PropTypes.elementType,\n }),\n /** specifies the aria-label attribute on the form element. This is useful if you use the `SearchField` component\n * more than once on a page. */\n formAriaLabel: PropTypes.string,\n /** Specifies whether the `SearchField` is disabled. */\n disabled: PropTypes.bool,\n /** Controls whether the search button is internal as an icon or external as a button. */\n submitButtonLocation: PropTypes.oneOf(BUTTON_LOCATION_VARIANTS),\n};\n\nSearchFieldAdvanced.defaultProps = {\n className: undefined,\n formAriaLabel: undefined,\n value: '',\n screenReaderText: {\n label: 'search',\n submitButton: 'submit search',\n clearButton: 'clear search',\n },\n icons: {\n clear: Close,\n submit: Search,\n },\n onBlur: () => {},\n onChange: () => {},\n onFocus: () => {},\n onClear: () => {},\n disabled: false,\n submitButtonLocation: 'internal',\n};\n\nexport default SearchFieldAdvanced;\n"],"mappings":"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"}
@@ -114,8 +114,8 @@ SearchField.propTypes = {
114
114
  * ```
115
115
  */
116
116
  icons: PropTypes.shape({
117
- submit: PropTypes.element.isRequired,
118
- clear: PropTypes.element
117
+ submit: PropTypes.elementType.isRequired,
118
+ clear: PropTypes.elementType
119
119
  }),
120
120
  /**
121
121
  * Specifies the aria-label attribute on the form element.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","PropTypes","Search","Close","SearchFieldAdvanced","SearchFieldContext","SearchFieldLabel","SearchFieldInput","SearchFieldClearButton","SearchFieldSubmitButton","SEARCH_FIELD_SCREEN_READER_TEXT_LABEL","SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON","SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON","SEARCH_FIELD_BUTTON_TEXT","STYLE_VARIANTS","BUTTON_LOCATION_VARIANTS","SearchField","props","label","placeholder","inputProps","variant","submitButtonLocation","buttonText","others","_objectWithoutProperties","_excluded","Wrapper","wrapperProps","createElement","className","children","Advanced","_extends","Label","Input","ClearButton","SubmitButton","propTypes","onSubmit","func","isRequired","oneOfType","string","element","onBlur","onChange","onClear","onFocus","screenReaderText","shape","submitButton","clearButton","value","icons","submit","clear","formAriaLabel","oneOf","disabled","bool","defaultProps","undefined","Context"],"sources":["../../src/SearchField/index.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Search, Close } from '../../icons';\nimport SearchFieldAdvanced, { SearchFieldContext } from './SearchFieldAdvanced';\nimport SearchFieldLabel from './SearchFieldLabel';\nimport SearchFieldInput from './SearchFieldInput';\nimport SearchFieldClearButton from './SearchFieldClearButton';\nimport SearchFieldSubmitButton from './SearchFieldSubmitButton';\n\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_LABEL = 'search';\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON = 'submit search';\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON = 'clear search';\nexport const SEARCH_FIELD_BUTTON_TEXT = 'search';\n\nconst STYLE_VARIANTS = [\n 'light',\n 'dark',\n];\n\nconst BUTTON_LOCATION_VARIANTS = [\n 'internal',\n 'external',\n];\n\nfunction SearchField(props) {\n const {\n label,\n placeholder,\n inputProps,\n variant,\n submitButtonLocation,\n buttonText,\n ...others\n } = props;\n\n const Wrapper = useCallback(\n (wrapperProps) => (submitButtonLocation === 'external'\n ? <div className=\"pgn__searchfield_wrapper\">{wrapperProps.children}</div>\n : wrapperProps.children),\n [submitButtonLocation],\n );\n\n return (\n <SearchField.Advanced {...others} submitButtonLocation={submitButtonLocation}>\n <Wrapper>\n <SearchField.Label>{label}</SearchField.Label>\n <SearchField.Input placeholder={placeholder} {...inputProps} />\n <SearchField.ClearButton />\n </Wrapper>\n <SearchField.SubmitButton\n variant={variant}\n submitButtonLocation={submitButtonLocation}\n buttonText={buttonText}\n />\n </SearchField.Advanced>\n );\n}\n\nSearchField.propTypes = {\n /**\n * Specifies a callback function for when the `SearchField` is submitted by the user. For example:\n *\n *```jsx\n * <SearchField onSubmit={(value) => { console.log(value); } />\n * ```\n */\n onSubmit: PropTypes.func.isRequired,\n /** Specifies the label to use for the input field (e.g., for i18n translations). */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n /** Specifies a custom class name. */\n className: PropTypes.string,\n /**\n * Specifies a callback function for when the user loses focus in the\n * `SearchField` component. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onBlur={event => console.log(event)} />\n * ```\n */\n onBlur: PropTypes.func,\n /**\n * Specifies a callback function for when the value in `SearchField`\n * is changed by the user. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onChange={value => console.log(value)} />\n * ```\n */\n onChange: PropTypes.func,\n /**\n * Specifies a callback function for when the value in `SearchField`\n * is cleared by the user. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onClear={() => console.log('search cleared')} />\n * ```\n */\n onClear: PropTypes.func,\n /**\n * Specifies a callback function for when the user focuses in the `SearchField`\n * component. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onFocus={event => console.log(event)} />\n * ```\n */\n onFocus: PropTypes.func,\n /** Specifies the placeholder text for the input. */\n placeholder: PropTypes.string,\n /**\n * Specifies the screenreader text for both the clear and submit buttons\n * (e.g., for i18n translations). The default is `{ label: 'search',\n * clearButton: 'clear search', searchButton: 'submit search' }`.\n */\n screenReaderText: PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n submitButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n clearButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n }),\n /** Specifies the initial value for the input. The default is an empty string. */\n value: PropTypes.string,\n /**\n * Specifies the icon element(s) to use for the clear and submit buttons.\n * The default is:\n *\n * ```jsx\n * {\n * submit: import {Search} from '@openedx/paragon/icons';,\n * clear: import {Close} from '@openedx/paragon/icons'.\n * }\n * ```\n */\n icons: PropTypes.shape({\n submit: PropTypes.element.isRequired,\n clear: PropTypes.element,\n }),\n /**\n * Specifies the aria-label attribute on the form element.\n * This is useful if you use the `SearchField` component more than once on a page.\n */\n formAriaLabel: PropTypes.string,\n /** Props to be passed to the form input */\n inputProps: PropTypes.shape({}),\n /** The button style variant to use. */\n variant: PropTypes.oneOf(STYLE_VARIANTS),\n /** Specifies whether the `SearchField` is disabled. */\n disabled: PropTypes.bool,\n /** Controls whether the search button is internal as an icon or external as a button. */\n submitButtonLocation: PropTypes.oneOf(BUTTON_LOCATION_VARIANTS),\n /**\n * Specifies a text that is displayed on the button.\n * The `submitButtonLocation` prop should be set to `external`.\n */\n buttonText: PropTypes.string,\n};\n\nSearchField.defaultProps = {\n label: undefined,\n placeholder: undefined,\n className: undefined,\n formAriaLabel: undefined,\n value: '',\n screenReaderText: {\n label: SEARCH_FIELD_SCREEN_READER_TEXT_LABEL,\n submitButton: SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON,\n clearButton: SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON,\n },\n icons: {\n clear: Close,\n submit: Search,\n },\n onBlur: () => {},\n onChange: () => {},\n onFocus: () => {},\n onClear: () => {},\n inputProps: {},\n variant: 'light',\n disabled: false,\n submitButtonLocation: 'internal',\n buttonText: SEARCH_FIELD_BUTTON_TEXT,\n};\n\nSearchField.Advanced = SearchFieldAdvanced;\nSearchField.Label = SearchFieldLabel;\nSearchField.Input = SearchFieldInput;\nSearchField.ClearButton = SearchFieldClearButton;\nSearchField.SubmitButton = SearchFieldSubmitButton;\nSearchField.Context = SearchFieldContext;\n\nexport default SearchField;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","PropTypes","Search","Close","SearchFieldAdvanced","SearchFieldContext","SearchFieldLabel","SearchFieldInput","SearchFieldClearButton","SearchFieldSubmitButton","SEARCH_FIELD_SCREEN_READER_TEXT_LABEL","SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON","SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON","SEARCH_FIELD_BUTTON_TEXT","STYLE_VARIANTS","BUTTON_LOCATION_VARIANTS","SearchField","props","label","placeholder","inputProps","variant","submitButtonLocation","buttonText","others","_objectWithoutProperties","_excluded","Wrapper","wrapperProps","createElement","className","children","Advanced","_extends","Label","Input","ClearButton","SubmitButton","propTypes","onSubmit","func","isRequired","oneOfType","string","element","onBlur","onChange","onClear","onFocus","screenReaderText","shape","submitButton","clearButton","value","icons","submit","elementType","clear","formAriaLabel","oneOf","disabled","bool","defaultProps","undefined","Context"],"sources":["../../src/SearchField/index.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Search, Close } from '../../icons';\nimport SearchFieldAdvanced, { SearchFieldContext } from './SearchFieldAdvanced';\nimport SearchFieldLabel from './SearchFieldLabel';\nimport SearchFieldInput from './SearchFieldInput';\nimport SearchFieldClearButton from './SearchFieldClearButton';\nimport SearchFieldSubmitButton from './SearchFieldSubmitButton';\n\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_LABEL = 'search';\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON = 'submit search';\nexport const SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON = 'clear search';\nexport const SEARCH_FIELD_BUTTON_TEXT = 'search';\n\nconst STYLE_VARIANTS = [\n 'light',\n 'dark',\n];\n\nconst BUTTON_LOCATION_VARIANTS = [\n 'internal',\n 'external',\n];\n\nfunction SearchField(props) {\n const {\n label,\n placeholder,\n inputProps,\n variant,\n submitButtonLocation,\n buttonText,\n ...others\n } = props;\n\n const Wrapper = useCallback(\n (wrapperProps) => (submitButtonLocation === 'external'\n ? <div className=\"pgn__searchfield_wrapper\">{wrapperProps.children}</div>\n : wrapperProps.children),\n [submitButtonLocation],\n );\n\n return (\n <SearchField.Advanced {...others} submitButtonLocation={submitButtonLocation}>\n <Wrapper>\n <SearchField.Label>{label}</SearchField.Label>\n <SearchField.Input placeholder={placeholder} {...inputProps} />\n <SearchField.ClearButton />\n </Wrapper>\n <SearchField.SubmitButton\n variant={variant}\n submitButtonLocation={submitButtonLocation}\n buttonText={buttonText}\n />\n </SearchField.Advanced>\n );\n}\n\nSearchField.propTypes = {\n /**\n * Specifies a callback function for when the `SearchField` is submitted by the user. For example:\n *\n *```jsx\n * <SearchField onSubmit={(value) => { console.log(value); } />\n * ```\n */\n onSubmit: PropTypes.func.isRequired,\n /** Specifies the label to use for the input field (e.g., for i18n translations). */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n /** Specifies a custom class name. */\n className: PropTypes.string,\n /**\n * Specifies a callback function for when the user loses focus in the\n * `SearchField` component. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onBlur={event => console.log(event)} />\n * ```\n */\n onBlur: PropTypes.func,\n /**\n * Specifies a callback function for when the value in `SearchField`\n * is changed by the user. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onChange={value => console.log(value)} />\n * ```\n */\n onChange: PropTypes.func,\n /**\n * Specifies a callback function for when the value in `SearchField`\n * is cleared by the user. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onClear={() => console.log('search cleared')} />\n * ```\n */\n onClear: PropTypes.func,\n /**\n * Specifies a callback function for when the user focuses in the `SearchField`\n * component. The default is an empty function. For example:\n *\n * ```jsx\n * <SearchField onFocus={event => console.log(event)} />\n * ```\n */\n onFocus: PropTypes.func,\n /** Specifies the placeholder text for the input. */\n placeholder: PropTypes.string,\n /**\n * Specifies the screenreader text for both the clear and submit buttons\n * (e.g., for i18n translations). The default is `{ label: 'search',\n * clearButton: 'clear search', searchButton: 'submit search' }`.\n */\n screenReaderText: PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n submitButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n clearButton: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n }),\n /** Specifies the initial value for the input. The default is an empty string. */\n value: PropTypes.string,\n /**\n * Specifies the icon element(s) to use for the clear and submit buttons.\n * The default is:\n *\n * ```jsx\n * {\n * submit: import {Search} from '@openedx/paragon/icons';,\n * clear: import {Close} from '@openedx/paragon/icons'.\n * }\n * ```\n */\n icons: PropTypes.shape({\n submit: PropTypes.elementType.isRequired,\n clear: PropTypes.elementType,\n }),\n /**\n * Specifies the aria-label attribute on the form element.\n * This is useful if you use the `SearchField` component more than once on a page.\n */\n formAriaLabel: PropTypes.string,\n /** Props to be passed to the form input */\n inputProps: PropTypes.shape({}),\n /** The button style variant to use. */\n variant: PropTypes.oneOf(STYLE_VARIANTS),\n /** Specifies whether the `SearchField` is disabled. */\n disabled: PropTypes.bool,\n /** Controls whether the search button is internal as an icon or external as a button. */\n submitButtonLocation: PropTypes.oneOf(BUTTON_LOCATION_VARIANTS),\n /**\n * Specifies a text that is displayed on the button.\n * The `submitButtonLocation` prop should be set to `external`.\n */\n buttonText: PropTypes.string,\n};\n\nSearchField.defaultProps = {\n label: undefined,\n placeholder: undefined,\n className: undefined,\n formAriaLabel: undefined,\n value: '',\n screenReaderText: {\n label: SEARCH_FIELD_SCREEN_READER_TEXT_LABEL,\n submitButton: SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON,\n clearButton: SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON,\n },\n icons: {\n clear: Close,\n submit: Search,\n },\n onBlur: () => {},\n onChange: () => {},\n onFocus: () => {},\n onClear: () => {},\n inputProps: {},\n variant: 'light',\n disabled: false,\n submitButtonLocation: 'internal',\n buttonText: SEARCH_FIELD_BUTTON_TEXT,\n};\n\nSearchField.Advanced = SearchFieldAdvanced;\nSearchField.Label = SearchFieldLabel;\nSearchField.Input = SearchFieldInput;\nSearchField.ClearButton = SearchFieldClearButton;\nSearchField.SubmitButton = SearchFieldSubmitButton;\nSearchField.Context = SearchFieldContext;\n\nexport default SearchField;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/paragon",
3
- "version": "22.3.1",
3
+ "version": "22.3.2",
4
4
  "description": "Accessible, responsive UI component library based on Bootstrap.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -170,8 +170,8 @@ SearchFieldAdvanced.propTypes = {
170
170
  value: PropTypes.string,
171
171
  /** specifies the icon element(s) to use for the clear and submit buttons. */
172
172
  icons: PropTypes.shape({
173
- submit: PropTypes.element.isRequired,
174
- clear: PropTypes.element,
173
+ submit: PropTypes.elementType.isRequired,
174
+ clear: PropTypes.elementType,
175
175
  }),
176
176
  /** specifies the aria-label attribute on the form element. This is useful if you use the `SearchField` component
177
177
  * more than once on a page. */
@@ -132,8 +132,8 @@ SearchField.propTypes = {
132
132
  * ```
133
133
  */
134
134
  icons: PropTypes.shape({
135
- submit: PropTypes.element.isRequired,
136
- clear: PropTypes.element,
135
+ submit: PropTypes.elementType.isRequired,
136
+ clear: PropTypes.elementType,
137
137
  }),
138
138
  /**
139
139
  * Specifies the aria-label attribute on the form element.