@equinor/amplify-component-lib 9.9.2 → 9.10.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.
@@ -1 +1 @@
1
- import{useState as e,useRef as n,useMemo as r,useEffect as t}from"react";import{flattenOptions as l}from"../../molecules/Select/Select.utils.js";const u=u=>{const{loading:a,disabled:c,sortValues:o,onSearchChange:d,onOpenCallback:s}=u,[v,i]=e(!1),[h,m]=e(""),f=n(null),g=n([]),p=n(-1),[y,S]=e(void 0),k=n(!1),I=n(0),A=r((()=>{let e,n=[];return"values"in u?n=u.values:u.value&&(n=[u.value]),o?(e="groups"in u&&u.groups?u.groups.flatMap((e=>e.items)):u.items.flatMap((e=>[{...e},...e.children||[]])),n.sort(((n,r)=>e.findIndex((e=>e.value===n.value))-e.findIndex((e=>e.value===r.value))))):n}),[u,o]);t((()=>{void 0!==s&&s(v)}),[s,v]),t((()=>{k.current&&I.current!==A.length&&(I.current=A.length,k.current=!1,f.current?.focus())}),[A.length]);const O=()=>{v||c||a||(f.current?.focus(),i(!0))},w=()=>{i(!1),m(""),p.current=0},C=e=>{!("values"in u)||a||c||u.onSelect(u.values.filter((n=>n.value!==e.value)),e)};return{handleOnAddItem:()=>{"onAddItem"in u&&u.onAddItem&&(u.onAddItem(h),m(""))},handleOnItemSelect:e=>{"value"in u?u.value?.value===e.value?u.onSelect(void 0):u.onSelect(e):u.onSelect(((e,n)=>{const r=structuredClone(e);return r.some((e=>e.value===n.value))?r.filter((e=>e.value!==n.value)):"values"in u&&void 0!==u.syncParentChildSelection&&!u.syncParentChildSelection?[n,...r]:[n,...r.filter((e=>(!(void 0===n.children||n.children.length>0)||!l([n]).some((n=>n.value===e.value)))&&(void 0===e.children||0===e.children.length||l([e]).every((e=>e.value!==n.value)))))]})(u.values,e),e),""!==h&&m(""),k.current=!0},handleOnItemKeyDown:e=>{"ArrowDown"===e.key&&p.current<g.current.length-1?(p.current+=1,g.current.at(p.current)?.focus()):"ArrowUp"===e.key&&p.current>0?(p.current-=1,g.current.at(p.current)?.focus()):"ArrowUp"===e.key&&0===p.current&&(p.current=-1,f.current?.focus())},handleOnSearchKeyDown:e=>{"Enter"===e.key&&""!==h&&"onAddItem"in u&&u.onAddItem?(e.preventDefault(),u.onAddItem(h),m("")):"Space"===e.key||"Enter"===e.key?O():"Escape"===e.key?(f.current?.blur(),w()):"ArrowDown"!==e.key&&"ArrowUp"!==e.key||!g.current.at(0)?"Backspace"===e.key&&void 0===y&&"values"in u&&""===h?(S(A?.at(-1)),setTimeout((()=>{f.current?.focus()}))):"Backspace"===e.key&&y&&(C(y),S(void 0)):(g.current[0]?.focus(),p.current=0)},handleOnClear:()=>{"value"in u?u.onSelect(void 0):u.onSelect([])},handleOnSearchChange:e=>{" "===e.target.value||a||c||(m(e.target.value),d?.(e.target.value),v||i(!0),A.length>0&&""!==e.target.value&&setTimeout((()=>{f.current?.focus()})))},handleToggleOpen:()=>{c||a||(v?w():O())},handleOnClose:w,handleOnOpen:O,handleOnRemoveItem:C,search:h,searchRef:f,itemRefs:g,selectedValues:A,open:v,tryingToRemoveItem:y}};export{u as useSelect};
1
+ import{useState as e,useRef as n,useMemo as r,useEffect as t}from"react";import{flattenOptions as l}from"../../molecules/Select/Select.utils.js";const u=u=>{const{loading:a,disabled:c,sortValues:o,onSearchChange:d,onOpenCallback:s}=u,[v,i]=e(!1),[h,m]=e(""),f=n(null),p=n([]),g=n(-1),[y,S]=e(void 0),k=n(!1),I=n(0),A=r((()=>{let e,n=[];return"values"in u?n=u.values:u.value&&(n=[u.value]),o?(e="groups"in u&&u.groups?u.groups.flatMap((e=>e.items)):u.items.flatMap((e=>[{...e},...e.children||[]])),n.sort(((n,r)=>e.findIndex((e=>e.value===n.value))-e.findIndex((e=>e.value===r.value))))):n}),[u,o]);t((()=>{void 0!==s&&s(v)}),[s,v]),t((()=>{k.current&&I.current!==A.length&&(I.current=A.length,k.current=!1,f.current?.focus())}),[A.length]);const O=()=>{v||c||a||(f.current?.focus(),i(!0))},w=()=>{i(!1),m(""),g.current=0},C=e=>{!("values"in u)||a||c||u.onSelect(u.values.filter((n=>n.value!==e.value)),e)};return{handleOnAddItem:()=>{"onAddItem"in u&&u.onAddItem&&(u.onAddItem(h),m(""))},handleOnItemSelect:e=>{"value"in u?u.value?.value===e.value?u.onSelect(void 0):u.onSelect(e):u.onSelect(((e,n)=>{const r=structuredClone(e);return r.some((e=>e.value===n.value))?r.filter((e=>e.value!==n.value)):"values"in u&&void 0!==u.syncParentChildSelection&&!u.syncParentChildSelection?[n,...r]:[n,...r.filter((e=>(!(void 0===n.children||n.children.length>0)||!l([n]).some((n=>n.value===e.value)))&&(void 0===e.children||0===e.children.length||l([e]).every((e=>e.value!==n.value)))))]})(u.values,e),e),""!==h&&m(""),k.current=!0},handleOnItemKeyDown:e=>{"ArrowDown"===e.key&&g.current<p.current.length-1?(g.current+=1,p.current.at(g.current)?.focus()):"ArrowUp"===e.key&&g.current>0?(g.current-=1,p.current.at(g.current)?.focus()):"ArrowUp"===e.key&&0===g.current&&(g.current=-1,f.current?.focus())},handleOnSearchKeyDown:e=>{"Enter"===e.key&&""!==h&&"onAddItem"in u&&u.onAddItem?(e.preventDefault(),u.onAddItem(h),m("")):"Space"===e.key||"Enter"===e.key?O():"Escape"===e.key?(f.current?.blur(),w()):"ArrowDown"!==e.key&&"ArrowUp"!==e.key||!p.current.at(0)?"Backspace"===e.key&&void 0===y&&"values"in u&&""===h?(S(A?.at(-1)),setTimeout((()=>{f.current?.focus()}))):"Backspace"===e.key&&y&&(C(y),S(void 0),setTimeout((()=>{f.current?.focus()}))):(p.current[0]?.focus(),g.current=0)},handleOnClear:()=>{"value"in u?u.onSelect(void 0):u.onSelect([])},handleOnSearchChange:e=>{" "===e.target.value||a||c||(m(e.target.value),d?.(e.target.value),v||i(!0))},handleToggleOpen:()=>{c||a||(v?w():O())},handleOnClose:w,handleOnOpen:O,handleOnRemoveItem:C,search:h,searchRef:f,itemRefs:p,selectedValues:A,open:v,tryingToRemoveItem:y}};export{u as useSelect};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{AuthProvider,useAuth}from"./providers/AuthProvider/AuthProvider.js";export{SideBarProvider,useSideBar}from"./providers/SideBarProvider.js";export{SnackbarProvider,useSnackbar}from"./providers/SnackbarProvider/SnackbarProvider.js";export{TableOfContentsProvider,useTableOfContents}from"./providers/TableOfContentsProvider.js";export{ReleaseNotesProvider,useReleaseNotes}from"./providers/ReleaseNotesProvider.js";export{TutorialHighlightingProvider}from"./providers/TutorialHighlightingProvider/TutorialHighlightingProvider.js";export{LoadingProvider}from"./providers/LoadingProvider.js";export{ThemeProvider,useThemeProvider}from"./providers/ThemeProvider/ThemeProvider.js";export{StepperProvider,useStepper}from"./providers/StepperProvider.js";export{style}from"./atoms/index.js";export{AnimatedCheckmark}from"./molecules/AnimatedCheckmark/AnimatedCheckmark.js";export{ApplicationIcon}from"./molecules/ApplicationIcon/ApplicationIcon.js";export{Badge}from"./molecules/Badge/Badge.js";export{Banner}from"./molecules/Banner/Banner.js";export{Button}from"./molecules/Button/Button.js";export{Chip}from"./molecules/Chip/Chip.js";export{ContentMenu}from"./molecules/ContentMenu/ContentMenu.js";export{DatePicker}from"./molecules/DatePicker/DatePicker.js";export{Dialog}from"./molecules/Dialog/Dialog.js";export{EquinorLogo}from"./molecules/EquinorLogo/EquinorLogo.js";export{FileProgress}from"./molecules/FileProgress/FileProgress.js";export{FileUploadArea}from"./molecules/FileUploadArea/FileUploadArea.js";export{FullPageSpinner}from"./molecules/FullPageSpinner/FullPageSpinner.js";export{InfoElement}from"./molecules/InfoElement/InfoElement.js";export{OptionalTooltip}from"./molecules/OptionalTooltip/OptionalTooltip.js";export{ProfileAvatar}from"./molecules/ProfileAvatar/ProfileAvatar.js";export{RichTextDisplay}from"./molecules/RichTextDisplay/RichTextDisplay.js";export{RichText}from"./molecules/RichTextEditor/index.js";export{AmplifyBar,EditorMenu,EditorText}from"./molecules/RichTextEditor/MenuBar/MenuBar.js";export{AmplifyKit}from"./molecules/RichTextEditor/custom-extensions/AmplifyKit.js";export{Tabs}from"./molecules/Tabs/Tabs.js";export{TableMenuBar,TextTable}from"./molecules/RichTextEditor/MenuBar/Table/TableBar.js";export{DEFAULT_FEATURES,RichTextEditorFeatures}from"./molecules/RichTextEditor/RichTextEditor.types.js";export{Search}from"./molecules/Search/Search.js";export{Sieve}from"./molecules/Sieve/Sieve.js";export{SingleFilterMenu}from"./molecules/SingleFilterMenu/SingleFilterMenu.js";export{SkeletonBase,skeletonBaseloading}from"./molecules/Skeleton/SkeletonBase/SkeletonBase.js";export{SkeletonGradient}from"./molecules/Skeleton/SkeletonGradient/SkeletonGradient.js";export{Stepper}from"./molecules/Stepper/Stepper.js";export{OptionDrawer}from"./molecules/OptionDrawer/OptionDrawer.js";export{ComboBox}from"./molecules/Select/ComboBox/ComboBox.js";export{ComboBoxChip}from"./molecules/Select/Select.styles.js";export{SingleSelect}from"./molecules/Select/SingleSelect/SingleSelect.js";export{PageWithTitle}from"./molecules/PageWithTitle/PageWithTitle.js";export{FeedBackIcon}from"./molecules/FeedBackIcon/FeedBackIcon.js";export{ListItem}from"./molecules/ListItem/ListItem.js";export{Checkbox}from"./molecules/SelectionControls/Checkbox/Checkbox.js";export{Radio}from"./molecules/SelectionControls/Radio/Radio.js";export{Switch}from"./molecules/SelectionControls/Switch/Switch.js";export{Waves}from"./molecules/Waves/Waves.js";export{Accordion,Breadcrumbs,Card,CircularProgress,DateRangePicker,Divider,DotProgress,Dialog as EDSDialog,Icon,LinearProgress,Menu,TextField,Typography}from"@equinor/eds-core-react";export{DataGrid}from"./organisms/DataGrid/DataGrid.js";export{FieldSelector}from"./organisms/FieldSelector/FieldSelector.js";export{Filter}from"./organisms/Filter/index.js";export{SideBar}from"./organisms/SideBar/index.js";export{TopBar}from"./organisms/TopBar/index.js";export{Status}from"./organisms/Status/index.js";export{BadRequest}from"./organisms/Status/collections/BadRequest.js";export{GenericError}from"./organisms/Status/collections/GenericError.js";export{MissingAccessToApp}from"./organisms/Status/collections/MissingAccessToApp.js";export{MissingPermissions}from"./organisms/Status/collections/MissingPermissions.js";export{PageNotFound}from"./organisms/Status/collections/PageNotFound.js";export{ServerError}from"./organisms/Status/collections/ServerError.js";export{ApiResponseError}from"./organisms/Status/collections/ApiResponseError.js";export{TableOfContents}from"./organisms/TableOfContents/TableOfContents.js";export{Template}from"./organisms/Template/Template.js";export{PageTitle}from"./organisms/PageTitle/PageTitle.js";export{ReleaseNote}from"./organisms/ReleaseNote/ReleaseNote.js";export{ToggleGroup}from"./organisms/ToggleGroup/index.js";export{Faq}from"./organisms/Faq/Faq.js";export{ExpandingIconButton}from"./deprecated/ExpandingIconButton/ExpandingIconButton.js";export{default as IconToggleButton}from"./deprecated/IconToggleButton.js";export{OldStepper}from"./deprecated/OldStepper/OldStepper.js";export{useAmplifyKit}from"./atoms/hooks/useAmplifyKit.js";export{useDebounce}from"./atoms/hooks/useDebounce.js";export{useFakeProgress}from"./atoms/hooks/useFakeProgress.js";export{useLocalStorage}from"./atoms/hooks/useLocalStorage.js";export{usePrevious}from"./atoms/hooks/usePrevious.js";export{useSelect}from"./atoms/hooks/useSelect.js";export{useOnScreenMultiple}from"./atoms/hooks/useOnScreenMultiple.js";export{useNotification}from"./organisms/TopBar/Notifications/NotificationProvider.js";export{useSearchParameter}from"./atoms/hooks/useSearchParameter.js";export{usePrefetchRichTextImages}from"./atoms/hooks/usePrefetchRichTextImages.js";export{useFaqsInApplication}from"./atoms/hooks/useFaqsInApplication.js";export{spacings}from"./atoms/style/spacings.js";export{colors}from"./atoms/style/colors.js";export{animation}from"./atoms/style/animation.js";export{elevation,shape,typography}from"./atoms/style/index.js";export{ErrorType}from"./atoms/enums/Errors.js";export{EnvironmentType}from"./atoms/enums/Environment.js";export{Theme}from"./atoms/enums/Theme.js";export{SpacingsMode}from"./atoms/enums/SpacingsMode.js";export{amplify_failure,amplify_lwd,amplify_success,amplify_wellbore,amplify_wireline,amplify_wireline_cased_hole,amplify_wireline_open_hole}from"./atoms/icons/drilling.js";export{amplify_calculator,amplify_overlay,amplify_sidebyside}from"./atoms/icons/map.js";export{amplify_aml,amplify_arrow_up_down,amplify_branch,amplify_info_small,amplify_merged,amplify_overview,amplify_resources,amplify_sharepoint,amplify_shield_person,amplify_small_portal,amplify_snail,amplify_sort_small,amplify_tutorials}from"./atoms/icons/other.js";export{amplify_h1,amplify_h2,amplify_h3,amplify_h4,amplify_table_add_column_left,amplify_table_add_column_right,amplify_table_add_row_above,amplify_table_add_row_below,amplify_table_column_heading,amplify_table_merge_cells,amplify_table_remove_column,amplify_table_remove_row,amplify_table_row_heading,amplify_table_split_cell}from"./atoms/icons/wysiwyg.js";export{auth,environment}from"./atoms/utils/auth_environment.js";export{formatLatLng,formatUtm}from"./atoms/utils/coordinate.js";export{formatDate,formatDateTime,formatRelativeDateTime,isBetweenDates}from"./atoms/utils/date.js";export{exportComponent}from"./atoms/utils/export.js";export{setupIcons}from"./atoms/utils/favicon.js";export{convertLatLngToUtm,convertUtmToLatLng,degrees2radians,distanceLatLng,utmProjection}from"./atoms/utils/map.js";export{defaultQueryOptions}from"./atoms/utils/reactquery.js";export{IMG_WITH_ALT,IMG_WITH_SRC_AND_ALT,cleanRichTextValue,extractImageUrls,getFeatures,getImagesFromRichText,imageToB64}from"./atoms/utils/richtext.js";export{formatBytes,formatDataSize,formatKiloBytes}from"./atoms/utils/size.js";export{sortByDate,sortByWellboreName}from"./atoms/utils/sort.js";export{Empty,capitalize}from"./atoms/utils/string.js";export{isValidUrl}from"./atoms/utils/url.js";export{getHighlightElementBoundingBox,highlightTutorialElementID}from"./atoms/utils/tutorials.js";export{getVariantIcon}from"./atoms/utils/forms.js";export{RichTextEditor}from"./molecules/RichTextEditor/RichTextEditor.js";
1
+ export{AuthProvider,useAuth}from"./providers/AuthProvider/AuthProvider.js";export{SideBarProvider,useSideBar}from"./providers/SideBarProvider.js";export{SnackbarProvider,useSnackbar}from"./providers/SnackbarProvider/SnackbarProvider.js";export{TableOfContentsProvider,useTableOfContents}from"./providers/TableOfContentsProvider.js";export{ReleaseNotesProvider,useReleaseNotes}from"./providers/ReleaseNotesProvider.js";export{TutorialHighlightingProvider}from"./providers/TutorialHighlightingProvider/TutorialHighlightingProvider.js";export{LoadingProvider}from"./providers/LoadingProvider.js";export{ThemeProvider,useThemeProvider}from"./providers/ThemeProvider/ThemeProvider.js";export{StepperProvider,useStepper}from"./providers/StepperProvider.js";export{style}from"./atoms/index.js";export{AnimatedCheckmark}from"./molecules/AnimatedCheckmark/AnimatedCheckmark.js";export{ApplicationIcon}from"./molecules/ApplicationIcon/ApplicationIcon.js";export{Badge}from"./molecules/Badge/Badge.js";export{Banner}from"./molecules/Banner/Banner.js";export{Button}from"./molecules/Button/Button.js";export{Chip}from"./molecules/Chip/Chip.js";export{ContentMenu}from"./molecules/ContentMenu/ContentMenu.js";export{DatePicker}from"./molecules/DatePicker/DatePicker.js";export{Dialog}from"./molecules/Dialog/Dialog.js";export{EquinorLogo}from"./molecules/EquinorLogo/EquinorLogo.js";export{FileProgress}from"./molecules/FileProgress/FileProgress.js";export{FileUploadArea}from"./molecules/FileUploadArea/FileUploadArea.js";export{FullPageSpinner}from"./molecules/FullPageSpinner/FullPageSpinner.js";export{InfoElement}from"./molecules/InfoElement/InfoElement.js";export{OptionalTooltip}from"./molecules/OptionalTooltip/OptionalTooltip.js";export{ProfileAvatar}from"./molecules/ProfileAvatar/ProfileAvatar.js";export{RichTextDisplay}from"./molecules/RichTextDisplay/RichTextDisplay.js";export{RichText}from"./molecules/RichTextEditor/index.js";export{AmplifyBar,EditorMenu,EditorText}from"./molecules/RichTextEditor/MenuBar/MenuBar.js";export{AmplifyKit}from"./molecules/RichTextEditor/custom-extensions/AmplifyKit.js";export{Tabs}from"./molecules/Tabs/Tabs.js";export{TableMenuBar,TextTable}from"./molecules/RichTextEditor/MenuBar/Table/TableBar.js";export{DEFAULT_FEATURES,RichTextEditorFeatures}from"./molecules/RichTextEditor/RichTextEditor.types.js";export{Search}from"./molecules/Search/Search.js";export{Sieve}from"./molecules/Sieve/Sieve.js";export{SingleFilterMenu}from"./molecules/SingleFilterMenu/SingleFilterMenu.js";export{SkeletonBase,skeletonBaseloading}from"./molecules/Skeleton/SkeletonBase/SkeletonBase.js";export{SkeletonGradient}from"./molecules/Skeleton/SkeletonGradient/SkeletonGradient.js";export{Stepper}from"./molecules/Stepper/Stepper.js";export{OptionDrawer}from"./molecules/OptionDrawer/OptionDrawer.js";export{ComboBox}from"./molecules/Select/ComboBox/ComboBox.js";export{ComboBoxChip}from"./molecules/Select/Select.styles.js";export{SingleSelect}from"./molecules/Select/SingleSelect/SingleSelect.js";export{FeedBackIcon}from"./molecules/FeedBackIcon/FeedBackIcon.js";export{ListItem}from"./molecules/ListItem/ListItem.js";export{Checkbox}from"./molecules/SelectionControls/Checkbox/Checkbox.js";export{Radio}from"./molecules/SelectionControls/Radio/Radio.js";export{Switch}from"./molecules/SelectionControls/Switch/Switch.js";export{Waves}from"./molecules/Waves/Waves.js";export{Accordion,Breadcrumbs,Card,CircularProgress,DateRangePicker,Divider,DotProgress,Dialog as EDSDialog,Icon,LinearProgress,Menu,TextField,Typography}from"@equinor/eds-core-react";export{DataGrid}from"./organisms/DataGrid/DataGrid.js";export{FieldSelector}from"./organisms/FieldSelector/FieldSelector.js";export{Filter}from"./organisms/Filter/index.js";export{SideBar}from"./organisms/SideBar/index.js";export{TopBar}from"./organisms/TopBar/index.js";export{Status}from"./organisms/Status/index.js";export{BadRequest}from"./organisms/Status/collections/BadRequest.js";export{GenericError}from"./organisms/Status/collections/GenericError.js";export{MissingAccessToApp}from"./organisms/Status/collections/MissingAccessToApp.js";export{MissingPermissions}from"./organisms/Status/collections/MissingPermissions.js";export{PageNotFound}from"./organisms/Status/collections/PageNotFound.js";export{ServerError}from"./organisms/Status/collections/ServerError.js";export{ApiResponseError}from"./organisms/Status/collections/ApiResponseError.js";export{TableOfContents}from"./organisms/TableOfContents/TableOfContents.js";export{Template}from"./organisms/Template/Template.js";export{PageTitle}from"./organisms/PageTitle/PageTitle.js";export{ReleaseNote}from"./organisms/ReleaseNote/ReleaseNote.js";export{ToggleGroup}from"./organisms/ToggleGroup/index.js";export{Faq}from"./organisms/Faq/Faq.js";export{ExpandingIconButton}from"./deprecated/ExpandingIconButton/ExpandingIconButton.js";export{default as IconToggleButton}from"./deprecated/IconToggleButton.js";export{OldStepper}from"./deprecated/OldStepper/OldStepper.js";export{useAmplifyKit}from"./atoms/hooks/useAmplifyKit.js";export{useDebounce}from"./atoms/hooks/useDebounce.js";export{useFakeProgress}from"./atoms/hooks/useFakeProgress.js";export{useLocalStorage}from"./atoms/hooks/useLocalStorage.js";export{usePrevious}from"./atoms/hooks/usePrevious.js";export{useSelect}from"./atoms/hooks/useSelect.js";export{useOnScreenMultiple}from"./atoms/hooks/useOnScreenMultiple.js";export{useNotification}from"./organisms/TopBar/Notifications/NotificationProvider.js";export{useSearchParameter}from"./atoms/hooks/useSearchParameter.js";export{usePrefetchRichTextImages}from"./atoms/hooks/usePrefetchRichTextImages.js";export{useFaqsInApplication}from"./atoms/hooks/useFaqsInApplication.js";export{spacings}from"./atoms/style/spacings.js";export{colors}from"./atoms/style/colors.js";export{animation}from"./atoms/style/animation.js";export{elevation,shape,typography}from"./atoms/style/index.js";export{ErrorType}from"./atoms/enums/Errors.js";export{EnvironmentType}from"./atoms/enums/Environment.js";export{Theme}from"./atoms/enums/Theme.js";export{SpacingsMode}from"./atoms/enums/SpacingsMode.js";export{amplify_failure,amplify_lwd,amplify_success,amplify_wellbore,amplify_wireline,amplify_wireline_cased_hole,amplify_wireline_open_hole}from"./atoms/icons/drilling.js";export{amplify_calculator,amplify_overlay,amplify_sidebyside}from"./atoms/icons/map.js";export{amplify_aml,amplify_arrow_up_down,amplify_branch,amplify_info_small,amplify_merged,amplify_overview,amplify_resources,amplify_sharepoint,amplify_shield_person,amplify_small_portal,amplify_snail,amplify_sort_small,amplify_tutorials}from"./atoms/icons/other.js";export{amplify_h1,amplify_h2,amplify_h3,amplify_h4,amplify_table_add_column_left,amplify_table_add_column_right,amplify_table_add_row_above,amplify_table_add_row_below,amplify_table_column_heading,amplify_table_merge_cells,amplify_table_remove_column,amplify_table_remove_row,amplify_table_row_heading,amplify_table_split_cell}from"./atoms/icons/wysiwyg.js";export{auth,environment}from"./atoms/utils/auth_environment.js";export{formatLatLng,formatUtm}from"./atoms/utils/coordinate.js";export{formatDate,formatDateTime,formatRelativeDateTime,isBetweenDates}from"./atoms/utils/date.js";export{exportComponent}from"./atoms/utils/export.js";export{setupIcons}from"./atoms/utils/favicon.js";export{convertLatLngToUtm,convertUtmToLatLng,degrees2radians,distanceLatLng,utmProjection}from"./atoms/utils/map.js";export{defaultQueryOptions}from"./atoms/utils/reactquery.js";export{IMG_WITH_ALT,IMG_WITH_SRC_AND_ALT,cleanRichTextValue,extractImageUrls,getFeatures,getImagesFromRichText,imageToB64}from"./atoms/utils/richtext.js";export{formatBytes,formatDataSize,formatKiloBytes}from"./atoms/utils/size.js";export{sortByDate,sortByWellboreName}from"./atoms/utils/sort.js";export{Empty,capitalize}from"./atoms/utils/string.js";export{isValidUrl}from"./atoms/utils/url.js";export{getHighlightElementBoundingBox,highlightTutorialElementID}from"./atoms/utils/tutorials.js";export{getVariantIcon}from"./atoms/utils/forms.js";export{RichTextEditor}from"./molecules/RichTextEditor/RichTextEditor.js";
@@ -13,5 +13,6 @@ export type GroupedComboBoxProps<T extends SelectOptionRequired> = CommonSelectP
13
13
  * @param addItemSingularWord - Word to use when adding a new item, default is "tag"
14
14
  * @param onSearchFilter - Custom filter function for search, default is "item.label.match(new RegExp(searchValue, 'i'))"
15
15
  * @param showSelectedAsText - If values should be shown as "5/10 Selected", defaults to false
16
+ * @param customMenuItemComponent - Custom component to use for rendering menu item, defaults to a checkbox with label
16
17
  */
17
18
  export declare function ComboBox<T extends SelectOptionRequired>(props: ListComboBoxProps<T> | GroupedComboBoxProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- import { GroupedSelectProps, MultiSelectCommon, SelectMenuProps, SelectOptionRequired, SingleSelectCommon } from './Select.types';
2
- export declare const GroupedSelectMenu: <T extends SelectOptionRequired>(props: GroupedSelectProps<T> & SelectMenuProps<T> & (MultiSelectCommon<T> | SingleSelectCommon<T>)) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
1
+ import { CustomMenuItemComponentProps, GroupedSelectProps, MultiSelectCommon, SelectMenuProps, SelectOptionRequired, SingleSelectCommon } from './Select.types';
2
+ export declare const GroupedSelectMenu: <T extends SelectOptionRequired>(props: GroupedSelectProps<T> & SelectMenuProps<T> & CustomMenuItemComponentProps<T> & (MultiSelectCommon<T> | SingleSelectCommon<T>)) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
@@ -1,2 +1,2 @@
1
- import { ListSelectMenuProps, ListSelectProps, MultiSelectCommon, SelectMenuProps, SelectOptionRequired, SingleSelectCommon } from './Select.types';
2
- export declare const ListSelectMenu: <T extends SelectOptionRequired>(props: Omit<ListSelectProps<T>, "onAddItem"> & ListSelectMenuProps & SelectMenuProps<T> & (Omit<MultiSelectCommon<T>, "syncParentChildSelection"> | SingleSelectCommon<T>)) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
1
+ import { CustomMenuItemComponentProps, ListSelectMenuProps, ListSelectProps, MultiSelectCommon, SelectMenuProps, SelectOptionRequired, SingleSelectCommon } from './Select.types';
2
+ export declare const ListSelectMenu: <T extends SelectOptionRequired>(props: Omit<ListSelectProps<T>, "onAddItem"> & ListSelectMenuProps & SelectMenuProps<T> & CustomMenuItemComponentProps<T> & (Omit<MultiSelectCommon<T>, "syncParentChildSelection"> | SingleSelectCommon<T>)) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useRef as o,useMemo as n}from"react";import{Label as l,CircularProgress as r,Icon as a}from"@equinor/eds-core-react";import{arrow_drop_up as i,arrow_drop_down as s,clear as c}from"@equinor/eds-icons";import{tokens as d}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{useSelect as m}from"../../atoms/hooks/useSelect.js";import{getVariantIcon as h}from"../../atoms/utils/forms.js";import{GroupedSelectMenu as u}from"./GroupedSelectMenu.js";import{ListSelectMenu as p}from"./ListSelectMenu.js";import{ValueText as g,ComboBoxChip as f,Wrapper as b,Container as v,Section as x,PlaceholderText as S,ClearButton as y,HelperWrapper as C,StyledMenu as w}from"./Select.styles.js";import{useOutsideClick as I}from"../../node_modules/@equinor/eds-utils/dist/esm/hooks/useOutsideClick.js";const{colors:O}=d,k=d=>{const{clearable:k=!0,loading:A=!1,disabled:T=!1,lightBackground:$=!1,underlineHighlight:j=!1,sortValues:D=!0,placeholder:R="Select...",label:V,helperText:B,showHelperIcon:F=!0,meta:K,id:_=`amplify-combobox-${V}`,variant:q,inDialog:z=!1,onSearchFilter:H,"data-testid":M}=d,{handleOnAddItem:W,handleOnClear:E,handleOnItemKeyDown:G,handleOnItemSelect:L,handleOnSearchChange:N,handleOnSearchKeyDown:J,handleToggleOpen:P,itemRefs:Q,search:U,selectedValues:X,handleOnClose:Y,handleOnOpen:Z,handleOnRemoveItem:ee,open:te,searchRef:oe,tryingToRemoveItem:ne}=m({...d,clearable:k,loading:A,disabled:T,lightBackground:$,underlineHighlight:j,sortValues:D,placeholder:R}),le=o(null),re=o(null),ae=n((()=>!!V||!!K),[V,K]),ie=n((()=>!!B),[B]),se=n((()=>{if(F)return h(q)}),[F,q]);I(re.current,(e=>{z&&te&&e.target&&le.current&&re.current&&!le.current.contains(e.target)&&!re.current?.contains(e.target)&&Y()}));const ce=n((()=>{if("value"in d&&d.value)return e(g,{children:d.value.label});if("showSelectedAsText"in d&&d.showSelectedAsText){const t=d.items?d.items.length:d.groups.flatMap((e=>e.items)).length,o="function"==typeof d.showSelectedAsText?d.showSelectedAsText({selectedAmount:X.length,totalAmount:t}):`${X.length}/${t} Selected`;return e(g,{children:o})}return X.map((t=>"customValueComponent"in d&&d.customValueComponent?e(d.customValueComponent,{item:t,onDelete:()=>ee(t),tryingToRemove:void 0!==ne&&ne.value===t.value},t.value):e(f,{"data-testid":"amplify-combobox-chip",className:"amplify-combo-box-chip",onDelete:()=>ee(t),$tryingToRemove:ne?.value===t.value,$lightBackground:$,children:t.label},t.value)))}),[X,ne,$,d,ee]);return t("div",{children:[ae&&e(l,{label:V,meta:K,htmlFor:_}),t(b,{children:[t(v,{"data-testid":M||"combobox-container",ref:le,onClick:Z,"aria-expanded":te,$variant:q,$lightBackground:$,children:[t(x,{children:[""===U&&0===X.length&&e(S,{children:R}),(""===U&&"value"in d||"values"in d&&X.length>0&&(!d.showSelectedAsText||d.showSelectedAsText&&""===U))&&ce,e("input",{id:_,disabled:T||A,ref:oe,type:"search",role:"combobox",value:U,autoComplete:"off",onChange:N,onKeyDownCapture:J})]}),A?e(r,{size:16}):e(a,{onClick:P,data:te?i:s,color:O.interactive.primary__resting.rgba}),k&&X.length>0&&!A&&e(y,{id:"clear",variant:"ghost_icon",onClick:E,"data-testid":"clearBtn",children:e(a,{data:c,size:18})})]}),ie&&t(C,{$variant:q,children:[se&&e(a,{data:se,size:16}),e(l,{label:B,htmlFor:_})]})]}),te&&e(w,{ref:re,open:!0,id:"combobox-menu",anchorEl:le.current,onClose:Y,placement:"bottom",style:{width:`${le.current?.clientWidth}px`,maxWidth:`${le.current?.clientWidth}px`},children:"groups"in d&&d.groups?e(u,{...d,search:U,itemRefs:Q,onItemSelect:L,onItemKeyDown:G,onSearchFilter:H}):e(p,{...d,search:U,itemRefs:Q,onAddItem:d.onAddItem?W:void 0,onItemSelect:L,onItemKeyDown:G,onSearchFilter:H})})]})};export{k as Select};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useRef as o,useMemo as n}from"react";import{Label as l,CircularProgress as r,Icon as a}from"@equinor/eds-core-react";import{arrow_drop_up as i,arrow_drop_down as s,clear as c}from"@equinor/eds-icons";import{tokens as m}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{useSelect as d}from"../../atoms/hooks/useSelect.js";import{getVariantIcon as u}from"../../atoms/utils/forms.js";import{GroupedSelectMenu as h}from"./GroupedSelectMenu.js";import{ListSelectMenu as p}from"./ListSelectMenu.js";import{ValueText as g,ComboBoxChip as f,Wrapper as b,Container as v,Section as x,PlaceholderText as C,ClearButton as S,HelperWrapper as y,StyledMenu as I}from"./Select.styles.js";import{useOutsideClick as w}from"../../node_modules/@equinor/eds-utils/dist/esm/hooks/useOutsideClick.js";const{colors:O}=m,k=m=>{const{clearable:k=!0,loading:A=!1,disabled:T=!1,lightBackground:$=!1,underlineHighlight:j=!1,sortValues:D=!0,placeholder:R="Select...",label:M,helperText:V,showHelperIcon:B=!0,meta:F,id:K=`amplify-combobox-${M}`,variant:_,inDialog:q=!1,onSearchFilter:z,"data-testid":H,CustomMenuItemComponent:W}=m,{handleOnAddItem:E,handleOnClear:G,handleOnItemKeyDown:L,handleOnItemSelect:N,handleOnSearchChange:J,handleOnSearchKeyDown:P,handleToggleOpen:Q,itemRefs:U,search:X,selectedValues:Y,handleOnClose:Z,handleOnOpen:ee,handleOnRemoveItem:te,open:oe,searchRef:ne,tryingToRemoveItem:le}=d({...m,clearable:k,loading:A,disabled:T,lightBackground:$,underlineHighlight:j,sortValues:D,placeholder:R}),re=o(null),ae=o(null),ie=n((()=>!!M||!!F),[M,F]),se=n((()=>!!V),[V]),ce=n((()=>{if(B)return u(_)}),[B,_]);w(ae.current,(e=>{q&&oe&&e.target&&re.current&&ae.current&&!re.current.contains(e.target)&&!ae.current?.contains(e.target)&&Z()}));const me=n((()=>{if("value"in m&&m.value)return e(g,{children:m.value.label});if("showSelectedAsText"in m&&m.showSelectedAsText){const t=m.items?m.items.length:m.groups.flatMap((e=>e.items)).length,o="function"==typeof m.showSelectedAsText?m.showSelectedAsText({selectedAmount:Y.length,totalAmount:t}):`${Y.length}/${t} Selected`;return e(g,{children:o})}return Y.map((t=>"customValueComponent"in m&&m.customValueComponent?e(m.customValueComponent,{item:t,onDelete:()=>te(t),tryingToRemove:void 0!==le&&le.value===t.value},t.value):e(f,{"data-testid":"amplify-combobox-chip",className:"amplify-combo-box-chip",onDelete:()=>te(t),$tryingToRemove:le?.value===t.value,$lightBackground:$,children:t.label},t.value)))}),[Y,le,$,m,te]);return t("div",{children:[ie&&e(l,{label:M,meta:F,htmlFor:K}),t(b,{children:[t(v,{"data-testid":H||"combobox-container",ref:re,onClick:ee,"aria-expanded":oe,$variant:_,$lightBackground:$,children:[t(x,{children:[""===X&&0===Y.length&&e(C,{children:R}),(""===X&&"value"in m||"values"in m&&Y.length>0&&(!m.showSelectedAsText||m.showSelectedAsText&&""===X))&&me,e("input",{id:K,disabled:T||A,ref:ne,type:"search",role:"combobox",value:X,autoComplete:"off",onChange:J,onKeyDownCapture:P})]}),A?e(r,{size:16}):e(a,{onClick:Q,data:oe?i:s,color:O.interactive.primary__resting.rgba}),k&&Y.length>0&&!A&&e(S,{id:"clear",variant:"ghost_icon",onClick:G,"data-testid":"clearBtn",children:e(a,{data:c,size:18})})]}),se&&t(y,{$variant:_,children:[ce&&e(a,{data:ce,size:16}),e(l,{label:V,htmlFor:K})]})]}),oe&&e(I,{ref:ae,open:!0,id:"combobox-menu",anchorEl:re.current,onClose:Z,placement:"bottom",style:{width:`${re.current?.clientWidth}px`,maxWidth:`${re.current?.clientWidth}px`},children:"groups"in m&&m.groups?e(h,{...m,search:X,itemRefs:U,onItemSelect:N,onItemKeyDown:L,onSearchFilter:z,CustomMenuItemComponent:W}):e(p,{...m,search:X,itemRefs:U,onAddItem:m.onAddItem?E:void 0,onItemSelect:N,onItemKeyDown:L,onSearchFilter:z,CustomMenuItemComponent:W})},`select-menu-${X}`)]})};export{k as Select};
@@ -32,7 +32,7 @@ type MultiSelectWithCustomValueComponent<T extends SelectOptionRequired> = {
32
32
  } & MultiSelectBase<T>;
33
33
  export type MultiSelectCommon<T extends SelectOptionRequired> = MultiSelectWithSelectedAsText<T> | MultiSelectWithCustomValueComponent<T>;
34
34
  export interface SelectGroup<T extends SelectOptionRequired> {
35
- title: string;
35
+ title?: string;
36
36
  items: SelectOption<T>[];
37
37
  }
38
38
  export interface GroupedSelectProps<T extends SelectOptionRequired> {
@@ -70,15 +70,26 @@ interface SelectMenuItemProps<T extends SelectOptionRequired> {
70
70
  depth?: number;
71
71
  isParentSelected?: boolean;
72
72
  parentHasNestedItems?: boolean;
73
+ customMenuItemComponent?: FC<{
74
+ item: SelectOption<T>;
75
+ selected: boolean;
76
+ }>;
73
77
  }
74
78
  export type SingleSelectMenuItemProps<T extends SelectOptionRequired> = {
75
79
  value: SelectOption<T> | undefined;
76
- } & Omit<SelectMenuProps<T>, 'search'> & SelectMenuItemProps<T>;
80
+ } & Omit<SelectMenuProps<T>, 'search'> & SelectMenuItemProps<T> & CustomMenuItemComponentProps<T>;
77
81
  export type MultiSelectMenuItemProps<T extends SelectOptionRequired> = {
78
82
  values: SelectOption<T>[];
79
- } & Omit<SelectMenuProps<T>, 'search'> & SelectMenuItemProps<T>;
83
+ } & Omit<SelectMenuProps<T>, 'search'> & SelectMenuItemProps<T> & CustomMenuItemComponentProps<T>;
80
84
  export declare const VARIANT_OPTIONS: Variants[];
81
- export interface CommonSelectProps<T extends SelectOptionRequired> {
85
+ export type SelectedState = 'selected' | 'indeterminate' | 'none';
86
+ export interface CustomMenuItemComponentProps<T extends SelectOptionRequired> {
87
+ CustomMenuItemComponent?: FC<{
88
+ item: SelectOption<T>;
89
+ selectedState: SelectedState;
90
+ }>;
91
+ }
92
+ export type CommonSelectProps<T extends SelectOptionRequired> = {
82
93
  id?: string;
83
94
  variant?: Variants;
84
95
  label?: string;
@@ -97,5 +108,5 @@ export interface CommonSelectProps<T extends SelectOptionRequired> {
97
108
  onOpenCallback?: (value: boolean) => void;
98
109
  onSearchFilter?: (searchValue: string, item: T) => void;
99
110
  'data-testid'?: string;
100
- }
111
+ } & CustomMenuItemComponentProps<T>;
101
112
  export {};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{useState as n,useRef as i,useMemo as o}from"react";import{Icon as l}from"@equinor/eds-core-react";import{checkbox_outline as c,chevron_down as a,chevron_right as s,checkbox as u}from"@equinor/eds-icons";import{tokens as d}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{getChildOffset as m}from"./Select.utils.js";import{getParentIcon as p}from"./SelectMenuItem.utils.js";import{spacings as h}from"../../atoms/style/spacings.js";import{MenuItemSpacer as f,MenuItemWrapper as v,SmallButton as y,StyledMenuItem as g}from"./Select.styles.js";const{colors:w}=d,k=d=>{const{index:b,childOffset:x,depth:C=0,item:D,itemRefs:$,onItemKeyDown:A,onItemSelect:I,parentHasNestedItems:_=!1}=d,[j,K]=n(!1),S=i(-1),O=i([]),q=("values"in d?d.values.map((({value:e})=>e)):[]).includes(D.value),L=o((()=>"value"in d?c:p(D,d.values)),[D,d]),M=o((()=>new Array(C).fill(0).map(((r,t)=>e(f,{},`spacer-${r+t}`)))),[C]),R=e=>{e.preventDefault(),I(D)},H=e=>{e.stopPropagation(),K((e=>!e))},N=e=>{"ArrowDown"===e.key?S.current+=1:"ArrowUp"===e.key&&(S.current-=1),S.current<=-1?($.current[b]?.focus(),S.current=-1):S.current+x===O.current.length?(S.current=-1,A(e),K(!1)):S.current>=0&&S.current<O.current.length-x&&O.current[S.current+x]?.focus()},U=e=>{!j&&"ArrowDown"===e.key||"ArrowUp"===e.key?A(e):"ArrowRight"===e.key||"ArrowLeft"===e.key?K((e=>!e)):j&&"ArrowDown"===e.key&&-1===S.current&&(S.current=0,O.current[S.current+x]?.focus())};return D.children&&D.children.length>0&&"values"in d?r(t,{children:[r(v,{style:{paddingLeft:0===C?h.small:0},children:[M,e(y,{variant:"ghost_icon",onClick:H,"data-testid":"toggle-button",children:e(l,{color:w.interactive.primary__resting.rgba,data:j?a:s})}),r(g,{$depth:C,ref:e=>{$.current[b]=e},index:b,closeMenuOnClick:!1,onKeyDownCapture:U,onClick:R,children:[e(l,{color:w.interactive.primary__resting.rgba,data:L}),e("span",{children:D.label})]})]}),j&&D.children.map(((r,t)=>e(k,{index:x+t,childOffset:x+m(D.children,t),depth:C+1,item:r,itemRefs:O,values:d.values,onItemKeyDown:N,onItemSelect:I,parentHasNestedItems:!0},`child-${t}-${r.value}-${D.value}`)))]}):"values"in d?r(v,{children:[M,r(g,{$depth:C,$paddedLeft:_,ref:e=>{$.current[b]=e},index:b,tabIndex:C,closeMenuOnClick:!1,onKeyDownCapture:A,onClick:R,children:[e(l,{color:w.interactive.primary__resting.rgba,data:q?u:c}),e("span",{children:D.label})]})]}):e(v,{children:e(g,{$depth:C,$selected:d.value&&D.value===d.value.value,ref:e=>{$.current[b]=e},index:b,onKeyDownCapture:A,onClick:R,children:e("span",{children:D.label})})})};export{k as SelectMenuItem};
1
+ import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{useState as n,useRef as l,useMemo as o}from"react";import{Icon as i}from"@equinor/eds-core-react";import{checkbox_outline as c,chevron_down as a,chevron_right as s,checkbox as u}from"@equinor/eds-icons";import{tokens as d}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{getChildOffset as m}from"./Select.utils.js";import{getParentIcon as p,getParentState as h}from"./SelectMenuItem.utils.js";import{spacings as v}from"../../atoms/style/spacings.js";import{MenuItemSpacer as f,MenuItemWrapper as y,SmallButton as g,StyledMenuItem as w}from"./Select.styles.js";const{colors:k}=d,C=d=>{const{index:I,childOffset:b,depth:x=0,item:D,itemRefs:$,onItemKeyDown:A,onItemSelect:S,parentHasNestedItems:_=!1,CustomMenuItemComponent:j}=d,[K,M]=n(!1),O=l(-1),q=l([]),L=("values"in d?d.values.map((({value:e})=>e)):[]).includes(D.value),R=o((()=>"value"in d?c:p(D,d.values)),[D,d]),H=o((()=>"value"in d?"none":h(D,d.values)),[D,d]),N=o((()=>new Array(x).fill(0).map(((r,t)=>e(f,{},`spacer-${r+t}`)))),[x]),U=e=>{e.preventDefault(),S(D)},P=e=>{e.stopPropagation(),M((e=>!e))},z=e=>{"ArrowDown"===e.key?O.current+=1:"ArrowUp"===e.key&&(O.current-=1),O.current<=-1?($.current[I]?.focus(),O.current=-1):O.current+b===q.current.length?(O.current=-1,A(e),M(!1)):O.current>=0&&O.current<q.current.length-b&&q.current[O.current+b]?.focus()},B=e=>{!K&&"ArrowDown"===e.key||"ArrowUp"===e.key?A(e):"ArrowRight"===e.key||"ArrowLeft"===e.key?M((e=>!e)):K&&"ArrowDown"===e.key&&-1===O.current&&(O.current=0,q.current[O.current+b]?.focus())};return D.children&&D.children.length>0&&"values"in d?r(t,{children:[r(y,{style:{paddingLeft:0===x?v.small:0},children:[N,e(g,{variant:"ghost_icon",onClick:P,"data-testid":"toggle-button",children:e(i,{color:k.interactive.primary__resting.rgba,data:K?a:s})}),e(w,{$depth:x,ref:e=>{$.current[I]=e},index:I,closeMenuOnClick:!1,onKeyDownCapture:B,onClick:U,children:j?e(j,{item:D,selectedState:H}):r(t,{children:[e(i,{color:k.interactive.primary__resting.rgba,data:R}),e("span",{children:D.label})]})})]}),K&&D.children.map(((r,t)=>e(C,{index:b+t,childOffset:b+m(D.children,t),depth:x+1,item:r,itemRefs:q,values:d.values,onItemKeyDown:z,onItemSelect:S,parentHasNestedItems:!0,CustomMenuItemComponent:j},`child-${t}-${r.value}-${D.value}`)))]}):"values"in d?r(y,{children:[N,e(w,{$depth:x,$paddedLeft:_,ref:e=>{$.current[I]=e},index:I,tabIndex:x,closeMenuOnClick:!1,onKeyDownCapture:A,onClick:U,children:j?e(j,{item:D,selectedState:L?"selected":"none"}):r(t,{children:[e(i,{color:k.interactive.primary__resting.rgba,data:L?u:c}),e("span",{children:D.label})]})})]}):e(y,{children:e(w,{$depth:x,$selected:d.value&&D.value===d.value.value,ref:e=>{$.current[I]=e},index:I,onKeyDownCapture:A,onClick:U,children:j?e(j,{item:D,selectedState:d.value&&D.value===d.value.value?"selected":"none"}):e("span",{children:D.label})})})};export{C as SelectMenuItem};
@@ -1,2 +1,5 @@
1
+ import { IconData } from '@equinor/eds-icons';
1
2
  import { SelectOption, SelectOptionRequired } from './..';
2
- export declare function getParentIcon<T extends SelectOptionRequired>(item: SelectOption<T>, values: SelectOption<T>[]): import("@equinor/eds-icons").IconData;
3
+ import { SelectedState } from './Select.types';
4
+ export declare function getParentIcon<T extends SelectOptionRequired>(item: SelectOption<T>, values: SelectOption<T>[]): IconData;
5
+ export declare function getParentState<T extends SelectOptionRequired>(item: SelectOption<T>, values: SelectOption<T>[]): SelectedState;
@@ -1 +1 @@
1
- import{checkbox_outline as e,checkbox as r,checkbox_indeterminate as n}from"@equinor/eds-icons";import{flattenOptions as o}from"./Select.utils.js";function i(i,l){if(!i.children||0===i.children.length)return e;const t=l.some((e=>e.value===i.value)),u=l.map((({value:e})=>e)),m=o([i])?.map((({value:e})=>e));return t?r:m.some((e=>u.includes(e)))?n:e}export{i as getParentIcon};
1
+ import{checkbox_outline as e,checkbox_indeterminate as n,checkbox as t}from"@equinor/eds-icons";import{flattenOptions as o}from"./Select.utils.js";const r={selected:t,indeterminate:n,none:e};function i(e,n){const t=c(e,n);return r[t]}function c(e,n){if(!e.children||0===e.children.length)return"none";const t=n.some((n=>n.value===e.value)),r=n.map((({value:e})=>e)),i=o([e])?.map((({value:e})=>e));return t?"selected":i.some((e=>r.includes(e)))?"indeterminate":"none"}export{i as getParentIcon,c as getParentState};
@@ -11,5 +11,6 @@ export type GroupedSingleSelectProps<T extends SelectOptionRequired> = CommonSel
11
11
  * @param onAddItem - Enables the possibility to add extra tags and is called when submitting a new item, either via menu click 'add' or {Enter}. Not supported with groups prop.
12
12
  * @param addItemSingularWord - Word to use when adding a new item, default is "tag"
13
13
  * @param onSearchFilter - Custom filter function for search, default is "item.label.match(new RegExp(searchValue, 'i'))"
14
+ * @param customMenuItemComponent - Custom component to use for rendering menu item, defaults to a checkbox with label
14
15
  */
15
16
  export declare function SingleSelect<T extends SelectOptionRequired>(props: ListSingleSelectProps<T> | GroupedSingleSelectProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -2,5 +2,6 @@ import { CheckboxProps as EDSCheckboxProps } from '@equinor/eds-core-react';
2
2
  export interface CheckboxProps extends EDSCheckboxProps {
3
3
  label?: string;
4
4
  outlined?: boolean;
5
+ error?: boolean;
5
6
  }
6
7
  export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{forwardRef as r}from"react";import{Checkbox as e}from"@equinor/eds-core-react";import{Wrapper as t}from"../SelectionControls.styles.js";const i=r(((r,i)=>{const{outlined:c,...m}=r;return o(t,{$outlined:c||!1,children:o(e,{ref:i,...m})})}));i.displayName="Checkbox";export{i as Checkbox};
1
+ import{jsx as r}from"react/jsx-runtime";import{forwardRef as o}from"react";import{Checkbox as e}from"@equinor/eds-core-react";import{Wrapper as t}from"../SelectionControls.styles.js";const i=o(((o,i)=>{const{outlined:c,error:m,...n}=o;return r(t,{$outlined:c||!1,$error:m,children:r(e,{ref:i,...n})})}));i.displayName="Checkbox";export{i as Checkbox};
@@ -2,5 +2,6 @@ import { RadioProps as EDSRadioProps } from '@equinor/eds-core-react';
2
2
  export interface RadioProps extends EDSRadioProps {
3
3
  label: string;
4
4
  outlined?: boolean;
5
+ error?: boolean;
5
6
  }
6
7
  export declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{forwardRef as o}from"react";import{Radio as r}from"@equinor/eds-core-react";import{Wrapper as t}from"../SelectionControls.styles.js";const i=o(((o,i)=>{const{outlined:c,...d}=o;return e(t,{$outlined:c||!1,children:e(r,{ref:i,...d,checked:!!d.checked||void 0})})}));i.displayName="Radio";export{i as Radio};
1
+ import{jsx as r}from"react/jsx-runtime";import{forwardRef as e}from"react";import{Radio as o}from"@equinor/eds-core-react";import{Wrapper as t}from"../SelectionControls.styles.js";const i=e(((e,i)=>{const{outlined:c,error:d,...m}=e;return r(t,{$outlined:c||!1,$error:d,children:r(o,{ref:i,...m,checked:!!m.checked||void 0})})}));i.displayName="Radio";export{i as Radio};
@@ -1,5 +1,6 @@
1
1
  interface WrapperProps {
2
2
  $outlined: boolean;
3
+ $error?: boolean;
3
4
  }
4
5
  export declare const Wrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, WrapperProps>> & string;
5
6
  export {};
@@ -1,20 +1,40 @@
1
- import{tokens as t}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{animation as a}from"../../atoms/style/animation.js";import"../../atoms/style/colors.js";import{spacings as i}from"../../atoms/style/spacings.js";import e,{css as s}from"styled-components";const{colors:r,shape:n}=t,o=e.span`
1
+ import{tokens as t}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/index.js";import{animation as a}from"../../atoms/style/animation.js";import"../../atoms/style/colors.js";import{spacings as i}from"../../atoms/style/spacings.js";import e,{css as r}from"styled-components";const{colors:s,shape:n}=t,l=e.span`
2
2
  > label {
3
- padding: 0 ${i.medium} 0 ${i.x_small};
3
+ padding: ${i.x_small} ${i.medium_small};
4
4
  border-radius: ${n.button.borderRadius};
5
5
  transition: background ${a.transitionMS};
6
- > span:last-child {
6
+ gap: ${i.small};
7
+ min-height: 36px;
8
+ > span:first-child {
9
+ padding: 0;
10
+ height: 24px;
11
+ aspect-ratio: 1;
12
+ }
13
+ > span[class*='Switch']:last-child {
7
14
  padding: 0 ${i.medium_small} 0 0;
8
15
  }
9
16
  }
10
17
 
11
18
  &.switch > label {
12
- padding: 0 ${i.medium} 0 0;
19
+ padding: 0 ${i.x_small} 0 ${i.medium_small};
20
+ gap: ${i.small};
21
+
22
+ > span:first-child {
23
+ height: 36px;
24
+ }
25
+
26
+ input {
27
+ width: 0;
28
+ ~ span {
29
+ height: 36px;
30
+ }
31
+ }
13
32
  }
14
33
 
15
34
  /* Radio / Checkbox hover state override */
16
35
  > label > span:before {
17
36
  background-color: transparent !important;
37
+ height: 36px;
18
38
  }
19
39
  /* Switch hover state override */
20
40
  > label > span > input[type='checkbox'] + span {
@@ -25,55 +45,64 @@ import{tokens as t}from"../../node_modules/@equinor/eds-tokens/dist/esm/base/ind
25
45
  }
26
46
  input:not(:checked) {
27
47
  ~ svg {
28
- fill: ${r.text.static_icons__tertiary.rgba};
48
+ fill: ${({$error:t})=>t?s.interactive.danger__resting.rgba:s.text.static_icons__tertiary.rgba};
29
49
  &:hover {
30
- fill: ${r.text.static_icons__default.rgba};
50
+ fill: ${({$error:t})=>t?s.interactive.danger__hover.rgba:s.text.static_icons__default.rgba};
31
51
  }
32
52
  }
33
53
  }
54
+ ${({$error:t})=>t?r`
55
+ input ~ svg {
56
+ fill: ${s.interactive.danger__resting.rgba};
57
+ &:hover {
58
+ fill: ${s.interactive.danger__hover.rgba};
59
+ }
60
+ }
61
+ `:""}
62
+
34
63
  /* Switch dot override */
35
64
  > label:has(input:checked)
36
65
  > span
37
66
  > span
38
67
  > span:last-child:not([class*='SwitchSmall']) {
39
- background: ${r.interactive.primary__resting.rgba};
68
+ background: ${s.interactive.primary__resting.rgba};
40
69
  }
41
70
  > label:has(input)
42
71
  > span
43
72
  > span
44
73
  > span:last-child:not([class*='SwitchSmall']) {
45
- background: ${r.text.static_icons__tertiary.rgba};
74
+ background: ${s.text.static_icons__tertiary.rgba};
46
75
  }
47
76
 
48
77
  > label:hover:not(:has(input:disabled)) {
49
- background: ${r.interactive.primary__hover_alt.rgba};
78
+ background: ${({$error:t})=>t?s.interactive.danger__highlight.rgba:s.interactive.primary__hover_alt.rgba};
50
79
  svg {
51
- fill: ${r.text.static_icons__default.rgba};
80
+ fill: ${({$error:t})=>t?s.interactive.danger__hover.rgba:s.text.static_icons__default.rgba};
52
81
  }
53
82
  }
54
83
 
55
84
  > label:focus:not(:hover):not(:has(input:disabled)) {
56
- outline: 1px dashed ${r.interactive.primary__resting.rgba};
85
+ outline: 1px dashed ${s.interactive.primary__resting.rgba};
57
86
  outline-offset: -1px;
58
87
  }
59
88
 
60
89
  &:has(input:disabled) {
61
90
  span:last-child {
62
- color: ${r.interactive.disabled__text.rgba};
91
+ color: ${s.interactive.disabled__text.rgba};
63
92
  }
64
93
  svg {
65
- fill: ${r.interactive.disabled__text.rgba};
94
+ fill: ${s.interactive.disabled__text.rgba};
66
95
  }
67
96
  }
68
97
 
69
- ${({$outlined:t})=>{if(t)return s`
98
+ ${({$outlined:t})=>{if(t)return r`
70
99
  > label {
71
- outline: 1px solid ${r.ui.background__medium.rgba};
100
+ outline: 1px solid ${s.ui.background__medium.rgba};
72
101
  }
73
102
  &:has(input:disabled) {
74
103
  svg {
75
- fill: ${r.interactive.disabled__border.rgba};
104
+ fill: ${s.interactive.disabled__border.rgba};
76
105
  }
77
106
  }
78
107
  `}}
79
- `;export{o as Wrapper};
108
+ `;export{l as Wrapper};
@@ -1,11 +1,15 @@
1
- import{jsxs as r,jsx as t}from"react/jsx-runtime";import{useMemo as e}from"react";import{Typography as o}from"@equinor/eds-core-react";import{colors as i}from"../../../atoms/style/colors.js";import{spacings as s}from"../../../atoms/style/spacings.js";import{StepIcon as a}from"./StepIcon.js";import{useStepper as c}from"../../../providers/StepperProvider.js";import n,{css as l}from"styled-components";const p=n.div`
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useMemo as t}from"react";import{Typography as o}from"@equinor/eds-core-react";import{colors as i}from"../../../atoms/style/colors.js";import{spacings as s}from"../../../atoms/style/spacings.js";import{StepIcon as a}from"./StepIcon.js";import{useStepper as l}from"../../../providers/StepperProvider.js";import d,{css as n}from"styled-components";const c=d.div`
2
2
  display: flex;
3
3
  gap: ${s.small};
4
4
  align-items: center;
5
5
  white-space: nowrap;
6
- ${r=>r.$clickable&&l`
7
- &:hover {
8
- cursor: pointer;
9
- }
10
- `}
11
- `,m=({index:s,onlyShowCurrentStepLabel:n=!1,children:l})=>{const{currentStep:m,setCurrentStep:d}=c(),f=e((()=>s<m?"body_short":"body_short_bold"),[m,s]),b=e((()=>s>m?i.interactive.disabled__text.rgba:i.text.static_icons__default.rgba),[m,s]);return r(p,{"data-testid":"step",$clickable:s<m,onClick:()=>{s<m&&d(s)},children:[t(a,{index:s}),(!n||m===s)&&t(o,{variant:f,color:b,children:l})]})};export{m as Step,m as default};
6
+ ${({$disabled:e,$clickable:r})=>e?n`
7
+ &:hover {
8
+ cursor: not-allowed;
9
+ }
10
+ `:r&&n`
11
+ &:hover {
12
+ cursor: pointer;
13
+ }
14
+ `}
15
+ `,p=({index:s,onlyShowCurrentStepLabel:d=!1,children:n})=>{const{currentStep:p,setCurrentStep:m,isStepAtIndexDisabled:b}=l(),f=b(s),u=t((()=>s<p?"body_short":"body_short_bold"),[p,s]),h=t((()=>s>p||f?i.interactive.disabled__text.rgba:i.text.static_icons__default.rgba),[p,s,f]);return e(c,{"data-testid":"step",$clickable:s<p,onClick:()=>{s<p&&!f&&m(s)},$disabled:f,"aria-disabled":f,role:"button",children:[r(a,{index:s,disabled:f}),(!d||p===s)&&r(o,{variant:u,color:h,children:n})]})};export{p as Step,p as default};
@@ -1,6 +1,7 @@
1
1
  import { FC } from 'react';
2
2
  interface StepIconProps {
3
3
  index: number;
4
+ disabled?: boolean;
4
5
  }
5
6
  export declare const StepIcon: FC<StepIconProps>;
6
7
  export {};
@@ -1,19 +1,19 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Typography as e,Icon as t}from"@equinor/eds-core-react";import{check as i}from"@equinor/eds-icons";import{shape as o}from"../../../atoms/style/index.js";import{useStepper as n}from"../../../providers/StepperProvider.js";import a from"styled-components";import{colors as s}from"../../../atoms/style/colors.js";const d=a.span`
1
+ import{jsx as r}from"react/jsx-runtime";import{Icon as e,Typography as t}from"@equinor/eds-core-react";import{lock as i,check as o}from"@equinor/eds-icons";import{shape as a}from"../../../atoms/style/index.js";import{useStepper as n}from"../../../providers/StepperProvider.js";import s from"styled-components";import{colors as d}from"../../../atoms/style/colors.js";const c=s.span`
2
2
  display: flex;
3
3
  justify-content: center;
4
4
  align-items: center;
5
5
  width: 22px;
6
6
  height: 22px;
7
- border-radius: ${o.circle.borderRadius};
7
+ border-radius: ${a.circle.borderRadius};
8
8
  border: 2px solid
9
- ${({$filled:r,$outlined:e})=>r??e?s.interactive.primary__resting.rgba:s.interactive.disabled__text.rgba};
10
- background: ${({$filled:r})=>r?s.interactive.primary__resting.rgba:"none"};
9
+ ${({$filled:r,$outlined:e})=>r??e?d.interactive.primary__resting.rgba:d.interactive.disabled__text.rgba};
10
+ background: ${({$filled:r})=>r?d.interactive.primary__resting.rgba:"none"};
11
11
  > p {
12
12
  // Ensure text icons are not squished
13
13
  padding: 8px;
14
- color: ${r=>r.$filled?s.text.static_icons__primary_white.rgba:s.interactive.disabled__text.rgba};
14
+ color: ${r=>r.$filled?d.text.static_icons__primary_white.rgba:d.interactive.disabled__text.rgba};
15
15
  }
16
16
  > svg {
17
17
  transform: scale(0.9);
18
18
  }
19
- `,c=({index:o})=>{const{currentStep:a}=n();return r(d,o>=a?{$filled:o===a,children:r(e,{variant:"caption",children:o+1})}:{$outlined:!0,"data-testid":"wrapper",children:r(t,{data:i,color:s.interactive.primary__resting.rgba})})};export{c as StepIcon};
19
+ `,l=({index:a,disabled:s})=>{const{currentStep:l}=n();return s?r(e,{data:i,color:d.interactive.disabled__text.rgba}):r(c,a>=l?{$filled:a===l,children:r(t,{variant:"caption",children:a+1})}:{$outlined:!0,"data-testid":"wrapper",children:r(e,{data:o,color:d.interactive.primary__resting.rgba})})};export{l as StepIcon};
@@ -63,7 +63,6 @@ export type { ListComboBoxProps, GroupedComboBoxProps, } from './Select/ComboBox
63
63
  export { SingleSelect } from './Select/SingleSelect/SingleSelect';
64
64
  export type { ListSingleSelectProps, GroupedSingleSelectProps, } from './Select/SingleSelect/SingleSelect';
65
65
  export type { SelectOption, SelectOptionRequired } from './Select/Select.types';
66
- export { PageWithTitle } from './PageWithTitle/PageWithTitle';
67
66
  export { FeedBackIcon } from './FeedBackIcon/FeedBackIcon';
68
67
  export type { FeedBackIconProps } from './FeedBackIcon/FeedBackIcon';
69
68
  export { ListItem } from './ListItem/ListItem';
@@ -3,32 +3,38 @@ interface SubStep {
3
3
  title: string;
4
4
  description?: string;
5
5
  }
6
- interface StepWithSubSteps {
7
- label: string;
8
- title?: undefined;
9
- description?: undefined;
10
- subSteps: [SubStep, SubStep, ...SubStep[]];
11
- }
12
- interface StepWithoutSubSteps {
6
+ interface CommonStep {
13
7
  label: string;
14
8
  title?: string;
15
9
  description?: string;
10
+ }
11
+ interface StepWithSubSteps extends CommonStep {
12
+ subSteps: SubStep[];
13
+ }
14
+ interface StepWithoutSubSteps extends CommonStep {
16
15
  subSteps?: undefined;
17
16
  }
18
17
  type Step = StepWithSubSteps | StepWithoutSubSteps;
19
18
  interface StepperContextType {
20
- steps: [Step, Step, ...Step[]];
19
+ steps: Step[];
21
20
  currentStep: number;
22
21
  currentSubStep: number;
23
22
  setCurrentStep: (value: number) => void;
24
23
  goToNextStep: () => void;
25
24
  goToPreviousStep: () => void;
25
+ isStepAtIndexDisabled: (stepIndex: number) => boolean;
26
26
  }
27
27
  export declare const StepperContext: import("react").Context<StepperContextType | undefined>;
28
28
  export declare function useStepper(): StepperContextType;
29
29
  export interface StepperProviderProps {
30
- steps: [Step, Step, ...Step[]];
30
+ steps: Step[];
31
31
  children: ReactNode;
32
+ isStepDisabled?: ({ step, stepIndex, currentStep, currentStepIndex, }: {
33
+ step: Step;
34
+ stepIndex: number;
35
+ currentStep: Step;
36
+ currentStepIndex: number;
37
+ }) => boolean;
32
38
  }
33
39
  interface StepperProviderSyncedToURLParamProps extends StepperProviderProps {
34
40
  syncToURLParam: true;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as r,useContext as s}from"react";import{useParams as n,useNavigate as o,useLocation as i}from"react-router";const p=t(void 0);function u(){const e=s(p);if(!e)throw new Error("useStepper must be used within a StepperProvider");return e}const a=({steps:t,children:s,...u})=>{const{step:a}=n(),c=o(),m=i().pathname.split("/").slice(0,-1).join("/"),S=u.syncToURLParam?Number(a):u?.initialStep??0;if(u.syncToURLParam&&a&&isNaN(Number(a)))throw new Error('Step URL param must be a valid number when using "syncToURLParam"');const[b,h]=r(S),l=u.syncToURLParam?Number(a):b,[d,f]=r(0);if(S>=t.length||S<0)throw new Error("initialStep must be a valid index of the steps array");const g=e=>{u.syncToURLParam?c(`${m}/${e}`):h(e)};return e(p.Provider,{value:{steps:t,currentStep:l,currentSubStep:d,setCurrentStep:g,goToNextStep:()=>{"subSteps"in t[l]&&t[l].subSteps&&d<t[l].subSteps.length-1?f((e=>e+1)):l!==t.length-1&&(g(l+1),0!==d&&f(0))},goToPreviousStep:()=>{if(d>0&&"subSteps"in t[l]&&t[l].subSteps&&t[l].subSteps.length>0)return void f((e=>e-1));if(0===l)return;g(l-1);const e=t.at(l-1);e&&"subSteps"in e&&e.subSteps&&f(e.subSteps.length-1)}},children:s})};export{p as StepperContext,a as StepperProvider,u as useStepper};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as r,useCallback as s,useContext as n}from"react";import{useParams as i,useNavigate as p,useLocation as o}from"react-router";const u=t(void 0);function a(){const e=n(u);if(!e)throw new Error("useStepper must be used within a StepperProvider");return e}const S=({steps:t,children:n,isStepDisabled:a,...S})=>{const{step:c}=i(),m=p(),b=o().pathname.split("/").slice(0,-1).join("/"),l=S.syncToURLParam?Number(c):S?.initialStep??0;if(S.syncToURLParam&&c&&isNaN(Number(c)))throw new Error('Step URL param must be a valid number when using "syncToURLParam"');if(t.length<2)throw new Error("Stepper must have at least 2 steps");const[h,d]=r(l),f=S.syncToURLParam?Number(c):h,[w,g]=r(0);if(l>=t.length||l<0)throw new Error("initialStep must be a valid index of the steps array");const v=e=>{S.syncToURLParam?m(`${b}/${e}`):d(e)},P=s((e=>!!a&&a({step:t[e],stepIndex:e,currentStep:t[f],currentStepIndex:f})),[a,f,t]);return e(u.Provider,{value:{steps:t,currentStep:f,currentSubStep:w,setCurrentStep:v,goToNextStep:()=>{"subSteps"in t[f]&&t[f].subSteps&&w<t[f].subSteps.length-1?g((e=>e+1)):f!==t.length-1&&(v(f+1),0!==w&&g(0))},goToPreviousStep:()=>{if(w>0&&"subSteps"in t[f]&&t[f].subSteps&&t[f].subSteps.length>0)return void g((e=>e-1));if(0===f)return;v(f-1);const e=t.at(f-1);e&&"subSteps"in e&&e.subSteps&&g(e.subSteps.length-1)},isStepAtIndexDisabled:P},children:n})};export{u as StepperContext,S as StepperProvider,a as useStepper};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/amplify-component-lib",
3
- "version": "9.9.2",
3
+ "version": "9.10.0",
4
4
  "description": "Frontend Typescript components for the Amplify team",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,7 +0,0 @@
1
- import { FC, ReactNode } from 'react';
2
- interface PageWithTitleProps {
3
- title: string;
4
- children: ReactNode;
5
- }
6
- export declare const PageWithTitle: FC<PageWithTitleProps>;
7
- export {};
@@ -1 +0,0 @@
1
- import{useEffect as t}from"react";const e=({children:e,title:o})=>(t((()=>{document.title!==o&&(document.title=o)}),[o]),e);export{e as PageWithTitle};