@okta/odyssey-react-mui 1.1.1 → 1.4.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 (142) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -1
  3. package/dist/Autocomplete.js +13 -1
  4. package/dist/Autocomplete.js.map +1 -1
  5. package/dist/Breadcrumbs.js +146 -0
  6. package/dist/Breadcrumbs.js.map +1 -0
  7. package/dist/Link.js +3 -1
  8. package/dist/Link.js.map +1 -1
  9. package/dist/MenuButton.js.map +1 -1
  10. package/dist/OdysseyCacheProvider.js +4 -1
  11. package/dist/OdysseyCacheProvider.js.map +1 -1
  12. package/dist/OdysseyProvider.js +5 -1
  13. package/dist/OdysseyProvider.js.map +1 -1
  14. package/dist/OdysseyThemeProvider.js +5 -1
  15. package/dist/OdysseyThemeProvider.js.map +1 -1
  16. package/dist/OdysseyTranslationProvider.js +1 -1
  17. package/dist/OdysseyTranslationProvider.js.map +1 -1
  18. package/dist/PasswordField.js +11 -3
  19. package/dist/PasswordField.js.map +1 -1
  20. package/dist/Select.js +34 -33
  21. package/dist/Select.js.map +1 -1
  22. package/dist/Tabs.js +8 -6
  23. package/dist/Tabs.js.map +1 -1
  24. package/dist/Typography.js +0 -22
  25. package/dist/Typography.js.map +1 -1
  26. package/dist/createShadowDom.js +26 -0
  27. package/dist/createShadowDom.js.map +1 -0
  28. package/dist/{OdysseyI18n.js → i18n.js} +3 -2
  29. package/dist/i18n.js.map +1 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/labs/GroupPicker.js +190 -0
  33. package/dist/labs/GroupPicker.js.map +1 -0
  34. package/dist/labs/datePickerTheme.js +4 -2
  35. package/dist/labs/datePickerTheme.js.map +1 -1
  36. package/dist/labs/index.js +1 -0
  37. package/dist/labs/index.js.map +1 -1
  38. package/dist/properties/ts/odyssey-react-mui.js +4 -0
  39. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  40. package/dist/src/Autocomplete.d.ts +23 -3
  41. package/dist/src/Autocomplete.d.ts.map +1 -1
  42. package/dist/src/Breadcrumbs.d.ts +31 -0
  43. package/dist/src/Breadcrumbs.d.ts.map +1 -0
  44. package/dist/src/Link.d.ts +6 -1
  45. package/dist/src/Link.d.ts.map +1 -1
  46. package/dist/src/MenuButton.d.ts +1 -1
  47. package/dist/src/MenuButton.d.ts.map +1 -1
  48. package/dist/src/OdysseyCacheProvider.d.ts +6 -1
  49. package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
  50. package/dist/src/OdysseyProvider.d.ts +1 -1
  51. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  52. package/dist/src/OdysseyThemeProvider.d.ts +2 -1
  53. package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
  54. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  55. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  56. package/dist/src/PasswordField.d.ts +8 -0
  57. package/dist/src/PasswordField.d.ts.map +1 -1
  58. package/dist/src/Select.d.ts +1 -54
  59. package/dist/src/Select.d.ts.map +1 -1
  60. package/dist/src/Tabs.d.ts +7 -2
  61. package/dist/src/Tabs.d.ts.map +1 -1
  62. package/dist/src/Typography.d.ts +11 -15
  63. package/dist/src/Typography.d.ts.map +1 -1
  64. package/dist/src/createShadowDom.d.ts +16 -0
  65. package/dist/src/createShadowDom.d.ts.map +1 -0
  66. package/dist/src/{OdysseyI18n.d.ts → i18n.d.ts} +7 -2
  67. package/dist/src/i18n.d.ts.map +1 -0
  68. package/dist/src/index.d.ts +2 -0
  69. package/dist/src/index.d.ts.map +1 -1
  70. package/dist/src/labs/GroupPicker.d.ts +25 -0
  71. package/dist/src/labs/GroupPicker.d.ts.map +1 -0
  72. package/dist/src/labs/index.d.ts +1 -0
  73. package/dist/src/labs/index.d.ts.map +1 -1
  74. package/dist/src/properties/ts/odyssey-react-mui.d.ts +4 -0
  75. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  76. package/dist/src/theme/components.d.ts +4 -1
  77. package/dist/src/theme/components.d.ts.map +1 -1
  78. package/dist/src/theme/createOdysseyMuiTheme.d.ts +23 -0
  79. package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -0
  80. package/dist/src/theme/mixins.d.ts +3 -1
  81. package/dist/src/theme/mixins.d.ts.map +1 -1
  82. package/dist/src/theme/palette.d.ts +3 -1
  83. package/dist/src/theme/palette.d.ts.map +1 -1
  84. package/dist/src/theme/shape.d.ts +3 -1
  85. package/dist/src/theme/shape.d.ts.map +1 -1
  86. package/dist/src/theme/spacing.d.ts +3 -1
  87. package/dist/src/theme/spacing.d.ts.map +1 -1
  88. package/dist/src/theme/theme.d.ts +1 -8
  89. package/dist/src/theme/theme.d.ts.map +1 -1
  90. package/dist/src/theme/typography.d.ts +3 -1
  91. package/dist/src/theme/typography.d.ts.map +1 -1
  92. package/dist/theme/components.js +112 -67
  93. package/dist/theme/components.js.map +1 -1
  94. package/dist/theme/createOdysseyMuiTheme.js +51 -0
  95. package/dist/theme/createOdysseyMuiTheme.js.map +1 -0
  96. package/dist/theme/mixins.js +4 -1
  97. package/dist/theme/mixins.js.map +1 -1
  98. package/dist/theme/palette.js +4 -1
  99. package/dist/theme/palette.js.map +1 -1
  100. package/dist/theme/shape.js +4 -1
  101. package/dist/theme/shape.js.map +1 -1
  102. package/dist/theme/spacing.js +4 -1
  103. package/dist/theme/spacing.js.map +1 -1
  104. package/dist/theme/theme.js +1 -20
  105. package/dist/theme/theme.js.map +1 -1
  106. package/dist/theme/typography.js +4 -1
  107. package/dist/theme/typography.js.map +1 -1
  108. package/dist/tsconfig.production.tsbuildinfo +1 -1
  109. package/package.json +4 -4
  110. package/scripts/properties-to-ts.js +1 -1
  111. package/src/Autocomplete.tsx +47 -3
  112. package/src/Breadcrumbs.tsx +199 -0
  113. package/src/Link.tsx +7 -1
  114. package/src/MenuButton.tsx +2 -3
  115. package/src/OdysseyCacheProvider.tsx +9 -1
  116. package/src/OdysseyProvider.tsx +9 -2
  117. package/src/OdysseyThemeProvider.tsx +8 -2
  118. package/src/OdysseyTranslationProvider.test.tsx +2 -2
  119. package/src/OdysseyTranslationProvider.tsx +1 -1
  120. package/src/PasswordField.tsx +24 -8
  121. package/src/Select.tsx +147 -152
  122. package/src/Tabs.tsx +24 -12
  123. package/src/Typography.tsx +0 -26
  124. package/src/createShadowDom.ts +46 -0
  125. package/src/{OdysseyI18n.ts → i18n.ts} +2 -2
  126. package/src/index.ts +2 -0
  127. package/src/labs/GroupPicker.tsx +241 -0
  128. package/src/labs/README.md +1 -1
  129. package/src/labs/datePickerTheme.tsx +2 -2
  130. package/src/labs/index.ts +1 -0
  131. package/src/properties/odyssey-react-mui.properties +4 -0
  132. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  133. package/src/theme/components.tsx +61 -13
  134. package/src/theme/createOdysseyMuiTheme.ts +47 -0
  135. package/src/theme/mixins.ts +5 -1
  136. package/src/theme/palette.ts +5 -3
  137. package/src/theme/shape.ts +5 -1
  138. package/src/theme/spacing.ts +5 -3
  139. package/src/theme/theme.ts +1 -26
  140. package/src/theme/typography.ts +5 -3
  141. package/dist/OdysseyI18n.js.map +0 -1
  142. package/dist/src/OdysseyI18n.d.ts.map +0 -1
@@ -15,6 +15,7 @@ import _IconButton from "@mui/material/IconButton";
15
15
  import { forwardRef, memo, useCallback, useState } from "react";
16
16
  import { ShowIcon, HideIcon } from "./icons.generated/index.js";
17
17
  import { Field } from "./Field.js";
18
+ import { useTranslation } from "react-i18next";
18
19
  import { jsx as _jsx } from "react/jsx-runtime";
19
20
  const PasswordField = forwardRef((_ref, ref) => {
20
21
  let {
@@ -25,6 +26,7 @@ const PasswordField = forwardRef((_ref, ref) => {
25
26
  id: idOverride,
26
27
  isDisabled = false,
27
28
  isOptional = false,
29
+ hasShowPassword = true,
28
30
  isReadOnly,
29
31
  label,
30
32
  name: nameOverride,
@@ -35,6 +37,9 @@ const PasswordField = forwardRef((_ref, ref) => {
35
37
  testId,
36
38
  value
37
39
  } = _ref;
40
+ const {
41
+ t
42
+ } = useTranslation();
38
43
  const [inputType, setInputType] = useState("password");
39
44
  const togglePasswordVisibility = useCallback(() => {
40
45
  setInputType(inputType => inputType === "password" ? "text" : "password");
@@ -49,15 +54,18 @@ const PasswordField = forwardRef((_ref, ref) => {
49
54
  autoComplete: autoCompleteType,
50
55
  autoFocus: hasInitialFocus,
51
56
  "data-se": testId,
52
- endAdornment: _jsx(_InputAdornment, {
57
+ endAdornment: hasShowPassword && _jsx(_InputAdornment, {
53
58
  position: "end",
54
59
  children: _jsx(_IconButton, {
55
- "aria-label": "toggle password visibility",
60
+ "aria-label": inputType === "password" ? t("passwordfield.icon.label.show") : t("passwordfield.icon.label.hide"),
56
61
  onClick: togglePasswordVisibility,
57
62
  children: inputType === "password" ? _jsx(ShowIcon, {}) : _jsx(HideIcon, {})
58
63
  })
59
64
  }),
60
65
  id: id,
66
+ inputProps: {
67
+ role: "textbox"
68
+ },
61
69
  name: nameOverride ?? id,
62
70
  onChange: onChange,
63
71
  onFocus: onFocus,
@@ -69,7 +77,7 @@ const PasswordField = forwardRef((_ref, ref) => {
69
77
  type: inputType,
70
78
  value: value
71
79
  });
72
- }, [autoCompleteType, hasInitialFocus, togglePasswordVisibility, inputType, nameOverride, onChange, onFocus, onBlur, placeholder, isOptional, isReadOnly, ref, testId, value]);
80
+ }, [autoCompleteType, hasInitialFocus, t, togglePasswordVisibility, inputType, nameOverride, onChange, onFocus, onBlur, placeholder, isOptional, isReadOnly, hasShowPassword, ref, testId, value]);
73
81
  return _jsx(Field, {
74
82
  errorMessage: errorMessage,
75
83
  fieldType: "single",
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordField.js","names":["forwardRef","memo","useCallback","useState","ShowIcon","HideIcon","Field","jsx","_jsx","PasswordField","_ref","ref","autoCompleteType","errorMessage","hasInitialFocus","hint","id","idOverride","isDisabled","isOptional","isReadOnly","label","name","nameOverride","onChange","onFocus","onBlur","placeholder","testId","value","inputType","setInputType","togglePasswordVisibility","renderFieldComponent","_ref2","ariaDescribedBy","_InputBase","autoComplete","autoFocus","endAdornment","_InputAdornment","position","children","_IconButton","onClick","readOnly","required","type","fieldType","hasVisibleLabel","MemoizedPasswordField","displayName"],"sources":["../src/PasswordField.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { InputAdornment, InputBase, IconButton } from \"@mui/material\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n memo,\n useCallback,\n useState,\n} from \"react\";\n\nimport { ShowIcon, HideIcon } from \"./icons.generated\";\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type PasswordFieldProps = {\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoCompleteType?: \"current-password\" | \"new-password\";\n /**\n * If `error` is not undefined, the `input` will indicate an error.\n */\n errorMessage?: string;\n /**\n * If `true`, the component will receive focus automatically.\n */\n hasInitialFocus?: boolean;\n /**\n * The helper text content.\n */\n hint?: string;\n /**\n * The id of the `input` element.\n */\n id?: string;\n /**\n * If `true`, the component is disabled.\n */\n isDisabled?: boolean;\n /**\n * If `true`, the `input` element is not required.\n */\n isOptional?: boolean;\n /**\n * It prevents the user from changing the value of the field\n */\n isReadOnly?: boolean;\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * The name of the `input` element. Defaults to the `id` if not set.\n */\n name?: string;\n /**\n * Callback fired when the `input` element loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /**\n * Callback fired when the value is changed.\n */\n onChange?: ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>;\n /**\n * Callback fired when the `input` element get focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder?: string;\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value?: string;\n} & SeleniumProps;\n\nconst PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n (\n {\n autoCompleteType,\n errorMessage,\n hasInitialFocus,\n hint,\n id: idOverride,\n isDisabled = false,\n isOptional = false,\n isReadOnly,\n label,\n name: nameOverride,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n testId,\n value,\n },\n ref\n ) => {\n const [inputType, setInputType] = useState(\"password\");\n\n const togglePasswordVisibility = useCallback(() => {\n setInputType((inputType) =>\n inputType === \"password\" ? \"text\" : \"password\"\n );\n }, []);\n\n const renderFieldComponent = useCallback(\n ({ ariaDescribedBy, id }) => (\n <InputBase\n aria-describedby={ariaDescribedBy}\n autoComplete={autoCompleteType}\n /* eslint-disable-next-line jsx-a11y/no-autofocus */\n autoFocus={hasInitialFocus}\n data-se={testId}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={togglePasswordVisibility}\n >\n {inputType === \"password\" ? <ShowIcon /> : <HideIcon />}\n </IconButton>\n </InputAdornment>\n }\n id={id}\n name={nameOverride ?? id}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n readOnly={isReadOnly}\n ref={ref}\n required={!isOptional}\n type={inputType}\n value={value}\n />\n ),\n [\n autoCompleteType,\n hasInitialFocus,\n togglePasswordVisibility,\n inputType,\n nameOverride,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n isOptional,\n isReadOnly,\n ref,\n testId,\n value,\n ]\n );\n\n return (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n }\n);\n\nconst MemoizedPasswordField = memo(PasswordField);\nMemoizedPasswordField.displayName = \"PasswordField\";\n\nexport { MemoizedPasswordField as PasswordField };\n"],"mappings":"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"}
1
+ {"version":3,"file":"PasswordField.js","names":["forwardRef","memo","useCallback","useState","ShowIcon","HideIcon","Field","useTranslation","jsx","_jsx","PasswordField","_ref","ref","autoCompleteType","errorMessage","hasInitialFocus","hint","id","idOverride","isDisabled","isOptional","hasShowPassword","isReadOnly","label","name","nameOverride","onChange","onFocus","onBlur","placeholder","testId","value","t","inputType","setInputType","togglePasswordVisibility","renderFieldComponent","_ref2","ariaDescribedBy","_InputBase","autoComplete","autoFocus","endAdornment","_InputAdornment","position","children","_IconButton","onClick","inputProps","role","readOnly","required","type","fieldType","hasVisibleLabel","MemoizedPasswordField","displayName"],"sources":["../src/PasswordField.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { InputAdornment, InputBase, IconButton } from \"@mui/material\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n memo,\n useCallback,\n useState,\n} from \"react\";\n\nimport { ShowIcon, HideIcon } from \"./icons.generated\";\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\nimport { useTranslation } from \"react-i18next\";\n\nexport type PasswordFieldProps = {\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoCompleteType?: \"current-password\" | \"new-password\";\n /**\n * If `error` is not undefined, the `input` will indicate an error.\n */\n errorMessage?: string;\n /**\n * If `true`, the component will receive focus automatically.\n */\n hasInitialFocus?: boolean;\n /**\n * If `true`, the show/hide icon is not shown to the user\n */\n hasShowPassword?: boolean;\n /**\n * The helper text content.\n */\n hint?: string;\n /**\n * The id of the `input` element.\n */\n id?: string;\n /**\n * If `true`, the component is disabled.\n */\n isDisabled?: boolean;\n /**\n * If `true`, the `input` element is not required.\n */\n isOptional?: boolean;\n /**\n * It prevents the user from changing the value of the field\n */\n isReadOnly?: boolean;\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * The name of the `input` element. Defaults to the `id` if not set.\n */\n name?: string;\n /**\n * Callback fired when the `input` element loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /**\n * Callback fired when the value is changed.\n */\n onChange?: ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>;\n /**\n * Callback fired when the `input` element get focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder?: string;\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value?: string;\n} & SeleniumProps;\n\nconst PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n (\n {\n autoCompleteType,\n errorMessage,\n hasInitialFocus,\n hint,\n id: idOverride,\n isDisabled = false,\n isOptional = false,\n hasShowPassword = true,\n isReadOnly,\n label,\n name: nameOverride,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n testId,\n value,\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [inputType, setInputType] = useState(\"password\");\n\n const togglePasswordVisibility = useCallback(() => {\n setInputType((inputType) =>\n inputType === \"password\" ? \"text\" : \"password\"\n );\n }, []);\n\n const renderFieldComponent = useCallback(\n ({ ariaDescribedBy, id }) => (\n <InputBase\n aria-describedby={ariaDescribedBy}\n autoComplete={autoCompleteType}\n /* eslint-disable-next-line jsx-a11y/no-autofocus */\n autoFocus={hasInitialFocus}\n data-se={testId}\n endAdornment={\n hasShowPassword && (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label={\n inputType === \"password\"\n ? t(\"passwordfield.icon.label.show\")\n : t(\"passwordfield.icon.label.hide\")\n }\n onClick={togglePasswordVisibility}\n >\n {inputType === \"password\" ? <ShowIcon /> : <HideIcon />}\n </IconButton>\n </InputAdornment>\n )\n }\n id={id}\n inputProps={{ role: \"textbox\" }}\n name={nameOverride ?? id}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n readOnly={isReadOnly}\n ref={ref}\n required={!isOptional}\n type={inputType}\n value={value}\n />\n ),\n [\n autoCompleteType,\n hasInitialFocus,\n t,\n togglePasswordVisibility,\n inputType,\n nameOverride,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n isOptional,\n isReadOnly,\n hasShowPassword,\n ref,\n testId,\n value,\n ]\n );\n\n return (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n }\n);\n\nconst MemoizedPasswordField = memo(PasswordField);\nMemoizedPasswordField.displayName = \"PasswordField\";\n\nexport { MemoizedPasswordField as PasswordField };\n"],"mappings":"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"}
package/dist/Select.js CHANGED
@@ -16,11 +16,11 @@ import _Chip from "@mui/material/Chip";
16
16
  * See the License for the specific language governing permissions and limitations under the License.
17
17
  */
18
18
 
19
- import { forwardRef, memo, useCallback, useState } from "react";
19
+ import { memo, useCallback, useMemo, useState } from "react";
20
20
  import { Field } from "./Field.js";
21
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
22
  import { jsxs as _jsxs } from "react/jsx-runtime";
23
- const Select = forwardRef((_ref, ref) => {
23
+ const Select = _ref => {
24
24
  let {
25
25
  errorMessage,
26
26
  hint,
@@ -56,20 +56,15 @@ const Select = forwardRef((_ref, ref) => {
56
56
  onChangeProp(event, child);
57
57
  }
58
58
  }, [isMultiSelect, onChangeProp, setSelectedValue]);
59
- const normalizedOptions = options.map(option => {
60
- if (typeof option === "object") {
61
- return {
62
- text: option.text,
63
- value: option.value || option.text,
64
- type: option.type === "heading" ? "heading" : "option"
65
- };
66
- }
67
- return {
68
- text: option,
69
- value: option,
70
- type: "option"
71
- };
72
- });
59
+ const normalizedOptions = useMemo(() => options.map(option => typeof option === "object" ? {
60
+ text: option.text,
61
+ value: option.value || option.text,
62
+ type: option.type === "heading" ? "heading" : "option"
63
+ } : {
64
+ text: option,
65
+ value: option,
66
+ type: "option"
67
+ }), [options]);
73
68
  const renderValue = useCallback(selected => {
74
69
  if (typeof selected === "string") {
75
70
  return undefined;
@@ -90,7 +85,7 @@ const Select = forwardRef((_ref, ref) => {
90
85
  children: renderedChips
91
86
  });
92
87
  }, [normalizedOptions]);
93
- const children = normalizedOptions.map(option => {
88
+ const children = useMemo(() => normalizedOptions.map(option => {
94
89
  if (option.type === "heading") {
95
90
  return _jsx(_ListSubheader, {
96
91
  children: option.text
@@ -102,21 +97,27 @@ const Select = forwardRef((_ref, ref) => {
102
97
  checked: selectedValue.includes(option.value)
103
98
  }), option.text]
104
99
  }, option.value);
105
- });
106
- const renderFieldComponent = useCallback(() => _jsx(_Select, {
107
- children: children,
108
- "data-se": testId,
109
- id: idOverride,
110
- multiple: isMultiSelect,
111
- name: nameOverride ?? idOverride,
112
- onBlur: onBlur,
113
- onChange: onChange,
114
- onFocus: onFocus,
115
- ref: ref,
116
- renderValue: isMultiSelect ? renderValue : undefined,
117
- value: selectedValue,
118
- labelId: label
119
- }), [children, idOverride, isMultiSelect, label, nameOverride, onBlur, onChange, onFocus, ref, renderValue, selectedValue, testId]);
100
+ }), [isMultiSelect, normalizedOptions, selectedValue]);
101
+ const renderFieldComponent = useCallback(_ref2 => {
102
+ let {
103
+ ariaDescribedBy,
104
+ id
105
+ } = _ref2;
106
+ return _jsx(_Select, {
107
+ "aria-describedby": ariaDescribedBy,
108
+ children: children,
109
+ "data-se": testId,
110
+ id: id,
111
+ labelId: label,
112
+ multiple: isMultiSelect,
113
+ name: nameOverride ?? id,
114
+ onBlur: onBlur,
115
+ onChange: onChange,
116
+ onFocus: onFocus,
117
+ renderValue: isMultiSelect ? renderValue : undefined,
118
+ value: selectedValue
119
+ });
120
+ }, [children, isMultiSelect, label, nameOverride, onBlur, onChange, onFocus, renderValue, selectedValue, testId]);
120
121
  return _jsx(Field, {
121
122
  errorMessage: errorMessage,
122
123
  fieldType: "single",
@@ -128,7 +129,7 @@ const Select = forwardRef((_ref, ref) => {
128
129
  label: label,
129
130
  renderFieldComponent: renderFieldComponent
130
131
  });
131
- });
132
+ };
132
133
  const MemoizedSelect = memo(Select);
133
134
  MemoizedSelect.displayName = "Select";
134
135
  export { MemoizedSelect as Select };
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["forwardRef","memo","useCallback","useState","Field","jsx","_jsx","jsxs","_jsxs","Select","_ref","ref","errorMessage","hint","id","idOverride","isDisabled","isMultiSelect","isOptional","label","name","nameOverride","onBlur","onChange","onChangeProp","onFocus","value","testId","options","selectedValue","setSelectedValue","event","child","target","split","normalizedOptions","map","option","text","type","renderValue","selected","undefined","renderedChips","item","selectedOption","find","_Chip","filter","Boolean","length","_Box","children","_ListSubheader","_MenuItem","_Checkbox","checked","includes","renderFieldComponent","_Select","multiple","labelId","fieldType","hasVisibleLabel","MemoizedSelect","displayName"],"sources":["../src/Select.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ReactNode, forwardRef, memo, useCallback, useState } from \"react\";\nimport {\n Box,\n Chip,\n Checkbox as MuiCheckbox,\n ListSubheader,\n MenuItem,\n Select as MuiSelect,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { SelectProps as MuiSelectProps } from \"@mui/material\";\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type SelectOption = {\n text: string;\n type?: \"heading\" | \"option\";\n value?: string;\n};\n\nexport type SelectProps = {\n /**\n * The error message for the Select\n */\n errorMessage?: string;\n /**\n * The hint text for the Select\n */\n hint?: string;\n /**\n * The id attribute of the Select\n */\n id?: string;\n /**\n * If `true`, the Select is disabled\n */\n isDisabled?: boolean;\n /**\n * If `true`, the Select allows multiple selections\n */\n isMultiSelect?: boolean;\n /**\n * If `true`, the Select is optional\n */\n isOptional?: boolean;\n /**\n * The label text for the Select\n */\n label: string;\n /**\n * The name of the `input` element. Defaults to the `id` if not set.\n */\n name?: string;\n /**\n * Callback fired when the Select loses focus\n */\n onBlur?: MuiSelectProps[\"onBlur\"];\n /**\n * Callback fired when the value of the Select changes\n */\n onChange?: MuiSelectProps[\"onChange\"];\n /**\n * Callback fired when the Select gains focus\n */\n onFocus?: MuiSelectProps[\"onFocus\"];\n /**\n * The options for the Select\n */\n options: (string | SelectOption)[];\n /**\n * The value or values selected in the Select\n */\n value?: string | string[];\n} & SeleniumProps;\n\n/**\n * Options in Odyssey <Select> are passed as an array, which can contain any combination\n * of the following:\n * - string — A simple string. The string will be both the text and the value of the resulting option.\n * <option value=\"string\">string</option>\n *\n * - { text: string } — Same as above, but the string is contained within an object.\n * <option value=\"text\">text</option>\n *\n * - { text: string, value: string } — The option text will be text, and the option value will be value.\n * <option value=\"value\">text</option>\n *\n * - { text: string, type: \"heading\" } — Used to display a group heading with the text\n */\n\nconst Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n errorMessage,\n hint,\n id: idOverride,\n isDisabled = false,\n isMultiSelect = false,\n isOptional = false,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onFocus,\n value,\n testId,\n options,\n },\n ref\n ) => {\n // If there's no value set, we set it to a blank string (if it's a single-select)\n // or an empty array (if it's a multi-select)\n if (typeof value === \"undefined\") {\n value = isMultiSelect ? [] : \"\";\n }\n\n const [selectedValue, setSelectedValue] = useState<string | string[]>(\n value\n );\n\n const onChange = useCallback(\n (event: SelectChangeEvent<string | string[]>, child: ReactNode) => {\n const {\n target: { value },\n } = event;\n\n // Set the field value, with some additional logic to handle array values\n // for multi-selects\n if (isMultiSelect) {\n setSelectedValue(\n typeof value === \"string\" ? value.split(\",\") : value\n );\n } else {\n setSelectedValue(value);\n }\n\n // Trigger the onChange event, if one has been passed\n if (onChangeProp) {\n onChangeProp(event, child);\n }\n },\n [isMultiSelect, onChangeProp, setSelectedValue]\n );\n\n // Normalize the options array to accommodate the various\n // data types that might be passed\n const normalizedOptions = options.map((option) => {\n if (typeof option === \"object\") {\n return {\n text: option.text,\n value: option.value || option.text,\n type: option.type === \"heading\" ? \"heading\" : \"option\",\n };\n }\n\n return { text: option, value: option, type: \"option\" };\n });\n\n const renderValue = useCallback(\n (selected: string | string[]) => {\n // If the selected value isn't an array, then we don't need to display\n // chips and should fall back to the default render behavior\n if (typeof selected === \"string\") {\n return undefined;\n }\n\n // Convert the selected options array into <Chip>s\n const renderedChips = selected\n .map((item: string) => {\n const selectedOption = normalizedOptions.find(\n (option) => option.value === item\n );\n\n if (!selectedOption) {\n return null;\n }\n\n return <Chip key={item} label={selectedOption.text} />;\n })\n .filter(Boolean);\n\n if (renderedChips.length === 0) {\n return null;\n }\n\n // We need the <Box> to surround the <Chip>s for\n // proper styling\n return <Box>{renderedChips}</Box>;\n },\n [normalizedOptions]\n );\n\n // Convert the options into the ReactNode children\n // that will populate the <Select>\n const children = normalizedOptions.map((option) => {\n if (option.type === \"heading\") {\n return <ListSubheader key={option.text}>{option.text}</ListSubheader>;\n }\n\n return (\n <MenuItem key={option.value} value={option.value}>\n {isMultiSelect && (\n <MuiCheckbox checked={selectedValue.includes(option.value)} />\n )}\n {option.text}\n </MenuItem>\n );\n });\n\n const renderFieldComponent = useCallback(\n () => (\n <MuiSelect\n children={children}\n data-se={testId}\n id={idOverride}\n multiple={isMultiSelect}\n name={nameOverride ?? idOverride}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n ref={ref}\n renderValue={isMultiSelect ? renderValue : undefined}\n value={selectedValue}\n labelId={label}\n />\n ),\n [\n children,\n idOverride,\n isMultiSelect,\n label,\n nameOverride,\n onBlur,\n onChange,\n onFocus,\n ref,\n renderValue,\n selectedValue,\n testId,\n ]\n );\n\n return (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n }\n);\n\nconst MemoizedSelect = memo(Select);\nMemoizedSelect.displayName = \"Select\";\n\nexport { MemoizedSelect as Select };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["memo","useCallback","useMemo","useState","Field","jsx","_jsx","jsxs","_jsxs","Select","_ref","errorMessage","hint","id","idOverride","isDisabled","isMultiSelect","isOptional","label","name","nameOverride","onBlur","onChange","onChangeProp","onFocus","value","testId","options","selectedValue","setSelectedValue","event","child","target","split","normalizedOptions","map","option","text","type","renderValue","selected","undefined","renderedChips","item","selectedOption","find","_Chip","filter","Boolean","length","_Box","children","_ListSubheader","_MenuItem","_Checkbox","checked","includes","renderFieldComponent","_ref2","ariaDescribedBy","_Select","labelId","multiple","fieldType","hasVisibleLabel","MemoizedSelect","displayName"],"sources":["../src/Select.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ReactNode, memo, useCallback, useMemo, useState } from \"react\";\nimport {\n Box,\n Chip,\n Checkbox as MuiCheckbox,\n ListSubheader,\n MenuItem,\n Select as MuiSelect,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { SelectProps as MuiSelectProps } from \"@mui/material\";\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type SelectOption = {\n text: string;\n type?: \"heading\" | \"option\";\n value?: string;\n};\n\nexport type SelectProps = {\n /**\n * The error message for the Select\n */\n errorMessage?: string;\n /**\n * The hint text for the Select\n */\n hint?: string;\n /**\n * The id attribute of the Select\n */\n id?: string;\n /**\n * If `true`, the Select is disabled\n */\n isDisabled?: boolean;\n /**\n * If `true`, the Select allows multiple selections\n */\n isMultiSelect?: boolean;\n /**\n * If `true`, the Select is optional\n */\n isOptional?: boolean;\n /**\n * The label text for the Select\n */\n label: string;\n /**\n * The name of the `input` element. Defaults to the `id` if not set.\n */\n name?: string;\n /**\n * Callback fired when the Select loses focus\n */\n onBlur?: MuiSelectProps[\"onBlur\"];\n /**\n * Callback fired when the value of the Select changes\n */\n onChange?: MuiSelectProps[\"onChange\"];\n /**\n * Callback fired when the Select gains focus\n */\n onFocus?: MuiSelectProps[\"onFocus\"];\n /**\n * The options for the Select\n */\n options: (string | SelectOption)[];\n /**\n * The value or values selected in the Select\n */\n value?: string | string[];\n} & SeleniumProps;\n\n/**\n * Options in Odyssey <Select> are passed as an array, which can contain any combination\n * of the following:\n * - string — A simple string. The string will be both the text and the value of the resulting option.\n * <option value=\"string\">string</option>\n *\n * - { text: string } — Same as above, but the string is contained within an object.\n * <option value=\"text\">text</option>\n *\n * - { text: string, value: string } — The option text will be text, and the option value will be value.\n * <option value=\"value\">text</option>\n *\n * - { text: string, type: \"heading\" } — Used to display a group heading with the text\n */\n\nconst Select = ({\n errorMessage,\n hint,\n id: idOverride,\n isDisabled = false,\n isMultiSelect = false,\n isOptional = false,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onFocus,\n value,\n testId,\n options,\n}: SelectProps) => {\n // If there's no value set, we set it to a blank string (if it's a single-select)\n // or an empty array (if it's a multi-select)\n if (typeof value === \"undefined\") {\n value = isMultiSelect ? [] : \"\";\n }\n\n const [selectedValue, setSelectedValue] = useState<string | string[]>(value);\n\n const onChange = useCallback(\n (event: SelectChangeEvent<string | string[]>, child: ReactNode) => {\n const {\n target: { value },\n } = event;\n\n // Set the field value, with some additional logic to handle array values\n // for multi-selects\n if (isMultiSelect) {\n setSelectedValue(typeof value === \"string\" ? value.split(\",\") : value);\n } else {\n setSelectedValue(value);\n }\n\n // Trigger the onChange event, if one has been passed\n if (onChangeProp) {\n onChangeProp(event, child);\n }\n },\n [isMultiSelect, onChangeProp, setSelectedValue]\n );\n\n // Normalize the options array to accommodate the various\n // data types that might be passed\n const normalizedOptions = useMemo(\n () =>\n options.map((option) =>\n typeof option === \"object\"\n ? {\n text: option.text,\n value: option.value || option.text,\n type: option.type === \"heading\" ? \"heading\" : \"option\",\n }\n : { text: option, value: option, type: \"option\" }\n ),\n [options]\n );\n\n const renderValue = useCallback(\n (selected: string | string[]) => {\n // If the selected value isn't an array, then we don't need to display\n // chips and should fall back to the default render behavior\n if (typeof selected === \"string\") {\n return undefined;\n }\n\n // Convert the selected options array into <Chip>s\n const renderedChips = selected\n .map((item: string) => {\n const selectedOption = normalizedOptions.find(\n (option) => option.value === item\n );\n\n if (!selectedOption) {\n return null;\n }\n\n return <Chip key={item} label={selectedOption.text} />;\n })\n .filter(Boolean);\n\n if (renderedChips.length === 0) {\n return null;\n }\n\n // We need the <Box> to surround the <Chip>s for\n // proper styling\n return <Box>{renderedChips}</Box>;\n },\n [normalizedOptions]\n );\n\n // Convert the options into the ReactNode children\n // that will populate the <Select>\n const children = useMemo(\n () =>\n normalizedOptions.map((option) => {\n if (option.type === \"heading\") {\n return <ListSubheader key={option.text}>{option.text}</ListSubheader>;\n }\n\n return (\n <MenuItem key={option.value} value={option.value}>\n {isMultiSelect && (\n <MuiCheckbox checked={selectedValue.includes(option.value)} />\n )}\n {option.text}\n </MenuItem>\n );\n }),\n [isMultiSelect, normalizedOptions, selectedValue]\n );\n\n const renderFieldComponent = useCallback(\n ({ ariaDescribedBy, id }) => (\n <MuiSelect\n aria-describedby={ariaDescribedBy}\n children={children}\n data-se={testId}\n id={id}\n labelId={label}\n multiple={isMultiSelect}\n name={nameOverride ?? id}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n renderValue={isMultiSelect ? renderValue : undefined}\n value={selectedValue}\n />\n ),\n [\n children,\n isMultiSelect,\n label,\n nameOverride,\n onBlur,\n onChange,\n onFocus,\n renderValue,\n selectedValue,\n testId,\n ]\n );\n\n return (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n};\n\nconst MemoizedSelect = memo(Select);\nMemoizedSelect.displayName = \"Select\";\n\nexport { MemoizedSelect as Select };\n"],"mappings":"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"}
package/dist/Tabs.js CHANGED
@@ -11,8 +11,8 @@ import _Tab from "@mui/material/Tab";
11
11
  * See the License for the specific language governing permissions and limitations under the License.
12
12
  */
13
13
 
14
- import React, { memo, useCallback, useEffect, useState } from "react";
15
- import { TabList as MuiTabList, TabPanel as MuiTabPanel, TabContext as MuiTabContext } from "@mui/lab";
14
+ import { TabContext as MuiTabContext, TabList as MuiTabList, TabPanel as MuiTabPanel } from "@mui/lab";
15
+ import { memo, useCallback, useEffect, useState } from "react";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const Tabs = _ref => {
@@ -20,12 +20,14 @@ const Tabs = _ref => {
20
20
  ariaLabel,
21
21
  initialValue,
22
22
  tabs,
23
- value
23
+ value,
24
+ onChange: onChangeProp
24
25
  } = _ref;
25
26
  const [tabState, setTabState] = useState(initialValue ?? value ?? "0");
26
- const onChange = useCallback((_event, newState) => {
27
- setTabState(newState);
28
- }, []);
27
+ const onChange = useCallback((event, value) => {
28
+ setTabState(value);
29
+ onChangeProp?.(event, value);
30
+ }, [onChangeProp]);
29
31
  useEffect(() => {
30
32
  if (value !== undefined) {
31
33
  setTabState(value);
package/dist/Tabs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["React","memo","useCallback","useEffect","useState","TabList","MuiTabList","TabPanel","MuiTabPanel","TabContext","MuiTabContext","jsx","_jsx","jsxs","_jsxs","Tabs","_ref","ariaLabel","initialValue","tabs","value","tabState","setTabState","onChange","_event","newState","undefined","children","map","tab","index","_Tab","testId","disabled","isDisabled","icon","startIcon","label","toString","MemoizedTabs","displayName"],"sources":["../src/Tabs.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport React, {\n ReactElement,\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { Tab as MuiTab } from \"@mui/material\";\nimport {\n TabList as MuiTabList,\n TabPanel as MuiTabPanel,\n TabContext as MuiTabContext,\n} from \"@mui/lab\";\nimport { SeleniumProps } from \"./SeleniumProps\";\n\nexport type TabItemProps = {\n /**\n * The content of the Tab itself\n */\n children: ReactNode;\n /**\n * If `true`, the TabItem is disabled\n */\n isDisabled?: boolean;\n /**\n * The label text for the TabItem\n */\n label: string;\n /**\n * An optional icon to display at the start of the TabItem\n */\n startIcon?: ReactElement;\n /**\n * The value associated with the TabItem\n */\n value?: string;\n} & SeleniumProps;\n\nexport type TabsProps = {\n /**\n * The ARIA label for the full Tabs group\n */\n ariaLabel?: string;\n /**\n * @deprecated please use the `value` prop instead\n * When `value` is provided, `initialValue` isn't used.\n */\n initialValue?: string;\n /**\n * The TabItems to be included in the Tabs group\n */\n tabs: TabItemProps[];\n /**\n * Identifier for the selected tab.\n */\n value?: string;\n};\n\nconst Tabs = ({ ariaLabel, initialValue, tabs, value }: TabsProps) => {\n const [tabState, setTabState] = useState(initialValue ?? value ?? \"0\");\n\n const onChange = useCallback(\n (_event: React.SyntheticEvent, newState: string) => {\n setTabState(newState);\n },\n []\n );\n\n useEffect(() => {\n if (value !== undefined) {\n setTabState(value);\n }\n }, [value]);\n\n return (\n <MuiTabContext value={tabState}>\n <MuiTabList onChange={onChange} aria-label={ariaLabel}>\n {tabs.map((tab, index) => (\n <MuiTab\n data-se={tab.testId}\n disabled={tab.isDisabled}\n icon={tab.startIcon}\n label={tab.label}\n value={tab.value ? tab.value : index.toString()}\n key={tab.value ? tab.value : index.toString()}\n />\n ))}\n </MuiTabList>\n {tabs.map((tab, index) => (\n <MuiTabPanel\n value={tab.value ? tab.value : index.toString()}\n key={tab.value ? tab.value : index.toString()}\n >\n {tab.children}\n </MuiTabPanel>\n ))}\n </MuiTabContext>\n );\n};\n\nconst MemoizedTabs = memo(Tabs);\nMemoizedTabs.displayName = \"Tabs\";\n\nexport { MemoizedTabs as Tabs };\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAGVC,IAAI,EACJC,WAAW,EACXC,SAAS,EACTC,QAAQ,QACH,OAAO;AAEd,SACEC,OAAO,IAAIC,UAAU,EACrBC,QAAQ,IAAIC,WAAW,EACvBC,UAAU,IAAIC,aAAa,QACtB,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AA8ClB,MAAMC,IAAI,GAAGC,IAAA,IAAyD;EAAA,IAAxD;IAAEC,SAAS;IAAEC,YAAY;IAAEC,IAAI;IAAEC;EAAiB,CAAC,GAAAJ,IAAA;EAC/D,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAGlB,QAAQ,CAACc,YAAY,IAAIE,KAAK,IAAI,GAAG,CAAC;EAEtE,MAAMG,QAAQ,GAAGrB,WAAW,CAC1B,CAACsB,MAA4B,EAAEC,QAAgB,KAAK;IAClDH,WAAW,CAACG,QAAQ,CAAC;EACvB,CAAC,EACD,EACF,CAAC;EAEDtB,SAAS,CAAC,MAAM;IACd,IAAIiB,KAAK,KAAKM,SAAS,EAAE;MACvBJ,WAAW,CAACF,KAAK,CAAC;IACpB;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OACEN,KAAA,CAACJ,aAAa;IAACU,KAAK,EAAEC,QAAS;IAAAM,QAAA,GAC7Bf,IAAA,CAACN,UAAU;MAACiB,QAAQ,EAAEA,QAAS;MAAC,cAAYN,SAAU;MAAAU,QAAA,EACnDR,IAAI,CAACS,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,KACnBlB,IAAA,CAAAmB,IAAA;QACE,WAASF,GAAG,CAACG,MAAO;QACpBC,QAAQ,EAAEJ,GAAG,CAACK,UAAW;QACzBC,IAAI,EAAEN,GAAG,CAACO,SAAU;QACpBC,KAAK,EAAER,GAAG,CAACQ,KAAM;QACjBjB,KAAK,EAAES,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC;MAAE,GAC3CT,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAC7C,CACF;IAAC,CACQ,CAAC,EACZnB,IAAI,CAACS,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,KACnBlB,IAAA,CAACJ,WAAW;MACVY,KAAK,EAAES,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAAE;MAAAX,QAAA,EAG/CE,GAAG,CAACF;IAAQ,GAFRE,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAGjC,CACd,CAAC;EAAA,CACW,CAAC;AAEpB,CAAC;AAED,MAAMC,YAAY,GAAGtC,IAAI,CAACc,IAAI,CAAC;AAC/BwB,YAAY,CAACC,WAAW,GAAG,MAAM;AAEjC,SAASD,YAAY,IAAIxB,IAAI"}
1
+ {"version":3,"file":"Tabs.js","names":["TabContext","MuiTabContext","TabList","MuiTabList","TabPanel","MuiTabPanel","memo","useCallback","useEffect","useState","jsx","_jsx","jsxs","_jsxs","Tabs","_ref","ariaLabel","initialValue","tabs","value","onChange","onChangeProp","tabState","setTabState","event","undefined","children","map","tab","index","_Tab","testId","disabled","isDisabled","icon","startIcon","label","toString","MemoizedTabs","displayName"],"sources":["../src/Tabs.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n TabContext as MuiTabContext,\n TabList as MuiTabList,\n TabListProps as MuiTabListProps,\n TabPanel as MuiTabPanel,\n} from \"@mui/lab\";\nimport { Tab as MuiTab } from \"@mui/material\";\nimport {\n ReactElement,\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { SeleniumProps } from \"./SeleniumProps\";\n\nexport type TabItemProps = {\n /**\n * The content of the Tab itself\n */\n children: ReactNode;\n /**\n * If `true`, the TabItem is disabled\n */\n isDisabled?: boolean;\n /**\n * The label text for the TabItem\n */\n label: string;\n /**\n * An optional icon to display at the start of the TabItem\n */\n startIcon?: ReactElement;\n /**\n * The value associated with the TabItem\n */\n value?: string;\n} & SeleniumProps;\n\nexport type TabsProps = {\n /**\n * The ARIA label for the full Tabs group\n */\n ariaLabel?: string;\n /**\n * @deprecated please use the `value` prop instead\n * When `value` is provided, `initialValue` isn't used.\n */\n initialValue?: string;\n /**\n * The TabItems to be included in the Tabs group\n */\n tabs: TabItemProps[];\n /**\n * Identifier for the selected tab.\n */\n value?: string;\n /**\n * Callback fired when the active tab is changed.\n */\n onChange?: MuiTabListProps[\"onChange\"];\n};\n\nconst Tabs = ({\n ariaLabel,\n initialValue,\n tabs,\n value,\n onChange: onChangeProp,\n}: TabsProps) => {\n const [tabState, setTabState] = useState(initialValue ?? value ?? \"0\");\n\n const onChange = useCallback<NonNullable<MuiTabListProps[\"onChange\"]>>(\n (event, value: string) => {\n setTabState(value);\n onChangeProp?.(event, value);\n },\n [onChangeProp]\n );\n\n useEffect(() => {\n if (value !== undefined) {\n setTabState(value);\n }\n }, [value]);\n\n return (\n <MuiTabContext value={tabState}>\n <MuiTabList onChange={onChange} aria-label={ariaLabel}>\n {tabs.map((tab, index) => (\n <MuiTab\n data-se={tab.testId}\n disabled={tab.isDisabled}\n icon={tab.startIcon}\n label={tab.label}\n value={tab.value ? tab.value : index.toString()}\n key={tab.value ? tab.value : index.toString()}\n />\n ))}\n </MuiTabList>\n {tabs.map((tab, index) => (\n <MuiTabPanel\n value={tab.value ? tab.value : index.toString()}\n key={tab.value ? tab.value : index.toString()}\n >\n {tab.children}\n </MuiTabPanel>\n ))}\n </MuiTabContext>\n );\n};\n\nconst MemoizedTabs = memo(Tabs);\nMemoizedTabs.displayName = \"Tabs\";\n\nexport { MemoizedTabs as Tabs };\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,UAAU,IAAIC,aAAa,EAC3BC,OAAO,IAAIC,UAAU,EAErBC,QAAQ,IAAIC,WAAW,QAClB,UAAU;AAEjB,SAGEC,IAAI,EACJC,WAAW,EACXC,SAAS,EACTC,QAAQ,QACH,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAkDf,MAAMC,IAAI,GAAGC,IAAA,IAMI;EAAA,IANH;IACZC,SAAS;IACTC,YAAY;IACZC,IAAI;IACJC,KAAK;IACLC,QAAQ,EAAEC;EACD,CAAC,GAAAN,IAAA;EACV,MAAM,CAACO,QAAQ,EAAEC,WAAW,CAAC,GAAGd,QAAQ,CAACQ,YAAY,IAAIE,KAAK,IAAI,GAAG,CAAC;EAEtE,MAAMC,QAAQ,GAAGb,WAAW,CAC1B,CAACiB,KAAK,EAAEL,KAAa,KAAK;IACxBI,WAAW,CAACJ,KAAK,CAAC;IAClBE,YAAY,GAAGG,KAAK,EAAEL,KAAK,CAAC;EAC9B,CAAC,EACD,CAACE,YAAY,CACf,CAAC;EAEDb,SAAS,CAAC,MAAM;IACd,IAAIW,KAAK,KAAKM,SAAS,EAAE;MACvBF,WAAW,CAACJ,KAAK,CAAC;IACpB;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OACEN,KAAA,CAACZ,aAAa;IAACkB,KAAK,EAAEG,QAAS;IAAAI,QAAA,GAC7Bf,IAAA,CAACR,UAAU;MAACiB,QAAQ,EAAEA,QAAS;MAAC,cAAYJ,SAAU;MAAAU,QAAA,EACnDR,IAAI,CAACS,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,KACnBlB,IAAA,CAAAmB,IAAA;QACE,WAASF,GAAG,CAACG,MAAO;QACpBC,QAAQ,EAAEJ,GAAG,CAACK,UAAW;QACzBC,IAAI,EAAEN,GAAG,CAACO,SAAU;QACpBC,KAAK,EAAER,GAAG,CAACQ,KAAM;QACjBjB,KAAK,EAAES,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC;MAAE,GAC3CT,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAC7C,CACF;IAAC,CACQ,CAAC,EACZnB,IAAI,CAACS,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK,KACnBlB,IAAA,CAACN,WAAW;MACVc,KAAK,EAAES,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAAE;MAAAX,QAAA,EAG/CE,GAAG,CAACF;IAAQ,GAFRE,GAAG,CAACT,KAAK,GAAGS,GAAG,CAACT,KAAK,GAAGU,KAAK,CAACQ,QAAQ,CAAC,CAGjC,CACd,CAAC;EAAA,CACW,CAAC;AAEpB,CAAC;AAED,MAAMC,YAAY,GAAGhC,IAAI,CAACQ,IAAI,CAAC;AAC/BwB,YAAY,CAACC,WAAW,GAAG,MAAM;AAEjC,SAASD,YAAY,IAAIxB,IAAI"}
@@ -31,7 +31,6 @@ const Typography = _ref => {
31
31
  ariaLabel,
32
32
  ariaLabelledBy,
33
33
  children,
34
- classes,
35
34
  color,
36
35
  component: componentProp,
37
36
  testId,
@@ -54,7 +53,6 @@ const Typography = _ref => {
54
53
  "aria-label": ariaLabel,
55
54
  "aria-labelledby": ariaLabelledBy,
56
55
  children: children,
57
- classes: classes,
58
56
  color: color,
59
57
  component: component,
60
58
  "data-se": testId,
@@ -69,7 +67,6 @@ const Heading1 = _ref2 => {
69
67
  ariaLabel,
70
68
  ariaLabelledBy,
71
69
  children,
72
- classes,
73
70
  color,
74
71
  component,
75
72
  testId
@@ -79,7 +76,6 @@ const Heading1 = _ref2 => {
79
76
  ariaLabel: ariaLabel,
80
77
  ariaLabelledBy: ariaLabelledBy,
81
78
  children: children,
82
- classes: classes,
83
79
  color: color,
84
80
  component: component,
85
81
  "data-se": testId,
@@ -94,7 +90,6 @@ const Heading2 = _ref3 => {
94
90
  ariaLabel,
95
91
  ariaLabelledBy,
96
92
  children,
97
- classes,
98
93
  color,
99
94
  component,
100
95
  testId
@@ -104,7 +99,6 @@ const Heading2 = _ref3 => {
104
99
  ariaLabel: ariaLabel,
105
100
  ariaLabelledBy: ariaLabelledBy,
106
101
  children: children,
107
- classes: classes,
108
102
  color: color,
109
103
  component: component,
110
104
  "data-se": testId,
@@ -119,7 +113,6 @@ const Heading3 = _ref4 => {
119
113
  ariaLabel,
120
114
  ariaLabelledBy,
121
115
  children,
122
- classes,
123
116
  color,
124
117
  component,
125
118
  testId
@@ -129,7 +122,6 @@ const Heading3 = _ref4 => {
129
122
  ariaLabel: ariaLabel,
130
123
  ariaLabelledBy: ariaLabelledBy,
131
124
  children: children,
132
- classes: classes,
133
125
  color: color,
134
126
  component: component,
135
127
  "data-se": testId,
@@ -144,7 +136,6 @@ const Heading4 = _ref5 => {
144
136
  ariaLabel,
145
137
  ariaLabelledBy,
146
138
  children,
147
- classes,
148
139
  color,
149
140
  component,
150
141
  testId
@@ -154,7 +145,6 @@ const Heading4 = _ref5 => {
154
145
  ariaLabel: ariaLabel,
155
146
  ariaLabelledBy: ariaLabelledBy,
156
147
  children: children,
157
- classes: classes,
158
148
  color: color,
159
149
  component: component,
160
150
  "data-se": testId,
@@ -169,7 +159,6 @@ const Heading5 = _ref6 => {
169
159
  ariaLabel,
170
160
  ariaLabelledBy,
171
161
  children,
172
- classes,
173
162
  color,
174
163
  component,
175
164
  testId
@@ -179,7 +168,6 @@ const Heading5 = _ref6 => {
179
168
  ariaLabel: ariaLabel,
180
169
  ariaLabelledBy: ariaLabelledBy,
181
170
  children: children,
182
- classes: classes,
183
171
  color: color,
184
172
  component: component,
185
173
  "data-se": testId,
@@ -194,7 +182,6 @@ const Heading6 = _ref7 => {
194
182
  ariaLabel,
195
183
  ariaLabelledBy,
196
184
  children,
197
- classes,
198
185
  color,
199
186
  component,
200
187
  testId
@@ -204,7 +191,6 @@ const Heading6 = _ref7 => {
204
191
  ariaLabel: ariaLabel,
205
192
  ariaLabelledBy: ariaLabelledBy,
206
193
  children: children,
207
- classes: classes,
208
194
  color: color,
209
195
  component: component,
210
196
  "data-se": testId,
@@ -219,7 +205,6 @@ const Paragraph = _ref8 => {
219
205
  ariaLabel,
220
206
  ariaLabelledBy,
221
207
  children,
222
- classes,
223
208
  color,
224
209
  component,
225
210
  testId
@@ -229,7 +214,6 @@ const Paragraph = _ref8 => {
229
214
  ariaLabel: ariaLabel,
230
215
  ariaLabelledBy: ariaLabelledBy,
231
216
  children: children,
232
- classes: classes,
233
217
  color: color,
234
218
  component: component,
235
219
  "data-se": testId,
@@ -244,7 +228,6 @@ const Subordinate = _ref9 => {
244
228
  ariaLabel,
245
229
  ariaLabelledBy,
246
230
  children,
247
- classes,
248
231
  color,
249
232
  component,
250
233
  testId
@@ -254,7 +237,6 @@ const Subordinate = _ref9 => {
254
237
  ariaLabel: ariaLabel,
255
238
  ariaLabelledBy: ariaLabelledBy,
256
239
  children: children,
257
- classes: classes,
258
240
  color: color,
259
241
  component: component,
260
242
  "data-se": testId,
@@ -269,7 +251,6 @@ const Support = _ref10 => {
269
251
  ariaLabel,
270
252
  ariaLabelledBy,
271
253
  children,
272
- classes,
273
254
  color,
274
255
  component,
275
256
  testId
@@ -279,7 +260,6 @@ const Support = _ref10 => {
279
260
  ariaLabel: ariaLabel,
280
261
  ariaLabelledBy: ariaLabelledBy,
281
262
  children: children,
282
- classes: classes,
283
263
  color: color,
284
264
  component: component,
285
265
  "data-se": testId,
@@ -294,7 +274,6 @@ const Legend = _ref11 => {
294
274
  ariaLabel,
295
275
  ariaLabelledBy,
296
276
  children,
297
- classes,
298
277
  color,
299
278
  component,
300
279
  testId
@@ -304,7 +283,6 @@ const Legend = _ref11 => {
304
283
  ariaLabel: ariaLabel,
305
284
  ariaLabelledBy: ariaLabelledBy,
306
285
  children: children,
307
- classes: classes,
308
286
  color: color,
309
287
  component: component,
310
288
  "data-se": testId,
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.js","names":["memo","useMemo","jsx","_jsx","typographyVariantMapping","h1","h2","h3","h4","h5","h6","body","subordinate","support","legend","typographyColorValues","Typography","_ref","ariaDescribedBy","ariaLabel","ariaLabelledBy","children","classes","color","component","componentProp","testId","variant","_Typography","MemoizedTypography","displayName","Heading1","_ref2","MemoizedHeading1","Heading2","_ref3","MemoizedHeading2","Heading3","_ref4","MemoizedHeading3","Heading4","_ref5","MemoizedHeading4","Heading5","_ref6","MemoizedHeading5","Heading6","_ref7","MemoizedHeading6","Paragraph","_ref8","MemoizedParagraph","Subordinate","_ref9","MemoizedSubordinate","Support","_ref10","MemoizedSupport","Legend","_ref11","MemoizedLegend"],"sources":["../src/Typography.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n Typography as MuiTypography,\n TypographyProps as MuiTypographyProps,\n} from \"@mui/material\";\nimport { ElementType, ReactNode, memo, useMemo } from \"react\";\nimport { SeleniumProps } from \"./SeleniumProps\";\n\nexport type TypographyVariantValue =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"body\"\n | \"subordinate\"\n | \"support\"\n | \"legend\";\n\nexport const typographyVariantMapping: Record<\n TypographyVariantValue,\n MuiTypographyProps[\"variant\"]\n> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body: \"body1\",\n subordinate: \"subtitle1\",\n support: \"subtitle2\",\n legend: \"legend\",\n} as const;\n\nexport const typographyColorValues = [\n \"primary\",\n \"textPrimary\",\n \"secondary\",\n \"textSecondary\",\n \"error\",\n] as const;\n\nexport type TypographyProps = {\n /**\n * The ID of the element that describes the component.\n */\n ariaDescribedBy?: string;\n /**\n * The ARIA label for the component.\n */\n ariaLabel?: string;\n /**\n * The ID of the element that labels the component.\n */\n ariaLabelledBy?: string;\n /**\n * The text content of the component.\n */\n children: ReactNode;\n /**\n * Additional classes to add to the component.\n */\n classes?: object;\n /**\n * The color of the text.\n */\n color?: (typeof typographyColorValues)[number];\n /**\n * The HTML element the component should render, if different from the default.\n */\n component?: ElementType;\n /**\n * The variant of Typography to render.\n */\n variant?: keyof typeof typographyVariantMapping;\n} & SeleniumProps;\n\nconst Typography = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component: componentProp,\n testId,\n variant = \"body\",\n}: TypographyProps) => {\n const component = useMemo(() => {\n if (!componentProp) {\n if (variant === \"body\") {\n return \"p\";\n } else if (variant === \"subordinate\" || variant === \"support\") {\n return \"p\";\n } else {\n return variant;\n }\n }\n return componentProp;\n }, [componentProp, variant]);\n\n return (\n <MuiTypography\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant={typographyVariantMapping[variant]}\n />\n );\n};\n\nconst MemoizedTypography = memo(Typography);\nMemoizedTypography.displayName = \"Typography\";\n\nconst Heading1 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h1\"\n />\n);\n\nconst MemoizedHeading1 = memo(Heading1);\nMemoizedHeading1.displayName = \"Heading1\";\n\nconst Heading2 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h2\"\n />\n);\n\nconst MemoizedHeading2 = memo(Heading2);\nMemoizedHeading2.displayName = \"Heading2\";\n\nconst Heading3 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h3\"\n />\n);\n\nconst MemoizedHeading3 = memo(Heading3);\nMemoizedHeading3.displayName = \"Heading3\";\n\nconst Heading4 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h4\"\n />\n);\n\nconst MemoizedHeading4 = memo(Heading4);\nMemoizedHeading4.displayName = \"Heading4\";\n\nconst Heading5 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h5\"\n />\n);\n\nconst MemoizedHeading5 = memo(Heading5);\nMemoizedHeading5.displayName = \"Heading5\";\n\nconst Heading6 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h6\"\n />\n);\n\nconst MemoizedHeading6 = memo(Heading6);\nMemoizedHeading6.displayName = \"Heading6\";\n\nconst Paragraph = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"body\"\n />\n);\n\nconst MemoizedParagraph = memo(Paragraph);\nMemoizedParagraph.displayName = \"Paragraph\";\n\nconst Subordinate = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"subordinate\"\n />\n);\n\nconst MemoizedSubordinate = memo(Subordinate);\nMemoizedSubordinate.displayName = \"Subordinate\";\n\nconst Support = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"support\"\n />\n);\n\nconst MemoizedSupport = memo(Support);\nMemoizedSupport.displayName = \"Support\";\n\nconst Legend = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n classes,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n classes={classes}\n color={color}\n component={component}\n data-se={testId}\n variant=\"legend\"\n />\n);\n\nconst MemoizedLegend = memo(Legend);\nMemoizedLegend.displayName = \"Legend\";\n\nexport {\n MemoizedTypography as Typography,\n MemoizedHeading1 as Heading1,\n MemoizedHeading2 as Heading2,\n MemoizedHeading3 as Heading3,\n MemoizedHeading4 as Heading4,\n MemoizedHeading5 as Heading5,\n MemoizedHeading6 as Heading6,\n MemoizedLegend as Legend,\n MemoizedParagraph as Paragraph,\n MemoizedSubordinate as Subordinate,\n MemoizedSupport as Support,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Typography.js","names":["memo","useMemo","jsx","_jsx","typographyVariantMapping","h1","h2","h3","h4","h5","h6","body","subordinate","support","legend","typographyColorValues","Typography","_ref","ariaDescribedBy","ariaLabel","ariaLabelledBy","children","color","component","componentProp","testId","variant","_Typography","MemoizedTypography","displayName","Heading1","_ref2","MemoizedHeading1","Heading2","_ref3","MemoizedHeading2","Heading3","_ref4","MemoizedHeading3","Heading4","_ref5","MemoizedHeading4","Heading5","_ref6","MemoizedHeading5","Heading6","_ref7","MemoizedHeading6","Paragraph","_ref8","MemoizedParagraph","Subordinate","_ref9","MemoizedSubordinate","Support","_ref10","MemoizedSupport","Legend","_ref11","MemoizedLegend"],"sources":["../src/Typography.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n Typography as MuiTypography,\n TypographyProps as MuiTypographyProps,\n} from \"@mui/material\";\nimport { ElementType, ReactNode, memo, useMemo } from \"react\";\nimport { SeleniumProps } from \"./SeleniumProps\";\n\nexport type TypographyVariantValue =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"body\"\n | \"subordinate\"\n | \"support\"\n | \"legend\";\n\nexport const typographyVariantMapping: Record<\n TypographyVariantValue,\n MuiTypographyProps[\"variant\"]\n> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body: \"body1\",\n subordinate: \"subtitle1\",\n support: \"subtitle2\",\n legend: \"legend\",\n} as const;\n\nexport const typographyColorValues = [\n \"primary\",\n \"textPrimary\",\n \"secondary\",\n \"textSecondary\",\n \"error\",\n] as const;\n\nexport type TypographyProps = {\n /**\n * The ID of the element that describes the component.\n */\n ariaDescribedBy?: string;\n /**\n * The ARIA label for the component.\n */\n ariaLabel?: string;\n /**\n * The ID of the element that labels the component.\n */\n ariaLabelledBy?: string;\n /**\n * The text content of the component.\n */\n children: ReactNode;\n /**\n * The color of the text.\n */\n color?: (typeof typographyColorValues)[number];\n /**\n * The HTML element the component should render, if different from the default.\n */\n component?: ElementType;\n /**\n * The variant of Typography to render.\n */\n variant?: keyof typeof typographyVariantMapping;\n} & SeleniumProps;\n\nconst Typography = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component: componentProp,\n testId,\n variant = \"body\",\n}: TypographyProps) => {\n const component = useMemo(() => {\n if (!componentProp) {\n if (variant === \"body\") {\n return \"p\";\n } else if (variant === \"subordinate\" || variant === \"support\") {\n return \"p\";\n } else {\n return variant;\n }\n }\n return componentProp;\n }, [componentProp, variant]);\n\n return (\n <MuiTypography\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant={typographyVariantMapping[variant]}\n />\n );\n};\n\nconst MemoizedTypography = memo(Typography);\nMemoizedTypography.displayName = \"Typography\";\n\nconst Heading1 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h1\"\n />\n);\n\nconst MemoizedHeading1 = memo(Heading1);\nMemoizedHeading1.displayName = \"Heading1\";\n\nconst Heading2 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h2\"\n />\n);\n\nconst MemoizedHeading2 = memo(Heading2);\nMemoizedHeading2.displayName = \"Heading2\";\n\nconst Heading3 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h3\"\n />\n);\n\nconst MemoizedHeading3 = memo(Heading3);\nMemoizedHeading3.displayName = \"Heading3\";\n\nconst Heading4 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h4\"\n />\n);\n\nconst MemoizedHeading4 = memo(Heading4);\nMemoizedHeading4.displayName = \"Heading4\";\n\nconst Heading5 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h5\"\n />\n);\n\nconst MemoizedHeading5 = memo(Heading5);\nMemoizedHeading5.displayName = \"Heading5\";\n\nconst Heading6 = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"h6\"\n />\n);\n\nconst MemoizedHeading6 = memo(Heading6);\nMemoizedHeading6.displayName = \"Heading6\";\n\nconst Paragraph = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"body\"\n />\n);\n\nconst MemoizedParagraph = memo(Paragraph);\nMemoizedParagraph.displayName = \"Paragraph\";\n\nconst Subordinate = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"subordinate\"\n />\n);\n\nconst MemoizedSubordinate = memo(Subordinate);\nMemoizedSubordinate.displayName = \"Subordinate\";\n\nconst Support = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"support\"\n />\n);\n\nconst MemoizedSupport = memo(Support);\nMemoizedSupport.displayName = \"Support\";\n\nconst Legend = ({\n ariaDescribedBy,\n ariaLabel,\n ariaLabelledBy,\n children,\n color,\n component,\n testId,\n}: TypographyProps) => (\n <Typography\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n children={children}\n color={color}\n component={component}\n data-se={testId}\n variant=\"legend\"\n />\n);\n\nconst MemoizedLegend = memo(Legend);\nMemoizedLegend.displayName = \"Legend\";\n\nexport {\n MemoizedTypography as Typography,\n MemoizedHeading1 as Heading1,\n MemoizedHeading2 as Heading2,\n MemoizedHeading3 as Heading3,\n MemoizedHeading4 as Heading4,\n MemoizedHeading5 as Heading5,\n MemoizedHeading6 as Heading6,\n MemoizedLegend as Legend,\n MemoizedParagraph as Paragraph,\n MemoizedSubordinate as Subordinate,\n MemoizedSupport as Support,\n};\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /*!
2
+ * Copyright (c) 2023-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
+ export const createShadowDom = containerElement => {
14
+ const shadowContainer = containerElement.attachShadow({
15
+ mode: "open"
16
+ });
17
+ const emotionRootElement = document.createElement("style");
18
+ const shadowRootElement = document.createElement("div");
19
+ shadowContainer.appendChild(emotionRootElement);
20
+ shadowContainer.appendChild(shadowRootElement);
21
+ return {
22
+ emotionRootElement,
23
+ shadowRootElement
24
+ };
25
+ };
26
+ //# sourceMappingURL=createShadowDom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createShadowDom.js","names":["createShadowDom","containerElement","shadowContainer","attachShadow","mode","emotionRootElement","document","createElement","shadowRootElement","appendChild"],"sources":["../src/createShadowDom.ts"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport const createShadowDom = (containerElement: HTMLElement) => {\n const shadowContainer = containerElement.attachShadow({ mode: \"open\" });\n const emotionRootElement = document.createElement(\"style\");\n const shadowRootElement = document.createElement(\"div\");\n\n shadowContainer.appendChild(emotionRootElement);\n shadowContainer.appendChild(shadowRootElement);\n\n return {\n emotionRootElement,\n shadowRootElement,\n };\n};\n\n// --DOCS--\n\n// const {\n// emotionRootElement,\n// shadowRootElement,\n// } = (\n// createShadowDom(\n// document.querySelector('#root') as HTMLElement\n// )\n// )\n\n// ReactDOM\n// .createRoot(\n// shadowRootElement\n// )\n// .render(\n// <OdysseyProvider emotionRootElement={emotionRootElement} shadowRootElement={shadowRootElement}>\n// <App />\n// </OdysseyProvider>\n// )\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,eAAe,GAAIC,gBAA6B,IAAK;EAChE,MAAMC,eAAe,GAAGD,gBAAgB,CAACE,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAO,CAAC,CAAC;EACvE,MAAMC,kBAAkB,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;EAC1D,MAAMC,iBAAiB,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAEvDL,eAAe,CAACO,WAAW,CAACJ,kBAAkB,CAAC;EAC/CH,eAAe,CAACO,WAAW,CAACD,iBAAiB,CAAC;EAE9C,OAAO;IACLH,kBAAkB;IAClBG;EACF,CAAC;AACH,CAAC"}
@@ -95,5 +95,6 @@ Object.entries(resources).forEach(_ref => {
95
95
  let [locale, property] = _ref;
96
96
  i18n.addResourceBundle(locale, defaultNS, property);
97
97
  });
98
- export default i18n;
99
- //# sourceMappingURL=OdysseyI18n.js.map
98
+ export const odysseyTranslate = i18n.t.bind(i18n);
99
+ export { i18n };
100
+ //# sourceMappingURL=i18n.js.map