box-ui-elements 23.4.0-beta.21 → 23.4.0-beta.23
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/explorer.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/components/flyout/OverlayHeader.js +6 -3
- package/es/components/flyout/OverlayHeader.js.map +1 -1
- package/es/elements/common/nav-router/NavRouter.js +7 -3
- package/es/elements/common/nav-router/NavRouter.js.flow +10 -1
- package/es/elements/common/nav-router/NavRouter.js.map +1 -1
- package/es/elements/common/nav-router/types.js.map +1 -1
- package/es/elements/common/nav-router/withNavRouter.js +10 -1
- package/es/elements/common/nav-router/withNavRouter.js.flow +5 -0
- package/es/elements/common/nav-router/withNavRouter.js.map +1 -1
- package/es/elements/common/routing/withRouterAndRef.js +17 -3
- package/es/elements/common/routing/withRouterAndRef.js.flow +11 -3
- package/es/elements/common/routing/withRouterAndRef.js.map +1 -1
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +22 -13
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.flow +30 -17
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.map +1 -1
- package/es/elements/content-sidebar/ContentSidebar.js +3 -1
- package/es/elements/content-sidebar/ContentSidebar.js.flow +2 -1
- package/es/elements/content-sidebar/ContentSidebar.js.map +1 -1
- package/es/elements/content-sidebar/SidebarNavButton.js +49 -1
- package/es/elements/content-sidebar/SidebarNavButton.js.flow +65 -3
- package/es/elements/content-sidebar/SidebarNavButton.js.map +1 -1
- package/es/elements/content-sidebar/SidebarToggle.js +27 -9
- package/es/elements/content-sidebar/SidebarToggle.js.flow +29 -6
- package/es/elements/content-sidebar/SidebarToggle.js.map +1 -1
- package/es/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.js +12 -1
- package/es/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.js.map +1 -1
- package/es/features/header-flyout/HeaderFlyout.js +6 -3
- package/es/features/header-flyout/HeaderFlyout.js.flow +15 -2
- package/es/features/header-flyout/HeaderFlyout.js.map +1 -1
- package/es/features/header-flyout/styles/HeaderFlyout.scss +2 -0
- package/es/src/components/flyout/OverlayHeader.d.ts +3 -1
- package/es/src/elements/common/nav-router/NavRouter.d.ts +3 -1
- package/es/src/elements/common/nav-router/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/flyout/OverlayHeader.tsx +7 -3
- package/src/components/flyout/__tests__/OverlayHeader.test.js +25 -0
- package/src/elements/common/nav-router/NavRouter.js.flow +10 -1
- package/src/elements/common/nav-router/NavRouter.tsx +9 -3
- package/src/elements/common/nav-router/__tests__/withNavRouter.test.tsx +34 -20
- package/src/elements/common/nav-router/types.ts +2 -0
- package/src/elements/common/nav-router/withNavRouter.js.flow +5 -0
- package/src/elements/common/nav-router/withNavRouter.tsx +9 -1
- package/src/elements/common/routing/__tests__/withRouterAndRef.test.js +64 -12
- package/src/elements/common/routing/withRouterAndRef.js +11 -3
- package/src/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +30 -17
- package/src/elements/content-sidebar/ContentSidebar.js +2 -1
- package/src/elements/content-sidebar/SidebarNavButton.js +65 -3
- package/src/elements/content-sidebar/SidebarToggle.js +29 -6
- package/src/elements/content-sidebar/__tests__/SidebarNavButton.test.js +155 -3
- package/src/elements/content-sidebar/__tests__/SidebarToggle.test.js +74 -10
- package/src/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.tsx +14 -1
- package/src/features/header-flyout/HeaderFlyout.js +15 -2
- package/src/features/header-flyout/__tests__/__snapshots__/HeaderFlyout.test.js.snap +9 -3
- package/src/features/header-flyout/styles/HeaderFlyout.scss +2 -0
- package/src/elements/content-sidebar/__tests__/__snapshots__/SidebarToggle.test.js.snap +0 -19
|
@@ -6,11 +6,14 @@ import FlyoutContext from './FlyoutContext';
|
|
|
6
6
|
import './OverlayHeader.scss';
|
|
7
7
|
const OverlayHeader = ({
|
|
8
8
|
children,
|
|
9
|
-
className
|
|
9
|
+
className,
|
|
10
|
+
isOverlayHeaderActionEnabled = false
|
|
10
11
|
}) => {
|
|
11
12
|
const handleClick = event => {
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
if (!isOverlayHeaderActionEnabled) {
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
event.stopPropagation();
|
|
16
|
+
}
|
|
14
17
|
};
|
|
15
18
|
// @ts-ignore TODO: figure out why this is giving a TS error
|
|
16
19
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayHeader.js","names":["React","classNames","CloseButton","FlyoutContext","OverlayHeader","children","className","handleClick","event","preventDefault","stopPropagation","closeOverlay","useContext","createElement","onClick","role"],"sources":["../../../src/components/flyout/OverlayHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport classNames from 'classnames';\nimport CloseButton from '../close-button/CloseButton';\n// @ts-ignore flow\nimport FlyoutContext from './FlyoutContext';\n\nimport './OverlayHeader.scss';\n\nexport interface OverlayHeaderProps {\n /** Components to render in the header */\n children?: React.ReactNode;\n /** Set className to the overlay header */\n className?: string;\n}\n\nconst OverlayHeader = ({ children, className }: OverlayHeaderProps) => {\n const handleClick = (event: React.SyntheticEvent<HTMLDivElement>): void => {\n event.preventDefault();\n
|
|
1
|
+
{"version":3,"file":"OverlayHeader.js","names":["React","classNames","CloseButton","FlyoutContext","OverlayHeader","children","className","isOverlayHeaderActionEnabled","handleClick","event","preventDefault","stopPropagation","closeOverlay","useContext","createElement","onClick","role"],"sources":["../../../src/components/flyout/OverlayHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport classNames from 'classnames';\nimport CloseButton from '../close-button/CloseButton';\n// @ts-ignore flow\nimport FlyoutContext from './FlyoutContext';\n\nimport './OverlayHeader.scss';\n\nexport interface OverlayHeaderProps {\n /** Components to render in the header */\n children?: React.ReactNode;\n /** Set className to the overlay header */\n className?: string;\n /** Are OverlayHeader actions enabled */\n isOverlayHeaderActionEnabled?: boolean;\n}\n\nconst OverlayHeader = ({ children, className, isOverlayHeaderActionEnabled = false }: OverlayHeaderProps) => {\n const handleClick = (event: React.SyntheticEvent<HTMLDivElement>): void => {\n if (!isOverlayHeaderActionEnabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n // @ts-ignore TODO: figure out why this is giving a TS error\n const { closeOverlay } = React.useContext(FlyoutContext);\n\n return (\n <div\n className={classNames('bdl-OverlayHeader', className)}\n data-testid=\"bdl-OverlayHeader\"\n onClick={handleClick}\n role=\"presentation\"\n >\n <div className=\"bdl-OverlayHeader-content\">{children}</div>\n <CloseButton onClick={closeOverlay} />\n </div>\n );\n};\n\nexport default OverlayHeader;\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,WAAW,MAAM,6BAA6B;AACrD;AACA,OAAOC,aAAa,MAAM,iBAAiB;AAE3C,OAAO,sBAAsB;AAW7B,MAAMC,aAAa,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,4BAA4B,GAAG;AAA0B,CAAC,KAAK;EACzG,MAAMC,WAAW,GAAIC,KAA2C,IAAW;IACvE,IAAI,CAACF,4BAA4B,EAAE;MAC/BE,KAAK,CAACC,cAAc,CAAC,CAAC;MACtBD,KAAK,CAACE,eAAe,CAAC,CAAC;IAC3B;EACJ,CAAC;EACD;EACA,MAAM;IAAEC;EAAa,CAAC,GAAGZ,KAAK,CAACa,UAAU,CAACV,aAAa,CAAC;EAExD,oBACIH,KAAA,CAAAc,aAAA;IACIR,SAAS,EAAEL,UAAU,CAAC,mBAAmB,EAAEK,SAAS,CAAE;IACtD,eAAY,mBAAmB;IAC/BS,OAAO,EAAEP,WAAY;IACrBQ,IAAI,EAAC;EAAc,gBAEnBhB,KAAA,CAAAc,aAAA;IAAKR,SAAS,EAAC;EAA2B,GAAED,QAAc,CAAC,eAC3DL,KAAA,CAAAc,aAAA,CAACZ,WAAW;IAACa,OAAO,EAAEH;EAAa,CAAE,CACpC,CAAC;AAEd,CAAC;AAED,eAAeR,aAAa","ignoreList":[]}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
const _excluded = ["children", "history"];
|
|
1
|
+
const _excluded = ["children", "features", "history"];
|
|
2
2
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
3
3
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { MemoryRouter, Router } from 'react-router';
|
|
6
|
+
import { isFeatureEnabled } from '../feature-checking';
|
|
6
7
|
const NavRouter = _ref => {
|
|
7
8
|
let {
|
|
8
9
|
children,
|
|
10
|
+
features,
|
|
9
11
|
history
|
|
10
12
|
} = _ref,
|
|
11
13
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
14
|
+
const isRouterDisabled = isFeatureEnabled(features, 'routerDisabled.value');
|
|
15
|
+
if (isRouterDisabled) {
|
|
16
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
17
|
+
}
|
|
12
18
|
if (history) {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
-
// @ts-ignore
|
|
15
19
|
return /*#__PURE__*/React.createElement(Router, {
|
|
16
20
|
history: history
|
|
17
21
|
}, children);
|
|
@@ -6,13 +6,22 @@
|
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { MemoryRouter, Router } from 'react-router-dom';
|
|
8
8
|
import type { RouterHistory } from 'react-router-dom';
|
|
9
|
+
import { isFeatureEnabled, type FeatureConfig } from '../feature-checking';
|
|
9
10
|
|
|
10
11
|
type Props = {
|
|
11
12
|
children: React.Node,
|
|
13
|
+
features?: FeatureConfig,
|
|
12
14
|
history?: RouterHistory,
|
|
15
|
+
initialEntries?: Array<any>,
|
|
13
16
|
};
|
|
14
17
|
|
|
15
|
-
const NavRouter = ({ children, history, ...rest }: Props) => {
|
|
18
|
+
const NavRouter = ({ children, features, history, ...rest }: Props) => {
|
|
19
|
+
const isRouterDisabled = isFeatureEnabled(features, 'routerDisabled.value');
|
|
20
|
+
|
|
21
|
+
if (isRouterDisabled) {
|
|
22
|
+
return <>{children}</>;
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
if (history) {
|
|
17
26
|
return <Router history={history}>{children}</Router>;
|
|
18
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavRouter.js","names":["React","MemoryRouter","Router","NavRouter","_ref","children","history","rest","_objectWithoutProperties","_excluded","createElement"],"sources":["../../../../src/elements/common/nav-router/NavRouter.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MemoryRouter, Router } from 'react-router';\nimport { History } from 'history';\n\ntype Props = {\n children: React.ReactNode;\n history?: History;\n initialEntries?: History.LocationDescriptor[];\n};\n\nconst NavRouter = ({ children, history, ...rest }: Props) => {\n if (
|
|
1
|
+
{"version":3,"file":"NavRouter.js","names":["React","MemoryRouter","Router","isFeatureEnabled","NavRouter","_ref","children","features","history","rest","_objectWithoutProperties","_excluded","isRouterDisabled","createElement","Fragment"],"sources":["../../../../src/elements/common/nav-router/NavRouter.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MemoryRouter, Router } from 'react-router';\nimport { History } from 'history';\nimport { isFeatureEnabled, type FeatureConfig } from '../feature-checking';\n\ntype Props = {\n children: React.ReactNode;\n features?: FeatureConfig;\n history?: History;\n initialEntries?: History.LocationDescriptor[];\n};\n\nconst NavRouter = ({ children, features, history, ...rest }: Props) => {\n const isRouterDisabled = isFeatureEnabled(features, 'routerDisabled.value');\n \n if (isRouterDisabled) {\n return <>{children}</>;\n }\n\n if (history) {\n return <Router history={history}>{children}</Router>;\n }\n\n return <MemoryRouter {...rest}>{children}</MemoryRouter>;\n};\n\nexport default NavRouter;\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,YAAY,EAAEC,MAAM,QAAQ,cAAc;AAEnD,SAASC,gBAAgB,QAA4B,qBAAqB;AAS1E,MAAMC,SAAS,GAAGC,IAAA,IAAqD;EAAA,IAApD;MAAEC,QAAQ;MAAEC,QAAQ;MAAEC;IAAwB,CAAC,GAAAH,IAAA;IAAbI,IAAI,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EACrD,MAAMC,gBAAgB,GAAGT,gBAAgB,CAACI,QAAQ,EAAE,sBAAsB,CAAC;EAE3E,IAAIK,gBAAgB,EAAE;IAClB,oBAAOZ,KAAA,CAAAa,aAAA,CAAAb,KAAA,CAAAc,QAAA,QAAGR,QAAW,CAAC;EAC1B;EAEA,IAAIE,OAAO,EAAE;IACT,oBAAOR,KAAA,CAAAa,aAAA,CAACX,MAAM;MAACM,OAAO,EAAEA;IAAQ,GAAEF,QAAiB,CAAC;EACxD;EAEA,oBAAON,KAAA,CAAAa,aAAA,CAACZ,YAAY,EAAKQ,IAAI,EAAGH,QAAuB,CAAC;AAC5D,CAAC;AAED,eAAeF,SAAS","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/common/nav-router/types.ts"],"sourcesContent":["import { History } from 'history';\n\nexport type WithNavRouterProps = {\n history?: History;\n initialEntries?: History.LocationDescriptor[];\n};\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/common/nav-router/types.ts"],"sourcesContent":["import { History } from 'history';\nimport { FeatureConfig } from '../feature-checking';\n\nexport type WithNavRouterProps = {\n features?: FeatureConfig;\n history?: History;\n initialEntries?: History.LocationDescriptor[];\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
|
|
|
3
3
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import NavRouter from './NavRouter';
|
|
6
|
+
import { isFeatureEnabled } from '../feature-checking';
|
|
6
7
|
const withNavRouter = Component => {
|
|
7
8
|
function WithNavRouter(_ref) {
|
|
8
9
|
let {
|
|
@@ -10,9 +11,17 @@ const withNavRouter = Component => {
|
|
|
10
11
|
initialEntries
|
|
11
12
|
} = _ref,
|
|
12
13
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
14
|
+
const {
|
|
15
|
+
features
|
|
16
|
+
} = rest;
|
|
17
|
+
const isRouterDisabled = isFeatureEnabled(features, 'routerDisabled.value');
|
|
18
|
+
if (isRouterDisabled) {
|
|
19
|
+
return /*#__PURE__*/React.createElement(Component, rest);
|
|
20
|
+
}
|
|
13
21
|
return /*#__PURE__*/React.createElement(NavRouter, {
|
|
14
22
|
history: history,
|
|
15
|
-
initialEntries: initialEntries
|
|
23
|
+
initialEntries: initialEntries,
|
|
24
|
+
features: features
|
|
16
25
|
}, /*#__PURE__*/React.createElement(Component, rest));
|
|
17
26
|
}
|
|
18
27
|
WithNavRouter.displayName = `withNavRouter(${Component.displayName || Component.name || 'Component'}`;
|
|
@@ -6,9 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
import React from "react";
|
|
8
8
|
import { History } from "history";
|
|
9
|
+
import { type FeatureConfig } from '../feature-checking';
|
|
9
10
|
import NavRouter from "./NavRouter";
|
|
11
|
+
|
|
10
12
|
export type WithNavRouterProps = {
|
|
13
|
+
features?: FeatureConfig,
|
|
11
14
|
history?: History,
|
|
15
|
+
initialEntries?: Array<any>,
|
|
12
16
|
...
|
|
13
17
|
};
|
|
18
|
+
|
|
14
19
|
declare export var withNavRouter: any; // /* NO PRINT IMPLEMENTED: ArrowFunction */ any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withNavRouter.js","names":["React","NavRouter","withNavRouter","Component","WithNavRouter","_ref","history","initialEntries","rest","_objectWithoutProperties","_excluded","createElement","displayName","name"],"sources":["../../../../src/elements/common/nav-router/withNavRouter.tsx"],"sourcesContent":["import * as React from 'react';\nimport NavRouter from './NavRouter';\nimport { WithNavRouterProps } from './types';\n\nconst withNavRouter = <P extends object>(Component: React.ComponentType<P>): React.FC<P & WithNavRouterProps> => {\n function WithNavRouter({ history, initialEntries, ...rest }: P & WithNavRouterProps) {\n return (\n <NavRouter history={history} initialEntries={initialEntries}>\n <Component {...(rest as P)} />\n </NavRouter>\n );\n }\n\n WithNavRouter.displayName = `withNavRouter(${Component.displayName || Component.name || 'Component'}`;\n\n return WithNavRouter;\n};\n\nexport default withNavRouter;\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,SAAS,MAAM,aAAa;
|
|
1
|
+
{"version":3,"file":"withNavRouter.js","names":["React","NavRouter","isFeatureEnabled","withNavRouter","Component","WithNavRouter","_ref","history","initialEntries","rest","_objectWithoutProperties","_excluded","features","isRouterDisabled","createElement","displayName","name"],"sources":["../../../../src/elements/common/nav-router/withNavRouter.tsx"],"sourcesContent":["import * as React from 'react';\nimport NavRouter from './NavRouter';\nimport { WithNavRouterProps } from './types';\nimport { isFeatureEnabled } from '../feature-checking';\n\nconst withNavRouter = <P extends object>(Component: React.ComponentType<P>): React.FC<P & WithNavRouterProps> => {\n function WithNavRouter({ history, initialEntries, ...rest }: P & WithNavRouterProps) {\n const { features } = rest;\n const isRouterDisabled = isFeatureEnabled(features, 'routerDisabled.value');\n \n if (isRouterDisabled) {\n return <Component {...(rest as P)} />;\n }\n\n return (\n <NavRouter history={history} initialEntries={initialEntries} features={features}>\n <Component {...(rest as P)} />\n </NavRouter>\n );\n }\n\n WithNavRouter.displayName = `withNavRouter(${Component.displayName || Component.name || 'Component'}`;\n\n return WithNavRouter;\n};\n\nexport default withNavRouter;\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,SAAS,MAAM,aAAa;AAEnC,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,MAAMC,aAAa,GAAsBC,SAAiC,IAAuC;EAC7G,SAASC,aAAaA,CAAAC,IAAA,EAA+D;IAAA,IAA9D;QAAEC,OAAO;QAAEC;MAAgD,CAAC,GAAAF,IAAA;MAA9BG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;IACrD,MAAM;MAAEC;IAAS,CAAC,GAAGH,IAAI;IACzB,MAAMI,gBAAgB,GAAGX,gBAAgB,CAACU,QAAQ,EAAE,sBAAsB,CAAC;IAE3E,IAAIC,gBAAgB,EAAE;MAClB,oBAAOb,KAAA,CAAAc,aAAA,CAACV,SAAS,EAAMK,IAAa,CAAC;IACzC;IAEA,oBACIT,KAAA,CAAAc,aAAA,CAACb,SAAS;MAACM,OAAO,EAAEA,OAAQ;MAACC,cAAc,EAAEA,cAAe;MAACI,QAAQ,EAAEA;IAAS,gBAC5EZ,KAAA,CAAAc,aAAA,CAACV,SAAS,EAAMK,IAAa,CACtB,CAAC;EAEpB;EAEAJ,aAAa,CAACU,WAAW,GAAG,iBAAiBX,SAAS,CAACW,WAAW,IAAIX,SAAS,CAACY,IAAI,IAAI,WAAW,EAAE;EAErG,OAAOX,aAAa;AACxB,CAAC;AAED,eAAeF,aAAa","ignoreList":[]}
|
|
@@ -5,9 +5,23 @@ import { Route } from 'react-router-dom';
|
|
|
5
5
|
// Basically a workaround for the fact that react-router's withRouter cannot forward ref's through
|
|
6
6
|
// functional components. Use this instead to gain the benefits of withRouter but also ref forwarding
|
|
7
7
|
export default function withRouterAndRef(Wrapped) {
|
|
8
|
-
const WithRouterAndRef = /*#__PURE__*/React.forwardRef((props, ref) =>
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const WithRouterAndRef = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
9
|
+
const {
|
|
10
|
+
routerDisabled
|
|
11
|
+
} = props;
|
|
12
|
+
|
|
13
|
+
// If router is disabled, return component directly without Route wrapper
|
|
14
|
+
if (routerDisabled) {
|
|
15
|
+
return /*#__PURE__*/React.createElement(Wrapped, _extends({
|
|
16
|
+
ref: ref
|
|
17
|
+
}, props));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Default behavior: wrap with Route to get router props
|
|
21
|
+
return /*#__PURE__*/React.createElement(Route, null, routeProps => /*#__PURE__*/React.createElement(Wrapped, _extends({
|
|
22
|
+
ref: ref
|
|
23
|
+
}, routeProps, props)));
|
|
24
|
+
});
|
|
11
25
|
const name = Wrapped.displayName || Wrapped.name || 'Component';
|
|
12
26
|
WithRouterAndRef.displayName = `withRouterAndRef(${name})`;
|
|
13
27
|
return WithRouterAndRef;
|
|
@@ -5,9 +5,17 @@ import { Route } from 'react-router-dom';
|
|
|
5
5
|
// Basically a workaround for the fact that react-router's withRouter cannot forward ref's through
|
|
6
6
|
// functional components. Use this instead to gain the benefits of withRouter but also ref forwarding
|
|
7
7
|
export default function withRouterAndRef(Wrapped: React.ComponentType<any>) {
|
|
8
|
-
const WithRouterAndRef = React.forwardRef<Object, React.Ref<any>>((props, ref) =>
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const WithRouterAndRef = React.forwardRef<Object, React.Ref<any>>((props, ref) => {
|
|
9
|
+
const { routerDisabled } = props;
|
|
10
|
+
|
|
11
|
+
// If router is disabled, return component directly without Route wrapper
|
|
12
|
+
if (routerDisabled) {
|
|
13
|
+
return <Wrapped ref={ref} {...props} />;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Default behavior: wrap with Route to get router props
|
|
17
|
+
return <Route>{routeProps => <Wrapped ref={ref} {...routeProps} {...props} />}</Route>;
|
|
18
|
+
});
|
|
11
19
|
const name = Wrapped.displayName || Wrapped.name || 'Component';
|
|
12
20
|
WithRouterAndRef.displayName = `withRouterAndRef(${name})`;
|
|
13
21
|
return WithRouterAndRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withRouterAndRef.js","names":["React","Route","withRouterAndRef","Wrapped","WithRouterAndRef","forwardRef","props","ref","
|
|
1
|
+
{"version":3,"file":"withRouterAndRef.js","names":["React","Route","withRouterAndRef","Wrapped","WithRouterAndRef","forwardRef","props","ref","routerDisabled","createElement","_extends","routeProps","name","displayName"],"sources":["../../../../src/elements/common/routing/withRouterAndRef.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { Route } from 'react-router-dom';\n\n// Basically a workaround for the fact that react-router's withRouter cannot forward ref's through\n// functional components. Use this instead to gain the benefits of withRouter but also ref forwarding\nexport default function withRouterAndRef(Wrapped: React.ComponentType<any>) {\n const WithRouterAndRef = React.forwardRef<Object, React.Ref<any>>((props, ref) => {\n const { routerDisabled } = props;\n \n // If router is disabled, return component directly without Route wrapper\n if (routerDisabled) {\n return <Wrapped ref={ref} {...props} />;\n }\n \n // Default behavior: wrap with Route to get router props\n return <Route>{routeProps => <Wrapped ref={ref} {...routeProps} {...props} />}</Route>;\n });\n const name = Wrapped.displayName || Wrapped.name || 'Component';\n WithRouterAndRef.displayName = `withRouterAndRef(${name})`;\n return WithRouterAndRef;\n}\n"],"mappings":";AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,kBAAkB;;AAExC;AACA;AACA,eAAe,SAASC,gBAAgBA,CAACC,OAAiC,EAAE;EACxE,MAAMC,gBAAgB,gBAAGJ,KAAK,CAACK,UAAU,CAAyB,CAACC,KAAK,EAAEC,GAAG,KAAK;IAC9E,MAAM;MAAEC;IAAe,CAAC,GAAGF,KAAK;;IAEhC;IACA,IAAIE,cAAc,EAAE;MAChB,oBAAOR,KAAA,CAAAS,aAAA,CAACN,OAAO,EAAAO,QAAA;QAACH,GAAG,EAAEA;MAAI,GAAKD,KAAK,CAAG,CAAC;IAC3C;;IAEA;IACA,oBAAON,KAAA,CAAAS,aAAA,CAACR,KAAK,QAAEU,UAAU,iBAAIX,KAAA,CAAAS,aAAA,CAACN,OAAO,EAAAO,QAAA;MAACH,GAAG,EAAEA;IAAI,GAAKI,UAAU,EAAML,KAAK,CAAG,CAAS,CAAC;EAC1F,CAAC,CAAC;EACF,MAAMM,IAAI,GAAGT,OAAO,CAACU,WAAW,IAAIV,OAAO,CAACS,IAAI,IAAI,WAAW;EAC/DR,gBAAgB,CAACS,WAAW,GAAG,oBAAoBD,IAAI,GAAG;EAC1D,OAAOR,gBAAgB;AAC3B","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import ContentExplorer from '../../ContentExplorer';
|
|
|
4
4
|
import { mockEmptyRootFolder, mockRootFolder } from '../../../common/__mocks__/mockRootFolder';
|
|
5
5
|
import mockSubfolder from '../../../common/__mocks__/mockSubfolder';
|
|
6
6
|
import mockRecentItems from '../../../common/__mocks__/mockRecentItems';
|
|
7
|
+
import { mockUserRequest } from '../../../common/__mocks__/mockRequests';
|
|
7
8
|
import { DEFAULT_HOSTNAME_API } from '../../../../constants';
|
|
8
9
|
export const basic = {
|
|
9
10
|
play: async ({
|
|
@@ -224,10 +225,30 @@ export const closeCreateFolderDialog = {
|
|
|
224
225
|
// },
|
|
225
226
|
// };
|
|
226
227
|
|
|
228
|
+
const defaultHandlers = [http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/69083462919`, () => {
|
|
229
|
+
return HttpResponse.json(mockRootFolder);
|
|
230
|
+
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {
|
|
231
|
+
return HttpResponse.json(mockSubfolder);
|
|
232
|
+
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {
|
|
233
|
+
return HttpResponse.json(mockEmptyRootFolder);
|
|
234
|
+
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {
|
|
235
|
+
return new HttpResponse('Internal Server Error', {
|
|
236
|
+
status: 500
|
|
237
|
+
});
|
|
238
|
+
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {
|
|
239
|
+
return HttpResponse.json(mockRecentItems);
|
|
240
|
+
})];
|
|
227
241
|
export const emptyState = {
|
|
228
242
|
args: {
|
|
229
243
|
rootFolderId: '74729718131'
|
|
230
244
|
},
|
|
245
|
+
parameters: {
|
|
246
|
+
msw: {
|
|
247
|
+
handlers: [...defaultHandlers, http.get(mockUserRequest.url, () => {
|
|
248
|
+
return HttpResponse.json(mockUserRequest.response);
|
|
249
|
+
})]
|
|
250
|
+
}
|
|
251
|
+
},
|
|
231
252
|
play: async ({
|
|
232
253
|
canvasElement
|
|
233
254
|
}) => {
|
|
@@ -270,19 +291,7 @@ export default {
|
|
|
270
291
|
},
|
|
271
292
|
parameters: {
|
|
272
293
|
msw: {
|
|
273
|
-
handlers:
|
|
274
|
-
return HttpResponse.json(mockRootFolder);
|
|
275
|
-
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {
|
|
276
|
-
return HttpResponse.json(mockSubfolder);
|
|
277
|
-
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {
|
|
278
|
-
return HttpResponse.json(mockEmptyRootFolder);
|
|
279
|
-
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {
|
|
280
|
-
return new HttpResponse('Internal Server Error', {
|
|
281
|
-
status: 500
|
|
282
|
-
});
|
|
283
|
-
}), http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {
|
|
284
|
-
return HttpResponse.json(mockRecentItems);
|
|
285
|
-
})]
|
|
294
|
+
handlers: defaultHandlers
|
|
286
295
|
}
|
|
287
296
|
}
|
|
288
297
|
};
|
|
@@ -5,6 +5,7 @@ import ContentExplorer from '../../ContentExplorer';
|
|
|
5
5
|
import { mockEmptyRootFolder, mockRootFolder } from '../../../common/__mocks__/mockRootFolder';
|
|
6
6
|
import mockSubfolder from '../../../common/__mocks__/mockSubfolder';
|
|
7
7
|
import mockRecentItems from '../../../common/__mocks__/mockRecentItems';
|
|
8
|
+
import { mockUserRequest } from '../../../common/__mocks__/mockRequests';
|
|
8
9
|
|
|
9
10
|
import { DEFAULT_HOSTNAME_API } from '../../../../constants';
|
|
10
11
|
|
|
@@ -227,10 +228,38 @@ export const closeCreateFolderDialog = {
|
|
|
227
228
|
// },
|
|
228
229
|
// };
|
|
229
230
|
|
|
231
|
+
const defaultHandlers = [
|
|
232
|
+
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/69083462919`, () => {
|
|
233
|
+
return HttpResponse.json(mockRootFolder);
|
|
234
|
+
}),
|
|
235
|
+
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {
|
|
236
|
+
return HttpResponse.json(mockSubfolder);
|
|
237
|
+
}),
|
|
238
|
+
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {
|
|
239
|
+
return HttpResponse.json(mockEmptyRootFolder);
|
|
240
|
+
}),
|
|
241
|
+
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {
|
|
242
|
+
return new HttpResponse('Internal Server Error', { status: 500 });
|
|
243
|
+
}),
|
|
244
|
+
http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {
|
|
245
|
+
return HttpResponse.json(mockRecentItems);
|
|
246
|
+
}),
|
|
247
|
+
];
|
|
248
|
+
|
|
230
249
|
export const emptyState = {
|
|
231
250
|
args: {
|
|
232
251
|
rootFolderId: '74729718131',
|
|
233
252
|
},
|
|
253
|
+
parameters: {
|
|
254
|
+
msw: {
|
|
255
|
+
handlers: [
|
|
256
|
+
...defaultHandlers,
|
|
257
|
+
http.get(mockUserRequest.url, () => {
|
|
258
|
+
return HttpResponse.json(mockUserRequest.response);
|
|
259
|
+
}),
|
|
260
|
+
],
|
|
261
|
+
},
|
|
262
|
+
},
|
|
234
263
|
play: async ({ canvasElement }) => {
|
|
235
264
|
const canvas = within(canvasElement);
|
|
236
265
|
await waitFor(() => {
|
|
@@ -271,23 +300,7 @@ export default {
|
|
|
271
300
|
},
|
|
272
301
|
parameters: {
|
|
273
302
|
msw: {
|
|
274
|
-
handlers:
|
|
275
|
-
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/69083462919`, () => {
|
|
276
|
-
return HttpResponse.json(mockRootFolder);
|
|
277
|
-
}),
|
|
278
|
-
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {
|
|
279
|
-
return HttpResponse.json(mockSubfolder);
|
|
280
|
-
}),
|
|
281
|
-
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {
|
|
282
|
-
return HttpResponse.json(mockEmptyRootFolder);
|
|
283
|
-
}),
|
|
284
|
-
http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {
|
|
285
|
-
return new HttpResponse('Internal Server Error', { status: 500 });
|
|
286
|
-
}),
|
|
287
|
-
http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {
|
|
288
|
-
return HttpResponse.json(mockRecentItems);
|
|
289
|
-
}),
|
|
290
|
-
],
|
|
303
|
+
handlers: defaultHandlers,
|
|
291
304
|
},
|
|
292
305
|
},
|
|
293
306
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentExplorer-visual.stories.js","names":["http","HttpResponse","expect","screen","userEvent","waitFor","within","ContentExplorer","mockEmptyRootFolder","mockRootFolder","mockSubfolder","mockRecentItems","DEFAULT_HOSTNAME_API","basic","play","canvasElement","canvas","folder","findByText","toBeInTheDocument","getByText","openExistingFolder","subFolder","click","openCreateFolderDialog","addButton","findByRole","name","dropdown","newFolderButton","closeCreateFolderDialog","cancelButton","queryByText","not","emptyState","args","rootFolderId","errorEmptyState","withTheming","title","component","features","global","FEATURE_FLAGS","FOLDER_ID","token","TOKEN","parameters","msw","handlers","get","json","status"],"sources":["../../../../../src/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js"],"sourcesContent":["import { http, HttpResponse } from 'msw';\nimport { expect, screen, userEvent, waitFor, within } from '@storybook/test';\n\nimport ContentExplorer from '../../ContentExplorer';\nimport { mockEmptyRootFolder, mockRootFolder } from '../../../common/__mocks__/mockRootFolder';\nimport mockSubfolder from '../../../common/__mocks__/mockSubfolder';\nimport mockRecentItems from '../../../common/__mocks__/mockRecentItems';\n\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(async () => {\n const folder = await canvas.findByText('An Ordered Folder');\n expect(folder).toBeInTheDocument();\n expect(canvas.getByText('Apr 16, 2019 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Archive')).toBeInTheDocument();\n expect(canvas.getByText('Dec 16, 2020 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Archived Folder')).toBeInTheDocument();\n expect(canvas.getByText('Dec 17, 2020 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Book Sample.pdf')).toBeInTheDocument();\n expect(canvas.getByText('Dec 8, 2022 by Preview')).toBeInTheDocument();\n });\n },\n};\n\nexport const openExistingFolder = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const subFolder = await canvas.findByText('An Ordered Folder');\n await userEvent.click(subFolder);\n\n expect(await canvas.findByText('Audio.mp3')).toBeInTheDocument();\n },\n};\n\nexport const openCreateFolderDialog = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const addButton = await canvas.findByRole('button', { name: 'Add' });\n await userEvent.click(addButton);\n\n const dropdown = await screen.findByRole('menu');\n const newFolderButton = await within(dropdown).findByRole('menuitem', { name: 'New Folder' });\n expect(newFolderButton).toBeInTheDocument();\n await userEvent.click(newFolderButton);\n\n expect(await screen.findByText('Please enter a name.')).toBeInTheDocument();\n },\n};\n\nexport const closeCreateFolderDialog = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const addButton = await canvas.findByRole('button', { name: 'Add' });\n await userEvent.click(addButton);\n\n const dropdown = await screen.findByRole('menu');\n const newFolderButton = await within(dropdown).findByRole('menuitem', { name: 'New Folder' });\n expect(newFolderButton).toBeInTheDocument();\n await userEvent.click(newFolderButton);\n\n expect(await screen.findByText('Please enter a name.')).toBeInTheDocument();\n\n const cancelButton = screen.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n await waitFor(() => {\n expect(screen.queryByText('Please enter a name.')).not.toBeInTheDocument();\n });\n },\n};\n\n// export const openDeleteConfirmationDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const deleteButton = await screen.findByRole('menuitem', { name: 'Delete' });\n// await userEvent.hover(deleteButton);\n// await userEvent.click(deleteButton);\n// });\n\n// expect(\n// await screen.findByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).toBeInTheDocument();\n// },\n// };\n\n// export const closeDeleteConfirmationDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const deleteButton = await screen.findByRole('menuitem', { name: 'Delete' });\n// await userEvent.hover(deleteButton);\n// await userEvent.click(deleteButton);\n// });\n\n// expect(\n// await screen.findByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).toBeInTheDocument();\n\n// const cancelButton = screen.getByText('Cancel');\n// await userEvent.click(cancelButton);\n\n// await waitFor(() => {\n// expect(\n// screen.queryByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).not.toBeInTheDocument();\n// });\n// },\n// };\n\n// export const openRenameDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const renameButton = await screen.findByRole('menuitem', { name: 'Rename' });\n// await userEvent.hover(renameButton);\n// await userEvent.click(renameButton);\n// });\n\n// expect(await screen.findByText('Please enter a new name for An Ordered Folder:')).toBeInTheDocument();\n// },\n// };\n\n// export const closeRenameDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const renameButton = await screen.findByRole('menuitem', { name: 'Rename' });\n// await userEvent.hover(renameButton);\n// await userEvent.click(renameButton);\n// });\n\n// expect(await screen.findByText('Please enter a new name for An Ordered Folder:')).toBeInTheDocument();\n// const cancelButton = screen.getByText('Cancel');\n// await userEvent.click(cancelButton);\n\n// await waitFor(() => {\n// expect(screen.queryByText('Please enter a new name for An Ordered Folder:')).not.toBeInTheDocument();\n// });\n// },\n// };\n\n// export const openShareDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const shareButton = await screen.findByRole('menuitem', { name: 'Share' });\n// await userEvent.hover(shareButton);\n// await userEvent.click(shareButton);\n// });\n\n// expect(await screen.findByText('Shared Link:')).toBeInTheDocument();\n\n// const inputElement = screen.getByDisplayValue('https://example.com/share-link');\n// expect(inputElement).toBeInTheDocument();\n// },\n// };\n\n// export const closeShareDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.click(moreOptionsButton[0]);\n\n// const shareButton = await screen.findByRole('menuitem', { name: 'Share' });\n// await userEvent.hover(shareButton);\n// await userEvent.click(shareButton);\n// });\n\n// expect(await screen.findByText('Shared Link:')).toBeInTheDocument();\n// const closeButton = screen.getByText('Close');\n// await userEvent.click(closeButton);\n\n// await waitFor(() => {\n// expect(screen.queryByText('Shared Link:')).not.toBeInTheDocument();\n// });\n// const inputElement = screen.queryByDisplayValue('https://example.com/share-link');\n// expect(inputElement).not.toBeInTheDocument();\n// },\n// };\n\nexport const emptyState = {\n args: {\n rootFolderId: '74729718131',\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText('There are no items in this folder.')).toBeInTheDocument();\n });\n },\n};\n\nexport const errorEmptyState = {\n args: {\n rootFolderId: '191354690948',\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText('A network error has occurred while trying to load.')).toBeInTheDocument();\n });\n },\n};\n\nexport const withTheming = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n await waitFor(async () => {\n expect(await canvas.getByText('Preview Test Folder')).toBeInTheDocument();\n });\n },\n};\n\nexport default {\n title: 'Elements/ContentExplorer/tests/ContentExplorer/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/69083462919`, () => {\n return HttpResponse.json(mockRootFolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {\n return HttpResponse.json(mockSubfolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {\n return HttpResponse.json(mockEmptyRootFolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {\n return new HttpResponse('Internal Server Error', { status: 500 });\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {\n return HttpResponse.json(mockRecentItems);\n }),\n ],\n },\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentExplorer-visual.stories.js","names":["http","HttpResponse","expect","screen","userEvent","waitFor","within","ContentExplorer","mockEmptyRootFolder","mockRootFolder","mockSubfolder","mockRecentItems","mockUserRequest","DEFAULT_HOSTNAME_API","basic","play","canvasElement","canvas","folder","findByText","toBeInTheDocument","getByText","openExistingFolder","subFolder","click","openCreateFolderDialog","addButton","findByRole","name","dropdown","newFolderButton","closeCreateFolderDialog","cancelButton","queryByText","not","defaultHandlers","get","json","status","emptyState","args","rootFolderId","parameters","msw","handlers","url","response","errorEmptyState","withTheming","title","component","features","global","FEATURE_FLAGS","FOLDER_ID","token","TOKEN"],"sources":["../../../../../src/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js"],"sourcesContent":["import { http, HttpResponse } from 'msw';\nimport { expect, screen, userEvent, waitFor, within } from '@storybook/test';\n\nimport ContentExplorer from '../../ContentExplorer';\nimport { mockEmptyRootFolder, mockRootFolder } from '../../../common/__mocks__/mockRootFolder';\nimport mockSubfolder from '../../../common/__mocks__/mockSubfolder';\nimport mockRecentItems from '../../../common/__mocks__/mockRecentItems';\nimport { mockUserRequest } from '../../../common/__mocks__/mockRequests';\n\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(async () => {\n const folder = await canvas.findByText('An Ordered Folder');\n expect(folder).toBeInTheDocument();\n expect(canvas.getByText('Apr 16, 2019 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Archive')).toBeInTheDocument();\n expect(canvas.getByText('Dec 16, 2020 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Archived Folder')).toBeInTheDocument();\n expect(canvas.getByText('Dec 17, 2020 by Preview')).toBeInTheDocument();\n\n expect(canvas.getByText('Book Sample.pdf')).toBeInTheDocument();\n expect(canvas.getByText('Dec 8, 2022 by Preview')).toBeInTheDocument();\n });\n },\n};\n\nexport const openExistingFolder = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const subFolder = await canvas.findByText('An Ordered Folder');\n await userEvent.click(subFolder);\n\n expect(await canvas.findByText('Audio.mp3')).toBeInTheDocument();\n },\n};\n\nexport const openCreateFolderDialog = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const addButton = await canvas.findByRole('button', { name: 'Add' });\n await userEvent.click(addButton);\n\n const dropdown = await screen.findByRole('menu');\n const newFolderButton = await within(dropdown).findByRole('menuitem', { name: 'New Folder' });\n expect(newFolderButton).toBeInTheDocument();\n await userEvent.click(newFolderButton);\n\n expect(await screen.findByText('Please enter a name.')).toBeInTheDocument();\n },\n};\n\nexport const closeCreateFolderDialog = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const addButton = await canvas.findByRole('button', { name: 'Add' });\n await userEvent.click(addButton);\n\n const dropdown = await screen.findByRole('menu');\n const newFolderButton = await within(dropdown).findByRole('menuitem', { name: 'New Folder' });\n expect(newFolderButton).toBeInTheDocument();\n await userEvent.click(newFolderButton);\n\n expect(await screen.findByText('Please enter a name.')).toBeInTheDocument();\n\n const cancelButton = screen.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n await waitFor(() => {\n expect(screen.queryByText('Please enter a name.')).not.toBeInTheDocument();\n });\n },\n};\n\n// export const openDeleteConfirmationDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const deleteButton = await screen.findByRole('menuitem', { name: 'Delete' });\n// await userEvent.hover(deleteButton);\n// await userEvent.click(deleteButton);\n// });\n\n// expect(\n// await screen.findByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).toBeInTheDocument();\n// },\n// };\n\n// export const closeDeleteConfirmationDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const deleteButton = await screen.findByRole('menuitem', { name: 'Delete' });\n// await userEvent.hover(deleteButton);\n// await userEvent.click(deleteButton);\n// });\n\n// expect(\n// await screen.findByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).toBeInTheDocument();\n\n// const cancelButton = screen.getByText('Cancel');\n// await userEvent.click(cancelButton);\n\n// await waitFor(() => {\n// expect(\n// screen.queryByText('Are you sure you want to delete An Ordered Folder and all its contents?'),\n// ).not.toBeInTheDocument();\n// });\n// },\n// };\n\n// export const openRenameDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const renameButton = await screen.findByRole('menuitem', { name: 'Rename' });\n// await userEvent.hover(renameButton);\n// await userEvent.click(renameButton);\n// });\n\n// expect(await screen.findByText('Please enter a new name for An Ordered Folder:')).toBeInTheDocument();\n// },\n// };\n\n// export const closeRenameDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const renameButton = await screen.findByRole('menuitem', { name: 'Rename' });\n// await userEvent.hover(renameButton);\n// await userEvent.click(renameButton);\n// });\n\n// expect(await screen.findByText('Please enter a new name for An Ordered Folder:')).toBeInTheDocument();\n// const cancelButton = screen.getByText('Cancel');\n// await userEvent.click(cancelButton);\n\n// await waitFor(() => {\n// expect(screen.queryByText('Please enter a new name for An Ordered Folder:')).not.toBeInTheDocument();\n// });\n// },\n// };\n\n// export const openShareDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.hover(moreOptionsButton[0]);\n// await userEvent.click(moreOptionsButton[0]);\n\n// const shareButton = await screen.findByRole('menuitem', { name: 'Share' });\n// await userEvent.hover(shareButton);\n// await userEvent.click(shareButton);\n// });\n\n// expect(await screen.findByText('Shared Link:')).toBeInTheDocument();\n\n// const inputElement = screen.getByDisplayValue('https://example.com/share-link');\n// expect(inputElement).toBeInTheDocument();\n// },\n// };\n\n// export const closeShareDialog = {\n// play: async ({ canvasElement }) => {\n// const canvas = within(canvasElement);\n\n// await waitFor(async () => {\n// await canvas.findByRole('grid', { name: 'List view' });\n\n// const moreOptionsButton = await canvas.findAllByRole('button', { name: 'More options' });\n// await userEvent.click(moreOptionsButton[0]);\n\n// const shareButton = await screen.findByRole('menuitem', { name: 'Share' });\n// await userEvent.hover(shareButton);\n// await userEvent.click(shareButton);\n// });\n\n// expect(await screen.findByText('Shared Link:')).toBeInTheDocument();\n// const closeButton = screen.getByText('Close');\n// await userEvent.click(closeButton);\n\n// await waitFor(() => {\n// expect(screen.queryByText('Shared Link:')).not.toBeInTheDocument();\n// });\n// const inputElement = screen.queryByDisplayValue('https://example.com/share-link');\n// expect(inputElement).not.toBeInTheDocument();\n// },\n// };\n\nconst defaultHandlers = [\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/69083462919`, () => {\n return HttpResponse.json(mockRootFolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/73426618530`, () => {\n return HttpResponse.json(mockSubfolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/74729718131`, () => {\n return HttpResponse.json(mockEmptyRootFolder);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/191354690948`, () => {\n return new HttpResponse('Internal Server Error', { status: 500 });\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/recent_items`, () => {\n return HttpResponse.json(mockRecentItems);\n }),\n];\n\nexport const emptyState = {\n args: {\n rootFolderId: '74729718131',\n },\n parameters: {\n msw: {\n handlers: [\n ...defaultHandlers,\n http.get(mockUserRequest.url, () => {\n return HttpResponse.json(mockUserRequest.response);\n }),\n ],\n },\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText('There are no items in this folder.')).toBeInTheDocument();\n });\n },\n};\n\nexport const errorEmptyState = {\n args: {\n rootFolderId: '191354690948',\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n await waitFor(() => {\n expect(canvas.getByText('A network error has occurred while trying to load.')).toBeInTheDocument();\n });\n },\n};\n\nexport const withTheming = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n await waitFor(async () => {\n expect(await canvas.getByText('Preview Test Folder')).toBeInTheDocument();\n });\n },\n};\n\nexport default {\n title: 'Elements/ContentExplorer/tests/ContentExplorer/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: defaultHandlers,\n },\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -263,6 +263,7 @@ class ContentSidebar extends React.Component {
|
|
|
263
263
|
defaultView,
|
|
264
264
|
detailsSidebarProps,
|
|
265
265
|
docGenSidebarProps,
|
|
266
|
+
features,
|
|
266
267
|
fileId,
|
|
267
268
|
getPreview,
|
|
268
269
|
getViewer,
|
|
@@ -302,7 +303,8 @@ class ContentSidebar extends React.Component {
|
|
|
302
303
|
value: this.api
|
|
303
304
|
}, /*#__PURE__*/React.createElement(NavRouter, {
|
|
304
305
|
history: history,
|
|
305
|
-
initialEntries: [initialPath]
|
|
306
|
+
initialEntries: [initialPath],
|
|
307
|
+
features: features
|
|
306
308
|
}, /*#__PURE__*/React.createElement(TooltipProvider, null, /*#__PURE__*/React.createElement(Sidebar, {
|
|
307
309
|
activitySidebarProps: activitySidebarProps,
|
|
308
310
|
additionalTabs: additionalTabs,
|
|
@@ -349,6 +349,7 @@ class ContentSidebar extends React.Component<Props, State> {
|
|
|
349
349
|
defaultView,
|
|
350
350
|
detailsSidebarProps,
|
|
351
351
|
docGenSidebarProps,
|
|
352
|
+
features,
|
|
352
353
|
fileId,
|
|
353
354
|
getPreview,
|
|
354
355
|
getViewer,
|
|
@@ -382,7 +383,7 @@ class ContentSidebar extends React.Component<Props, State> {
|
|
|
382
383
|
return (
|
|
383
384
|
<Internationalize language={language} messages={messages}>
|
|
384
385
|
<APIContext.Provider value={(this.api: any)}>
|
|
385
|
-
<NavRouter history={history} initialEntries={[initialPath]}>
|
|
386
|
+
<NavRouter history={history} initialEntries={[initialPath]} features={features}>
|
|
386
387
|
<TooltipProvider>
|
|
387
388
|
<Sidebar
|
|
388
389
|
activitySidebarProps={activitySidebarProps}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","DEFAULT_HOSTNAME_API","CLIENT_NAME_CONTENT_SIDEBAR","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","DEFAULT_HOSTNAME_API","CLIENT_NAME_CONTENT_SIDEBAR","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n features,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]} features={features}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":"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","ignoreList":[]}
|