box-ui-elements 23.4.0-beta.17 → 23.4.0-beta.19

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.
Files changed (60) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/preview.css +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/sidebar.css +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/es/elements/common/back-button/BackButton.js.map +1 -0
  8. package/es/elements/common/back-button/index.js +3 -0
  9. package/es/elements/common/{nav-button → back-button}/index.js.flow +1 -1
  10. package/es/elements/common/back-button/index.js.map +1 -0
  11. package/{src/elements/common/types/SidebarNavigation.flow.js → es/elements/common/types/SidebarNavigation.js.flow} +9 -23
  12. package/es/elements/content-sidebar/SidebarNavButton.js +29 -22
  13. package/es/elements/content-sidebar/SidebarNavButton.js.flow +28 -21
  14. package/es/elements/content-sidebar/SidebarNavButton.js.map +1 -1
  15. package/es/elements/content-sidebar/SidebarNavButton.scss +13 -0
  16. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +1 -1
  17. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +1 -1
  18. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -1
  19. package/es/elements/content-sidebar/versions/VersionsGroup.js.flow +3 -0
  20. package/es/elements/content-sidebar/versions/VersionsGroup.js.map +1 -1
  21. package/es/elements/content-sidebar/versions/VersionsList.js +16 -8
  22. package/es/elements/content-sidebar/versions/VersionsList.js.flow +35 -17
  23. package/es/elements/content-sidebar/versions/VersionsList.js.map +1 -1
  24. package/es/elements/content-sidebar/versions/VersionsMenu.js.flow +3 -0
  25. package/es/elements/content-sidebar/versions/VersionsMenu.js.map +1 -1
  26. package/es/elements/content-sidebar/versions/VersionsSidebar.js +1 -1
  27. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +1 -1
  28. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  29. package/package.json +3 -3
  30. package/src/elements/common/{nav-button → back-button}/__tests__/BackButton.test.js +1 -1
  31. package/src/elements/common/{nav-button → back-button}/index.js +1 -1
  32. package/{es/elements/common/types/SidebarNavigation.flow.js.flow → src/elements/common/types/SidebarNavigation.js.flow} +9 -23
  33. package/src/elements/content-sidebar/SidebarNavButton.js +28 -21
  34. package/src/elements/content-sidebar/SidebarNavButton.scss +13 -0
  35. package/src/elements/content-sidebar/__tests__/SidebarNavButton.test.js +208 -26
  36. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +1 -1
  37. package/src/elements/content-sidebar/versions/VersionsGroup.js +3 -0
  38. package/src/elements/content-sidebar/versions/VersionsList.js +35 -17
  39. package/src/elements/content-sidebar/versions/VersionsMenu.js +3 -0
  40. package/src/elements/content-sidebar/versions/VersionsSidebar.js +1 -1
  41. package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +5 -7
  42. package/src/elements/content-sidebar/versions/__tests__/VersionsList.test.js +138 -13
  43. package/src/elements/content-sidebar/versions/__tests__/VersionsMenu.test.js +75 -23
  44. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +5 -7
  45. package/es/elements/common/nav-button/BackButton.js.map +0 -1
  46. package/es/elements/common/nav-button/NavButton.js +0 -63
  47. package/es/elements/common/nav-button/NavButton.js.flow +0 -80
  48. package/es/elements/common/nav-button/NavButton.js.map +0 -1
  49. package/es/elements/common/nav-button/index.js +0 -3
  50. package/es/elements/common/nav-button/index.js.map +0 -1
  51. package/es/elements/common/types/SidebarNavigation.flow.js +0 -14
  52. package/es/elements/common/types/SidebarNavigation.flow.js.map +0 -1
  53. package/src/elements/common/nav-button/NavButton.js +0 -80
  54. package/src/elements/common/nav-button/__tests__/NavButton.test.js +0 -265
  55. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsList.test.js.snap +0 -45
  56. /package/es/elements/common/{nav-button → back-button}/BackButton.js +0 -0
  57. /package/es/elements/common/{nav-button → back-button}/BackButton.js.flow +0 -0
  58. /package/es/elements/common/{nav-button → back-button}/BackButton.scss +0 -0
  59. /package/src/elements/common/{nav-button → back-button}/BackButton.js +0 -0
  60. /package/src/elements/common/{nav-button → back-button}/BackButton.scss +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackButton.js","names":["React","classNames","FormattedMessage","IconNavigateLeft","messages","PlainButton","BackButton","_ref","className","onClick","rest","_objectWithoutProperties","_excluded","createElement","_extends","type","height","width","back"],"sources":["../../../../src/elements/common/back-button/BackButton.js"],"sourcesContent":["/**\n * @flow\n * @file Back Button component\n * @author Box\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\nimport IconNavigateLeft from '../../../icons/general/IconNavigateLeft';\nimport messages from '../messages';\nimport PlainButton from '../../../components/plain-button';\nimport './BackButton.scss';\n\ntype Props = {\n className?: string,\n onClick: () => void,\n};\n\nconst BackButton = ({ className, onClick, ...rest }: Props) => (\n <PlainButton className={classNames('bdl-BackButton', className)} onClick={onClick} type=\"button\" {...rest}>\n <IconNavigateLeft height={24} width={24} />\n <span className=\"accessibility-hidden\">\n <FormattedMessage {...messages.back} />\n </span>\n </PlainButton>\n);\n\nexport default BackButton;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,OAAOC,gBAAgB,MAAM,yCAAyC;AACtE,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,WAAW,MAAM,kCAAkC;AAC1D,OAAO,mBAAmB;AAO1B,MAAMC,UAAU,GAAGC,IAAA;EAAA,IAAC;MAAEC,SAAS;MAAEC;IAAwB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EAAA,oBAC7CZ,KAAA,CAAAa,aAAA,CAACR,WAAW,EAAAS,QAAA;IAACN,SAAS,EAAEP,UAAU,CAAC,gBAAgB,EAAEO,SAAS,CAAE;IAACC,OAAO,EAAEA,OAAQ;IAACM,IAAI,EAAC;EAAQ,GAAKL,IAAI,gBACrGV,KAAA,CAAAa,aAAA,CAACV,gBAAgB;IAACa,MAAM,EAAE,EAAG;IAACC,KAAK,EAAE;EAAG,CAAE,CAAC,eAC3CjB,KAAA,CAAAa,aAAA;IAAML,SAAS,EAAC;EAAsB,gBAClCR,KAAA,CAAAa,aAAA,CAACX,gBAAgB,EAAKE,QAAQ,CAACc,IAAO,CACpC,CACG,CAAC;AAAA,CACjB;AAED,eAAeZ,UAAU","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { default as BackButton } from './BackButton';
2
+ export { default } from './BackButton';
3
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  export { default as BackButton } from './BackButton';
2
- export { default } from './NavButton';
2
+ export { default } from './BackButton';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default","BackButton"],"sources":["../../../../src/elements/common/back-button/index.js"],"sourcesContent":["export { default as BackButton } from './BackButton';\nexport { default } from './BackButton';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASD,OAAO,QAAQ,cAAc","ignoreList":[]}
@@ -1,5 +1,8 @@
1
1
  /* @flow */
2
2
 
3
+ // flow version is simplified compared to Type Script due to difficult to resolve problems with Union Types
4
+ // Type Script works better with Union Types
5
+
3
6
  export const ViewType = Object.freeze({
4
7
  BOXAI: 'boxai',
5
8
  SKILLS: 'skills',
@@ -18,30 +21,13 @@ export const FeedEntryType = Object.freeze({
18
21
  export type ViewTypeValues = $Values<typeof ViewType>;
19
22
  export type FeedEntryTypeValues = $Values<typeof FeedEntryType>;
20
23
 
21
- type VersionSidebarView = {
22
- sidebar: 'activity' | 'details',
23
- versionId: string,
24
- };
25
-
26
- export type ActivityAnnotationsSidebarView = {
27
- sidebar: 'activity',
28
- activeFeedEntryType: 'annotations',
29
- fileVersionId: string,
30
- activeFeedEntryId: string,
24
+ export type SidebarNavigation = {
25
+ sidebar: ViewTypeValues,
26
+ versionId?: string,
27
+ activeFeedEntryType?: FeedEntryTypeValues,
28
+ activeFeedEntryId?: string,
29
+ fileVersionId?: string,
31
30
  };
32
- type ActivityCommentsSidebarView = {
33
- sidebar: 'activity',
34
- activeFeedEntryType: 'comments' | 'tasks',
35
- activeFeedEntryId: string,
36
- };
37
-
38
- export type SidebarNavigation =
39
- | {|
40
- sidebar: ViewTypeValues,
41
- |}
42
- | VersionSidebarView
43
- | ActivityCommentsSidebarView
44
- | ActivityAnnotationsSidebarView;
45
31
 
46
32
  export type InternalSidebarNavigation = SidebarNavigation & {
47
33
  open: boolean,
@@ -7,8 +7,10 @@
7
7
  import * as React from 'react';
8
8
  import { Route } from 'react-router-dom';
9
9
  import noop from 'lodash/noop';
10
- import NavButton from '../common/nav-button';
10
+ import classNames from 'classnames';
11
+ import { Button } from '@box/blueprint-web';
11
12
  import Tooltip from '../../components/tooltip/Tooltip';
13
+ import { isLeftClick } from '../../utils/dom';
12
14
  import './SidebarNavButton.scss';
13
15
  const SidebarNavButton = /*#__PURE__*/React.forwardRef((props, ref) => {
14
16
  const {
@@ -23,46 +25,51 @@ const SidebarNavButton = /*#__PURE__*/React.forwardRef((props, ref) => {
23
25
  tooltip
24
26
  } = props;
25
27
  const sidebarPath = `/${sidebarView}`;
26
- const handleNavButtonClick = () => {
27
- onClick(sidebarView);
28
- };
29
28
  return /*#__PURE__*/React.createElement(Route, {
30
29
  path: sidebarPath
31
30
  }, ({
32
- match
31
+ match,
32
+ history
33
33
  }) => {
34
34
  const isMatch = !!match;
35
- const isActive = () => isMatch && !!isOpen;
36
- const isActiveValue = isActive();
35
+ const isActiveValue = isMatch && !!isOpen;
37
36
  const isExactMatch = isMatch && match.isExact;
38
37
  const id = `${elementId}${elementId === '' ? '' : '_'}${sidebarView}`;
38
+ const handleNavButtonClick = event => {
39
+ onClick(sidebarView);
40
+ if (!event.defaultPrevented && isLeftClick(event)) {
41
+ const method = isExactMatch ? history.replace : history.push;
42
+ method({
43
+ pathname: sidebarPath,
44
+ state: {
45
+ open: true
46
+ }
47
+ });
48
+ }
49
+ };
39
50
  return /*#__PURE__*/React.createElement(Tooltip, {
40
51
  position: "middle-left",
41
52
  text: tooltip,
42
53
  isTabbable: false
43
- }, /*#__PURE__*/React.createElement(NavButton, {
44
- activeClassName: "bcs-is-selected",
45
- "aria-selected": isActiveValue,
54
+ }, /*#__PURE__*/React.createElement(Button, {
55
+ accessibleWhenDisabled: true,
46
56
  "aria-controls": `${id}-content`,
47
57
  "aria-label": tooltip,
48
- className: "bcs-NavButton",
58
+ "aria-selected": isActiveValue,
59
+ className: classNames('bcs-NavButton', {
60
+ 'bcs-is-selected': isActiveValue,
61
+ 'bdl-is-disabled': isDisabled
62
+ }),
49
63
  "data-resin-target": dataResinTarget,
50
64
  "data-testid": dataTestId,
51
- getDOMRef: ref,
65
+ ref: ref,
52
66
  id: id,
53
- isActive: isActive,
54
- isDisabled: isDisabled,
67
+ disabled: isDisabled,
55
68
  onClick: handleNavButtonClick,
56
- replace: isExactMatch,
57
69
  role: "tab",
58
70
  tabIndex: isActiveValue ? '0' : '-1',
59
- to: {
60
- pathname: sidebarPath,
61
- state: {
62
- open: true
63
- }
64
- },
65
- type: "button"
71
+ type: "button",
72
+ variant: "tertiary"
66
73
  }, children));
67
74
  });
68
75
  });
@@ -7,8 +7,10 @@
7
7
  import * as React from 'react';
8
8
  import { Route } from 'react-router-dom';
9
9
  import noop from 'lodash/noop';
10
- import NavButton from '../common/nav-button';
10
+ import classNames from 'classnames';
11
+ import { Button } from '@box/blueprint-web';
11
12
  import Tooltip from '../../components/tooltip/Tooltip';
13
+ import { isLeftClick } from '../../utils/dom';
12
14
  import './SidebarNavButton.scss';
13
15
 
14
16
  type Props = {
@@ -37,45 +39,50 @@ const SidebarNavButton = React.forwardRef<Props, React.Ref<any>>((props: Props,
37
39
  } = props;
38
40
  const sidebarPath = `/${sidebarView}`;
39
41
 
40
- const handleNavButtonClick = () => {
41
- onClick(sidebarView);
42
- };
43
-
44
42
  return (
45
43
  <Route path={sidebarPath}>
46
- {({ match }) => {
44
+ {({ match, history }) => {
47
45
  const isMatch = !!match;
48
- const isActive = () => isMatch && !!isOpen;
49
- const isActiveValue = isActive();
46
+ const isActiveValue = isMatch && !!isOpen;
50
47
  const isExactMatch = isMatch && match.isExact;
51
48
  const id = `${elementId}${elementId === '' ? '' : '_'}${sidebarView}`;
52
49
 
50
+ const handleNavButtonClick = event => {
51
+ onClick(sidebarView);
52
+
53
+ if (!event.defaultPrevented && isLeftClick(event)) {
54
+ const method = isExactMatch ? history.replace : history.push;
55
+ method({
56
+ pathname: sidebarPath,
57
+ state: { open: true },
58
+ });
59
+ }
60
+ };
61
+
53
62
  return (
54
63
  <Tooltip position="middle-left" text={tooltip} isTabbable={false}>
55
- <NavButton
56
- activeClassName="bcs-is-selected"
57
- aria-selected={isActiveValue}
64
+ <Button
65
+ accessibleWhenDisabled={true}
58
66
  aria-controls={`${id}-content`}
59
67
  aria-label={tooltip}
60
- className="bcs-NavButton"
68
+ aria-selected={isActiveValue}
69
+ className={classNames('bcs-NavButton', {
70
+ 'bcs-is-selected': isActiveValue,
71
+ 'bdl-is-disabled': isDisabled,
72
+ })}
61
73
  data-resin-target={dataResinTarget}
62
74
  data-testid={dataTestId}
63
- getDOMRef={ref}
75
+ ref={ref}
64
76
  id={id}
65
- isActive={isActive}
66
- isDisabled={isDisabled}
77
+ disabled={isDisabled}
67
78
  onClick={handleNavButtonClick}
68
- replace={isExactMatch}
69
79
  role="tab"
70
80
  tabIndex={isActiveValue ? '0' : '-1'}
71
- to={{
72
- pathname: sidebarPath,
73
- state: { open: true },
74
- }}
75
81
  type="button"
82
+ variant="tertiary"
76
83
  >
77
84
  {children}
78
- </NavButton>
85
+ </Button>
79
86
  </Tooltip>
80
87
  );
81
88
  }}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarNavButton.js","names":["React","Route","noop","NavButton","Tooltip","SidebarNavButton","forwardRef","props","ref","dataResinTarget","dataTestId","children","elementId","isDisabled","isOpen","onClick","sidebarView","tooltip","sidebarPath","handleNavButtonClick","createElement","path","match","isMatch","isActive","isActiveValue","isExactMatch","isExact","id","position","text","isTabbable","activeClassName","className","getDOMRef","replace","role","tabIndex","to","pathname","state","open","type"],"sources":["../../../src/elements/content-sidebar/SidebarNavButton.js"],"sourcesContent":["/**\n * @flow\n * @file Preview sidebar nav button component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport noop from 'lodash/noop';\nimport NavButton from '../common/nav-button';\nimport Tooltip from '../../components/tooltip/Tooltip';\nimport './SidebarNavButton.scss';\n\ntype Props = {\n 'data-resin-target'?: string,\n 'data-testid'?: string,\n children: React.Node,\n elementId?: string,\n isDisabled?: boolean,\n isOpen?: boolean,\n onClick?: (sidebarView: string) => void,\n sidebarView: string,\n tooltip: React.Node,\n};\n\nconst SidebarNavButton = React.forwardRef<Props, React.Ref<any>>((props: Props, ref: React.Ref<any>) => {\n const {\n 'data-resin-target': dataResinTarget,\n 'data-testid': dataTestId,\n children,\n elementId = '',\n isDisabled,\n isOpen,\n onClick = noop,\n sidebarView,\n tooltip,\n } = props;\n const sidebarPath = `/${sidebarView}`;\n\n const handleNavButtonClick = () => {\n onClick(sidebarView);\n };\n\n return (\n <Route path={sidebarPath}>\n {({ match }) => {\n const isMatch = !!match;\n const isActive = () => isMatch && !!isOpen;\n const isActiveValue = isActive();\n const isExactMatch = isMatch && match.isExact;\n const id = `${elementId}${elementId === '' ? '' : '_'}${sidebarView}`;\n\n return (\n <Tooltip position=\"middle-left\" text={tooltip} isTabbable={false}>\n <NavButton\n activeClassName=\"bcs-is-selected\"\n aria-selected={isActiveValue}\n aria-controls={`${id}-content`}\n aria-label={tooltip}\n className=\"bcs-NavButton\"\n data-resin-target={dataResinTarget}\n data-testid={dataTestId}\n getDOMRef={ref}\n id={id}\n isActive={isActive}\n isDisabled={isDisabled}\n onClick={handleNavButtonClick}\n replace={isExactMatch}\n role=\"tab\"\n tabIndex={isActiveValue ? '0' : '-1'}\n to={{\n pathname: sidebarPath,\n state: { open: true },\n }}\n type=\"button\"\n >\n {children}\n </NavButton>\n </Tooltip>\n );\n }}\n </Route>\n );\n});\n\nexport default SidebarNavButton;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,kBAAkB;AACxC,OAAOC,IAAI,MAAM,aAAa;AAC9B,OAAOC,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,OAAO,MAAM,kCAAkC;AACtD,OAAO,yBAAyB;AAchC,MAAMC,gBAAgB,gBAAGL,KAAK,CAACM,UAAU,CAAwB,CAACC,KAAY,EAAEC,GAAmB,KAAK;EACpG,MAAM;IACF,mBAAmB,EAAEC,eAAe;IACpC,aAAa,EAAEC,UAAU;IACzBC,QAAQ;IACRC,SAAS,GAAG,EAAE;IACdC,UAAU;IACVC,MAAM;IACNC,OAAO,GAAGb,IAAI;IACdc,WAAW;IACXC;EACJ,CAAC,GAAGV,KAAK;EACT,MAAMW,WAAW,GAAG,IAAIF,WAAW,EAAE;EAErC,MAAMG,oBAAoB,GAAGA,CAAA,KAAM;IAC/BJ,OAAO,CAACC,WAAW,CAAC;EACxB,CAAC;EAED,oBACIhB,KAAA,CAAAoB,aAAA,CAACnB,KAAK;IAACoB,IAAI,EAAEH;EAAY,GACpB,CAAC;IAAEI;EAAM,CAAC,KAAK;IACZ,MAAMC,OAAO,GAAG,CAAC,CAACD,KAAK;IACvB,MAAME,QAAQ,GAAGA,CAAA,KAAMD,OAAO,IAAI,CAAC,CAACT,MAAM;IAC1C,MAAMW,aAAa,GAAGD,QAAQ,CAAC,CAAC;IAChC,MAAME,YAAY,GAAGH,OAAO,IAAID,KAAK,CAACK,OAAO;IAC7C,MAAMC,EAAE,GAAG,GAAGhB,SAAS,GAAGA,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGI,WAAW,EAAE;IAErE,oBACIhB,KAAA,CAAAoB,aAAA,CAAChB,OAAO;MAACyB,QAAQ,EAAC,aAAa;MAACC,IAAI,EAAEb,OAAQ;MAACc,UAAU,EAAE;IAAM,gBAC7D/B,KAAA,CAAAoB,aAAA,CAACjB,SAAS;MACN6B,eAAe,EAAC,iBAAiB;MACjC,iBAAeP,aAAc;MAC7B,iBAAe,GAAGG,EAAE,UAAW;MAC/B,cAAYX,OAAQ;MACpBgB,SAAS,EAAC,eAAe;MACzB,qBAAmBxB,eAAgB;MACnC,eAAaC,UAAW;MACxBwB,SAAS,EAAE1B,GAAI;MACfoB,EAAE,EAAEA,EAAG;MACPJ,QAAQ,EAAEA,QAAS;MACnBX,UAAU,EAAEA,UAAW;MACvBE,OAAO,EAAEI,oBAAqB;MAC9BgB,OAAO,EAAET,YAAa;MACtBU,IAAI,EAAC,KAAK;MACVC,QAAQ,EAAEZ,aAAa,GAAG,GAAG,GAAG,IAAK;MACrCa,EAAE,EAAE;QACAC,QAAQ,EAAErB,WAAW;QACrBsB,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAK;MACxB,CAAE;MACFC,IAAI,EAAC;IAAQ,GAEZ/B,QACM,CACN,CAAC;EAElB,CACG,CAAC;AAEhB,CAAC,CAAC;AAEF,eAAeN,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"SidebarNavButton.js","names":["React","Route","noop","classNames","Button","Tooltip","isLeftClick","SidebarNavButton","forwardRef","props","ref","dataResinTarget","dataTestId","children","elementId","isDisabled","isOpen","onClick","sidebarView","tooltip","sidebarPath","createElement","path","match","history","isMatch","isActiveValue","isExactMatch","isExact","id","handleNavButtonClick","event","defaultPrevented","method","replace","push","pathname","state","open","position","text","isTabbable","accessibleWhenDisabled","className","disabled","role","tabIndex","type","variant"],"sources":["../../../src/elements/content-sidebar/SidebarNavButton.js"],"sourcesContent":["/**\n * @flow\n * @file Preview sidebar nav button component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport noop from 'lodash/noop';\nimport classNames from 'classnames';\nimport { Button } from '@box/blueprint-web';\nimport Tooltip from '../../components/tooltip/Tooltip';\nimport { isLeftClick } from '../../utils/dom';\nimport './SidebarNavButton.scss';\n\ntype Props = {\n 'data-resin-target'?: string,\n 'data-testid'?: string,\n children: React.Node,\n elementId?: string,\n isDisabled?: boolean,\n isOpen?: boolean,\n onClick?: (sidebarView: string) => void,\n sidebarView: string,\n tooltip: React.Node,\n};\n\nconst SidebarNavButton = React.forwardRef<Props, React.Ref<any>>((props: Props, ref: React.Ref<any>) => {\n const {\n 'data-resin-target': dataResinTarget,\n 'data-testid': dataTestId,\n children,\n elementId = '',\n isDisabled,\n isOpen,\n onClick = noop,\n sidebarView,\n tooltip,\n } = props;\n const sidebarPath = `/${sidebarView}`;\n\n return (\n <Route path={sidebarPath}>\n {({ match, history }) => {\n const isMatch = !!match;\n const isActiveValue = isMatch && !!isOpen;\n const isExactMatch = isMatch && match.isExact;\n const id = `${elementId}${elementId === '' ? '' : '_'}${sidebarView}`;\n\n const handleNavButtonClick = event => {\n onClick(sidebarView);\n\n if (!event.defaultPrevented && isLeftClick(event)) {\n const method = isExactMatch ? history.replace : history.push;\n method({\n pathname: sidebarPath,\n state: { open: true },\n });\n }\n };\n\n return (\n <Tooltip position=\"middle-left\" text={tooltip} isTabbable={false}>\n <Button\n accessibleWhenDisabled={true}\n aria-controls={`${id}-content`}\n aria-label={tooltip}\n aria-selected={isActiveValue}\n className={classNames('bcs-NavButton', {\n 'bcs-is-selected': isActiveValue,\n 'bdl-is-disabled': isDisabled,\n })}\n data-resin-target={dataResinTarget}\n data-testid={dataTestId}\n ref={ref}\n id={id}\n disabled={isDisabled}\n onClick={handleNavButtonClick}\n role=\"tab\"\n tabIndex={isActiveValue ? '0' : '-1'}\n type=\"button\"\n variant=\"tertiary\"\n >\n {children}\n </Button>\n </Tooltip>\n );\n }}\n </Route>\n );\n});\n\nexport default SidebarNavButton;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,kBAAkB;AACxC,OAAOC,IAAI,MAAM,aAAa;AAC9B,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,OAAOC,OAAO,MAAM,kCAAkC;AACtD,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,OAAO,yBAAyB;AAchC,MAAMC,gBAAgB,gBAAGP,KAAK,CAACQ,UAAU,CAAwB,CAACC,KAAY,EAAEC,GAAmB,KAAK;EACpG,MAAM;IACF,mBAAmB,EAAEC,eAAe;IACpC,aAAa,EAAEC,UAAU;IACzBC,QAAQ;IACRC,SAAS,GAAG,EAAE;IACdC,UAAU;IACVC,MAAM;IACNC,OAAO,GAAGf,IAAI;IACdgB,WAAW;IACXC;EACJ,CAAC,GAAGV,KAAK;EACT,MAAMW,WAAW,GAAG,IAAIF,WAAW,EAAE;EAErC,oBACIlB,KAAA,CAAAqB,aAAA,CAACpB,KAAK;IAACqB,IAAI,EAAEF;EAAY,GACpB,CAAC;IAAEG,KAAK;IAAEC;EAAQ,CAAC,KAAK;IACrB,MAAMC,OAAO,GAAG,CAAC,CAACF,KAAK;IACvB,MAAMG,aAAa,GAAGD,OAAO,IAAI,CAAC,CAACT,MAAM;IACzC,MAAMW,YAAY,GAAGF,OAAO,IAAIF,KAAK,CAACK,OAAO;IAC7C,MAAMC,EAAE,GAAG,GAAGf,SAAS,GAAGA,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGI,WAAW,EAAE;IAErE,MAAMY,oBAAoB,GAAGC,KAAK,IAAI;MAClCd,OAAO,CAACC,WAAW,CAAC;MAEpB,IAAI,CAACa,KAAK,CAACC,gBAAgB,IAAI1B,WAAW,CAACyB,KAAK,CAAC,EAAE;QAC/C,MAAME,MAAM,GAAGN,YAAY,GAAGH,OAAO,CAACU,OAAO,GAAGV,OAAO,CAACW,IAAI;QAC5DF,MAAM,CAAC;UACHG,QAAQ,EAAEhB,WAAW;UACrBiB,KAAK,EAAE;YAAEC,IAAI,EAAE;UAAK;QACxB,CAAC,CAAC;MACN;IACJ,CAAC;IAED,oBACItC,KAAA,CAAAqB,aAAA,CAAChB,OAAO;MAACkC,QAAQ,EAAC,aAAa;MAACC,IAAI,EAAErB,OAAQ;MAACsB,UAAU,EAAE;IAAM,gBAC7DzC,KAAA,CAAAqB,aAAA,CAACjB,MAAM;MACHsC,sBAAsB,EAAE,IAAK;MAC7B,iBAAe,GAAGb,EAAE,UAAW;MAC/B,cAAYV,OAAQ;MACpB,iBAAeO,aAAc;MAC7BiB,SAAS,EAAExC,UAAU,CAAC,eAAe,EAAE;QACnC,iBAAiB,EAAEuB,aAAa;QAChC,iBAAiB,EAAEX;MACvB,CAAC,CAAE;MACH,qBAAmBJ,eAAgB;MACnC,eAAaC,UAAW;MACxBF,GAAG,EAAEA,GAAI;MACTmB,EAAE,EAAEA,EAAG;MACPe,QAAQ,EAAE7B,UAAW;MACrBE,OAAO,EAAEa,oBAAqB;MAC9Be,IAAI,EAAC,KAAK;MACVC,QAAQ,EAAEpB,aAAa,GAAG,GAAG,GAAG,IAAK;MACrCqB,IAAI,EAAC,QAAQ;MACbC,OAAO,EAAC;IAAU,GAEjBnC,QACG,CACH,CAAC;EAElB,CACG,CAAC;AAEhB,CAAC,CAAC;AAEF,eAAeN,gBAAgB","ignoreList":[]}
@@ -3,6 +3,8 @@
3
3
 
4
4
  .bcs .bcs-NavButton {
5
5
  @include bdl-SidebarNavButton;
6
+
7
+ border-radius: 0;
6
8
 
7
9
  &::before {
8
10
  position: absolute;
@@ -21,6 +23,11 @@
21
23
  }
22
24
  }
23
25
 
26
+ // Style disabled buttons with proper visual feedback
27
+ &[aria-disabled="true"] {
28
+ cursor: default;
29
+ }
30
+
24
31
  &.bcs-is-selected {
25
32
  &::before {
26
33
  background-color: $blue;
@@ -30,6 +37,12 @@
30
37
  fill: $blue;
31
38
  }
32
39
  }
40
+
41
+ // Blueprint button focus override
42
+ &:not(:disabled)[data-focus-visible] {
43
+ border-radius: var(--radius-1);
44
+ box-shadow: 0 0 0 var(--border-2) var(--outline-focus-on-light);
45
+ }
33
46
  }
34
47
 
35
48
  @include breakpoint($medium-screen) {
@@ -8,7 +8,7 @@ import * as React from 'react';
8
8
  import { FormattedMessage } from 'react-intl';
9
9
  import { Route } from 'react-router-dom';
10
10
  import BoxDrive140 from '../../../illustration/BoxDrive140';
11
- import { BackButton } from '../../common/nav-button';
11
+ import BackButton from '../../common/back-button';
12
12
  import PrimaryButton from '../../../components/primary-button';
13
13
  import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
14
14
  import VersionsMenu from './VersionsMenu';
@@ -10,7 +10,7 @@ import { Route } from 'react-router-dom';
10
10
 
11
11
  import BoxDrive140 from '../../../illustration/BoxDrive140';
12
12
 
13
- import { BackButton } from '../../common/nav-button';
13
+ import BackButton from '../../common/back-button';
14
14
  import PrimaryButton from '../../../components/primary-button';
15
15
  import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
16
16
  import VersionsMenu from './VersionsMenu';
@@ -1 +1 @@
1
- {"version":3,"file":"StaticVersionSidebar.js","names":["React","FormattedMessage","Route","BoxDrive140","BackButton","PrimaryButton","LoadingIndicatorWrapper","VersionsMenu","messages","StaticVersionsSidebar","isLoading","onUpgradeClick","parentName","versionTimestamp","Date","setDate","getDate","versions","map","versionNumber","id","version_number","type","permissions","can_preview","created_at","toUTCString","modified_by","size","trashed_at","uploader_display_name","createElement","history","className","role","Fragment","onClick","push","versionsTitle","crawlerPosition","fileId","versionCount","versionLimit","versionUpgradeLink","versionUpsell","upgradeButton"],"sources":["../../../../src/elements/content-sidebar/versions/StaticVersionSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Static Versions Sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Route } from 'react-router-dom';\n\nimport BoxDrive140 from '../../../illustration/BoxDrive140';\n\nimport { BackButton } from '../../common/nav-button';\nimport PrimaryButton from '../../../components/primary-button';\nimport { LoadingIndicatorWrapper } from '../../../components/loading-indicator';\nimport VersionsMenu from './VersionsMenu';\n\nimport messages from './messages';\n\nimport './StaticVersionsSidebar.scss';\n\ntype Props = {\n isLoading: boolean,\n onUpgradeClick: () => void,\n parentName: string,\n};\n\nconst StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName }: Props): React.Node => {\n const versionTimestamp = new Date();\n versionTimestamp.setDate(versionTimestamp.getDate() - 1);\n\n const versions = ['1', '2', '3'].map(versionNumber => {\n return {\n id: versionNumber,\n version_number: versionNumber,\n type: 'file_version',\n permissions: {\n can_preview: true,\n },\n created_at: versionTimestamp.toUTCString(),\n modified_by: null,\n size: 1875887,\n trashed_at: null,\n uploader_display_name: 'John Doe',\n };\n });\n\n return (\n <Route>\n {({ history }) => (\n <div\n className=\"bcs-StaticVersionSidebar\"\n role=\"tabpanel\"\n data-resin-component=\"preview\"\n data-resin-feature=\"versions\"\n >\n <div className=\"bcs-StaticVersionSidebar-header\">\n <h3 className=\"bcs-StaticVersionSidebar-title\">\n <>\n <BackButton data-resin-target=\"back\" onClick={() => history.push(`/${parentName}`)} />\n <FormattedMessage {...messages.versionsTitle} />\n </>\n </h3>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-content-wrapper\">\n <LoadingIndicatorWrapper\n className=\"bcs-StaticVersionSidebar-content\"\n crawlerPosition=\"top\"\n isLoading={isLoading}\n >\n <VersionsMenu versions={versions} fileId=\"1\" versionCount={3} versionLimit={3} />\n </LoadingIndicatorWrapper>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-upsell-wrapper\">\n <div className=\"bcs-StaticVersionSidebar-upsell\">\n <BoxDrive140 className=\"bcs-StaticVersionSidebar-upsell-icon\" />\n <p className=\"bcs-StaticVersionSidebar-upsell-header\">\n <FormattedMessage {...messages.versionUpgradeLink} />\n </p>\n <p>\n <FormattedMessage {...messages.versionUpsell} />\n </p>\n <PrimaryButton\n className=\"bcs-StaticVersionSidebar-upsell-button\"\n data-resin-target=\"versioning_error_upgrade_cta\"\n onClick={onUpgradeClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeButton} />\n </PrimaryButton>\n </div>\n </div>\n </div>\n )}\n </Route>\n );\n};\n\nexport default StaticVersionsSidebar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"StaticVersionSidebar.js","names":["React","FormattedMessage","Route","BoxDrive140","BackButton","PrimaryButton","LoadingIndicatorWrapper","VersionsMenu","messages","StaticVersionsSidebar","isLoading","onUpgradeClick","parentName","versionTimestamp","Date","setDate","getDate","versions","map","versionNumber","id","version_number","type","permissions","can_preview","created_at","toUTCString","modified_by","size","trashed_at","uploader_display_name","createElement","history","className","role","Fragment","onClick","push","versionsTitle","crawlerPosition","fileId","versionCount","versionLimit","versionUpgradeLink","versionUpsell","upgradeButton"],"sources":["../../../../src/elements/content-sidebar/versions/StaticVersionSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Static Versions Sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Route } from 'react-router-dom';\n\nimport BoxDrive140 from '../../../illustration/BoxDrive140';\n\nimport BackButton from '../../common/back-button';\nimport PrimaryButton from '../../../components/primary-button';\nimport { LoadingIndicatorWrapper } from '../../../components/loading-indicator';\nimport VersionsMenu from './VersionsMenu';\n\nimport messages from './messages';\n\nimport './StaticVersionsSidebar.scss';\n\ntype Props = {\n isLoading: boolean,\n onUpgradeClick: () => void,\n parentName: string,\n};\n\nconst StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName }: Props): React.Node => {\n const versionTimestamp = new Date();\n versionTimestamp.setDate(versionTimestamp.getDate() - 1);\n\n const versions = ['1', '2', '3'].map(versionNumber => {\n return {\n id: versionNumber,\n version_number: versionNumber,\n type: 'file_version',\n permissions: {\n can_preview: true,\n },\n created_at: versionTimestamp.toUTCString(),\n modified_by: null,\n size: 1875887,\n trashed_at: null,\n uploader_display_name: 'John Doe',\n };\n });\n\n return (\n <Route>\n {({ history }) => (\n <div\n className=\"bcs-StaticVersionSidebar\"\n role=\"tabpanel\"\n data-resin-component=\"preview\"\n data-resin-feature=\"versions\"\n >\n <div className=\"bcs-StaticVersionSidebar-header\">\n <h3 className=\"bcs-StaticVersionSidebar-title\">\n <>\n <BackButton data-resin-target=\"back\" onClick={() => history.push(`/${parentName}`)} />\n <FormattedMessage {...messages.versionsTitle} />\n </>\n </h3>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-content-wrapper\">\n <LoadingIndicatorWrapper\n className=\"bcs-StaticVersionSidebar-content\"\n crawlerPosition=\"top\"\n isLoading={isLoading}\n >\n <VersionsMenu versions={versions} fileId=\"1\" versionCount={3} versionLimit={3} />\n </LoadingIndicatorWrapper>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-upsell-wrapper\">\n <div className=\"bcs-StaticVersionSidebar-upsell\">\n <BoxDrive140 className=\"bcs-StaticVersionSidebar-upsell-icon\" />\n <p className=\"bcs-StaticVersionSidebar-upsell-header\">\n <FormattedMessage {...messages.versionUpgradeLink} />\n </p>\n <p>\n <FormattedMessage {...messages.versionUpsell} />\n </p>\n <PrimaryButton\n className=\"bcs-StaticVersionSidebar-upsell-button\"\n data-resin-target=\"versioning_error_upgrade_cta\"\n onClick={onUpgradeClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeButton} />\n </PrimaryButton>\n </div>\n </div>\n </div>\n )}\n </Route>\n );\n};\n\nexport default StaticVersionsSidebar;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,SAASC,KAAK,QAAQ,kBAAkB;AAExC,OAAOC,WAAW,MAAM,mCAAmC;AAE3D,OAAOC,UAAU,MAAM,0BAA0B;AACjD,OAAOC,aAAa,MAAM,oCAAoC;AAC9D,SAASC,uBAAuB,QAAQ,uCAAuC;AAC/E,OAAOC,YAAY,MAAM,gBAAgB;AAEzC,OAAOC,QAAQ,MAAM,YAAY;AAEjC,OAAO,8BAA8B;AAQrC,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC,SAAS;EAAEC,cAAc;EAAEC;AAAkB,CAAC,KAAiB;EAC5F,MAAMC,gBAAgB,GAAG,IAAIC,IAAI,CAAC,CAAC;EACnCD,gBAAgB,CAACE,OAAO,CAACF,gBAAgB,CAACG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAExD,MAAMC,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACC,GAAG,CAACC,aAAa,IAAI;IAClD,OAAO;MACHC,EAAE,EAAED,aAAa;MACjBE,cAAc,EAAEF,aAAa;MAC7BG,IAAI,EAAE,cAAc;MACpBC,WAAW,EAAE;QACTC,WAAW,EAAE;MACjB,CAAC;MACDC,UAAU,EAAEZ,gBAAgB,CAACa,WAAW,CAAC,CAAC;MAC1CC,WAAW,EAAE,IAAI;MACjBC,IAAI,EAAE,OAAO;MACbC,UAAU,EAAE,IAAI;MAChBC,qBAAqB,EAAE;IAC3B,CAAC;EACL,CAAC,CAAC;EAEF,oBACI9B,KAAA,CAAA+B,aAAA,CAAC7B,KAAK,QACD,CAAC;IAAE8B;EAAQ,CAAC,kBACThC,KAAA,CAAA+B,aAAA;IACIE,SAAS,EAAC,0BAA0B;IACpCC,IAAI,EAAC,UAAU;IACf,wBAAqB,SAAS;IAC9B,sBAAmB;EAAU,gBAE7BlC,KAAA,CAAA+B,aAAA;IAAKE,SAAS,EAAC;EAAiC,gBAC5CjC,KAAA,CAAA+B,aAAA;IAAIE,SAAS,EAAC;EAAgC,gBAC1CjC,KAAA,CAAA+B,aAAA,CAAA/B,KAAA,CAAAmC,QAAA,qBACInC,KAAA,CAAA+B,aAAA,CAAC3B,UAAU;IAAC,qBAAkB,MAAM;IAACgC,OAAO,EAAEA,CAAA,KAAMJ,OAAO,CAACK,IAAI,CAAC,IAAIzB,UAAU,EAAE;EAAE,CAAE,CAAC,eACtFZ,KAAA,CAAA+B,aAAA,CAAC9B,gBAAgB,EAAKO,QAAQ,CAAC8B,aAAgB,CACjD,CACF,CACH,CAAC,eAENtC,KAAA,CAAA+B,aAAA;IAAKE,SAAS,EAAC;EAA0C,gBACrDjC,KAAA,CAAA+B,aAAA,CAACzB,uBAAuB;IACpB2B,SAAS,EAAC,kCAAkC;IAC5CM,eAAe,EAAC,KAAK;IACrB7B,SAAS,EAAEA;EAAU,gBAErBV,KAAA,CAAA+B,aAAA,CAACxB,YAAY;IAACU,QAAQ,EAAEA,QAAS;IAACuB,MAAM,EAAC,GAAG;IAACC,YAAY,EAAE,CAAE;IAACC,YAAY,EAAE;EAAE,CAAE,CAC3D,CACxB,CAAC,eAEN1C,KAAA,CAAA+B,aAAA;IAAKE,SAAS,EAAC;EAAyC,gBACpDjC,KAAA,CAAA+B,aAAA;IAAKE,SAAS,EAAC;EAAiC,gBAC5CjC,KAAA,CAAA+B,aAAA,CAAC5B,WAAW;IAAC8B,SAAS,EAAC;EAAsC,CAAE,CAAC,eAChEjC,KAAA,CAAA+B,aAAA;IAAGE,SAAS,EAAC;EAAwC,gBACjDjC,KAAA,CAAA+B,aAAA,CAAC9B,gBAAgB,EAAKO,QAAQ,CAACmC,kBAAqB,CACrD,CAAC,eACJ3C,KAAA,CAAA+B,aAAA,yBACI/B,KAAA,CAAA+B,aAAA,CAAC9B,gBAAgB,EAAKO,QAAQ,CAACoC,aAAgB,CAChD,CAAC,eACJ5C,KAAA,CAAA+B,aAAA,CAAC1B,aAAa;IACV4B,SAAS,EAAC,wCAAwC;IAClD,qBAAkB,8BAA8B;IAChDG,OAAO,EAAEzB,cAAe;IACxBW,IAAI,EAAC;EAAQ,gBAEbtB,KAAA,CAAA+B,aAAA,CAAC9B,gBAAgB,EAAKO,QAAQ,CAACqC,aAAgB,CACpC,CACd,CACJ,CACJ,CAEN,CAAC;AAEhB,CAAC;AAED,eAAepC,qBAAqB","ignoreList":[]}
@@ -7,11 +7,14 @@
7
7
  import * as React from 'react';
8
8
  import VersionsList from './VersionsList';
9
9
  import type { BoxItemVersion } from '../../../common/types/core';
10
+ import type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';
10
11
  import './VersionsGroup.scss';
11
12
 
12
13
  type Props = {
13
14
  fileId: string,
14
15
  heading: string,
16
+ internalSidebarNavigation?: InternalSidebarNavigation,
17
+ routerDisabled?: boolean,
15
18
  versionCount: number,
16
19
  versionLimit: number,
17
20
  versions: Array<BoxItemVersion>,
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsGroup.js","names":["React","VersionsList","VersionsGroup","_ref","heading","rest","_objectWithoutProperties","_excluded","createElement","className"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsGroup.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Group component\n * @author Box\n */\n\nimport * as React from 'react';\nimport VersionsList from './VersionsList';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport './VersionsGroup.scss';\n\ntype Props = {\n fileId: string,\n heading: string,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsGroup = ({ heading, ...rest }: Props) => {\n return (\n <section className=\"bcs-VersionsGroup\">\n <h4 className=\"bcs-VersionsGroup-heading\">{heading}</h4>\n <VersionsList {...rest} />\n </section>\n );\n};\n\nexport default VersionsGroup;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,YAAY,MAAM,gBAAgB;AAEzC,OAAO,sBAAsB;AAU7B,MAAMC,aAAa,GAAGC,IAAA,IAAiC;EAAA,IAAhC;MAAEC;IAAwB,CAAC,GAAAD,IAAA;IAAbE,IAAI,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EACrC,oBACIP,KAAA,CAAAQ,aAAA;IAASC,SAAS,EAAC;EAAmB,gBAClCT,KAAA,CAAAQ,aAAA;IAAIC,SAAS,EAAC;EAA2B,GAAEL,OAAY,CAAC,eACxDJ,KAAA,CAAAQ,aAAA,CAACP,YAAY,EAAKI,IAAO,CACpB,CAAC;AAElB,CAAC;AAED,eAAeH,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"VersionsGroup.js","names":["React","VersionsList","VersionsGroup","_ref","heading","rest","_objectWithoutProperties","_excluded","createElement","className"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsGroup.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Group component\n * @author Box\n */\n\nimport * as React from 'react';\nimport VersionsList from './VersionsList';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';\nimport './VersionsGroup.scss';\n\ntype Props = {\n fileId: string,\n heading: string,\n internalSidebarNavigation?: InternalSidebarNavigation,\n routerDisabled?: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsGroup = ({ heading, ...rest }: Props) => {\n return (\n <section className=\"bcs-VersionsGroup\">\n <h4 className=\"bcs-VersionsGroup-heading\">{heading}</h4>\n <VersionsList {...rest} />\n </section>\n );\n};\n\nexport default VersionsGroup;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,YAAY,MAAM,gBAAgB;AAGzC,OAAO,sBAAsB;AAY7B,MAAMC,aAAa,GAAGC,IAAA,IAAiC;EAAA,IAAhC;MAAEC;IAAwB,CAAC,GAAAD,IAAA;IAAbE,IAAI,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EACrC,oBACIP,KAAA,CAAAQ,aAAA;IAASC,SAAS,EAAC;EAAmB,gBAClCT,KAAA,CAAAQ,aAAA;IAAIC,SAAS,EAAC;EAA2B,GAAEL,OAAY,CAAC,eACxDJ,KAAA,CAAAQ,aAAA,CAACP,YAAY,EAAKI,IAAO,CACpB,CAAC;AAElB,CAAC;AAED,eAAeH,aAAa","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- const _excluded = ["currentId", "versions"];
1
+ const _excluded = ["currentId", "internalSidebarNavigation", "routerDisabled", "versions"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  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; }
4
4
  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; }
@@ -15,15 +15,17 @@ import './VersionsList.scss';
15
15
  const VersionsList = _ref => {
16
16
  let {
17
17
  currentId,
18
+ internalSidebarNavigation,
19
+ routerDisabled = false,
18
20
  versions
19
21
  } = _ref,
20
22
  rest = _objectWithoutProperties(_ref, _excluded);
21
- return /*#__PURE__*/React.createElement("ul", {
22
- className: "bcs-VersionsList"
23
- }, versions.map(version => /*#__PURE__*/React.createElement("li", {
24
- className: "bcs-VersionsList-item",
25
- key: version.id
26
- }, /*#__PURE__*/React.createElement(Route, {
23
+ const renderVersionItemWithoutRouter = version => /*#__PURE__*/React.createElement(VersionsItem, _extends({
24
+ isCurrent: currentId === version.id,
25
+ isSelected: internalSidebarNavigation?.versionId === version.id,
26
+ version: version
27
+ }, rest));
28
+ const renderVersionItemWithRouter = version => /*#__PURE__*/React.createElement(Route, {
27
29
  render: ({
28
30
  match
29
31
  }) => /*#__PURE__*/React.createElement(VersionsItem, _extends({
@@ -31,7 +33,13 @@ const VersionsList = _ref => {
31
33
  isSelected: match.params.versionId === version.id,
32
34
  version: version
33
35
  }, rest))
34
- }))));
36
+ });
37
+ return /*#__PURE__*/React.createElement("ul", {
38
+ className: "bcs-VersionsList"
39
+ }, versions.map(version => /*#__PURE__*/React.createElement("li", {
40
+ className: "bcs-VersionsList-item",
41
+ key: version.id
42
+ }, routerDisabled ? renderVersionItemWithoutRouter(version) : renderVersionItemWithRouter(version))));
35
43
  };
36
44
  export default VersionsList;
37
45
  //# sourceMappingURL=VersionsList.js.map
@@ -8,33 +8,51 @@ import * as React from 'react';
8
8
  import { Route } from 'react-router-dom';
9
9
  import VersionsItem from './VersionsItem';
10
10
  import type { BoxItemVersion } from '../../../common/types/core';
11
+ import type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';
11
12
  import './VersionsList.scss';
12
13
 
13
14
  type Props = {
14
15
  currentId?: string,
15
16
  fileId: string,
17
+ internalSidebarNavigation?: InternalSidebarNavigation,
18
+ routerDisabled?: boolean,
16
19
  versionCount: number,
17
20
  versionLimit: number,
18
21
  versions: Array<BoxItemVersion>,
19
22
  };
20
23
 
21
- const VersionsList = ({ currentId, versions, ...rest }: Props) => (
22
- <ul className="bcs-VersionsList">
23
- {versions.map(version => (
24
- <li className="bcs-VersionsList-item" key={version.id}>
25
- <Route
26
- render={({ match }) => (
27
- <VersionsItem
28
- isCurrent={currentId === version.id}
29
- isSelected={match.params.versionId === version.id}
30
- version={version}
31
- {...rest}
32
- />
33
- )}
24
+ const VersionsList = ({ currentId, internalSidebarNavigation, routerDisabled = false, versions, ...rest }: Props) => {
25
+ const renderVersionItemWithoutRouter = (version: BoxItemVersion) => (
26
+ <VersionsItem
27
+ isCurrent={currentId === version.id}
28
+ isSelected={internalSidebarNavigation?.versionId === version.id}
29
+ version={version}
30
+ {...rest}
31
+ />
32
+ );
33
+
34
+ const renderVersionItemWithRouter = (version: BoxItemVersion) => (
35
+ <Route
36
+ render={({ match }) => (
37
+ <VersionsItem
38
+ isCurrent={currentId === version.id}
39
+ isSelected={match.params.versionId === version.id}
40
+ version={version}
41
+ {...rest}
34
42
  />
35
- </li>
36
- ))}
37
- </ul>
38
- );
43
+ )}
44
+ />
45
+ );
46
+
47
+ return (
48
+ <ul className="bcs-VersionsList">
49
+ {versions.map(version => (
50
+ <li className="bcs-VersionsList-item" key={version.id}>
51
+ {routerDisabled ? renderVersionItemWithoutRouter(version) : renderVersionItemWithRouter(version)}
52
+ </li>
53
+ ))}
54
+ </ul>
55
+ );
56
+ };
39
57
 
40
58
  export default VersionsList;
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsList.js","names":["React","Route","VersionsItem","VersionsList","_ref","currentId","versions","rest","_objectWithoutProperties","_excluded","createElement","className","map","version","key","id","render","match","_extends","isCurrent","isSelected","params","versionId"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsList.js"],"sourcesContent":["/**\n * @flow\n * @file Versions List component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport VersionsItem from './VersionsItem';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport './VersionsList.scss';\n\ntype Props = {\n currentId?: string,\n fileId: string,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsList = ({ currentId, versions, ...rest }: Props) => (\n <ul className=\"bcs-VersionsList\">\n {versions.map(version => (\n <li className=\"bcs-VersionsList-item\" key={version.id}>\n <Route\n render={({ match }) => (\n <VersionsItem\n isCurrent={currentId === version.id}\n isSelected={match.params.versionId === version.id}\n version={version}\n {...rest}\n />\n )}\n />\n </li>\n ))}\n </ul>\n);\n\nexport default VersionsList;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,kBAAkB;AACxC,OAAOC,YAAY,MAAM,gBAAgB;AAEzC,OAAO,qBAAqB;AAU5B,MAAMC,YAAY,GAAGC,IAAA;EAAA,IAAC;MAAEC,SAAS;MAAEC;IAAyB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EAAA,oBAChDT,KAAA,CAAAU,aAAA;IAAIC,SAAS,EAAC;EAAkB,GAC3BL,QAAQ,CAACM,GAAG,CAACC,OAAO,iBACjBb,KAAA,CAAAU,aAAA;IAAIC,SAAS,EAAC,uBAAuB;IAACG,GAAG,EAAED,OAAO,CAACE;EAAG,gBAClDf,KAAA,CAAAU,aAAA,CAACT,KAAK;IACFe,MAAM,EAAEA,CAAC;MAAEC;IAAM,CAAC,kBACdjB,KAAA,CAAAU,aAAA,CAACR,YAAY,EAAAgB,QAAA;MACTC,SAAS,EAAEd,SAAS,KAAKQ,OAAO,CAACE,EAAG;MACpCK,UAAU,EAAEH,KAAK,CAACI,MAAM,CAACC,SAAS,KAAKT,OAAO,CAACE,EAAG;MAClDF,OAAO,EAAEA;IAAQ,GACbN,IAAI,CACX;EACH,CACL,CACD,CACP,CACD,CAAC;AAAA,CACR;AAED,eAAeJ,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"VersionsList.js","names":["React","Route","VersionsItem","VersionsList","_ref","currentId","internalSidebarNavigation","routerDisabled","versions","rest","_objectWithoutProperties","_excluded","renderVersionItemWithoutRouter","version","createElement","_extends","isCurrent","id","isSelected","versionId","renderVersionItemWithRouter","render","match","params","className","map","key"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsList.js"],"sourcesContent":["/**\n * @flow\n * @file Versions List component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { Route } from 'react-router-dom';\nimport VersionsItem from './VersionsItem';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';\nimport './VersionsList.scss';\n\ntype Props = {\n currentId?: string,\n fileId: string,\n internalSidebarNavigation?: InternalSidebarNavigation,\n routerDisabled?: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsList = ({ currentId, internalSidebarNavigation, routerDisabled = false, versions, ...rest }: Props) => {\n const renderVersionItemWithoutRouter = (version: BoxItemVersion) => (\n <VersionsItem\n isCurrent={currentId === version.id}\n isSelected={internalSidebarNavigation?.versionId === version.id}\n version={version}\n {...rest}\n />\n );\n\n const renderVersionItemWithRouter = (version: BoxItemVersion) => (\n <Route\n render={({ match }) => (\n <VersionsItem\n isCurrent={currentId === version.id}\n isSelected={match.params.versionId === version.id}\n version={version}\n {...rest}\n />\n )}\n />\n );\n\n return (\n <ul className=\"bcs-VersionsList\">\n {versions.map(version => (\n <li className=\"bcs-VersionsList-item\" key={version.id}>\n {routerDisabled ? renderVersionItemWithoutRouter(version) : renderVersionItemWithRouter(version)}\n </li>\n ))}\n </ul>\n );\n};\n\nexport default VersionsList;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,kBAAkB;AACxC,OAAOC,YAAY,MAAM,gBAAgB;AAGzC,OAAO,qBAAqB;AAY5B,MAAMC,YAAY,GAAGC,IAAA,IAAgG;EAAA,IAA/F;MAAEC,SAAS;MAAEC,yBAAyB;MAAEC,cAAc,GAAG,KAAK;MAAEC;IAAyB,CAAC,GAAAJ,IAAA;IAAbK,IAAI,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA;EACnG,MAAMC,8BAA8B,GAAIC,OAAuB,iBAC3Db,KAAA,CAAAc,aAAA,CAACZ,YAAY,EAAAa,QAAA;IACTC,SAAS,EAAEX,SAAS,KAAKQ,OAAO,CAACI,EAAG;IACpCC,UAAU,EAAEZ,yBAAyB,EAAEa,SAAS,KAAKN,OAAO,CAACI,EAAG;IAChEJ,OAAO,EAAEA;EAAQ,GACbJ,IAAI,CACX,CACJ;EAED,MAAMW,2BAA2B,GAAIP,OAAuB,iBACxDb,KAAA,CAAAc,aAAA,CAACb,KAAK;IACFoB,MAAM,EAAEA,CAAC;MAAEC;IAAM,CAAC,kBACdtB,KAAA,CAAAc,aAAA,CAACZ,YAAY,EAAAa,QAAA;MACTC,SAAS,EAAEX,SAAS,KAAKQ,OAAO,CAACI,EAAG;MACpCC,UAAU,EAAEI,KAAK,CAACC,MAAM,CAACJ,SAAS,KAAKN,OAAO,CAACI,EAAG;MAClDJ,OAAO,EAAEA;IAAQ,GACbJ,IAAI,CACX;EACH,CACL,CACJ;EAED,oBACIT,KAAA,CAAAc,aAAA;IAAIU,SAAS,EAAC;EAAkB,GAC3BhB,QAAQ,CAACiB,GAAG,CAACZ,OAAO,iBACjBb,KAAA,CAAAc,aAAA;IAAIU,SAAS,EAAC,uBAAuB;IAACE,GAAG,EAAEb,OAAO,CAACI;EAAG,GACjDV,cAAc,GAAGK,8BAA8B,CAACC,OAAO,CAAC,GAAGO,2BAA2B,CAACP,OAAO,CAC/F,CACP,CACD,CAAC;AAEb,CAAC;AAED,eAAeV,YAAY","ignoreList":[]}
@@ -11,11 +11,14 @@ import * as util from '../../../utils/datetime';
11
11
  import messages from './messages';
12
12
  import VersionsGroup from './VersionsGroup';
13
13
  import type { BoxItemVersion } from '../../../common/types/core';
14
+ import type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';
14
15
  import './VersionsMenu.scss';
15
16
 
16
17
  type Props = {
17
18
  fileId: string,
18
19
  intl: any,
20
+ internalSidebarNavigation?: InternalSidebarNavigation,
21
+ routerDisabled?: boolean,
19
22
  versionCount: number,
20
23
  versionLimit: number,
21
24
  versions: Array<BoxItemVersion>,
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsMenu.js","names":["React","last","injectIntl","util","messages","VersionsGroup","getHeading","intl","version","created_at","createdAt","currentDate","Date","currentDay","getDay","currentSunday","getDate","createdAtDate","convertToDate","heading","isToday","formatMessage","versionsToday","isYesterday","versionsYesterday","isCurrentYear","formatDate","year","isCurrentMonth","month","versionsThisMonth","versionsPriorWeek","weekday","VersionsMenu","memo","_ref","versions","rest","_objectWithoutProperties","_excluded","id","currentId","versionGroups","reduce","groups","currentGroup","groupHeading","push","groupVersions","createElement","className","map","key","_extends"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsMenu.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Menu component\n * @author Box\n */\n\nimport * as React from 'react';\nimport last from 'lodash/last';\nimport { injectIntl } from 'react-intl';\nimport * as util from '../../../utils/datetime';\nimport messages from './messages';\nimport VersionsGroup from './VersionsGroup';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport './VersionsMenu.scss';\n\ntype Props = {\n fileId: string,\n intl: any,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\ntype VersionGroups = Array<{ groupHeading: string, groupVersions: Array<BoxItemVersion> }>;\n\nconst getHeading = ({ intl, version }: { intl: any, version: BoxItemVersion }): string => {\n const { created_at: createdAt } = version;\n const currentDate = new Date();\n const currentDay = currentDate.getDay();\n const currentSunday = currentDate.getDate() - currentDay;\n const createdAtDate = util.convertToDate(createdAt);\n let heading;\n\n if (util.isToday(createdAtDate)) {\n heading = intl.formatMessage(messages.versionsToday); // Today\n } else if (util.isYesterday(createdAtDate)) {\n heading = intl.formatMessage(messages.versionsYesterday); // Yesterday\n } else if (!util.isCurrentYear(createdAtDate)) {\n heading = intl.formatDate(createdAt, { year: 'numeric' }); // 2018\n } else if (!util.isCurrentMonth(createdAtDate)) {\n heading = intl.formatDate(createdAt, { month: 'long' }); // January\n } else if (createdAtDate.getDate() <= currentSunday - 7) {\n heading = intl.formatMessage(messages.versionsThisMonth); // This Month\n } else if (createdAtDate.getDate() <= currentSunday) {\n heading = intl.formatMessage(messages.versionsPriorWeek); // Last Week\n } else {\n heading = intl.formatDate(createdAt, { weekday: 'long' }); // Monday\n }\n\n return heading;\n};\n\nconst VersionsMenu = React.memo<Props>(({ intl, versions, ...rest }: Props) => {\n const { id: currentId } = versions[0] || {};\n\n // Build an ordered set of groups with headings based on the original order of the versions array\n const versionGroups = versions.reduce((groups: VersionGroups, version: BoxItemVersion): VersionGroups => {\n const currentGroup = last(groups);\n const groupHeading = getHeading({ intl, version });\n\n // Push a new group if there are no groups or if the heading has changed\n if (!currentGroup || currentGroup.groupHeading !== groupHeading) {\n groups.push({\n groupHeading,\n groupVersions: [],\n });\n }\n\n // Push the sorted version to the newest group's versions collection\n last(groups).groupVersions.push(version);\n return groups;\n }, []);\n\n return (\n <ul className=\"bcs-VersionsMenu\">\n {versionGroups.map(({ groupHeading, groupVersions }) => (\n <li className=\"bcs-VersionsMenu-item\" key={groupHeading}>\n <VersionsGroup currentId={currentId} heading={groupHeading} versions={groupVersions} {...rest} />\n </li>\n ))}\n </ul>\n );\n});\n\nexport default injectIntl(VersionsMenu);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VersionsMenu.js","names":["React","last","injectIntl","util","messages","VersionsGroup","getHeading","intl","version","created_at","createdAt","currentDate","Date","currentDay","getDay","currentSunday","getDate","createdAtDate","convertToDate","heading","isToday","formatMessage","versionsToday","isYesterday","versionsYesterday","isCurrentYear","formatDate","year","isCurrentMonth","month","versionsThisMonth","versionsPriorWeek","weekday","VersionsMenu","memo","_ref","versions","rest","_objectWithoutProperties","_excluded","id","currentId","versionGroups","reduce","groups","currentGroup","groupHeading","push","groupVersions","createElement","className","map","key","_extends"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsMenu.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Menu component\n * @author Box\n */\n\nimport * as React from 'react';\nimport last from 'lodash/last';\nimport { injectIntl } from 'react-intl';\nimport * as util from '../../../utils/datetime';\nimport messages from './messages';\nimport VersionsGroup from './VersionsGroup';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport type { InternalSidebarNavigation } from '../../common/types/SidebarNavigation';\nimport './VersionsMenu.scss';\n\ntype Props = {\n fileId: string,\n intl: any,\n internalSidebarNavigation?: InternalSidebarNavigation,\n routerDisabled?: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\ntype VersionGroups = Array<{ groupHeading: string, groupVersions: Array<BoxItemVersion> }>;\n\nconst getHeading = ({ intl, version }: { intl: any, version: BoxItemVersion }): string => {\n const { created_at: createdAt } = version;\n const currentDate = new Date();\n const currentDay = currentDate.getDay();\n const currentSunday = currentDate.getDate() - currentDay;\n const createdAtDate = util.convertToDate(createdAt);\n let heading;\n\n if (util.isToday(createdAtDate)) {\n heading = intl.formatMessage(messages.versionsToday); // Today\n } else if (util.isYesterday(createdAtDate)) {\n heading = intl.formatMessage(messages.versionsYesterday); // Yesterday\n } else if (!util.isCurrentYear(createdAtDate)) {\n heading = intl.formatDate(createdAt, { year: 'numeric' }); // 2018\n } else if (!util.isCurrentMonth(createdAtDate)) {\n heading = intl.formatDate(createdAt, { month: 'long' }); // January\n } else if (createdAtDate.getDate() <= currentSunday - 7) {\n heading = intl.formatMessage(messages.versionsThisMonth); // This Month\n } else if (createdAtDate.getDate() <= currentSunday) {\n heading = intl.formatMessage(messages.versionsPriorWeek); // Last Week\n } else {\n heading = intl.formatDate(createdAt, { weekday: 'long' }); // Monday\n }\n\n return heading;\n};\n\nconst VersionsMenu = React.memo<Props>(({ intl, versions, ...rest }: Props) => {\n const { id: currentId } = versions[0] || {};\n\n // Build an ordered set of groups with headings based on the original order of the versions array\n const versionGroups = versions.reduce((groups: VersionGroups, version: BoxItemVersion): VersionGroups => {\n const currentGroup = last(groups);\n const groupHeading = getHeading({ intl, version });\n\n // Push a new group if there are no groups or if the heading has changed\n if (!currentGroup || currentGroup.groupHeading !== groupHeading) {\n groups.push({\n groupHeading,\n groupVersions: [],\n });\n }\n\n // Push the sorted version to the newest group's versions collection\n last(groups).groupVersions.push(version);\n return groups;\n }, []);\n\n return (\n <ul className=\"bcs-VersionsMenu\">\n {versionGroups.map(({ groupHeading, groupVersions }) => (\n <li className=\"bcs-VersionsMenu-item\" key={groupHeading}>\n <VersionsGroup currentId={currentId} heading={groupHeading} versions={groupVersions} {...rest} />\n </li>\n ))}\n </ul>\n );\n});\n\nexport default injectIntl(VersionsMenu);\n"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,7 @@ import InlineError from '../../../components/inline-error';
15
15
  import messages from './messages';
16
16
  import SidebarContent from '../SidebarContent';
17
17
  import VersionsMenu from './VersionsMenu';
18
- import { BackButton } from '../../common/nav-button';
18
+ import BackButton from '../../common/back-button';
19
19
  import { DEFAULT_FETCH_END } from '../../../constants';
20
20
  import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
21
21
  import './VersionsSidebar.scss';
@@ -12,7 +12,7 @@ import InlineError from '../../../components/inline-error';
12
12
  import messages from './messages';
13
13
  import SidebarContent from '../SidebarContent';
14
14
  import VersionsMenu from './VersionsMenu';
15
- import { BackButton } from '../../common/nav-button';
15
+ import BackButton from '../../common/back-button';
16
16
  import { DEFAULT_FETCH_END } from '../../../constants';
17
17
  import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
18
18
  import type { BoxItemVersion } from '../../../common/types/core';