@transferwise/components 46.74.1 → 46.76.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 (74) hide show
  1. package/build/alert/Alert.js +8 -4
  2. package/build/alert/Alert.js.map +1 -1
  3. package/build/alert/Alert.mjs +8 -4
  4. package/build/alert/Alert.mjs.map +1 -1
  5. package/build/field/Field.js +2 -0
  6. package/build/field/Field.js.map +1 -1
  7. package/build/field/Field.mjs +2 -0
  8. package/build/field/Field.mjs.map +1 -1
  9. package/build/i18n/en.json +5 -0
  10. package/build/i18n/en.json.js +5 -0
  11. package/build/i18n/en.json.js.map +1 -1
  12. package/build/i18n/en.json.mjs +5 -0
  13. package/build/i18n/en.json.mjs.map +1 -1
  14. package/build/inlineAlert/InlineAlert.js +3 -1
  15. package/build/inlineAlert/InlineAlert.js.map +1 -1
  16. package/build/inlineAlert/InlineAlert.mjs +3 -1
  17. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  18. package/build/main.css +3 -0
  19. package/build/statusIcon/StatusIcon.js +50 -16
  20. package/build/statusIcon/StatusIcon.js.map +1 -1
  21. package/build/statusIcon/StatusIcon.messages.js +24 -0
  22. package/build/statusIcon/StatusIcon.messages.js.map +1 -0
  23. package/build/statusIcon/StatusIcon.messages.mjs +22 -0
  24. package/build/statusIcon/StatusIcon.messages.mjs.map +1 -0
  25. package/build/statusIcon/StatusIcon.mjs +48 -14
  26. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  27. package/build/styles/alert/Alert.css +3 -0
  28. package/build/styles/main.css +3 -0
  29. package/build/types/alert/Alert.d.ts +17 -2
  30. package/build/types/alert/Alert.d.ts.map +1 -1
  31. package/build/types/field/Field.d.ts +6 -1
  32. package/build/types/field/Field.d.ts.map +1 -1
  33. package/build/types/inlineAlert/InlineAlert.d.ts +2 -1
  34. package/build/types/inlineAlert/InlineAlert.d.ts.map +1 -1
  35. package/build/types/statusIcon/StatusIcon.d.ts +7 -1
  36. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  37. package/build/types/statusIcon/StatusIcon.messages.d.ts +29 -0
  38. package/build/types/statusIcon/StatusIcon.messages.d.ts.map +1 -0
  39. package/build/types/upload/Upload.d.ts +5 -0
  40. package/build/types/upload/Upload.d.ts.map +1 -1
  41. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts +1 -0
  42. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  43. package/build/upload/Upload.js +4 -2
  44. package/build/upload/Upload.js.map +1 -1
  45. package/build/upload/Upload.mjs +4 -2
  46. package/build/upload/Upload.mjs.map +1 -1
  47. package/build/upload/steps/uploadImageStep/uploadImageStep.js +6 -3
  48. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  49. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +6 -3
  50. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  51. package/package.json +3 -3
  52. package/src/alert/Alert.css +3 -0
  53. package/src/alert/Alert.less +3 -0
  54. package/src/alert/Alert.spec.story.tsx +51 -5
  55. package/src/alert/Alert.spec.tsx +14 -0
  56. package/src/alert/Alert.story.tsx +109 -13
  57. package/src/alert/Alert.tsx +25 -5
  58. package/src/field/Field.spec.tsx +19 -0
  59. package/src/field/Field.story.tsx +20 -4
  60. package/src/field/Field.tsx +7 -1
  61. package/src/i18n/en.json +5 -0
  62. package/src/inlineAlert/InlineAlert.spec.tsx +12 -1
  63. package/src/inlineAlert/InlineAlert.tsx +5 -1
  64. package/src/main.css +3 -0
  65. package/src/main.less +1 -0
  66. package/src/statusIcon/StatusIcon.docs.mdx +28 -0
  67. package/src/statusIcon/StatusIcon.messages.ts +34 -0
  68. package/src/statusIcon/StatusIcon.spec.tsx +39 -4
  69. package/src/statusIcon/StatusIcon.story.tsx +15 -6
  70. package/src/statusIcon/StatusIcon.tsx +63 -14
  71. package/src/upload/Upload.spec.js +19 -0
  72. package/src/upload/Upload.tsx +7 -0
  73. package/src/upload/steps/uploadImageStep/uploadImageStep.spec.js +13 -0
  74. package/src/upload/steps/uploadImageStep/uploadImageStep.tsx +15 -4
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var reactIntl = require('react-intl');
4
+
5
+ var messages = reactIntl.defineMessages({
6
+ errorLabel: {
7
+ id: "neptune.StatusIcon.iconLabel.error"
8
+ },
9
+ successLabel: {
10
+ id: "neptune.StatusIcon.iconLabel.success"
11
+ },
12
+ warningLabel: {
13
+ id: "neptune.StatusIcon.iconLabel.warning"
14
+ },
15
+ pendingLabel: {
16
+ id: "neptune.StatusIcon.iconLabel.pending"
17
+ },
18
+ informationLabel: {
19
+ id: "neptune.StatusIcon.iconLabel.information"
20
+ }
21
+ });
22
+
23
+ module.exports = messages;
24
+ //# sourceMappingURL=StatusIcon.messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIcon.messages.js","sources":["../../src/statusIcon/StatusIcon.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n errorLabel: {\n id: 'neptune.StatusIcon.iconLabel.error',\n defaultMessage: 'Error:',\n description:\n 'Visually hidden label read by screen readers, describing the Error icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n successLabel: {\n id: 'neptune.StatusIcon.iconLabel.success',\n defaultMessage: 'Success:',\n description:\n 'Visually hidden label read by screen readers, describing the Success icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n warningLabel: {\n id: 'neptune.StatusIcon.iconLabel.warning',\n defaultMessage: 'Warning:',\n description:\n 'Visually hidden label read by screen readers, describing the Warning icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n pendingLabel: {\n id: 'neptune.StatusIcon.iconLabel.pending',\n defaultMessage: 'Pending:',\n description:\n 'Visually hidden label read by screen readers, describing the Pending icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n informationLabel: {\n id: 'neptune.StatusIcon.iconLabel.information',\n defaultMessage: 'Information:',\n description:\n 'Visually hidden label read by screen readers, describing the Information icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n});\n"],"names":["defineMessages","errorLabel","id","successLabel","warningLabel","pendingLabel","informationLabel"],"mappings":";;;;AAEA,eAAeA,wBAAc,CAAC;AAC5BC,EAAAA,UAAU,EAAE;IACVC,EAAE,EAAA,oCAAA;GAIH;AACDC,EAAAA,YAAY,EAAE;IACZD,EAAE,EAAA,sCAAA;GAIH;AACDE,EAAAA,YAAY,EAAE;IACZF,EAAE,EAAA,sCAAA;GAIH;AACDG,EAAAA,YAAY,EAAE;IACZH,EAAE,EAAA,sCAAA;GAIH;AACDI,EAAAA,gBAAgB,EAAE;IAChBJ,EAAE,EAAA,0CAAA;AAIH,GAAA;AACF,CAAA,CAAC;;;;"}
@@ -0,0 +1,22 @@
1
+ import { defineMessages } from 'react-intl';
2
+
3
+ var messages = defineMessages({
4
+ errorLabel: {
5
+ id: "neptune.StatusIcon.iconLabel.error"
6
+ },
7
+ successLabel: {
8
+ id: "neptune.StatusIcon.iconLabel.success"
9
+ },
10
+ warningLabel: {
11
+ id: "neptune.StatusIcon.iconLabel.warning"
12
+ },
13
+ pendingLabel: {
14
+ id: "neptune.StatusIcon.iconLabel.pending"
15
+ },
16
+ informationLabel: {
17
+ id: "neptune.StatusIcon.iconLabel.information"
18
+ }
19
+ });
20
+
21
+ export { messages as default };
22
+ //# sourceMappingURL=StatusIcon.messages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIcon.messages.mjs","sources":["../../src/statusIcon/StatusIcon.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n errorLabel: {\n id: 'neptune.StatusIcon.iconLabel.error',\n defaultMessage: 'Error:',\n description:\n 'Visually hidden label read by screen readers, describing the Error icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n successLabel: {\n id: 'neptune.StatusIcon.iconLabel.success',\n defaultMessage: 'Success:',\n description:\n 'Visually hidden label read by screen readers, describing the Success icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n warningLabel: {\n id: 'neptune.StatusIcon.iconLabel.warning',\n defaultMessage: 'Warning:',\n description:\n 'Visually hidden label read by screen readers, describing the Warning icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n pendingLabel: {\n id: 'neptune.StatusIcon.iconLabel.pending',\n defaultMessage: 'Pending:',\n description:\n 'Visually hidden label read by screen readers, describing the Pending icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n informationLabel: {\n id: 'neptune.StatusIcon.iconLabel.information',\n defaultMessage: 'Information:',\n description:\n 'Visually hidden label read by screen readers, describing the Information icon – normally a prefix to remaining visible content, e.g. validation result.',\n },\n});\n"],"names":["defineMessages","errorLabel","id","successLabel","warningLabel","pendingLabel","informationLabel"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,UAAU,EAAE;IACVC,EAAE,EAAA,oCAAA;GAIH;AACDC,EAAAA,YAAY,EAAE;IACZD,EAAE,EAAA,sCAAA;GAIH;AACDE,EAAAA,YAAY,EAAE;IACZF,EAAE,EAAA,sCAAA;GAIH;AACDG,EAAAA,YAAY,EAAE;IACZH,EAAE,EAAA,sCAAA;GAIH;AACDI,EAAAA,gBAAgB,EAAE;IAChBJ,EAAE,EAAA,0CAAA;AAIH,GAAA;AACF,CAAA,CAAC;;;;"}
@@ -1,21 +1,14 @@
1
- import { Check, Info, Alert, Cross, ClockBorderless } from '@transferwise/icons';
1
+ import { Cross, Check, Alert, ClockBorderless, Info } from '@transferwise/icons';
2
2
  import { clsx } from 'clsx';
3
+ import { useIntl } from 'react-intl';
3
4
  import Circle from '../common/circle/Circle.mjs';
4
5
  import { useMedia } from '../common/hooks/useMedia.mjs';
6
+ import messages from './StatusIcon.messages.mjs';
5
7
  import { jsx } from 'react/jsx-runtime';
8
+ import { Sentiment } from '../common/propsValues/sentiment.mjs';
6
9
  import { Breakpoint } from '../common/propsValues/breakpoint.mjs';
7
10
  import { Size } from '../common/propsValues/size.mjs';
8
11
 
9
- const iconTypeMap = {
10
- positive: Check,
11
- neutral: Info,
12
- warning: Alert,
13
- negative: Cross,
14
- pending: ClockBorderless,
15
- info: Info,
16
- error: Cross,
17
- success: Check
18
- };
19
12
  const mapLegacySize = {
20
13
  [String(Size.SMALL)]: 16,
21
14
  [String(Size.MEDIUM)]: 40,
@@ -23,9 +16,49 @@ const mapLegacySize = {
23
16
  };
24
17
  const StatusIcon = ({
25
18
  sentiment = 'neutral',
26
- size: sizeProp = 'md'
19
+ size: sizeProp = 'md',
20
+ iconLabel
27
21
  }) => {
28
- const Icon = iconTypeMap[sentiment];
22
+ const intl = useIntl();
23
+ const iconMetaBySentiment = {
24
+ [Sentiment.NEGATIVE]: {
25
+ Icon: Cross,
26
+ defaultIconLabel: intl.formatMessage(messages.errorLabel)
27
+ },
28
+ [Sentiment.POSITIVE]: {
29
+ Icon: Check,
30
+ defaultIconLabel: intl.formatMessage(messages.successLabel)
31
+ },
32
+ [Sentiment.WARNING]: {
33
+ Icon: Alert,
34
+ defaultIconLabel: intl.formatMessage(messages.warningLabel)
35
+ },
36
+ [Sentiment.PENDING]: {
37
+ Icon: ClockBorderless,
38
+ defaultIconLabel: intl.formatMessage(messages.pendingLabel)
39
+ },
40
+ [Sentiment.NEUTRAL]: {
41
+ Icon: Info,
42
+ defaultIconLabel: intl.formatMessage(messages.informationLabel)
43
+ },
44
+ // deprecated
45
+ [Sentiment.ERROR]: {
46
+ Icon: Cross,
47
+ defaultIconLabel: intl.formatMessage(messages.errorLabel)
48
+ },
49
+ [Sentiment.INFO]: {
50
+ Icon: Info,
51
+ defaultIconLabel: intl.formatMessage(messages.informationLabel)
52
+ },
53
+ [Sentiment.SUCCESS]: {
54
+ Icon: Check,
55
+ defaultIconLabel: intl.formatMessage(messages.successLabel)
56
+ }
57
+ };
58
+ const {
59
+ Icon,
60
+ defaultIconLabel
61
+ } = iconMetaBySentiment[sentiment];
29
62
  const iconColor = sentiment === 'warning' || sentiment === 'pending' ? 'dark' : 'light';
30
63
  const isTinyViewport = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);
31
64
  const size = sizeProp === Size.SMALL && isTinyViewport ? 32 : mapLegacySize[sizeProp];
@@ -35,7 +68,8 @@ const StatusIcon = ({
35
68
  "data-testid": "status-icon",
36
69
  className: clsx('status-circle', `status-circle-${sizeProp}`, sentiment),
37
70
  children: /*#__PURE__*/jsx(Icon, {
38
- className: clsx('status-icon', iconColor)
71
+ className: clsx('status-icon', iconColor),
72
+ title: iconLabel === null ? undefined : iconLabel || defaultIconLabel
39
73
  })
40
74
  });
41
75
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StatusIcon.mjs","sources":["../../src/statusIcon/StatusIcon.tsx"],"sourcesContent":["import { Info, Alert, Cross, Check, ClockBorderless } from '@transferwise/icons';\nimport { clsx } from 'clsx';\n\nimport { SizeSmall, SizeMedium, SizeLarge, Sentiment, Size, Breakpoint } from '../common';\nimport Circle, { CircleProps } from '../common/circle';\nimport { useMedia } from '../common/hooks/useMedia';\n\nexport type StatusIconProps = {\n sentiment: `${Sentiment}`;\n size: SizeSmall | SizeMedium | SizeLarge;\n};\n\nconst iconTypeMap = {\n positive: Check,\n neutral: Info,\n warning: Alert,\n negative: Cross,\n pending: ClockBorderless,\n info: Info,\n error: Cross,\n success: Check,\n} satisfies Record<`${Sentiment}`, React.ElementType>;\n\nconst mapLegacySize = {\n [String(Size.SMALL)]: 16,\n [String(Size.MEDIUM)]: 40,\n [String(Size.LARGE)]: 48,\n} satisfies Record<string, CircleProps['size']>;\n\nconst StatusIcon = ({ sentiment = 'neutral', size: sizeProp = 'md' }: StatusIconProps) => {\n const Icon = iconTypeMap[sentiment];\n const iconColor = sentiment === 'warning' || sentiment === 'pending' ? 'dark' : 'light';\n const isTinyViewport = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);\n const size = sizeProp === Size.SMALL && isTinyViewport ? 32 : mapLegacySize[sizeProp];\n return (\n <Circle\n as=\"span\"\n size={size}\n data-testid=\"status-icon\"\n className={clsx('status-circle', `status-circle-${sizeProp}`, sentiment)}\n >\n <Icon className={clsx('status-icon', iconColor)} />\n </Circle>\n );\n};\n\nexport default StatusIcon;\n"],"names":["iconTypeMap","positive","Check","neutral","Info","warning","Alert","negative","Cross","pending","ClockBorderless","info","error","success","mapLegacySize","String","Size","SMALL","MEDIUM","LARGE","StatusIcon","sentiment","size","sizeProp","Icon","iconColor","isTinyViewport","useMedia","Breakpoint","ZOOM_400","_jsx","Circle","as","className","clsx","children"],"mappings":";;;;;;;;AAYA,MAAMA,WAAW,GAAG;AAClBC,EAAAA,QAAQ,EAAEC,KAAK;AACfC,EAAAA,OAAO,EAAEC,IAAI;AACbC,EAAAA,OAAO,EAAEC,KAAK;AACdC,EAAAA,QAAQ,EAAEC,KAAK;AACfC,EAAAA,OAAO,EAAEC,eAAe;AACxBC,EAAAA,IAAI,EAAEP,IAAI;AACVQ,EAAAA,KAAK,EAAEJ,KAAK;AACZK,EAAAA,OAAO,EAAEX,KAAAA;CAC0C,CAAA;AAErD,MAAMY,aAAa,GAAG;AACpB,EAAA,CAACC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,GAAG,EAAE;AACxB,EAAA,CAACF,MAAM,CAACC,IAAI,CAACE,MAAM,CAAC,GAAG,EAAE;AACzB,EAAA,CAACH,MAAM,CAACC,IAAI,CAACG,KAAK,CAAC,GAAG,EAAA;CACuB,CAAA;AAEzCC,MAAAA,UAAU,GAAGA,CAAC;AAAEC,EAAAA,SAAS,GAAG,SAAS;EAAEC,IAAI,EAAEC,QAAQ,GAAG,IAAA;AAAI,CAAmB,KAAI;AACvF,EAAA,MAAMC,IAAI,GAAGxB,WAAW,CAACqB,SAAS,CAAC,CAAA;AACnC,EAAA,MAAMI,SAAS,GAAGJ,SAAS,KAAK,SAAS,IAAIA,SAAS,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;EACvF,MAAMK,cAAc,GAAGC,QAAQ,CAAC,eAAeC,UAAU,CAACC,QAAQ,CAAA,GAAA,CAAK,CAAC,CAAA;AACxE,EAAA,MAAMP,IAAI,GAAGC,QAAQ,KAAKP,IAAI,CAACC,KAAK,IAAIS,cAAc,GAAG,EAAE,GAAGZ,aAAa,CAACS,QAAQ,CAAC,CAAA;EACrF,oBACEO,GAAA,CAACC,MAAM,EAAA;AACLC,IAAAA,EAAE,EAAC,MAAM;AACTV,IAAAA,IAAI,EAAEA,IAAK;AACX,IAAA,aAAA,EAAY,aAAa;IACzBW,SAAS,EAAEC,IAAI,CAAC,eAAe,EAAE,iBAAiBX,QAAQ,CAAA,CAAE,EAAEF,SAAS,CAAE;IAAAc,QAAA,eAEzEL,GAAA,CAACN,IAAI,EAAA;AAACS,MAAAA,SAAS,EAAEC,IAAI,CAAC,aAAa,EAAET,SAAS,CAAA;KAChD,CAAA;AAAA,GAAQ,CAAC,CAAA;AAEb;;;;"}
1
+ {"version":3,"file":"StatusIcon.mjs","sources":["../../src/statusIcon/StatusIcon.tsx"],"sourcesContent":["import { Info, Alert, Cross, Check, ClockBorderless } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { useIntl } from 'react-intl';\n\nimport { SizeSmall, SizeMedium, SizeLarge, Sentiment, Size, Breakpoint } from '../common';\nimport Circle, { CircleProps } from '../common/circle';\nimport { useMedia } from '../common/hooks/useMedia';\n\nimport messages from './StatusIcon.messages';\n\nexport type StatusIconProps = {\n sentiment: `${Sentiment}`;\n size: SizeSmall | SizeMedium | SizeLarge;\n /**\n * Override for the sentiment's-derived, default, accessible\n * name announced by the screen readers. <br />\n * Using `null` will render the icon purely presentational.\n * */\n iconLabel?: string | null;\n};\n\nconst mapLegacySize = {\n [String(Size.SMALL)]: 16,\n [String(Size.MEDIUM)]: 40,\n [String(Size.LARGE)]: 48,\n} satisfies Record<string, CircleProps['size']>;\n\nconst StatusIcon = ({\n sentiment = 'neutral',\n size: sizeProp = 'md',\n iconLabel,\n}: StatusIconProps) => {\n const intl = useIntl();\n\n const iconMetaBySentiment: Record<\n `${Sentiment}`,\n {\n Icon: React.ElementType;\n defaultIconLabel: string;\n }\n > = {\n [Sentiment.NEGATIVE]: {\n Icon: Cross,\n defaultIconLabel: intl.formatMessage(messages.errorLabel),\n },\n [Sentiment.POSITIVE]: {\n Icon: Check,\n defaultIconLabel: intl.formatMessage(messages.successLabel),\n },\n [Sentiment.WARNING]: {\n Icon: Alert,\n defaultIconLabel: intl.formatMessage(messages.warningLabel),\n },\n [Sentiment.PENDING]: {\n Icon: ClockBorderless,\n defaultIconLabel: intl.formatMessage(messages.pendingLabel),\n },\n [Sentiment.NEUTRAL]: {\n Icon: Info,\n defaultIconLabel: intl.formatMessage(messages.informationLabel),\n },\n // deprecated\n [Sentiment.ERROR]: {\n Icon: Cross,\n defaultIconLabel: intl.formatMessage(messages.errorLabel),\n },\n [Sentiment.INFO]: {\n Icon: Info,\n defaultIconLabel: intl.formatMessage(messages.informationLabel),\n },\n [Sentiment.SUCCESS]: {\n Icon: Check,\n defaultIconLabel: intl.formatMessage(messages.successLabel),\n },\n };\n const { Icon, defaultIconLabel } = iconMetaBySentiment[sentiment];\n\n const iconColor = sentiment === 'warning' || sentiment === 'pending' ? 'dark' : 'light';\n const isTinyViewport = useMedia(`(max-width: ${Breakpoint.ZOOM_400}px)`);\n const size = sizeProp === Size.SMALL && isTinyViewport ? 32 : mapLegacySize[sizeProp];\n return (\n <Circle\n as=\"span\"\n size={size}\n data-testid=\"status-icon\"\n className={clsx('status-circle', `status-circle-${sizeProp}`, sentiment)}\n >\n <Icon\n className={clsx('status-icon', iconColor)}\n title={iconLabel === null ? undefined : iconLabel || defaultIconLabel}\n />\n </Circle>\n );\n};\n\nexport default StatusIcon;\n"],"names":["mapLegacySize","String","Size","SMALL","MEDIUM","LARGE","StatusIcon","sentiment","size","sizeProp","iconLabel","intl","useIntl","iconMetaBySentiment","Sentiment","NEGATIVE","Icon","Cross","defaultIconLabel","formatMessage","messages","errorLabel","POSITIVE","Check","successLabel","WARNING","Alert","warningLabel","PENDING","ClockBorderless","pendingLabel","NEUTRAL","Info","informationLabel","ERROR","INFO","SUCCESS","iconColor","isTinyViewport","useMedia","Breakpoint","ZOOM_400","_jsx","Circle","as","className","clsx","children","title","undefined"],"mappings":";;;;;;;;;;;AAqBA,MAAMA,aAAa,GAAG;AACpB,EAAA,CAACC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,GAAG,EAAE;AACxB,EAAA,CAACF,MAAM,CAACC,IAAI,CAACE,MAAM,CAAC,GAAG,EAAE;AACzB,EAAA,CAACH,MAAM,CAACC,IAAI,CAACG,KAAK,CAAC,GAAG,EAAA;CACuB,CAAA;AAEzCC,MAAAA,UAAU,GAAGA,CAAC;AAClBC,EAAAA,SAAS,GAAG,SAAS;EACrBC,IAAI,EAAEC,QAAQ,GAAG,IAAI;AACrBC,EAAAA,SAAAA;AAAS,CACO,KAAI;AACpB,EAAA,MAAMC,IAAI,GAAGC,OAAO,EAAE,CAAA;AAEtB,EAAA,MAAMC,mBAAmB,GAMrB;IACF,CAACC,SAAS,CAACC,QAAQ,GAAG;AACpBC,MAAAA,IAAI,EAAEC,KAAK;AACXC,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACC,UAAU,CAAA;KACzD;IACD,CAACP,SAAS,CAACQ,QAAQ,GAAG;AACpBN,MAAAA,IAAI,EAAEO,KAAK;AACXL,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACI,YAAY,CAAA;KAC3D;IACD,CAACV,SAAS,CAACW,OAAO,GAAG;AACnBT,MAAAA,IAAI,EAAEU,KAAK;AACXR,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACO,YAAY,CAAA;KAC3D;IACD,CAACb,SAAS,CAACc,OAAO,GAAG;AACnBZ,MAAAA,IAAI,EAAEa,eAAe;AACrBX,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACU,YAAY,CAAA;KAC3D;IACD,CAAChB,SAAS,CAACiB,OAAO,GAAG;AACnBf,MAAAA,IAAI,EAAEgB,IAAI;AACVd,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACa,gBAAgB,CAAA;KAC/D;AACD;IACA,CAACnB,SAAS,CAACoB,KAAK,GAAG;AACjBlB,MAAAA,IAAI,EAAEC,KAAK;AACXC,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACC,UAAU,CAAA;KACzD;IACD,CAACP,SAAS,CAACqB,IAAI,GAAG;AAChBnB,MAAAA,IAAI,EAAEgB,IAAI;AACVd,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACa,gBAAgB,CAAA;KAC/D;IACD,CAACnB,SAAS,CAACsB,OAAO,GAAG;AACnBpB,MAAAA,IAAI,EAAEO,KAAK;AACXL,MAAAA,gBAAgB,EAAEP,IAAI,CAACQ,aAAa,CAACC,QAAQ,CAACI,YAAY,CAAA;AAC3D,KAAA;GACF,CAAA;EACD,MAAM;IAAER,IAAI;AAAEE,IAAAA,gBAAAA;AAAgB,GAAE,GAAGL,mBAAmB,CAACN,SAAS,CAAC,CAAA;AAEjE,EAAA,MAAM8B,SAAS,GAAG9B,SAAS,KAAK,SAAS,IAAIA,SAAS,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;EACvF,MAAM+B,cAAc,GAAGC,QAAQ,CAAC,eAAeC,UAAU,CAACC,QAAQ,CAAA,GAAA,CAAK,CAAC,CAAA;AACxE,EAAA,MAAMjC,IAAI,GAAGC,QAAQ,KAAKP,IAAI,CAACC,KAAK,IAAImC,cAAc,GAAG,EAAE,GAAGtC,aAAa,CAACS,QAAQ,CAAC,CAAA;EACrF,oBACEiC,GAAA,CAACC,MAAM,EAAA;AACLC,IAAAA,EAAE,EAAC,MAAM;AACTpC,IAAAA,IAAI,EAAEA,IAAK;AACX,IAAA,aAAA,EAAY,aAAa;IACzBqC,SAAS,EAAEC,IAAI,CAAC,eAAe,EAAE,iBAAiBrC,QAAQ,CAAA,CAAE,EAAEF,SAAS,CAAE;IAAAwC,QAAA,eAEzEL,GAAA,CAAC1B,IAAI,EAAA;AACH6B,MAAAA,SAAS,EAAEC,IAAI,CAAC,aAAa,EAAET,SAAS,CAAE;MAC1CW,KAAK,EAAEtC,SAAS,KAAK,IAAI,GAAGuC,SAAS,GAAGvC,SAAS,IAAIQ,gBAAAA;KAEzD,CAAA;AAAA,GAAQ,CAAC,CAAA;AAEb;;;;"}
@@ -0,0 +1,3 @@
1
+ .wds-alert__liveRegion {
2
+ display: contents;
3
+ }
@@ -216,6 +216,9 @@ div.critical-comms .critical-comms-body {
216
216
  .np-action-btn:not(:disabled):focus {
217
217
  box-shadow: none;
218
218
  }
219
+ .wds-alert__liveRegion {
220
+ display: contents;
221
+ }
219
222
  .tw-avatar {
220
223
  position: relative;
221
224
  -webkit-user-select: none;
@@ -24,6 +24,11 @@ export interface AlertProps {
24
24
  className?: string;
25
25
  /** An optional icon. If not provided, we will default the icon to something appropriate for the type */
26
26
  icon?: React.ReactNode;
27
+ /**
28
+ * Override for [StatusIcon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)
29
+ * announced by the screen readers
30
+ * */
31
+ statusIconLabel?: string;
27
32
  /** Title for the alert component */
28
33
  title?: string;
29
34
  /** The main body of the alert. Accepts plain text and bold words specified with **double stars */
@@ -33,8 +38,18 @@ export interface AlertProps {
33
38
  /** The type dictates which icon and colour will be used */
34
39
  type?: AlertType;
35
40
  variant?: `${Variant}`;
36
- /** Controls rendering of the Alert component. <br /> Toggle this prop instead using conditional rendering and logical AND (&&) operator, to make the component work with screen readers. */
41
+ /**
42
+ * Controls rendering of the Alert component. <br />
43
+ * Toggle this prop instead using conditional rendering and logical AND (&&)
44
+ * operator, to make the component work with screen readers.
45
+ * @deprecated use `dynamicRender`
46
+ * */
37
47
  active?: boolean;
48
+ /**
49
+ * Toggle this prop when dealing with multiple, dynamic Alerts, to make them
50
+ * work with screen readers. This is especially helpful for the BFF use cases.
51
+ * */
52
+ dynamicRender?: boolean;
38
53
  /** @deprecated Use `InlineAlert` instead. */
39
54
  arrow?: `${AlertArrowPosition}`;
40
55
  /** @deprecated Use `message` instead. Be aware `message` only accepts plain text or text with **bold** markdown. */
@@ -44,6 +59,6 @@ export interface AlertProps {
44
59
  /** @deprecated Alert component doesn't support `size` anymore, please remove this prop. */
45
60
  size?: `${Size}`;
46
61
  }
47
- export default function Alert({ arrow, action, children, className, dismissible, icon, onDismiss, message, size, title, type, variant, active, }: AlertProps): import("react").JSX.Element;
62
+ export default function Alert({ arrow, action, children, className, dismissible, icon, statusIconLabel, onDismiss, message, size, title, type, variant, active, dynamicRender, }: AlertProps): import("react").JSX.Element;
48
63
  export {};
49
64
  //# sourceMappingURL=Alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/alert/Alert.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,SAAS,EACT,IAAI,EAEJ,OAAO,EAER,MAAM,WAAW,CAAC;AASnB,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,kDAAkD;AAClD,KAAK,mBAAmB,GAAG,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;AACrF,KAAK,iBAAiB,GAAG,GACrB,SAAS,CAAC,QAAQ,GAClB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzB,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEhE,oBAAY,kBAAkB;IAC5B,QAAQ,YAAY;IACpB,GAAG,cAAc;IACjB,SAAS,aAAa;IACtB,WAAW,cAAc;IACzB,MAAM,gBAAgB;IACtB,YAAY,eAAe;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,yIAAyI;IACzI,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACvB,4LAA4L;IAC5L,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,oHAAoH;IACpH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;CAClB;AAeD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,SAAS,EACT,OAAO,EACP,IAAI,EACJ,KAAK,EACL,IAAgB,EAChB,OAAmB,EACnB,MAAa,GACd,EAAE,UAAU,+BAkHZ"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/alert/Alert.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,SAAS,EACT,IAAI,EAEJ,OAAO,EAER,MAAM,WAAW,CAAC;AASnB,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,kDAAkD;AAClD,KAAK,mBAAmB,GAAG,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;AACrF,KAAK,iBAAiB,GAAG,GACrB,SAAS,CAAC,QAAQ,GAClB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzB,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEhE,oBAAY,kBAAkB;IAC5B,QAAQ,YAAY;IACpB,GAAG,cAAc;IACjB,SAAS,aAAa;IACtB,WAAW,cAAc;IACzB,MAAM,gBAAgB;IACtB,YAAY,eAAe;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,yIAAyI;IACzI,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;SAGK;IACL,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACvB;;;;;SAKK;IACL,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;SAGK;IACL,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,oHAAoH;IACpH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;CAClB;AAeD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,eAAe,EACf,SAAS,EACT,OAAO,EACP,IAAI,EACJ,KAAK,EACL,IAAgB,EAChB,OAAmB,EACnB,MAAa,EACb,aAAqB,GACtB,EAAE,UAAU,+BAqHZ"}
@@ -8,6 +8,11 @@ export type FieldProps = {
8
8
  /** @deprecated use `description` prop instead */
9
9
  hint?: React.ReactNode;
10
10
  message?: React.ReactNode;
11
+ /**
12
+ * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)
13
+ * announced by the screen readers
14
+ * */
15
+ messageIconLabel?: string;
11
16
  description?: React.ReactNode;
12
17
  /** @deprecated use `message` and `type={Sentiment.NEGATIVE}` prop instead */
13
18
  error?: React.ReactNode;
@@ -15,5 +20,5 @@ export type FieldProps = {
15
20
  className?: string;
16
21
  children?: React.ReactNode;
17
22
  };
18
- export declare const Field: ({ id, label, required, message: propMessage, hint, description, sentiment: propType, className, children, ...props }: FieldProps) => import("react").JSX.Element;
23
+ export declare const Field: ({ id, label, required, message: propMessage, messageIconLabel, hint, description, sentiment: propType, className, children, ...props }: FieldProps) => import("react").JSX.Element;
19
24
  //# sourceMappingURL=Field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/field/Field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,MAAM,UAAU,GAAG;IACvB,6IAA6I;IAC7I,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sGAAsG;IACtG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,KAAK,yHAWf,UAAU,gCAoEZ,CAAC"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/field/Field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,MAAM,UAAU,GAAG;IACvB,6IAA6I;IAC7I,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sGAAsG;IACtG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;SAGK;IACL,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,KAAK,2IAYf,UAAU,gCAoEZ,CAAC"}
@@ -3,6 +3,7 @@ import { Sentiment } from '../common';
3
3
  export interface InlineAlertProps {
4
4
  id?: string;
5
5
  type?: `${Sentiment}`;
6
+ iconLabel?: string;
6
7
  className?: string;
7
8
  children: ReactNode;
8
9
  }
@@ -15,5 +16,5 @@ export interface InlineAlertProps {
15
16
  * <Field sentiment={..} message={..}>..</Field>
16
17
  * ```
17
18
  */
18
- export default function InlineAlert({ id, type, className, children, }: InlineAlertProps): import("react").JSX.Element;
19
+ export default function InlineAlert({ id, type, iconLabel, className, children, }: InlineAlertProps): import("react").JSX.Element;
19
20
  //# sourceMappingURL=InlineAlert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InlineAlert.d.ts","sourceRoot":"","sources":["../../../src/inlineAlert/InlineAlert.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,SAAS,EAAQ,MAAM,WAAW,CAAC;AAI5C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAUD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,EAAE,EACF,IAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,+BAgBlB"}
1
+ {"version":3,"file":"InlineAlert.d.ts","sourceRoot":"","sources":["../../../src/inlineAlert/InlineAlert.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,SAAS,EAAQ,MAAM,WAAW,CAAC;AAI5C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAUD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,EAAE,EACF,IAAgB,EAChB,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,+BAkBlB"}
@@ -2,7 +2,13 @@ import { SizeSmall, SizeMedium, SizeLarge, Sentiment } from '../common';
2
2
  export type StatusIconProps = {
3
3
  sentiment: `${Sentiment}`;
4
4
  size: SizeSmall | SizeMedium | SizeLarge;
5
+ /**
6
+ * Override for the sentiment's-derived, default, accessible
7
+ * name announced by the screen readers. <br />
8
+ * Using `null` will render the icon purely presentational.
9
+ * */
10
+ iconLabel?: string | null;
5
11
  };
6
- declare const StatusIcon: ({ sentiment, size: sizeProp }: StatusIconProps) => import("react").JSX.Element;
12
+ declare const StatusIcon: ({ sentiment, size: sizeProp, iconLabel, }: StatusIconProps) => import("react").JSX.Element;
7
13
  export default StatusIcon;
8
14
  //# sourceMappingURL=StatusIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusIcon.d.ts","sourceRoot":"","sources":["../../../src/statusIcon/StatusIcon.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAI1F,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC1C,CAAC;AAmBF,QAAA,MAAM,UAAU,kCAAsD,eAAe,gCAepF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"StatusIcon.d.ts","sourceRoot":"","sources":["../../../src/statusIcon/StatusIcon.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAM1F,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC;;;;SAIK;IACL,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAQF,QAAA,MAAM,UAAU,8CAIb,eAAe,gCA8DjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,29 @@
1
+ declare const _default: {
2
+ errorLabel: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ description: string;
6
+ };
7
+ successLabel: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ description: string;
11
+ };
12
+ warningLabel: {
13
+ id: string;
14
+ defaultMessage: string;
15
+ description: string;
16
+ };
17
+ pendingLabel: {
18
+ id: string;
19
+ defaultMessage: string;
20
+ description: string;
21
+ };
22
+ informationLabel: {
23
+ id: string;
24
+ defaultMessage: string;
25
+ description: string;
26
+ };
27
+ };
28
+ export default _default;
29
+ //# sourceMappingURL=StatusIcon.messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIcon.messages.d.ts","sourceRoot":"","sources":["../../../src/statusIcon/StatusIcon.messages.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBA+BG"}
@@ -40,6 +40,11 @@ export interface UploadProps extends WrappedComponentProps {
40
40
  usHelpImage?: React.ReactNode;
41
41
  usLabel?: string;
42
42
  usPlaceholder?: string;
43
+ /**
44
+ * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)
45
+ * announced by the screen readers
46
+ * */
47
+ errorIconLabel?: string;
43
48
  /** @deprecated Only a single variant exists, please remove this prop. */
44
49
  uploadStep?: `${UploadStep}`;
45
50
  onCancel?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.d.ts","sourceRoot":"","sources":["../../../src/upload/Upload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Upload.d.ts","sourceRoot":"","sources":["../../../src/upload/Upload.tsx"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface UploadImageStepProps {
9
9
  usLabel: string;
10
10
  usPlaceholder: string;
11
11
  errorMessage?: string | string[];
12
+ errorIconLabel?: string;
12
13
  }
13
14
  export default class UploadImageStep extends PureComponent<UploadImageStepProps> {
14
15
  uploadInputRef: import("react").RefObject<HTMLInputElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImageStep.d.ts","sourceRoot":"","sources":["../../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,aAAa,EAAE,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,aAAa,CAAC,oBAAoB,CAAC;IAC9E,cAAc,8CAAiC;IAE/C,cAAc,aAMZ;IAEF,QAAQ,0FAyBN;IAEF,MAAM;CA0CP"}
1
+ {"version":3,"file":"uploadImageStep.d.ts","sourceRoot":"","sources":["../../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,aAAa,EAAE,MAAM,OAAO,CAAC;AAKjD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,aAAa,CAAC,oBAAoB,CAAC;IAC9E,cAAc,8CAAiC;IAE/C,cAAc,aAMZ;IAEF,QAAQ,0FAyBN;IAEF,MAAM;CAoDP"}
@@ -277,7 +277,8 @@ class Upload extends React.Component {
277
277
  csButtonText,
278
278
  csSuccessText,
279
279
  size,
280
- intl
280
+ intl,
281
+ errorIconLabel
281
282
  } = this.props;
282
283
  const {
283
284
  response,
@@ -338,7 +339,8 @@ class Upload extends React.Component {
338
339
  usPlaceholder: usPlaceholder || intl.formatMessage(Upload_messages.usPlaceholder, {
339
340
  maxSize: maxSize / 1000000
340
341
  }),
341
- errorMessage: this.getErrorMessage(response != null && typeof response === 'object' && 'status' in response && typeof response.status === 'number' ? response.status : undefined)
342
+ errorMessage: this.getErrorMessage(response != null && typeof response === 'object' && 'status' in response && typeof response.status === 'number' ? response.status : undefined),
343
+ errorIconLabel: errorIconLabel
342
344
  }), isProcessing && /*#__PURE__*/jsxRuntime.jsx(processingStep, {
343
345
  isComplete: isComplete,
344
346
  isError: isError,
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\nimport { ProcessIndicatorStatus } from '../processIndicator';\n\n/*\n * This delay is required for the isError/isSuccess to be fired after isProcessing so the processIndicator, will be\n * rendered first and then updated with the right status.\n */\nconst ANIMATION_FIX = 10;\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>\n */\n fetcher?: PostDataFetcher;\n maxSize?: number;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 700,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n intl.formatMessage(messages.csTooLargeMessage, {\n maxSize: maxSize / 1000000,\n })\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n onAnimationCompleted = async (status: ProcessIndicatorStatus) => {\n const { response, isProcessing, fileName } = this.state;\n const { animationDelay } = this.props;\n\n if (isProcessing && status === 'succeeded') {\n const { onSuccess } = this.props;\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n onSuccess ? () => onSuccess(response as string | Response, fileName) : undefined,\n );\n }, animationDelay);\n }\n\n if (isProcessing && status === 'failed') {\n const { onFailure } = this.props;\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n onFailure ? () => onFailure(response) : undefined,\n );\n }, animationDelay);\n }\n };\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n // Gives time to the animation callback to fire.\n this.timeouts = window.setTimeout(() => {\n this.setState({\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n });\n }, ANIMATION_FIX);\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (!isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={\n usPlaceholder ||\n intl.formatMessage(messages.usPlaceholder, { maxSize: maxSize / 1000000 })\n }\n />\n )}\n\n {/* Starts render the step when isSuccess is true so markup is there when css transition kicks in\n css transition to work properly */}\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={\n usPlaceholder ||\n intl.formatMessage(messages.usPlaceholder, { maxSize: maxSize / 1000000 })\n }\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onAnimationCompleted={async (status) => this.onAnimationCompleted(status)}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n"],"names":["ANIMATION_FIX","MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","onAnimationCompleted","onSuccess","window","setTimeout","onFailure","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","asyncResponse","type","handleOnClear","onCancel","clearTimeout","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","sources":["../../src/upload/Upload.tsx"],"sourcesContent":["import { Plus as PlusIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Size, Typography } from '../common';\nimport Title from '../title';\n\nimport messages from './Upload.messages';\nimport { UploadImageStep, ProcessingStep, CompleteStep } from './steps';\nimport { postData, asyncFileRead, isSizeValid, isTypeValid, getFileType } from './utils';\nimport { PostDataFetcher, PostDataHTTPOptions, ResponseError } from './utils/postData/postData';\nimport { ProcessIndicatorStatus } from '../processIndicator';\n\n/*\n * This delay is required for the isError/isSuccess to be fired after isProcessing so the processIndicator, will be\n * rendered first and then updated with the right status.\n */\nconst ANIMATION_FIX = 10;\nexport const MAX_SIZE_DEFAULT = 5000000;\n\nexport enum UploadStep {\n UPLOAD_IMAGE_STEP = 'uploadImageStep',\n}\n\nexport interface UploadProps extends WrappedComponentProps {\n animationDelay?: number;\n csButtonText?: string;\n csFailureText?: string;\n csSuccessText?: string;\n csTooLargeMessage?: string;\n csWrongTypeMessage?: string;\n httpOptions?: PostDataHTTPOptions & {\n fileInputName?: string;\n data?: Record<string, string | Blob>;\n };\n /**\n * You can provide a fetcher function with the same interface as the global fetch function, which is used by default.\n * function fetcher(input: RequestInfo, init?: RequestInit): Promise<Response>\n */\n fetcher?: PostDataFetcher;\n maxSize?: number;\n psButtonText?: string;\n psButtonDisabled?: boolean;\n psProcessingText?: string;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n /**\n * You can provide multiple rules separated by comma, e.g.: \"application/pdf,image/*\".\n * Using \"*\" will allow every file type to be uploaded.\n */\n usAccept?: string;\n usButtonText?: string;\n usButtonRetryText?: string;\n usDisabled?: boolean;\n usDropMessage?: string;\n usHelpImage?: React.ReactNode;\n usLabel?: string;\n usPlaceholder?: string;\n /**\n * Override for the [InlineAlert icon's default, accessible name](/?path=/docs/other-statusicon-accessibility--docs)\n * announced by the screen readers\n * */\n errorIconLabel?: string;\n /** @deprecated Only a single variant exists, please remove this prop. */\n uploadStep?: `${UploadStep}`;\n onCancel?: () => void;\n onFailure?: (error: unknown) => void;\n onStart?: (file: File) => void;\n onSuccess?: (response: string | Response, fileName: string) => void;\n}\n\ninterface UploadState {\n fileName: string;\n isDroppable: boolean;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n response: unknown;\n uploadedImage: string | undefined;\n}\n\nexport class Upload extends Component<UploadProps, UploadState> {\n declare props: UploadProps & Required<Pick<UploadProps, keyof typeof Upload.defaultProps>>;\n\n static defaultProps = {\n animationDelay: 700,\n maxSize: MAX_SIZE_DEFAULT,\n psButtonDisabled: false,\n size: 'md',\n usAccept: 'image/*',\n usDisabled: false,\n usLabel: '',\n } satisfies Partial<UploadProps>;\n\n dragCounter = 0;\n timeouts = 0;\n\n constructor(props: UploadProps) {\n super(props);\n\n this.state = {\n fileName: '',\n isDroppable: false,\n isComplete: false,\n isError: false,\n isImage: false,\n isProcessing: false,\n isSuccess: false,\n response: undefined,\n uploadedImage: undefined,\n };\n }\n\n getErrorMessage(status?: number) {\n const { csFailureText, csTooLargeMessage, csWrongTypeMessage, maxSize, intl } = this.props;\n switch (status) {\n case 413:\n return (\n csTooLargeMessage ||\n intl.formatMessage(messages.csTooLargeMessage, {\n maxSize: maxSize / 1000000,\n })\n );\n case 415:\n return csWrongTypeMessage || intl.formatMessage(messages.csWrongTypeMessage);\n default:\n return csFailureText || intl.formatMessage(messages.csFailureText);\n }\n }\n\n onDragLeave(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter -= 1;\n if (this.dragCounter === 0) {\n this.setState({ isDroppable: false });\n }\n }\n\n onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n this.dragCounter += 1;\n const { usDisabled } = this.props;\n const { isProcessing } = this.state;\n if (this.dragCounter === 1 && !usDisabled && !isProcessing) {\n this.setState({ isDroppable: true });\n }\n }\n\n async onDrop(event: React.DragEvent<HTMLDivElement>) {\n const { isProcessing } = this.state;\n event.preventDefault();\n if (!isProcessing) {\n this.reset();\n }\n\n if (event.dataTransfer?.files?.[0]) {\n await this.fileDropped(event.dataTransfer.files[0]);\n }\n }\n\n onAnimationCompleted = async (status: ProcessIndicatorStatus) => {\n const { response, isProcessing, fileName } = this.state;\n const { animationDelay } = this.props;\n\n if (isProcessing && status === 'succeeded') {\n const { onSuccess } = this.props;\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n onSuccess ? () => onSuccess(response as string | Response, fileName) : undefined,\n );\n }, animationDelay);\n }\n\n if (isProcessing && status === 'failed') {\n const { onFailure } = this.props;\n this.timeouts = window.setTimeout(() => {\n this.setState(\n {\n isProcessing: false,\n isComplete: true,\n },\n onFailure ? () => onFailure(response) : undefined,\n );\n }, animationDelay);\n }\n };\n\n asyncPost = async (file: File) => {\n const { httpOptions, fetcher } = this.props;\n if (httpOptions == null) {\n throw new Error('Cannot find HTTP options');\n }\n\n const { fileInputName = file.name, data = {} } = httpOptions;\n\n const formData = new FormData();\n formData.append(fileInputName, file);\n Object.keys(data).forEach((key) => formData.append(key, data[key]));\n return postData(httpOptions, formData, fetcher);\n };\n\n asyncResponse = (response: unknown, type: 'success' | 'error') => {\n // Gives time to the animation callback to fire.\n this.timeouts = window.setTimeout(() => {\n this.setState({\n response,\n isError: type === 'error',\n isSuccess: type === 'success',\n });\n }, ANIMATION_FIX);\n };\n\n handleOnClear: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n const { onCancel } = this.props;\n onCancel?.();\n\n this.reset();\n };\n\n reset = () => {\n this.dragCounter = 0;\n window.clearTimeout(this.timeouts);\n this.setState({\n isComplete: false,\n isError: false,\n isProcessing: false,\n isSuccess: false,\n });\n };\n\n showDataImage = (dataUrl: string) => {\n const { isImage } = this.state;\n if (isImage) {\n this.setState({\n uploadedImage: dataUrl,\n });\n }\n };\n\n fileDropped = async (file: File) => {\n const { httpOptions, maxSize, onStart, usDisabled, usAccept } = this.props;\n const { isProcessing } = this.state;\n\n if (usDisabled || isProcessing) {\n return false;\n }\n\n if (!file) {\n throw new Error('Could not retrieve file');\n }\n\n this.setState({\n fileName: file.name,\n isDroppable: false,\n isProcessing: true,\n });\n\n onStart?.(file);\n\n let file64 = null;\n\n try {\n file64 = await asyncFileRead(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n }\n\n if (!file64) {\n return false;\n }\n\n this.setState({\n isImage: getFileType(file, file64).includes('image'),\n });\n\n if (!isTypeValid(file, usAccept, file64)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (!isSizeValid(file, maxSize)) {\n this.asyncResponse(\n new ResponseError(\n new Response(null, {\n status: 413,\n statusText: 'Request Entity Too Large',\n }),\n ),\n 'error',\n );\n return false;\n }\n\n if (httpOptions) {\n // Post the file to provided endpoint\n let response;\n try {\n response = await this.asyncPost(file);\n } catch (error) {\n this.asyncResponse(error, 'error');\n return false;\n }\n this.asyncResponse(response, 'success');\n this.showDataImage(file64);\n return true;\n }\n // Post on form submit. And return the encoded image.\n this.showDataImage(file64);\n this.asyncResponse(file64, 'success');\n return true;\n };\n\n render() {\n const {\n maxSize,\n usDropMessage,\n usAccept,\n usButtonText,\n usButtonRetryText,\n usDisabled,\n usHelpImage,\n usLabel,\n usPlaceholder,\n psButtonText,\n psProcessingText,\n psButtonDisabled,\n csButtonText,\n csSuccessText,\n size,\n intl,\n errorIconLabel,\n } = this.props;\n\n const {\n response,\n fileName,\n isComplete,\n isDroppable,\n isError,\n isImage,\n isProcessing,\n isSuccess,\n uploadedImage,\n } = this.state;\n\n return (\n <div\n className={clsx('droppable-area', {\n droppable: true,\n 'tw-droppable-sm droppable-sm': size === 'sm',\n 'tw-droppable-md droppable-md': size === 'md' || !size,\n 'tw-droppable-lg droppable-lg': size === 'lg',\n 'droppable-dropping': isDroppable,\n 'droppable-processing': isProcessing,\n 'droppable-complete': isComplete && !isError,\n 'droppable-negative': isError && !isProcessing,\n })}\n onDragEnter={(event) => this.onDragEnter(event)}\n onDragLeave={(event) => this.onDragLeave(event)}\n onDrop={async (event) => this.onDrop(event)}\n onDragOver={(event) => event.preventDefault()}\n >\n {!isProcessing && !isComplete && (\n <UploadImageStep\n fileDropped={async (file) => this.fileDropped(file)}\n isComplete={isComplete}\n usAccept={usAccept}\n usButtonText={usButtonText || intl.formatMessage(messages.usButtonText)}\n usDisabled={usDisabled}\n usHelpImage={usHelpImage}\n usLabel={usLabel}\n usPlaceholder={\n usPlaceholder ||\n intl.formatMessage(messages.usPlaceholder, { maxSize: maxSize / 1000000 })\n }\n />\n )}\n\n {/* Starts render the step when isSuccess is true so markup is there when css transition kicks in\n css transition to work properly */}\n {(isSuccess || isComplete) && !isError && (\n <CompleteStep\n fileName={fileName}\n isComplete={isComplete}\n isImage={isImage}\n csButtonText={csButtonText || intl.formatMessage(messages.csButtonText)}\n csSuccessText={csSuccessText || intl.formatMessage(messages.csSuccessText)}\n uploadedImage={uploadedImage}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {isError && !isProcessing && (\n <UploadImageStep\n fileDropped={async (file) => {\n this.reset();\n await this.fileDropped(file);\n }}\n isComplete={!isError}\n usAccept={usAccept}\n usButtonText={usButtonRetryText || intl.formatMessage(messages.retry)}\n usDisabled={usDisabled}\n usHelpImage={null}\n usLabel={usLabel}\n usPlaceholder={\n usPlaceholder ||\n intl.formatMessage(messages.usPlaceholder, { maxSize: maxSize / 1000000 })\n }\n errorMessage={this.getErrorMessage(\n response != null &&\n typeof response === 'object' &&\n 'status' in response &&\n typeof response.status === 'number'\n ? response.status\n : undefined,\n )}\n errorIconLabel={errorIconLabel}\n />\n )}\n {isProcessing && (\n <ProcessingStep\n isComplete={isComplete}\n isError={isError}\n isSuccess={isSuccess}\n psButtonText={psButtonText || intl.formatMessage(messages.psButtonText)}\n psProcessingText={psProcessingText || intl.formatMessage(messages.psProcessingText)}\n psButtonDisabled={psButtonDisabled}\n onAnimationCompleted={async (status) => this.onAnimationCompleted(status)}\n onClear={(event) => this.handleOnClear(event)}\n />\n )}\n {!isProcessing && (\n <div className=\"droppable-dropping-card droppable-card\" aria-live=\"polite\">\n <div className=\"droppable-card-content\">\n <div className=\"circle circle-sm text-primary\">\n <PlusIcon size=\"16\" />\n </div>\n <Title type={Typography.TITLE_BODY} className=\"m-t-3\">\n {usDropMessage || intl.formatMessage(messages.usDropMessage)}\n </Title>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default injectIntl(Upload);\n"],"names":["ANIMATION_FIX","MAX_SIZE_DEFAULT","UploadStep","Upload","Component","defaultProps","animationDelay","maxSize","psButtonDisabled","size","usAccept","usDisabled","usLabel","dragCounter","timeouts","constructor","props","state","fileName","isDroppable","isComplete","isError","isImage","isProcessing","isSuccess","response","undefined","uploadedImage","getErrorMessage","status","csFailureText","csTooLargeMessage","csWrongTypeMessage","intl","formatMessage","messages","onDragLeave","event","preventDefault","setState","onDragEnter","onDrop","reset","dataTransfer","files","fileDropped","onAnimationCompleted","onSuccess","window","setTimeout","onFailure","asyncPost","file","httpOptions","fetcher","Error","fileInputName","name","data","formData","FormData","append","Object","keys","forEach","key","postData","asyncResponse","type","handleOnClear","onCancel","clearTimeout","showDataImage","dataUrl","onStart","file64","asyncFileRead","error","getFileType","includes","isTypeValid","ResponseError","Response","statusText","isSizeValid","render","usDropMessage","usButtonText","usButtonRetryText","usHelpImage","usPlaceholder","psButtonText","psProcessingText","csButtonText","csSuccessText","errorIconLabel","_jsxs","className","clsx","droppable","onDragOver","children","_jsx","UploadImageStep","CompleteStep","onClear","retry","errorMessage","ProcessingStep","PlusIcon","Title","Typography","TITLE_BODY","injectIntl"],"mappings":"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"}
@@ -273,7 +273,8 @@ class Upload extends Component {
273
273
  csButtonText,
274
274
  csSuccessText,
275
275
  size,
276
- intl
276
+ intl,
277
+ errorIconLabel
277
278
  } = this.props;
278
279
  const {
279
280
  response,
@@ -334,7 +335,8 @@ class Upload extends Component {
334
335
  usPlaceholder: usPlaceholder || intl.formatMessage(messages.usPlaceholder, {
335
336
  maxSize: maxSize / 1000000
336
337
  }),
337
- errorMessage: this.getErrorMessage(response != null && typeof response === 'object' && 'status' in response && typeof response.status === 'number' ? response.status : undefined)
338
+ errorMessage: this.getErrorMessage(response != null && typeof response === 'object' && 'status' in response && typeof response.status === 'number' ? response.status : undefined),
339
+ errorIconLabel: errorIconLabel
338
340
  }), isProcessing && /*#__PURE__*/jsx(ProcessingStep, {
339
341
  isComplete: isComplete,
340
342
  isError: isError,