@razorpay/blade 11.11.1 → 11.13.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 (136) hide show
  1. package/build/lib/native/components/Box/BaseBox/baseBoxStyles.js +1 -1
  2. package/build/lib/native/components/Box/BaseBox/baseBoxStyles.js.map +1 -1
  3. package/build/lib/native/components/Box/BaseBox/types/propsTypes.js.map +1 -1
  4. package/build/lib/native/components/Button/BaseButton/StyledBaseButton.native.js.map +1 -1
  5. package/build/lib/native/components/Input/BaseInput/AnimatedBaseInputWrapper.native.js +1 -1
  6. package/build/lib/native/components/Input/BaseInput/AnimatedBaseInputWrapper.native.js.map +1 -1
  7. package/build/lib/native/components/Input/BaseInput/BaseInput.js +2 -1
  8. package/build/lib/native/components/Input/BaseInput/BaseInput.js.map +1 -1
  9. package/build/lib/native/components/Input/BaseInput/BaseInputTagSlot.native.js +1 -1
  10. package/build/lib/native/components/Input/BaseInput/BaseInputTagSlot.native.js.map +1 -1
  11. package/build/lib/native/components/Input/BaseInput/BaseInputWrapper.js +1 -1
  12. package/build/lib/native/components/Input/BaseInput/BaseInputWrapper.js.map +1 -1
  13. package/build/lib/native/components/Input/BaseInput/StyledBaseInput.native.js +1 -1
  14. package/build/lib/native/components/Input/BaseInput/StyledBaseInput.native.js.map +1 -1
  15. package/build/lib/native/components/Input/BaseInput/baseInputStyles.js +1 -1
  16. package/build/lib/native/components/Input/BaseInput/baseInputStyles.js.map +1 -1
  17. package/build/lib/native/components/Input/BaseInput/useTaggedInput.js +13 -0
  18. package/build/lib/native/components/Input/BaseInput/useTaggedInput.js.map +1 -0
  19. package/build/lib/native/components/Input/TextArea/TextArea.js +2 -1
  20. package/build/lib/native/components/Input/TextArea/TextArea.js.map +1 -1
  21. package/build/lib/native/components/Input/TextInput/TextInput.js +2 -1
  22. package/build/lib/native/components/Input/TextInput/TextInput.js.map +1 -1
  23. package/build/lib/native/components/ProgressBar/CircularProgressBar.native.js +31 -0
  24. package/build/lib/native/components/ProgressBar/CircularProgressBar.native.js.map +1 -0
  25. package/build/lib/native/components/ProgressBar/CircularProgressLabel.js +17 -0
  26. package/build/lib/native/components/ProgressBar/CircularProgressLabel.js.map +1 -0
  27. package/build/lib/native/components/ProgressBar/ProgressBar.js +2 -1
  28. package/build/lib/native/components/ProgressBar/ProgressBar.js.map +1 -1
  29. package/build/lib/native/components/ProgressBar/ProgressBarFilled.native.js +1 -1
  30. package/build/lib/native/components/ProgressBar/ProgressBarFilled.native.js.map +1 -1
  31. package/build/lib/native/components/ProgressBar/progressBarTokens.js +6 -2
  32. package/build/lib/native/components/ProgressBar/progressBarTokens.js.map +1 -1
  33. package/build/lib/native/components/Tag/AnimatedTag.native.js.map +1 -1
  34. package/build/lib/native/components/Tag/Tag.js +1 -1
  35. package/build/lib/native/components/Tag/Tag.js.map +1 -1
  36. package/build/lib/native/components/Tag/getTagsGroup.js +1 -1
  37. package/build/lib/native/components/Tag/getTagsGroup.js.map +1 -1
  38. package/build/lib/native/components/Tag/tagAnimationConfig.js +1 -2
  39. package/build/lib/native/components/Tag/tagAnimationConfig.js.map +1 -1
  40. package/build/lib/native/components/Typography/BaseText/getBaseTextStyles.js +1 -1
  41. package/build/lib/native/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  42. package/build/lib/native/tokens/global/size.js +1 -1
  43. package/build/lib/native/tokens/global/size.js.map +1 -1
  44. package/build/lib/web/development/components/Box/BaseBox/baseBoxStyles.js +2 -1
  45. package/build/lib/web/development/components/Box/BaseBox/baseBoxStyles.js.map +1 -1
  46. package/build/lib/web/development/components/Box/BaseBox/types/propsTypes.js.map +1 -1
  47. package/build/lib/web/development/components/Input/BaseInput/AnimatedBaseInputWrapper.web.js +8 -2
  48. package/build/lib/web/development/components/Input/BaseInput/AnimatedBaseInputWrapper.web.js.map +1 -1
  49. package/build/lib/web/development/components/Input/BaseInput/BaseInput.js +13 -1
  50. package/build/lib/web/development/components/Input/BaseInput/BaseInput.js.map +1 -1
  51. package/build/lib/web/development/components/Input/BaseInput/BaseInputTagSlot.web.js +14 -1
  52. package/build/lib/web/development/components/Input/BaseInput/BaseInputTagSlot.web.js.map +1 -1
  53. package/build/lib/web/development/components/Input/BaseInput/BaseInputWrapper.js +4 -2
  54. package/build/lib/web/development/components/Input/BaseInput/BaseInputWrapper.js.map +1 -1
  55. package/build/lib/web/development/components/Input/BaseInput/StyledBaseInput.web.js +5 -2
  56. package/build/lib/web/development/components/Input/BaseInput/StyledBaseInput.web.js.map +1 -1
  57. package/build/lib/web/development/components/Input/BaseInput/baseInputStyles.js +2 -2
  58. package/build/lib/web/development/components/Input/BaseInput/baseInputStyles.js.map +1 -1
  59. package/build/lib/web/development/components/Input/BaseInput/useTaggedInput.js +172 -0
  60. package/build/lib/web/development/components/Input/BaseInput/useTaggedInput.js.map +1 -0
  61. package/build/lib/web/development/components/Input/TextArea/TextArea.js +54 -8
  62. package/build/lib/web/development/components/Input/TextArea/TextArea.js.map +1 -1
  63. package/build/lib/web/development/components/Input/TextInput/TextInput.js +51 -5
  64. package/build/lib/web/development/components/Input/TextInput/TextInput.js.map +1 -1
  65. package/build/lib/web/development/components/ProgressBar/CircularProgressBar.web.js +140 -0
  66. package/build/lib/web/development/components/ProgressBar/CircularProgressBar.web.js.map +1 -0
  67. package/build/lib/web/development/components/ProgressBar/CircularProgressLabel.js +38 -0
  68. package/build/lib/web/development/components/ProgressBar/CircularProgressLabel.js.map +1 -0
  69. package/build/lib/web/development/components/ProgressBar/ProgressBar.js +47 -10
  70. package/build/lib/web/development/components/ProgressBar/ProgressBar.js.map +1 -1
  71. package/build/lib/web/development/components/ProgressBar/ProgressBarFilled.web.js +6 -6
  72. package/build/lib/web/development/components/ProgressBar/ProgressBarFilled.web.js.map +1 -1
  73. package/build/lib/web/development/components/ProgressBar/progressBarTokens.js +45 -1
  74. package/build/lib/web/development/components/ProgressBar/progressBarTokens.js.map +1 -1
  75. package/build/lib/web/development/components/Tag/AnimatedTag.web.js +2 -3
  76. package/build/lib/web/development/components/Tag/AnimatedTag.web.js.map +1 -1
  77. package/build/lib/web/development/components/Tag/Tag.js +5 -6
  78. package/build/lib/web/development/components/Tag/Tag.js.map +1 -1
  79. package/build/lib/web/development/components/Tag/getTagsGroup.js +1 -1
  80. package/build/lib/web/development/components/Tag/getTagsGroup.js.map +1 -1
  81. package/build/lib/web/development/components/Tag/tagAnimationConfig.js +4 -2
  82. package/build/lib/web/development/components/Tag/tagAnimationConfig.js.map +1 -1
  83. package/build/lib/web/development/components/Typography/BaseText/getBaseTextStyles.js +2 -1
  84. package/build/lib/web/development/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  85. package/build/lib/web/development/tokens/global/size.js +4 -0
  86. package/build/lib/web/development/tokens/global/size.js.map +1 -1
  87. package/build/lib/web/production/components/Box/BaseBox/baseBoxStyles.js +2 -1
  88. package/build/lib/web/production/components/Box/BaseBox/baseBoxStyles.js.map +1 -1
  89. package/build/lib/web/production/components/Box/BaseBox/types/propsTypes.js.map +1 -1
  90. package/build/lib/web/production/components/Input/BaseInput/AnimatedBaseInputWrapper.web.js +8 -2
  91. package/build/lib/web/production/components/Input/BaseInput/AnimatedBaseInputWrapper.web.js.map +1 -1
  92. package/build/lib/web/production/components/Input/BaseInput/BaseInput.js +13 -1
  93. package/build/lib/web/production/components/Input/BaseInput/BaseInput.js.map +1 -1
  94. package/build/lib/web/production/components/Input/BaseInput/BaseInputTagSlot.web.js +14 -1
  95. package/build/lib/web/production/components/Input/BaseInput/BaseInputTagSlot.web.js.map +1 -1
  96. package/build/lib/web/production/components/Input/BaseInput/BaseInputWrapper.js +4 -2
  97. package/build/lib/web/production/components/Input/BaseInput/BaseInputWrapper.js.map +1 -1
  98. package/build/lib/web/production/components/Input/BaseInput/StyledBaseInput.web.js +5 -2
  99. package/build/lib/web/production/components/Input/BaseInput/StyledBaseInput.web.js.map +1 -1
  100. package/build/lib/web/production/components/Input/BaseInput/baseInputStyles.js +2 -2
  101. package/build/lib/web/production/components/Input/BaseInput/baseInputStyles.js.map +1 -1
  102. package/build/lib/web/production/components/Input/BaseInput/useTaggedInput.js +172 -0
  103. package/build/lib/web/production/components/Input/BaseInput/useTaggedInput.js.map +1 -0
  104. package/build/lib/web/production/components/Input/TextArea/TextArea.js +54 -8
  105. package/build/lib/web/production/components/Input/TextArea/TextArea.js.map +1 -1
  106. package/build/lib/web/production/components/Input/TextInput/TextInput.js +51 -5
  107. package/build/lib/web/production/components/Input/TextInput/TextInput.js.map +1 -1
  108. package/build/lib/web/production/components/ProgressBar/CircularProgressBar.web.js +140 -0
  109. package/build/lib/web/production/components/ProgressBar/CircularProgressBar.web.js.map +1 -0
  110. package/build/lib/web/production/components/ProgressBar/CircularProgressLabel.js +38 -0
  111. package/build/lib/web/production/components/ProgressBar/CircularProgressLabel.js.map +1 -0
  112. package/build/lib/web/production/components/ProgressBar/ProgressBar.js +47 -10
  113. package/build/lib/web/production/components/ProgressBar/ProgressBar.js.map +1 -1
  114. package/build/lib/web/production/components/ProgressBar/ProgressBarFilled.web.js +6 -6
  115. package/build/lib/web/production/components/ProgressBar/ProgressBarFilled.web.js.map +1 -1
  116. package/build/lib/web/production/components/ProgressBar/progressBarTokens.js +45 -1
  117. package/build/lib/web/production/components/ProgressBar/progressBarTokens.js.map +1 -1
  118. package/build/lib/web/production/components/Tag/AnimatedTag.web.js +2 -3
  119. package/build/lib/web/production/components/Tag/AnimatedTag.web.js.map +1 -1
  120. package/build/lib/web/production/components/Tag/Tag.js +5 -6
  121. package/build/lib/web/production/components/Tag/Tag.js.map +1 -1
  122. package/build/lib/web/production/components/Tag/getTagsGroup.js +1 -1
  123. package/build/lib/web/production/components/Tag/getTagsGroup.js.map +1 -1
  124. package/build/lib/web/production/components/Tag/tagAnimationConfig.js +4 -2
  125. package/build/lib/web/production/components/Tag/tagAnimationConfig.js.map +1 -1
  126. package/build/lib/web/production/components/Typography/BaseText/getBaseTextStyles.js +2 -1
  127. package/build/lib/web/production/components/Typography/BaseText/getBaseTextStyles.js.map +1 -1
  128. package/build/lib/web/production/tokens/global/size.js +4 -0
  129. package/build/lib/web/production/tokens/global/size.js.map +1 -1
  130. package/build/types/components/index.d.ts +30 -8
  131. package/build/types/components/index.native.d.ts +22 -8
  132. package/build/types/tokens/index.d.ts +4 -0
  133. package/build/types/tokens/index.native.d.ts +4 -0
  134. package/codemods/migrate-progressbar/transformers/__test__/migrate-progressbar.test.ts +28 -0
  135. package/codemods/migrate-progressbar/transformers/index.ts +89 -0
  136. package/package.json +1 -1
@@ -3,6 +3,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
4
  import React__default from 'react';
5
5
  import '../BaseInput/index.js';
6
+ import { useTaggedInput } from '../BaseInput/useTaggedInput.js';
6
7
  import isEmpty from '../../../utils/lodashButBetter/isEmpty.js';
7
8
  import '../../Icons/index.js';
8
9
  import '../../Button/IconButton/index.js';
@@ -23,7 +24,7 @@ import { MetaConstants } from '../../../utils/metaAttribute/metaConstants.js';
23
24
  import { CharacterCounter } from '../../Form/CharacterCounter/CharacterCounter.js';
24
25
  import { assignWithoutSideEffects } from '../../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
25
26
 
26
- var _excluded = ["label", "accessibilityLabel", "labelPosition", "necessityIndicator", "errorText", "helpText", "successText", "validationState", "defaultValue", "isDisabled", "isRequired", "name", "onChange", "onFocus", "onBlur", "onSubmit", "placeholder", "value", "maxCharacters", "showClearButton", "onClearButtonClick", "autoFocus", "numberOfLines", "testID", "size"];
27
+ var _excluded = ["label", "accessibilityLabel", "labelPosition", "necessityIndicator", "errorText", "helpText", "successText", "validationState", "defaultValue", "isDisabled", "isRequired", "name", "onChange", "onFocus", "onBlur", "onSubmit", "placeholder", "value", "maxCharacters", "showClearButton", "onClearButtonClick", "autoFocus", "numberOfLines", "testID", "size", "isTaggedInput", "tags", "onTagChange"];
27
28
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
29
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29
30
  // need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists
@@ -45,8 +46,8 @@ var _TextArea = function _TextArea(_ref, ref) {
45
46
  isRequired = _ref.isRequired,
46
47
  name = _ref.name,
47
48
  _onChange = _ref.onChange,
48
- onFocus = _ref.onFocus,
49
- onBlur = _ref.onBlur,
49
+ _onFocus = _ref.onFocus,
50
+ _onBlur = _ref.onBlur,
50
51
  onSubmit = _ref.onSubmit,
51
52
  placeholder = _ref.placeholder,
52
53
  value = _ref.value,
@@ -59,13 +60,36 @@ var _TextArea = function _TextArea(_ref, ref) {
59
60
  testID = _ref.testID,
60
61
  _ref$size = _ref.size,
61
62
  size = _ref$size === void 0 ? 'medium' : _ref$size,
63
+ isTaggedInput = _ref.isTaggedInput,
64
+ tags = _ref.tags,
65
+ onTagChange = _ref.onTagChange,
62
66
  styledProps = _objectWithoutProperties(_ref, _excluded);
63
67
  var inputRef = React__default.useRef(null);
64
68
  var mergedRef = useMergeRefs(ref, inputRef);
65
- var _React$useState = React__default.useState(false),
69
+ var _React$useState = React__default.useState(autoFocus !== null && autoFocus !== void 0 ? autoFocus : false),
66
70
  _React$useState2 = _slicedToArray(_React$useState, 2),
67
- shouldShowClearButton = _React$useState2[0],
68
- setShouldShowClearButton = _React$useState2[1];
71
+ isInputFocussed = _React$useState2[0],
72
+ setIsInputFocussed = _React$useState2[1];
73
+ var _useTaggedInput = useTaggedInput({
74
+ tags: tags,
75
+ onTagChange: onTagChange,
76
+ isDisabled: isDisabled,
77
+ inputRef: inputRef,
78
+ isTaggedInput: isTaggedInput,
79
+ name: name,
80
+ value: value,
81
+ onChange: _onChange
82
+ }),
83
+ activeTagIndex = _useTaggedInput.activeTagIndex,
84
+ setActiveTagIndex = _useTaggedInput.setActiveTagIndex,
85
+ getTags = _useTaggedInput.getTags,
86
+ handleTaggedInputKeydown = _useTaggedInput.handleTaggedInputKeydown,
87
+ handleTaggedInputChange = _useTaggedInput.handleTaggedInputChange,
88
+ handleTagsClear = _useTaggedInput.handleTagsClear;
89
+ var _React$useState3 = React__default.useState(false),
90
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
91
+ shouldShowClearButton = _React$useState4[0],
92
+ setShouldShowClearButton = _React$useState4[1];
69
93
  React__default.useEffect(function () {
70
94
  setShouldShowClearButton(Boolean(showClearButton && ((value === null || value === void 0 ? void 0 : value.length) || (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.length))));
71
95
  }, [showClearButton, defaultValue, value]);
@@ -89,6 +113,7 @@ var _TextArea = function _TextArea(_ref, ref) {
89
113
  inputRef.current.focus();
90
114
  }
91
115
  }
116
+ handleTagsClear();
92
117
  // if the input field is controlled just call the click handler and the value change shall be left upto the consumer
93
118
  onClearButtonClick === null || onClearButtonClick === void 0 ? void 0 : onClearButtonClick();
94
119
  inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
@@ -102,10 +127,18 @@ var _TextArea = function _TextArea(_ref, ref) {
102
127
  return /*#__PURE__*/jsx(BaseInput, _objectSpread({
103
128
  as: "textarea",
104
129
  id: "textarea",
130
+ maxTagRows: "multiple",
105
131
  componentName: MetaConstants.TextArea,
106
132
  autoFocus: autoFocus,
107
133
  ref: mergedRef,
108
134
  label: label,
135
+ tags: isTaggedInput ? getTags({
136
+ size: size
137
+ }) : undefined,
138
+ activeTagIndex: activeTagIndex,
139
+ setActiveTagIndex: setActiveTagIndex,
140
+ isDropdownTrigger: isTaggedInput,
141
+ showAllTags: isInputFocussed,
109
142
  accessibilityLabel: accessibilityLabel,
110
143
  hideLabelText: !Boolean(label),
111
144
  labelPosition: labelPosition,
@@ -134,13 +167,26 @@ var _TextArea = function _TextArea(_ref, ref) {
134
167
  // hide the clear button when the input field is empty
135
168
  setShouldShowClearButton(false);
136
169
  }
170
+ handleTaggedInputChange({
171
+ name: name,
172
+ value: value
173
+ });
137
174
  _onChange === null || _onChange === void 0 ? void 0 : _onChange({
138
175
  name: name,
139
176
  value: value
140
177
  });
141
178
  },
142
- onFocus: onFocus,
143
- onBlur: onBlur,
179
+ onFocus: function onFocus(e) {
180
+ setIsInputFocussed(true);
181
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
182
+ },
183
+ onBlur: function onBlur(e) {
184
+ setIsInputFocussed(false);
185
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
186
+ },
187
+ onKeyDown: function onKeyDown(e) {
188
+ handleTaggedInputKeydown(e);
189
+ },
144
190
  onSubmit: onSubmit,
145
191
  trailingFooterSlot: function trailingFooterSlot(value) {
146
192
  var _value$length;
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","sources":["../../../../../../../src/components/Input/TextArea/TextArea.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport React from 'react';\nimport type { TextInput as TextInputReactNative } from 'react-native';\nimport type { BaseInputProps } from '../BaseInput';\nimport { BaseInput } from '../BaseInput';\nimport isEmpty from '~utils/lodashButBetter/isEmpty';\nimport { CloseIcon } from '~components/Icons';\nimport { IconButton } from '~components/Button/IconButton';\nimport BaseBox from '~components/Box/BaseBox';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { CharacterCounter } from '~components/Form/CharacterCounter';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getPlatformType } from '~utils';\nimport { useMergeRefs } from '~utils/useMergeRefs';\nimport type { BladeElementRef } from '~utils/types';\nimport { hintMarginTop } from '~components/Form/formTokens';\n\ntype TextAreaCommonProps = Pick<\n BaseInputProps,\n | 'label'\n | 'accessibilityLabel'\n | 'labelPosition'\n | 'necessityIndicator'\n | 'validationState'\n | 'helpText'\n | 'errorText'\n | 'successText'\n | 'placeholder'\n | 'defaultValue'\n | 'name'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'value'\n | 'isDisabled'\n | 'isRequired'\n | 'maxCharacters'\n | 'autoFocus'\n | 'numberOfLines'\n | 'testID'\n | 'size'\n> & {\n /**\n * Decides whether to render a clear icon button\n */\n showClearButton?: boolean;\n /**\n * Event handler to handle the onClick event for clear button. Used when `showClearButton` is `true`\n */\n onClearButtonClick?: () => void;\n} & StyledPropsBlade;\n\n/*\n Mandatory accessibilityLabel prop when label is not provided\n*/\ntype TextAreaPropsWithA11yLabel = {\n /**\n * Label to be shown for the input field\n */\n label?: undefined;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel: string;\n};\n\n/*\n Optional accessibilityLabel prop when label is provided\n*/\ntype TextAreaPropsWithLabel = {\n /**\n * Label to be shown for the input field\n */\n label: string;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel?: string;\n};\n\ntype TextAreaProps = (TextAreaPropsWithA11yLabel | TextAreaPropsWithLabel) & TextAreaCommonProps;\n\n// need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isReactNative = (_textInputRef: any): _textInputRef is TextInputReactNative => {\n return getPlatformType() === 'react-native';\n};\n\nconst _TextArea: React.ForwardRefRenderFunction<BladeElementRef, TextAreaProps> = (\n {\n label,\n accessibilityLabel,\n labelPosition,\n necessityIndicator,\n errorText,\n helpText,\n successText,\n validationState,\n defaultValue,\n isDisabled,\n isRequired,\n name,\n onChange,\n onFocus,\n onBlur,\n onSubmit,\n placeholder,\n value,\n maxCharacters,\n showClearButton,\n onClearButtonClick,\n autoFocus,\n numberOfLines = 2,\n testID,\n size = 'medium',\n ...styledProps\n },\n ref,\n) => {\n const inputRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, inputRef);\n\n const [shouldShowClearButton, setShouldShowClearButton] = React.useState(false);\n\n React.useEffect(() => {\n setShouldShowClearButton(Boolean(showClearButton && (value?.length || defaultValue?.length)));\n }, [showClearButton, defaultValue, value]);\n\n const renderInteractionElement = (): React.ReactNode => {\n if (shouldShowClearButton) {\n return (\n <BaseBox paddingTop=\"spacing.3\" marginTop=\"spacing.1\">\n <IconButton\n icon={CloseIcon}\n accessibilityLabel=\"Clear textarea content\"\n onClick={() => {\n if (isEmpty(value) && inputRef.current) {\n // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function\n if (isReactNative(inputRef.current)) {\n inputRef.current.clear();\n inputRef.current.focus();\n } else if (inputRef.current instanceof HTMLTextAreaElement) {\n inputRef.current.value = '';\n inputRef.current.focus();\n }\n }\n // if the input field is controlled just call the click handler and the value change shall be left upto the consumer\n onClearButtonClick?.();\n inputRef?.current?.focus();\n setShouldShowClearButton(false);\n }}\n />\n </BaseBox>\n );\n }\n\n return null;\n };\n\n return (\n <BaseInput\n as=\"textarea\"\n id=\"textarea\"\n componentName={MetaConstants.TextArea}\n autoFocus={autoFocus}\n ref={mergedRef}\n label={label as string}\n accessibilityLabel={accessibilityLabel}\n hideLabelText={!Boolean(label)}\n labelPosition={labelPosition}\n necessityIndicator={necessityIndicator}\n errorText={errorText}\n helpText={helpText}\n successText={successText}\n validationState={validationState}\n isDisabled={isDisabled}\n isRequired={isRequired}\n name={name}\n maxCharacters={maxCharacters}\n placeholder={placeholder}\n trailingInteractionElement={renderInteractionElement()}\n defaultValue={defaultValue}\n value={value}\n numberOfLines={numberOfLines}\n onChange={({ name, value }) => {\n if (showClearButton && value?.length) {\n // show the clear button when the user starts typing in\n setShouldShowClearButton(true);\n }\n\n if (shouldShowClearButton && !value?.length) {\n // hide the clear button when the input field is empty\n setShouldShowClearButton(false);\n }\n\n onChange?.({ name, value });\n }}\n onFocus={onFocus}\n onBlur={onBlur}\n onSubmit={onSubmit}\n trailingFooterSlot={(value) => {\n return maxCharacters ? (\n <BaseBox marginTop={hintMarginTop[size]} marginRight=\"spacing.1\">\n <CharacterCounter currentCount={value?.length ?? 0} maxCount={maxCharacters} />\n </BaseBox>\n ) : null;\n }}\n testID={testID}\n size={size}\n {...styledProps}\n />\n );\n};\n\nconst TextArea = assignWithoutSideEffects(React.forwardRef(_TextArea), {\n displayName: 'TextArea',\n});\n\nexport type { TextAreaProps };\nexport { TextArea };\n"],"names":["isReactNative","_textInputRef","getPlatformType","_TextArea","_ref","ref","label","accessibilityLabel","labelPosition","necessityIndicator","errorText","helpText","successText","validationState","defaultValue","isDisabled","isRequired","name","onChange","onFocus","onBlur","onSubmit","placeholder","value","maxCharacters","showClearButton","onClearButtonClick","autoFocus","_ref$numberOfLines","numberOfLines","testID","_ref$size","size","styledProps","_objectWithoutProperties","_excluded","inputRef","React","useRef","mergedRef","useMergeRefs","_React$useState","useState","_React$useState2","_slicedToArray","shouldShowClearButton","setShouldShowClearButton","useEffect","Boolean","length","renderInteractionElement","_jsx","BaseBox","paddingTop","marginTop","children","IconButton","icon","CloseIcon","onClick","_inputRef$current","isEmpty","current","clear","focus","HTMLTextAreaElement","BaseInput","_objectSpread","as","id","componentName","MetaConstants","TextArea","hideLabelText","trailingInteractionElement","_ref2","trailingFooterSlot","_value$length","hintMarginTop","marginRight","CharacterCounter","currentCount","maxCount","assignWithoutSideEffects","forwardRef","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"TextArea.js","sources":["../../../../../../../src/components/Input/TextArea/TextArea.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport React from 'react';\nimport type { TextInput as TextInputReactNative } from 'react-native';\nimport type { BaseInputProps } from '../BaseInput';\nimport { BaseInput } from '../BaseInput';\nimport type { TaggedInputProps } from '../BaseInput/useTaggedInput';\nimport { useTaggedInput } from '../BaseInput/useTaggedInput';\nimport isEmpty from '~utils/lodashButBetter/isEmpty';\nimport { CloseIcon } from '~components/Icons';\nimport { IconButton } from '~components/Button/IconButton';\nimport BaseBox from '~components/Box/BaseBox';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { CharacterCounter } from '~components/Form/CharacterCounter';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getPlatformType } from '~utils';\nimport { useMergeRefs } from '~utils/useMergeRefs';\nimport type { BladeElementRef, BladeElementRefWithValue } from '~utils/types';\nimport { hintMarginTop } from '~components/Form/formTokens';\n\ntype TextAreaCommonProps = Pick<\n BaseInputProps,\n | 'label'\n | 'accessibilityLabel'\n | 'labelPosition'\n | 'necessityIndicator'\n | 'validationState'\n | 'helpText'\n | 'errorText'\n | 'successText'\n | 'placeholder'\n | 'defaultValue'\n | 'name'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'onSubmit'\n | 'value'\n | 'isDisabled'\n | 'isRequired'\n | 'maxCharacters'\n | 'autoFocus'\n | 'numberOfLines'\n | 'testID'\n | 'size'\n> & {\n /**\n * Decides whether to render a clear icon button\n */\n showClearButton?: boolean;\n /**\n * Event handler to handle the onClick event for clear button. Used when `showClearButton` is `true`\n */\n onClearButtonClick?: () => void;\n} & TaggedInputProps &\n StyledPropsBlade;\n\n/*\n Mandatory accessibilityLabel prop when label is not provided\n*/\ntype TextAreaPropsWithA11yLabel = {\n /**\n * Label to be shown for the input field\n */\n label?: undefined;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel: string;\n};\n\n/*\n Optional accessibilityLabel prop when label is provided\n*/\ntype TextAreaPropsWithLabel = {\n /**\n * Label to be shown for the input field\n */\n label: string;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel?: string;\n};\n\ntype TextAreaProps = (TextAreaPropsWithA11yLabel | TextAreaPropsWithLabel) & TextAreaCommonProps;\n\n// need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isReactNative = (_textInputRef: any): _textInputRef is TextInputReactNative => {\n return getPlatformType() === 'react-native';\n};\n\nconst _TextArea: React.ForwardRefRenderFunction<BladeElementRef, TextAreaProps> = (\n {\n label,\n accessibilityLabel,\n labelPosition,\n necessityIndicator,\n errorText,\n helpText,\n successText,\n validationState,\n defaultValue,\n isDisabled,\n isRequired,\n name,\n onChange,\n onFocus,\n onBlur,\n onSubmit,\n placeholder,\n value,\n maxCharacters,\n showClearButton,\n onClearButtonClick,\n autoFocus,\n numberOfLines = 2,\n testID,\n size = 'medium',\n isTaggedInput,\n tags,\n onTagChange,\n ...styledProps\n },\n ref,\n) => {\n const inputRef = React.useRef<BladeElementRefWithValue>(null);\n const mergedRef = useMergeRefs(ref, inputRef);\n const [isInputFocussed, setIsInputFocussed] = React.useState(autoFocus ?? false);\n const {\n activeTagIndex,\n setActiveTagIndex,\n getTags,\n handleTaggedInputKeydown,\n handleTaggedInputChange,\n handleTagsClear,\n } = useTaggedInput({\n tags,\n onTagChange,\n isDisabled,\n inputRef,\n isTaggedInput,\n name,\n value,\n onChange,\n });\n\n const [shouldShowClearButton, setShouldShowClearButton] = React.useState(false);\n\n React.useEffect(() => {\n setShouldShowClearButton(Boolean(showClearButton && (value?.length || defaultValue?.length)));\n }, [showClearButton, defaultValue, value]);\n\n const renderInteractionElement = (): React.ReactNode => {\n if (shouldShowClearButton) {\n return (\n <BaseBox paddingTop=\"spacing.3\" marginTop=\"spacing.1\">\n <IconButton\n icon={CloseIcon}\n accessibilityLabel=\"Clear textarea content\"\n onClick={() => {\n if (isEmpty(value) && inputRef.current) {\n // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function\n if (isReactNative(inputRef.current)) {\n inputRef.current.clear();\n inputRef.current.focus();\n } else if (inputRef.current instanceof HTMLTextAreaElement) {\n inputRef.current.value = '';\n inputRef.current.focus();\n }\n }\n handleTagsClear();\n // if the input field is controlled just call the click handler and the value change shall be left upto the consumer\n onClearButtonClick?.();\n inputRef?.current?.focus();\n setShouldShowClearButton(false);\n }}\n />\n </BaseBox>\n );\n }\n\n return null;\n };\n\n return (\n <BaseInput\n as=\"textarea\"\n id=\"textarea\"\n maxTagRows=\"multiple\"\n componentName={MetaConstants.TextArea}\n autoFocus={autoFocus}\n ref={mergedRef}\n label={label as string}\n tags={isTaggedInput ? getTags({ size }) : undefined}\n activeTagIndex={activeTagIndex}\n setActiveTagIndex={setActiveTagIndex}\n isDropdownTrigger={isTaggedInput}\n showAllTags={isInputFocussed}\n accessibilityLabel={accessibilityLabel}\n hideLabelText={!Boolean(label)}\n labelPosition={labelPosition}\n necessityIndicator={necessityIndicator}\n errorText={errorText}\n helpText={helpText}\n successText={successText}\n validationState={validationState}\n isDisabled={isDisabled}\n isRequired={isRequired}\n name={name}\n maxCharacters={maxCharacters}\n placeholder={placeholder}\n trailingInteractionElement={renderInteractionElement()}\n defaultValue={defaultValue}\n value={value}\n numberOfLines={numberOfLines}\n onChange={({ name, value }) => {\n if (showClearButton && value?.length) {\n // show the clear button when the user starts typing in\n setShouldShowClearButton(true);\n }\n\n if (shouldShowClearButton && !value?.length) {\n // hide the clear button when the input field is empty\n setShouldShowClearButton(false);\n }\n\n handleTaggedInputChange({ name, value });\n onChange?.({ name, value });\n }}\n onFocus={(e) => {\n setIsInputFocussed(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsInputFocussed(false);\n onBlur?.(e);\n }}\n onKeyDown={(e) => {\n handleTaggedInputKeydown(e);\n }}\n onSubmit={onSubmit}\n trailingFooterSlot={(value) => {\n return maxCharacters ? (\n <BaseBox marginTop={hintMarginTop[size]} marginRight=\"spacing.1\">\n <CharacterCounter currentCount={value?.length ?? 0} maxCount={maxCharacters} />\n </BaseBox>\n ) : null;\n }}\n testID={testID}\n size={size}\n {...styledProps}\n />\n );\n};\n\nconst TextArea = assignWithoutSideEffects(React.forwardRef(_TextArea), {\n displayName: 'TextArea',\n});\n\nexport type { TextAreaProps };\nexport { TextArea };\n"],"names":["isReactNative","_textInputRef","getPlatformType","_TextArea","_ref","ref","label","accessibilityLabel","labelPosition","necessityIndicator","errorText","helpText","successText","validationState","defaultValue","isDisabled","isRequired","name","onChange","onFocus","onBlur","onSubmit","placeholder","value","maxCharacters","showClearButton","onClearButtonClick","autoFocus","_ref$numberOfLines","numberOfLines","testID","_ref$size","size","isTaggedInput","tags","onTagChange","styledProps","_objectWithoutProperties","_excluded","inputRef","React","useRef","mergedRef","useMergeRefs","_React$useState","useState","_React$useState2","_slicedToArray","isInputFocussed","setIsInputFocussed","_useTaggedInput","useTaggedInput","activeTagIndex","setActiveTagIndex","getTags","handleTaggedInputKeydown","handleTaggedInputChange","handleTagsClear","_React$useState3","_React$useState4","shouldShowClearButton","setShouldShowClearButton","useEffect","Boolean","length","renderInteractionElement","_jsx","BaseBox","paddingTop","marginTop","children","IconButton","icon","CloseIcon","onClick","_inputRef$current","isEmpty","current","clear","focus","HTMLTextAreaElement","BaseInput","_objectSpread","as","id","maxTagRows","componentName","MetaConstants","TextArea","undefined","isDropdownTrigger","showAllTags","hideLabelText","trailingInteractionElement","_ref2","e","onKeyDown","trailingFooterSlot","_value$length","hintMarginTop","marginRight","CharacterCounter","currentCount","maxCount","assignWithoutSideEffects","forwardRef","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA;AACA;AACA,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,aAAkB,EAA4C;AACnF,EAAA,OAAOC,eAAe,EAAE,KAAK,cAAc,CAAA;AAC7C,CAAC,CAAA;AAED,IAAMC,SAAyE,GAAG,SAA5EA,SAAyEA,CAAAC,IAAA,EAgC7EC,GAAG,EACA;AAAA,EAAA,IA/BDC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,kBAAkB,GAAAH,IAAA,CAAlBG,kBAAkB;IAClBC,aAAa,GAAAJ,IAAA,CAAbI,aAAa;IACbC,kBAAkB,GAAAL,IAAA,CAAlBK,kBAAkB;IAClBC,SAAS,GAAAN,IAAA,CAATM,SAAS;IACTC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IACRC,WAAW,GAAAR,IAAA,CAAXQ,WAAW;IACXC,eAAe,GAAAT,IAAA,CAAfS,eAAe;IACfC,YAAY,GAAAV,IAAA,CAAZU,YAAY;IACZC,UAAU,GAAAX,IAAA,CAAVW,UAAU;IACVC,UAAU,GAAAZ,IAAA,CAAVY,UAAU;IACVC,IAAI,GAAAb,IAAA,CAAJa,IAAI;IACJC,SAAQ,GAAAd,IAAA,CAARc,QAAQ;IACRC,QAAO,GAAAf,IAAA,CAAPe,OAAO;IACPC,OAAM,GAAAhB,IAAA,CAANgB,MAAM;IACNC,QAAQ,GAAAjB,IAAA,CAARiB,QAAQ;IACRC,WAAW,GAAAlB,IAAA,CAAXkB,WAAW;IACXC,KAAK,GAAAnB,IAAA,CAALmB,KAAK;IACLC,aAAa,GAAApB,IAAA,CAAboB,aAAa;IACbC,eAAe,GAAArB,IAAA,CAAfqB,eAAe;IACfC,kBAAkB,GAAAtB,IAAA,CAAlBsB,kBAAkB;IAClBC,SAAS,GAAAvB,IAAA,CAATuB,SAAS;IAAAC,kBAAA,GAAAxB,IAAA,CACTyB,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAG,KAAA,CAAA,GAAA,CAAC,GAAAA,kBAAA;IACjBE,MAAM,GAAA1B,IAAA,CAAN0B,MAAM;IAAAC,SAAA,GAAA3B,IAAA,CACN4B,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,SAAA;IACfE,aAAa,GAAA7B,IAAA,CAAb6B,aAAa;IACbC,IAAI,GAAA9B,IAAA,CAAJ8B,IAAI;IACJC,WAAW,GAAA/B,IAAA,CAAX+B,WAAW;AACRC,IAAAA,WAAW,GAAAC,wBAAA,CAAAjC,IAAA,EAAAkC,SAAA,CAAA,CAAA;AAIhB,EAAA,IAAMC,QAAQ,GAAGC,cAAK,CAACC,MAAM,CAA2B,IAAI,CAAC,CAAA;AAC7D,EAAA,IAAMC,SAAS,GAAGC,YAAY,CAACtC,GAAG,EAAEkC,QAAQ,CAAC,CAAA;AAC7C,EAAA,IAAAK,eAAA,GAA8CJ,cAAK,CAACK,QAAQ,CAAClB,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,KAAA,CAAA,GAATA,SAAS,GAAI,KAAK,CAAC;IAAAmB,gBAAA,GAAAC,cAAA,CAAAH,eAAA,EAAA,CAAA,CAAA;AAAzEI,IAAAA,eAAe,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,kBAAkB,GAAAH,gBAAA,CAAA,CAAA,CAAA,CAAA;EAC1C,IAAAI,eAAA,GAOIC,cAAc,CAAC;AACjBjB,MAAAA,IAAI,EAAJA,IAAI;AACJC,MAAAA,WAAW,EAAXA,WAAW;AACXpB,MAAAA,UAAU,EAAVA,UAAU;AACVwB,MAAAA,QAAQ,EAARA,QAAQ;AACRN,MAAAA,aAAa,EAAbA,aAAa;AACbhB,MAAAA,IAAI,EAAJA,IAAI;AACJM,MAAAA,KAAK,EAALA,KAAK;AACLL,MAAAA,QAAQ,EAARA,SAAAA;AACF,KAAC,CAAC;IAfAkC,cAAc,GAAAF,eAAA,CAAdE,cAAc;IACdC,iBAAiB,GAAAH,eAAA,CAAjBG,iBAAiB;IACjBC,OAAO,GAAAJ,eAAA,CAAPI,OAAO;IACPC,wBAAwB,GAAAL,eAAA,CAAxBK,wBAAwB;IACxBC,uBAAuB,GAAAN,eAAA,CAAvBM,uBAAuB;IACvBC,eAAe,GAAAP,eAAA,CAAfO,eAAe,CAAA;AAYjB,EAAA,IAAAC,gBAAA,GAA0DlB,cAAK,CAACK,QAAQ,CAAC,KAAK,CAAC;IAAAc,gBAAA,GAAAZ,cAAA,CAAAW,gBAAA,EAAA,CAAA,CAAA;AAAxEE,IAAAA,qBAAqB,GAAAD,gBAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,wBAAwB,GAAAF,gBAAA,CAAA,CAAA,CAAA,CAAA;EAEtDnB,cAAK,CAACsB,SAAS,CAAC,YAAM;IACpBD,wBAAwB,CAACE,OAAO,CAACtC,eAAe,KAAK,CAAAF,KAAK,KAALA,IAAAA,IAAAA,KAAK,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEyC,MAAM,MAAIlD,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAY,CAAEkD,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;GAC9F,EAAE,CAACvC,eAAe,EAAEX,YAAY,EAAES,KAAK,CAAC,CAAC,CAAA;AAE1C,EAAA,IAAM0C,wBAAwB,GAAG,SAA3BA,wBAAwBA,GAA0B;AACtD,IAAA,IAAIL,qBAAqB,EAAE;MACzB,oBACEM,GAAA,CAACC,OAAO,EAAA;AAACC,QAAAA,UAAU,EAAC,WAAW;AAACC,QAAAA,SAAS,EAAC,WAAW;QAAAC,QAAA,eACnDJ,GAAA,CAACK,UAAU,EAAA;AACTC,UAAAA,IAAI,EAAEC,SAAU;AAChBlE,UAAAA,kBAAkB,EAAC,wBAAwB;UAC3CmE,OAAO,EAAE,SAAAA,OAAAA,GAAM;AAAA,YAAA,IAAAC,iBAAA,CAAA;YACb,IAAIC,OAAO,CAACrD,KAAK,CAAC,IAAIgB,QAAQ,CAACsC,OAAO,EAAE;AACtC;AACA,cAAA,IAAI7E,aAAa,CAACuC,QAAQ,CAACsC,OAAO,CAAC,EAAE;AACnCtC,gBAAAA,QAAQ,CAACsC,OAAO,CAACC,KAAK,EAAE,CAAA;AACxBvC,gBAAAA,QAAQ,CAACsC,OAAO,CAACE,KAAK,EAAE,CAAA;AAC1B,eAAC,MAAM,IAAIxC,QAAQ,CAACsC,OAAO,YAAYG,mBAAmB,EAAE;AAC1DzC,gBAAAA,QAAQ,CAACsC,OAAO,CAACtD,KAAK,GAAG,EAAE,CAAA;AAC3BgB,gBAAAA,QAAQ,CAACsC,OAAO,CAACE,KAAK,EAAE,CAAA;AAC1B,eAAA;AACF,aAAA;AACAtB,YAAAA,eAAe,EAAE,CAAA;AACjB;AACA/B,YAAAA,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,KAAlBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAkB,EAAI,CAAA;AACtBa,YAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAAAoC,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,iBAAA,GAARpC,QAAQ,CAAEsC,OAAO,MAAA,IAAA,IAAAF,iBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAmBI,KAAK,EAAE,CAAA;YAC1BlB,wBAAwB,CAAC,KAAK,CAAC,CAAA;AACjC,WAAA;SACD,CAAA;AAAC,OACK,CAAC,CAAA;AAEd,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED,EAAA,oBACEK,GAAA,CAACe,SAAS,EAAAC,aAAA,CAAA;AACRC,IAAAA,EAAE,EAAC,UAAU;AACbC,IAAAA,EAAE,EAAC,UAAU;AACbC,IAAAA,UAAU,EAAC,UAAU;IACrBC,aAAa,EAAEC,aAAa,CAACC,QAAS;AACtC7D,IAAAA,SAAS,EAAEA,SAAU;AACrBtB,IAAAA,GAAG,EAAEqC,SAAU;AACfpC,IAAAA,KAAK,EAAEA,KAAgB;AACvB4B,IAAAA,IAAI,EAAED,aAAa,GAAGqB,OAAO,CAAC;AAAEtB,MAAAA,IAAI,EAAJA,IAAAA;KAAM,CAAC,GAAGyD,SAAU;AACpDrC,IAAAA,cAAc,EAAEA,cAAe;AAC/BC,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrCqC,IAAAA,iBAAiB,EAAEzD,aAAc;AACjC0D,IAAAA,WAAW,EAAE3C,eAAgB;AAC7BzC,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCqF,IAAAA,aAAa,EAAE,CAAC7B,OAAO,CAACzD,KAAK,CAAE;AAC/BE,IAAAA,aAAa,EAAEA,aAAc;AAC7BC,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCC,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,QAAQ,EAAEA,QAAS;AACnBC,IAAAA,WAAW,EAAEA,WAAY;AACzBC,IAAAA,eAAe,EAAEA,eAAgB;AACjCE,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,IAAI,EAAEA,IAAK;AACXO,IAAAA,aAAa,EAAEA,aAAc;AAC7BF,IAAAA,WAAW,EAAEA,WAAY;IACzBuE,0BAA0B,EAAE5B,wBAAwB,EAAG;AACvDnD,IAAAA,YAAY,EAAEA,YAAa;AAC3BS,IAAAA,KAAK,EAAEA,KAAM;AACbM,IAAAA,aAAa,EAAEA,aAAc;AAC7BX,IAAAA,QAAQ,EAAE,SAAAA,QAAA4E,CAAAA,KAAA,EAAqB;AAAA,MAAA,IAAlB7E,IAAI,GAAA6E,KAAA,CAAJ7E,IAAI;QAAEM,KAAK,GAAAuE,KAAA,CAALvE,KAAK,CAAA;MACtB,IAAIE,eAAe,IAAIF,KAAK,KAAA,IAAA,IAALA,KAAK,KAALA,KAAAA,CAAAA,IAAAA,KAAK,CAAEyC,MAAM,EAAE;AACpC;QACAH,wBAAwB,CAAC,IAAI,CAAC,CAAA;AAChC,OAAA;MAEA,IAAID,qBAAqB,IAAI,EAACrC,KAAK,KAAA,IAAA,IAALA,KAAK,KAALA,KAAAA,CAAAA,IAAAA,KAAK,CAAEyC,MAAM,CAAE,EAAA;AAC3C;QACAH,wBAAwB,CAAC,KAAK,CAAC,CAAA;AACjC,OAAA;AAEAL,MAAAA,uBAAuB,CAAC;AAAEvC,QAAAA,IAAI,EAAJA,IAAI;AAAEM,QAAAA,KAAK,EAALA,KAAAA;AAAM,OAAC,CAAC,CAAA;AACxCL,MAAAA,SAAQ,KAARA,IAAAA,IAAAA,SAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAQ,CAAG;AAAED,QAAAA,IAAI,EAAJA,IAAI;AAAEM,QAAAA,KAAK,EAALA,KAAAA;AAAM,OAAC,CAAC,CAAA;KAC3B;AACFJ,IAAAA,OAAO,EAAE,SAAAA,OAAC4E,CAAAA,CAAC,EAAK;MACd9C,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACxB9B,MAAAA,QAAO,aAAPA,QAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,QAAO,CAAG4E,CAAC,CAAC,CAAA;KACZ;AACF3E,IAAAA,MAAM,EAAE,SAAAA,MAAC2E,CAAAA,CAAC,EAAK;MACb9C,kBAAkB,CAAC,KAAK,CAAC,CAAA;AACzB7B,MAAAA,OAAM,aAANA,OAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,OAAM,CAAG2E,CAAC,CAAC,CAAA;KACX;AACFC,IAAAA,SAAS,EAAE,SAAAA,SAACD,CAAAA,CAAC,EAAK;MAChBxC,wBAAwB,CAACwC,CAAC,CAAC,CAAA;KAC3B;AACF1E,IAAAA,QAAQ,EAAEA,QAAS;AACnB4E,IAAAA,kBAAkB,EAAE,SAAAA,kBAAC1E,CAAAA,KAAK,EAAK;AAAA,MAAA,IAAA2E,aAAA,CAAA;AAC7B,MAAA,OAAO1E,aAAa,gBAClB0C,GAAA,CAACC,OAAO,EAAA;AAACE,QAAAA,SAAS,EAAE8B,aAAa,CAACnE,IAAI,CAAE;AAACoE,QAAAA,WAAW,EAAC,WAAW;QAAA9B,QAAA,eAC9DJ,GAAA,CAACmC,gBAAgB,EAAA;AAACC,UAAAA,YAAY,EAAAJ,CAAAA,aAAA,GAAE3E,KAAK,aAALA,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,KAAK,CAAEyC,MAAM,MAAAkC,IAAAA,IAAAA,aAAA,KAAAA,KAAAA,CAAAA,GAAAA,aAAA,GAAI,CAAE;AAACK,UAAAA,QAAQ,EAAE/E,aAAAA;SAAgB,CAAA;OACvE,CAAC,GACR,IAAI,CAAA;KACR;AACFM,IAAAA,MAAM,EAAEA,MAAO;AACfE,IAAAA,IAAI,EAAEA,IAAAA;GACFI,EAAAA,WAAW,CAChB,CAAC,CAAA;AAEN,CAAC,CAAA;AAEKoD,IAAAA,QAAQ,gBAAGgB,wBAAwB,eAAChE,cAAK,CAACiE,UAAU,CAACtG,SAAS,CAAC,EAAE;AACrEuG,EAAAA,WAAW,EAAE,UAAA;AACf,CAAC;;;;"}
@@ -4,6 +4,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
4
4
  import React__default, { useState } from 'react';
5
5
  import '../BaseInput/index.js';
6
6
  import { getKeyboardAndAutocompleteProps } from '../BaseInput/utils.js';
7
+ import { useTaggedInput } from '../BaseInput/useTaggedInput.js';
7
8
  import isEmpty from '../../../utils/lodashButBetter/isEmpty.js';
8
9
  import '../../Icons/index.js';
9
10
  import '../../Button/IconButton/index.js';
@@ -26,7 +27,7 @@ import { BaseBox } from '../../Box/BaseBox/BaseBox.web.js';
26
27
  import { CharacterCounter } from '../../Form/CharacterCounter/CharacterCounter.js';
27
28
  import { assignWithoutSideEffects } from '../../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
28
29
 
29
- var _excluded = ["label", "accessibilityLabel", "labelPosition", "placeholder", "type", "defaultValue", "name", "value", "maxCharacters", "onChange", "onClick", "onFocus", "onBlur", "onSubmit", "isDisabled", "necessityIndicator", "validationState", "errorText", "helpText", "successText", "isRequired", "icon", "prefix", "showClearButton", "onClearButtonClick", "isLoading", "suffix", "autoFocus", "keyboardReturnKeyType", "autoCompleteSuggestionType", "autoCapitalize", "testID", "size", "leadingIcon", "trailingIcon"];
30
+ var _excluded = ["label", "accessibilityLabel", "labelPosition", "placeholder", "type", "defaultValue", "name", "value", "maxCharacters", "onChange", "onClick", "onFocus", "onBlur", "onSubmit", "isDisabled", "necessityIndicator", "validationState", "errorText", "helpText", "successText", "isRequired", "icon", "prefix", "showClearButton", "onClearButtonClick", "isLoading", "suffix", "autoFocus", "keyboardReturnKeyType", "autoCompleteSuggestionType", "autoCapitalize", "testID", "size", "leadingIcon", "trailingIcon", "isTaggedInput", "tags", "onTagChange"];
30
31
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
31
32
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
32
33
  // need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists
@@ -48,8 +49,8 @@ var _TextInput = function _TextInput(_ref, ref) {
48
49
  maxCharacters = _ref.maxCharacters,
49
50
  _onChange = _ref.onChange,
50
51
  onClick = _ref.onClick,
51
- onFocus = _ref.onFocus,
52
- onBlur = _ref.onBlur,
52
+ _onFocus = _ref.onFocus,
53
+ _onBlur = _ref.onBlur,
53
54
  onSubmit = _ref.onSubmit,
54
55
  isDisabled = _ref.isDisabled,
55
56
  necessityIndicator = _ref.necessityIndicator,
@@ -73,6 +74,9 @@ var _TextInput = function _TextInput(_ref, ref) {
73
74
  size = _ref$size === void 0 ? 'medium' : _ref$size,
74
75
  leadingIcon = _ref.leadingIcon,
75
76
  trailingIcon = _ref.trailingIcon,
77
+ isTaggedInput = _ref.isTaggedInput,
78
+ tags = _ref.tags,
79
+ onTagChange = _ref.onTagChange,
76
80
  styledProps = _objectWithoutProperties(_ref, _excluded);
77
81
  var textInputRef = React__default.useRef(null);
78
82
  var mergedRef = useMergeRefs(ref, textInputRef);
@@ -80,6 +84,26 @@ var _TextInput = function _TextInput(_ref, ref) {
80
84
  _useState2 = _slicedToArray(_useState, 2),
81
85
  shouldShowClearButton = _useState2[0],
82
86
  setShouldShowClearButton = _useState2[1];
87
+ var _useState3 = useState(autoFocus !== null && autoFocus !== void 0 ? autoFocus : false),
88
+ _useState4 = _slicedToArray(_useState3, 2),
89
+ isInputFocussed = _useState4[0],
90
+ setIsInputFocussed = _useState4[1];
91
+ var _useTaggedInput = useTaggedInput({
92
+ isTaggedInput: isTaggedInput,
93
+ tags: tags,
94
+ onTagChange: onTagChange,
95
+ isDisabled: isDisabled,
96
+ onChange: _onChange,
97
+ name: name,
98
+ value: value,
99
+ inputRef: textInputRef
100
+ }),
101
+ activeTagIndex = _useTaggedInput.activeTagIndex,
102
+ setActiveTagIndex = _useTaggedInput.setActiveTagIndex,
103
+ getTags = _useTaggedInput.getTags,
104
+ handleTaggedInputKeydown = _useTaggedInput.handleTaggedInputKeydown,
105
+ handleTaggedInputChange = _useTaggedInput.handleTaggedInputChange,
106
+ handleTagsClear = _useTaggedInput.handleTagsClear;
83
107
  React__default.useEffect(function () {
84
108
  setShouldShowClearButton(Boolean(showClearButton && (defaultValue !== null && defaultValue !== void 0 ? defaultValue : value)));
85
109
  }, [showClearButton, defaultValue, value]);
@@ -106,6 +130,7 @@ var _TextInput = function _TextInput(_ref, ref) {
106
130
  textInputRef.current.focus();
107
131
  }
108
132
  }
133
+ handleTagsClear();
109
134
  // if the input field is controlled just call the click handler and the value change shall be left upto the consumer
110
135
  onClearButtonClick === null || onClearButtonClick === void 0 ? void 0 : onClearButtonClick();
111
136
  textInputRef === null || textInputRef === void 0 ? void 0 : (_textInputRef$current = textInputRef.current) === null || _textInputRef$current === void 0 ? void 0 : _textInputRef$current.focus();
@@ -130,6 +155,14 @@ var _TextInput = function _TextInput(_ref, ref) {
130
155
  value: value,
131
156
  name: name,
132
157
  maxCharacters: maxCharacters,
158
+ isDropdownTrigger: isTaggedInput,
159
+ tags: isTaggedInput ? getTags({
160
+ size: size
161
+ }) : undefined,
162
+ showAllTags: isInputFocussed,
163
+ maxTagRows: "single",
164
+ activeTagIndex: activeTagIndex,
165
+ setActiveTagIndex: setActiveTagIndex,
133
166
  onChange: function onChange(_ref2) {
134
167
  var name = _ref2.name,
135
168
  value = _ref2.value;
@@ -141,14 +174,27 @@ var _TextInput = function _TextInput(_ref, ref) {
141
174
  // hide the clear button when the input field is empty
142
175
  setShouldShowClearButton(false);
143
176
  }
177
+ handleTaggedInputChange({
178
+ name: name,
179
+ value: value
180
+ });
144
181
  _onChange === null || _onChange === void 0 ? void 0 : _onChange({
145
182
  name: name,
146
183
  value: value
147
184
  });
148
185
  },
149
186
  onClick: onClick,
150
- onFocus: onFocus,
151
- onBlur: onBlur,
187
+ onFocus: function onFocus(e) {
188
+ setIsInputFocussed(true);
189
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
190
+ },
191
+ onBlur: function onBlur(e) {
192
+ setIsInputFocussed(false);
193
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
194
+ },
195
+ onKeyDown: function onKeyDown(e) {
196
+ handleTaggedInputKeydown(e);
197
+ },
152
198
  onSubmit: onSubmit,
153
199
  isDisabled: isDisabled,
154
200
  necessityIndicator: necessityIndicator,
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.js","sources":["../../../../../../../src/components/Input/TextInput/TextInput.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TextInput as TextInputReactNative } from 'react-native';\nimport type { BaseInputProps } from '../BaseInput';\nimport { BaseInput } from '../BaseInput';\nimport { getKeyboardAndAutocompleteProps } from '../BaseInput/utils';\nimport isEmpty from '~utils/lodashButBetter/isEmpty';\nimport type { IconComponent } from '~components/Icons';\nimport { CloseIcon } from '~components/Icons';\nimport { IconButton } from '~components/Button/IconButton';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { CharacterCounter } from '~components/Form/CharacterCounter';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Spinner } from '~components/Spinner';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getPlatformType } from '~utils';\nimport { useMergeRefs } from '~utils/useMergeRefs';\nimport type { BladeElementRef } from '~utils/types';\nimport { hintMarginTop } from '~components/Form/formTokens';\n\n// Users should use PasswordInput for input type password\ntype Type = Exclude<BaseInputProps['type'], 'password'>;\n\ntype TextInputCommonProps = Pick<\n BaseInputProps,\n | 'label'\n | 'accessibilityLabel'\n | 'labelPosition'\n | 'necessityIndicator'\n | 'validationState'\n | 'helpText'\n | 'errorText'\n | 'successText'\n | 'placeholder'\n | 'defaultValue'\n | 'name'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'value'\n | 'isDisabled'\n | 'isRequired'\n | 'prefix'\n | 'suffix'\n | 'maxCharacters'\n | 'autoFocus'\n | 'keyboardReturnKeyType'\n | 'autoCompleteSuggestionType'\n | 'onSubmit'\n | 'autoCapitalize'\n | 'testID'\n | 'onClick'\n | 'size'\n | 'leadingIcon'\n | 'trailingButton'\n | 'trailingIcon'\n> & {\n /**\n * Decides whether to render a clear icon button\n */\n showClearButton?: boolean;\n\n /**\n * Event handler to handle the onClick event for clear button. Used when `showClearButton` is `true`\n */\n onClearButtonClick?: () => void;\n\n /**\n * Decides whether to show a loading spinner for the input field.\n */\n isLoading?: boolean;\n\n /**\n * Icon that will be rendered at the beginning of the input field\n * @deprecated Use `leadingIcon` instead. This prop will be removed in the next major version.\n */\n icon?: IconComponent;\n /**\n * Type of Input Field to be rendered. Use `PasswordInput` for type `password`\n *\n *\n * **Note on number type**\n *\n * `type=\"number\"` internally uses `inputMode=\"numeric\"` instead of HTML's `type=\"number\"` which also allows text characters.\n * If you have a usecase where you only want to support number input, you can handle it on validations end.\n *\n * Check out [Why the GOV.UK Design System team changed the input type for numbers](https://technology.blog.gov.uk/2020/02/24/why-the-gov-uk-design-system-team-changed-the-input-type-for-numbers/) for reasoning\n *\n * @default text\n */\n type?: Type;\n} & StyledPropsBlade;\n\n/*\n Mandatory accessibilityLabel prop when label is not provided\n*/\ntype TextInputPropsWithA11yLabel = {\n /**\n * Label to be shown for the input field\n */\n label?: undefined;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel: string;\n};\n\n/*\n Optional accessibilityLabel prop when label is provided\n*/\ntype TextInputPropsWithLabel = {\n /**\n * Label to be shown for the input field\n */\n label: string;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel?: string;\n};\n\ntype TextInputProps = (TextInputPropsWithA11yLabel | TextInputPropsWithLabel) &\n TextInputCommonProps;\n\n// need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isReactNative = (_textInputRef: any): _textInputRef is TextInputReactNative => {\n return getPlatformType() === 'react-native';\n};\n\nconst _TextInput: React.ForwardRefRenderFunction<BladeElementRef, TextInputProps> = (\n {\n label,\n accessibilityLabel,\n labelPosition = 'top',\n placeholder,\n type = 'text',\n defaultValue,\n name,\n value,\n maxCharacters,\n onChange,\n onClick,\n onFocus,\n onBlur,\n onSubmit,\n isDisabled,\n necessityIndicator,\n validationState,\n errorText,\n helpText,\n successText,\n isRequired,\n icon,\n prefix,\n showClearButton,\n onClearButtonClick,\n isLoading,\n suffix,\n autoFocus,\n keyboardReturnKeyType,\n autoCompleteSuggestionType,\n autoCapitalize,\n testID,\n size = 'medium',\n leadingIcon,\n trailingIcon,\n ...styledProps\n },\n ref,\n): ReactElement => {\n const textInputRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, textInputRef);\n const [shouldShowClearButton, setShouldShowClearButton] = useState(false);\n\n React.useEffect(() => {\n setShouldShowClearButton(Boolean(showClearButton && (defaultValue ?? value)));\n }, [showClearButton, defaultValue, value]);\n\n const renderInteractionElement = (): ReactNode => {\n if (isLoading) {\n return <Spinner accessibilityLabel=\"Loading Content\" color=\"primary\" />;\n }\n\n if (shouldShowClearButton) {\n return (\n <IconButton\n size=\"medium\"\n icon={CloseIcon}\n onClick={() => {\n if (isEmpty(value) && textInputRef.current) {\n // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function\n if (isReactNative(textInputRef.current)) {\n textInputRef.current.clear();\n textInputRef.current.focus();\n } else if (textInputRef.current instanceof HTMLInputElement) {\n textInputRef.current.value = '';\n textInputRef.current.focus();\n }\n }\n // if the input field is controlled just call the click handler and the value change shall be left upto the consumer\n onClearButtonClick?.();\n textInputRef?.current?.focus();\n setShouldShowClearButton(false);\n }}\n isDisabled={isDisabled}\n accessibilityLabel=\"Clear Input Content\"\n />\n );\n }\n\n return null;\n };\n\n return (\n <BaseInput\n id=\"textinput\"\n componentName={MetaConstants.TextInput}\n ref={mergedRef}\n label={label as string}\n accessibilityLabel={accessibilityLabel}\n hideLabelText={!Boolean(label)}\n labelPosition={labelPosition}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n name={name}\n maxCharacters={maxCharacters}\n onChange={({ name, value }) => {\n if (showClearButton && value?.length) {\n // show the clear button when the user starts typing in\n setShouldShowClearButton(true);\n }\n\n if (shouldShowClearButton && !value?.length) {\n // hide the clear button when the input field is empty\n setShouldShowClearButton(false);\n }\n\n onChange?.({ name, value });\n }}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n onSubmit={onSubmit}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isRequired={isRequired}\n leadingIcon={leadingIcon ?? icon}\n prefix={prefix}\n trailingInteractionElement={renderInteractionElement()}\n trailingIcon={trailingIcon}\n suffix={suffix}\n validationState={validationState}\n errorText={errorText}\n helpText={helpText}\n successText={successText}\n trailingFooterSlot={(value) => {\n return maxCharacters ? (\n <BaseBox marginTop={hintMarginTop[size]} marginRight=\"spacing.1\">\n <CharacterCounter\n currentCount={value?.length ?? 0}\n maxCount={maxCharacters}\n size={size}\n />\n </BaseBox>\n ) : null;\n }}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n testID={testID}\n {...getKeyboardAndAutocompleteProps({\n type,\n keyboardReturnKeyType,\n autoCompleteSuggestionType,\n autoCapitalize,\n })}\n size={size}\n {...styledProps}\n />\n );\n};\n\nconst TextInput = assignWithoutSideEffects(React.forwardRef(_TextInput), {\n displayName: 'TextInput',\n});\n\nexport type { TextInputProps };\nexport { TextInput };\n"],"names":["isReactNative","_textInputRef","getPlatformType","_TextInput","_ref","ref","label","accessibilityLabel","_ref$labelPosition","labelPosition","placeholder","_ref$type","type","defaultValue","name","value","maxCharacters","onChange","onClick","onFocus","onBlur","onSubmit","isDisabled","necessityIndicator","validationState","errorText","helpText","successText","isRequired","icon","prefix","showClearButton","onClearButtonClick","isLoading","suffix","autoFocus","keyboardReturnKeyType","autoCompleteSuggestionType","autoCapitalize","testID","_ref$size","size","leadingIcon","trailingIcon","styledProps","_objectWithoutProperties","_excluded","textInputRef","React","useRef","mergedRef","useMergeRefs","_useState","useState","_useState2","_slicedToArray","shouldShowClearButton","setShouldShowClearButton","useEffect","Boolean","renderInteractionElement","_jsx","Spinner","color","IconButton","CloseIcon","_textInputRef$current","isEmpty","current","clear","focus","HTMLInputElement","BaseInput","_objectSpread","id","componentName","MetaConstants","TextInput","hideLabelText","_ref2","length","trailingInteractionElement","trailingFooterSlot","_value$length","BaseBox","marginTop","hintMarginTop","marginRight","children","CharacterCounter","currentCount","maxCount","getKeyboardAndAutocompleteProps","assignWithoutSideEffects","forwardRef","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"TextInput.js","sources":["../../../../../../../src/components/Input/TextInput/TextInput.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TextInput as TextInputReactNative } from 'react-native';\nimport type { BaseInputProps } from '../BaseInput';\nimport { BaseInput } from '../BaseInput';\nimport { getKeyboardAndAutocompleteProps } from '../BaseInput/utils';\nimport type { TaggedInputProps } from '../BaseInput/useTaggedInput';\nimport { useTaggedInput } from '../BaseInput/useTaggedInput';\nimport isEmpty from '~utils/lodashButBetter/isEmpty';\nimport type { IconComponent } from '~components/Icons';\nimport { CloseIcon } from '~components/Icons';\nimport { IconButton } from '~components/Button/IconButton';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { CharacterCounter } from '~components/Form/CharacterCounter';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Spinner } from '~components/Spinner';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getPlatformType } from '~utils';\nimport { useMergeRefs } from '~utils/useMergeRefs';\nimport type { BladeElementRef, BladeElementRefWithValue } from '~utils/types';\nimport { hintMarginTop } from '~components/Form/formTokens';\n\n// Users should use PasswordInput for input type password\ntype Type = Exclude<BaseInputProps['type'], 'password'>;\n\ntype TextInputCommonProps = Pick<\n BaseInputProps,\n | 'label'\n | 'accessibilityLabel'\n | 'labelPosition'\n | 'necessityIndicator'\n | 'validationState'\n | 'helpText'\n | 'errorText'\n | 'successText'\n | 'placeholder'\n | 'defaultValue'\n | 'name'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'value'\n | 'isDisabled'\n | 'isRequired'\n | 'prefix'\n | 'suffix'\n | 'maxCharacters'\n | 'autoFocus'\n | 'keyboardReturnKeyType'\n | 'autoCompleteSuggestionType'\n | 'onSubmit'\n | 'autoCapitalize'\n | 'testID'\n | 'onClick'\n | 'size'\n | 'leadingIcon'\n | 'trailingButton'\n | 'trailingIcon'\n> & {\n /**\n * Decides whether to render a clear icon button\n */\n showClearButton?: boolean;\n\n /**\n * Event handler to handle the onClick event for clear button. Used when `showClearButton` is `true`\n */\n onClearButtonClick?: () => void;\n\n /**\n * Decides whether to show a loading spinner for the input field.\n */\n isLoading?: boolean;\n\n /**\n * Icon that will be rendered at the beginning of the input field\n * @deprecated Use `leadingIcon` instead. This prop will be removed in the next major version.\n */\n icon?: IconComponent;\n /**\n * Type of Input Field to be rendered. Use `PasswordInput` for type `password`\n *\n *\n * **Note on number type**\n *\n * `type=\"number\"` internally uses `inputMode=\"numeric\"` instead of HTML's `type=\"number\"` which also allows text characters.\n * If you have a usecase where you only want to support number input, you can handle it on validations end.\n *\n * Check out [Why the GOV.UK Design System team changed the input type for numbers](https://technology.blog.gov.uk/2020/02/24/why-the-gov-uk-design-system-team-changed-the-input-type-for-numbers/) for reasoning\n *\n * @default text\n */\n type?: Type;\n} & TaggedInputProps &\n StyledPropsBlade;\n\n/*\n Mandatory accessibilityLabel prop when label is not provided\n*/\ntype TextInputPropsWithA11yLabel = {\n /**\n * Label to be shown for the input field\n */\n label?: undefined;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel: string;\n};\n\n/*\n Optional accessibilityLabel prop when label is provided\n*/\ntype TextInputPropsWithLabel = {\n /**\n * Label to be shown for the input field\n */\n label: string;\n /**\n * Accessibility label for the input\n */\n accessibilityLabel?: string;\n};\n\ntype TextInputProps = (TextInputPropsWithA11yLabel | TextInputPropsWithLabel) &\n TextInputCommonProps;\n\n// need to do this to tell TS to infer type as TextInput of React Native and make it believe that `ref.current.clear()` exists\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isReactNative = (_textInputRef: any): _textInputRef is TextInputReactNative => {\n return getPlatformType() === 'react-native';\n};\n\nconst _TextInput: React.ForwardRefRenderFunction<BladeElementRef, TextInputProps> = (\n {\n label,\n accessibilityLabel,\n labelPosition = 'top',\n placeholder,\n type = 'text',\n defaultValue,\n name,\n value,\n maxCharacters,\n onChange,\n onClick,\n onFocus,\n onBlur,\n onSubmit,\n isDisabled,\n necessityIndicator,\n validationState,\n errorText,\n helpText,\n successText,\n isRequired,\n icon,\n prefix,\n showClearButton,\n onClearButtonClick,\n isLoading,\n suffix,\n autoFocus,\n keyboardReturnKeyType,\n autoCompleteSuggestionType,\n autoCapitalize,\n testID,\n size = 'medium',\n leadingIcon,\n trailingIcon,\n isTaggedInput,\n tags,\n onTagChange,\n ...styledProps\n },\n ref,\n): ReactElement => {\n const textInputRef = React.useRef<BladeElementRefWithValue>(null);\n const mergedRef = useMergeRefs(ref, textInputRef);\n const [shouldShowClearButton, setShouldShowClearButton] = useState(false);\n const [isInputFocussed, setIsInputFocussed] = useState(autoFocus ?? false);\n const {\n activeTagIndex,\n setActiveTagIndex,\n getTags,\n handleTaggedInputKeydown,\n handleTaggedInputChange,\n handleTagsClear,\n } = useTaggedInput({\n isTaggedInput,\n tags,\n onTagChange,\n isDisabled,\n onChange,\n name,\n value,\n inputRef: textInputRef,\n });\n\n React.useEffect(() => {\n setShouldShowClearButton(Boolean(showClearButton && (defaultValue ?? value)));\n }, [showClearButton, defaultValue, value]);\n\n const renderInteractionElement = (): ReactNode => {\n if (isLoading) {\n return <Spinner accessibilityLabel=\"Loading Content\" color=\"primary\" />;\n }\n\n if (shouldShowClearButton) {\n return (\n <IconButton\n size=\"medium\"\n icon={CloseIcon}\n onClick={() => {\n if (isEmpty(value) && textInputRef.current) {\n // when the input field is uncontrolled take the ref and clear the input and then call the onClearButtonClick function\n if (isReactNative(textInputRef.current)) {\n textInputRef.current.clear();\n textInputRef.current.focus();\n } else if (textInputRef.current instanceof HTMLInputElement) {\n textInputRef.current.value = '';\n textInputRef.current.focus();\n }\n }\n handleTagsClear();\n // if the input field is controlled just call the click handler and the value change shall be left upto the consumer\n onClearButtonClick?.();\n textInputRef?.current?.focus();\n setShouldShowClearButton(false);\n }}\n isDisabled={isDisabled}\n accessibilityLabel=\"Clear Input Content\"\n />\n );\n }\n\n return null;\n };\n\n return (\n <BaseInput\n id=\"textinput\"\n componentName={MetaConstants.TextInput}\n ref={mergedRef}\n label={label as string}\n accessibilityLabel={accessibilityLabel}\n hideLabelText={!Boolean(label)}\n labelPosition={labelPosition}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n name={name}\n maxCharacters={maxCharacters}\n isDropdownTrigger={isTaggedInput}\n tags={isTaggedInput ? getTags({ size }) : undefined}\n showAllTags={isInputFocussed}\n maxTagRows=\"single\"\n activeTagIndex={activeTagIndex}\n setActiveTagIndex={setActiveTagIndex}\n onChange={({ name, value }) => {\n if (showClearButton && value?.length) {\n // show the clear button when the user starts typing in\n setShouldShowClearButton(true);\n }\n\n if (shouldShowClearButton && !value?.length) {\n // hide the clear button when the input field is empty\n setShouldShowClearButton(false);\n }\n\n handleTaggedInputChange({ name, value });\n onChange?.({ name, value });\n }}\n onClick={onClick}\n onFocus={(e) => {\n setIsInputFocussed(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsInputFocussed(false);\n onBlur?.(e);\n }}\n onKeyDown={(e) => {\n handleTaggedInputKeydown(e);\n }}\n onSubmit={onSubmit}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isRequired={isRequired}\n leadingIcon={leadingIcon ?? icon}\n prefix={prefix}\n trailingInteractionElement={renderInteractionElement()}\n trailingIcon={trailingIcon}\n suffix={suffix}\n validationState={validationState}\n errorText={errorText}\n helpText={helpText}\n successText={successText}\n trailingFooterSlot={(value) => {\n return maxCharacters ? (\n <BaseBox marginTop={hintMarginTop[size]} marginRight=\"spacing.1\">\n <CharacterCounter\n currentCount={value?.length ?? 0}\n maxCount={maxCharacters}\n size={size}\n />\n </BaseBox>\n ) : null;\n }}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n testID={testID}\n {...getKeyboardAndAutocompleteProps({\n type,\n keyboardReturnKeyType,\n autoCompleteSuggestionType,\n autoCapitalize,\n })}\n size={size}\n {...styledProps}\n />\n );\n};\n\nconst TextInput = assignWithoutSideEffects(React.forwardRef(_TextInput), {\n displayName: 'TextInput',\n});\n\nexport type { TextInputProps };\nexport { TextInput };\n"],"names":["isReactNative","_textInputRef","getPlatformType","_TextInput","_ref","ref","label","accessibilityLabel","_ref$labelPosition","labelPosition","placeholder","_ref$type","type","defaultValue","name","value","maxCharacters","onChange","onClick","onFocus","onBlur","onSubmit","isDisabled","necessityIndicator","validationState","errorText","helpText","successText","isRequired","icon","prefix","showClearButton","onClearButtonClick","isLoading","suffix","autoFocus","keyboardReturnKeyType","autoCompleteSuggestionType","autoCapitalize","testID","_ref$size","size","leadingIcon","trailingIcon","isTaggedInput","tags","onTagChange","styledProps","_objectWithoutProperties","_excluded","textInputRef","React","useRef","mergedRef","useMergeRefs","_useState","useState","_useState2","_slicedToArray","shouldShowClearButton","setShouldShowClearButton","_useState3","_useState4","isInputFocussed","setIsInputFocussed","_useTaggedInput","useTaggedInput","inputRef","activeTagIndex","setActiveTagIndex","getTags","handleTaggedInputKeydown","handleTaggedInputChange","handleTagsClear","useEffect","Boolean","renderInteractionElement","_jsx","Spinner","color","IconButton","CloseIcon","_textInputRef$current","isEmpty","current","clear","focus","HTMLInputElement","BaseInput","_objectSpread","id","componentName","MetaConstants","TextInput","hideLabelText","isDropdownTrigger","undefined","showAllTags","maxTagRows","_ref2","length","e","onKeyDown","trailingInteractionElement","trailingFooterSlot","_value$length","BaseBox","marginTop","hintMarginTop","marginRight","children","CharacterCounter","currentCount","maxCount","getKeyboardAndAutocompleteProps","assignWithoutSideEffects","forwardRef","displayName"],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import styled, { keyframes, css } from 'styled-components';
3
+ import 'react';
4
+ import { pulseAnimation, getCircularProgressSVGTokens, circularProgressSizeTokens } from './progressBarTokens.js';
5
+ import { CircularProgressLabel } from './CircularProgressLabel.js';
6
+ import getIn from '../../utils/lodashButBetter/get.js';
7
+ import '../Box/BaseBox/index.js';
8
+ import '../../utils/index.js';
9
+ import '../../utils/makeMotionTime/index.web.js';
10
+ import '../Typography/index.js';
11
+ import '../Icons/_Svg/index.js';
12
+ import getBaseTextStyles from '../Typography/BaseText/getBaseTextStyles.js';
13
+ import { jsxs, jsx } from 'react/jsx-runtime';
14
+ import { getTextProps } from '../Typography/Text/Text.js';
15
+ import { castWebType } from '../../utils/platform/castUtils.js';
16
+ import { makeMotionTime } from '../../utils/makeMotionTime/makeMotionTime.web.js';
17
+ import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
18
+ import Svg from '../Icons/_Svg/Svg/Svg.web.js';
19
+ import Circle from '../Icons/_Svg/Circle/Circle.web.js';
20
+
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ var pulseKeyframes = /*#__PURE__*/keyframes(["0%{opacity:100;}50%{opacity:0.65;}100%{opacity:100;}"]);
24
+ var getPulseAnimationStyles = function getPulseAnimationStyles(_ref) {
25
+ var duration = _ref.duration,
26
+ easing = _ref.easing,
27
+ progressPercent = _ref.progressPercent,
28
+ isMeter = _ref.isMeter;
29
+ if (isMeter || progressPercent === 100) {
30
+ return css(["height:100%;width:100%;transition:stroke-dashoffset ", " ", ";"], duration, easing);
31
+ }
32
+ return css(["height:100%;width:100%;opacity:", ";background-color:", ";transition:stroke-dashoffset ", " ", ";animation:", " ", " ", " infinite;"], pulseAnimation.opacityInitial, pulseAnimation.backgroundColor, duration, easing, pulseKeyframes, duration, easing);
33
+ };
34
+ var StyledSVGText = /*#__PURE__*/styled.text.withConfig({
35
+ displayName: "CircularProgressBarweb__StyledSVGText",
36
+ componentId: "h4xj3g-0"
37
+ })(function (_ref2) {
38
+ var theme = _ref2.theme,
39
+ size = _ref2.size,
40
+ weight = _ref2.weight;
41
+ return getBaseTextStyles(_objectSpread({
42
+ theme: theme
43
+ }, getTextProps({
44
+ variant: 'body',
45
+ size: size,
46
+ weight: weight
47
+ })));
48
+ });
49
+ var DeterminatePulseAnimation = /*#__PURE__*/styled.circle.withConfig({
50
+ displayName: "CircularProgressBarweb__DeterminatePulseAnimation",
51
+ componentId: "h4xj3g-1"
52
+ })(function (_ref3) {
53
+ var theme = _ref3.theme,
54
+ pulseMotionDuration = _ref3.pulseMotionDuration,
55
+ motionEasing = _ref3.motionEasing,
56
+ progressPercent = _ref3.progressPercent,
57
+ isMeter = _ref3.isMeter;
58
+ var duration = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDuration)));
59
+ var easing = castWebType(getIn(theme.motion, motionEasing));
60
+ return getPulseAnimationStyles({
61
+ duration: duration,
62
+ easing: easing,
63
+ progressPercent: progressPercent,
64
+ isMeter: isMeter
65
+ });
66
+ });
67
+ var CircularProgressBarFilled = function CircularProgressBarFilled(_ref4) {
68
+ var progressPercent = _ref4.progressPercent,
69
+ fillColor = _ref4.fillColor,
70
+ backgroundColor = _ref4.backgroundColor,
71
+ _ref4$size = _ref4.size,
72
+ size = _ref4$size === void 0 ? 'small' : _ref4$size,
73
+ label = _ref4.label,
74
+ _ref4$showPercentage = _ref4.showPercentage,
75
+ showPercentage = _ref4$showPercentage === void 0 ? true : _ref4$showPercentage,
76
+ isMeter = _ref4.isMeter;
77
+ var _getCircularProgressS = getCircularProgressSVGTokens({
78
+ size: size,
79
+ progressPercent: progressPercent
80
+ }),
81
+ sqSize = _getCircularProgressS.sqSize,
82
+ strokeWidth = _getCircularProgressS.strokeWidth,
83
+ radius = _getCircularProgressS.radius,
84
+ viewBox = _getCircularProgressS.viewBox,
85
+ dashArray = _getCircularProgressS.dashArray,
86
+ dashOffset = _getCircularProgressS.dashOffset;
87
+ return /*#__PURE__*/jsxs(BaseBox, {
88
+ width: "fit-content",
89
+ textAlign: "center",
90
+ display: "flex",
91
+ flexDirection: "column",
92
+ alignItems: "center",
93
+ children: [/*#__PURE__*/jsxs(Svg, {
94
+ width: String(sqSize),
95
+ height: String(sqSize),
96
+ viewBox: viewBox,
97
+ children: [/*#__PURE__*/jsx(Circle, {
98
+ fill: "none",
99
+ stroke: backgroundColor,
100
+ cx: String(sqSize / 2),
101
+ cy: String(sqSize / 2),
102
+ r: String(radius),
103
+ strokeWidth: "".concat(strokeWidth, "px")
104
+ }), /*#__PURE__*/jsx(DeterminatePulseAnimation, {
105
+ progressPercent: progressPercent,
106
+ isMeter: isMeter,
107
+ fill: "none",
108
+ stroke: fillColor,
109
+ cx: sqSize / 2,
110
+ cy: sqSize / 2,
111
+ r: radius,
112
+ strokeWidth: "".concat(strokeWidth, "px")
113
+ // Start progress marker at 12 O'Clock
114
+ ,
115
+ transform: "rotate(-90 ".concat(sqSize / 2, " ").concat(sqSize / 2, ")"),
116
+ strokeDasharray: dashArray,
117
+ strokeDashoffset: dashOffset,
118
+ pulseMotionDuration: "duration.2xgentle",
119
+ pulseMotionDelay: "delay.long",
120
+ motionEasing: "easing.standard.revealing"
121
+ }), showPercentage && size !== 'small' && /*#__PURE__*/jsxs(StyledSVGText, {
122
+ size: circularProgressSizeTokens[size].percentTextSize,
123
+ weight: "semibold",
124
+ x: "50%",
125
+ y: "50%",
126
+ textAnchor: "middle",
127
+ dy: ".4em",
128
+ children: [progressPercent, "%"]
129
+ })]
130
+ }), /*#__PURE__*/jsx(CircularProgressLabel, {
131
+ progressPercent: progressPercent,
132
+ size: size,
133
+ label: label,
134
+ showPercentage: showPercentage
135
+ })]
136
+ });
137
+ };
138
+
139
+ export { CircularProgressBarFilled };
140
+ //# sourceMappingURL=CircularProgressBar.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircularProgressBar.web.js","sources":["../../../../../../src/components/ProgressBar/CircularProgressBar.web.tsx"],"sourcesContent":["import type { FlattenSimpleInterpolation } from 'styled-components';\nimport styled, { css, keyframes } from 'styled-components';\nimport React from 'react';\nimport type { CircularProgressBarFilledProps } from './types';\nimport {\n pulseAnimation,\n circularProgressSizeTokens,\n getCircularProgressSVGTokens,\n} from './progressBarTokens';\nimport { CircularProgressLabel } from './CircularProgressLabel';\nimport getIn from '~utils/lodashButBetter/get';\nimport BaseBox from '~components/Box/BaseBox';\nimport { castWebType } from '~utils';\nimport { makeMotionTime } from '~utils/makeMotionTime';\nimport type { TextProps } from '~components/Typography';\nimport { getTextProps } from '~components/Typography';\nimport { Svg, Circle } from '~components/Icons/_Svg';\nimport getBaseTextStyles from '~components/Typography/BaseText/getBaseTextStyles';\n\nconst pulseKeyframes = keyframes`\n 0% {\n opacity: 100;\n }\n 50% {\n opacity: 0.65;\n }\n 100% {\n opacity: 100;\n }\n`;\n\nconst getPulseAnimationStyles = ({\n duration,\n easing,\n progressPercent,\n isMeter,\n}: {\n duration: string;\n easing: string;\n progressPercent: number;\n isMeter: boolean;\n}): FlattenSimpleInterpolation => {\n if (isMeter || progressPercent === 100) {\n return css`\n height: 100%;\n width: 100%;\n transition: stroke-dashoffset ${duration} ${easing};\n `;\n }\n\n return css`\n height: 100%;\n width: 100%;\n opacity: ${pulseAnimation.opacityInitial};\n background-color: ${pulseAnimation.backgroundColor};\n transition: stroke-dashoffset ${duration} ${easing};\n animation: ${pulseKeyframes} ${duration} ${easing} infinite;\n `;\n};\n\nconst StyledSVGText = styled.text<Pick<TextProps<{ variant: 'body' }>, 'size' | 'weight'>>(\n ({ theme, size, weight }) => {\n return getBaseTextStyles({\n theme,\n ...getTextProps({ variant: 'body', size, weight }),\n });\n },\n);\n\nconst DeterminatePulseAnimation = styled.circle<\n Pick<\n CircularProgressBarFilledProps,\n 'pulseMotionDuration' | 'pulseMotionDelay' | 'motionEasing' | 'progressPercent' | 'isMeter'\n >\n>(({ theme, pulseMotionDuration, motionEasing, progressPercent, isMeter }) => {\n const duration = castWebType(makeMotionTime(getIn(theme.motion, pulseMotionDuration)));\n const easing = castWebType(getIn(theme.motion, motionEasing));\n\n return getPulseAnimationStyles({\n duration,\n easing,\n progressPercent,\n isMeter,\n });\n});\n\nconst CircularProgressBarFilled = ({\n progressPercent,\n fillColor,\n backgroundColor,\n size = 'small',\n label,\n showPercentage = true,\n isMeter,\n}: CircularProgressBarFilledProps): React.ReactElement => {\n const {\n sqSize,\n strokeWidth,\n radius,\n viewBox,\n dashArray,\n dashOffset,\n } = getCircularProgressSVGTokens({ size, progressPercent });\n\n return (\n <BaseBox\n width=\"fit-content\"\n textAlign=\"center\"\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n >\n <Svg width={String(sqSize)} height={String(sqSize)} viewBox={viewBox}>\n <Circle\n fill=\"none\"\n stroke={backgroundColor}\n cx={String(sqSize / 2)}\n cy={String(sqSize / 2)}\n r={String(radius)}\n strokeWidth={`${strokeWidth}px`}\n />\n\n <DeterminatePulseAnimation\n progressPercent={progressPercent}\n isMeter={isMeter}\n fill=\"none\"\n stroke={fillColor}\n cx={sqSize / 2}\n cy={sqSize / 2}\n r={radius}\n strokeWidth={`${strokeWidth}px`}\n // Start progress marker at 12 O'Clock\n transform={`rotate(-90 ${sqSize / 2} ${sqSize / 2})`}\n strokeDasharray={dashArray}\n strokeDashoffset={dashOffset}\n pulseMotionDuration=\"duration.2xgentle\"\n pulseMotionDelay=\"delay.long\"\n motionEasing=\"easing.standard.revealing\"\n />\n {showPercentage && size !== 'small' && (\n <StyledSVGText\n size={circularProgressSizeTokens[size].percentTextSize}\n weight=\"semibold\"\n x=\"50%\"\n y=\"50%\"\n textAnchor=\"middle\"\n dy=\".4em\"\n >\n {progressPercent}%\n </StyledSVGText>\n )}\n </Svg>\n\n <CircularProgressLabel\n progressPercent={progressPercent}\n size={size}\n label={label}\n showPercentage={showPercentage}\n />\n </BaseBox>\n );\n};\n\nexport { CircularProgressBarFilled };\n"],"names":["pulseKeyframes","keyframes","getPulseAnimationStyles","_ref","duration","easing","progressPercent","isMeter","css","pulseAnimation","opacityInitial","backgroundColor","StyledSVGText","styled","text","withConfig","displayName","componentId","_ref2","theme","size","weight","getBaseTextStyles","_objectSpread","getTextProps","variant","DeterminatePulseAnimation","circle","_ref3","pulseMotionDuration","motionEasing","castWebType","makeMotionTime","getIn","motion","CircularProgressBarFilled","_ref4","fillColor","_ref4$size","label","_ref4$showPercentage","showPercentage","_getCircularProgressS","getCircularProgressSVGTokens","sqSize","strokeWidth","radius","viewBox","dashArray","dashOffset","_jsxs","BaseBox","width","textAlign","display","flexDirection","alignItems","children","Svg","String","height","_jsx","Circle","fill","stroke","cx","cy","r","concat","transform","strokeDasharray","strokeDashoffset","pulseMotionDelay","circularProgressSizeTokens","percentTextSize","x","y","textAnchor","dy","CircularProgressLabel"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import 'react';
2
+ import '../Box/BaseBox/index.js';
3
+ import '../Typography/index.js';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+ import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
6
+ import { Text } from '../Typography/Text/Text.js';
7
+
8
+ var CircularProgressLabel = function CircularProgressLabel(_ref) {
9
+ var _label$trim;
10
+ var progressPercent = _ref.progressPercent,
11
+ _ref$size = _ref.size,
12
+ size = _ref$size === void 0 ? 'small' : _ref$size,
13
+ label = _ref.label,
14
+ _ref$showPercentage = _ref.showPercentage,
15
+ showPercentage = _ref$showPercentage === void 0 ? true : _ref$showPercentage;
16
+ var hasLabel = label && ((_label$trim = label.trim()) === null || _label$trim === void 0 ? void 0 : _label$trim.length) > 0;
17
+ return /*#__PURE__*/jsxs(BaseBox, {
18
+ display: "flex",
19
+ flexDirection: "column",
20
+ alignItems: "center",
21
+ children: [hasLabel && /*#__PURE__*/jsx(Text, {
22
+ marginTop: "spacing.3",
23
+ variant: "body",
24
+ weight: "regular",
25
+ size: "small",
26
+ children: label
27
+ }), showPercentage && size === 'small' && /*#__PURE__*/jsxs(Text, {
28
+ marginTop: hasLabel ? 'spacing.0' : 'spacing.3',
29
+ variant: "body",
30
+ weight: "semibold",
31
+ size: "small",
32
+ children: [progressPercent, "%"]
33
+ })]
34
+ });
35
+ };
36
+
37
+ export { CircularProgressLabel };
38
+ //# sourceMappingURL=CircularProgressLabel.js.map