@okta/odyssey-react-mui 1.39.1 → 1.41.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.
- package/README.md +1 -1
- package/dist/cjs/Autocomplete.cjs +10 -10
- package/dist/cjs/Autocomplete.cjs.map +1 -1
- package/dist/cjs/Breadcrumbs.cjs +1 -0
- package/dist/cjs/Breadcrumbs.cjs.map +1 -1
- package/dist/cjs/Buttons/BaseMenuButton.cjs.map +1 -1
- package/dist/cjs/Buttons/MenuItem.cjs +1 -2
- package/dist/cjs/Buttons/MenuItem.cjs.map +1 -1
- package/dist/cjs/CheckboxGroup.cjs +1 -2
- package/dist/cjs/CheckboxGroup.cjs.map +1 -1
- package/dist/cjs/DataTable/DataTable.cjs.map +1 -1
- package/dist/cjs/DatePickers/datePickerTheme.cjs +1 -2
- package/dist/cjs/DatePickers/datePickerTheme.cjs.map +1 -1
- package/dist/cjs/Drawer.cjs.map +1 -1
- package/dist/cjs/Link.cjs.map +1 -1
- package/dist/cjs/NativeSelect.cjs +1 -2
- package/dist/cjs/NativeSelect.cjs.map +1 -1
- package/dist/cjs/OdysseyCacheProvider.cjs.map +1 -1
- package/dist/cjs/OdysseyDesignTokensContext.cjs +1 -2
- package/dist/cjs/OdysseyDesignTokensContext.cjs.map +1 -1
- package/dist/cjs/OdysseyThemeProvider.cjs +1 -2
- package/dist/cjs/OdysseyThemeProvider.cjs.map +1 -1
- package/dist/cjs/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/RadioGroup.cjs +1 -2
- package/dist/cjs/RadioGroup.cjs.map +1 -1
- package/dist/cjs/Tag.cjs +9 -2
- package/dist/cjs/Tag.cjs.map +1 -1
- package/dist/cjs/inputUtils.cjs.map +1 -1
- package/dist/cjs/labs/DataFilters.cjs.map +1 -1
- package/dist/cjs/labs/DataTable.cjs +11 -10
- package/dist/cjs/labs/DataTable.cjs.map +1 -1
- package/dist/cjs/labs/DataView/componentTypes.cjs.map +1 -1
- package/dist/cjs/labs/DataView/dataTypes.cjs.map +1 -1
- package/dist/cjs/labs/DataView/testSupportData.cjs.map +1 -1
- package/dist/cjs/labs/GroupPicker.cjs +1 -2
- package/dist/cjs/labs/GroupPicker.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui.cjs +2 -1
- package/dist/cjs/properties/ts/odyssey-react-mui.cjs.map +1 -1
- package/dist/cjs/theme/components.cjs +1 -0
- package/dist/cjs/theme/components.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +10 -10
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
- package/dist/cjs/ui-shell/renderUiShell.cjs +2 -2
- package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
- package/dist/cjs/ui-shell/useScrollState.cjs +4 -2
- package/dist/cjs/ui-shell/useScrollState.cjs.map +1 -1
- package/dist/cjs/useAutocomplete.cjs +2 -2
- package/dist/cjs/useAutocomplete.cjs.map +1 -1
- package/dist/cjs/useContrastMode.cjs +1 -2
- package/dist/cjs/useContrastMode.cjs.map +1 -1
- package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs +1 -1
- package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs.map +1 -1
- package/dist/cjs/web-component/renderReactInWebComponent.cjs +1 -2
- package/dist/cjs/web-component/renderReactInWebComponent.cjs.map +1 -1
- package/dist/esm/Autocomplete.js +10 -10
- package/dist/esm/Autocomplete.js.map +1 -1
- package/dist/esm/Breadcrumbs.js +1 -0
- package/dist/esm/Breadcrumbs.js.map +1 -1
- package/dist/esm/Buttons/BaseMenuButton.js.map +1 -1
- package/dist/esm/DataTable/DataTable.js.map +1 -1
- package/dist/esm/Drawer.js.map +1 -1
- package/dist/esm/Link.js.map +1 -1
- package/dist/esm/OdysseyCacheProvider.js.map +1 -1
- package/dist/esm/Pagination/Pagination.js.map +1 -1
- package/dist/esm/Tag.js +9 -2
- package/dist/esm/Tag.js.map +1 -1
- package/dist/esm/inputUtils.js.map +1 -1
- package/dist/esm/labs/DataFilters.js.map +1 -1
- package/dist/esm/labs/DataTable.js +2 -1
- package/dist/esm/labs/DataTable.js.map +1 -1
- package/dist/esm/labs/DataView/componentTypes.js.map +1 -1
- package/dist/esm/labs/DataView/dataTypes.js.map +1 -1
- package/dist/esm/labs/DataView/testSupportData.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui.js +2 -1
- package/dist/esm/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/esm/theme/components.js +1 -0
- package/dist/esm/theme/components.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +10 -10
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
- package/dist/esm/ui-shell/renderUiShell.js +2 -2
- package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
- package/dist/esm/ui-shell/useScrollState.js +4 -2
- package/dist/esm/ui-shell/useScrollState.js.map +1 -1
- package/dist/esm/useAutocomplete.js +2 -2
- package/dist/esm/useAutocomplete.js.map +1 -1
- package/dist/esm/web-component/odysseyWebComponentVersion.generated.js +1 -1
- package/dist/esm/web-component/odysseyWebComponentVersion.generated.js.map +1 -1
- package/dist/index.cjs +231 -0
- package/dist/index.d.ts +233 -0
- package/dist/index.mjs +229 -0
- package/dist/index.scss +549 -0
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/types/Autocomplete.d.ts +1 -1
- package/dist/types/Autocomplete.d.ts.map +1 -1
- package/dist/types/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/Buttons/BaseMenuButton.d.ts +2 -2
- package/dist/types/CssBaseline.d.ts.map +1 -1
- package/dist/types/DataTable/DataTable.d.ts +1 -1
- package/dist/types/DataTable/reorderDataRowsLocally.d.ts.map +1 -1
- package/dist/types/DataTable/useRowReordering.d.ts.map +1 -1
- package/dist/types/DataTable/useScrollIndication.d.ts.map +1 -1
- package/dist/types/DatePickers/useOdysseyDateFields.d.ts.map +1 -1
- package/dist/types/Link.d.ts +3 -3
- package/dist/types/Link.d.ts.map +1 -1
- package/dist/types/NativeSelect.d.ts.map +1 -1
- package/dist/types/OdysseyCacheProvider.d.ts.map +1 -1
- package/dist/types/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/types/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/types/Pagination/usePagination.d.ts.map +1 -1
- package/dist/types/Tag.d.ts.map +1 -1
- package/dist/types/addSpecificity.d.ts.map +1 -1
- package/dist/types/createContrastColors.d.ts.map +1 -1
- package/dist/types/hexToRgb.d.ts.map +1 -1
- package/dist/types/i18n.d.ts +1 -0
- package/dist/types/i18n.d.ts.map +1 -1
- package/dist/types/inputUtils.d.ts +1 -1
- package/dist/types/inputUtils.d.ts.map +1 -1
- package/dist/types/labs/DataTable.d.ts +4 -4
- package/dist/types/labs/DataTable.d.ts.map +1 -1
- package/dist/types/labs/DataView/componentTypes.d.ts +1 -1
- package/dist/types/labs/DataView/componentTypes.d.ts.map +1 -1
- package/dist/types/labs/DataView/fetchData.d.ts.map +1 -1
- package/dist/types/labs/DataView/tableConstants.d.ts.map +1 -1
- package/dist/types/labs/DataView/testSupportData.d.ts +1 -1
- package/dist/types/labs/DataView/testSupportData.d.ts.map +1 -1
- package/dist/types/labs/DataView/useFilterConversion.d.ts.map +1 -1
- package/dist/types/labs/GroupPicker.d.ts.map +1 -1
- package/dist/types/labs/OdysseyPickers/ComposablePicker.d.ts.map +1 -1
- package/dist/types/labs/OdysseyPickers/Picker.d.ts.map +1 -1
- package/dist/types/labs/OdysseyPickers/PickerVirtualizationListBox.d.ts.map +1 -1
- package/dist/types/labs/PaginatedTable.d.ts.map +1 -1
- package/dist/types/labs/StaticTable.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/types/remUtils.d.ts.map +1 -1
- package/dist/types/shadow-dom/shadow-dom.d.ts.map +1 -1
- package/dist/types/test-selectors/getByQuerySelector.d.ts.map +1 -1
- package/dist/types/test-selectors/getComputedAccessibleErrorMessageText.d.ts.map +1 -1
- package/dist/types/test-selectors/getComputedAccessibleText.d.ts.map +1 -1
- package/dist/types/test-selectors/interpolateString.d.ts.map +1 -1
- package/dist/types/test-selectors/linkedHtmlSelectors.d.ts.map +1 -1
- package/dist/types/test-selectors/queryOdysseySelector.d.ts +40 -36
- package/dist/types/test-selectors/queryOdysseySelector.d.ts.map +1 -1
- package/dist/types/test-selectors/querySelector.d.ts +6 -2
- package/dist/types/test-selectors/querySelector.d.ts.map +1 -1
- package/dist/types/test-selectors/sanityChecks.d.ts.map +1 -1
- package/dist/types/theme/components.d.ts.map +1 -1
- package/dist/types/theme/createOdysseyMuiTheme.d.ts.map +1 -1
- package/dist/types/theme/mixins.d.ts.map +1 -1
- package/dist/types/theme/palette.d.ts.map +1 -1
- package/dist/types/theme/pxToRem.d.ts.map +1 -1
- package/dist/types/theme/shape.d.ts.map +1 -1
- package/dist/types/theme/spacing.d.ts.map +1 -1
- package/dist/types/theme/typography.d.ts.map +1 -1
- package/dist/types/theme/useMediaQuery.d.ts.map +1 -1
- package/dist/types/ui-shell/AppSwitcher/AppSwitcherApp.d.ts.map +1 -1
- package/dist/types/ui-shell/InnerAppContainer.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavToggleButton.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SortableList/SortableItem.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.d.ts.map +1 -1
- package/dist/types/ui-shell/bufferLatest.d.ts.map +1 -1
- package/dist/types/ui-shell/createMessageBus.d.ts.map +1 -1
- package/dist/types/ui-shell/createStore.d.ts.map +1 -1
- package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
- package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts.map +1 -1
- package/dist/types/ui-shell/useScrollState.d.ts +6 -2
- package/dist/types/ui-shell/useScrollState.d.ts.map +1 -1
- package/dist/types/ui-shell/useUiShellBreakpoints.d.ts.map +1 -1
- package/dist/types/useAutocomplete.d.ts.map +1 -1
- package/dist/types/useContrastMode.d.ts.map +1 -1
- package/dist/types/useMountLifecycleEffect.d.ts.map +1 -1
- package/dist/types/useNormalizedKey.d.ts.map +1 -1
- package/dist/types/useSessionStorageState.d.ts.map +1 -1
- package/dist/types/useUniqueAlphabeticalId.d.ts.map +1 -1
- package/dist/types/useUniqueId.d.ts.map +1 -1
- package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts +1 -1
- package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts.map +1 -1
- package/dist/types/web-component/renderReactInWebComponent.d.ts.map +1 -1
- package/package.json +19 -19
package/README.md
CHANGED
|
@@ -143,7 +143,7 @@ Follow these steps for local [Odyssey development](https://odyssey-storybook.okt
|
|
|
143
143
|
|
|
144
144
|
## License
|
|
145
145
|
|
|
146
|
-
[Apache Version 2.0](https://github.com/
|
|
146
|
+
[Apache Version 2.0](https://github.com/atko-eng/odyssey-design-system/blob/master/LICENSE)
|
|
147
147
|
|
|
148
148
|
## Support Disclaimer
|
|
149
149
|
|
|
@@ -58,8 +58,11 @@ const Autocomplete = ({
|
|
|
58
58
|
defaultValue,
|
|
59
59
|
errorMessage,
|
|
60
60
|
errorMessageList,
|
|
61
|
+
getIsOptionEqualToValue,
|
|
61
62
|
getOptionLabel,
|
|
62
63
|
hasMultipleChoices,
|
|
64
|
+
hint,
|
|
65
|
+
HintLinkComponent,
|
|
63
66
|
id: idOverride,
|
|
64
67
|
inputValue,
|
|
65
68
|
isCustomValueAllowed,
|
|
@@ -69,20 +72,17 @@ const Autocomplete = ({
|
|
|
69
72
|
isOptional = false,
|
|
70
73
|
isReadOnly,
|
|
71
74
|
isVirtualized = false,
|
|
72
|
-
hint,
|
|
73
|
-
HintLinkComponent,
|
|
74
75
|
label,
|
|
75
76
|
name: nameOverride,
|
|
76
77
|
noOptionsText,
|
|
77
78
|
onBlur,
|
|
78
79
|
onChange,
|
|
79
|
-
onInputChange,
|
|
80
80
|
onFocus,
|
|
81
|
+
onInputChange,
|
|
81
82
|
options,
|
|
82
|
-
value,
|
|
83
|
-
getIsOptionEqualToValue,
|
|
84
83
|
testId,
|
|
85
|
-
translate
|
|
84
|
+
translate,
|
|
85
|
+
value
|
|
86
86
|
}) => {
|
|
87
87
|
const {
|
|
88
88
|
t
|
|
@@ -120,23 +120,23 @@ const Autocomplete = ({
|
|
|
120
120
|
closeText: t("close.text"),
|
|
121
121
|
disableCloseOnSelect: hasMultipleChoices,
|
|
122
122
|
disabled: isDisabled,
|
|
123
|
-
freeSolo: isCustomValueAllowed,
|
|
124
123
|
filterSelectedOptions: true,
|
|
124
|
+
freeSolo: isCustomValueAllowed,
|
|
125
|
+
fullWidth: isFullWidth,
|
|
125
126
|
getOptionLabel: getOptionLabel,
|
|
126
127
|
id: idOverride,
|
|
127
|
-
|
|
128
|
+
isOptionEqualToValue: getIsOptionEqualToValue,
|
|
128
129
|
loading: isLoading,
|
|
129
130
|
multiple: hasMultipleChoices,
|
|
130
131
|
noOptionsText: noOptionsText || t("autocomplete.nooptions"),
|
|
131
132
|
onBlur: onBlur,
|
|
132
133
|
onChange: onChange,
|
|
133
|
-
onInputChange: onInputChange,
|
|
134
134
|
onFocus: onFocus,
|
|
135
|
+
onInputChange: onInputChange,
|
|
135
136
|
openText: t("open.text"),
|
|
136
137
|
options: options,
|
|
137
138
|
readOnly: isReadOnly,
|
|
138
139
|
renderInput: renderInput,
|
|
139
|
-
isOptionEqualToValue: getIsOptionEqualToValue,
|
|
140
140
|
translate: translate
|
|
141
141
|
});
|
|
142
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.cjs","names":["_react","require","_reactI18next","_PickerVirtualizationListBox","_useAutocomplete","_jsxRuntime","_interopRequireDefault","e","__esModule","default","AutocompleteTestSelector","exports","accessibleText","errorMessage","hint","label","children","list","listItem","elementSelector","method","options","role","isControlledElement","Autocomplete","ariaDescribedBy","defaultValue","errorMessageList","getOptionLabel","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","HintLinkComponent","name","nameOverride","noOptionsText","onBlur","onChange","onInputChange","onFocus","value","getIsOptionEqualToValue","testId","translate","t","useTranslation","inputValueProp","isVirtualizedRef","renderInput","valueProps","useAutocomplete","jsx","_Autocomplete2","current","ListboxComponent","PickerVirtualizationListBox","clearText","closeText","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","fullWidth","loading","multiple","openText","readOnly","isOptionEqualToValue","MemoizedAutocomplete","memo","displayName"],"sources":["../../src/Autocomplete.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 { memo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n UseAutocompleteProps as MuiUseAutocompleteProps,\n} from \"@mui/material\";\n\nimport { FieldComponentProps } from \"./FieldComponentProps.js\";\nimport type { HtmlProps } from \"./HtmlProps.js\";\nimport { PickerVirtualizationListBox } from \"./labs/OdysseyPickers/PickerVirtualizationListBox.js\";\nimport { useAutocomplete } from \"./useAutocomplete.js\";\nimport { TestSelector } from \"./test-selectors/index.js\";\n\nexport const AutocompleteTestSelector = {\n accessibleText: {\n errorMessage: \"errorMessage\",\n hint: \"description\",\n label: \"label\",\n },\n children: {\n list: {\n children: {\n listItem: {\n elementSelector: {\n method: \"ByRole\",\n options: {\n label: \"name\",\n },\n role: \"option\",\n },\n },\n },\n isControlledElement: true,\n },\n },\n elementSelector: {\n method: \"ByRole\",\n options: {\n label: \"name\",\n },\n role: \"combobox\",\n },\n} as const satisfies TestSelector;\n// type SetItemSize = (size: number) => void;\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = {\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"defaultValue\"];\n /**\n * Used to determine the string value for a given option. It's used to fill the input (and the list box options if renderOption is not provided). If used in free solo mode, it must accept both the type of the options and a string.\n *\n * `function(option: Value) => string`\n */\n getOptionLabel?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"getOptionLabel\"];\n\n /** Used to determine if the option represents the given value. Uses strict equality by default if none provided.\n * Both arguments need to be handled, an option can only match with one value.\n * option: the option to test\n * value: the value to test against\n *\n * You will need to implement this function if your `option` items are objects.\n */\n getIsOptionEqualToValue?: (option: OptionType, value: OptionType) => boolean;\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The value for the input\n */\n inputValue?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"inputValue\"];\n /**\n * Allows the input of custom values\n */\n isCustomValueAllowed?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"freeSolo\"];\n /**\n * Disables the Autocomplete input\n */\n isDisabled?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"disabled\"];\n /**\n * Displays a loading indicator\n */\n isLoading?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"loading\"];\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * If this component is required to display a virtualized list of options,\n * then this value needs to be set to true.\n * It is recommended if you're options are on the order of 10's of hundreds or more.\n */\n isVirtualized?: boolean;\n /**\n * The label text for the autocomplete input\n */\n label: string;\n /**\n * The text to display when no options are available\n *\n * default: \"No options\"\n */\n noOptionsText?: string;\n /**\n * Callback fired when the autocomplete loses focus.\n */\n onBlur?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onBlur\"];\n /**\n * Callback fired when a selection is made.\n */\n onChange?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"];\n /**\n * Callback fired when the textbox receives typed characters.\n */\n onInputChange?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"];\n /**\n * Callback fired when the autocomplete gains focus.\n */\n onFocus?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onFocus\"];\n /**\n * The options for the Autocomplete input\n */\n options: ReadonlyArray<OptionType>;\n /**\n * The value of the Autocomplete input\n */\n value?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n} & Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"errorMessageList\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isFullWidth\"\n | \"isOptional\"\n | \"name\"\n> &\n Pick<HtmlProps, \"ariaDescribedBy\" | \"testId\" | \"translate\">;\n\nconst Autocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n getOptionLabel,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n noOptionsText,\n onBlur,\n onChange,\n onInputChange,\n onFocus,\n options,\n value,\n getIsOptionEqualToValue,\n testId,\n translate,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const { t } = useTranslation();\n const { inputValueProp, isVirtualizedRef, renderInput, valueProps } =\n useAutocomplete<OptionType, HasMultipleChoices, IsCustomValueAllowed>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n hint,\n HintLinkComponent,\n inputValue,\n isFullWidth,\n isOptional,\n isVirtualized,\n label,\n name: nameOverride,\n testId,\n value,\n });\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // conditionally provide the ListboxComponent if this needs to be virtualized\n {...(isVirtualizedRef.current && {\n ListboxComponent: PickerVirtualizationListBox,\n })}\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n clearText={t(\"clear.text\")}\n closeText={t(\"close.text\")}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n getOptionLabel={getOptionLabel}\n id={idOverride}\n fullWidth={isFullWidth}\n loading={isLoading}\n multiple={hasMultipleChoices}\n noOptionsText={noOptionsText || t(\"autocomplete.nooptions\")}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n openText={t(\"open.text\")}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n isOptionEqualToValue={getIsOptionEqualToValue}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof Autocomplete` because generics don't get passed through\nconst MemoizedAutocomplete = memo(Autocomplete) as typeof Autocomplete;\n// @ts-expect-error displayName is expected to not be on `typeof Autocomplete`\nMemoizedAutocomplete.displayName = \"Autocomplete\";\n\nexport { MemoizedAutocomplete as Autocomplete };\n"],"mappings":";;;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AASA,IAAAE,4BAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAAuD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAK,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAvBvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBO,MAAMG,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG;EACtCE,cAAc,EAAE;IACdC,YAAY,EAAE,cAAc;IAC5BC,IAAI,EAAE,aAAa;IACnBC,KAAK,EAAE;EACT,CAAC;EACDC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJD,QAAQ,EAAE;QACRE,QAAQ,EAAE;UACRC,eAAe,EAAE;YACfC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACPN,KAAK,EAAE;YACT,CAAC;YACDO,IAAI,EAAE;UACR;QACF;MACF,CAAC;MACDC,mBAAmB,EAAE;IACvB;EACF,CAAC;EACDJ,eAAe,EAAE;IACfC,MAAM,EAAE,QAAQ;IAChBC,OAAO,EAAE;MACPN,KAAK,EAAE;IACT,CAAC;IACDO,IAAI,EAAE;EACR;AACF,CAAiC;AAyKjC,MAAME,YAAY,GAAGA,CAInB;EACAC,eAAe;EACfC,YAAY;EACZb,YAAY;EACZc,gBAAgB;EAChBC,cAAc;EACdC,kBAAkB;EAClBC,EAAE,EAAEC,UAAU;EACdC,UAAU;EACVC,oBAAoB;EACpBC,UAAU;EACVC,WAAW,GAAG,KAAK;EACnBC,SAAS;EACTC,UAAU,GAAG,KAAK;EAClBC,UAAU;EACVC,aAAa,GAAG,KAAK;EACrBzB,IAAI;EACJ0B,iBAAiB;EACjBzB,KAAK;EACL0B,IAAI,EAAEC,YAAY;EAClBC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,aAAa;EACbC,OAAO;EACP1B,OAAO;EACP2B,KAAK;EACLC,uBAAuB;EACvBC,MAAM;EACNC;AACuE,CAAC,KAAK;EAC7E,MAAM;IAAEC;EAAE,CAAC,GAAG,IAAAC,4BAAc,EAAC,CAAC;EAC9B,MAAM;IAAEC,cAAc;IAAEC,gBAAgB;IAAEC,WAAW;IAAEC;EAAW,CAAC,GACjE,IAAAC,gCAAe,EAAuD;IACpEjC,eAAe;IACfC,YAAY;IACZb,YAAY;IACZc,gBAAgB;IAChBE,kBAAkB;IAClBf,IAAI;IACJ0B,iBAAiB;IACjBR,UAAU;IACVG,WAAW;IACXE,UAAU;IACVE,aAAa;IACbxB,KAAK;IACL0B,IAAI,EAAEC,YAAY;IAClBQ,MAAM;IACNF;EACF,CAAC,CAAC;EAEJ,OACE,IAAA3C,WAAA,CAAAsD,GAAA,EAAAC,cAAA,CAAAnD,OAAA;IAAA,GACMgD,UAAU;IAAA,GACVH,cAAc;IAAA,IAEbC,gBAAgB,CAACM,OAAO,IAAI;MAC/BC,gBAAgB,EAAEC;IACpB,CAAC;IAED,iBAAe7B,UAAW;IAC1B8B,SAAS,EAAEZ,CAAC,CAAC,YAAY,CAAE;IAC3Ba,SAAS,EAAEb,CAAC,CAAC,YAAY,CAAE;IAC3Bc,oBAAoB,EAAErC,kBAAmB;IACzCsC,QAAQ,EAAEjC,UAAW;IACrBkC,QAAQ,EAAEnC,oBAAqB;IAC/BoC,qBAAqB,EAAE,IAAK;IAC5BzC,cAAc,EAAEA,cAAe;IAC/BE,EAAE,EAAEC,UAAW;IACfuC,SAAS,EAAEnC,WAAY;IACvBoC,OAAO,EAAEnC,SAAU;IACnBoC,QAAQ,EAAE3C,kBAAmB;IAC7Bc,aAAa,EAAEA,aAAa,IAAIS,CAAC,CAAC,wBAAwB,CAAE;IAC5DR,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEA,QAAS;IACnBC,aAAa,EAAEA,aAAc;IAC7BC,OAAO,EAAEA,OAAQ;IACjB0B,QAAQ,EAAErB,CAAC,CAAC,WAAW,CAAE;IACzB/B,OAAO,EAAEA,OAAQ;IACjBqD,QAAQ,EAAEpC,UAAW;IACrBkB,WAAW,EAAEA,WAAY;IACzBmB,oBAAoB,EAAE1B,uBAAwB;IAC9CE,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CAAC;AAGD,MAAMyB,oBAAoB,GAAAjE,OAAA,CAAAa,YAAA,GAAG,IAAAqD,WAAI,EAACrD,YAAY,CAAwB;AAEtEoD,oBAAoB,CAACE,WAAW,GAAG,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Autocomplete.cjs","names":["_react","require","_reactI18next","_PickerVirtualizationListBox","_useAutocomplete","_jsxRuntime","_interopRequireDefault","e","__esModule","default","AutocompleteTestSelector","exports","accessibleText","errorMessage","hint","label","children","list","listItem","elementSelector","method","options","role","isControlledElement","Autocomplete","ariaDescribedBy","defaultValue","errorMessageList","getIsOptionEqualToValue","getOptionLabel","hasMultipleChoices","HintLinkComponent","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","name","nameOverride","noOptionsText","onBlur","onChange","onFocus","onInputChange","testId","translate","value","t","useTranslation","inputValueProp","isVirtualizedRef","renderInput","valueProps","useAutocomplete","jsx","_Autocomplete2","current","ListboxComponent","PickerVirtualizationListBox","clearText","closeText","disableCloseOnSelect","disabled","filterSelectedOptions","freeSolo","fullWidth","isOptionEqualToValue","loading","multiple","openText","readOnly","MemoizedAutocomplete","memo","displayName"],"sources":["../../src/Autocomplete.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 { memo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n UseAutocompleteProps as MuiUseAutocompleteProps,\n} from \"@mui/material\";\n\nimport { FieldComponentProps } from \"./FieldComponentProps.js\";\nimport type { HtmlProps } from \"./HtmlProps.js\";\nimport { PickerVirtualizationListBox } from \"./labs/OdysseyPickers/PickerVirtualizationListBox.js\";\nimport { useAutocomplete } from \"./useAutocomplete.js\";\nimport { TestSelector } from \"./test-selectors/index.js\";\n\nexport const AutocompleteTestSelector = {\n accessibleText: {\n errorMessage: \"errorMessage\",\n hint: \"description\",\n label: \"label\",\n },\n children: {\n list: {\n children: {\n listItem: {\n elementSelector: {\n method: \"ByRole\",\n options: {\n label: \"name\",\n },\n role: \"option\",\n },\n },\n },\n isControlledElement: true,\n },\n },\n elementSelector: {\n method: \"ByRole\",\n options: {\n label: \"name\",\n },\n role: \"combobox\",\n },\n} as const satisfies TestSelector;\n// type SetItemSize = (size: number) => void;\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = {\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"defaultValue\"];\n /**\n * Used to determine the string value for a given option. It's used to fill the input (and the list box options if renderOption is not provided). If used in free solo mode, it must accept both the type of the options and a string.\n *\n * `function(option: Value) => string`\n */\n getOptionLabel?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"getOptionLabel\"];\n\n /** Used to determine if the option represents the given value. Uses strict equality by default if none provided.\n * Both arguments need to be handled, an option can only match with one value.\n * option: the option to test\n * value: the value to test against\n *\n * You will need to implement this function if your `option` items are objects.\n */\n getIsOptionEqualToValue?: (option: OptionType, value: OptionType) => boolean;\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The value for the input\n */\n inputValue?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"inputValue\"];\n /**\n * Allows the input of custom values\n */\n isCustomValueAllowed?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"freeSolo\"];\n /**\n * Disables the Autocomplete input\n */\n isDisabled?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"disabled\"];\n /**\n * Displays a loading indicator\n */\n isLoading?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"loading\"];\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * If this component is required to display a virtualized list of options,\n * then this value needs to be set to true.\n * It is recommended if you're options are on the order of 10's of hundreds or more.\n */\n isVirtualized?: boolean;\n /**\n * The label text for the autocomplete input\n */\n label: string;\n /**\n * The text to display when no options are available\n *\n * default: \"No options\"\n */\n noOptionsText?: string;\n /**\n * Callback fired when the autocomplete loses focus.\n */\n onBlur?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onBlur\"];\n /**\n * Callback fired when a selection is made.\n */\n onChange?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"];\n /**\n * Callback fired when the textbox receives typed characters.\n */\n onInputChange?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"];\n /**\n * Callback fired when the autocomplete gains focus.\n */\n onFocus?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onFocus\"];\n /**\n * The options for the Autocomplete input\n */\n options: ReadonlyArray<OptionType>;\n /**\n * The value of the Autocomplete input\n */\n value?: MuiUseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n} & Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"errorMessageList\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isFullWidth\"\n | \"isOptional\"\n | \"name\"\n> &\n Pick<HtmlProps, \"ariaDescribedBy\" | \"testId\" | \"translate\">;\n\nconst Autocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n getOptionLabel,\n hasMultipleChoices,\n hint,\n HintLinkComponent,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized = false,\n label,\n name: nameOverride,\n noOptionsText,\n onBlur,\n onChange,\n onFocus,\n onInputChange,\n options,\n testId,\n translate,\n value,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const { t } = useTranslation();\n const { inputValueProp, isVirtualizedRef, renderInput, valueProps } =\n useAutocomplete<OptionType, HasMultipleChoices, IsCustomValueAllowed>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n hint,\n HintLinkComponent,\n inputValue,\n isFullWidth,\n isOptional,\n isVirtualized,\n label,\n name: nameOverride,\n testId,\n value,\n });\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // conditionally provide the ListboxComponent if this needs to be virtualized\n {...(isVirtualizedRef.current && {\n ListboxComponent: PickerVirtualizationListBox,\n })}\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n clearText={t(\"clear.text\")}\n closeText={t(\"close.text\")}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n filterSelectedOptions={true}\n freeSolo={isCustomValueAllowed}\n fullWidth={isFullWidth}\n getOptionLabel={getOptionLabel}\n id={idOverride}\n isOptionEqualToValue={getIsOptionEqualToValue}\n loading={isLoading}\n multiple={hasMultipleChoices}\n noOptionsText={noOptionsText || t(\"autocomplete.nooptions\")}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n onInputChange={onInputChange}\n openText={t(\"open.text\")}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof Autocomplete` because generics don't get passed through\nconst MemoizedAutocomplete = memo(Autocomplete) as typeof Autocomplete;\n// @ts-expect-error displayName is expected to not be on `typeof Autocomplete`\nMemoizedAutocomplete.displayName = \"Autocomplete\";\n\nexport { MemoizedAutocomplete as Autocomplete };\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/Breadcrumbs.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs.cjs","names":["_react","require","_index","_Typography","_reactI18next","_styled","_interopRequireDefault","_jsxRuntime","e","__esModule","default","BreadcrumbContext","exports","createContext","breadcrumbType","BreadcrumbContent","styled","span","Breadcrumb","children","href","iconName","onClick","useContext","onClickHandler","useCallback","event","preventDefault","stopPropagation","breadcrumbContent","jsxs","Fragment","jsx","GroupIcon","UserIcon","Subordinate","color","_MenuItem2","ariaCurrent","_ButtonBase2","breadcrumbProviderValue","currentPage","listItem","menuItem","defaultTruncationValue","BreadcrumbList","homeHref","maxVisibleItems","maxVisibleItemsProp","testId","translate","t","useTranslation","anchorEl","setAnchorEl","useState","useMemo","Math","min","max","length","breadcrumbSections","beforeMenu","insideMenu","remainingBreadcrumbs","menuStart","floor","menuLength","slice","onMenuButtonClick","currentTarget","onCloseMenu","_Breadcrumbs2","maxItems","HomeIcon","map","breadcrumb","index","Provider","value","_Menu2","open","Boolean","onClose","anchorOrigin","horizontal","vertical","MenuListProps","sx","minWidth","MemoizedBreadcrumbList","memo","displayName"],"sources":["../../src/Breadcrumbs.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 ButtonBase,\n Menu,\n MenuItem,\n Breadcrumbs as MuiBreadcrumbs,\n} from \"@mui/material\";\nimport {\n MouseEventHandler,\n ReactElement,\n createContext,\n memo,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { GroupIcon, HomeIcon, UserIcon } from \"./icons.generated/index.js\";\nimport { Subordinate } from \"./Typography.js\";\nimport { useTranslation } from \"react-i18next\";\nimport { HtmlProps } from \"./HtmlProps.js\";\nimport styled from \"@emotion/styled\";\n\nexport type BreadcrumbType = \"listItem\" | \"menuItem\" | \"currentPage\";\n\nexport type BreadcrumbProps = {\n children?: string;\n href?: string;\n iconName?: \"user\" | \"group\";\n onClick?: MouseEventHandler;\n};\n\nexport type BreadcrumbsProps = {\n children: ReactElement<typeof Breadcrumb>[];\n homeHref?: string;\n maxVisibleItems?: number;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nexport type BreadcrumbContextType = {\n breadcrumbType: BreadcrumbType;\n};\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextType>({\n breadcrumbType: \"listItem\",\n});\n\nconst BreadcrumbContent = styled.span`\n white-space: nowrap;\n overflow: hidden;\n max-width: 10rem;\n text-overflow: ellipsis;\n`;\n\nexport const Breadcrumb = ({\n children,\n href,\n iconName,\n onClick,\n}: BreadcrumbProps) => {\n const { breadcrumbType } = useContext(BreadcrumbContext);\n\n const onClickHandler = useCallback<MouseEventHandler<HTMLAnchorElement>>(\n (event) => {\n if (onClick) {\n event.preventDefault();\n event.stopPropagation();\n onClick(event);\n }\n },\n [onClick],\n );\n\n const breadcrumbContent = (\n <>\n {iconName === \"group\" ? (\n <GroupIcon />\n ) : iconName === \"user\" ? (\n <UserIcon />\n ) : null}\n <BreadcrumbContent>{children}</BreadcrumbContent>\n </>\n );\n\n if (!href) {\n return <Subordinate color=\"textPrimary\">{breadcrumbContent}</Subordinate>;\n }\n\n if (breadcrumbType === \"menuItem\") {\n return (\n <MenuItem onClick={onClickHandler} href={href}>\n {breadcrumbContent}\n </MenuItem>\n );\n }\n\n if (breadcrumbType === \"currentPage\") {\n return (\n <Subordinate ariaCurrent=\"page\" color=\"textPrimary\">\n {breadcrumbContent}\n </Subordinate>\n );\n }\n\n // breadcrumbType === \"listItem\" is the default\n // Provided here without a conditional to get TS to be quiet\n // about potential undefined returns\n return (\n <ButtonBase onClick={onClickHandler} href={href}>\n {breadcrumbContent}\n </ButtonBase>\n );\n};\n\nconst breadcrumbProviderValue: Record<\n BreadcrumbType,\n { breadcrumbType: BreadcrumbType }\n> = {\n currentPage: {\n breadcrumbType: \"currentPage\",\n },\n listItem: {\n breadcrumbType: \"listItem\",\n },\n menuItem: {\n breadcrumbType: \"menuItem\",\n },\n};\n\nconst defaultTruncationValue = 5;\n\nconst BreadcrumbList = ({\n children,\n homeHref,\n maxVisibleItems: maxVisibleItemsProp = defaultTruncationValue,\n testId,\n translate,\n}: BreadcrumbsProps) => {\n const { t } = useTranslation();\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const maxVisibleItems = useMemo(\n () => Math.min(Math.max(maxVisibleItemsProp, 0), children.length),\n [maxVisibleItemsProp, children],\n );\n\n const breadcrumbSections = useMemo(() => {\n if (children.length <= maxVisibleItems) {\n return {\n beforeMenu: [],\n insideMenu: [],\n remainingBreadcrumbs: children,\n };\n } else {\n const menuStart = Math.floor(maxVisibleItems / 2);\n const menuLength = children.length - maxVisibleItems;\n\n return {\n beforeMenu: children.slice(0, menuStart),\n insideMenu: children.slice(menuStart, menuStart + menuLength),\n remainingBreadcrumbs: children.slice(menuStart + menuLength),\n };\n }\n }, [children, maxVisibleItems]);\n\n const onMenuButtonClick = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (event) => setAnchorEl(event.currentTarget),\n [],\n );\n const onCloseMenu = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n return (\n <MuiBreadcrumbs\n maxItems={children.length + 1}\n aria-label={t(\"breadcrumbs.label.text\")}\n data-se={testId}\n translate={translate}\n >\n {homeHref && (\n <ButtonBase href={homeHref} aria-label={t(\"breadcrumbs.home.text\")}>\n <HomeIcon />\n </ButtonBase>\n )}\n\n {breadcrumbSections.beforeMenu.map((breadcrumb, index) => (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.listItem}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n ))}\n\n {breadcrumbSections.insideMenu.length > 0 && (\n <>\n <ButtonBase onClick={onMenuButtonClick}>...</ButtonBase>\n <Menu\n open={Boolean(anchorEl)}\n onClose={onCloseMenu}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: \"left\", vertical: \"bottom\" }}\n MenuListProps={{\n sx: {\n minWidth: 180,\n },\n }}\n >\n <BreadcrumbContext.Provider\n value={breadcrumbProviderValue.menuItem}\n >\n {breadcrumbSections.insideMenu}\n </BreadcrumbContext.Provider>\n </Menu>\n </>\n )}\n\n {breadcrumbSections.remainingBreadcrumbs.map((breadcrumb, index) => {\n if (index === breadcrumbSections.remainingBreadcrumbs.length - 1) {\n return (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.currentPage}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n );\n }\n return (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.listItem}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n );\n })}\n </MuiBreadcrumbs>\n );\n};\n\nconst MemoizedBreadcrumbList = memo(BreadcrumbList);\nMemoizedBreadcrumbList.displayName = \"BreadcrumbList\";\n\nexport { MemoizedBreadcrumbList as BreadcrumbList };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.cjs","names":["_react","require","_index","_Typography","_reactI18next","_styled","_interopRequireDefault","_jsxRuntime","e","__esModule","default","BreadcrumbContext","exports","createContext","breadcrumbType","BreadcrumbContent","styled","span","Breadcrumb","children","href","iconName","onClick","useContext","onClickHandler","useCallback","event","preventDefault","stopPropagation","breadcrumbContent","jsxs","Fragment","jsx","GroupIcon","UserIcon","Subordinate","color","_MenuItem2","component","ariaCurrent","_ButtonBase2","breadcrumbProviderValue","currentPage","listItem","menuItem","defaultTruncationValue","BreadcrumbList","homeHref","maxVisibleItems","maxVisibleItemsProp","testId","translate","t","useTranslation","anchorEl","setAnchorEl","useState","useMemo","Math","min","max","length","breadcrumbSections","beforeMenu","insideMenu","remainingBreadcrumbs","menuStart","floor","menuLength","slice","onMenuButtonClick","currentTarget","onCloseMenu","_Breadcrumbs2","maxItems","HomeIcon","map","breadcrumb","index","Provider","value","_Menu2","open","Boolean","onClose","anchorOrigin","horizontal","vertical","MenuListProps","sx","minWidth","MemoizedBreadcrumbList","memo","displayName"],"sources":["../../src/Breadcrumbs.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 ButtonBase,\n Menu,\n MenuItem,\n Breadcrumbs as MuiBreadcrumbs,\n} from \"@mui/material\";\nimport {\n MouseEventHandler,\n ReactElement,\n createContext,\n memo,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { GroupIcon, HomeIcon, UserIcon } from \"./icons.generated/index.js\";\nimport { Subordinate } from \"./Typography.js\";\nimport { useTranslation } from \"react-i18next\";\nimport { HtmlProps } from \"./HtmlProps.js\";\nimport styled from \"@emotion/styled\";\n\nexport type BreadcrumbType = \"listItem\" | \"menuItem\" | \"currentPage\";\n\nexport type BreadcrumbProps = {\n children?: string;\n href?: string;\n iconName?: \"user\" | \"group\";\n onClick?: MouseEventHandler;\n};\n\nexport type BreadcrumbsProps = {\n children: ReactElement<typeof Breadcrumb>[];\n homeHref?: string;\n maxVisibleItems?: number;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nexport type BreadcrumbContextType = {\n breadcrumbType: BreadcrumbType;\n};\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextType>({\n breadcrumbType: \"listItem\",\n});\n\nconst BreadcrumbContent = styled.span`\n white-space: nowrap;\n overflow: hidden;\n max-width: 10rem;\n text-overflow: ellipsis;\n`;\n\nexport const Breadcrumb = ({\n children,\n href,\n iconName,\n onClick,\n}: BreadcrumbProps) => {\n const { breadcrumbType } = useContext(BreadcrumbContext);\n\n const onClickHandler = useCallback<MouseEventHandler<HTMLAnchorElement>>(\n (event) => {\n if (onClick) {\n event.preventDefault();\n event.stopPropagation();\n onClick(event);\n }\n },\n [onClick],\n );\n\n const breadcrumbContent = (\n <>\n {iconName === \"group\" ? (\n <GroupIcon />\n ) : iconName === \"user\" ? (\n <UserIcon />\n ) : null}\n <BreadcrumbContent>{children}</BreadcrumbContent>\n </>\n );\n\n if (!href) {\n return <Subordinate color=\"textPrimary\">{breadcrumbContent}</Subordinate>;\n }\n\n if (breadcrumbType === \"menuItem\") {\n return (\n <MenuItem onClick={onClickHandler} href={href} component=\"a\">\n {breadcrumbContent}\n </MenuItem>\n );\n }\n\n if (breadcrumbType === \"currentPage\") {\n return (\n <Subordinate ariaCurrent=\"page\" color=\"textPrimary\">\n {breadcrumbContent}\n </Subordinate>\n );\n }\n\n // breadcrumbType === \"listItem\" is the default\n // Provided here without a conditional to get TS to be quiet\n // about potential undefined returns\n return (\n <ButtonBase onClick={onClickHandler} href={href}>\n {breadcrumbContent}\n </ButtonBase>\n );\n};\n\nconst breadcrumbProviderValue: Record<\n BreadcrumbType,\n { breadcrumbType: BreadcrumbType }\n> = {\n currentPage: {\n breadcrumbType: \"currentPage\",\n },\n listItem: {\n breadcrumbType: \"listItem\",\n },\n menuItem: {\n breadcrumbType: \"menuItem\",\n },\n};\n\nconst defaultTruncationValue = 5;\n\nconst BreadcrumbList = ({\n children,\n homeHref,\n maxVisibleItems: maxVisibleItemsProp = defaultTruncationValue,\n testId,\n translate,\n}: BreadcrumbsProps) => {\n const { t } = useTranslation();\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const maxVisibleItems = useMemo(\n () => Math.min(Math.max(maxVisibleItemsProp, 0), children.length),\n [maxVisibleItemsProp, children],\n );\n\n const breadcrumbSections = useMemo(() => {\n if (children.length <= maxVisibleItems) {\n return {\n beforeMenu: [],\n insideMenu: [],\n remainingBreadcrumbs: children,\n };\n } else {\n const menuStart = Math.floor(maxVisibleItems / 2);\n const menuLength = children.length - maxVisibleItems;\n\n return {\n beforeMenu: children.slice(0, menuStart),\n insideMenu: children.slice(menuStart, menuStart + menuLength),\n remainingBreadcrumbs: children.slice(menuStart + menuLength),\n };\n }\n }, [children, maxVisibleItems]);\n\n const onMenuButtonClick = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (event) => setAnchorEl(event.currentTarget),\n [],\n );\n const onCloseMenu = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n return (\n <MuiBreadcrumbs\n maxItems={children.length + 1}\n aria-label={t(\"breadcrumbs.label.text\")}\n data-se={testId}\n translate={translate}\n >\n {homeHref && (\n <ButtonBase href={homeHref} aria-label={t(\"breadcrumbs.home.text\")}>\n <HomeIcon />\n </ButtonBase>\n )}\n\n {breadcrumbSections.beforeMenu.map((breadcrumb, index) => (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.listItem}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n ))}\n\n {breadcrumbSections.insideMenu.length > 0 && (\n <>\n <ButtonBase onClick={onMenuButtonClick}>...</ButtonBase>\n <Menu\n open={Boolean(anchorEl)}\n onClose={onCloseMenu}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: \"left\", vertical: \"bottom\" }}\n MenuListProps={{\n sx: {\n minWidth: 180,\n },\n }}\n >\n <BreadcrumbContext.Provider\n value={breadcrumbProviderValue.menuItem}\n >\n {breadcrumbSections.insideMenu}\n </BreadcrumbContext.Provider>\n </Menu>\n </>\n )}\n\n {breadcrumbSections.remainingBreadcrumbs.map((breadcrumb, index) => {\n if (index === breadcrumbSections.remainingBreadcrumbs.length - 1) {\n return (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.currentPage}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n );\n }\n return (\n <BreadcrumbContext.Provider\n key={index}\n value={breadcrumbProviderValue.listItem}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n );\n })}\n </MuiBreadcrumbs>\n );\n};\n\nconst MemoizedBreadcrumbList = memo(BreadcrumbList);\nMemoizedBreadcrumbList.displayName = \"BreadcrumbList\";\n\nexport { MemoizedBreadcrumbList as BreadcrumbList };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMenuButton.cjs","names":["_react","require","_styled","_interopRequireDefault","_Box","_BaseButton","_index","_MenuContext","_OdysseyDesignTokensContext","_useUniqueId","_jsxRuntime","e","__esModule","default","menuAlignmentValues","exports","verticalDividerAlignmentValues","StyledMenuButtonContainer","styled","shouldForwardProp","prop","hasVerticalDivider","odysseyDesignTokens","verticalDividerAlignment","position","display","top","left","width","height","Spacing6","backgroundColor","HueNeutral300","content","transform","transition","right","opacity","BaseMenuButton","ariaLabel","ariaLabelledBy","ariaDescribedBy","buttonChildren","buttonLabel","buttonVariant","children","popoverContent","endIcon","endIconProp","id","idOverride","isDisabled","isOverflow","menuAlignment","omitEndIcon","shouldCloseOnSelect","size","testId","tooltipText","translate","useOdysseyDesignTokens","anchorEl","setAnchorEl","useState","isOpen","Boolean","closeMenu","useCallback","openMenu","event","currentTarget","uniqueId","useUniqueId","menuListProps","useMemo","providerValue","undefined","jsx","MoreIcon","ChevronDownIcon","anchorOrigin","horizontal","vertical","transformOrigin","jsxs","BaseButton","ariaControls","ariaExpanded","ariaHasPopup","label","onClick","variant","_Menu2","MenuListProps","onClose","open","MenuContext","Provider","value","_Popover2","Box","sx","padding","Spacing4","MemoizedBaseMenuButton","memo","displayName"],"sources":["../../../src/Buttons/BaseMenuButton.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 memo,\n type ReactElement,\n useCallback,\n useMemo,\n useState,\n ReactNode,\n} from \"react\";\nimport {\n Menu as MuiMenu,\n Popover as MuiPopover,\n PopoverOrigin,\n} from \"@mui/material\";\nimport styled from \"@emotion/styled\";\n\nimport { Box } from \"../Box.js\";\nimport {\n BaseButton,\n buttonSizeValues,\n buttonVariantValues,\n} from \"./BaseButton.js\";\nimport { FieldComponentProps } from \"../FieldComponentProps.js\";\nimport type { HtmlProps } from \"../HtmlProps.js\";\nimport { ChevronDownIcon, MoreIcon } from \"../icons.generated/index.js\";\nimport { MenuContext, MenuContextType } from \"./MenuContext.js\";\nimport { NullElement } from \"../NullElement.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { useUniqueId } from \"../useUniqueId.js\";\n\nexport const menuAlignmentValues = [\"left\", \"right\"] as const;\nexport const verticalDividerAlignmentValues = [\"start\", \"end\"] as const;\n\nconst StyledMenuButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasVerticalDivider\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"verticalDividerAlignment\",\n})<{\n hasVerticalDivider: BaseMenuButtonProps[\"hasVerticalDivider\"];\n odysseyDesignTokens: DesignTokens;\n verticalDividerAlignment: BaseMenuButtonProps[\"verticalDividerAlignment\"];\n}>(({ hasVerticalDivider, odysseyDesignTokens, verticalDividerAlignment }) => ({\n position: \"relative\",\n\n ...(hasVerticalDivider && {\n display: \"inline-block\",\n\n \"&:before\": {\n position: \"absolute\",\n top: \"50%\",\n left: 0,\n width: 1,\n height: odysseyDesignTokens.Spacing6,\n backgroundColor: odysseyDesignTokens.HueNeutral300,\n content: '\"\"',\n transform: \"translate3d(0, -50%, 0)\",\n transition: `opacity 200ms`,\n\n ...(verticalDividerAlignment === \"end\" && {\n left: \"unset\",\n right: 0,\n }),\n },\n\n \":has(> button:hover)\": {\n \"&:before\": {\n opacity: 0,\n },\n },\n\n \":dir(rtl)\": {\n \"&:before\": {\n left: \"unset\",\n right: 0,\n ...(verticalDividerAlignment === \"end\" && {\n right: \"unset\",\n left: 0,\n }),\n },\n },\n }),\n}));\n\nexport type BaseMenuButtonProps = {\n /**\n * The button children for the triggering Button. Only available internal to Odyssey here in BaseMenuButton. If set, buttonLabel is ignored.\n */\n buttonChildren?: ReactNode;\n /**\n * The label on the triggering Button\n */\n buttonLabel?: string;\n /**\n * The variant of the triggering Button\n */\n buttonVariant?: (typeof buttonVariantValues)[number];\n /**\n * The end Icon on the trigggering Button\n */\n endIcon?: ReactElement;\n /**\n * Add a vertical rule to divide the button from surrounding content\n */\n hasVerticalDivider?: boolean;\n /**\n * Whether to omit the endIcon if not set (rather than use a default value for it based on overflow)\n */\n omitEndIcon?: boolean;\n /**\n * The id of the Button\n */\n id?: string;\n /**\n * If the MenuButton is an overflow menu or standard menu.\n */\n isOverflow?: boolean;\n /**\n * The horizontal alignment of the menu.\n */\n menuAlignment?: (typeof menuAlignmentValues)[number];\n /**\n * If true (the default), the menu will close when a child MenuItem is clicked.\n * Otherwise, it will remain open.\n */\n shouldCloseOnSelect?: boolean;\n /**\n * The size of the button\n */\n size?: (typeof buttonSizeValues)[number];\n /**\n * The tooltip text for the Button if it's icon-only\n */\n tooltipText?: string;\n\n /**\n * Show vertical rule before or after the button\n */\n verticalDividerAlignment?: (typeof verticalDividerAlignmentValues)[number];\n};\n\n// These are split and exported separately from the above because wrappers of this (e.g. MenuButton) will\n// want to omit buttonChildren, which they cannot do from the combined union type. Instead, they should\n// omit from BaseMenuButtonProps, then union with the AdditionalBaseMenuButtonProps (as seen in MenuButton)\nexport type AdditionalBaseMenuButtonProps = Pick<\n HtmlProps,\n \"ariaDescribedBy\" | \"ariaLabel\" | \"ariaLabelledBy\" | \"testId\" | \"translate\"\n> &\n Pick<FieldComponentProps, \"isDisabled\"> &\n (\n | { buttonLabel: string }\n | (Required<Pick<HtmlProps, \"ariaLabelledBy\">> &\n Partial<Pick<HtmlProps, \"ariaLabel\">> & {\n buttonLabel?: undefined | \"\";\n })\n | (Required<Pick<HtmlProps, \"ariaLabel\">> &\n Partial<Pick<HtmlProps, \"ariaLabelledBy\">> & {\n buttonLabel?: undefined | \"\";\n })\n ) &\n (\n | {\n /**\n * The <MenuItem> components within the Menu.\n */\n children: ReactNode | NullElement;\n /**\n * popoverConten is disallowed if children are present\n */\n popoverContent?: never;\n }\n | {\n /**\n * children is disallowed if popoverContent is present\n */\n children?: never;\n /**\n * The content for the popover that is triggered on click.\n */\n popoverContent: ReactNode | NullElement;\n }\n );\n\nconst BaseMenuButton = ({\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n buttonChildren,\n buttonLabel = \"\",\n buttonVariant = \"secondary\",\n children,\n popoverContent,\n endIcon: endIconProp,\n hasVerticalDivider = false,\n id: idOverride,\n isDisabled,\n isOverflow,\n menuAlignment = \"left\",\n omitEndIcon = false,\n shouldCloseOnSelect = true,\n size,\n testId,\n tooltipText,\n translate,\n verticalDividerAlignment = \"start\",\n}: BaseMenuButtonProps & AdditionalBaseMenuButtonProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const isOpen = Boolean(anchorEl);\n\n const closeMenu = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n const openMenu = useCallback<MenuContextType[\"openMenu\"]>((event) => {\n setAnchorEl(event.currentTarget);\n }, []);\n\n const uniqueId = useUniqueId(idOverride);\n\n const menuListProps = useMemo(\n () => ({ \"aria-labelledby\": `${uniqueId}-button` }),\n [uniqueId],\n );\n\n const providerValue = useMemo<MenuContextType>(\n () => ({\n closeMenu,\n openMenu,\n shouldCloseOnSelect,\n }),\n [closeMenu, openMenu, shouldCloseOnSelect],\n );\n\n const endIcon = omitEndIcon ? undefined : endIconProp ? (\n endIconProp\n ) : isOverflow ? (\n <MoreIcon />\n ) : (\n <ChevronDownIcon />\n );\n\n const anchorOrigin = useMemo(\n () =>\n ({\n horizontal: menuAlignment,\n vertical: \"bottom\",\n }) as PopoverOrigin,\n [menuAlignment],\n );\n\n const transformOrigin = useMemo(\n () =>\n ({\n horizontal: menuAlignment,\n vertical: \"top\",\n }) as PopoverOrigin,\n [menuAlignment],\n );\n\n return (\n <StyledMenuButtonContainer\n hasVerticalDivider={hasVerticalDivider}\n odysseyDesignTokens={odysseyDesignTokens}\n verticalDividerAlignment={verticalDividerAlignment}\n >\n <BaseButton\n ariaControls={isOpen ? `${uniqueId}-menu` : undefined}\n ariaExpanded={isOpen ? \"true\" : undefined}\n ariaHasPopup=\"true\"\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n testId={testId}\n endIcon={endIcon}\n id={`${uniqueId}-button`}\n isDisabled={isDisabled}\n label={buttonLabel}\n children={buttonChildren}\n onClick={openMenu}\n size={size}\n tooltipText={tooltipText}\n translate={translate}\n variant={buttonVariant}\n />\n\n {children && (\n <MuiMenu\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n anchorEl={anchorEl}\n id={`${uniqueId}-menu`}\n MenuListProps={menuListProps}\n onClose={closeMenu}\n open={isOpen}\n >\n <MenuContext.Provider value={providerValue}>\n {children}\n </MenuContext.Provider>\n </MuiMenu>\n )}\n\n {popoverContent && (\n <MuiPopover\n open={isOpen}\n anchorEl={anchorEl}\n onClose={closeMenu}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n >\n <Box\n sx={{\n padding: odysseyDesignTokens.Spacing4,\n }}\n >\n {popoverContent}\n </Box>\n </MuiPopover>\n )}\n </StyledMenuButtonContainer>\n );\n};\n\nconst MemoizedBaseMenuButton = memo(BaseMenuButton);\nMemoizedBaseMenuButton.displayName = \"BaseMenuButton\";\n\nexport { MemoizedBaseMenuButton as BaseMenuButton };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BaseMenuButton.cjs","names":["_react","require","_styled","_interopRequireDefault","_Box","_BaseButton","_index","_MenuContext","_OdysseyDesignTokensContext","_useUniqueId","_jsxRuntime","e","__esModule","default","menuAlignmentValues","exports","verticalDividerAlignmentValues","StyledMenuButtonContainer","styled","shouldForwardProp","prop","hasVerticalDivider","odysseyDesignTokens","verticalDividerAlignment","position","display","top","left","width","height","Spacing6","backgroundColor","HueNeutral300","content","transform","transition","right","opacity","BaseMenuButton","ariaLabel","ariaLabelledBy","ariaDescribedBy","buttonChildren","buttonLabel","buttonVariant","children","popoverContent","endIcon","endIconProp","id","idOverride","isDisabled","isOverflow","menuAlignment","omitEndIcon","shouldCloseOnSelect","size","testId","tooltipText","translate","useOdysseyDesignTokens","anchorEl","setAnchorEl","useState","isOpen","Boolean","closeMenu","useCallback","openMenu","event","currentTarget","uniqueId","useUniqueId","menuListProps","useMemo","providerValue","undefined","jsx","MoreIcon","ChevronDownIcon","anchorOrigin","horizontal","vertical","transformOrigin","jsxs","BaseButton","ariaControls","ariaExpanded","ariaHasPopup","label","onClick","variant","_Menu2","MenuListProps","onClose","open","MenuContext","Provider","value","_Popover2","Box","sx","padding","Spacing4","MemoizedBaseMenuButton","memo","displayName"],"sources":["../../../src/Buttons/BaseMenuButton.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 memo,\n type ReactElement,\n useCallback,\n useMemo,\n useState,\n ReactNode,\n} from \"react\";\nimport {\n Menu as MuiMenu,\n Popover as MuiPopover,\n PopoverOrigin,\n} from \"@mui/material\";\nimport styled from \"@emotion/styled\";\n\nimport { Box } from \"../Box.js\";\nimport {\n BaseButton,\n buttonSizeValues,\n buttonVariantValues,\n} from \"./BaseButton.js\";\nimport { FieldComponentProps } from \"../FieldComponentProps.js\";\nimport type { HtmlProps } from \"../HtmlProps.js\";\nimport { ChevronDownIcon, MoreIcon } from \"../icons.generated/index.js\";\nimport { MenuContext, MenuContextType } from \"./MenuContext.js\";\nimport { NullElement } from \"../NullElement.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { useUniqueId } from \"../useUniqueId.js\";\n\nexport const menuAlignmentValues = [\"left\", \"right\"] as const;\nexport const verticalDividerAlignmentValues = [\"start\", \"end\"] as const;\n\nconst StyledMenuButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasVerticalDivider\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"verticalDividerAlignment\",\n})<{\n hasVerticalDivider: BaseMenuButtonProps[\"hasVerticalDivider\"];\n odysseyDesignTokens: DesignTokens;\n verticalDividerAlignment: BaseMenuButtonProps[\"verticalDividerAlignment\"];\n}>(({ hasVerticalDivider, odysseyDesignTokens, verticalDividerAlignment }) => ({\n position: \"relative\",\n\n ...(hasVerticalDivider && {\n display: \"inline-block\",\n\n \"&:before\": {\n position: \"absolute\",\n top: \"50%\",\n left: 0,\n width: 1,\n height: odysseyDesignTokens.Spacing6,\n backgroundColor: odysseyDesignTokens.HueNeutral300,\n content: '\"\"',\n transform: \"translate3d(0, -50%, 0)\",\n transition: `opacity 200ms`,\n\n ...(verticalDividerAlignment === \"end\" && {\n left: \"unset\",\n right: 0,\n }),\n },\n\n \":has(> button:hover)\": {\n \"&:before\": {\n opacity: 0,\n },\n },\n\n \":dir(rtl)\": {\n \"&:before\": {\n left: \"unset\",\n right: 0,\n ...(verticalDividerAlignment === \"end\" && {\n right: \"unset\",\n left: 0,\n }),\n },\n },\n }),\n}));\n\nexport type BaseMenuButtonProps = {\n /**\n * The button children for the triggering Button. Only available internal to Odyssey here in BaseMenuButton. If set, buttonLabel is ignored.\n */\n buttonChildren?: ReactNode;\n /**\n * The label on the triggering Button\n */\n buttonLabel?: string;\n /**\n * The variant of the triggering Button\n */\n buttonVariant?: (typeof buttonVariantValues)[number];\n /**\n * The end Icon on the triggering Button\n */\n endIcon?: ReactElement;\n /**\n * Add a vertical rule to divide the button from surrounding content\n */\n hasVerticalDivider?: boolean;\n /**\n * Whether to omit the endIcon if not set (rather than use a default value for it based on overflow)\n */\n omitEndIcon?: boolean;\n /**\n * The id of the Button\n */\n id?: string;\n /**\n * If the MenuButton is an overflow menu or standard menu.\n */\n isOverflow?: boolean;\n /**\n * The horizontal alignment of the menu.\n */\n menuAlignment?: (typeof menuAlignmentValues)[number];\n /**\n * If true (the default), the menu will close when a child MenuItem is clicked.\n * Otherwise, it will remain open.\n */\n shouldCloseOnSelect?: boolean;\n /**\n * The size of the button\n */\n size?: (typeof buttonSizeValues)[number];\n /**\n * The tooltip text for the Button if it's icon-only\n */\n tooltipText?: string;\n\n /**\n * Show vertical rule before or after the button\n */\n verticalDividerAlignment?: (typeof verticalDividerAlignmentValues)[number];\n};\n\n// These are split and exported separately from the above because wrappers of this (e.g. MenuButton) will\n// want to omit buttonChildren, which they cannot do from the combined union type. Instead, they should\n// omit from BaseMenuButtonProps, then union with the AdditionalBaseMenuButtonProps (as seen in MenuButton)\nexport type AdditionalBaseMenuButtonProps = Pick<\n HtmlProps,\n \"ariaDescribedBy\" | \"ariaLabel\" | \"ariaLabelledBy\" | \"testId\" | \"translate\"\n> &\n Pick<FieldComponentProps, \"isDisabled\"> &\n (\n | { buttonLabel: string }\n | (Required<Pick<HtmlProps, \"ariaLabelledBy\">> &\n Partial<Pick<HtmlProps, \"ariaLabel\">> & {\n buttonLabel?: undefined | \"\";\n })\n | (Required<Pick<HtmlProps, \"ariaLabel\">> &\n Partial<Pick<HtmlProps, \"ariaLabelledBy\">> & {\n buttonLabel?: undefined | \"\";\n })\n ) &\n (\n | {\n /**\n * The <MenuItem> components within the Menu.\n */\n children: ReactNode | NullElement;\n /**\n * popoverContent is disallowed if children are present\n */\n popoverContent?: never;\n }\n | {\n /**\n * children is disallowed if popoverContent is present\n */\n children?: never;\n /**\n * The content for the popover that is triggered on click.\n */\n popoverContent: ReactNode | NullElement;\n }\n );\n\nconst BaseMenuButton = ({\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n buttonChildren,\n buttonLabel = \"\",\n buttonVariant = \"secondary\",\n children,\n popoverContent,\n endIcon: endIconProp,\n hasVerticalDivider = false,\n id: idOverride,\n isDisabled,\n isOverflow,\n menuAlignment = \"left\",\n omitEndIcon = false,\n shouldCloseOnSelect = true,\n size,\n testId,\n tooltipText,\n translate,\n verticalDividerAlignment = \"start\",\n}: BaseMenuButtonProps & AdditionalBaseMenuButtonProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const isOpen = Boolean(anchorEl);\n\n const closeMenu = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n const openMenu = useCallback<MenuContextType[\"openMenu\"]>((event) => {\n setAnchorEl(event.currentTarget);\n }, []);\n\n const uniqueId = useUniqueId(idOverride);\n\n const menuListProps = useMemo(\n () => ({ \"aria-labelledby\": `${uniqueId}-button` }),\n [uniqueId],\n );\n\n const providerValue = useMemo<MenuContextType>(\n () => ({\n closeMenu,\n openMenu,\n shouldCloseOnSelect,\n }),\n [closeMenu, openMenu, shouldCloseOnSelect],\n );\n\n const endIcon = omitEndIcon ? undefined : endIconProp ? (\n endIconProp\n ) : isOverflow ? (\n <MoreIcon />\n ) : (\n <ChevronDownIcon />\n );\n\n const anchorOrigin = useMemo(\n () =>\n ({\n horizontal: menuAlignment,\n vertical: \"bottom\",\n }) as PopoverOrigin,\n [menuAlignment],\n );\n\n const transformOrigin = useMemo(\n () =>\n ({\n horizontal: menuAlignment,\n vertical: \"top\",\n }) as PopoverOrigin,\n [menuAlignment],\n );\n\n return (\n <StyledMenuButtonContainer\n hasVerticalDivider={hasVerticalDivider}\n odysseyDesignTokens={odysseyDesignTokens}\n verticalDividerAlignment={verticalDividerAlignment}\n >\n <BaseButton\n ariaControls={isOpen ? `${uniqueId}-menu` : undefined}\n ariaExpanded={isOpen ? \"true\" : undefined}\n ariaHasPopup=\"true\"\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n testId={testId}\n endIcon={endIcon}\n id={`${uniqueId}-button`}\n isDisabled={isDisabled}\n label={buttonLabel}\n children={buttonChildren}\n onClick={openMenu}\n size={size}\n tooltipText={tooltipText}\n translate={translate}\n variant={buttonVariant}\n />\n\n {children && (\n <MuiMenu\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n anchorEl={anchorEl}\n id={`${uniqueId}-menu`}\n MenuListProps={menuListProps}\n onClose={closeMenu}\n open={isOpen}\n >\n <MenuContext.Provider value={providerValue}>\n {children}\n </MenuContext.Provider>\n </MuiMenu>\n )}\n\n {popoverContent && (\n <MuiPopover\n open={isOpen}\n anchorEl={anchorEl}\n onClose={closeMenu}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n >\n <Box\n sx={{\n padding: odysseyDesignTokens.Spacing4,\n }}\n >\n {popoverContent}\n </Box>\n </MuiPopover>\n )}\n </StyledMenuButtonContainer>\n );\n};\n\nconst MemoizedBaseMenuButton = memo(BaseMenuButton);\nMemoizedBaseMenuButton.displayName = \"BaseMenuButton\";\n\nexport { MemoizedBaseMenuButton as BaseMenuButton };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,8 +8,7 @@ var _MenuItem2 = _interopRequireWildcard(require("@mui/material/MenuItem"));
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _MenuContext = require("./MenuContext.cjs");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
function
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
12
|
/*!
|
|
14
13
|
* Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
15
14
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.cjs","names":["_MenuItem2","_interopRequireWildcard","require","_react","_MenuContext","_jsxRuntime","
|
|
1
|
+
{"version":3,"file":"MenuItem.cjs","names":["_MenuItem2","_interopRequireWildcard","require","_react","_MenuContext","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MenuItem","children","hasInitialFocus","isSelected","isDisabled","onClick","onClickProp","testId","value","variant","closeMenu","shouldCloseOnSelect","useContext","MenuContext","useCallback","event","jsx","autoFocus","className","menuItemClasses","root","undefined","disabled","selected","tabIndex","MemoizedMenuItem","exports","memo","displayName"],"sources":["../../../src/Buttons/MenuItem.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 MenuItem as MuiMenuItem,\n MenuItemProps as MuiMenuItemProps,\n} from \"@mui/material\";\nimport { menuItemClasses } from \"@mui/material/MenuItem\";\nimport { memo, useCallback, useContext, type ReactNode } from \"react\";\n\nimport { MenuContext } from \"./MenuContext.js\";\nimport type { HtmlProps } from \"../HtmlProps.js\";\n\nexport type MenuItemProps = {\n /**\n * The content of the menu item.\n */\n children: ReactNode;\n /**\n * If `true`, the menu item will receive focus automatically.\n */\n hasInitialFocus?: boolean;\n /**\n * If `true`, the menu item will be visually marked as selected.\n */\n isSelected?: boolean;\n /**\n * If `true`, the menu item will be visually marked as disabled.\n */\n isDisabled?: boolean;\n /**\n * Callback fired when the menu item is clicked.\n */\n onClick?: MuiMenuItemProps[\"onClick\"];\n /**\n * The value associated with the menu item.\n */\n value?: string;\n /**\n * The variant of the menu item.\n * - \"default\": The default variant.\n * - \"destructive\": A variant indicating a destructive action.\n */\n variant?: \"default\" | \"destructive\";\n} & Pick<HtmlProps, \"testId\">;\n\nconst MenuItem = ({\n children,\n hasInitialFocus,\n isSelected,\n isDisabled,\n onClick: onClickProp,\n testId,\n value,\n variant = \"default\",\n}: MenuItemProps) => {\n const { closeMenu, shouldCloseOnSelect } = useContext(MenuContext);\n\n const onClick = useCallback<NonNullable<MuiMenuItemProps[\"onClick\"]>>(\n (event) => {\n onClickProp?.(event);\n if (shouldCloseOnSelect) {\n closeMenu();\n }\n },\n [onClickProp, closeMenu, shouldCloseOnSelect],\n );\n\n return (\n <MuiMenuItem\n aria-current={isSelected}\n /* eslint-disable-next-line jsx-a11y/no-autofocus */\n autoFocus={hasInitialFocus}\n className={\n variant === \"destructive\"\n ? `${menuItemClasses.root}-destructive`\n : undefined\n }\n data-se={testId}\n disabled={isDisabled}\n onClick={onClick}\n selected={isSelected}\n value={value}\n tabIndex={0}\n >\n {children}\n </MuiMenuItem>\n );\n};\n\nconst MemoizedMenuItem = memo(MenuItem);\nMemoizedMenuItem.displayName = \"MenuItem\";\n\nexport { MemoizedMenuItem as MenuItem };\n"],"mappings":";;;;;;AAgBA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAA+C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAnB/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA6CA,MAAMkB,QAAQ,GAAGA,CAAC;EAChBC,QAAQ;EACRC,eAAe;EACfC,UAAU;EACVC,UAAU;EACVC,OAAO,EAAEC,WAAW;EACpBC,MAAM;EACNC,KAAK;EACLC,OAAO,GAAG;AACG,CAAC,KAAK;EACnB,MAAM;IAAEC,SAAS;IAAEC;EAAoB,CAAC,GAAG,IAAAC,iBAAU,EAACC,wBAAW,CAAC;EAElE,MAAMR,OAAO,GAAG,IAAAS,kBAAW,EACxBC,KAAK,IAAK;IACTT,WAAW,GAAGS,KAAK,CAAC;IACpB,IAAIJ,mBAAmB,EAAE;MACvBD,SAAS,CAAC,CAAC;IACb;EACF,CAAC,EACD,CAACJ,WAAW,EAAEI,SAAS,EAAEC,mBAAmB,CAC9C,CAAC;EAED,OACE,IAAA/B,WAAA,CAAAoC,GAAA,EAAAzC,UAAA,CAAAgB,OAAA;IACE,gBAAcY,UAAW;IAEzBc,SAAS,EAAEf,eAAgB;IAC3BgB,SAAS,EACPT,OAAO,KAAK,aAAa,GACrB,GAAGU,0BAAe,CAACC,IAAI,cAAc,GACrCC,SACL;IACD,WAASd,MAAO;IAChBe,QAAQ,EAAElB,UAAW;IACrBC,OAAO,EAAEA,OAAQ;IACjBkB,QAAQ,EAAEpB,UAAW;IACrBK,KAAK,EAAEA,KAAM;IACbgB,QAAQ,EAAE,CAAE;IAAAvB,QAAA,EAEXA;EAAQ,CACE,CAAC;AAElB,CAAC;AAED,MAAMwB,gBAAgB,GAAAC,OAAA,CAAA1B,QAAA,GAAG,IAAA2B,WAAI,EAAC3B,QAAQ,CAAC;AACvCyB,gBAAgB,CAACG,WAAW,GAAG,UAAU","ignoreList":[]}
|
|
@@ -8,8 +8,7 @@ var _FormGroup2 = _interopRequireDefault(require("@mui/material/FormGroup"));
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _Field = require("./Field.cjs");
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
function
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
/*!
|
|
15
14
|
* Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxGroup.cjs","names":["_react","_interopRequireWildcard","require","_Field","_jsxRuntime","
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.cjs","names":["_react","_interopRequireWildcard","require","_Field","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","CheckboxGroup","ariaDescribedBy","children","errorMessage","errorMessageList","hint","HintLinkComponent","id","idOverride","isDisabled","isReadOnly","isRequired","label","testId","translate","memoizedChildren","useMemo","React","Children","map","child","isValidElement","cloneElement","props","renderFieldComponent","useCallback","errorMessageElementId","labelElementId","jsx","_FormGroup2","Field","fieldType","hasVisibleLabel","isOptional","MemoizedCheckboxGroup","exports","memo","displayName"],"sources":["../../src/CheckboxGroup.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, { memo, ReactNode, useCallback, useMemo } from \"react\";\nimport { FormGroup as MuiFormGroup } from \"@mui/material\";\nimport { CheckboxProps } from \"./Checkbox.js\";\nimport { Field } from \"./Field.js\";\nimport {\n FieldComponentProps,\n FieldComponentRenderProps,\n} from \"./FieldComponentProps.js\";\nimport type { HtmlProps } from \"./HtmlProps.js\";\n\nexport type CheckboxGroupProps = {\n /**\n * A single Checkbox element or an array of Checkbox elements\n */\n children: ReactNode;\n /**\n * If `true`, the CheckboxGroup is required\n */\n isRequired?: boolean;\n /**\n * The label text for the CheckboxGroup\n */\n label: string;\n} & Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"errorMessageList\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isDisabled\"\n | \"isReadOnly\"\n> &\n Pick<HtmlProps, \"ariaDescribedBy\" | \"testId\" | \"translate\">;\n\ntype CheckboxGroupRenderProps = Pick<\n FieldComponentRenderProps,\n \"id\" | \"labelElementId\"\n> &\n Partial<\n Pick<FieldComponentRenderProps, \"ariaDescribedBy\" | \"errorMessageElementId\">\n >;\n\nconst CheckboxGroup = ({\n ariaDescribedBy,\n children,\n errorMessage,\n errorMessageList,\n hint,\n HintLinkComponent,\n id: idOverride,\n isDisabled,\n isReadOnly = false,\n isRequired = false,\n label,\n testId,\n translate,\n}: CheckboxGroupProps) => {\n const memoizedChildren = useMemo(\n () =>\n React.Children.map(children, (child) => {\n if (React.isValidElement<CheckboxProps>(child)) {\n return React.cloneElement(child, {\n isReadOnly,\n isDisabled: isDisabled || child.props.isDisabled,\n });\n }\n return child;\n }),\n [children, isReadOnly, isDisabled],\n );\n\n const renderFieldComponent = useCallback(\n ({\n ariaDescribedBy,\n errorMessageElementId,\n id,\n labelElementId,\n }: CheckboxGroupRenderProps) => (\n <MuiFormGroup\n aria-describedby={ariaDescribedBy}\n aria-errormessage={errorMessageElementId}\n aria-labelledby={labelElementId}\n data-se={testId}\n id={id}\n translate={translate}\n >\n {memoizedChildren}\n </MuiFormGroup>\n ),\n [memoizedChildren, testId, translate],\n );\n\n return (\n <Field\n ariaDescribedBy={ariaDescribedBy}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n fieldType=\"group\"\n hasVisibleLabel={true}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={!isRequired}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n};\n\nconst MemoizedCheckboxGroup = memo(CheckboxGroup);\nMemoizedCheckboxGroup.displayName = \"CheckboxGroup\";\n\nexport { MemoizedCheckboxGroup as CheckboxGroup };\n"],"mappings":"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","ignoreList":[]}
|