@imposium-hub/components 2.6.0-0 → 2.6.0-1
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/cjs/components/app-wrapper/AppWrapper.d.ts +24 -5
- package/dist/cjs/components/app-wrapper/AppWrapper.js +104 -22
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/StoryTableNameFilter.d.ts +9 -2
- package/dist/cjs/components/assets/StoryTableNameFilter.js +3 -13
- package/dist/cjs/components/assets/StoryTableNameFilter.js.map +1 -1
- package/dist/cjs/components/context-menu/AnimateComponent.d.ts +6 -6
- package/dist/cjs/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenu.d.ts +12 -27
- package/dist/cjs/components/context-menu/ContextMenu.js +2 -15
- package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +6 -18
- package/dist/cjs/components/context-menu/ContextMenuItem.js +2 -21
- package/dist/cjs/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +6 -16
- package/dist/cjs/components/context-menu/ContextMenuTrigger.js +2 -20
- package/dist/cjs/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/cjs/components/context-menu/SubMenu.d.ts +4 -12
- package/dist/cjs/components/context-menu/SubMenu.js +2 -17
- package/dist/cjs/components/context-menu/SubMenu.js.map +1 -1
- package/dist/cjs/components/data-table/Paginator.d.ts +16 -1
- package/dist/cjs/components/data-table/Paginator.js +1 -1
- package/dist/cjs/components/data-table/Paginator.js.map +1 -1
- package/dist/cjs/components/font-picker/font-manager/constants.d.ts +4 -0
- package/dist/cjs/components/font-picker/font-manager/constants.js +5 -1
- package/dist/cjs/components/font-picker/font-manager/constants.js.map +1 -1
- package/dist/cjs/components/header/Header.d.ts +3 -5
- package/dist/cjs/components/header/Header.js +77 -126
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/header/ProjectDropdown.d.ts +13 -0
- package/dist/cjs/components/header/ProjectDropdown.js +128 -0
- package/dist/cjs/components/header/ProjectDropdown.js.map +1 -0
- package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
- package/dist/cjs/components/header/StoryDropdown.js +111 -0
- package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
- package/dist/cjs/components/portal/Portal.d.ts +0 -2
- package/dist/cjs/components/portal/Portal.js.map +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +1 -3
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +3 -0
- package/dist/cjs/constants/copy.js +3 -0
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +9 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/API.d.ts +5 -2
- package/dist/cjs/services/API.js +198 -75
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/cjs/utils/modal.d.ts +2 -0
- package/dist/cjs/utils/modal.js +11 -0
- package/dist/cjs/utils/modal.js.map +1 -0
- package/dist/cjs/utils/pendo.d.ts +24 -0
- package/dist/cjs/utils/pendo.js +62 -0
- package/dist/cjs/utils/pendo.js.map +1 -0
- package/dist/cjs/utils/routing.d.ts +2 -0
- package/dist/cjs/utils/routing.js +10 -1
- package/dist/cjs/utils/routing.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.d.ts +24 -5
- package/dist/esm/components/app-wrapper/AppWrapper.js +97 -19
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/StoryTableNameFilter.d.ts +9 -2
- package/dist/esm/components/assets/StoryTableNameFilter.js +3 -13
- package/dist/esm/components/assets/StoryTableNameFilter.js.map +1 -1
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +6 -6
- package/dist/esm/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenu.d.ts +12 -27
- package/dist/esm/components/context-menu/ContextMenu.js +2 -4
- package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +6 -18
- package/dist/esm/components/context-menu/ContextMenuItem.js +2 -10
- package/dist/esm/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +6 -16
- package/dist/esm/components/context-menu/ContextMenuTrigger.js +2 -9
- package/dist/esm/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/esm/components/context-menu/SubMenu.d.ts +4 -12
- package/dist/esm/components/context-menu/SubMenu.js +2 -6
- package/dist/esm/components/context-menu/SubMenu.js.map +1 -1
- package/dist/esm/components/data-table/Paginator.d.ts +16 -1
- package/dist/esm/components/data-table/Paginator.js +1 -1
- package/dist/esm/components/data-table/Paginator.js.map +1 -1
- package/dist/esm/components/font-picker/font-manager/constants.d.ts +4 -0
- package/dist/esm/components/font-picker/font-manager/constants.js +4 -0
- package/dist/esm/components/font-picker/font-manager/constants.js.map +1 -1
- package/dist/esm/components/header/Header.d.ts +3 -5
- package/dist/esm/components/header/Header.js +75 -115
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/header/ProjectDropdown.d.ts +13 -0
- package/dist/esm/components/header/ProjectDropdown.js +101 -0
- package/dist/esm/components/header/ProjectDropdown.js.map +1 -0
- package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
- package/dist/esm/components/header/StoryDropdown.js +82 -0
- package/dist/esm/components/header/StoryDropdown.js.map +1 -0
- package/dist/esm/components/portal/Portal.d.ts +0 -2
- package/dist/esm/components/portal/Portal.js.map +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +1 -3
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +3 -0
- package/dist/esm/constants/copy.js +3 -0
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/API.d.ts +5 -2
- package/dist/esm/services/API.js +43 -18
- package/dist/esm/services/API.js.map +1 -1
- package/dist/esm/utils/modal.d.ts +2 -0
- package/dist/esm/utils/modal.js +7 -0
- package/dist/esm/utils/modal.js.map +1 -0
- package/dist/esm/utils/pendo.d.ts +24 -0
- package/dist/esm/utils/pendo.js +52 -0
- package/dist/esm/utils/pendo.js.map +1 -0
- package/dist/esm/utils/routing.d.ts +2 -0
- package/dist/esm/utils/routing.js +7 -0
- package/dist/esm/utils/routing.js.map +1 -1
- package/package.json +3 -1
- package/src/components/app-wrapper/AppWrapper.tsx +155 -26
- package/src/components/assets/StoryTableNameFilter.tsx +6 -22
- package/src/components/context-menu/AnimateComponent.tsx +12 -1
- package/src/components/context-menu/ContextMenu.tsx +16 -8
- package/src/components/context-menu/ContextMenuItem.tsx +12 -11
- package/src/components/context-menu/ContextMenuTrigger.tsx +12 -10
- package/src/components/context-menu/SubMenu.tsx +6 -8
- package/src/components/data-table/Paginator.tsx +19 -6
- package/src/components/font-picker/font-manager/constants.ts +5 -0
- package/src/components/header/Header.tsx +103 -190
- package/src/components/header/ProjectDropdown.tsx +174 -0
- package/src/components/portal/Portal.tsx +1 -2
- package/src/components/publish-wizard/PublishWizard.tsx +1 -1
- package/src/components/publish-wizard/publish/EmailWorkflow.tsx +7 -1
- package/src/constants/copy.ts +3 -0
- package/src/index.ts +5 -0
- package/src/services/API.ts +51 -20
- package/src/utils/modal.ts +9 -0
- package/src/utils/pendo.ts +61 -0
- package/src/utils/routing.ts +10 -0
|
@@ -4,9 +4,21 @@ import { registerEvent, callHideEvent } from './registerEvent';
|
|
|
4
4
|
import AnimateComponent from './AnimateComponent';
|
|
5
5
|
import { throttle } from './helper';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
interface IContextMenuProps {
|
|
8
|
+
id: string;
|
|
9
|
+
appendTo: string;
|
|
10
|
+
hideOnLeave?: boolean;
|
|
11
|
+
onMouseLeave?: (e: any) => void;
|
|
12
|
+
onHide?: () => void;
|
|
13
|
+
onShow?: () => void;
|
|
14
|
+
preventHideOnScroll?: boolean;
|
|
15
|
+
preventHideOnResize?: boolean;
|
|
16
|
+
animation?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const ContextMenu: React.FC<IContextMenuProps> = ({
|
|
9
20
|
id,
|
|
21
|
+
children,
|
|
10
22
|
appendTo,
|
|
11
23
|
hideOnLeave,
|
|
12
24
|
onMouseLeave,
|
|
@@ -14,7 +26,6 @@ const ContextMenu = ({
|
|
|
14
26
|
onShow,
|
|
15
27
|
preventHideOnScroll,
|
|
16
28
|
preventHideOnResize,
|
|
17
|
-
attributes,
|
|
18
29
|
animation
|
|
19
30
|
}) => {
|
|
20
31
|
const contextMenuEl = useRef(null);
|
|
@@ -116,7 +127,7 @@ const ContextMenu = ({
|
|
|
116
127
|
}
|
|
117
128
|
}, [isVisible, clientPosition]);
|
|
118
129
|
|
|
119
|
-
const childrenWithProps = React.Children.map(children, (child) =>
|
|
130
|
+
const childrenWithProps = React.Children.map(children, (child: any) =>
|
|
120
131
|
React.cloneElement(child, { id })
|
|
121
132
|
);
|
|
122
133
|
|
|
@@ -126,8 +137,7 @@ const ContextMenu = ({
|
|
|
126
137
|
className={`contextmenu`}
|
|
127
138
|
ref={contextMenuEl}
|
|
128
139
|
style={{ top, left }}
|
|
129
|
-
onMouseLeave={handleMouseLeave}
|
|
130
|
-
{...attributes}>
|
|
140
|
+
onMouseLeave={handleMouseLeave}>
|
|
131
141
|
{childrenWithProps}
|
|
132
142
|
</div>
|
|
133
143
|
);
|
|
@@ -168,8 +178,6 @@ ContextMenu.defaultProps = {
|
|
|
168
178
|
hideOnLeave: false,
|
|
169
179
|
preventHideOnResize: false,
|
|
170
180
|
preventHideOnScroll: false,
|
|
171
|
-
attributes: {},
|
|
172
|
-
className: '',
|
|
173
181
|
animation: 'fade',
|
|
174
182
|
onMouseLeave: () => null,
|
|
175
183
|
onHide: () => null,
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import React, { useCallback, useRef } from 'react';
|
|
2
2
|
import { callHideEvent } from './registerEvent';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface IContextMenuItemProps {
|
|
5
|
+
onClick?(e: React.MouseEvent): void;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
preventClose?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ContextMenuItem: React.FC<IContextMenuItemProps> = ({
|
|
11
|
+
children,
|
|
12
|
+
onClick,
|
|
13
|
+
disabled,
|
|
14
|
+
preventClose
|
|
15
|
+
}) => {
|
|
5
16
|
const contextMenuItem = useRef(null);
|
|
6
17
|
|
|
7
18
|
const handleClickEvent = useCallback((e) => {
|
|
@@ -15,7 +26,6 @@ const ContextMenuItem = ({ children, onClick, disabled, preventClose, attributes
|
|
|
15
26
|
<div
|
|
16
27
|
className={`${disabled ? 'contextmenu__item--disabled' : 'contextmenu__item'}`}
|
|
17
28
|
onClick={handleClickEvent}
|
|
18
|
-
{...attributes}
|
|
19
29
|
ref={contextMenuItem}>
|
|
20
30
|
{children}
|
|
21
31
|
</div>
|
|
@@ -23,12 +33,3 @@ const ContextMenuItem = ({ children, onClick, disabled, preventClose, attributes
|
|
|
23
33
|
};
|
|
24
34
|
|
|
25
35
|
export default ContextMenuItem;
|
|
26
|
-
|
|
27
|
-
ContextMenuItem.defaultProps = {
|
|
28
|
-
disabled: false,
|
|
29
|
-
preventClose: false,
|
|
30
|
-
attributes: {},
|
|
31
|
-
className: '',
|
|
32
|
-
onClick: () => null,
|
|
33
|
-
onItemHover: () => null
|
|
34
|
-
};
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import React, { useRef, useCallback } from 'react';
|
|
2
2
|
import { callShowEvent, callHideEvent } from './registerEvent';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface IContextMenuTriggerProps {
|
|
5
|
+
id: string;
|
|
6
|
+
disableWhileShiftPressed?: boolean;
|
|
7
|
+
disable?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ContextMenuTrigger: React.FC<IContextMenuTriggerProps> = ({
|
|
11
|
+
children,
|
|
12
|
+
id,
|
|
13
|
+
disableWhileShiftPressed,
|
|
14
|
+
disable
|
|
15
|
+
}) => {
|
|
5
16
|
const menuTrigger = useRef(null);
|
|
6
17
|
|
|
7
18
|
const handleContextMenu = useCallback((e) => {
|
|
@@ -29,7 +40,6 @@ const ContextMenuTrigger = ({ children, id, disableWhileShiftPressed, attributes
|
|
|
29
40
|
<div
|
|
30
41
|
className='menu-trigger'
|
|
31
42
|
ref={menuTrigger}
|
|
32
|
-
{...attributes}
|
|
33
43
|
onContextMenu={(e) => handleContextMenu(e)}>
|
|
34
44
|
{children}
|
|
35
45
|
</div>
|
|
@@ -37,11 +47,3 @@ const ContextMenuTrigger = ({ children, id, disableWhileShiftPressed, attributes
|
|
|
37
47
|
};
|
|
38
48
|
|
|
39
49
|
export default ContextMenuTrigger;
|
|
40
|
-
|
|
41
|
-
ContextMenuTrigger.defaultProps = {
|
|
42
|
-
attributes: {},
|
|
43
|
-
disable: false,
|
|
44
|
-
renderTag: 'div',
|
|
45
|
-
disableWhileShiftPressed: false,
|
|
46
|
-
className: ''
|
|
47
|
-
};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import React, { useCallback, useState, useRef } from 'react';
|
|
2
2
|
import ContextMenuItem from './ContextMenuItem';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface ISubmenuProps {
|
|
5
|
+
title: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const Submenu: React.FC<ISubmenuProps> = ({ children, title }) => {
|
|
5
9
|
const [submenuStyle, setSubmenuStyle] = useState(null);
|
|
6
10
|
const submenuEl = useRef(null);
|
|
7
11
|
const submenuItem = useRef(null);
|
|
@@ -49,8 +53,7 @@ const Submenu = ({ children, title, attributes, className }) => {
|
|
|
49
53
|
onMouseOut={() => hideSubmenu()}
|
|
50
54
|
onFocus={() => null}
|
|
51
55
|
onBlur={() => null}
|
|
52
|
-
ref={submenuItem}
|
|
53
|
-
{...attributes}>
|
|
56
|
+
ref={submenuItem}>
|
|
54
57
|
<ContextMenuItem>{title}</ContextMenuItem>
|
|
55
58
|
<div
|
|
56
59
|
className='submenu__item'
|
|
@@ -63,8 +66,3 @@ const Submenu = ({ children, title, attributes, className }) => {
|
|
|
63
66
|
};
|
|
64
67
|
|
|
65
68
|
export default Submenu;
|
|
66
|
-
|
|
67
|
-
Submenu.defaultProps = {
|
|
68
|
-
title: 'Sub Menu',
|
|
69
|
-
className: ''
|
|
70
|
-
};
|
|
@@ -11,27 +11,40 @@ import {
|
|
|
11
11
|
import { assets as copy } from '../../constants/copy';
|
|
12
12
|
let textInputTimeout: number;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
interface IPaginatorProps {
|
|
15
|
+
pageCount: number;
|
|
16
|
+
pageIndex: number;
|
|
17
|
+
pageSize: number;
|
|
18
|
+
pageOptions: any;
|
|
19
|
+
totalItems: number;
|
|
20
|
+
canPreviousPage: boolean;
|
|
21
|
+
canNextPage: boolean;
|
|
22
|
+
gotoPage: (page: number, pageSize: number) => void;
|
|
23
|
+
previousPage: () => void;
|
|
24
|
+
nextPage: () => void;
|
|
25
|
+
setPageSize: (size: number) => void;
|
|
26
|
+
itemsPerPage: number;
|
|
27
|
+
onItemsPerPage: (size: number) => void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const Paginator: React.FC<IPaginatorProps> = ({
|
|
16
31
|
pageCount,
|
|
17
32
|
pageIndex,
|
|
18
33
|
pageSize,
|
|
19
|
-
pageOptions,
|
|
20
34
|
totalItems,
|
|
21
35
|
canPreviousPage,
|
|
22
36
|
canNextPage,
|
|
23
37
|
gotoPage,
|
|
24
38
|
previousPage,
|
|
25
39
|
nextPage,
|
|
26
|
-
setPageSize,
|
|
27
40
|
itemsPerPage,
|
|
28
41
|
onItemsPerPage
|
|
29
42
|
}) => {
|
|
30
43
|
const [getPageIndex, setPageIndex] = React.useState<number>(pageIndex);
|
|
31
44
|
const [getItemsPerPage, setItemsPerPage] = React.useState<number>(itemsPerPage);
|
|
32
45
|
const [getPageCount, setPageCount] = React.useState<number>(pageCount);
|
|
33
|
-
const [inputPageIndex, setInputPageIndex] = React.useState<
|
|
34
|
-
const [inputItemsPerPage, setInputItemsPerPage] = React.useState<
|
|
46
|
+
const [inputPageIndex, setInputPageIndex] = React.useState<any>('');
|
|
47
|
+
const [inputItemsPerPage, setInputItemsPerPage] = React.useState<any>('');
|
|
35
48
|
|
|
36
49
|
React.useEffect(() => {
|
|
37
50
|
if (pageCount === 0) {
|
|
@@ -5,3 +5,8 @@ export const LIST_BASE_URL = 'https://www.googleapis.com/webfonts/v1/webfonts';
|
|
|
5
5
|
export const FONT_FACE_REGEX = /@font-face {([\s\S]*?)}/gm;
|
|
6
6
|
|
|
7
7
|
export const FONT_FAMILY_DEFAULT = 'Open Sans';
|
|
8
|
+
|
|
9
|
+
export const API_AUTH_TYPES = {
|
|
10
|
+
TOKEN: 'TOKEN',
|
|
11
|
+
ACCESS_KEY: 'ACCESS_KEY'
|
|
12
|
+
};
|
|
@@ -9,29 +9,29 @@ import {
|
|
|
9
9
|
ICON_UP_RIGHT_FROM_SQUARE
|
|
10
10
|
} from '../../constants/icons';
|
|
11
11
|
import { connect } from 'react-redux';
|
|
12
|
-
import _ from 'lodash';
|
|
13
|
-
import DataTable from '../data-table/DataTable';
|
|
14
|
-
import AssetsTableDateCell from '../assets/AssetsTableDateCell';
|
|
15
12
|
import Button from '../button/Button';
|
|
16
13
|
import Select, { createFilter } from 'react-select';
|
|
17
14
|
import { setAccessData } from '../../redux/actions/access';
|
|
18
15
|
import { bindActionCreators } from 'redux';
|
|
19
|
-
import { StoryTableTotalRendersCell } from '../assets/StoryTableTotalRendersCell';
|
|
20
|
-
import StoryTableNameFilter from '../assets/StoryTableNameFilter';
|
|
21
16
|
import { updateStoryFilter } from '../../redux/actions/story-filter';
|
|
22
17
|
import { IImposiumAPI } from '../../services/API';
|
|
23
|
-
|
|
18
|
+
import { pushRoute } from '../../utils/routing';
|
|
19
|
+
import { openConfirmModal } from '../../utils/modal';
|
|
20
|
+
import { header } from '../../constants/copy';
|
|
21
|
+
import { ProjectDropdown } from './ProjectDropdown';
|
|
22
|
+
import { APP_WRAPPER_ERROR_STATES } from '../app-wrapper/AppWrapper';
|
|
24
23
|
export interface IHeaderProps {
|
|
25
24
|
auth0: any;
|
|
26
25
|
api: IImposiumAPI;
|
|
26
|
+
errorState?: string;
|
|
27
27
|
activeServiceId: string;
|
|
28
28
|
activeOrganization: string;
|
|
29
29
|
activeStory?: string;
|
|
30
30
|
hideStoryPicker?: boolean;
|
|
31
31
|
hideOrgPicker?: boolean;
|
|
32
32
|
setAccessData(access: any): void;
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
unsavedChanges: boolean;
|
|
34
|
+
saveStory();
|
|
35
35
|
onLogout();
|
|
36
36
|
additionalButtons?: any[];
|
|
37
37
|
CrMLink?: string;
|
|
@@ -53,9 +53,6 @@ export interface IHeaderState {
|
|
|
53
53
|
showServiceDropdown: boolean;
|
|
54
54
|
dropdownToggleColor: string;
|
|
55
55
|
activeFirstChar: string;
|
|
56
|
-
order: string;
|
|
57
|
-
orderDirection: string;
|
|
58
|
-
totalRendersLoading: boolean;
|
|
59
56
|
}
|
|
60
57
|
|
|
61
58
|
class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
@@ -104,10 +101,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
104
101
|
showStoriesDropdown: false,
|
|
105
102
|
showServiceDropdown: false,
|
|
106
103
|
dropdownToggleColor: ImposiumHeader.DEFAULT_ACCOUNT_TOGGLE_COLOR,
|
|
107
|
-
activeFirstChar: ''
|
|
108
|
-
order: 'date_modified',
|
|
109
|
-
orderDirection: 'desc',
|
|
110
|
-
totalRendersLoading: false
|
|
104
|
+
activeFirstChar: ''
|
|
111
105
|
};
|
|
112
106
|
|
|
113
107
|
this.serviceToggleRef = React.createRef();
|
|
@@ -165,42 +159,80 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
165
159
|
});
|
|
166
160
|
};
|
|
167
161
|
|
|
168
|
-
private closeStoriesDropDown() {
|
|
169
|
-
this.setState({ showStoriesDropdown: false }, () =>
|
|
170
|
-
this.props.updateStoryFilter({ name: '' })
|
|
171
|
-
);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
162
|
private changeStory = (story: any): void => {
|
|
175
|
-
const {
|
|
163
|
+
const { activeOrganization, api, activeServiceId, unsavedChanges } = this.props;
|
|
176
164
|
|
|
177
|
-
|
|
178
|
-
|
|
165
|
+
const changeStory = () => {
|
|
166
|
+
pushRoute(`/${activeOrganization}/${story.id}`);
|
|
179
167
|
api.cacheActiveStory(activeServiceId, activeOrganization, story.id);
|
|
180
|
-
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
if (unsavedChanges) {
|
|
171
|
+
const onYes = () => {
|
|
172
|
+
if (this.props.saveStory) {
|
|
173
|
+
this.props.saveStory();
|
|
174
|
+
}
|
|
175
|
+
changeStory();
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
openConfirmModal({
|
|
179
|
+
showCancel: true,
|
|
180
|
+
noLabel: header.noSave,
|
|
181
|
+
onNo: () => changeStory(),
|
|
182
|
+
yesLabel: header.onSave,
|
|
183
|
+
onYes: () => onYes(),
|
|
184
|
+
title: header.checkUnsaved
|
|
185
|
+
});
|
|
186
|
+
} else {
|
|
187
|
+
changeStory();
|
|
181
188
|
}
|
|
182
189
|
};
|
|
183
190
|
|
|
184
191
|
private toggleAccountDropdown = (toggle: boolean, orgId: string = ''): void => {
|
|
185
|
-
const {
|
|
192
|
+
const { api, activeServiceId, unsavedChanges } = this.props;
|
|
186
193
|
if (toggle) {
|
|
187
194
|
this.setState({ showAccountDropdown: true });
|
|
188
195
|
} else {
|
|
189
196
|
this.setState({ showAccountDropdown: false });
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
197
|
+
|
|
198
|
+
if (orgId) {
|
|
199
|
+
const lastModified = getLastModifiedStoryInOrg(orgId, this.props.access);
|
|
200
|
+
const changeOrg = () => {
|
|
201
|
+
let storyId = lastModified;
|
|
202
|
+
api.getCachedStoryForOrg(activeServiceId, orgId)
|
|
203
|
+
.then((res) => {
|
|
204
|
+
storyId = res.story_id ? res.story_id : lastModified;
|
|
205
|
+
if (storyId) {
|
|
206
|
+
pushRoute(`/${orgId}/${storyId}`);
|
|
207
|
+
api.cacheActiveStory(activeServiceId, orgId, storyId);
|
|
208
|
+
} else {
|
|
209
|
+
pushRoute(`/${orgId}`);
|
|
210
|
+
}
|
|
211
|
+
})
|
|
212
|
+
.catch((e) => {
|
|
213
|
+
console.error('Error getting cached storyID for Org');
|
|
214
|
+
pushRoute(`/${orgId}/${storyId}`);
|
|
215
|
+
api.cacheActiveStory(activeServiceId, orgId, storyId);
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
if (unsavedChanges) {
|
|
220
|
+
const onYes = () => {
|
|
221
|
+
this.props.saveStory();
|
|
222
|
+
changeOrg();
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
openConfirmModal({
|
|
226
|
+
showCancel: true,
|
|
227
|
+
noLabel: header.noSave,
|
|
228
|
+
onNo: () => changeOrg(),
|
|
229
|
+
yesLabel: header.onSave,
|
|
230
|
+
onYes: () => onYes(),
|
|
231
|
+
title: header.checkUnsaved
|
|
202
232
|
});
|
|
203
|
-
|
|
233
|
+
} else {
|
|
234
|
+
changeOrg();
|
|
235
|
+
}
|
|
204
236
|
}
|
|
205
237
|
}
|
|
206
238
|
};
|
|
@@ -254,70 +286,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
254
286
|
</div>
|
|
255
287
|
);
|
|
256
288
|
|
|
257
|
-
private getStoriesColumns() {
|
|
258
|
-
return [
|
|
259
|
-
{
|
|
260
|
-
accessor: 'name',
|
|
261
|
-
Header: 'Name',
|
|
262
|
-
width: 115,
|
|
263
|
-
minWidth: 115,
|
|
264
|
-
Search: () => <StoryTableNameFilter />,
|
|
265
|
-
disableSortBy: false
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
accessor: 'total_renders',
|
|
269
|
-
Header: 'Total Renders',
|
|
270
|
-
width: 60,
|
|
271
|
-
minWidth: 60,
|
|
272
|
-
maxWidth: 60,
|
|
273
|
-
disableSortBy: false,
|
|
274
|
-
Cell: (cell: any) => (
|
|
275
|
-
<StoryTableTotalRendersCell
|
|
276
|
-
loading={this.state.totalRendersLoading}
|
|
277
|
-
cell={cell}
|
|
278
|
-
date_created={false}
|
|
279
|
-
/>
|
|
280
|
-
)
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
accessor: 'last_modified_by',
|
|
284
|
-
Header: 'Last Modified By',
|
|
285
|
-
width: 60,
|
|
286
|
-
minWidth: 60,
|
|
287
|
-
maxWidth: 60,
|
|
288
|
-
disableSortBy: true
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
accessor: 'date_modified',
|
|
292
|
-
Header: 'Last Modified',
|
|
293
|
-
width: 65,
|
|
294
|
-
minWidth: 65,
|
|
295
|
-
maxWidth: 65,
|
|
296
|
-
disableSortBy: false,
|
|
297
|
-
Cell: (cell: any) => (
|
|
298
|
-
<AssetsTableDateCell
|
|
299
|
-
cell={cell}
|
|
300
|
-
date_created={false}
|
|
301
|
-
/>
|
|
302
|
-
)
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
accessor: 'date_created',
|
|
306
|
-
Header: 'Created Date',
|
|
307
|
-
width: 65,
|
|
308
|
-
minWidth: 65,
|
|
309
|
-
maxWidth: 65,
|
|
310
|
-
disableSortBy: false,
|
|
311
|
-
Cell: (cell: any) => (
|
|
312
|
-
<AssetsTableDateCell
|
|
313
|
-
cell={cell}
|
|
314
|
-
date_created={true}
|
|
315
|
-
/>
|
|
316
|
-
)
|
|
317
|
-
}
|
|
318
|
-
];
|
|
319
|
-
}
|
|
320
|
-
|
|
321
289
|
public render() {
|
|
322
290
|
const {
|
|
323
291
|
activeOrganization,
|
|
@@ -330,7 +298,8 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
330
298
|
hideDocs,
|
|
331
299
|
access,
|
|
332
300
|
api,
|
|
333
|
-
access: { organizations }
|
|
301
|
+
access: { organizations },
|
|
302
|
+
errorState
|
|
334
303
|
} = this.props;
|
|
335
304
|
const {
|
|
336
305
|
showAccountDropdown,
|
|
@@ -339,9 +308,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
339
308
|
activeOrganizationBlob,
|
|
340
309
|
activeFirstChar,
|
|
341
310
|
dropdownToggleColor,
|
|
342
|
-
showServiceDropdown
|
|
343
|
-
order,
|
|
344
|
-
orderDirection
|
|
311
|
+
showServiceDropdown
|
|
345
312
|
} = this.state;
|
|
346
313
|
|
|
347
314
|
let currentStory: any;
|
|
@@ -352,9 +319,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
352
319
|
let privateAnchors: JSX.Element[];
|
|
353
320
|
let accountDropdownToggle: JSX.Element;
|
|
354
321
|
let storyToggle: JSX.Element;
|
|
355
|
-
let storyMenuInner: JSX.Element = (
|
|
356
|
-
<div className='no-stories-dialog'>{ImposiumHeader.NO_STORIES_COPY}</div>
|
|
357
|
-
);
|
|
358
322
|
let serviceDropdownToggle: JSX.Element;
|
|
359
323
|
let serviceDropdownMenu: JSX.Element;
|
|
360
324
|
|
|
@@ -438,21 +402,22 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
438
402
|
</div>
|
|
439
403
|
);
|
|
440
404
|
|
|
441
|
-
serviceDropdownToggle =
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
405
|
+
serviceDropdownToggle =
|
|
406
|
+
errorState !== APP_WRAPPER_ERROR_STATES.UNAUTHORIZED_ORG ? (
|
|
407
|
+
<button
|
|
408
|
+
id='btn-toggle-services'
|
|
409
|
+
className='btn-toggle-services'
|
|
410
|
+
style={serviceDropdownColor}
|
|
411
|
+
ref={this.serviceToggleRef}
|
|
412
|
+
onClick={() =>
|
|
413
|
+
this.setState({ showServiceDropdown: !this.state.showServiceDropdown })
|
|
414
|
+
}>
|
|
415
|
+
<span>
|
|
416
|
+
{activeService ? activeService.name : ImposiumHeader.SERVICE_MESH_ALIAS}
|
|
417
|
+
</span>
|
|
418
|
+
{this.renderDropdownChevron(showServiceDropdown)}
|
|
419
|
+
</button>
|
|
420
|
+
) : null;
|
|
456
421
|
|
|
457
422
|
accountDropdownToggle =
|
|
458
423
|
!hideOrgPicker && access.organizations.length > 0 ? (
|
|
@@ -486,21 +451,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
486
451
|
className='btn-toggle-story'
|
|
487
452
|
ref={this.storyToggleRef}
|
|
488
453
|
onClick={() => {
|
|
489
|
-
this.setState({ showStoriesDropdown: !showStoriesDropdown }
|
|
490
|
-
if (showStoriesDropdown === false) {
|
|
491
|
-
this.props.updateStoryFilter({ name: '' });
|
|
492
|
-
this.setState({ totalRendersLoading: true });
|
|
493
|
-
api.getAccessData(true)
|
|
494
|
-
.then((res) => {
|
|
495
|
-
this.props.setAccessData(res);
|
|
496
|
-
this.setState({ totalRendersLoading: false });
|
|
497
|
-
})
|
|
498
|
-
.catch((e) => {
|
|
499
|
-
console.error(e);
|
|
500
|
-
console.error('Error getting access data from Header');
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
});
|
|
454
|
+
this.setState({ showStoriesDropdown: !showStoriesDropdown });
|
|
504
455
|
}}>
|
|
505
456
|
<div className='story-name'>
|
|
506
457
|
{currentStory
|
|
@@ -512,48 +463,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
512
463
|
{this.renderDropdownChevron(showStoriesDropdown)}
|
|
513
464
|
</button>
|
|
514
465
|
);
|
|
515
|
-
|
|
516
|
-
if (activeOrganizationBlob.stories.length !== 0) {
|
|
517
|
-
const sortBy =
|
|
518
|
-
order && orderDirection
|
|
519
|
-
? [{ id: order, desc: orderDirection === 'desc' }]
|
|
520
|
-
: undefined;
|
|
521
|
-
|
|
522
|
-
let sortedStories = _.orderBy(
|
|
523
|
-
activeOrganizationBlob.stories,
|
|
524
|
-
['date_modified'],
|
|
525
|
-
['desc']
|
|
526
|
-
);
|
|
527
|
-
|
|
528
|
-
if (this.props.storyFilter && this.props.storyFilter?.name) {
|
|
529
|
-
const storyFilter = this.props.storyFilter.name.toLowerCase();
|
|
530
|
-
|
|
531
|
-
sortedStories = sortedStories.filter((stories) =>
|
|
532
|
-
stories.name.toLowerCase().includes(storyFilter)
|
|
533
|
-
);
|
|
534
|
-
|
|
535
|
-
const sortById = sortedStories.filter((stories) =>
|
|
536
|
-
stories.id.includes(storyFilter)
|
|
537
|
-
);
|
|
538
|
-
|
|
539
|
-
if (sortById.length > 0) {
|
|
540
|
-
sortedStories = sortById;
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
storyMenuInner = (
|
|
545
|
-
<DataTable
|
|
546
|
-
columns={this.getStoriesColumns()}
|
|
547
|
-
data={sortedStories}
|
|
548
|
-
sortBy={sortBy}
|
|
549
|
-
noDataText={ImposiumHeader.NO_STORIES_COPY}
|
|
550
|
-
itemsPerPage={activeOrganizationBlob.stories.length}
|
|
551
|
-
hidePaginator={true}
|
|
552
|
-
onRowClick={this.changeStory}
|
|
553
|
-
keyboardNav={true}
|
|
554
|
-
/>
|
|
555
|
-
);
|
|
556
|
-
}
|
|
557
466
|
}
|
|
558
467
|
|
|
559
468
|
const orgOptions = [];
|
|
@@ -653,14 +562,18 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
653
562
|
{serviceDropdownMenu}
|
|
654
563
|
</ImposiumDropdown>
|
|
655
564
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
565
|
+
{activeOrganizationBlob && (
|
|
566
|
+
<ProjectDropdown
|
|
567
|
+
api={api}
|
|
568
|
+
position='bottomright'
|
|
569
|
+
setAccessData={this.props.setAccessData}
|
|
570
|
+
storiesArray={activeOrganizationBlob.stories}
|
|
571
|
+
show={this.state.showStoriesDropdown}
|
|
572
|
+
onClose={() => this.setState({ showStoriesDropdown: false })}
|
|
573
|
+
changeStory={this.changeStory}
|
|
574
|
+
toggleRef={this.storyToggleRef}
|
|
575
|
+
/>
|
|
576
|
+
)}
|
|
664
577
|
|
|
665
578
|
<ImposiumDropdown
|
|
666
579
|
key='org-dropdown'
|