@equinor/amplify-component-lib 9.1.2 → 9.3.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/dist/atoms/hooks/index.d.ts +1 -2
- package/dist/atoms/icons/drilling.d.ts +1 -0
- package/dist/atoms/icons/drilling.js +1 -1
- package/dist/atoms/index.js +1 -1
- package/dist/atoms/utils/date.d.ts +12 -3
- package/dist/atoms/utils/date.js +1 -1
- package/dist/atoms/utils/index.d.ts +1 -0
- package/dist/atoms/utils/richtext.js +1 -1
- package/dist/atoms/utils/tutorials.d.ts +10 -0
- package/dist/atoms/utils/tutorials.js +1 -0
- package/dist/index.js +1 -1
- package/dist/molecules/DatePicker/DatePicker.js +1 -1
- package/dist/molecules/FileProgress/CompactFileProgress.d.ts +2 -4
- package/dist/molecules/FileProgress/CompactFileProgress.js +1 -1
- package/dist/molecules/FileProgress/CompactFileProgress.styles.d.ts +2 -0
- package/dist/molecules/FileProgress/FileProgress.d.ts +15 -25
- package/dist/molecules/FileProgress/FileProgress.types.d.ts +41 -0
- package/dist/molecules/FileProgress/RegularFileProgress.d.ts +2 -4
- package/dist/molecules/FileProgress/RegularFileProgress.js +1 -1
- package/dist/molecules/OptionalTooltip/OptionalTooltip.d.ts +1 -0
- package/dist/molecules/RichTextEditor/index.js +1 -1
- package/dist/molecules/Select/GroupedSelectMenu.js +1 -1
- package/dist/molecules/Select/ListSelectMenu.js +1 -1
- package/dist/molecules/Select/Select.js +1 -1
- package/dist/molecules/Select/Select.types.d.ts +5 -8
- package/dist/molecules/Select/SelectMenuItem.js +1 -1
- package/dist/molecules/Select/SingleSelect/SingleSelect.js +1 -1
- package/dist/molecules/index.d.ts +2 -1
- package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/index.js +1 -1
- package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/spacings.js +1 -1
- package/dist/node_modules/prosemirror-transform/dist/index.js +1 -1
- package/dist/organisms/FieldSelector/ChangingField.js +4 -4
- package/dist/organisms/Filter/Filter.styles.js +1 -1
- package/dist/organisms/Filter/QuickFilter.js +1 -1
- package/dist/organisms/Filter/Sorting.js +2 -2
- package/dist/organisms/PageTitle/PageTitle.d.ts +7 -0
- package/dist/organisms/PageTitle/PageTitle.js +1 -0
- package/dist/organisms/SideBar/CreateItem.styles.js +1 -0
- package/dist/organisms/SideBar/MenuItem.styles.js +1 -0
- package/dist/organisms/SideBar/SideBar.styles.js +2 -0
- package/dist/organisms/Status/Illustration.js +2 -2
- package/dist/organisms/Status/collections/MissingAccessToApp.js +1 -1
- package/dist/organisms/TableOfContents/TableOfContents.constants.js +1 -1
- package/dist/organisms/TopBar/Account/Account.js +1 -1
- package/dist/organisms/TopBar/Account/AccountAvatar.js +3 -3
- package/dist/organisms/TopBar/Account/AccountButton.js +3 -3
- package/dist/organisms/TopBar/Account/ActiveUserImpersonationButton.js +4 -4
- package/dist/organisms/TopBar/Account/ImpersonateAvatar.js +2 -2
- package/dist/organisms/TopBar/Account/ImpersonateButton.js +1 -1
- package/dist/organisms/TopBar/Account/ImpersonateMenu/DeleteUser/DeleteUser.js +1 -1
- package/dist/organisms/TopBar/Account/ImpersonateMenu/DeleteUser/DeleteUser.styles.js +1 -1
- package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.styles.js +1 -1
- package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.utils.d.ts +2 -0
- package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.utils.js +1 -0
- package/dist/organisms/TopBar/Account/ImpersonateMenu/ImpersonateMenu.js +1 -1
- package/dist/organisms/TopBar/Account/ImpersonateMenu/UserImpersonation.js +6 -6
- package/dist/organisms/TopBar/Account/ImpersonateMenu/hooks/useStartImpersonation.js +1 -1
- package/dist/organisms/TopBar/Notifications/NotificationProvider.js +1 -1
- package/dist/organisms/TopBar/Resources/Feedback/FeedbackForm/UploadFile/UploadFile.styles.d.ts +2 -0
- package/dist/organisms/TopBar/Resources/Feedback/providers/FeedbackContextProvider.js +1 -1
- package/dist/organisms/TopBar/Resources/ReleaseNotesDialog/ReleaseNotes.js +1 -1
- package/dist/organisms/TopBar/Resources/ReleaseNotesDialog/ReleasePosts/ReleasePost/ReleasePost.js +1 -1
- package/dist/organisms/TopBar/Resources/Resources.d.ts +0 -3
- package/dist/organisms/TopBar/Resources/Resources.js +5 -5
- package/dist/organisms/TopBar/TransferToAppDialog.js +3 -3
- package/dist/organisms/TopBar/Tutorials/TutorialItem.d.ts +8 -0
- package/dist/organisms/TopBar/Tutorials/TutorialItem.js +21 -0
- package/dist/organisms/TopBar/Tutorials/Tutorials.d.ts +6 -0
- package/dist/organisms/TopBar/Tutorials/Tutorials.js +1 -0
- package/dist/organisms/TopBar/Tutorials/Tutorials.styles.d.ts +2 -0
- package/dist/organisms/TopBar/Tutorials/Tutorials.styles.js +18 -0
- package/dist/organisms/TopBar/index.d.ts +2 -0
- package/dist/organisms/TopBar/index.js +1 -1
- package/dist/organisms/index.d.ts +1 -0
- package/dist/providers/AuthProvider/AuthProvider.js +1 -1
- package/dist/providers/ReleaseNotesProvider.utils.js +1 -1
- package/dist/providers/SnackbarProvider/APIErrorSnackbar.d.ts +6 -0
- package/dist/providers/SnackbarProvider/APIErrorSnackbar.js +1 -0
- package/dist/providers/SnackbarProvider/SnackbarProvider.d.ts +5 -0
- package/dist/providers/SnackbarProvider/SnackbarProvider.js +1 -1
- package/dist/providers/StepperProvider.d.ts +13 -2
- package/dist/providers/StepperProvider.js +1 -1
- package/dist/providers/TableOfContentsProvider.js +1 -1
- package/dist/providers/ThemeProvider/ThemeProvider.js +1 -1
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.constants.d.ts +2 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.constants.js +1 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.d.ts +11 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.js +1 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProviderInner.d.ts +6 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProviderInner.js +24 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialPopover/StepIndicator.d.ts +6 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialPopover/StepIndicator.js +20 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialPopover/TutorialPopover.d.ts +11 -0
- package/dist/providers/TutorialHighlightingProvider/TutorialPopover/TutorialPopover.js +45 -0
- package/dist/providers/TutorialHighlightingProvider/hooks/useReversedScrollY.d.ts +1 -0
- package/dist/providers/TutorialHighlightingProvider/hooks/useReversedScrollY.js +1 -0
- package/dist/providers/index.d.ts +1 -1
- package/dist/tests/mockHandlers.d.ts +5 -1
- package/package.json +69 -69
- package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/clickbounds.js +0 -1
- package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/interactions.js +0 -1
- package/dist/organisms/TopBar/Resources/Tutorials/TutorialInfoDialog.d.ts +0 -15
- package/dist/organisms/TopBar/Resources/Tutorials/TutorialInfoDialog.js +0 -15
- package/dist/organisms/TopBar/Resources/Tutorials/TutorialItem.d.ts +0 -3
- package/dist/organisms/TopBar/Resources/Tutorials/TutorialItem.js +0 -12
- package/dist/providers/TutorialStepsProvider.d.ts +0 -23
- package/dist/providers/TutorialStepsProvider.js +0 -1
package/dist/organisms/TopBar/Resources/ReleaseNotesDialog/ReleasePosts/ReleasePost/ReleasePost.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{useState as t,useRef as i}from"react";import{Typography as s,Icon as l}from"@equinor/eds-core-react";import{arrow_drop_up as m,arrow_drop_down as a}from"@equinor/eds-icons";import{ReleaseNotesTypes as n}from"../../ReleaseNotesTypes/ReleaseNotesTypes.js";import{Container as p,TopContainer as c,HeadingContainer as u,RightContainer as d,ReleaseNoteTypeContainer as h,TitleContainer as j,BodyContainer as v,BtnContainer as g,Button as S,AccordionText as
|
|
1
|
+
import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{useState as t,useRef as i}from"react";import{Typography as s,Icon as l}from"@equinor/eds-core-react";import{arrow_drop_up as m,arrow_drop_down as a}from"@equinor/eds-icons";import{ReleaseNotesTypes as n}from"../../ReleaseNotesTypes/ReleaseNotesTypes.js";import{Container as p,TopContainer as c,HeadingContainer as u,RightContainer as d,ReleaseNoteTypeContainer as h,TitleContainer as j,BodyContainer as v,BtnContainer as g,Button as S,AccordionText as f}from"./ReleasePost.styles.js";import"../../../../../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../../../../../molecules/RichTextEditor/RichTextEditor.types.js";import"../../../../../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../../../../../atoms/enums/Environment.js";import"../../../../../../atoms/utils/auth_environment.js";import"../../../../Notifications/NotificationProvider.js";import"../../../../../../providers/AuthProvider/AuthProvider.js";import"../../../../../../providers/ReleaseNotesProvider.js";import"../../../../../../providers/SideBarProvider.js";import"../../../../../../providers/SnackbarProvider/SnackbarProvider.js";import"../../../../../../providers/StepperProvider.js";import"../../../../../../providers/TableOfContentsProvider.js";import"../../../../../../providers/ThemeProvider/ThemeProvider.js";import"../../../../../../atoms/style/colors.js";import"../../../../../../atoms/enums/Errors.js";import"../../../../../../atoms/enums/Theme.js";import"../../../../../../atoms/enums/SpacingsMode.js";import{formatDate as P}from"../../../../../../atoms/utils/date.js";import"html2canvas";import"proj4";import"../../../../../../molecules/AnimatedCheckmark/AnimatedCheckmark.styles.js";import"../../../../../../molecules/ApplicationIcon/ApplicationIcon.js";import"../../../../../../molecules/Badge/Badge.styles.js";import"../../../../../../molecules/Banner/Banner.styles.js";import"../../../../../../molecules/Chip/Chip.js";import"../../../../../../molecules/ContentMenu/ContentMenu.styles.js";import"../../../../../../molecules/DatePicker/DatePicker.js";import"../../../../../../molecules/Dialog/Dialog.js";import"../../../../../../molecules/EquinorLogo/EquinorLogo.js";import"../../../../../../molecules/FileProgress/CompactFileProgress.styles.js";import"../../../../../../molecules/FileProgress/RegularFileProgress.styles.js";import"../../../../../../molecules/FileUploadArea/FileUploadArea.js";import"../../../../../../molecules/FullPageSpinner/FullPageSpinner.js";import"../../../../../../molecules/InfoElement/InfoElement.js";import"../../../../../../molecules/OptionalTooltip/OptionalTooltip.js";import"../../../../../../molecules/ProfileAvatar/ProfileAvatar.js";import{RichTextDisplay as R}from"../../../../../../molecules/RichTextDisplay/RichTextDisplay.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.js";import"@tiptap/react";import"../../../../../../molecules/RichTextEditor/RichTextEditor.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuButton.js";import"../../../../../../molecules/Search/Search.js";import"react-router-dom";import"../../../../../../molecules/Sieve/Sieve.styles.js";import"../../../../../../molecules/SingleFilterMenu/SingleFilterMenu.js";import"../../../../../../molecules/Skeleton/SkeletonBase/SkeletonBase.js";import"../../../../../../molecules/Skeleton/Skeleton.styles.js";import"../../../../../../molecules/Stepper/Stepper.js";import"../../../../../../molecules/OptionDrawer/OptionDrawer.js";import"../../../../../../molecules/Select/Select.styles.js";import"../../../../../../molecules/ListItem/ListItem.js";import"../../../../../../molecules/SelectionControls/Checkbox/Checkbox.js";import"../../../../../../molecules/SelectionControls/Radio/Radio.js";import"../../../../../../molecules/SelectionControls/Switch/Switch.js";import{releaseNoteImageRead as y}from"./ReleasePost.utils.js";import{motion as T}from"framer-motion";const k=({createdDate:k,version:x,releaseDate:C,tags:E,title:B,body:D})=>{const[A,M]=t(!1),[F,b]=t(!1),I=i(new ResizeObserver((e=>{const{height:o}=e[0].contentRect;b(o>108)}))),q=A?"Read less":"Read more";return e(p,{"data-testid":"release-post",children:o(T.div,{initial:{height:"250px"},animate:{height:A?"auto":"250px"},children:[o(c,{children:[o(u,{children:[e(s,{group:"paragraph",variant:"overline",children:P(C||k,{format:"DD. month YYYY"})}),e(s,{group:"paragraph",variant:"overline",children:x})]}),e(d,{children:E?.map((o=>e(h,{children:e(n,{name:o,active:!0,showIcon:!1})},o)))})]}),e(j,{children:e(s,{group:"heading",variant:"h3",children:B})}),e(v,{ref:e=>{e&&I.current.observe(e)},children:e(R,{value:D,onImageRead:y})}),e(g,{$open:F,children:F&&e(S,{variant:"ghost_icon",onClick:()=>{M((e=>!e))},children:o(r,A?{children:[e(f,{children:q}),e(l,{data:m})]}:{children:[e(f,{children:q}),e(l,{data:a})]})})})]})})};export{k as ReleasePost};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { FC, MutableRefObject, ReactElement, ReactNode } from 'react';
|
|
2
|
-
import { tutorialOptions } from './Tutorials/TutorialInfoDialog';
|
|
3
2
|
export interface ResourcesProps {
|
|
4
3
|
field?: string;
|
|
5
4
|
hideFeedback?: boolean;
|
|
6
5
|
hideReleaseNotes?: boolean;
|
|
7
6
|
hideLearnMore?: boolean;
|
|
8
7
|
children?: ReactNode;
|
|
9
|
-
showTutorials?: boolean;
|
|
10
|
-
tutorialOptions?: tutorialOptions[];
|
|
11
8
|
customButton?: (ref: MutableRefObject<HTMLButtonElement | null>, onToggle: () => void) => ReactElement;
|
|
12
9
|
}
|
|
13
10
|
export declare const Resources: FC<ResourcesProps>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{jsxs as e,Fragment as o,jsx as r}from"react/jsx-runtime";import{useState as
|
|
1
|
+
import{jsxs as e,Fragment as o,jsx as r}from"react/jsx-runtime";import{useState as i,useRef as t,useMemo as n}from"react";import{Dialog as s,Divider as a,Button as l,Icon as m}from"@equinor/eds-core-react";import{arrow_back as c,report_bug as d,lightbulb as p,file_description as u,school as h}from"@equinor/eds-icons";import{TopBarButton as f}from"../TopBar.styles.js";import{TopBarMenu as g}from"../TopBarMenu.js";import{TransferToAppDialog as j}from"../TransferToAppDialog.js";import{Feedback as v}from"./Feedback/Feedback.js";import{FeedbackType as k}from"./Feedback/Feedback.types.js";import{ReleaseNotes as T}from"./ReleaseNotesDialog/ReleaseNotes.js";import{ResourceMenuItem as C}from"./ResourceMenuItem.js";import{amplify_small_portal as R,amplify_resources as x}from"../../../atoms/icons/other.js";import"../../../atoms/style/colors.js";import{spacings as b}from"../../../atoms/style/spacings.js";import{environment as y}from"../../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../../../molecules/RichTextEditor/RichTextEditor.types.js";import{useReleaseNotes as N}from"../../../providers/ReleaseNotesProvider.js";import O from"styled-components";const{PORTAL_URL_WITHOUT_LOCALHOST:S}=y,B=O(s)`
|
|
2
2
|
width: fit-content;
|
|
3
|
-
`,
|
|
4
|
-
padding: ${
|
|
5
|
-
${
|
|
6
|
-
`,
|
|
3
|
+
`,G=O.div`
|
|
4
|
+
padding: ${b.medium} ${b.medium} ${b.small}
|
|
5
|
+
${b.medium};
|
|
6
|
+
`,U=({field:b,hideFeedback:y=!1,hideReleaseNotes:O=!1,hideLearnMore:U=!1,children:I,customButton:L})=>{const{open:E,toggle:F}=N(),[H,_]=i(!1),[A,$]=i(!1),[D,M]=i(!1),[P,q]=i(void 0),w=t(null),[W,z]=i(void 0),J=()=>{q(void 0),_(!1)},K=()=>_((e=>!e)),Q=e=>{z(e?.currentTarget.id),$(!0)},V=()=>{z(void 0),J(),$(!1)},X=()=>q(void 0),Y=()=>{M(!0)},Z=n((()=>"learn-more"===P?e(o,{children:[r(C,{text:"Open Application portal",icon:R,onClick:Y,isHref:!0}),I&&!y&&!O&&r(a,{style:{margin:0}}),I&&r("div",{onClick:J,children:I}),r(G,{children:e(l,{variant:"outlined",onClick:X,children:[r(m,{data:c})," Back"]})})]}):null),[I,y,O,P]);return e(o,{children:[L?L(w,K):r(f,{variant:"ghost_icon",ref:w,id:"anchor-match","aria-haspopup":"true","aria-expanded":H,"aria-controls":"menu-match",onClick:K,children:r(m,{data:x})}),r(g,{open:H&&!E&&!A,title:"Resources",onClose:J,anchorEl:w.current,children:Z||e(o,{children:[r(C,{id:k.BUG,onClick:Q,icon:d,text:"Report a bug",lastItem:!0}),r(C,{id:k.SUGGESTION,onClick:Q,icon:p,text:"Suggest idea",lastItem:!0}),!O&&r(C,{id:"release-notes",icon:u,onClick:F,text:"Open release notes",isHref:!0}),!U&&r(C,{text:"Learn more",icon:h,onClick:()=>q("learn-more")})]})}),E&&r(T,{}),!y&&void 0!==W&&e(B,{open:W===k.BUG||W===k.SUGGESTION,onClose:V,isDismissable:!0,children:[r(s.Header,{children:W===k.BUG?"Report a bug - ServiceNow":"Suggest a feature"}),r(v,{field:b,selectedType:W,onClose:V})]}),D&&r(j,{onClose:()=>{M(!1),J()},url:S,applicationName:"Portal"})]})};export{U as Resources};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as
|
|
1
|
+
import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as t,Typography as o,Button as s,Icon as n,LinearProgress as a}from"@equinor/eds-core-react";import{close as m}from"@equinor/eds-icons";import"react";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useFakeProgress as p}from"../../atoms/hooks/useFakeProgress.js";import"../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"./Notifications/NotificationProvider.js";import"../../providers/AuthProvider/AuthProvider.js";import"../../providers/ReleaseNotesProvider.js";import"../../providers/SideBarProvider.js";import"../../providers/SnackbarProvider/SnackbarProvider.js";import"../../providers/StepperProvider.js";import"../../providers/TableOfContentsProvider.js";import"../../providers/ThemeProvider/ThemeProvider.js";import"../../atoms/style/colors.js";import{spacings as d}from"../../atoms/style/spacings.js";import"html2canvas";import"proj4";import{capitalize as l}from"../../atoms/utils/string.js";import{AnimatedCheckmark as c}from"../../molecules/AnimatedCheckmark/AnimatedCheckmark.js";import h from"styled-components";const u=h(t)`
|
|
2
2
|
width: 400px;
|
|
3
3
|
height: 323px;
|
|
4
4
|
`,v=h.div`
|
|
@@ -15,7 +15,7 @@ import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as
|
|
|
15
15
|
width: 100%;
|
|
16
16
|
max-width: 370px;
|
|
17
17
|
padding: ${d.medium} ${d.large};
|
|
18
|
-
`,f=h(
|
|
18
|
+
`,f=h(o)`
|
|
19
19
|
span {
|
|
20
20
|
text-transform: capitalize;
|
|
21
21
|
}
|
|
@@ -30,4 +30,4 @@ import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as
|
|
|
30
30
|
width: 100%;
|
|
31
31
|
align-items: center;
|
|
32
32
|
padding: ${d.large} 0;
|
|
33
|
-
`,x=({onClose:d,applicationName:h,url:x})=>{const{finished:P,progress:k}=p({onDone:()=>window.open(x,"_self")});return r(e,{children:i(u,{open:!0,children:[i(
|
|
33
|
+
`,x=({onClose:d,applicationName:h,url:x})=>{const{finished:P,progress:k}=p({onDone:()=>window.open(x,"_self")});return r(e,{children:i(u,{open:!0,children:[i(t.Header,{children:["Open link",r(s,{variant:"ghost_icon",onClick:d,"data-testid":"close-transfer-app",children:r(n,{data:m})})]}),r(t.CustomContent,{children:r(v,{children:P?i(g,{children:[r(f,{variant:"h3",children:r("span",{children:l(h)})}),r(c,{size:"small"})]}):i(j,{children:[i(o,{variant:"h3",children:["Transferring you to application.",".".repeat(k/35)]}),r(a,{variant:"determinate",value:k})]})})})]})})};export{x as TransferToAppDialog};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MyTutorialDto } from '@equinor/subsurface-app-management';
|
|
3
|
+
interface TutorialItemProps extends MyTutorialDto {
|
|
4
|
+
onTutorialStart: (tutorialId: string) => void;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const TutorialItem: FC<TutorialItemProps>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Icon as i,Typography as a}from"@equinor/eds-core-react";import{check as o,chevron_right as e}from"@equinor/eds-icons";import{useTutorials as n}from"@equinor/subsurface-app-management";import{animation as s}from"../../../atoms/style/animation.js";import{colors as m}from"../../../atoms/style/colors.js";import{spacings as l}from"../../../atoms/style/spacings.js";import c from"styled-components";const p=c.button`
|
|
2
|
+
display: grid;
|
|
3
|
+
align-items: center;
|
|
4
|
+
grid-template-columns: 1fr auto;
|
|
5
|
+
row-gap: ${l.small};
|
|
6
|
+
padding: ${l.medium};
|
|
7
|
+
transition: background ${s.transitionMS};
|
|
8
|
+
> header {
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
gap: ${l.small};
|
|
12
|
+
grid-column: span 2;
|
|
13
|
+
> p {
|
|
14
|
+
color: ${m.interactive.primary__resting.rgba};
|
|
15
|
+
font-weight: 500;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
&:hover {
|
|
19
|
+
background: ${m.interactive.primary__hover_alt.rgba};
|
|
20
|
+
}
|
|
21
|
+
`,d=({onTutorialStart:s,onClose:l,id:c,name:d})=>{const{startTutorial:g,seenTutorialIDs:u}=n(),f=u.includes(c);return r(p,{onClick:()=>{g(c),s(c),l()},children:[f&&r("header",{children:[t(i,{data:o,size:16,color:m.interactive.primary__resting.rgba}),t(a,{varinat:"caption",children:"COMPLETED"})]}),t(a,{variant:"h4",children:d}),t(i,{data:e,color:m.interactive.primary__resting.rgba})]})};export{d as TutorialItem};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as r,Fragment as o,jsx as t}from"react/jsx-runtime";import{useState as e,useRef as i}from"react";import{Icon as n,Typography as a,Divider as l}from"@equinor/eds-core-react";import{youtube_alt as s}from"@equinor/eds-icons";import{useTutorials as c}from"@equinor/subsurface-app-management";import{TutorialItem as m}from"./TutorialItem.js";import{Container as p,TutorialList as h}from"./Tutorials.styles.js";import{TopBarButton as u}from"../TopBar.styles.js";import{TopBarMenu as d}from"../TopBarMenu.js";const f=({onTutorialStart:f})=>{const{allTutorials:g,tutorialsOnThisPage:T}=c(),[j,v]=e(!1),C=i(null),q=g.filter((r=>-1===T.findIndex((o=>o.id===r.id)))),x=()=>v((r=>!r));return r(o,{children:[t(u,{variant:"ghost_icon",ref:C,onClick:x,children:t(n,{data:s})}),j&&t(d,{open:!0,onClose:x,anchorEl:C.current,children:r(p,{children:[r(a,{variant:"h4",children:["Available Tutorials (",g.length,")"]}),T.length>0&&r(h,{children:[t(a,{variant:"caption",children:"For current page"}),T.map((r=>t(m,{onTutorialStart:f,onClose:x,...r},r.id)))]}),T.length>0&&q.length>0&&t(l,{}),q.length>0&&r(h,{children:[t(a,{variant:"caption",children:"For other pages"}),q.map((r=>t(m,{onTutorialStart:f,onClose:x,...r},r.id)))]})]})})]})};export{f as Tutorials};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
2
|
+
export declare const TutorialList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import"../../../atoms/style/colors.js";import{spacings as o}from"../../../atoms/style/spacings.js";import t from"styled-components";const i=t.div`
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
padding: ${o.large};
|
|
5
|
+
width: 520px;
|
|
6
|
+
> h4 {
|
|
7
|
+
margin-bottom: ${o.x_large};
|
|
8
|
+
}
|
|
9
|
+
> hr {
|
|
10
|
+
margin-bottom: ${o.x_large};
|
|
11
|
+
}
|
|
12
|
+
`,m=t.section`
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
> p:first-child {
|
|
16
|
+
margin-bottom: ${o.medium_small};
|
|
17
|
+
}
|
|
18
|
+
`;export{i as Container,m as TutorialList};
|
|
@@ -4,6 +4,7 @@ import { FieldMenu } from './FieldMenu/FieldMenu';
|
|
|
4
4
|
import { GuidelineSections } from './Guidelines/Guidelines';
|
|
5
5
|
import { Notifications } from './Notifications/Notifications';
|
|
6
6
|
import { Resources } from './Resources/Resources';
|
|
7
|
+
import { Tutorials } from './Tutorials/Tutorials';
|
|
7
8
|
import { Actions } from './Actions';
|
|
8
9
|
import { Guidelines } from './Guidelines';
|
|
9
10
|
import { Settings, SettingsProps } from './Settings';
|
|
@@ -17,6 +18,7 @@ type TopBarType = typeof BaseTopBar & {
|
|
|
17
18
|
FieldSelector: typeof FieldMenu;
|
|
18
19
|
Resources: typeof Resources;
|
|
19
20
|
ApplicationDrawer: typeof ApplicationDrawer;
|
|
21
|
+
Tutorials: typeof Tutorials;
|
|
20
22
|
};
|
|
21
23
|
export declare const TopBar: TopBarType;
|
|
22
24
|
export type { GuidelineSections, SettingsProps, TopBarType };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Account as o}from"./Account/Account.js";import{ApplicationDrawer as i}from"./ApplicationDrawer/ApplicationDrawer.js";import{FieldMenu as r}from"./FieldMenu/FieldMenu.js";import{Notifications as t}from"./Notifications/Notifications.js";import{Resources as s}from"./Resources/Resources.js";import{
|
|
1
|
+
import{Account as o}from"./Account/Account.js";import{ApplicationDrawer as i}from"./ApplicationDrawer/ApplicationDrawer.js";import{FieldMenu as r}from"./FieldMenu/FieldMenu.js";import{Notifications as t}from"./Notifications/Notifications.js";import{Resources as s}from"./Resources/Resources.js";import{Tutorials as e}from"./Tutorials/Tutorials.js";import{Actions as m}from"./Actions.js";import{Guidelines as c}from"./Guidelines/index.js";import{Settings as n}from"./Settings.js";import{TopBar as p}from"./TopBar.js";const a=p;a.Account=o,a.Actions=m,a.Guidelines=c,a.Settings=n,a.Notifications=t,a.FieldSelector=r,a.Resources=s,a.ApplicationDrawer=i,a.Tutorials=e;export{a as TopBar};
|
|
@@ -15,5 +15,6 @@ export { TableOfContents } from './TableOfContents/TableOfContents';
|
|
|
15
15
|
export type { TableOfContentsProps } from './TableOfContents/TableOfContents';
|
|
16
16
|
export { Template } from './Template/Template';
|
|
17
17
|
export type { ContentProps, TemplateType } from './Template/Template';
|
|
18
|
+
export { PageTitle } from './PageTitle/PageTitle';
|
|
18
19
|
export { Card, } from '@equinor/eds-core-react';
|
|
19
20
|
export type { CardProps } from '@equinor/eds-core-react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useState as n,useMemo as r}from"react";import{MsalProvider as i}from"@azure/msal-react";import{AuthProviderInner as a}from"./AuthProviderInner.js";import{
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useState as n,useMemo as r}from"react";import{MsalProvider as i}from"@azure/msal-react";import{AuthProviderInner as a}from"./AuthProviderInner.js";import{environment as c,auth as u}from"../../atoms/utils/auth_environment.js";const{msalApp:m}=u,{getIsMock:d,getMockUserPhoto:s,getMockRoles:l}=c,h=t(void 0),p=()=>{const o=e(h);if(void 0===o)throw new Error("useAuth must be used within a AuthContext provider");return o},v={homeAccountId:"mock-home-account-id",environment:"mock",tenantId:"mock-tenant-id",username:"MOCK@equinor.com",localAccountId:"mock-local-account-id",name:"Mock mocksnes",idToken:"fake",idTokenClaims:{id:"claim"},nativeAccountId:"accountid",authorityType:"authority",tenantProfiles:new Map},g=({children:t,loadingComponent:e,unauthorizedComponent:c,withoutLoader:u=!1})=>{const[p,g]=n(void 0),[k,C]=n(),[I,A]=n("loading"),[M,f]=n(),T=r((()=>d(import.meta.env.VITE_IS_MOCK)),[]),_=r((()=>s(import.meta.env.VITE_MOCK_USER_PHOTO)),[]),O=r((()=>l(import.meta.env.VITE_MOCK_ROLES)),[]);return T?("loading"===I&&setTimeout((()=>{A("authorized")}),1e3),o(h.Provider,{value:{roles:O,account:v,photo:_,logout:()=>console.log("Logged out the user!"),authState:I},children:t})):o(h.Provider,{value:{roles:k,account:p,photo:M,logout:()=>m.logoutRedirect(),authState:I},children:o(i,{instance:m,children:o(a,{loadingComponent:e,unauthorizedComponent:c,account:p,setAccount:g,setRoles:C,setPhoto:f,authState:I,setAuthState:A,withoutLoader:u,children:t})})})};export{g as AuthProvider,v as MOCK_USER,p as useAuth};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"react";import"../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../molecules/RichTextEditor/RichTextEditor.types.js";import"../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../atoms/enums/Environment.js";import"../atoms/utils/auth_environment.js";import"../organisms/TopBar/Notifications/NotificationProvider.js";import"./AuthProvider/AuthProvider.js";import"./ReleaseNotesProvider.js";import"./SideBarProvider.js";import"./SnackbarProvider/SnackbarProvider.js";import"./StepperProvider.js";import"./TableOfContentsProvider.js";import"./ThemeProvider/ThemeProvider.js";import"
|
|
1
|
+
import"react";import"../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../molecules/RichTextEditor/RichTextEditor.types.js";import"../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../atoms/enums/Environment.js";import"../atoms/utils/auth_environment.js";import"../organisms/TopBar/Notifications/NotificationProvider.js";import"./AuthProvider/AuthProvider.js";import"./ReleaseNotesProvider.js";import"./SideBarProvider.js";import"./SnackbarProvider/SnackbarProvider.js";import"./StepperProvider.js";import"./TableOfContentsProvider.js";import"./ThemeProvider/ThemeProvider.js";import"../atoms/style/colors.js";import"../atoms/enums/Errors.js";import"../atoms/enums/Theme.js";import"../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";import{sortByDate as t}from"../atoms/utils/sort.js";const e=t=>{const e=[],r=t.filter((t=>t.createdDate)),o=r.map((t=>{const e=new Date(t.createdDate);return{date:e,year:e.getFullYear(),month:e.getMonth()}}));for(const t of r){const r=new Date(t.createdDate),a=r.toLocaleString("en-US",{year:"numeric"}),i=`year${r.toLocaleString("en-US",{year:"numeric"})}`;if(e.find((t=>t.value===i)))continue;const s=o.filter((t=>t.year===r.getFullYear())),n=[...new Map(s.map((t=>[t.month,t]))).values()];n.sort(((t,e)=>e.date.getTime()-t.date.getTime()));const m=n.map((t=>{const e=t.date.toLocaleString("en-US",{month:"long"});return{label:e,value:`${i}--${e}`}}));e.push({label:a,value:i,children:m})}return e.sort(((t,e)=>{const r=parseInt(t.label);return parseInt(e.label)-r})),e},r=t=>`year${t.getFullYear()}--${t.toLocaleDateString("en-GB",{month:"long"})}`,o=e=>e.sort(((e,r)=>t(e.createdDate,r.createdDate)));export{e as extractDatesFromReleaseNotes,r as monthValueToString,o as sortReleaseNotesByDate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useRef as r,useEffect as e}from"react";import{ApiError as t}from"@equinor/subsurface-app-management";import{useQueryClient as s}from"@tanstack/react-query";import{useSnackbar as o}from"./SnackbarProvider.js";const a=({children:a})=>{const n=s(),{showSnackbar:i}=o(),u=r(!1);return e((()=>{if(!u.current){u.current=!0;const r=n.getDefaultOptions();n.setDefaultOptions({...r,queries:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}},mutations:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}}})}}),[n,i]),a};export{a as APIErrorSnackbar};
|
|
@@ -20,5 +20,10 @@ export interface State {
|
|
|
20
20
|
export declare const useSnackbar: () => State;
|
|
21
21
|
export type SnackbarProviderProps = {
|
|
22
22
|
children: ReactNode;
|
|
23
|
+
showAPIErrors?: boolean;
|
|
23
24
|
} & SnackbarProps;
|
|
25
|
+
/**
|
|
26
|
+
* @param children - Children to render under the SnackbarProvider
|
|
27
|
+
* @param showAPIErrors - Set default query options for showing API errors, defaults to true
|
|
28
|
+
*/
|
|
24
29
|
export declare const SnackbarProvider: FC<SnackbarProviderProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e}from"react";import{Icon as n,Typography as a,Snackbar as d,Button as
|
|
1
|
+
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e}from"react";import{Icon as n,Typography as a,Snackbar as d,Button as s}from"@equinor/eds-core-react";import{close as c}from"@equinor/eds-icons";import{APIErrorSnackbar as l}from"./APIErrorSnackbar.js";import{StyledSnackbar as m}from"./SnackbarProvider.styles.js";import{snackbarIcon as h}from"./SnackbarProvider.utils.js";const v=t(void 0),u=()=>{const r=i(v);if(void 0===r)throw new Error("useSnackbar must be used within a SnackbarContextProvider");return r},b=({children:t,showAPIErrors:i=!0,...u})=>{const[b,p]=e(!1),[f,k]=e(void 0),[S,P]=e(u),[x,C]=e(),w=()=>{p(!1),S.onClose&&S.onClose()};return r(v.Provider,{value:{showSnackbar:(r,o)=>{k("string"==typeof r?{text:r,variant:"info"}:r),P(o?.customProps??u),C(o?.action??void 0),p(!0)},setActionDisabledState:r=>{C((o=>o?{...o,disabled:r}:o))},hideSnackbar:()=>p(!1)},children:[i?o(l,{children:t}):t,r(m,{$variant:f?.variant,open:b,onClose:w,autoHideDuration:S.autoHideDuration,placement:S.placement,children:[f&&o(n,{data:h(f.variant)}),o(a,{variant:"body_short",children:f?.text}),x&&o(d.Action,{children:o(s,{disabled:x.disabled,variant:"ghost",onClick:x.handler,children:x.text})}),o(s,{variant:"ghost_icon",onClick:w,children:o(n,{data:c})})]})]})};export{b as SnackbarProvider,u as useSnackbar};
|
|
@@ -27,9 +27,20 @@ interface StepperContextType {
|
|
|
27
27
|
export declare const StepperContext: import("react").Context<StepperContextType | undefined>;
|
|
28
28
|
export declare function useStepper(): StepperContextType;
|
|
29
29
|
export interface StepperProviderProps {
|
|
30
|
-
initialStep?: number;
|
|
31
30
|
steps: [Step, Step, ...Step[]];
|
|
32
31
|
children: ReactNode;
|
|
33
32
|
}
|
|
34
|
-
|
|
33
|
+
interface StepperProviderSyncedToURLParamProps extends StepperProviderProps {
|
|
34
|
+
syncToURLParam: true;
|
|
35
|
+
}
|
|
36
|
+
interface StepperProviderWithoutSyncToURLParamProps extends StepperProviderProps {
|
|
37
|
+
syncToURLParam?: undefined;
|
|
38
|
+
initialStep?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @param steps - Which steps the stepper should have
|
|
42
|
+
* @param syncToURLParam - Assumes step param is at end of path, syncs current step to the URL param
|
|
43
|
+
* @param initialStep - Initial step to start the stepper at, can't be set if you use syncToURLParam
|
|
44
|
+
*/
|
|
45
|
+
export declare const StepperProvider: FC<StepperProviderSyncedToURLParamProps | StepperProviderWithoutSyncToURLParamProps>;
|
|
35
46
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
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.replace(`/${a}`,""),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 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{createContext as t,
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as r,useMemo as n,useEffect as o,useCallback as i,useRef as s,useContext as l}from"react";import{useNavigate as c,useLocation as u}from"react-router";import{useOnScreenMultiple as a}from"../atoms/hooks/useOnScreenMultiple.js";import{getValues as m}from"./TableOfContentsProvider.utils.js";const d=t(void 0);function f(){const e=l(d);if(void 0===e)throw new Error("'useTableOfContents' must be used within provider");return e}const h=({items:t,children:l,hashNavigation:f})=>{const h=c(),{hash:p}=u(),[v,g]=r(t[0]?.value),[b,w]=r([]),[I,O]=r(""!==p),j=n((()=>t.flatMap((e=>m([],e)))),[t]);o((()=>{w(j.map((e=>document.getElementById(e))))}),[j]);const x=i((e=>{if(e.value===v)return!0;if(e.children&&v){return m([],e).includes(v)}return!1}),[v]),A=a(b),C=s(-1),M=i(((e,t)=>{const r=j.findIndex((t=>t===e)),n=b[r];if(n){const e=t?.shouldInstantlyJumpOnMount&&I?"instant":t?.behavior??"smooth";n.scrollIntoView({block:"start",behavior:e}),C.current=r;let o=1/0,i=0;const s=()=>{const e=n?.getBoundingClientRect().top;if(e===o){if(i+=1,i>1)return g(j[r]),f&&(h(`#${j[r]}`,{replace:!0}),O(!1)),void(C.current=-1)}else i=0,o=e;requestAnimationFrame(s)};requestAnimationFrame(s)}}),[b,f,h,I,j]);return o((()=>{if(0===A.length||A.length!==j.length||-1!==C.current)return;let e=-1;for(let t=A.length-1;t>=0;t--)A[t]&&(e=t);-1!==e&&void 0!==j.at(e)&&(g(j[e]),f&&h(`#${j[e]}`,{replace:!0}))}),[f,h,j,A]),e(d.Provider,{value:{items:t,selected:v,setSelected:M,isActive:x},children:l})};export{h as TableOfContentsProvider,f as useTableOfContents};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import{createContext as o,
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{createContext as o,useEffect as t,useContext as e}from"react";import{THEME_LOCALSTORAGE_KEY as i}from"./ThemeProvider.constants.js";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useLocalStorage as s}from"../../atoms/hooks/useLocalStorage.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"../../organisms/TopBar/Notifications/NotificationProvider.js";import"../AuthProvider/AuthProvider.js";import"../ReleaseNotesProvider.js";import"../SideBarProvider.js";import"../SnackbarProvider/SnackbarProvider.js";import"../StepperProvider.js";import"../TableOfContentsProvider.js";import"../../atoms/style/colors.js";import"../../atoms/enums/Errors.js";import{Theme as m}from"../../atoms/enums/Theme.js";import"../../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";const n=o(void 0);function a(){const r=e(n);if(void 0===r)throw new Error("ThemeProvider must be used within Provider");return r}const p=({children:o})=>{const[e,a]=s(i,m.LIGHT);t((()=>{document.documentElement.setAttribute("data-theme",e)}),[e]);return r(n.Provider,{value:{theme:e,setTheme:r=>{a(r)}},children:o})};export{p as ThemeProvider,n as ThemeProviderContext,a as useThemeProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const i={initial:{opacity:0},animate:{opacity:1},transition:{delay:.5,duration:.5}};export{i as TUTORIAL_HIGHLIGHT_ANIMATION_PROPS};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC, ReactElement } from 'react';
|
|
2
|
+
interface TutorialHighlightingContextType {
|
|
3
|
+
customStepContent: Record<string, ReactElement>;
|
|
4
|
+
}
|
|
5
|
+
export declare function useTutorialHighlighting(): TutorialHighlightingContextType;
|
|
6
|
+
interface TutorialHighlightingProviderProps {
|
|
7
|
+
children: ReactElement | ReactElement[];
|
|
8
|
+
customStepContent?: Record<string, ReactElement>;
|
|
9
|
+
}
|
|
10
|
+
export declare const TutorialHighlightingProvider: FC<TutorialHighlightingProviderProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as i}from"react";import{TutorialProvider as o}from"@equinor/subsurface-app-management";import{TutorialHighlightingProviderInner as e}from"./TutorialHighlightingProviderInner.js";const n=t(void 0);function u(){const r=i(n);if(!r)throw new Error("useTutorialHighlighting must be used within a TutorialHighlightingProvider");return r}const m=({children:t,customStepContent:i})=>r(n.Provider,{value:{customStepContent:i??{}},children:r(o,{children:r(e,{children:t})})});export{m as TutorialHighlightingProvider,u as useTutorialHighlighting};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import{jsxs as t,Fragment as i,jsx as e}from"react/jsx-runtime";import{useMemo as r}from"react";import{useTutorials as o}from"@equinor/subsurface-app-management";import{useReversedScrollY as n}from"./hooks/useReversedScrollY.js";import{TutorialPopover as s}from"./TutorialPopover/TutorialPopover.js";import{TUTORIAL_HIGHLIGHT_ANIMATION_PROPS as l}from"./TutorialHighlightingProvider.constants.js";import"../../atoms/style/colors.js";import{spacings as a}from"../../atoms/style/spacings.js";import{getHighlightElementBoundingBox as h}from"../../atoms/utils/tutorials.js";import{motion as d}from"framer-motion";import m from"styled-components";const p=m.svg`
|
|
2
|
+
position: fixed;
|
|
3
|
+
top: 0;
|
|
4
|
+
left: 0;
|
|
5
|
+
height: 100vh;
|
|
6
|
+
width: 100vw;
|
|
7
|
+
z-index: 9999999;
|
|
8
|
+
background: none;
|
|
9
|
+
pointer-events: none;
|
|
10
|
+
`,c=m.div`
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: 0;
|
|
13
|
+
left: 0;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: ${a.medium};
|
|
17
|
+
z-index: 99999999;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
align-items: center;
|
|
20
|
+
width: 100vw;
|
|
21
|
+
height: 100vh;
|
|
22
|
+
background: none;
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
`,g=({children:a})=>{const{activeTutorial:m,activeStep:g,unseenTutorialsOnThisPage:f}=o(),u=n(),v=m?[m]:f,$=r((()=>{if(m&&void 0!==g){if(!m.steps[g].highlightElement)return[];const t=h(m.id,g);return t?[t]:[]}return f.map((t=>{if(t.steps.at(0)?.highlightElement)return h(t.id,0)})).filter((t=>void 0!==t))}),[g,m,f]);return v.length>0?t(i,{children:[a,e(c,{children:v.map((t=>{const i=$.find((i=>i.id===t.id));return e(s,{isHighlighting:$.length>0,...t,...i},t.id)}))}),t(p,{children:[t("mask",{id:"tutorials-rectangles",children:[e("rect",{width:"100%",height:"100%",fill:"white"}),e(d.g,{style:{translateY:u},children:$.map((t=>e(d.path,{"data-testid":`tutorial-mask-${t.id}`,initial:{opacity:0,d:`M ${t.left} ${t.top} h ${t.width} v ${t.height} h -${t.width} Z`},animate:{opacity:1,d:`M ${t.left} ${t.top} h ${t.width} v ${t.height} h -${t.width} Z`},fill:"black"},t.id)))})]}),e(d.rect,{width:"100%",height:"100%",fill:"rgba(111, 111, 111, 0.35)",mask:"url(#tutorials-rectangles)",...l})]})]}):e(i,{children:a})};export{g as TutorialHighlightingProviderInner};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{useTutorials as r}from"@equinor/subsurface-app-management";import{shape as e}from"../../../atoms/style/index.js";import o from"styled-components";import{spacings as i}from"../../../atoms/style/spacings.js";import{colors as a}from"../../../atoms/style/colors.js";import{animation as n}from"../../../atoms/style/animation.js";const s=o.div`
|
|
2
|
+
display: grid;
|
|
3
|
+
gap: ${i.x_small};
|
|
4
|
+
`,m=o.span`
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
height: 4px;
|
|
7
|
+
width: 100%;
|
|
8
|
+
background: ${a.infographic.primary__moss_green_34.rgba};
|
|
9
|
+
border-radius: ${e.rounded.borderRadius};
|
|
10
|
+
position: relative;
|
|
11
|
+
&:after {
|
|
12
|
+
content: '';
|
|
13
|
+
position: absolute;
|
|
14
|
+
background: ${a.interactive.primary__resting.rgba};
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 100%;
|
|
17
|
+
transition: left ${n.transitionMS};
|
|
18
|
+
left: calc(${({$index:t,$activeIndex:r})=>100*(r-t)}%);
|
|
19
|
+
}
|
|
20
|
+
`,p=({stepAmount:e})=>{const{activeStep:o}=r();return t(s,{style:{gridTemplateColumns:`repeat(${e}, 1fr)`},children:Array.from({length:e}).map(((r,e)=>t(m,{$index:e,$activeIndex:o},e)))})};export{p as StepIndicator};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MyTutorialDto } from '@equinor/subsurface-app-management';
|
|
3
|
+
interface TutorialPopoverProps extends MyTutorialDto {
|
|
4
|
+
isHighlighting: boolean;
|
|
5
|
+
top?: number;
|
|
6
|
+
left?: number;
|
|
7
|
+
width?: number;
|
|
8
|
+
height?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const TutorialPopover: FC<TutorialPopoverProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import{jsxs as t,jsx as i,Fragment as o}from"react/jsx-runtime";import{Card as r,Icon as e,Typography as n,Button as a}from"@equinor/eds-core-react";import{info_circle as l}from"@equinor/eds-icons";import{useTutorials as s,useTutorialStepImage as d}from"@equinor/subsurface-app-management";import{useTutorialHighlighting as m}from"../TutorialHighlightingProvider.js";import{TUTORIAL_HIGHLIGHT_ANIMATION_PROPS as h}from"../TutorialHighlightingProvider.constants.js";import{StepIndicator as c}from"./StepIndicator.js";import{elevation as p}from"../../../atoms/style/index.js";import{useReversedScrollY as g}from"../hooks/useReversedScrollY.js";import{motion as u,useTransform as f}from"framer-motion";import v,{css as b}from"styled-components";import{spacings as x}from"../../../atoms/style/spacings.js";import{colors as y}from"../../../atoms/style/colors.js";const $=v(u(r))`
|
|
2
|
+
width: 360px;
|
|
3
|
+
padding: ${x.medium};
|
|
4
|
+
background: ${y.infographic.primary__moss_green_13.rgba};
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
gap: ${x.medium};
|
|
8
|
+
transition:
|
|
9
|
+
top 400ms,
|
|
10
|
+
left 400ms;
|
|
11
|
+
box-shadow: ${p.raised};
|
|
12
|
+
pointer-events: auto;
|
|
13
|
+
> header {
|
|
14
|
+
display: flex;
|
|
15
|
+
gap: ${x.small};
|
|
16
|
+
align-items: center;
|
|
17
|
+
}
|
|
18
|
+
> img {
|
|
19
|
+
max-height: 170px;
|
|
20
|
+
object-fit: contain;
|
|
21
|
+
}
|
|
22
|
+
${({$highlightingElement:t})=>t&&b`
|
|
23
|
+
transform: translateX(-50%);
|
|
24
|
+
&:before {
|
|
25
|
+
z-index: -1;
|
|
26
|
+
content: '';
|
|
27
|
+
width: 32px;
|
|
28
|
+
height: 26px;
|
|
29
|
+
background: ${y.infographic.primary__moss_green_13.rgba};
|
|
30
|
+
position: absolute;
|
|
31
|
+
top: 0;
|
|
32
|
+
left: 50%;
|
|
33
|
+
transform: translate(-50%, 0) rotate(45deg);
|
|
34
|
+
}
|
|
35
|
+
`}
|
|
36
|
+
`,_=v.div`
|
|
37
|
+
display: flex;
|
|
38
|
+
justify-content: flex-end;
|
|
39
|
+
gap: ${x.small};
|
|
40
|
+
&:has(> :last-child:nth-child(3)) {
|
|
41
|
+
> button:first-child {
|
|
42
|
+
margin-right: auto;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`,k=({isHighlighting:r,id:p,top:u,left:v,width:b,height:x,name:k,steps:j})=>{const{customStepContent:C}=m(),{activeTutorial:S,activeStep:T,skipTutorial:w,startTutorial:E,goToNextStep:H,goToPreviousStep:P}=s(),{data:q}=d(S?.steps.at(T)?.imgUrl??void 0),I=g(),D=u&&x?u+x+16:void 0,N=v&&b?v+b/2:void 0,z=!!D&&!!N,A=f(I,(t=>z?t+D:null)),B=()=>{w(p)},F=()=>{E(p)};if(void 0!==T&&j[T].custom&&!C[j[T].id])throw new Error(`[TutorialHighlightingProvider]: Custom step content not found, tutorial ID: ${p}, step ID: ${j[T].id}`);return!z&&r?null:t($,S&&void 0!==T?{style:{position:z?"absolute":void 0,top:A,left:N},$highlightingElement:z,...h,children:[j[T].custom?C[j[T].id]:t(o,{children:[t("header",{children:[i(e,{data:l,color:y.interactive.primary__resting.rgba}),i(n,{variant:"h6",children:j[T]?.title})]}),i(n,{variant:"body_short",children:j[T]?.body}),q?i("img",{src:q,alt:j[T].title}):null]}),t(_,{children:[i(a,{variant:"outlined",disabled:0===T,onClick:P,children:"Back"}),i(a,{variant:"ghost",onClick:B,children:"Cancel"}),i(a,{onClick:H,children:T===j.length-1?"Finish":"Next"})]}),i(c,{stepAmount:j.length})]}:{style:{position:z?"absolute":void 0,top:A,left:N},$highlightingElement:z,...h,children:[t("header",{children:[i(e,{data:l,color:y.interactive.primary__resting.rgba}),i(n,{variant:"h6",children:k})]}),t(_,{children:[i(a,{variant:"ghost",onClick:B,children:"Skip"}),i(a,{onClick:F,children:"Start tour"})]})]})};export{k as TutorialPopover};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useReversedScrollY(): import("framer-motion").MotionValue<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useScroll as t,useTransform as n}from"framer-motion";function o(){const{scrollY:o}=t({container:{current:document.getElementById("content")}});return n(o,(t=>t>0?-1*t:0))}export{o as useReversedScrollY};
|
|
@@ -3,7 +3,7 @@ export { SideBarProvider } from './SideBarProvider';
|
|
|
3
3
|
export { SnackbarProvider } from './SnackbarProvider/SnackbarProvider';
|
|
4
4
|
export { TableOfContentsProvider } from './TableOfContentsProvider';
|
|
5
5
|
export { ReleaseNotesProvider } from './ReleaseNotesProvider';
|
|
6
|
-
export {
|
|
6
|
+
export { TutorialHighlightingProvider } from './TutorialHighlightingProvider/TutorialHighlightingProvider';
|
|
7
7
|
export { LoadingProvider } from './LoadingProvider';
|
|
8
8
|
export { ThemeProvider } from './ThemeProvider/ThemeProvider';
|
|
9
9
|
export { StepperProvider } from './StepperProvider';
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { AmplifyApplication, ImpersonateUserDto, MyFeatureDto, ReleaseNote } from '@equinor/subsurface-app-management';
|
|
1
|
+
import { AmplifyApplication, ImpersonateUserDto, MyFeatureDto, MyTutorialDto, ReleaseNote } from '@equinor/subsurface-app-management';
|
|
2
2
|
import { GraphAppRole } from '@equinor/subsurface-app-management/dist/api/models/GraphAppRole';
|
|
3
3
|
export declare const fakeReleaseNotes: ReleaseNote[];
|
|
4
4
|
export declare const FAKE_ROLES: GraphAppRole[];
|
|
5
5
|
export declare const fakeImpersonateUsers: ImpersonateUserDto[];
|
|
6
|
+
export declare function fakeTutorial(id: string, willPopUp: boolean, highlightElement: boolean, path?: string): MyTutorialDto;
|
|
7
|
+
export declare const FAKE_TUTORIALS: MyTutorialDto[];
|
|
6
8
|
export declare const FAKE_APPS: AmplifyApplication[];
|
|
7
9
|
export declare const FAKE_FEATURE_TOGGLES: MyFeatureDto[];
|
|
10
|
+
export declare const tokenHandler: import("msw").HttpHandler;
|
|
11
|
+
export declare const getTutorialImageHandler: import("msw").HttpHandler;
|
|
8
12
|
export declare const handlers: import("msw").HttpHandler[];
|