@okta/okta-signin-widget 7.16.0 → 7.16.1

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 (246) hide show
  1. package/README.md +5 -5
  2. package/dist/css/fonts.css +172 -0
  3. package/dist/css/okta-sign-in.next.css +1 -240
  4. package/dist/css/okta-sign-in.next.css.map +1 -1
  5. package/dist/esm/src/config/config.json.js +1 -1
  6. package/dist/js/okta-sign-in.classic.js +1 -1
  7. package/dist/js/okta-sign-in.classic.min.js +1 -1
  8. package/dist/js/okta-sign-in.js +1 -1
  9. package/dist/js/okta-sign-in.min.js +1 -1
  10. package/dist/js/okta-sign-in.next.js +61 -19
  11. package/dist/js/okta-sign-in.next.js.map +1 -1
  12. package/dist/js/okta-sign-in.next.no-polyfill.js +60 -18
  13. package/dist/js/okta-sign-in.next.no-polyfill.js.map +1 -1
  14. package/dist/js/okta-sign-in.no-polyfill.min.js +1 -1
  15. package/dist/js/okta-sign-in.oie.js +1 -1
  16. package/dist/js/okta-sign-in.oie.min.js +1 -1
  17. package/package.json +10 -5
  18. package/src/config/config.json +1 -1
  19. package/src/v3/components/AuthCoin/AuthCoin.tsx +15 -17
  20. package/src/v3/components/AuthContainer/AuthContainer.tsx +11 -17
  21. package/src/v3/components/AuthContent/AuthContent.tsx +21 -16
  22. package/src/v3/components/AuthHeader/AuthHeader.tsx +18 -19
  23. package/src/v3/components/AuthenticatorButton/AuthenticatorButton.tsx +116 -77
  24. package/src/v3/components/AuthenticatorButton/AuthenticatorButtonList.tsx +9 -3
  25. package/src/v3/components/Button/Button.tsx +16 -20
  26. package/src/v3/components/CaptchaContainer/CaptchaContainer.tsx +1 -1
  27. package/src/v3/components/Checkbox/Checkbox.tsx +33 -82
  28. package/src/v3/components/ConsentHeader/ConsentHeader.tsx +23 -23
  29. package/src/v3/components/Divider/Divider.tsx +2 -2
  30. package/src/v3/components/Form/Accordion.tsx +15 -36
  31. package/src/v3/components/Form/ElementContainer.tsx +6 -3
  32. package/src/v3/components/Form/Form.tsx +2 -4
  33. package/src/v3/components/Form/Layout.tsx +1 -1
  34. package/src/v3/components/Form/LayoutContainer.tsx +4 -2
  35. package/src/v3/components/Heading/Heading.tsx +7 -5
  36. package/src/v3/components/Icon/CustomAppIcon.tsx +13 -15
  37. package/src/v3/components/Icon/CustomOTPIcon.tsx +5 -10
  38. package/src/v3/components/Icon/DuoIcon.tsx +5 -10
  39. package/src/v3/components/Icon/EmailIcon.tsx +5 -10
  40. package/src/v3/components/Icon/GoogleOTPIcon.tsx +5 -10
  41. package/src/v3/components/Icon/IDPIcon.tsx +5 -10
  42. package/src/v3/components/Icon/OktaVerifyIcon.tsx +0 -7
  43. package/src/v3/components/Icon/OnPremMFAIcon.tsx +5 -10
  44. package/src/v3/components/Icon/PasswordIcon.tsx +5 -10
  45. package/src/v3/components/Icon/PhoneIcon.tsx +5 -10
  46. package/src/v3/components/Icon/RSAIcon.tsx +6 -11
  47. package/src/v3/components/Icon/SecurityKeyOrBiometricsIcon.tsx +5 -10
  48. package/src/v3/components/Icon/SecurityQuestionIcon.tsx +5 -10
  49. package/src/v3/components/Icon/SmartCardIcon.tsx +5 -10
  50. package/src/v3/components/Icon/SymantecIcon.tsx +5 -10
  51. package/src/v3/components/Icon/YubiKeyIcon.tsx +5 -10
  52. package/src/v3/components/Icon/index.tsx +0 -2
  53. package/src/v3/components/IdentifierContainer/IdentifierContainer.tsx +31 -47
  54. package/src/v3/components/Image/Image.tsx +42 -0
  55. package/src/v3/{src/components/CustomPluginsOdysseyCacheProvider → components/Image}/index.tsx +2 -2
  56. package/src/v3/components/ImageWithText/ImageWithText.tsx +7 -4
  57. package/src/v3/components/Images/AppIcon.tsx +16 -46
  58. package/src/v3/components/Images/DeviceIcon.tsx +16 -32
  59. package/src/v3/components/Images/LocationIcon.tsx +16 -26
  60. package/src/v3/components/Images/PhoneIcon.tsx +34 -29
  61. package/src/v3/components/Images/YubikeyDemoImage.tsx +32 -27
  62. package/src/v3/components/Images/index.tsx +0 -1
  63. package/src/v3/components/InfoBox/InfoBox.tsx +12 -12
  64. package/src/v3/components/InfoSection/InfoSection.tsx +20 -14
  65. package/src/v3/components/InformationalText/InformationalText.tsx +16 -6
  66. package/src/v3/components/InputPassword/InputPassword.tsx +31 -164
  67. package/src/v3/components/InputText/InputText.tsx +27 -103
  68. package/src/v3/components/LaunchAuthenticatorButton/LaunchAuthenticatorButton.tsx +14 -26
  69. package/src/v3/components/Link/Link.tsx +8 -20
  70. package/src/v3/components/List/List.tsx +16 -12
  71. package/src/v3/components/PIVButton/PIVButton.tsx +10 -8
  72. package/src/v3/components/PasswordRequirements/Icon.tsx +17 -23
  73. package/src/v3/components/PasswordRequirements/PasswordMatches.tsx +9 -2
  74. package/src/v3/components/PasswordRequirements/PasswordRequirementListItem.tsx +6 -5
  75. package/src/v3/components/PasswordRequirements/PasswordRequirements.tsx +5 -3
  76. package/src/v3/components/PhoneAuthenticator/PhoneAuthenticator.tsx +53 -137
  77. package/src/v3/components/QRCode/QRCode.tsx +27 -20
  78. package/src/v3/components/Radio/Radio.tsx +31 -93
  79. package/src/v3/components/ReminderPrompt/ReminderPrompt.tsx +9 -12
  80. package/src/v3/components/Select/Select.tsx +45 -92
  81. package/src/v3/components/Spinner/Spinner.tsx +6 -8
  82. package/src/v3/components/StepperButton/StepperButton.tsx +6 -10
  83. package/src/v3/components/StepperLink/StepperLink.tsx +1 -1
  84. package/src/v3/components/StepperRadio/StepperRadio.tsx +22 -43
  85. package/src/v3/components/TextWithActionLink/TextWithActionLink.tsx +1 -1
  86. package/src/v3/components/Title/Title.tsx +5 -9
  87. package/src/v3/components/WebAuthNSubmitButton/WebAuthNSubmitButton.tsx +10 -9
  88. package/src/v3/components/Widget/GlobalStyles.tsx +16 -21
  89. package/src/v3/components/Widget/index.tsx +51 -36
  90. package/src/v3/components/Widget/style.scss +295 -0
  91. package/src/v3/components/WidgetMessageContainer/WidgetMessageContainer.tsx +11 -8
  92. package/src/v3/components/hocs/withFormValidationState.tsx +2 -5
  93. package/src/v3/jest.config.js +1 -0
  94. package/src/v3/jest.setup.js +1 -0
  95. package/src/v3/package.json +11 -7
  96. package/src/v3/screenshots/base/UI_demo/UI_demo_RTL_VRT.png +0 -0
  97. package/src/v3/screenshots/base/UI_demo/UI_demo_VRT.png +0 -0
  98. package/src/v3/src/components/AuthCoin/AuthCoin.tsx +15 -17
  99. package/src/v3/src/components/AuthCoin/__snapshots__/AuthCoin.test.tsx.snap +20 -47
  100. package/src/v3/src/components/AuthContainer/AuthContainer.tsx +11 -17
  101. package/src/v3/src/components/AuthContent/AuthContent.tsx +21 -16
  102. package/src/v3/src/components/AuthHeader/AuthHeader.tsx +18 -19
  103. package/src/v3/src/components/AuthenticatorButton/AuthenticatorButton.tsx +116 -77
  104. package/src/v3/src/components/AuthenticatorButton/AuthenticatorButtonList.tsx +9 -3
  105. package/src/v3/src/components/Button/Button.tsx +16 -20
  106. package/src/v3/src/components/CaptchaContainer/CaptchaContainer.tsx +1 -1
  107. package/src/v3/src/components/Checkbox/Checkbox.tsx +33 -82
  108. package/src/v3/src/components/ConsentHeader/ConsentHeader.tsx +23 -23
  109. package/src/v3/src/components/Divider/Divider.tsx +2 -2
  110. package/src/v3/src/components/Form/Accordion.tsx +15 -36
  111. package/src/v3/src/components/Form/ElementContainer.tsx +6 -3
  112. package/src/v3/src/components/Form/Form.tsx +2 -4
  113. package/src/v3/src/components/Form/Layout.tsx +1 -1
  114. package/src/v3/src/components/Form/LayoutContainer.tsx +4 -2
  115. package/src/v3/src/components/Heading/Heading.tsx +7 -5
  116. package/src/v3/src/components/Icon/CustomAppIcon.tsx +13 -15
  117. package/src/v3/src/components/Icon/CustomOTPIcon.tsx +5 -10
  118. package/src/v3/src/components/Icon/DuoIcon.tsx +5 -10
  119. package/src/v3/src/components/Icon/EmailIcon.tsx +5 -10
  120. package/src/v3/src/components/Icon/GoogleOTPIcon.tsx +5 -10
  121. package/src/v3/src/components/Icon/IDPIcon.tsx +5 -10
  122. package/src/v3/src/components/Icon/OktaVerifyIcon.tsx +0 -7
  123. package/src/v3/src/components/Icon/OnPremMFAIcon.tsx +5 -10
  124. package/src/v3/src/components/Icon/PasswordIcon.tsx +5 -10
  125. package/src/v3/src/components/Icon/PhoneIcon.tsx +5 -10
  126. package/src/v3/src/components/Icon/RSAIcon.tsx +6 -11
  127. package/src/v3/src/components/Icon/SecurityKeyOrBiometricsIcon.tsx +5 -10
  128. package/src/v3/src/components/Icon/SecurityQuestionIcon.tsx +5 -10
  129. package/src/v3/src/components/Icon/SmartCardIcon.tsx +5 -10
  130. package/src/v3/src/components/Icon/SymantecIcon.tsx +5 -10
  131. package/src/v3/src/components/Icon/YubiKeyIcon.tsx +5 -10
  132. package/src/v3/src/components/Icon/index.tsx +0 -2
  133. package/src/v3/src/components/IdentifierContainer/IdentifierContainer.tsx +31 -47
  134. package/src/v3/src/components/Image/Image.tsx +42 -0
  135. package/src/v3/{components/CustomPluginsOdysseyCacheProvider → src/components/Image}/index.tsx +2 -2
  136. package/src/v3/src/components/ImageWithText/ImageWithText.tsx +7 -4
  137. package/src/v3/src/components/Images/AppIcon.tsx +16 -46
  138. package/src/v3/src/components/Images/DeviceIcon.tsx +16 -32
  139. package/src/v3/src/components/Images/LocationIcon.tsx +16 -26
  140. package/src/v3/src/components/Images/PhoneIcon.tsx +34 -29
  141. package/src/v3/src/components/Images/YubikeyDemoImage.tsx +32 -27
  142. package/src/v3/src/components/Images/index.tsx +0 -1
  143. package/src/v3/src/components/InfoBox/InfoBox.tsx +12 -12
  144. package/src/v3/src/components/InfoSection/InfoSection.tsx +20 -14
  145. package/src/v3/src/components/InformationalText/InformationalText.tsx +16 -6
  146. package/src/v3/src/components/InputPassword/InputPassword.tsx +31 -164
  147. package/src/v3/src/components/InputText/InputText.tsx +27 -103
  148. package/src/v3/src/components/LaunchAuthenticatorButton/LaunchAuthenticatorButton.tsx +14 -26
  149. package/src/v3/src/components/Link/Link.tsx +8 -20
  150. package/src/v3/src/components/List/List.tsx +16 -12
  151. package/src/v3/src/components/PIVButton/PIVButton.tsx +10 -8
  152. package/src/v3/src/components/PasswordRequirements/Icon.tsx +17 -23
  153. package/src/v3/src/components/PasswordRequirements/PasswordMatches.tsx +9 -2
  154. package/src/v3/src/components/PasswordRequirements/PasswordRequirementListItem.tsx +6 -5
  155. package/src/v3/src/components/PasswordRequirements/PasswordRequirements.tsx +5 -3
  156. package/src/v3/src/components/PhoneAuthenticator/PhoneAuthenticator.tsx +53 -137
  157. package/src/v3/src/components/QRCode/QRCode.tsx +27 -20
  158. package/src/v3/src/components/Radio/Radio.tsx +31 -93
  159. package/src/v3/src/components/ReminderPrompt/ReminderPrompt.tsx +9 -12
  160. package/src/v3/src/components/ReminderPrompt/__snapshots__/ReminderPrompt.test.tsx.snap +37 -17
  161. package/src/v3/src/components/Select/Select.tsx +45 -92
  162. package/src/v3/src/components/Spinner/Spinner.tsx +6 -8
  163. package/src/v3/src/components/StepperButton/StepperButton.tsx +6 -10
  164. package/src/v3/src/components/StepperLink/StepperLink.tsx +1 -1
  165. package/src/v3/src/components/StepperRadio/StepperRadio.tsx +22 -43
  166. package/src/v3/src/components/TextWithActionLink/TextWithActionLink.tsx +1 -1
  167. package/src/v3/src/components/Title/Title.tsx +5 -9
  168. package/src/v3/src/components/WebAuthNSubmitButton/WebAuthNSubmitButton.tsx +10 -9
  169. package/src/v3/src/components/Widget/GlobalStyles.tsx +16 -21
  170. package/src/v3/src/components/Widget/index.tsx +51 -36
  171. package/src/v3/src/components/Widget/style.scss +295 -0
  172. package/src/v3/src/components/WidgetMessageContainer/WidgetMessageContainer.tsx +11 -8
  173. package/src/v3/src/components/hocs/withFormValidationState.tsx +2 -5
  174. package/src/v3/src/transformer/button/__snapshots__/transformIDPButtons.test.ts.snap +0 -2
  175. package/src/v3/src/transformer/i18n/__snapshots__/transformAuthenticatorButton.test.ts.snap +4 -4
  176. package/src/v3/src/transformer/i18n/transformAuthenticatorButton.test.ts +3 -3
  177. package/src/v3/src/transformer/i18n/transformAuthenticatorButton.ts +18 -2
  178. package/src/v3/src/transformer/layout/development/transformEnumerateComponents.ts +72 -5
  179. package/src/v3/src/transformer/layout/idp/__snapshots__/transformIdpRedirect.test.ts.snap +4 -4
  180. package/src/v3/src/transformer/selectAuthenticator/__snapshots__/transformSelectAuthenticatorVerify.test.ts.snap +0 -3
  181. package/src/v3/src/transformer/selectAuthenticator/__snapshots__/transformSelectOVCustomAppMethodVerify.test.ts.snap +0 -1
  182. package/src/v3/src/transformer/selectAuthenticator/__snapshots__/utils.test.ts.snap +163 -42
  183. package/src/v3/src/transformer/selectAuthenticator/transformSelectAuthenticatorEnroll.ts +7 -1
  184. package/src/v3/src/transformer/selectAuthenticator/transformSelectAuthenticatorVerify.ts +0 -1
  185. package/src/v3/src/transformer/selectAuthenticator/transformSelectOVCustomAppMethodVerify.ts +0 -1
  186. package/src/v3/src/transformer/selectAuthenticator/utils.test.ts +117 -39
  187. package/src/v3/src/transformer/selectAuthenticator/utils.ts +102 -58
  188. package/src/v3/src/transformer/terminal/transformEmailMagicLinkOTPOnlyElements.ts +1 -3
  189. package/src/v3/src/transformer/uischema/transform.test.ts +0 -6
  190. package/src/v3/src/transformer/uischema/transform.ts +0 -2
  191. package/src/v3/src/{components/FieldLevelMessageContainer/index.tsx → types/image.ts} +10 -3
  192. package/src/v3/src/types/index.ts +1 -0
  193. package/src/v3/src/types/schema.ts +2 -1
  194. package/src/v3/src/types/widget.ts +3 -3
  195. package/src/v3/src/util/buildFieldLevelErrorMessages.ts +48 -0
  196. package/src/v3/src/util/formUtils.ts +5 -17
  197. package/src/v3/src/util/htmlContentParserUtils.tsx +3 -1
  198. package/src/v3/src/util/index.ts +2 -0
  199. package/src/v3/src/util/isLtrField.ts +22 -0
  200. package/src/v3/src/util/languageUtils.ts +14 -0
  201. package/src/v3/src/util/leonardo.d.ts +571 -0
  202. package/src/v3/src/util/mergeThemes.test.tsx +20 -7
  203. package/src/v3/src/util/mergeThemes.ts +32 -1
  204. package/src/v3/src/util/stylisPlugins.ts +21 -0
  205. package/src/v3/src/util/theme.test.ts +63 -187
  206. package/src/v3/src/util/theme.ts +274 -247
  207. package/src/v3/svgo.config.js +0 -6
  208. package/src/v3/transformer/i18n/transformAuthenticatorButton.ts +18 -2
  209. package/src/v3/transformer/layout/development/transformEnumerateComponents.ts +72 -5
  210. package/src/v3/transformer/selectAuthenticator/transformSelectAuthenticatorEnroll.ts +7 -1
  211. package/src/v3/transformer/selectAuthenticator/transformSelectAuthenticatorVerify.ts +0 -1
  212. package/src/v3/transformer/selectAuthenticator/transformSelectOVCustomAppMethodVerify.ts +0 -1
  213. package/src/v3/transformer/selectAuthenticator/utils.ts +102 -58
  214. package/src/v3/transformer/terminal/transformEmailMagicLinkOTPOnlyElements.ts +1 -3
  215. package/src/v3/transformer/uischema/transform.ts +0 -2
  216. package/src/v3/tsconfig.base.json +3 -0
  217. package/src/v3/{components/FieldLevelMessageContainer/index.tsx → types/image.ts} +10 -3
  218. package/src/v3/types/index.ts +1 -0
  219. package/src/v3/types/schema.ts +2 -1
  220. package/src/v3/types/widget.ts +3 -3
  221. package/src/v3/util/buildFieldLevelErrorMessages.ts +48 -0
  222. package/src/v3/util/formUtils.ts +5 -17
  223. package/src/v3/util/htmlContentParserUtils.tsx +3 -1
  224. package/src/v3/util/index.ts +2 -0
  225. package/src/v3/util/isLtrField.ts +22 -0
  226. package/src/v3/util/languageUtils.ts +14 -0
  227. package/src/v3/util/leonardo.d.ts +571 -0
  228. package/src/v3/util/mergeThemes.ts +32 -1
  229. package/src/v3/util/stylisPlugins.ts +21 -0
  230. package/src/v3/util/theme.ts +274 -247
  231. package/src/v3/components/CustomPluginsOdysseyCacheProvider/CustomPluginsOdysseyCacheProvider.tsx +0 -66
  232. package/src/v3/components/FieldLevelMessageContainer/FieldLevelMessageContainer.tsx +0 -55
  233. package/src/v3/components/Icon/CheckCircle.tsx +0 -30
  234. package/src/v3/components/Icon/RightArrowIcon.tsx +0 -30
  235. package/src/v3/components/Images/MobileDeviceIcon.tsx +0 -38
  236. package/src/v3/components/Widget/style.css +0 -181
  237. package/src/v3/src/components/CustomPluginsOdysseyCacheProvider/CustomPluginsOdysseyCacheProvider.tsx +0 -66
  238. package/src/v3/src/components/FieldLevelMessageContainer/FieldLevelMessageContainer.tsx +0 -55
  239. package/src/v3/src/components/Icon/CheckCircle.tsx +0 -30
  240. package/src/v3/src/components/Icon/RightArrowIcon.tsx +0 -30
  241. package/src/v3/src/components/Images/MobileDeviceIcon.tsx +0 -38
  242. package/src/v3/src/components/Widget/style.css +0 -181
  243. package/src/v3/src/transformer/uischema/setLtrFields.ts +0 -41
  244. package/src/v3/src/util/designTokens.ts +0 -249
  245. package/src/v3/transformer/uischema/setLtrFields.ts +0 -41
  246. package/src/v3/util/designTokens.ts +0 -249
@@ -21,7 +21,6 @@ import { createIdentifierContainer } from './createIdentifierContainer';
21
21
  import { createTextElementKeys } from './createTextElementKeys';
22
22
  import { overwriteAutocomplete } from './overwriteAutocomplete';
23
23
  import { setFocusOnFirstElement } from './setFocusOnFirstElement';
24
- import { setLtrFields } from './setLtrFields';
25
24
  import { updateCustomFields } from './updateCustomFields';
26
25
  import { updateElementKeys } from './updateElementKeys';
27
26
  import { updatePasswordDescribedByValue } from './updatePasswordDescribedByValue';
@@ -36,7 +35,6 @@ export const transformUISchema: TransformStepFnWithOptions = (
36
35
  updateElementKeys(options),
37
36
  addIdToElements,
38
37
  updatePasswordDescribedByValue,
39
- setLtrFields,
40
38
  overwriteAutocomplete(options),
41
39
  // OKTA-586475: Please keep this as the last function to be executed since we want to ensure
42
40
  // that the identifier container is always positioned at the top of a view
@@ -10,6 +10,13 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import FieldLevelMessageContainer from './FieldLevelMessageContainer';
14
-
15
- export default FieldLevelMessageContainer;
13
+ export type ImageProps = {
14
+ src: string;
15
+ alt: string;
16
+ width?: string | number;
17
+ height?: string | number;
18
+ maxWidth?: string | number;
19
+ maxHeight?: string | number;
20
+ testId?: string;
21
+ ariaHidden?: boolean;
22
+ };
@@ -17,6 +17,7 @@ export * from './component';
17
17
  export * from './context';
18
18
  export * from './error';
19
19
  export * from './handlers';
20
+ export * from './image';
20
21
  export * from './ion';
21
22
  export * from './json';
22
23
  export * from './jsonforms';
@@ -310,7 +310,6 @@ export interface ButtonElement extends UISchemaElement {
310
310
  dataSe?: string;
311
311
  stepToRender?: string;
312
312
  ariaLabel?: string;
313
- classes?: string;
314
313
  disabled?: boolean;
315
314
  Icon?: FunctionComponent | string;
316
315
  iconAlt?: string;
@@ -325,6 +324,8 @@ export interface AuthenticatorButtonElement extends UISchemaElement {
325
324
  key: string;
326
325
  ariaLabel: string;
327
326
  authenticator?: IdxAuthenticator;
327
+ isEnroll?: boolean;
328
+ isAdditionalEnroll?: boolean;
328
329
  ctaLabel: string;
329
330
  description?: string;
330
331
  nickname?: string;
@@ -10,6 +10,7 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
 
13
+ import { DesignTokensOverride } from '@okta/odyssey-react-mui';
13
14
  import {
14
15
  FlowIdentifier,
15
16
  IdxActionParams,
@@ -34,7 +35,6 @@ import {
34
35
  UserOperation,
35
36
  } from '../../../types';
36
37
  import { InterstitialRedirectView } from '../constants';
37
- import { DesignTokensType } from '../util/designTokens';
38
38
  import { WidgetHooks } from '../util/widgetHooks';
39
39
  import { OktaSignInAPI } from './api';
40
40
  import { JsonObject } from './json';
@@ -119,7 +119,7 @@ export type WidgetOptions = {
119
119
  brandColors?: BrandColors;
120
120
 
121
121
  // theme
122
- theme?: { tokens: DesignTokensType }; // & ThemeOptions;
122
+ theme?: { tokens: DesignTokensOverride }; // & ThemeOptions;
123
123
 
124
124
  // hooks
125
125
  hooks?: HooksOptions; // object in options
@@ -285,7 +285,7 @@ interface ProxyIdxResponse {
285
285
 
286
286
  type CustomButton = {
287
287
  title: string;
288
- className: string;
288
+ className?: string;
289
289
  i18nKey: string;
290
290
  dataAttr?: string;
291
291
  click: { (): void }
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { WidgetMessage } from '../types';
14
+
15
+ type FieldLevelErrorMessages = {
16
+ errorMessage?: string;
17
+ errorMessageList?: string[];
18
+ };
19
+
20
+ export const buildFieldLevelErrorMessages = (
21
+ errors: WidgetMessage[] | undefined,
22
+ ) : FieldLevelErrorMessages => {
23
+ const hasErrors = typeof errors !== 'undefined' && errors.length > 0;
24
+
25
+ if (hasErrors) {
26
+ if (errors.length === 1) {
27
+ const error = errors[0];
28
+ // Covers nested messages, e.g. password requirements not met
29
+ // The SIW does not have messages nested more than once
30
+ if (Array.isArray(error.message)) {
31
+ return {
32
+ errorMessage: error.description,
33
+ errorMessageList: error.message
34
+ .filter((msg) => typeof msg.message === 'string')
35
+ .map((msg) => msg.message as string),
36
+ };
37
+ }
38
+ return { errorMessage: error.message };
39
+ }
40
+ return {
41
+ errorMessageList: errors
42
+ .filter((error) => typeof error.message === 'string')
43
+ .map((error) => error.message as string),
44
+ };
45
+ }
46
+
47
+ return {};
48
+ };
@@ -14,7 +14,6 @@ import {
14
14
  IdxAuthenticator,
15
15
  IdxMessage, IdxRemediation, IdxTransaction, NextStep,
16
16
  } from '@okta/okta-auth-js';
17
- import classNames from 'classnames';
18
17
 
19
18
  import IDP from '../../../util/IDP';
20
19
  import Util from '../../../util/Util';
@@ -77,8 +76,7 @@ export const getCustomButtonElements = (widgetProps: WidgetProps): ButtonElement
77
76
  options: {
78
77
  type: ButtonType.BUTTON,
79
78
  step: '',
80
- dataSe: customButton.dataAttr,
81
- classes: classNames(customButton.className, 'default-custom-button'),
79
+ dataSe: customButton.dataAttr ?? 'custom-button',
82
80
  variant: 'secondary',
83
81
  onClick: customButton.click,
84
82
  },
@@ -105,8 +103,7 @@ const getPIVButtonElement = (
105
103
  options: {
106
104
  type: ButtonType.BUTTON,
107
105
  step: IDX_STEP.PIV_IDP,
108
- dataSe: 'piv-card-button',
109
- classes: `${piv?.className || ''} piv-button`,
106
+ dataSe: `piv-card-button${piv?.className ? ` ${piv.className}` : ''}`,
110
107
  variant: 'secondary',
111
108
  Icon: SmartCardIconSvg,
112
109
  iconAlt: loc('piv.card', 'login'),
@@ -189,10 +186,6 @@ const getConfigIdpButtonRemediations = (
189
186
  name: idpConfig.text,
190
187
  };
191
188
  const redirectUri = `${baseUrl}/sso/idps/${idpConfig.id}?stateToken=${stateHandle}`;
192
- if (idpConfig.className) {
193
- // @ts-expect-error OKTA-609464 - className missing from IdpConfig type
194
- idp.className = idpConfig.className;
195
- }
196
189
  return {
197
190
  name: IDX_STEP.REDIRECT_IDP,
198
191
  type: idpConfig.type,
@@ -249,17 +242,12 @@ export const getIdpButtonElements = (
249
242
  return {
250
243
  type: 'Button',
251
244
  label: displayName,
245
+ noTranslate: type === 'general-idp',
252
246
  options: {
253
247
  type: ButtonType.BUTTON,
254
248
  step: IDX_STEP.PIV_IDP,
255
- dataSe: 'piv-card-button',
256
- classes: classNames(
257
- 'social-auth-button',
258
- `social-auth-${type}-button`,
259
- // @ts-expect-error OKTA-609464 - className missing from IdpConfig type
260
- idpObject.idp?.className,
261
- { 'no-translate': type === 'general-idp' },
262
- ),
249
+ // @ts-expect-error OKTA-609464 - className missing from IdpConfig type
250
+ dataSe: `piv-card-button ${idpObject.idp?.className || `social-auth-${type}-button`}`,
263
251
  variant: 'secondary',
264
252
  Icon: idpIconMap[type],
265
253
  iconAlt: '',
@@ -10,7 +10,7 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import { Link, Typography } from '@okta/odyssey-react-mui';
13
+ import { Link, Typography } from '@mui/material';
14
14
  import {
15
15
  attributesToProps,
16
16
  DOMNode,
@@ -78,3 +78,5 @@ export const getHeadingReplacerFn = (
78
78
  return undefined;
79
79
  }
80
80
  );
81
+
82
+ export const wrapInTranslateNo = (string: string): string => `<span translate="no">${string}</span>`;
@@ -12,6 +12,7 @@
12
12
 
13
13
  export * from './browserUtils';
14
14
  export * from './buildErrorMessageIds';
15
+ export * from './buildFieldLevelErrorMessages';
15
16
  export * from './buildPasswordRequirementNotMetErrorList';
16
17
  export * from './clipboard';
17
18
  export * from './configuredFlowUtils';
@@ -35,6 +36,7 @@ export * from './htmlContentParserUtils';
35
36
  export * from './idpIconMap';
36
37
  export * from './idxUtils';
37
38
  export * from './isInteractiveElement';
39
+ export * from './isLtrField';
38
40
  export * from './isPasswordRecovery';
39
41
  export * from './isPollingStep';
40
42
  export * from './languageUtils';
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ // fields with these names should stay LTR by default
14
+ const ltrOnlyFieldNames = [
15
+ 'credentials.passcode',
16
+ 'identifier',
17
+ 'credentials.newPassword',
18
+ 'confirmPassword',
19
+ 'extension',
20
+ ];
21
+
22
+ export const isLtrField = (fieldName: string) => ltrOnlyFieldNames.includes(fieldName) || fieldName.endsWith('phoneNumber');
@@ -10,6 +10,8 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
 
13
+ import { OdysseyI18nResourceKeys, odysseyI18nResourceKeysList } from '@okta/odyssey-react-mui';
14
+
13
15
  import Bundles from '../../../util/Bundles';
14
16
  import { WidgetProps } from '../types';
15
17
  import { getLanguageCode, getSupportedLanguages } from './settingsUtils';
@@ -24,3 +26,15 @@ export const loadLanguage = async (widgetProps: WidgetProps): Promise<void> => {
24
26
  rewrite: rewrite ?? ((val) => val),
25
27
  }, supportedLanguages);
26
28
  };
29
+
30
+ export const getOdysseyTranslationOverrides = (): Partial<OdysseyI18nResourceKeys> => (
31
+ odysseyI18nResourceKeysList
32
+ .reduce((overrides: Partial<OdysseyI18nResourceKeys>,
33
+ key: typeof odysseyI18nResourceKeysList[number]) => {
34
+ const updatedOverrides = { ...overrides };
35
+ if (Bundles.login && Object.prototype.hasOwnProperty.call(Bundles.login, key)) {
36
+ updatedOverrides[key] = (Bundles.login as Partial<OdysseyI18nResourceKeys>)[key];
37
+ }
38
+ return updatedOverrides;
39
+ }, {})
40
+ );