@okta/odyssey-react-mui 1.2.0 → 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.
- package/CHANGELOG.md +20 -0
- package/README.md +1 -1
- package/dist/Autocomplete.js +1 -0
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Breadcrumbs.js +146 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Link.js +3 -1
- package/dist/Link.js.map +1 -1
- package/dist/MenuButton.js.map +1 -1
- package/dist/Tabs.js +8 -6
- package/dist/Tabs.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/labs/GroupPicker.js +190 -0
- package/dist/labs/GroupPicker.js.map +1 -0
- package/dist/labs/index.js +1 -0
- package/dist/labs/index.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui.js +2 -0
- package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/src/Autocomplete.d.ts.map +1 -1
- package/dist/src/Breadcrumbs.d.ts +31 -0
- package/dist/src/Breadcrumbs.d.ts.map +1 -0
- package/dist/src/Link.d.ts +6 -1
- package/dist/src/Link.d.ts.map +1 -1
- package/dist/src/MenuButton.d.ts +1 -1
- package/dist/src/MenuButton.d.ts.map +1 -1
- package/dist/src/Tabs.d.ts +7 -2
- package/dist/src/Tabs.d.ts.map +1 -1
- package/dist/src/i18n.d.ts +2 -0
- package/dist/src/i18n.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/labs/GroupPicker.d.ts +25 -0
- package/dist/src/labs/GroupPicker.d.ts.map +1 -0
- package/dist/src/labs/index.d.ts +1 -0
- package/dist/src/labs/index.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/src/theme/components.d.ts.map +1 -1
- package/dist/theme/components.js +32 -4
- package/dist/theme/components.js.map +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/scripts/properties-to-ts.js +1 -1
- package/src/Autocomplete.tsx +3 -0
- package/src/Breadcrumbs.tsx +199 -0
- package/src/Link.tsx +7 -1
- package/src/MenuButton.tsx +2 -3
- package/src/Tabs.tsx +24 -12
- package/src/index.ts +1 -0
- package/src/labs/GroupPicker.tsx +241 -0
- package/src/labs/README.md +1 -1
- package/src/labs/index.ts +1 -0
- package/src/properties/odyssey-react-mui.properties +2 -0
- package/src/properties/ts/odyssey-react-mui.ts +1 -1
- package/src/theme/components.tsx +35 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.4.0](https://github.com/okta/odyssey/compare/v1.3.0...v1.4.0) (2023-10-23)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- add onclick prop to link component ([#2003](https://github.com/okta/odyssey/issues/2003)) ([7ae351e](https://github.com/okta/odyssey/commit/7ae351edb3001de752ffc292133a05a9b64c57be))
|
|
11
|
+
|
|
12
|
+
## [1.3.0](https://github.com/okta/odyssey/compare/v1.2.0...v1.3.0) (2023-10-18)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- group picker ([71171e0](https://github.com/okta/odyssey/commit/71171e009460f6f6606cd4b87647d36c8d5b119a))
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- gray color in default Status lamp variant ([1dd74df](https://github.com/okta/odyssey/commit/1dd74df9cb86147ed4cb02e3deb04c0be7f6fe6c))
|
|
21
|
+
- inclusive language adjustments ([#1995](https://github.com/okta/odyssey/issues/1995)) ([82f4cb5](https://github.com/okta/odyssey/commit/82f4cb5290d418623c35fdb2504da37ab05a2d89))
|
|
22
|
+
- menu button not allowing falsey children ([#1999](https://github.com/okta/odyssey/issues/1999)) ([b63b117](https://github.com/okta/odyssey/commit/b63b117beb7d86671a91d76256092400d0c7e204))
|
|
23
|
+
- remove border from default status lamp ([5bacb73](https://github.com/okta/odyssey/commit/5bacb73d76662e6d4c4a5423fdf6cb96ac677913))
|
|
24
|
+
- update displayName for Autocomplete ([#1983](https://github.com/okta/odyssey/issues/1983)) ([65abc8e](https://github.com/okta/odyssey/commit/65abc8e99949d9bafacace4a5591dec93ca3cc1f))
|
|
25
|
+
|
|
6
26
|
## [1.2.0](https://github.com/okta/odyssey/compare/v1.1.1...v1.2.0) (2023-09-29)
|
|
7
27
|
|
|
8
28
|
### Features
|
package/README.md
CHANGED
|
@@ -129,7 +129,7 @@ bundled, and polyfilled for advanced use cases and browser support targets.
|
|
|
129
129
|
|
|
130
130
|
## License
|
|
131
131
|
|
|
132
|
-
[Apache Version 2.0](https://github.com/okta/odyssey/blob/
|
|
132
|
+
[Apache Version 2.0](https://github.com/okta/odyssey/blob/main/LICENSE)
|
|
133
133
|
|
|
134
134
|
## Support Disclaimer
|
|
135
135
|
|
package/dist/Autocomplete.js
CHANGED
package/dist/Autocomplete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","names":["memo","useCallback","Field","jsx","_jsx","Autocomplete","_ref","errorMessage","hasMultipleChoices","id","idOverride","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","name","nameOverride","onBlur","onChange","onInputChange","onFocus","options","value","testId","renderInput","_ref2","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","_ref3","ariaDescribedBy","_InputBase","required","_Autocomplete","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","loading","multiple","readOnly","MemoizedAutocomplete"],"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 {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n InputBase,\n} from \"@mui/material\";\nimport { memo, useCallback } from \"react\";\n\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n> = {\n /**\n * The error message for the Select\n */\n errorMessage?: string;\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The hint text for the Autocomplete input\n */\n hint?: string;\n /**\n * The id attribute of the Select\n */\n id?: string;\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 * If `true`, the `input` element is not required.\n */\n isOptional?: boolean;\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * The label text for the autocomplete input\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 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?: MuiAutocompleteProps<\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: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"options\"];\n /**\n * The value of the Autocomplete input\n */\n value?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n} & SeleniumProps;\n\nconst Autocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n>({\n errorMessage,\n hasMultipleChoices,\n id: idOverride,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n name: nameOverride,\n onBlur,\n onChange,\n onInputChange,\n onFocus,\n options,\n value,\n testId,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const renderInput = useCallback(\n ({ InputLabelProps, InputProps, ...params }) => (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({ ariaDescribedBy, id }) => (\n <InputBase\n {...params}\n {...InputProps}\n aria-describedby={ariaDescribedBy}\n id={id}\n name={nameOverride ?? id}\n required={!isOptional}\n />\n )}\n />\n ),\n [errorMessage, hint, isOptional, label, nameOverride]\n );\n\n return (\n <MuiAutocomplete\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 data-se={testId}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n id={idOverride}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n value={value}\n />\n );\n};\n\nconst MemoizedAutocomplete = memo(Autocomplete) as typeof Autocomplete;\n\nexport { MemoizedAutocomplete as Autocomplete };\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAAC,SAEjCC,KAAK;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAqId,MAAMC,YAAY,GAAGC,IAAA,IAuB0D;EAAA,IAnB7E;IACAC,YAAY;IACZC,kBAAkB;IAClBC,EAAE,EAAEC,UAAU;IACdC,oBAAoB;IACpBC,UAAU;IACVC,SAAS;IACTC,UAAU,GAAG,KAAK;IAClBC,UAAU;IACVC,IAAI;IACJC,KAAK;IACLC,IAAI,EAAEC,YAAY;IAClBC,MAAM;IACNC,QAAQ;IACRC,aAAa;IACbC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC;EACuE,CAAC,GAAApB,IAAA;EACxE,MAAMqB,WAAW,GAAG1B,WAAW,CAC7B2B,KAAA;IAAA,IAAC;MAAEC,eAAe;MAAEC,UAAU;MAAE,GAAGC;IAAO,CAAC,GAAAH,KAAA;IAAA,OACzCxB,IAAA,CAACF,KAAK;MACJK,YAAY,EAAEA,YAAa;MAC3ByB,SAAS,EAAC,QAAQ;MAClBC,eAAe;MACfxB,EAAE,EAAEoB,eAAe,CAACK,OAAQ;MAC5BlB,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbH,UAAU,EAAEA,UAAW;MACvBqB,oBAAoB,EAAEC,KAAA;QAAA,IAAC;UAAEC,eAAe;UAAE5B;QAAG,CAAC,GAAA2B,KAAA;QAAA,OAC5ChC,IAAA,CAAAkC,UAAA;UAAA,GACMP,MAAM;UAAA,GACND,UAAU;UACd,oBAAkBO,eAAgB;UAClC5B,EAAE,EAAEA,EAAG;UACPS,IAAI,EAAEC,YAAY,IAAIV,EAAG;UACzB8B,QAAQ,EAAE,CAACzB;QAAW,CACvB,CAAC;MAAA;IACF,CACH,CAAC;EAAA,CACH,EACD,CAACP,YAAY,EAAES,IAAI,EAAEF,UAAU,EAAEG,KAAK,EAAEE,YAAY,CACtD,CAAC;EAED,OACEf,IAAA,CAAAoC,aAAA;IAEE,iBAAe5B,UAAW;IAC1B,WAASc,MAAO;IAChBe,oBAAoB,EAAEjC,kBAAmB;IACzCkC,QAAQ,EAAE9B,UAAW;IACrB+B,QAAQ,EAAEhC,oBAAqB;IAC/BiC,qBAAqB,EAAE,IAAK;IAC5BnC,EAAE,EAAEC,UAAW;IACfmC,OAAO,EAAEhC,SAAU;IACnBiC,QAAQ,EAAEtC,kBAAmB;IAC7BY,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEA,QAAS;IACnBC,aAAa,EAAEA,aAAc;IAC7BC,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IACjBuB,QAAQ,EAAEhC,UAAW;IACrBY,WAAW,EAAEA,WAAY;IACzBF,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC;
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","names":["memo","useCallback","Field","jsx","_jsx","Autocomplete","_ref","errorMessage","hasMultipleChoices","id","idOverride","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","name","nameOverride","onBlur","onChange","onInputChange","onFocus","options","value","testId","renderInput","_ref2","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","_ref3","ariaDescribedBy","_InputBase","required","_Autocomplete","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","loading","multiple","readOnly","MemoizedAutocomplete","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 {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n InputBase,\n} from \"@mui/material\";\nimport { memo, useCallback } from \"react\";\n\nimport { Field } from \"./Field\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n> = {\n /**\n * The error message for the Select\n */\n errorMessage?: string;\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The hint text for the Autocomplete input\n */\n hint?: string;\n /**\n * The id attribute of the Select\n */\n id?: string;\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 * If `true`, the `input` element is not required.\n */\n isOptional?: boolean;\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * The label text for the autocomplete input\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 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?: MuiAutocompleteProps<\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: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"options\"];\n /**\n * The value of the Autocomplete input\n */\n value?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n} & SeleniumProps;\n\nconst Autocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n>({\n errorMessage,\n hasMultipleChoices,\n id: idOverride,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n name: nameOverride,\n onBlur,\n onChange,\n onInputChange,\n onFocus,\n options,\n value,\n testId,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const renderInput = useCallback(\n ({ InputLabelProps, InputProps, ...params }) => (\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({ ariaDescribedBy, id }) => (\n <InputBase\n {...params}\n {...InputProps}\n aria-describedby={ariaDescribedBy}\n id={id}\n name={nameOverride ?? id}\n required={!isOptional}\n />\n )}\n />\n ),\n [errorMessage, hint, isOptional, label, nameOverride]\n );\n\n return (\n <MuiAutocomplete\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 data-se={testId}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n id={idOverride}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n value={value}\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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAAC,SAEjCC,KAAK;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAqId,MAAMC,YAAY,GAAGC,IAAA,IAuB0D;EAAA,IAnB7E;IACAC,YAAY;IACZC,kBAAkB;IAClBC,EAAE,EAAEC,UAAU;IACdC,oBAAoB;IACpBC,UAAU;IACVC,SAAS;IACTC,UAAU,GAAG,KAAK;IAClBC,UAAU;IACVC,IAAI;IACJC,KAAK;IACLC,IAAI,EAAEC,YAAY;IAClBC,MAAM;IACNC,QAAQ;IACRC,aAAa;IACbC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC;EACuE,CAAC,GAAApB,IAAA;EACxE,MAAMqB,WAAW,GAAG1B,WAAW,CAC7B2B,KAAA;IAAA,IAAC;MAAEC,eAAe;MAAEC,UAAU;MAAE,GAAGC;IAAO,CAAC,GAAAH,KAAA;IAAA,OACzCxB,IAAA,CAACF,KAAK;MACJK,YAAY,EAAEA,YAAa;MAC3ByB,SAAS,EAAC,QAAQ;MAClBC,eAAe;MACfxB,EAAE,EAAEoB,eAAe,CAACK,OAAQ;MAC5BlB,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbH,UAAU,EAAEA,UAAW;MACvBqB,oBAAoB,EAAEC,KAAA;QAAA,IAAC;UAAEC,eAAe;UAAE5B;QAAG,CAAC,GAAA2B,KAAA;QAAA,OAC5ChC,IAAA,CAAAkC,UAAA;UAAA,GACMP,MAAM;UAAA,GACND,UAAU;UACd,oBAAkBO,eAAgB;UAClC5B,EAAE,EAAEA,EAAG;UACPS,IAAI,EAAEC,YAAY,IAAIV,EAAG;UACzB8B,QAAQ,EAAE,CAACzB;QAAW,CACvB,CAAC;MAAA;IACF,CACH,CAAC;EAAA,CACH,EACD,CAACP,YAAY,EAAES,IAAI,EAAEF,UAAU,EAAEG,KAAK,EAAEE,YAAY,CACtD,CAAC;EAED,OACEf,IAAA,CAAAoC,aAAA;IAEE,iBAAe5B,UAAW;IAC1B,WAASc,MAAO;IAChBe,oBAAoB,EAAEjC,kBAAmB;IACzCkC,QAAQ,EAAE9B,UAAW;IACrB+B,QAAQ,EAAEhC,oBAAqB;IAC/BiC,qBAAqB,EAAE,IAAK;IAC5BnC,EAAE,EAAEC,UAAW;IACfmC,OAAO,EAAEhC,SAAU;IACnBiC,QAAQ,EAAEtC,kBAAmB;IAC7BY,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEA,QAAS;IACnBC,aAAa,EAAEA,aAAc;IAC7BC,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IACjBuB,QAAQ,EAAEhC,UAAW;IACrBY,WAAW,EAAEA,WAAY;IACzBF,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC;AAGD,MAAMuB,oBAAoB,GAAGhD,IAAI,CAACK,YAAY,CAAwB;AAEtE2C,oBAAoB,CAACC,WAAW,GAAG,cAAc;AAEjD,SAASD,oBAAoB,IAAI3C,YAAY"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import _Breadcrumbs from "@mui/material/Breadcrumbs";
|
|
2
|
+
import _Menu from "@mui/material/Menu";
|
|
3
|
+
import _ButtonBase from "@mui/material/ButtonBase";
|
|
4
|
+
import _MenuItem from "@mui/material/MenuItem";
|
|
5
|
+
/*!
|
|
6
|
+
* Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
7
|
+
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
8
|
+
*
|
|
9
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
*
|
|
14
|
+
* See the License for the specific language governing permissions and limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { createContext, memo, useCallback, useContext, useMemo, useState } from "react";
|
|
17
|
+
import { GroupIcon, HomeIcon, UserIcon } from "./icons.generated/index.js";
|
|
18
|
+
import { Typography } from "./Typography.js";
|
|
19
|
+
import { useTranslation } from "react-i18next";
|
|
20
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
22
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
+
export const BreadcrumbContext = createContext({
|
|
24
|
+
breadcrumbType: "listItem"
|
|
25
|
+
});
|
|
26
|
+
export const Breadcrumb = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
children,
|
|
29
|
+
href,
|
|
30
|
+
iconName
|
|
31
|
+
} = _ref;
|
|
32
|
+
const {
|
|
33
|
+
breadcrumbType
|
|
34
|
+
} = useContext(BreadcrumbContext);
|
|
35
|
+
const breadcrumbContent = _jsxs(_Fragment, {
|
|
36
|
+
children: [iconName === "group" ? _jsx(GroupIcon, {}) : iconName === "user" ? _jsx(UserIcon, {}) : null, children]
|
|
37
|
+
});
|
|
38
|
+
if (breadcrumbType === "menuItem") {
|
|
39
|
+
return _jsx(_MenuItem, {
|
|
40
|
+
href: href,
|
|
41
|
+
children: breadcrumbContent
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
if (breadcrumbType === "currentPage") {
|
|
45
|
+
return _jsx(Typography, {
|
|
46
|
+
children: breadcrumbContent
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return _jsx(_ButtonBase, {
|
|
50
|
+
href: href,
|
|
51
|
+
children: breadcrumbContent
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const breadcrumbProviderValue = {
|
|
55
|
+
currentPage: {
|
|
56
|
+
breadcrumbType: "currentPage"
|
|
57
|
+
},
|
|
58
|
+
listItem: {
|
|
59
|
+
breadcrumbType: "listItem"
|
|
60
|
+
},
|
|
61
|
+
menuItem: {
|
|
62
|
+
breadcrumbType: "menuItem"
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const BreadcrumbList = _ref2 => {
|
|
66
|
+
let {
|
|
67
|
+
children,
|
|
68
|
+
homeHref,
|
|
69
|
+
maxVisibleItems: maxVisibleItemsOverride
|
|
70
|
+
} = _ref2;
|
|
71
|
+
const maxVisibleItems = maxVisibleItemsOverride ?? children.length;
|
|
72
|
+
const {
|
|
73
|
+
t
|
|
74
|
+
} = useTranslation();
|
|
75
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
76
|
+
const breadcrumbSections = useMemo(() => {
|
|
77
|
+
if (children.length <= maxVisibleItems) {
|
|
78
|
+
return {
|
|
79
|
+
beforeMenu: [],
|
|
80
|
+
insideMenu: [],
|
|
81
|
+
remainingBreadcrumbs: children
|
|
82
|
+
};
|
|
83
|
+
} else {
|
|
84
|
+
const menuStart = Math.floor(maxVisibleItems / 2);
|
|
85
|
+
const menuLength = children.length - maxVisibleItems;
|
|
86
|
+
return {
|
|
87
|
+
beforeMenu: children.slice(0, menuStart),
|
|
88
|
+
insideMenu: children.slice(menuStart, menuStart + menuLength),
|
|
89
|
+
remainingBreadcrumbs: children.slice(menuStart + menuLength)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}, [children, maxVisibleItems]);
|
|
93
|
+
const onMenuButtonClick = useCallback(event => setAnchorEl(event.currentTarget), []);
|
|
94
|
+
const onCloseMenu = useCallback(() => {
|
|
95
|
+
setAnchorEl(null);
|
|
96
|
+
}, []);
|
|
97
|
+
return _jsxs(_Breadcrumbs, {
|
|
98
|
+
maxItems: children.length + 1,
|
|
99
|
+
"aria-label": t("breadcrumbs.label.text"),
|
|
100
|
+
children: [homeHref && _jsx(_ButtonBase, {
|
|
101
|
+
href: homeHref,
|
|
102
|
+
"aria-label": t("breadcrumbs.home.text"),
|
|
103
|
+
children: _jsx(HomeIcon, {})
|
|
104
|
+
}), breadcrumbSections.beforeMenu.map(breadcrumb => _jsx(BreadcrumbContext.Provider, {
|
|
105
|
+
value: breadcrumbProviderValue.listItem,
|
|
106
|
+
children: breadcrumb
|
|
107
|
+
})), breadcrumbSections.insideMenu && _jsxs(_Fragment, {
|
|
108
|
+
children: [_jsx(_ButtonBase, {
|
|
109
|
+
onClick: onMenuButtonClick,
|
|
110
|
+
children: "\u2026"
|
|
111
|
+
}), _jsx(_Menu, {
|
|
112
|
+
open: Boolean(anchorEl),
|
|
113
|
+
onClose: onCloseMenu,
|
|
114
|
+
anchorEl: anchorEl,
|
|
115
|
+
anchorOrigin: {
|
|
116
|
+
horizontal: "left",
|
|
117
|
+
vertical: "bottom"
|
|
118
|
+
},
|
|
119
|
+
MenuListProps: {
|
|
120
|
+
sx: {
|
|
121
|
+
minWidth: 180
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
children: _jsx(BreadcrumbContext.Provider, {
|
|
125
|
+
value: breadcrumbProviderValue.menuItem,
|
|
126
|
+
children: breadcrumbSections.insideMenu
|
|
127
|
+
})
|
|
128
|
+
})]
|
|
129
|
+
}), breadcrumbSections.remainingBreadcrumbs.map((breadcrumb, i) => {
|
|
130
|
+
if (i === breadcrumbSections.remainingBreadcrumbs.length - 1) {
|
|
131
|
+
return _jsx(BreadcrumbContext.Provider, {
|
|
132
|
+
value: breadcrumbProviderValue.currentPage,
|
|
133
|
+
children: breadcrumb
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return _jsx(BreadcrumbContext.Provider, {
|
|
137
|
+
value: breadcrumbProviderValue.listItem,
|
|
138
|
+
children: breadcrumb
|
|
139
|
+
});
|
|
140
|
+
})]
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
const MemoizedBreadcrumbList = memo(BreadcrumbList);
|
|
144
|
+
MemoizedBreadcrumbList.displayName = "BreadcrumbList";
|
|
145
|
+
export { MemoizedBreadcrumbList as BreadcrumbList };
|
|
146
|
+
//# sourceMappingURL=Breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","names":["createContext","memo","useCallback","useContext","useMemo","useState","GroupIcon","HomeIcon","UserIcon","Typography","useTranslation","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BreadcrumbContext","breadcrumbType","Breadcrumb","_ref","children","href","iconName","breadcrumbContent","_MenuItem","_ButtonBase","breadcrumbProviderValue","currentPage","listItem","menuItem","BreadcrumbList","_ref2","homeHref","maxVisibleItems","maxVisibleItemsOverride","length","t","anchorEl","setAnchorEl","breadcrumbSections","beforeMenu","insideMenu","remainingBreadcrumbs","menuStart","Math","floor","menuLength","slice","onMenuButtonClick","event","currentTarget","onCloseMenu","_Breadcrumbs","maxItems","map","breadcrumb","Provider","value","onClick","_Menu","open","Boolean","onClose","anchorOrigin","horizontal","vertical","MenuListProps","sx","minWidth","i","MemoizedBreadcrumbList","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\";\nimport { Typography } from \"./Typography\";\nimport { useTranslation } from \"react-i18next\";\n\nexport type BreadcrumbType = \"listItem\" | \"menuItem\" | \"currentPage\";\n\nexport type BreadcrumbProps = {\n children?: string;\n href: string;\n iconName?: \"user\" | \"group\";\n};\n\nexport type BreadcrumbsProps = {\n children: ReactElement<typeof Breadcrumb>[];\n homeHref?: string;\n maxVisibleItems?: number;\n};\n\nexport type BreadcrumbContextType = {\n breadcrumbType: BreadcrumbType;\n};\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextType>({\n breadcrumbType: \"listItem\",\n});\n\nexport const Breadcrumb = ({ children, href, iconName }: BreadcrumbProps) => {\n const { breadcrumbType } = useContext(BreadcrumbContext);\n\n const breadcrumbContent = (\n <>\n {iconName === \"group\" ? (\n <GroupIcon />\n ) : iconName === \"user\" ? (\n <UserIcon />\n ) : null}\n {children}\n </>\n );\n\n if (breadcrumbType === \"menuItem\") {\n return <MenuItem href={href}>{breadcrumbContent}</MenuItem>;\n }\n\n if (breadcrumbType === \"currentPage\") {\n return <Typography>{breadcrumbContent}</Typography>;\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 <ButtonBase href={href}>{breadcrumbContent}</ButtonBase>;\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 BreadcrumbList = ({\n children,\n homeHref,\n maxVisibleItems: maxVisibleItemsOverride,\n}: BreadcrumbsProps) => {\n const maxVisibleItems = maxVisibleItemsOverride ?? children.length;\n\n const { t } = useTranslation();\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\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 >\n {homeHref && (\n <ButtonBase href={homeHref} aria-label={t(\"breadcrumbs.home.text\")}>\n <HomeIcon />\n </ButtonBase>\n )}\n\n {breadcrumbSections.beforeMenu.map((breadcrumb) => (\n <BreadcrumbContext.Provider value={breadcrumbProviderValue.listItem}>\n {breadcrumb}\n </BreadcrumbContext.Provider>\n ))}\n\n {breadcrumbSections.insideMenu && (\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, i) => {\n if (i === breadcrumbSections.remainingBreadcrumbs.length - 1) {\n return (\n <BreadcrumbContext.Provider\n value={breadcrumbProviderValue.currentPage}\n >\n {breadcrumb}\n </BreadcrumbContext.Provider>\n );\n }\n return (\n <BreadcrumbContext.Provider value={breadcrumbProviderValue.listItem}>\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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"}
|
package/dist/Link.js
CHANGED
|
@@ -24,7 +24,8 @@ const Link = _ref => {
|
|
|
24
24
|
rel,
|
|
25
25
|
target,
|
|
26
26
|
testId,
|
|
27
|
-
variant
|
|
27
|
+
variant,
|
|
28
|
+
onClick
|
|
28
29
|
} = _ref;
|
|
29
30
|
return _jsxs(_Link, {
|
|
30
31
|
"data-se": testId,
|
|
@@ -32,6 +33,7 @@ const Link = _ref => {
|
|
|
32
33
|
rel: rel,
|
|
33
34
|
target: target,
|
|
34
35
|
variant: variant,
|
|
36
|
+
onClick: onClick,
|
|
35
37
|
children: [icon && _jsx("span", {
|
|
36
38
|
className: "Link-icon",
|
|
37
39
|
children: icon
|
package/dist/Link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","names":["memo","ExternalLinkIcon","jsx","_jsx","jsxs","_jsxs","linkVariantValues","Link","_ref","children","href","icon","rel","target","testId","variant","_Link","className","role","MemoizedLink","displayName"],"sources":["../src/Link.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 { memo, ReactElement } from \"react\";\nimport { ExternalLinkIcon } from \"./icons.generated\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nimport { Link as MuiLink } from \"@mui/material\";\n\nexport const linkVariantValues = [\"default\", \"monochrome\"] as const;\n\nexport type LinkProps = {\n /**\n * The content within the Link\n */\n children: React.ReactNode;\n /**\n * The Link destination\n */\n href: string;\n /**\n * An optional Icon component at the start of the Link\n */\n icon?: ReactElement;\n /**\n * The HTML `rel` attribute for the Link\n */\n rel?: string;\n /**\n * The HTML `target` attribute for the Link\n */\n target?:\n | \"_self\"\n | \"_blank\"\n | \"_parent\"\n | \"_top\"\n | (string & NonNullable<unknown>);\n /**\n * The visual presentation of the Link (default or monochrome)\n */\n variant?: (typeof linkVariantValues)[number];\n} & SeleniumProps;\n\nconst Link = ({\n children,\n href,\n icon,\n rel,\n target,\n testId,\n variant,\n}: LinkProps) => (\n <MuiLink\n data-se={testId}\n href={href}\n rel={rel}\n target={target}\n variant={variant}\n >\n {icon && <span className=\"Link-icon\">{icon}</span>}\n\n {children}\n\n {target === \"_blank\" && (\n <span className=\"Link-indicator\" role=\"presentation\">\n <ExternalLinkIcon />\n </span>\n )}\n </MuiLink>\n);\n\nconst MemoizedLink = memo(Link);\n\nMemoizedLink.displayName = \"Link\";\n\nexport { MemoizedLink as Link };\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAsB,OAAO;AAAC,SAClCC,gBAAgB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAKzB,OAAO,MAAMC,iBAAiB,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU;
|
|
1
|
+
{"version":3,"file":"Link.js","names":["memo","ExternalLinkIcon","jsx","_jsx","jsxs","_jsxs","linkVariantValues","Link","_ref","children","href","icon","rel","target","testId","variant","onClick","_Link","className","role","MemoizedLink","displayName"],"sources":["../src/Link.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 { memo, ReactElement } from \"react\";\nimport { ExternalLinkIcon } from \"./icons.generated\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nimport { Link as MuiLink, LinkProps as MuiLinkProps } from \"@mui/material\";\n\nexport const linkVariantValues = [\"default\", \"monochrome\"] as const;\n\nexport type LinkProps = {\n /**\n * The content within the Link\n */\n children: React.ReactNode;\n /**\n * The Link destination\n */\n href: string;\n /**\n * An optional Icon component at the start of the Link\n */\n icon?: ReactElement;\n /**\n * The click event handler for the Link\n */\n onClick?: MuiLinkProps[\"onClick\"];\n /**\n * The HTML `rel` attribute for the Link\n */\n rel?: string;\n /**\n * The HTML `target` attribute for the Link\n */\n target?:\n | \"_self\"\n | \"_blank\"\n | \"_parent\"\n | \"_top\"\n | (string & NonNullable<unknown>);\n /**\n * The visual presentation of the Link (default or monochrome)\n */\n variant?: (typeof linkVariantValues)[number];\n} & SeleniumProps;\n\nconst Link = ({\n children,\n href,\n icon,\n rel,\n target,\n testId,\n variant,\n onClick,\n}: LinkProps) => (\n <MuiLink\n data-se={testId}\n href={href}\n rel={rel}\n target={target}\n variant={variant}\n onClick={onClick}\n >\n {icon && <span className=\"Link-icon\">{icon}</span>}\n\n {children}\n\n {target === \"_blank\" && (\n <span className=\"Link-indicator\" role=\"presentation\">\n <ExternalLinkIcon />\n </span>\n )}\n </MuiLink>\n);\n\nconst MemoizedLink = memo(Link);\n\nMemoizedLink.displayName = \"Link\";\n\nexport { MemoizedLink as Link };\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAsB,OAAO;AAAC,SAClCC,gBAAgB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAKzB,OAAO,MAAMC,iBAAiB,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU;AAsCnE,MAAMC,IAAI,GAAGC,IAAA;EAAA,IAAC;IACZC,QAAQ;IACRC,IAAI;IACJC,IAAI;IACJC,GAAG;IACHC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC;EACS,CAAC,GAAAR,IAAA;EAAA,OACVH,KAAA,CAAAY,KAAA;IACE,WAASH,MAAO;IAChBJ,IAAI,EAAEA,IAAK;IACXE,GAAG,EAAEA,GAAI;IACTC,MAAM,EAAEA,MAAO;IACfE,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IAAAP,QAAA,GAEhBE,IAAI,IAAIR,IAAA;MAAMe,SAAS,EAAC,WAAW;MAAAT,QAAA,EAAEE;IAAI,CAAO,CAAC,EAEjDF,QAAQ,EAERI,MAAM,KAAK,QAAQ,IAClBV,IAAA;MAAMe,SAAS,EAAC,gBAAgB;MAACC,IAAI,EAAC,cAAc;MAAAV,QAAA,EAClDN,IAAA,CAACF,gBAAgB,IAAE;IAAC,CAChB,CACP;EAAA,CACM,CAAC;AAAA,CACX;AAED,MAAMmB,YAAY,GAAGpB,IAAI,CAACO,IAAI,CAAC;AAE/Ba,YAAY,CAACC,WAAW,GAAG,MAAM;AAEjC,SAASD,YAAY,IAAIb,IAAI"}
|
package/dist/MenuButton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButton.js","names":["Button","useUniqueId","ChevronDownIcon","MoreIcon","memo","useCallback","useMemo","useState","MenuContext","jsx","_jsx","jsxs","_jsxs","MenuButton","_ref","ariaLabel","ariaLabelledBy","ariaDescribedBy","buttonLabel","buttonVariant","children","endIcon","endIconProp","id","idOverride","isOverflow","size","testId","tooltipText","anchorEl","setAnchorEl","isOpen","Boolean","closeMenu","openMenu","event","currentTarget","uniqueId","menuListProps","providerValue","undefined","label","onClick","variant","_Menu","MenuListProps","onClose","open","Provider","value","MemoizedMenuButton","displayName"],"sources":["../src/MenuButton.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 Button,\n buttonSizeValues,\n buttonVariantValues,\n MenuItem,\n useUniqueId,\n} from \"./\";\nimport { Divider, ListSubheader, Menu } from \"@mui/material\";\nimport { ChevronDownIcon, MoreIcon } from \"./icons.generated\";\nimport { memo, type ReactElement, useCallback, useMemo, useState } from \"react\";\n\nimport { MenuContext, MenuContextType } from \"./MenuContext\";\nimport { NullElement } from \"./NullElement\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type MenuButtonProps = {\n /**\n * The ARIA label for the Button\n */\n ariaLabel?: string;\n /**\n * The ID of the element that labels the Button\n */\n ariaLabelledBy?: string;\n /**\n * The ID of the element that describes the Button\n */\n ariaDescribedBy?: string;\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 <MenuItem> components within the Menu.\n */\n children: Array<\n ReactElement
|
|
1
|
+
{"version":3,"file":"MenuButton.js","names":["Button","useUniqueId","ChevronDownIcon","MoreIcon","memo","useCallback","useMemo","useState","MenuContext","jsx","_jsx","jsxs","_jsxs","MenuButton","_ref","ariaLabel","ariaLabelledBy","ariaDescribedBy","buttonLabel","buttonVariant","children","endIcon","endIconProp","id","idOverride","isOverflow","size","testId","tooltipText","anchorEl","setAnchorEl","isOpen","Boolean","closeMenu","openMenu","event","currentTarget","uniqueId","menuListProps","providerValue","undefined","label","onClick","variant","_Menu","MenuListProps","onClose","open","Provider","value","MemoizedMenuButton","displayName"],"sources":["../src/MenuButton.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 Button,\n buttonSizeValues,\n buttonVariantValues,\n MenuItem,\n useUniqueId,\n} from \"./\";\nimport { Divider, ListSubheader, Menu } from \"@mui/material\";\nimport { ChevronDownIcon, MoreIcon } from \"./icons.generated\";\nimport { memo, type ReactElement, useCallback, useMemo, useState } from \"react\";\n\nimport { MenuContext, MenuContextType } from \"./MenuContext\";\nimport { NullElement } from \"./NullElement\";\nimport type { SeleniumProps } from \"./SeleniumProps\";\n\nexport type MenuButtonProps = {\n /**\n * The ARIA label for the Button\n */\n ariaLabel?: string;\n /**\n * The ID of the element that labels the Button\n */\n ariaLabelledBy?: string;\n /**\n * The ID of the element that describes the Button\n */\n ariaDescribedBy?: string;\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 <MenuItem> components within the Menu.\n */\n children: Array<\n | ReactElement<typeof MenuItem | typeof Divider | typeof ListSubheader>\n | NullElement\n >;\n /**\n * The end Icon on the trigggering Button\n */\n endIcon?: ReactElement;\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 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 ariaLabel?: string;\n ariaLabelledBy?: string;\n buttonLabel: string;\n }\n | {\n ariaLabel: string;\n ariaLabelledBy?: string;\n buttonLabel?: undefined | \"\";\n }\n | {\n ariaLabel?: string;\n ariaLabelledBy: string;\n buttonLabel?: undefined | \"\";\n }\n) &\n SeleniumProps;\n\nconst MenuButton = ({\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n buttonLabel = \"\",\n buttonVariant = \"secondary\",\n children,\n endIcon: endIconProp,\n id: idOverride,\n isOverflow,\n size,\n testId,\n tooltipText,\n}: MenuButtonProps) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const isOpen = Boolean(anchorEl);\n\n const closeMenu = useCallback<MenuContextType[\"closeMenu\"]>(() => {\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 }),\n [closeMenu, openMenu]\n );\n\n const endIcon = endIconProp ? (\n endIconProp\n ) : isOverflow ? (\n <MoreIcon />\n ) : (\n <ChevronDownIcon />\n );\n\n return (\n <div>\n <Button\n aria-controls={isOpen ? `${uniqueId}-menu` : undefined}\n aria-expanded={isOpen ? \"true\" : undefined}\n aria-haspopup=\"true\"\n ariaDescribedBy={ariaDescribedBy}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n data-se={testId}\n endIcon={endIcon}\n id={`${uniqueId}-button`}\n label={buttonLabel}\n onClick={openMenu}\n size={size}\n tooltipText={tooltipText}\n variant={buttonVariant}\n />\n\n <Menu\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 </Menu>\n </div>\n );\n};\n\nconst MemoizedMenuButton = memo(MenuButton);\nMemoizedMenuButton.displayName = \"MenuButton\";\n\nexport { MemoizedMenuButton as MenuButton };\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
|
|
15
|
-
import {
|
|
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((
|
|
27
|
-
setTabState(
|
|
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":["
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export { useOdysseyDesignTokens } from "./OdysseyDesignTokensContext.js";
|
|
|
16
16
|
export * from "./Autocomplete.js";
|
|
17
17
|
export * from "./Banner.js";
|
|
18
18
|
export * from "./Box.js";
|
|
19
|
+
export * from "./Breadcrumbs.js";
|
|
19
20
|
export * from "./Button.js";
|
|
20
21
|
export * from "./Callout.js";
|
|
21
22
|
export * from "./Checkbox.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["deepmerge","visuallyHidden","createTheme","CssBaseline","DialogContentText","Divider","InputAdornment","InputBase","ListItemIcon","ListItemText","ListSubheader","MenuList","Paper","ScopedCssBaseline","ThemeProvider","useOdysseyDesignTokens","odysseyTranslate"],"sources":["../src/index.ts"],"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\nexport { deepmerge, visuallyHidden } from \"@mui/utils\";\n\nexport {\n createTheme,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n CssBaseline,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n DialogContentText,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n Divider,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n InputAdornment,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n InputBase,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListItemIcon,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListItemText,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListSubheader,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n MenuList,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n Paper,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ScopedCssBaseline,\n ThemeProvider,\n} from \"@mui/material\";\n\nexport type {\n CssBaselineProps,\n DialogContentTextProps,\n DividerProps,\n InputAdornmentProps,\n InputBaseProps,\n ListItemIconProps,\n ListItemTextProps,\n ListSubheaderProps,\n MenuListProps,\n PaperProps,\n ScopedCssBaselineProps,\n ThemeOptions,\n} from \"@mui/material\";\n\nexport { useOdysseyDesignTokens } from \"./OdysseyDesignTokensContext\";\n\nexport * from \"./Autocomplete\";\nexport * from \"./Banner\";\nexport * from \"./Box\";\nexport * from \"./Button\";\nexport * from \"./Callout\";\nexport * from \"./Checkbox\";\nexport * from \"./CheckboxGroup\";\nexport * from \"./CircularProgress\";\nexport * from \"./createUniqueId\";\nexport * from \"./Dialog\";\nexport * from \"./Fieldset\";\nexport * from \"./Form\";\nexport * from \"./Link\";\nexport * from \"./MenuButton\";\nexport * from \"./MenuItem\";\nexport * from \"./NativeSelect\";\nexport * from \"./NullElement\";\nexport * from \"./OdysseyCacheProvider\";\nexport { odysseyTranslate } from \"./i18n\";\nexport * from \"./OdysseyProvider\";\nexport * from \"./OdysseyThemeProvider\";\nexport * from \"./OdysseyTranslationProvider\";\nexport * from \"./PasswordField\";\nexport * from \"./Radio\";\nexport * from \"./RadioGroup\";\nexport * from \"./ScreenReaderText\";\nexport * from \"./SearchField\";\nexport * from \"./Select\";\nexport * from \"./Status\";\nexport * from \"./Tabs\";\nexport * from \"./Tag\";\nexport * from \"./TagList\";\nexport * from \"./TextField\";\nexport * from \"./theme\";\nexport * from \"./Toast\";\nexport * from \"./ToastStack\";\nexport * from \"./Tooltip\";\nexport * from \"./Typography\";\nexport * from \"./useUniqueId\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,SAAS,EAAEC,cAAc,QAAQ,YAAY;AAEtD,SACEC,WAAW,EAEXC,WAAW,EAEXC,iBAAiB,EAEjBC,OAAO,EAEPC,cAAc,EAEdC,SAAS,EAETC,YAAY,EAEZC,YAAY,EAEZC,aAAa,EAEbC,QAAQ,EAERC,KAAK,EAELC,iBAAiB,EACjBC,aAAa,QACR,eAAe;AAAC,SAiBdC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["deepmerge","visuallyHidden","createTheme","CssBaseline","DialogContentText","Divider","InputAdornment","InputBase","ListItemIcon","ListItemText","ListSubheader","MenuList","Paper","ScopedCssBaseline","ThemeProvider","useOdysseyDesignTokens","odysseyTranslate"],"sources":["../src/index.ts"],"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\nexport { deepmerge, visuallyHidden } from \"@mui/utils\";\n\nexport {\n createTheme,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n CssBaseline,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n DialogContentText,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n Divider,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n InputAdornment,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n InputBase,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListItemIcon,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListItemText,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ListSubheader,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n MenuList,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n Paper,\n /** @deprecated Will be removed in a future Odyssey version in lieu of a wrapped version. */\n ScopedCssBaseline,\n ThemeProvider,\n} from \"@mui/material\";\n\nexport type {\n CssBaselineProps,\n DialogContentTextProps,\n DividerProps,\n InputAdornmentProps,\n InputBaseProps,\n ListItemIconProps,\n ListItemTextProps,\n ListSubheaderProps,\n MenuListProps,\n PaperProps,\n ScopedCssBaselineProps,\n ThemeOptions,\n} from \"@mui/material\";\n\nexport { useOdysseyDesignTokens } from \"./OdysseyDesignTokensContext\";\n\nexport * from \"./Autocomplete\";\nexport * from \"./Banner\";\nexport * from \"./Box\";\nexport * from \"./Breadcrumbs\";\nexport * from \"./Button\";\nexport * from \"./Callout\";\nexport * from \"./Checkbox\";\nexport * from \"./CheckboxGroup\";\nexport * from \"./CircularProgress\";\nexport * from \"./createUniqueId\";\nexport * from \"./Dialog\";\nexport * from \"./Fieldset\";\nexport * from \"./Form\";\nexport * from \"./Link\";\nexport * from \"./MenuButton\";\nexport * from \"./MenuItem\";\nexport * from \"./NativeSelect\";\nexport * from \"./NullElement\";\nexport * from \"./OdysseyCacheProvider\";\nexport { odysseyTranslate } from \"./i18n\";\nexport * from \"./OdysseyProvider\";\nexport * from \"./OdysseyThemeProvider\";\nexport * from \"./OdysseyTranslationProvider\";\nexport * from \"./PasswordField\";\nexport * from \"./Radio\";\nexport * from \"./RadioGroup\";\nexport * from \"./ScreenReaderText\";\nexport * from \"./SearchField\";\nexport * from \"./Select\";\nexport * from \"./Status\";\nexport * from \"./Tabs\";\nexport * from \"./Tag\";\nexport * from \"./TagList\";\nexport * from \"./TextField\";\nexport * from \"./theme\";\nexport * from \"./Toast\";\nexport * from \"./ToastStack\";\nexport * from \"./Tooltip\";\nexport * from \"./Typography\";\nexport * from \"./useUniqueId\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,SAAS,EAAEC,cAAc,QAAQ,YAAY;AAEtD,SACEC,WAAW,EAEXC,WAAW,EAEXC,iBAAiB,EAEjBC,OAAO,EAEPC,cAAc,EAEdC,SAAS,EAETC,YAAY,EAEZC,YAAY,EAEZC,aAAa,EAEbC,QAAQ,EAERC,KAAK,EAELC,iBAAiB,EACjBC,aAAa,QACR,eAAe;AAAC,SAiBdC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAqBtBC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import _Autocomplete from "@mui/material/Autocomplete";
|
|
2
|
+
import _InputBase from "@mui/material/InputBase";
|
|
3
|
+
import _Box from "@mui/material/Box";
|
|
4
|
+
import _Avatar from "@mui/material/Avatar";
|
|
5
|
+
/*!
|
|
6
|
+
* Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
7
|
+
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
8
|
+
*
|
|
9
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
*
|
|
14
|
+
* See the License for the specific language governing permissions and limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { avatarClasses } from "@mui/material/Avatar";
|
|
17
|
+
import { memo, useCallback } from "react";
|
|
18
|
+
import { Field } from "../Field.js";
|
|
19
|
+
import { Subordinate } from "../Typography.js";
|
|
20
|
+
import { Tag } from "../Tag.js";
|
|
21
|
+
import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
|
|
22
|
+
import { UserIcon, GridIcon, GroupIcon } from "../icons.generated/index.js";
|
|
23
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
import { createElement as _createElement } from "react";
|
|
26
|
+
const avatarImageSizeSmall = 16;
|
|
27
|
+
const avatarImageSizeMedium = 24;
|
|
28
|
+
const GroupPicker = _ref => {
|
|
29
|
+
let {
|
|
30
|
+
hasMultipleChoices,
|
|
31
|
+
isCustomValueAllowed,
|
|
32
|
+
isDisabled,
|
|
33
|
+
isLoading,
|
|
34
|
+
isOptional = false,
|
|
35
|
+
isReadOnly,
|
|
36
|
+
hint,
|
|
37
|
+
label,
|
|
38
|
+
onChange,
|
|
39
|
+
onInputChange,
|
|
40
|
+
options,
|
|
41
|
+
value,
|
|
42
|
+
testId
|
|
43
|
+
} = _ref;
|
|
44
|
+
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
45
|
+
const isOptionEqualToValue = useCallback((sourceValue, targetValue) => {
|
|
46
|
+
return sourceValue.id === targetValue.id;
|
|
47
|
+
}, []);
|
|
48
|
+
const getOptionLabel = useCallback(option => {
|
|
49
|
+
return option.name;
|
|
50
|
+
}, []);
|
|
51
|
+
const renderOption = useCallback((props, option) => {
|
|
52
|
+
return _createElement("li", {
|
|
53
|
+
...props,
|
|
54
|
+
key: option.id
|
|
55
|
+
}, _jsxs(_Box, {
|
|
56
|
+
sx: {
|
|
57
|
+
alignItems: "top",
|
|
58
|
+
display: "flex",
|
|
59
|
+
flexDirection: "row"
|
|
60
|
+
},
|
|
61
|
+
children: [_jsx(_Box, {
|
|
62
|
+
sx: {
|
|
63
|
+
paddingRight: odysseyDesignTokens.Spacing2
|
|
64
|
+
},
|
|
65
|
+
children: _jsx(_Avatar, {
|
|
66
|
+
alt: option.name,
|
|
67
|
+
src: option.logo,
|
|
68
|
+
sx: {
|
|
69
|
+
[`.${avatarClasses.fallback}`]: {
|
|
70
|
+
visibility: "hidden"
|
|
71
|
+
},
|
|
72
|
+
background: "transparent",
|
|
73
|
+
height: avatarImageSizeMedium,
|
|
74
|
+
width: avatarImageSizeMedium
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
}), _jsxs(_Box, {
|
|
78
|
+
children: [option.name, _jsx(Subordinate, {
|
|
79
|
+
children: option.description
|
|
80
|
+
}), _jsxs(_Box, {
|
|
81
|
+
sx: {
|
|
82
|
+
display: "flex",
|
|
83
|
+
flexDirection: "row",
|
|
84
|
+
paddingTop: odysseyDesignTokens.Spacing1
|
|
85
|
+
},
|
|
86
|
+
children: [typeof option.usersCount === "number" && _jsxs(_Box, {
|
|
87
|
+
sx: {
|
|
88
|
+
display: "flex",
|
|
89
|
+
flexDirection: "row",
|
|
90
|
+
paddingRight: odysseyDesignTokens.Spacing4
|
|
91
|
+
},
|
|
92
|
+
children: [_jsx(UserIcon, {}), option.usersCount]
|
|
93
|
+
}), typeof option.appsCount === "number" && _jsxs(_Box, {
|
|
94
|
+
sx: {
|
|
95
|
+
display: "flex",
|
|
96
|
+
flexDirection: "row",
|
|
97
|
+
paddingRight: odysseyDesignTokens.Spacing4
|
|
98
|
+
},
|
|
99
|
+
children: [_jsx(GridIcon, {}), option.appsCount]
|
|
100
|
+
}), typeof option.groupPushMappingsCount === "number" && _jsxs(_Box, {
|
|
101
|
+
sx: {
|
|
102
|
+
display: "flex",
|
|
103
|
+
flexDirection: "row"
|
|
104
|
+
},
|
|
105
|
+
children: [_jsx(GroupIcon, {}), option.groupPushMappingsCount]
|
|
106
|
+
})]
|
|
107
|
+
})]
|
|
108
|
+
})]
|
|
109
|
+
}));
|
|
110
|
+
}, [odysseyDesignTokens]);
|
|
111
|
+
const renderTags = useCallback((values, getTagProps) => values.map((option, index) => {
|
|
112
|
+
const {
|
|
113
|
+
key,
|
|
114
|
+
onDelete
|
|
115
|
+
} = getTagProps({
|
|
116
|
+
index
|
|
117
|
+
});
|
|
118
|
+
return _jsx(_Box, {
|
|
119
|
+
sx: {
|
|
120
|
+
margin: odysseyDesignTokens.Spacing1
|
|
121
|
+
},
|
|
122
|
+
children: _jsx(Tag, {
|
|
123
|
+
icon: _jsx(_Avatar, {
|
|
124
|
+
alt: option.name,
|
|
125
|
+
src: option.logo,
|
|
126
|
+
sx: {
|
|
127
|
+
[`.${avatarClasses.fallback}`]: {
|
|
128
|
+
visibility: "hidden"
|
|
129
|
+
},
|
|
130
|
+
background: "transparent",
|
|
131
|
+
height: avatarImageSizeSmall,
|
|
132
|
+
width: avatarImageSizeSmall
|
|
133
|
+
}
|
|
134
|
+
}),
|
|
135
|
+
label: option.name,
|
|
136
|
+
onRemove: onDelete
|
|
137
|
+
})
|
|
138
|
+
}, key);
|
|
139
|
+
}), [odysseyDesignTokens]);
|
|
140
|
+
const renderInput = useCallback(_ref2 => {
|
|
141
|
+
let {
|
|
142
|
+
InputLabelProps,
|
|
143
|
+
InputProps,
|
|
144
|
+
...params
|
|
145
|
+
} = _ref2;
|
|
146
|
+
return _jsx(Field, {
|
|
147
|
+
fieldType: "single",
|
|
148
|
+
hasVisibleLabel: true,
|
|
149
|
+
id: InputLabelProps.htmlFor,
|
|
150
|
+
hint: hint,
|
|
151
|
+
label: label,
|
|
152
|
+
isOptional: isOptional,
|
|
153
|
+
renderFieldComponent: _ref3 => {
|
|
154
|
+
let {
|
|
155
|
+
ariaDescribedBy,
|
|
156
|
+
id
|
|
157
|
+
} = _ref3;
|
|
158
|
+
return _jsx(_InputBase, {
|
|
159
|
+
...params,
|
|
160
|
+
...InputProps,
|
|
161
|
+
"aria-describedby": ariaDescribedBy,
|
|
162
|
+
id: id,
|
|
163
|
+
required: !isOptional
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}, [hint, isOptional, label]);
|
|
168
|
+
return _jsx(_Autocomplete, {
|
|
169
|
+
"aria-disabled": isDisabled,
|
|
170
|
+
"data-se": testId,
|
|
171
|
+
disabled: isDisabled,
|
|
172
|
+
filterSelectedOptions: true,
|
|
173
|
+
freeSolo: isCustomValueAllowed,
|
|
174
|
+
getOptionLabel: getOptionLabel,
|
|
175
|
+
isOptionEqualToValue: isOptionEqualToValue,
|
|
176
|
+
loading: isLoading,
|
|
177
|
+
multiple: hasMultipleChoices,
|
|
178
|
+
onChange: onChange,
|
|
179
|
+
onInputChange: onInputChange,
|
|
180
|
+
options: options,
|
|
181
|
+
readOnly: isReadOnly,
|
|
182
|
+
renderInput: renderInput,
|
|
183
|
+
renderOption: renderOption,
|
|
184
|
+
renderTags: renderTags,
|
|
185
|
+
value: value
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
const MemoizedGroupPicker = memo(GroupPicker);
|
|
189
|
+
export { MemoizedGroupPicker as GroupPicker };
|
|
190
|
+
//# sourceMappingURL=GroupPicker.js.map
|