@openedx/paragon 22.11.1 → 22.12.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.
Files changed (53) hide show
  1. package/README.md +8 -0
  2. package/dist/Card/CardFallbackDefaultImage.js +1 -0
  3. package/dist/Card/CardImageCap.js +1 -1
  4. package/dist/Card/CardImageCap.js.map +1 -1
  5. package/dist/Form/FormGroup.d.ts +41 -0
  6. package/dist/Form/FormGroup.js +3 -11
  7. package/dist/Form/FormGroup.js.map +1 -1
  8. package/dist/Form/FormGroupContext.d.ts +24 -0
  9. package/dist/Form/FormGroupContext.js +2 -17
  10. package/dist/Form/FormGroupContext.js.map +1 -1
  11. package/dist/Form/FormLabel.d.ts +20 -0
  12. package/dist/Form/FormLabel.js +2 -10
  13. package/dist/Form/FormLabel.js.map +1 -1
  14. package/dist/Form/constants.d.ts +13 -0
  15. package/dist/Form/constants.js +5 -8
  16. package/dist/Form/constants.js.map +1 -0
  17. package/dist/Form/fieldUtils.d.ts +9 -0
  18. package/dist/Form/fieldUtils.js +27 -29
  19. package/dist/Form/fieldUtils.js.map +1 -0
  20. package/dist/Form/index.d.ts +39 -0
  21. package/dist/Form/index.js +18 -1
  22. package/dist/Form/index.js.map +1 -1
  23. package/dist/Form/messages.d.ts +13 -0
  24. package/dist/Form/messages.js +4 -5
  25. package/dist/Form/messages.js.map +1 -0
  26. package/dist/IconButton/index.js +1 -1
  27. package/dist/IconButton/index.js.map +1 -1
  28. package/dist/index.d.ts +22 -22
  29. package/dist/index.js +22 -22
  30. package/dist/utils/index.d.ts +1 -0
  31. package/dist/utils/index.js +1 -0
  32. package/dist/utils/index.js.map +1 -0
  33. package/dist/utils/newId.d.ts +2 -0
  34. package/dist/utils/newId.js +3 -3
  35. package/dist/utils/newId.js.map +1 -0
  36. package/package.json +1 -1
  37. package/src/Card/CardFallbackDefaultImage.js +1 -0
  38. package/src/Card/CardImageCap.jsx +1 -1
  39. package/src/Card/tests/CardImageCap.test.jsx +3 -3
  40. package/src/Form/{FormGroup.jsx → FormGroup.tsx} +24 -14
  41. package/src/Form/{FormGroupContext.jsx → FormGroupContext.tsx} +29 -27
  42. package/src/Form/{FormLabel.jsx → FormLabel.tsx} +8 -11
  43. package/src/Form/{constants.js → constants.ts} +4 -7
  44. package/src/Form/{fieldUtils.js → fieldUtils.ts} +14 -11
  45. package/src/Form/{index.jsx → index.tsx} +33 -1
  46. package/src/IconButton/index.tsx +1 -1
  47. package/src/index.d.ts +22 -22
  48. package/src/index.js +22 -22
  49. package/dist/Card/fallback-default.png +0 -0
  50. package/src/Card/fallback-default.png +0 -0
  51. /package/src/Form/{messages.js → messages.ts} +0 -0
  52. /package/src/utils/{index.js → index.ts} +0 -0
  53. /package/src/utils/{newId.js → newId.ts} +0 -0
package/README.md CHANGED
@@ -123,6 +123,14 @@ Note that if you are using ``@edx/frontend-platform``'s ``AppProvider`` componen
123
123
 
124
124
  ## Contributing
125
125
 
126
+ The branch to target with your PR depends on the type of change you are contributing to Paragon.
127
+
128
+ | Branch to Target | Type of Change | Documentation Site |
129
+ | - | - | - |
130
+ | [`release-22.x`](https://github.com/openedx/paragon/tree/release-22.x) | Bug fix/security patch | https://paragon-openedx-v22.netlify.app/ |
131
+ | [`release-23.x`](https://github.com/openedx/paragon/tree/release-23.x) | Bug fix/security patch/new (non-breaking) feature | https://paragon-openedx-v23.netlify.app/ |
132
+ | [`next`](https://github.com/openedx/paragon/tree/next) | Breaking change | https://paragon-openedx.netlify.app/ |
133
+
126
134
  Please refer to the ["How to Contribute"](https://openedx.org/r/how-to-contribute) documentation and [Code of Conduct](https://openedx.org/code-of-conduct/) from Open edX.
127
135
 
128
136
  The Paragon Working Group accepts bug fixes, new features, documentation, and security patches. You may find open issues [here](https://github.com/openedx/paragon/issues) or by visiting the Paragon Working Group [project board](https://github.com/orgs/openedx/projects/43/views/15).
@@ -0,0 +1 @@
1
+ export const cardSrcFallbackImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAACMCAYAAAB/AhJnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH6SURBVHgB7dRBEYBADACxwuDf5j0QUXywiYhc7zk7APzd3gNAgvABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIoQPECF8gAjhA0QIHyBC+AARwgeIED5AhPABIp4BaNpp2Q/3/wfPkGyXOQAAAABJRU5ErkJggg==';
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
  import Skeleton from 'react-loading-skeleton';
5
5
  import CardContext from './CardContext';
6
- import cardSrcFallbackImg from './fallback-default.png';
6
+ import { cardSrcFallbackImg } from './CardFallbackDefaultImage';
7
7
  const SKELETON_HEIGHT_VALUE = 140;
8
8
  const LOGO_SKELETON_HEIGHT_VALUE = 41;
9
9
  const CardImageCap = /*#__PURE__*/React.forwardRef((_ref, ref) => {
@@ -1 +1 @@
1
- {"version":3,"file":"CardImageCap.js","names":["React","useContext","useState","PropTypes","classNames","Skeleton","CardContext","cardSrcFallbackImg","SKELETON_HEIGHT_VALUE","LOGO_SKELETON_HEIGHT_VALUE","CardImageCap","forwardRef","_ref","ref","src","fallbackSrc","srcAlt","logoSrc","fallbackLogoSrc","logoAlt","skeletonHeight","skeletonWidth","logoSkeleton","logoSkeletonHeight","logoSkeletonWidth","className","imageLoadingType","orientation","isLoading","showImageCap","setShowImageCap","showLogoCap","setShowLogoCap","wrapperClassName","createElement","containerClassName","height","width","handleSrcFallback","event","altSrc","imageKey","currentTarget","endsWith","show","onError","onLoad","alt","loading","propTypes","string","number","bool","oneOf","defaultProps","undefined"],"sources":["../../src/Card/CardImageCap.jsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Skeleton from 'react-loading-skeleton';\nimport CardContext from './CardContext';\nimport cardSrcFallbackImg from './fallback-default.png';\n\nconst SKELETON_HEIGHT_VALUE = 140;\nconst LOGO_SKELETON_HEIGHT_VALUE = 41;\n\nconst CardImageCap = React.forwardRef(({\n src,\n fallbackSrc,\n srcAlt,\n logoSrc,\n fallbackLogoSrc,\n logoAlt,\n skeletonHeight,\n skeletonWidth,\n logoSkeleton,\n logoSkeletonHeight,\n logoSkeletonWidth,\n className,\n imageLoadingType,\n}, ref) => {\n const { orientation, isLoading } = useContext(CardContext);\n const [showImageCap, setShowImageCap] = useState(false);\n const [showLogoCap, setShowLogoCap] = useState(false);\n\n const wrapperClassName = `pgn__card-wrapper-image-cap ${orientation}`;\n\n if (isLoading) {\n return (\n <div\n className={classNames(wrapperClassName, className)}\n data-testid=\"image-loader-wrapper\"\n >\n <Skeleton\n containerClassName=\"pgn__card-image-cap-loader\"\n height={orientation === 'horizontal' ? '100%' : skeletonHeight}\n width={skeletonWidth}\n />\n {logoSkeleton && (\n <Skeleton\n containerClassName=\"pgn__card-logo-cap\"\n height={logoSkeletonHeight}\n width={logoSkeletonWidth}\n />\n )}\n </div>\n );\n }\n\n const handleSrcFallback = (event, altSrc, imageKey) => {\n const { currentTarget } = event;\n\n if (!altSrc || currentTarget.src.endsWith(altSrc)) {\n if (imageKey === 'imageCap') {\n currentTarget.src = cardSrcFallbackImg;\n } else {\n setShowLogoCap(false);\n }\n\n return;\n }\n\n currentTarget.src = altSrc;\n };\n\n return (\n <div className={classNames(className, wrapperClassName)} ref={ref}>\n {!!src && (\n <img\n className={classNames('pgn__card-image-cap', { show: showImageCap })}\n src={src}\n onError={(event) => handleSrcFallback(event, fallbackSrc, 'imageCap')}\n onLoad={() => setShowImageCap(true)}\n alt={srcAlt}\n loading={imageLoadingType}\n />\n )}\n {!!logoSrc && (\n <img\n className={classNames('pgn__card-logo-cap', { show: showLogoCap })}\n src={logoSrc}\n onError={(event) => handleSrcFallback(event, fallbackLogoSrc, 'logoCap')}\n onLoad={() => setShowLogoCap(true)}\n alt={logoAlt}\n loading={imageLoadingType}\n />\n )}\n </div>\n );\n});\n\nCardImageCap.propTypes = {\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies image src. */\n src: PropTypes.string,\n /** Specifies fallback image src. */\n fallbackSrc: PropTypes.string,\n /** Specifies image alt text. */\n srcAlt: PropTypes.string,\n /** Specifies logo src to put on top of the image. */\n logoSrc: PropTypes.string,\n /** Specifies fallback image logo src. */\n fallbackLogoSrc: PropTypes.string,\n /** Specifies logo image alt text. */\n logoAlt: PropTypes.string,\n /** Specifies height of Image skeleton in loading state. */\n skeletonHeight: PropTypes.number,\n /** Specifies width of Image skeleton in loading state. */\n skeletonWidth: PropTypes.number,\n /** Specifies whether the cap should be displayed during loading. */\n logoSkeleton: PropTypes.bool,\n /** Specifies height of Logo skeleton in loading state. */\n logoSkeletonHeight: PropTypes.number,\n /** Specifies width of Logo skeleton in loading state. */\n logoSkeletonWidth: PropTypes.number,\n /** Specifies loading type for images */\n imageLoadingType: PropTypes.oneOf(['eager', 'lazy']),\n};\n\nCardImageCap.defaultProps = {\n src: undefined,\n fallbackSrc: cardSrcFallbackImg,\n logoSrc: undefined,\n fallbackLogoSrc: undefined,\n className: undefined,\n srcAlt: undefined,\n logoAlt: undefined,\n skeletonHeight: SKELETON_HEIGHT_VALUE,\n logoSkeleton: false,\n logoSkeletonHeight: LOGO_SKELETON_HEIGHT_VALUE,\n skeletonWidth: undefined,\n logoSkeletonWidth: undefined,\n imageLoadingType: 'eager',\n};\n\nexport default CardImageCap;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CardImageCap.js","names":["React","useContext","useState","PropTypes","classNames","Skeleton","CardContext","cardSrcFallbackImg","SKELETON_HEIGHT_VALUE","LOGO_SKELETON_HEIGHT_VALUE","CardImageCap","forwardRef","_ref","ref","src","fallbackSrc","srcAlt","logoSrc","fallbackLogoSrc","logoAlt","skeletonHeight","skeletonWidth","logoSkeleton","logoSkeletonHeight","logoSkeletonWidth","className","imageLoadingType","orientation","isLoading","showImageCap","setShowImageCap","showLogoCap","setShowLogoCap","wrapperClassName","createElement","containerClassName","height","width","handleSrcFallback","event","altSrc","imageKey","currentTarget","endsWith","show","onError","onLoad","alt","loading","propTypes","string","number","bool","oneOf","defaultProps","undefined"],"sources":["../../src/Card/CardImageCap.jsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Skeleton from 'react-loading-skeleton';\nimport CardContext from './CardContext';\nimport { cardSrcFallbackImg } from './CardFallbackDefaultImage';\n\nconst SKELETON_HEIGHT_VALUE = 140;\nconst LOGO_SKELETON_HEIGHT_VALUE = 41;\n\nconst CardImageCap = React.forwardRef(({\n src,\n fallbackSrc,\n srcAlt,\n logoSrc,\n fallbackLogoSrc,\n logoAlt,\n skeletonHeight,\n skeletonWidth,\n logoSkeleton,\n logoSkeletonHeight,\n logoSkeletonWidth,\n className,\n imageLoadingType,\n}, ref) => {\n const { orientation, isLoading } = useContext(CardContext);\n const [showImageCap, setShowImageCap] = useState(false);\n const [showLogoCap, setShowLogoCap] = useState(false);\n\n const wrapperClassName = `pgn__card-wrapper-image-cap ${orientation}`;\n\n if (isLoading) {\n return (\n <div\n className={classNames(wrapperClassName, className)}\n data-testid=\"image-loader-wrapper\"\n >\n <Skeleton\n containerClassName=\"pgn__card-image-cap-loader\"\n height={orientation === 'horizontal' ? '100%' : skeletonHeight}\n width={skeletonWidth}\n />\n {logoSkeleton && (\n <Skeleton\n containerClassName=\"pgn__card-logo-cap\"\n height={logoSkeletonHeight}\n width={logoSkeletonWidth}\n />\n )}\n </div>\n );\n }\n\n const handleSrcFallback = (event, altSrc, imageKey) => {\n const { currentTarget } = event;\n\n if (!altSrc || currentTarget.src.endsWith(altSrc)) {\n if (imageKey === 'imageCap') {\n currentTarget.src = cardSrcFallbackImg;\n } else {\n setShowLogoCap(false);\n }\n\n return;\n }\n\n currentTarget.src = altSrc;\n };\n\n return (\n <div className={classNames(className, wrapperClassName)} ref={ref}>\n {!!src && (\n <img\n className={classNames('pgn__card-image-cap', { show: showImageCap })}\n src={src}\n onError={(event) => handleSrcFallback(event, fallbackSrc, 'imageCap')}\n onLoad={() => setShowImageCap(true)}\n alt={srcAlt}\n loading={imageLoadingType}\n />\n )}\n {!!logoSrc && (\n <img\n className={classNames('pgn__card-logo-cap', { show: showLogoCap })}\n src={logoSrc}\n onError={(event) => handleSrcFallback(event, fallbackLogoSrc, 'logoCap')}\n onLoad={() => setShowLogoCap(true)}\n alt={logoAlt}\n loading={imageLoadingType}\n />\n )}\n </div>\n );\n});\n\nCardImageCap.propTypes = {\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies image src. */\n src: PropTypes.string,\n /** Specifies fallback image src. */\n fallbackSrc: PropTypes.string,\n /** Specifies image alt text. */\n srcAlt: PropTypes.string,\n /** Specifies logo src to put on top of the image. */\n logoSrc: PropTypes.string,\n /** Specifies fallback image logo src. */\n fallbackLogoSrc: PropTypes.string,\n /** Specifies logo image alt text. */\n logoAlt: PropTypes.string,\n /** Specifies height of Image skeleton in loading state. */\n skeletonHeight: PropTypes.number,\n /** Specifies width of Image skeleton in loading state. */\n skeletonWidth: PropTypes.number,\n /** Specifies whether the cap should be displayed during loading. */\n logoSkeleton: PropTypes.bool,\n /** Specifies height of Logo skeleton in loading state. */\n logoSkeletonHeight: PropTypes.number,\n /** Specifies width of Logo skeleton in loading state. */\n logoSkeletonWidth: PropTypes.number,\n /** Specifies loading type for images */\n imageLoadingType: PropTypes.oneOf(['eager', 'lazy']),\n};\n\nCardImageCap.defaultProps = {\n src: undefined,\n fallbackSrc: cardSrcFallbackImg,\n logoSrc: undefined,\n fallbackLogoSrc: undefined,\n className: undefined,\n srcAlt: undefined,\n logoAlt: undefined,\n skeletonHeight: SKELETON_HEIGHT_VALUE,\n logoSkeleton: false,\n logoSkeletonHeight: LOGO_SKELETON_HEIGHT_VALUE,\n skeletonWidth: undefined,\n logoSkeletonWidth: undefined,\n imageLoadingType: 'eager',\n};\n\nexport default CardImageCap;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { FORM_CONTROL_SIZES } from './constants';
4
+ interface Props<As extends React.ElementType> {
5
+ /** Specifies contents of the component. */
6
+ children: React.ReactNode;
7
+ /** Specifies class name to append to the base element. */
8
+ className?: string;
9
+ /** Specifies base element for the component. */
10
+ as?: As;
11
+ /** Specifies id to use in the group, it will be used as `htmlFor` in `FormLabel` and as `id` in input components.
12
+ * Will be autogenerated if none is supplied. */
13
+ controlId?: string;
14
+ /** Specifies whether to display components in invalid state, this affects styling. */
15
+ isInvalid?: boolean;
16
+ /** Specifies whether to display components in valid state, this affects styling. */
17
+ isValid?: boolean;
18
+ /** Specifies size for the component. */
19
+ size?: typeof FORM_CONTROL_SIZES.SMALL | typeof FORM_CONTROL_SIZES.LARGE;
20
+ }
21
+ declare function FormGroup<As extends React.ElementType = 'div'>({ children, controlId, isInvalid, isValid, size, as, ...props }: Props<As> & React.ComponentPropsWithoutRef<As>): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
22
+ declare namespace FormGroup {
23
+ var propTypes: {
24
+ /** Specifies contents of the component. */
25
+ children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
26
+ /** Specifies class name to append to the base element. */
27
+ className: PropTypes.Requireable<string>;
28
+ /** Specifies base element for the component. */
29
+ as: PropTypes.Requireable<PropTypes.ReactComponentLike>;
30
+ /** Specifies id to use in the group, it will be used as `htmlFor` in `FormLabel` and as `id` in input components.
31
+ * Will be autogenerated if none is supplied. */
32
+ controlId: PropTypes.Requireable<string>;
33
+ /** Specifies whether to display components in invalid state, this affects styling. */
34
+ isInvalid: PropTypes.Requireable<boolean>;
35
+ /** Specifies whether to display components in valid state, this affects styling. */
36
+ isValid: PropTypes.Requireable<boolean>;
37
+ /** Specifies size for the component. */
38
+ size: PropTypes.Requireable<string>;
39
+ };
40
+ }
41
+ export default FormGroup;
@@ -6,13 +6,13 @@ function FormGroup(_ref) {
6
6
  let {
7
7
  children,
8
8
  controlId,
9
- isInvalid,
10
- isValid,
9
+ isInvalid = false,
10
+ isValid = false,
11
11
  size,
12
12
  as,
13
13
  ...props
14
14
  } = _ref;
15
- return /*#__PURE__*/React.createElement(as, {
15
+ return /*#__PURE__*/React.createElement(as ?? 'div', {
16
16
  ...props,
17
17
  className: classNames('pgn__form-group', props.className)
18
18
  }, /*#__PURE__*/React.createElement(FormGroupContextProvider, {
@@ -40,13 +40,5 @@ FormGroup.propTypes = {
40
40
  /** Specifies size for the component. */
41
41
  size: PropTypes.oneOf(SIZE_CHOICES)
42
42
  };
43
- FormGroup.defaultProps = {
44
- as: 'div',
45
- className: undefined,
46
- controlId: undefined,
47
- isInvalid: false,
48
- isValid: false,
49
- size: undefined
50
- };
51
43
  export default FormGroup;
52
44
  //# sourceMappingURL=FormGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormGroup.js","names":["React","PropTypes","classNames","FormGroupContextProvider","FormGroup","_ref","children","controlId","isInvalid","isValid","size","as","props","createElement","className","SIZE_CHOICES","propTypes","node","isRequired","string","elementType","bool","oneOf","defaultProps","undefined"],"sources":["../../src/Form/FormGroup.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FormGroupContextProvider } from './FormGroupContext';\n\nfunction FormGroup({\n children,\n controlId,\n isInvalid,\n isValid,\n size,\n as,\n ...props\n}) {\n return React.createElement(\n as,\n {\n ...props,\n className: classNames('pgn__form-group', props.className),\n }, (\n <FormGroupContextProvider\n controlId={controlId}\n isInvalid={isInvalid}\n isValid={isValid}\n size={size}\n >\n {children}\n </FormGroupContextProvider>\n ),\n );\n}\n\nconst SIZE_CHOICES = ['sm', 'lg'];\n\nFormGroup.propTypes = {\n /** Specifies contents of the component. */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies base element for the component. */\n as: PropTypes.elementType,\n /** Specifies id to use in the group, it will be used as `htmlFor` in `FormLabel` and as `id` in input components.\n * Will be autogenerated if none is supplied. */\n controlId: PropTypes.string,\n /** Specifies whether to display components in invalid state, this affects styling. */\n isInvalid: PropTypes.bool,\n /** Specifies whether to display components in valid state, this affects styling. */\n isValid: PropTypes.bool,\n /** Specifies size for the component. */\n size: PropTypes.oneOf(SIZE_CHOICES),\n};\n\nFormGroup.defaultProps = {\n as: 'div',\n className: undefined,\n controlId: undefined,\n isInvalid: false,\n isValid: false,\n size: undefined,\n};\n\nexport default FormGroup;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,wBAAwB,QAAQ,oBAAoB;AAE7D,SAASC,SAASA,CAAAC,IAAA,EAQf;EAAA,IARgB;IACjBC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,OAAO;IACPC,IAAI;IACJC,EAAE;IACF,GAAGC;EACL,CAAC,GAAAP,IAAA;EACC,oBAAOL,KAAK,CAACa,aAAa,CACxBF,EAAE,EACF;IACE,GAAGC,KAAK;IACRE,SAAS,EAAEZ,UAAU,CAAC,iBAAiB,EAAEU,KAAK,CAACE,SAAS;EAC1D,CAAC,eACCd,KAAA,CAAAa,aAAA,CAACV,wBAAwB;IACvBI,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA;EAAK,GAEVJ,QACuB,CAE9B,CAAC;AACH;AAEA,MAAMS,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAEjCX,SAAS,CAACY,SAAS,GAAG;EACpB;EACAV,QAAQ,EAAEL,SAAS,CAACgB,IAAI,CAACC,UAAU;EACnC;EACAJ,SAAS,EAAEb,SAAS,CAACkB,MAAM;EAC3B;EACAR,EAAE,EAAEV,SAAS,CAACmB,WAAW;EACzB;AACF;EACEb,SAAS,EAAEN,SAAS,CAACkB,MAAM;EAC3B;EACAX,SAAS,EAAEP,SAAS,CAACoB,IAAI;EACzB;EACAZ,OAAO,EAAER,SAAS,CAACoB,IAAI;EACvB;EACAX,IAAI,EAAET,SAAS,CAACqB,KAAK,CAACP,YAAY;AACpC,CAAC;AAEDX,SAAS,CAACmB,YAAY,GAAG;EACvBZ,EAAE,EAAE,KAAK;EACTG,SAAS,EAAEU,SAAS;EACpBjB,SAAS,EAAEiB,SAAS;EACpBhB,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE,KAAK;EACdC,IAAI,EAAEc;AACR,CAAC;AAED,eAAepB,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"FormGroup.js","names":["React","PropTypes","classNames","FormGroupContextProvider","FormGroup","_ref","children","controlId","isInvalid","isValid","size","as","props","createElement","className","SIZE_CHOICES","propTypes","node","isRequired","string","elementType","bool","oneOf"],"sources":["../../src/Form/FormGroup.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FormGroupContextProvider } from './FormGroupContext';\nimport { FORM_CONTROL_SIZES } from './constants';\n\ninterface Props<As extends React.ElementType> {\n /** Specifies contents of the component. */\n children: React.ReactNode;\n /** Specifies class name to append to the base element. */\n className?: string;\n /** Specifies base element for the component. */\n as?: As;\n /** Specifies id to use in the group, it will be used as `htmlFor` in `FormLabel` and as `id` in input components.\n * Will be autogenerated if none is supplied. */\n controlId?: string;\n /** Specifies whether to display components in invalid state, this affects styling. */\n isInvalid?: boolean;\n /** Specifies whether to display components in valid state, this affects styling. */\n isValid?: boolean;\n /** Specifies size for the component. */\n size?: typeof FORM_CONTROL_SIZES.SMALL | typeof FORM_CONTROL_SIZES.LARGE;\n}\n\nfunction FormGroup<As extends React.ElementType = 'div'>({\n children,\n controlId,\n isInvalid = false,\n isValid = false,\n size,\n as,\n ...props\n}: Props<As> & React.ComponentPropsWithoutRef<As>) {\n return React.createElement(\n as ?? 'div',\n {\n ...props,\n className: classNames('pgn__form-group', props.className),\n }, (\n <FormGroupContextProvider\n controlId={controlId}\n isInvalid={isInvalid}\n isValid={isValid}\n size={size}\n >\n {children}\n </FormGroupContextProvider>\n ),\n );\n}\n\nconst SIZE_CHOICES = ['sm', 'lg'];\n\nFormGroup.propTypes = {\n /** Specifies contents of the component. */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies base element for the component. */\n as: PropTypes.elementType,\n /** Specifies id to use in the group, it will be used as `htmlFor` in `FormLabel` and as `id` in input components.\n * Will be autogenerated if none is supplied. */\n controlId: PropTypes.string,\n /** Specifies whether to display components in invalid state, this affects styling. */\n isInvalid: PropTypes.bool,\n /** Specifies whether to display components in valid state, this affects styling. */\n isValid: PropTypes.bool,\n /** Specifies size for the component. */\n size: PropTypes.oneOf(SIZE_CHOICES),\n};\n\nexport default FormGroup;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,wBAAwB,QAAQ,oBAAoB;AAqB7D,SAASC,SAASA,CAAAC,IAAA,EAQiC;EAAA,IARM;IACvDC,QAAQ;IACRC,SAAS;IACTC,SAAS,GAAG,KAAK;IACjBC,OAAO,GAAG,KAAK;IACfC,IAAI;IACJC,EAAE;IACF,GAAGC;EAC2C,CAAC,GAAAP,IAAA;EAC/C,oBAAOL,KAAK,CAACa,aAAa,CACxBF,EAAE,IAAI,KAAK,EACX;IACE,GAAGC,KAAK;IACRE,SAAS,EAAEZ,UAAU,CAAC,iBAAiB,EAAEU,KAAK,CAACE,SAAS;EAC1D,CAAC,eACCd,KAAA,CAAAa,aAAA,CAACV,wBAAwB;IACvBI,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA;EAAK,GAEVJ,QACuB,CAE9B,CAAC;AACH;AAEA,MAAMS,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAEjCX,SAAS,CAACY,SAAS,GAAG;EACpB;EACAV,QAAQ,EAAEL,SAAS,CAACgB,IAAI,CAACC,UAAU;EACnC;EACAJ,SAAS,EAAEb,SAAS,CAACkB,MAAM;EAC3B;EACAR,EAAE,EAAEV,SAAS,CAACmB,WAAW;EACzB;AACF;EACEb,SAAS,EAAEN,SAAS,CAACkB,MAAM;EAC3B;EACAX,SAAS,EAAEP,SAAS,CAACoB,IAAI;EACzB;EACAZ,OAAO,EAAER,SAAS,CAACoB,IAAI;EACvB;EACAX,IAAI,EAAET,SAAS,CAACqB,KAAK,CAACP,YAAY;AACpC,CAAC;AAED,eAAeX,SAAS","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { FORM_CONTROL_SIZES } from './constants';
3
+ interface FormGroupContextData {
4
+ getControlProps: (props: Record<string, any>) => Record<string, any>;
5
+ getLabelProps: (props: React.ComponentPropsWithoutRef<'label'>) => React.ComponentPropsWithoutRef<'label'>;
6
+ getDescriptorProps: (props: Record<string, any>) => Record<string, any>;
7
+ useSetIsControlGroupEffect: (isControlGroup: boolean) => void;
8
+ isControlGroup?: boolean;
9
+ controlId?: string;
10
+ isInvalid?: boolean;
11
+ isValid?: boolean;
12
+ size?: string;
13
+ hasFormGroupProvider?: boolean;
14
+ }
15
+ declare const FormGroupContext: React.Context<FormGroupContextData>;
16
+ declare const useFormGroupContext: () => FormGroupContextData;
17
+ declare function FormGroupContextProvider({ children, controlId: explicitControlId, isInvalid, isValid, size, }: {
18
+ children: React.ReactNode;
19
+ controlId?: string;
20
+ isInvalid?: boolean;
21
+ isValid?: boolean;
22
+ size?: typeof FORM_CONTROL_SIZES.SMALL | typeof FORM_CONTROL_SIZES.LARGE;
23
+ }): React.JSX.Element;
24
+ export { FormGroupContext, FormGroupContextProvider, useFormGroupContext, };
@@ -1,9 +1,7 @@
1
1
  import React, { useState, useEffect, useMemo, useCallback } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import classNames from 'classnames';
4
3
  import { newId } from '../utils';
5
4
  import { useIdList, omitUndefinedProperties } from './fieldUtils';
6
- import { FORM_CONTROL_SIZES } from './constants';
7
5
  const identityFn = props => props;
8
6
  const noop = () => {};
9
7
  const FormGroupContext = /*#__PURE__*/React.createContext({
@@ -14,13 +12,13 @@ const FormGroupContext = /*#__PURE__*/React.createContext({
14
12
  hasFormGroupProvider: false
15
13
  });
16
14
  const useFormGroupContext = () => React.useContext(FormGroupContext);
17
- const useStateEffect = initialState => {
15
+ function useStateEffect(initialState) {
18
16
  const [state, setState] = useState(initialState);
19
17
  const useSetStateEffect = newState => {
20
18
  useEffect(() => setState(newState), [newState]);
21
19
  };
22
20
  return [state, useSetStateEffect];
23
- };
21
+ }
24
22
  function FormGroupContextProvider(_ref) {
25
23
  let {
26
24
  children,
@@ -85,18 +83,5 @@ function FormGroupContextProvider(_ref) {
85
83
  value: contextValue
86
84
  }, children);
87
85
  }
88
- FormGroupContextProvider.propTypes = {
89
- children: PropTypes.node.isRequired,
90
- controlId: PropTypes.string,
91
- isInvalid: PropTypes.bool,
92
- isValid: PropTypes.bool,
93
- size: PropTypes.oneOf([FORM_CONTROL_SIZES.SMALL, FORM_CONTROL_SIZES.LARGE])
94
- };
95
- FormGroupContextProvider.defaultProps = {
96
- controlId: undefined,
97
- isInvalid: undefined,
98
- isValid: undefined,
99
- size: undefined
100
- };
101
86
  export { FormGroupContext, FormGroupContextProvider, useFormGroupContext };
102
87
  //# sourceMappingURL=FormGroupContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormGroupContext.js","names":["React","useState","useEffect","useMemo","useCallback","PropTypes","classNames","newId","useIdList","omitUndefinedProperties","FORM_CONTROL_SIZES","identityFn","props","noop","FormGroupContext","createContext","getControlProps","useSetIsControlGroupEffect","getLabelProps","getDescriptorProps","hasFormGroupProvider","useFormGroupContext","useContext","useStateEffect","initialState","state","setState","useSetStateEffect","newState","FormGroupContextProvider","_ref","children","controlId","explicitControlId","isInvalid","isValid","size","describedByIds","registerDescriptorId","labelledByIds","registerLabelerId","isControlGroup","controlProps","labelledByIdsForControl","undefined","id","labelProps","htmlFor","descriptorProps","contextValue","createElement","Provider","value","propTypes","node","isRequired","string","bool","oneOf","SMALL","LARGE","defaultProps"],"sources":["../../src/Form/FormGroupContext.jsx"],"sourcesContent":["import React, {\n useState, useEffect, useMemo, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { newId } from '../utils';\nimport { useIdList, omitUndefinedProperties } from './fieldUtils';\nimport { FORM_CONTROL_SIZES } from './constants';\n\nconst identityFn = props => props;\nconst noop = () => {};\n\nconst FormGroupContext = React.createContext({\n getControlProps: identityFn,\n useSetIsControlGroupEffect: noop,\n getLabelProps: identityFn,\n getDescriptorProps: identityFn,\n hasFormGroupProvider: false,\n});\n\nconst useFormGroupContext = () => React.useContext(FormGroupContext);\n\nconst useStateEffect = (initialState) => {\n const [state, setState] = useState(initialState);\n const useSetStateEffect = (newState) => {\n useEffect(() => setState(newState), [newState]);\n };\n return [state, useSetStateEffect];\n};\n\nfunction FormGroupContextProvider({\n children,\n controlId: explicitControlId,\n isInvalid,\n isValid,\n size,\n}) {\n const controlId = useMemo(() => explicitControlId || newId('form-field'), [explicitControlId]);\n const [describedByIds, registerDescriptorId] = useIdList(controlId);\n const [labelledByIds, registerLabelerId] = useIdList(controlId);\n const [isControlGroup, useSetIsControlGroupEffect] = useStateEffect(false);\n\n const getControlProps = useCallback((controlProps) => {\n // labelledByIds from the list above should only be added to a control\n // if it the control is a group. We prefer adding a condition here because:\n // - Hooks cannot be called inside conditionals\n // - The getLabelProps function below is forced to generate an id\n // whether it is needed or not.\n // - This is what allows consumers of Paragon to use <Form.Label>\n // interchangeably between ControlGroup type controls and regular Controls\n const labelledByIdsForControl = isControlGroup ? labelledByIds : undefined;\n return omitUndefinedProperties({\n ...controlProps,\n 'aria-describedby': classNames(controlProps['aria-describedby'], describedByIds) || undefined,\n 'aria-labelledby': classNames(controlProps['aria-labelledby'], labelledByIdsForControl) || undefined,\n id: controlId,\n });\n }, [\n isControlGroup,\n describedByIds,\n labelledByIds,\n controlId,\n ]);\n\n const getLabelProps = (labelProps) => {\n const id = registerLabelerId(labelProps?.id);\n if (isControlGroup) {\n return { ...labelProps, id };\n }\n return { ...labelProps, htmlFor: controlId };\n };\n\n const getDescriptorProps = (descriptorProps) => {\n const id = registerDescriptorId(descriptorProps?.id);\n return { ...descriptorProps, id };\n };\n\n const contextValue = {\n getControlProps,\n getLabelProps,\n getDescriptorProps,\n useSetIsControlGroupEffect,\n isControlGroup,\n controlId,\n isInvalid,\n isValid,\n size,\n hasFormGroupProvider: true,\n };\n\n return (\n <FormGroupContext.Provider value={contextValue}>\n {children}\n </FormGroupContext.Provider>\n );\n}\n\nFormGroupContextProvider.propTypes = {\n children: PropTypes.node.isRequired,\n controlId: PropTypes.string,\n isInvalid: PropTypes.bool,\n isValid: PropTypes.bool,\n size: PropTypes.oneOf([\n FORM_CONTROL_SIZES.SMALL,\n FORM_CONTROL_SIZES.LARGE,\n ]),\n};\n\nFormGroupContextProvider.defaultProps = {\n controlId: undefined,\n isInvalid: undefined,\n isValid: undefined,\n size: undefined,\n};\n\nexport {\n FormGroupContext,\n FormGroupContextProvider,\n useFormGroupContext,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormGroupContext.js","names":["React","useState","useEffect","useMemo","useCallback","classNames","newId","useIdList","omitUndefinedProperties","identityFn","props","noop","FormGroupContext","createContext","getControlProps","useSetIsControlGroupEffect","getLabelProps","getDescriptorProps","hasFormGroupProvider","useFormGroupContext","useContext","useStateEffect","initialState","state","setState","useSetStateEffect","newState","FormGroupContextProvider","_ref","children","controlId","explicitControlId","isInvalid","isValid","size","describedByIds","registerDescriptorId","labelledByIds","registerLabelerId","isControlGroup","controlProps","labelledByIdsForControl","undefined","id","labelProps","htmlFor","descriptorProps","contextValue","createElement","Provider","value"],"sources":["../../src/Form/FormGroupContext.tsx"],"sourcesContent":["import React, {\n useState, useEffect, useMemo, useCallback,\n} from 'react';\nimport classNames from 'classnames';\nimport { newId } from '../utils';\nimport { useIdList, omitUndefinedProperties } from './fieldUtils';\nimport { FORM_CONTROL_SIZES } from './constants';\n\nconst identityFn = (props: Record<string, any>) => props;\nconst noop = () => {};\n\ninterface FormGroupContextData {\n getControlProps: (props: Record<string, any>) => Record<string, any>;\n getLabelProps: (props: React.ComponentPropsWithoutRef<'label'>) => React.ComponentPropsWithoutRef<'label'>;\n getDescriptorProps: (props: Record<string, any>) => Record<string, any>;\n useSetIsControlGroupEffect: (isControlGroup: boolean) => void;\n isControlGroup?: boolean;\n controlId?: string;\n isInvalid?: boolean;\n isValid?: boolean;\n size?: string;\n hasFormGroupProvider?: boolean;\n}\n\nconst FormGroupContext = React.createContext<FormGroupContextData>({\n getControlProps: identityFn,\n useSetIsControlGroupEffect: noop,\n getLabelProps: identityFn,\n getDescriptorProps: identityFn,\n hasFormGroupProvider: false,\n});\n\nconst useFormGroupContext = () => React.useContext(FormGroupContext);\n\nfunction useStateEffect<ValueType extends any>(\n initialState: ValueType,\n): [value: ValueType, setter: (v: ValueType) => void] {\n const [state, setState] = useState(initialState);\n const useSetStateEffect = (newState: ValueType) => {\n useEffect(() => setState(newState), [newState]);\n };\n return [state, useSetStateEffect];\n}\n\nfunction FormGroupContextProvider({\n children,\n controlId: explicitControlId,\n isInvalid,\n isValid,\n size,\n}: {\n children: React.ReactNode;\n controlId?: string;\n isInvalid?: boolean;\n isValid?: boolean;\n size?: typeof FORM_CONTROL_SIZES.SMALL | typeof FORM_CONTROL_SIZES.LARGE;\n}) {\n const controlId = useMemo(() => explicitControlId || newId('form-field'), [explicitControlId]);\n const [describedByIds, registerDescriptorId] = useIdList(controlId);\n const [labelledByIds, registerLabelerId] = useIdList(controlId);\n const [isControlGroup, useSetIsControlGroupEffect] = useStateEffect(false);\n\n const getControlProps = useCallback((controlProps) => {\n // labelledByIds from the list above should only be added to a control\n // if it the control is a group. We prefer adding a condition here because:\n // - Hooks cannot be called inside conditionals\n // - The getLabelProps function below is forced to generate an id\n // whether it is needed or not.\n // - This is what allows consumers of Paragon to use <Form.Label>\n // interchangeably between ControlGroup type controls and regular Controls\n const labelledByIdsForControl = isControlGroup ? labelledByIds : undefined;\n return omitUndefinedProperties({\n ...controlProps,\n 'aria-describedby': classNames(controlProps['aria-describedby'], describedByIds) || undefined,\n 'aria-labelledby': classNames(controlProps['aria-labelledby'], labelledByIdsForControl) || undefined,\n id: controlId,\n });\n }, [\n isControlGroup,\n describedByIds,\n labelledByIds,\n controlId,\n ]);\n\n const getLabelProps = (labelProps: React.ComponentPropsWithoutRef<'label'>) => {\n const id = registerLabelerId(labelProps?.id);\n if (isControlGroup) {\n return { ...labelProps, id };\n }\n return { ...labelProps, htmlFor: controlId };\n };\n\n const getDescriptorProps = (descriptorProps: Record<string, any>) => {\n const id = registerDescriptorId(descriptorProps?.id);\n return { ...descriptorProps, id };\n };\n\n const contextValue: FormGroupContextData = {\n getControlProps,\n getLabelProps,\n getDescriptorProps,\n useSetIsControlGroupEffect,\n isControlGroup,\n controlId,\n isInvalid,\n isValid,\n size,\n hasFormGroupProvider: true,\n };\n\n return (\n <FormGroupContext.Provider value={contextValue}>\n {children}\n </FormGroupContext.Provider>\n );\n}\n\nexport {\n FormGroupContext,\n FormGroupContextProvider,\n useFormGroupContext,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ interface Props {
4
+ /** Specifies contents of the component. */
5
+ children: React.ReactNode;
6
+ /** Specifies whether the component should be displayed with inline styling. */
7
+ isInline?: boolean;
8
+ }
9
+ declare function FormLabel({ children, isInline, ...props }: Props & React.ComponentPropsWithoutRef<'label'>): React.ReactElement<Omit<React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref">, string | React.JSXElementConstructor<any>>;
10
+ declare namespace FormLabel {
11
+ var propTypes: {
12
+ /** Specifies class name to append to the base element. */
13
+ className: PropTypes.Requireable<string>;
14
+ /** Specifies contents of the component. */
15
+ children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
16
+ /** Specifies whether the component should be displayed with inline styling. */
17
+ isInline: PropTypes.Requireable<boolean>;
18
+ };
19
+ }
20
+ export default FormLabel;
@@ -6,7 +6,7 @@ import { FORM_CONTROL_SIZES } from './constants';
6
6
  function FormLabel(_ref) {
7
7
  let {
8
8
  children,
9
- isInline,
9
+ isInline = false,
10
10
  ...props
11
11
  } = _ref;
12
12
  const {
@@ -26,21 +26,13 @@ function FormLabel(_ref) {
26
26
  const componentType = isControlGroup ? 'p' : 'label';
27
27
  return /*#__PURE__*/React.createElement(componentType, labelProps, children);
28
28
  }
29
- const SIZE_CHOICES = ['sm', 'lg'];
30
29
  FormLabel.propTypes = {
31
30
  /** Specifies class name to append to the base element. */
32
31
  className: PropTypes.string,
33
32
  /** Specifies contents of the component. */
34
33
  children: PropTypes.node.isRequired,
35
34
  /** Specifies whether the component should be displayed with inline styling. */
36
- isInline: PropTypes.bool,
37
- /** Specifies size of the component. */
38
- size: PropTypes.oneOf(SIZE_CHOICES)
39
- };
40
- FormLabel.defaultProps = {
41
- isInline: false,
42
- size: undefined,
43
- className: undefined
35
+ isInline: PropTypes.bool
44
36
  };
45
37
  export default FormLabel;
46
38
  //# sourceMappingURL=FormLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormLabel.js","names":["React","PropTypes","classNames","useFormGroupContext","FORM_CONTROL_SIZES","FormLabel","_ref","children","isInline","props","size","isControlGroup","getLabelProps","className","LARGE","SMALL","labelProps","componentType","createElement","SIZE_CHOICES","propTypes","string","node","isRequired","bool","oneOf","defaultProps","undefined"],"sources":["../../src/Form/FormLabel.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useFormGroupContext } from './FormGroupContext';\nimport { FORM_CONTROL_SIZES } from './constants';\n\nfunction FormLabel({ children, isInline, ...props }) {\n const { size, isControlGroup, getLabelProps } = useFormGroupContext();\n const className = classNames(\n 'pgn__form-label',\n {\n 'pgn__form-label-inline': isInline,\n 'pgn__form-label-lg': size === FORM_CONTROL_SIZES.LARGE,\n 'pgn__form-label-sm': size === FORM_CONTROL_SIZES.SMALL,\n },\n props.className,\n );\n const labelProps = getLabelProps({ ...props, className });\n const componentType = isControlGroup ? 'p' : 'label';\n return React.createElement(componentType, labelProps, children);\n}\n\nconst SIZE_CHOICES = ['sm', 'lg'];\n\nFormLabel.propTypes = {\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies contents of the component. */\n children: PropTypes.node.isRequired,\n /** Specifies whether the component should be displayed with inline styling. */\n isInline: PropTypes.bool,\n /** Specifies size of the component. */\n size: PropTypes.oneOf(SIZE_CHOICES),\n};\n\nFormLabel.defaultProps = {\n isInline: false,\n size: undefined,\n className: undefined,\n};\n\nexport default FormLabel;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,mBAAmB,QAAQ,oBAAoB;AACxD,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,SAASA,CAAAC,IAAA,EAAmC;EAAA,IAAlC;IAAEC,QAAQ;IAAEC,QAAQ;IAAE,GAAGC;EAAM,CAAC,GAAAH,IAAA;EACjD,MAAM;IAAEI,IAAI;IAAEC,cAAc;IAAEC;EAAc,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACrE,MAAMU,SAAS,GAAGX,UAAU,CAC1B,iBAAiB,EACjB;IACE,wBAAwB,EAAEM,QAAQ;IAClC,oBAAoB,EAAEE,IAAI,KAAKN,kBAAkB,CAACU,KAAK;IACvD,oBAAoB,EAAEJ,IAAI,KAAKN,kBAAkB,CAACW;EACpD,CAAC,EACDN,KAAK,CAACI,SACR,CAAC;EACD,MAAMG,UAAU,GAAGJ,aAAa,CAAC;IAAE,GAAGH,KAAK;IAAEI;EAAU,CAAC,CAAC;EACzD,MAAMI,aAAa,GAAGN,cAAc,GAAG,GAAG,GAAG,OAAO;EACpD,oBAAOX,KAAK,CAACkB,aAAa,CAACD,aAAa,EAAED,UAAU,EAAET,QAAQ,CAAC;AACjE;AAEA,MAAMY,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAEjCd,SAAS,CAACe,SAAS,GAAG;EACpB;EACAP,SAAS,EAAEZ,SAAS,CAACoB,MAAM;EAC3B;EACAd,QAAQ,EAAEN,SAAS,CAACqB,IAAI,CAACC,UAAU;EACnC;EACAf,QAAQ,EAAEP,SAAS,CAACuB,IAAI;EACxB;EACAd,IAAI,EAAET,SAAS,CAACwB,KAAK,CAACN,YAAY;AACpC,CAAC;AAEDd,SAAS,CAACqB,YAAY,GAAG;EACvBlB,QAAQ,EAAE,KAAK;EACfE,IAAI,EAAEiB,SAAS;EACfd,SAAS,EAAEc;AACb,CAAC;AAED,eAAetB,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"FormLabel.js","names":["React","PropTypes","classNames","useFormGroupContext","FORM_CONTROL_SIZES","FormLabel","_ref","children","isInline","props","size","isControlGroup","getLabelProps","className","LARGE","SMALL","labelProps","componentType","createElement","propTypes","string","node","isRequired","bool"],"sources":["../../src/Form/FormLabel.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useFormGroupContext } from './FormGroupContext';\nimport { FORM_CONTROL_SIZES } from './constants';\n\ninterface Props {\n /** Specifies contents of the component. */\n children: React.ReactNode;\n /** Specifies whether the component should be displayed with inline styling. */\n isInline?: boolean;\n}\n\nfunction FormLabel({ children, isInline = false, ...props }: Props & React.ComponentPropsWithoutRef<'label'>) {\n const { size, isControlGroup, getLabelProps } = useFormGroupContext();\n const className = classNames(\n 'pgn__form-label',\n {\n 'pgn__form-label-inline': isInline,\n 'pgn__form-label-lg': size === FORM_CONTROL_SIZES.LARGE,\n 'pgn__form-label-sm': size === FORM_CONTROL_SIZES.SMALL,\n },\n props.className,\n );\n const labelProps = getLabelProps({ ...props, className });\n const componentType = isControlGroup ? 'p' : 'label';\n return React.createElement(componentType, labelProps, children);\n}\n\nFormLabel.propTypes = {\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies contents of the component. */\n children: PropTypes.node.isRequired,\n /** Specifies whether the component should be displayed with inline styling. */\n isInline: PropTypes.bool,\n};\n\nexport default FormLabel;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,mBAAmB,QAAQ,oBAAoB;AACxD,SAASC,kBAAkB,QAAQ,aAAa;AAShD,SAASC,SAASA,CAAAC,IAAA,EAA4F;EAAA,IAA3F;IAAEC,QAAQ;IAAEC,QAAQ,GAAG,KAAK;IAAE,GAAGC;EAAuD,CAAC,GAAAH,IAAA;EAC1G,MAAM;IAAEI,IAAI;IAAEC,cAAc;IAAEC;EAAc,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACrE,MAAMU,SAAS,GAAGX,UAAU,CAC1B,iBAAiB,EACjB;IACE,wBAAwB,EAAEM,QAAQ;IAClC,oBAAoB,EAAEE,IAAI,KAAKN,kBAAkB,CAACU,KAAK;IACvD,oBAAoB,EAAEJ,IAAI,KAAKN,kBAAkB,CAACW;EACpD,CAAC,EACDN,KAAK,CAACI,SACR,CAAC;EACD,MAAMG,UAAU,GAAGJ,aAAa,CAAC;IAAE,GAAGH,KAAK;IAAEI;EAAU,CAAC,CAAC;EACzD,MAAMI,aAAa,GAAGN,cAAc,GAAG,GAAG,GAAG,OAAO;EACpD,oBAAOX,KAAK,CAACkB,aAAa,CAACD,aAAa,EAAED,UAAU,EAAET,QAAQ,CAAC;AACjE;AAEAF,SAAS,CAACc,SAAS,GAAG;EACpB;EACAN,SAAS,EAAEZ,SAAS,CAACmB,MAAM;EAC3B;EACAb,QAAQ,EAAEN,SAAS,CAACoB,IAAI,CAACC,UAAU;EACnC;EACAd,QAAQ,EAAEP,SAAS,CAACsB;AACtB,CAAC;AAED,eAAelB,SAAS","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ export declare const FORM_CONTROL_SIZES: {
2
+ readonly SMALL: "sm";
3
+ readonly LARGE: "lg";
4
+ };
5
+ export declare const FORM_TEXT_TYPES: {
6
+ readonly DEFAULT: "default";
7
+ readonly VALID: "valid";
8
+ readonly INVALID: "invalid";
9
+ readonly WARNING: "warning";
10
+ readonly CRITERIA_EMPTY: "criteria-empty";
11
+ readonly CRITERIA_VALID: "criteria-valid";
12
+ readonly CRITERIA_INVALID: "criteria-invalid";
13
+ };
@@ -1,17 +1,14 @@
1
- /* eslint-disable import/prefer-default-export */
2
- const FORM_CONTROL_SIZES = {
1
+ export const FORM_CONTROL_SIZES = {
3
2
  SMALL: 'sm',
4
- LARGE: 'lg',
3
+ LARGE: 'lg'
5
4
  };
6
-
7
- const FORM_TEXT_TYPES = {
5
+ export const FORM_TEXT_TYPES = {
8
6
  DEFAULT: 'default',
9
7
  VALID: 'valid',
10
8
  INVALID: 'invalid',
11
9
  WARNING: 'warning',
12
10
  CRITERIA_EMPTY: 'criteria-empty',
13
11
  CRITERIA_VALID: 'criteria-valid',
14
- CRITERIA_INVALID: 'criteria-invalid',
12
+ CRITERIA_INVALID: 'criteria-invalid'
15
13
  };
16
-
17
- export { FORM_CONTROL_SIZES, FORM_TEXT_TYPES };
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["FORM_CONTROL_SIZES","SMALL","LARGE","FORM_TEXT_TYPES","DEFAULT","VALID","INVALID","WARNING","CRITERIA_EMPTY","CRITERIA_VALID","CRITERIA_INVALID"],"sources":["../../src/Form/constants.ts"],"sourcesContent":["export const FORM_CONTROL_SIZES = {\n SMALL: 'sm',\n LARGE: 'lg',\n} as const;\n\nexport const FORM_TEXT_TYPES = {\n DEFAULT: 'default',\n VALID: 'valid',\n INVALID: 'invalid',\n WARNING: 'warning',\n CRITERIA_EMPTY: 'criteria-empty',\n CRITERIA_VALID: 'criteria-valid',\n CRITERIA_INVALID: 'criteria-invalid',\n} as const;\n"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG;EAChCC,KAAK,EAAE,IAAI;EACXC,KAAK,EAAE;AACT,CAAU;AAEV,OAAO,MAAMC,eAAe,GAAG;EAC7BC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,cAAc,EAAE,gBAAgB;EAChCC,cAAc,EAAE,gBAAgB;EAChCC,gBAAgB,EAAE;AACpB,CAAU","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ declare const omitUndefinedProperties: (obj?: {}) => Record<string, any>;
2
+ declare const callAllHandlers: <EventType extends Object>(...handlers: ((event: EventType) => void)[]) => (event: EventType) => void;
3
+ declare const useHasValue: <ValueType>({ defaultValue, value }: {
4
+ defaultValue?: ValueType | undefined;
5
+ value?: ValueType | undefined;
6
+ }) => (boolean | ((e: React.ChangeEvent<HTMLInputElement>) => void))[];
7
+ declare const useIdList: (uniqueIdPrefix: string, initialList?: string[]) => [idList: string[], useRegisteredId: (id: string | undefined) => string | undefined];
8
+ declare const mergeAttributeValues: (...values: (string | undefined)[]) => string | undefined;
9
+ export { callAllHandlers, useHasValue, mergeAttributeValues, useIdList, omitUndefinedProperties, };
@@ -1,34 +1,38 @@
1
1
  import classNames from 'classnames';
2
2
  import { useState, useEffect } from 'react';
3
3
  import { newId } from '../utils';
4
-
5
- const omitUndefinedProperties = (obj = {}) => Object.entries(obj)
6
- .reduce((acc, [key, value]) => {
4
+ const omitUndefinedProperties = function () {
5
+ let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6
+ return Object.entries(obj).reduce((acc, _ref) => {
7
+ let [key, value] = _ref;
7
8
  if (value !== undefined) {
8
9
  acc[key] = value;
9
10
  }
10
11
  return acc;
11
12
  }, {});
12
-
13
- const callAllHandlers = (...handlers) => {
14
- const unifiedEventHandler = (event) => {
15
- handlers
16
- .filter(handler => typeof handler === 'function')
17
- .forEach(handler => handler(event));
13
+ };
14
+ const callAllHandlers = function () {
15
+ for (var _len = arguments.length, handlers = new Array(_len), _key = 0; _key < _len; _key++) {
16
+ handlers[_key] = arguments[_key];
17
+ }
18
+ const unifiedEventHandler = event => {
19
+ handlers.filter(handler => typeof handler === 'function').forEach(handler => handler(event));
18
20
  };
19
21
  return unifiedEventHandler;
20
22
  };
21
-
22
- const useHasValue = ({ defaultValue, value }) => {
23
+ const useHasValue = _ref2 => {
24
+ let {
25
+ defaultValue,
26
+ value
27
+ } = _ref2;
23
28
  const [hasUncontrolledValue, setHasUncontrolledValue] = useState(!!defaultValue || defaultValue === 0);
24
29
  const hasValue = !!value || value === 0 || hasUncontrolledValue;
25
- const handleInputEvent = (e) => setHasUncontrolledValue(e.target.value);
30
+ const handleInputEvent = e => setHasUncontrolledValue(!!e.target.value);
26
31
  return [hasValue, handleInputEvent];
27
32
  };
28
-
29
33
  const useIdList = (uniqueIdPrefix, initialList) => {
30
34
  const [idList, setIdList] = useState(initialList || []);
31
- const addId = (idToAdd) => {
35
+ const addId = idToAdd => {
32
36
  setIdList(oldIdList => [...oldIdList, idToAdd]);
33
37
  return idToAdd;
34
38
  };
@@ -36,35 +40,29 @@ const useIdList = (uniqueIdPrefix, initialList) => {
36
40
  const idToAdd = newId(`${uniqueIdPrefix}-`);
37
41
  return addId(idToAdd);
38
42
  };
39
- const removeId = (idToRemove) => {
43
+ const removeId = idToRemove => {
40
44
  setIdList(oldIdList => oldIdList.filter(id => id !== idToRemove));
41
45
  };
42
-
43
- const useRegisteredId = (explicitlyRegisteredId) => {
46
+ const useRegisteredId = explicitlyRegisteredId => {
44
47
  const [registeredId, setRegisteredId] = useState(explicitlyRegisteredId);
45
48
  useEffect(() => {
46
49
  if (explicitlyRegisteredId) {
47
50
  addId(explicitlyRegisteredId);
48
51
  } else if (!registeredId) {
49
- setRegisteredId(getNewId(uniqueIdPrefix));
52
+ setRegisteredId(getNewId());
50
53
  }
51
54
  return () => removeId(registeredId);
52
55
  }, [registeredId, explicitlyRegisteredId]);
53
56
  return registeredId;
54
57
  };
55
-
56
58
  return [idList, useRegisteredId];
57
59
  };
58
-
59
- const mergeAttributeValues = (...values) => {
60
+ const mergeAttributeValues = function () {
61
+ for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
62
+ values[_key2] = arguments[_key2];
63
+ }
60
64
  const mergedValues = classNames(values);
61
65
  return mergedValues || undefined;
62
66
  };
63
-
64
- export {
65
- callAllHandlers,
66
- useHasValue,
67
- mergeAttributeValues,
68
- useIdList,
69
- omitUndefinedProperties,
70
- };
67
+ export { callAllHandlers, useHasValue, mergeAttributeValues, useIdList, omitUndefinedProperties };
68
+ //# sourceMappingURL=fieldUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldUtils.js","names":["classNames","useState","useEffect","newId","omitUndefinedProperties","obj","arguments","length","undefined","Object","entries","reduce","acc","_ref","key","value","callAllHandlers","_len","handlers","Array","_key","unifiedEventHandler","event","filter","handler","forEach","useHasValue","_ref2","defaultValue","hasUncontrolledValue","setHasUncontrolledValue","hasValue","handleInputEvent","e","target","useIdList","uniqueIdPrefix","initialList","idList","setIdList","addId","idToAdd","oldIdList","getNewId","removeId","idToRemove","id","useRegisteredId","explicitlyRegisteredId","registeredId","setRegisteredId","mergeAttributeValues","_len2","values","_key2","mergedValues"],"sources":["../../src/Form/fieldUtils.ts"],"sourcesContent":["import classNames from 'classnames';\nimport { useState, useEffect } from 'react';\nimport { newId } from '../utils';\n\nconst omitUndefinedProperties = (obj = {}) => Object.entries(obj)\n .reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {} as Record<string, any>);\n\nconst callAllHandlers = <EventType extends Object>(...handlers: ((event: EventType) => void)[]) => {\n const unifiedEventHandler = (event: EventType) => {\n handlers\n .filter(handler => typeof handler === 'function')\n .forEach(handler => handler(event));\n };\n return unifiedEventHandler;\n};\n\nconst useHasValue = <ValueType>({ defaultValue, value }: { defaultValue?: ValueType, value?: ValueType }) => {\n const [hasUncontrolledValue, setHasUncontrolledValue] = useState(!!defaultValue || defaultValue === 0);\n const hasValue = !!value || value === 0 || hasUncontrolledValue;\n const handleInputEvent = (e: React.ChangeEvent<HTMLInputElement>) => setHasUncontrolledValue(!!e.target.value);\n return [hasValue, handleInputEvent];\n};\n\nconst useIdList = (\n uniqueIdPrefix: string,\n initialList?: string[],\n): [idList: string[], useRegisteredId: (id: string | undefined) => string | undefined] => {\n const [idList, setIdList] = useState(initialList || []);\n const addId = (idToAdd: string) => {\n setIdList(oldIdList => [...oldIdList, idToAdd]);\n return idToAdd;\n };\n const getNewId = () => {\n const idToAdd = newId(`${uniqueIdPrefix}-`);\n return addId(idToAdd);\n };\n const removeId = (idToRemove: string | undefined) => {\n setIdList(oldIdList => oldIdList.filter(id => id !== idToRemove));\n };\n\n const useRegisteredId = (explicitlyRegisteredId: string | undefined) => {\n const [registeredId, setRegisteredId] = useState(explicitlyRegisteredId);\n useEffect(() => {\n if (explicitlyRegisteredId) {\n addId(explicitlyRegisteredId);\n } else if (!registeredId) {\n setRegisteredId(getNewId());\n }\n return () => removeId(registeredId);\n }, [registeredId, explicitlyRegisteredId]);\n return registeredId;\n };\n\n return [idList, useRegisteredId];\n};\n\nconst mergeAttributeValues = (...values: (string | undefined)[]) => {\n const mergedValues = classNames(values);\n return mergedValues || undefined;\n};\n\nexport {\n callAllHandlers,\n useHasValue,\n mergeAttributeValues,\n useIdList,\n omitUndefinedProperties,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ import BootstrapForm, { FormProps } from 'react-bootstrap/Form';
2
+ import { ComponentWithAsProp } from '../utils/types/bootstrap';
3
+ import FormControl from './FormControl';
4
+ import FormLabel from './FormLabel';
5
+ import FormGroup from './FormGroup';
6
+ import FormControlFeedback from './FormControlFeedback';
7
+ import FormText from './FormText';
8
+ import FormControlDecoratorGroup from './FormControlDecoratorGroup';
9
+ import FormRadio, { RadioControl } from './FormRadio';
10
+ import FormRadioSet from './FormRadioSet';
11
+ import FormRadioSetContext from './FormRadioSetContext';
12
+ import FormAutosuggest from './FormAutosuggest';
13
+ import FormAutosuggestOption from './FormAutosuggestOption';
14
+ import FormCheckbox, { CheckboxControl } from './FormCheckbox';
15
+ import FormSwitch, { SwitchControl } from './FormSwitch';
16
+ import FormCheckboxSet from './FormCheckboxSet';
17
+ import FormSwitchSet from './FormSwitchSet';
18
+ import FormCheckboxSetContext from './FormCheckboxSetContext';
19
+ import useCheckboxSetValues from './useCheckboxSetValues';
20
+ declare const Form: ComponentWithAsProp<"form", FormProps> & {
21
+ Control: any;
22
+ Radio: any;
23
+ RadioSet: any;
24
+ Autosuggest: any;
25
+ AutosuggestOption: any;
26
+ Checkbox: any;
27
+ CheckboxSet: any;
28
+ Row: typeof BootstrapForm.Row;
29
+ Switch: any;
30
+ SwitchSet: any;
31
+ Label: typeof FormLabel;
32
+ Group: typeof FormGroup;
33
+ Text: any;
34
+ };
35
+ export default Form;
36
+ export { FormControl, FormLabel, FormRadio, FormRadioSet, FormRadioSetContext, FormCheckbox, FormSwitch, FormAutosuggest, FormAutosuggestOption, FormCheckboxSet, FormCheckboxSetContext, FormGroup, FormControlDecoratorGroup, FormControlFeedback, FormText, CheckboxControl, RadioControl, SwitchControl, FormSwitchSet, useCheckboxSetValues, };
37
+ export { default as FormCheck } from 'react-bootstrap/FormCheck';
38
+ export { default as FormFile } from 'react-bootstrap/FormFile';
39
+ export { default as InputGroup } from 'react-bootstrap/InputGroup';
@@ -1,21 +1,38 @@
1
- import Form from 'react-bootstrap/Form';
1
+ import BootstrapForm from 'react-bootstrap/Form';
2
+ // TODO: add more typing and remove the @ts-ignore directives here
3
+ // @ts-ignore
2
4
  import FormControl from './FormControl';
3
5
  import FormLabel from './FormLabel';
4
6
  import FormGroup from './FormGroup';
7
+ // @ts-ignore
5
8
  import FormControlFeedback from './FormControlFeedback';
9
+ // @ts-ignore
6
10
  import FormText from './FormText';
11
+ // @ts-ignore
7
12
  import FormControlDecoratorGroup from './FormControlDecoratorGroup';
13
+ // @ts-ignore
8
14
  import FormRadio, { RadioControl } from './FormRadio';
15
+ // @ts-ignore
9
16
  import FormRadioSet from './FormRadioSet';
17
+ // @ts-ignore
10
18
  import FormRadioSetContext from './FormRadioSetContext';
19
+ // @ts-ignore
11
20
  import FormAutosuggest from './FormAutosuggest';
21
+ // @ts-ignore
12
22
  import FormAutosuggestOption from './FormAutosuggestOption';
23
+ // @ts-ignore
13
24
  import FormCheckbox, { CheckboxControl } from './FormCheckbox';
25
+ // @ts-ignore
14
26
  import FormSwitch, { SwitchControl } from './FormSwitch';
27
+ // @ts-ignore
15
28
  import FormCheckboxSet from './FormCheckboxSet';
29
+ // @ts-ignore
16
30
  import FormSwitchSet from './FormSwitchSet';
31
+ // @ts-ignore
17
32
  import FormCheckboxSetContext from './FormCheckboxSetContext';
33
+ // @ts-ignore
18
34
  import useCheckboxSetValues from './useCheckboxSetValues';
35
+ const Form = BootstrapForm;
19
36
  Form.Control = FormControl;
20
37
  Form.Radio = FormRadio;
21
38
  Form.RadioSet = FormRadioSet;