diff --git a/frontend/app/components/Session/Tabs/tabs.css b/frontend/app/components/Session/Tabs/tabs.css
index 0cf1cc320..b5b266b12 100644
--- a/frontend/app/components/Session/Tabs/tabs.css
+++ b/frontend/app/components/Session/Tabs/tabs.css
@@ -1,6 +1,6 @@
.tabs {
display: flex;
- justify-content: flex-start;
+ justify-content: space-around;
align-items: center;
&.bordered {
border-bottom: solid thin $gray-light;
@@ -9,6 +9,8 @@
.tab {
padding: 14px 15px;
+ text-align: center;
+ flex: 1;
cursor: pointer;
transition: all 0.2s;
color: $gray-darkest;
diff --git a/frontend/app/components/Session_/EventsBlock/UserCard/UserCard.js b/frontend/app/components/Session_/EventsBlock/UserCard/UserCard.js
index d4745d3c2..35a6e35c3 100644
--- a/frontend/app/components/Session_/EventsBlock/UserCard/UserCard.js
+++ b/frontend/app/components/Session_/EventsBlock/UserCard/UserCard.js
@@ -74,6 +74,8 @@ function UserCard({
·
- More
+
+ More
+
diff --git a/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx b/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx
index 445d65b80..106a90522 100644
--- a/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx
+++ b/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx
@@ -74,11 +74,11 @@ function PageInsightsPanel({
/>
{ setActiveTab(''); }}
- className="ml-auto flex items-center justify-center bg-white cursor-pointer"
- >
-
-
+ onClick={() => { setActiveTab(''); }}
+ className="ml-auto flex items-center justify-center bg-white cursor-pointer"
+ >
+
In Page
diff --git a/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.module.css b/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.module.css
index e4bf89995..723c2fd1f 100644
--- a/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.module.css
+++ b/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.module.css
@@ -2,7 +2,7 @@
padding: 10px;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
border-radius: 3px;
- background-color: white;
+ background-color: $gray-lightest;
margin-bottom: 15px;
& .top {
@@ -40,5 +40,5 @@
}
.active {
- background-color: #f9ffff;
-}
\ No newline at end of file
+ background-color: $light-blue-bg;
+}
diff --git a/frontend/app/components/Session_/Player/Controls/ControlButton.js b/frontend/app/components/Session_/Player/Controls/ControlButton.js
index 21c14082a..5321aa45c 100644
--- a/frontend/app/components/Session_/Player/Controls/ControlButton.js
+++ b/frontend/app/components/Session_/Player/Controls/ControlButton.js
@@ -18,7 +18,7 @@ const ControlButton = ({
noIcon,
}) => (
);
diff --git a/frontend/app/components/Session_/Player/Controls/Controls.js b/frontend/app/components/Session_/Player/Controls/Controls.js
index 06d7e1064..8a00df915 100644
--- a/frontend/app/components/Session_/Player/Controls/Controls.js
+++ b/frontend/app/components/Session_/Player/Controls/Controls.js
@@ -1,13 +1,15 @@
import React from 'react';
import cn from 'classnames';
import { connect } from 'react-redux';
-import {
+import {
connectPlayer,
STORAGE_TYPES,
selectStorageType,
selectStorageListNow,
} from 'Player/store';
import LiveTag from 'Shared/LiveTag';
+
+import { Icon } from 'UI';
import { toggleInspectorMode } from 'Player';
import {
fullscreenOn,
@@ -22,7 +24,6 @@ import {
GRAPHQL,
FETCH,
EXCEPTIONS,
- LONGTASKS,
INSPECTOR,
} from 'Duck/components/player';
import { ReduxTime } from './Time';
@@ -30,6 +31,7 @@ import Timeline from './Timeline';
import ControlButton from './ControlButton';
import styles from './controls.module.css';
+import { Tooltip } from 'react-tippy';
function getStorageIconName(type) {
@@ -96,7 +98,7 @@ function getStorageName(type) {
showExceptions: state.exceptionsList.length > 0,
showLongtasks: state.longtasksList.length > 0,
}))
-@connect((state, props) => {
+@connect((state, props) => {
const permissions = state.getIn([ 'user', 'account', 'permissions' ]) || [];
const isEnterprise = state.getIn([ 'user', 'account', 'edition' ]) === 'ee';
return {
@@ -131,9 +133,9 @@ export default class Controls extends React.Component {
nextProps.live !== this.props.live ||
nextProps.livePlay !== this.props.livePlay ||
nextProps.playing !== this.props.playing ||
- nextProps.completed !== this.props.completed ||
- nextProps.skip !== this.props.skip ||
- nextProps.skipToIssue !== this.props.skipToIssue ||
+ nextProps.completed !== this.props.completed ||
+ nextProps.skip !== this.props.skip ||
+ nextProps.skipToIssue !== this.props.skipToIssue ||
nextProps.speed !== this.props.speed ||
nextProps.disabled !== this.props.disabled ||
nextProps.fullscreenDisabled !== this.props.fullscreenDisabled ||
@@ -149,7 +151,7 @@ export default class Controls extends React.Component {
nextProps.storageCount !== this.props.storageCount ||
nextProps.storageType !== this.props.storageType ||
nextProps.showStorage !== this.props.showStorage ||
- nextProps.showProfiler !== this.props.showProfiler ||
+ nextProps.showProfiler !== this.props.showProfiler ||
nextProps.showGraphql !== this.props.showGraphql ||
nextProps.showFetch !== this.props.showFetch ||
nextProps.fetchCount !== this.props.fetchCount ||
@@ -162,14 +164,19 @@ export default class Controls extends React.Component {
}
onKeyDown = (e) => {
+ console.log(e.key, e.target)
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {
return;
}
- if (this.props.inspectorMode) return;
+ if (this.props.inspectorMode) {
+ if (e.key === 'Esc' || e.key === 'Escape') {
+ toggleInspectorMode();
+ }
+ };
// if (e.key === ' ') {
// document.activeElement.blur();
// this.props.togglePlay();
- // }
+ // }
if (e.key === 'Esc' || e.key === 'Escape') {
this.props.fullscreenOff();
}
@@ -204,34 +211,46 @@ export default class Controls extends React.Component {
let label;
let icon;
if (completed) {
- icon = 'redo';
+ icon = 'arrow-clockwise';
+ label = 'Replay this session'
} else if (playing) {
- icon = 'play-fill-new';
- } else {
icon = 'pause-fill';
+ label = 'Pause';
+ } else {
+ icon = 'play-fill-new';
+ label = 'Pause';
+ label = 'Play'
}
return (
-
-
-
+
+
+
+
)
}
- controlIcon = (icon, size, action, isBackwards, additionalClasses) =>
-
+
render() {
- const {
+ const {
bottomBlock,
toggleBottomBlock,
live,
@@ -239,7 +258,6 @@ export default class Controls extends React.Component {
skip,
speed,
disabled,
- fullscreenDisabled,
logCount,
logRedCount,
resourceRedCount,
@@ -256,11 +274,9 @@ export default class Controls extends React.Component {
showFetch,
fetchCount,
graphqlCount,
- showLongtasks,
exceptionsCount,
showExceptions,
- fullscreen,
- skipToIssue,
+ fullscreen,
inspectorMode,
closedLive,
} = this.props;
@@ -285,23 +301,41 @@ export default class Controls extends React.Component {
)}
- {this.controlIcon("skip-forward-fill", 18, this.backTenSeconds, true, 'hover:bg-active-blue-border')}
+
+ {this.controlIcon("skip-forward-fill", 18, this.backTenSeconds, true, 'hover:bg-active-blue-border color-main h-full')}
+
10s
- {this.controlIcon("skip-forward-fill", 18, this.forthTenSeconds, false, 'hover:bg-active-blue-border')}
+
+ {this.controlIcon("skip-forward-fill", 18, this.forthTenSeconds, false, 'hover:bg-active-blue-border color-main h-full')}
+
{!live &&
-
-
+
+
+
diff --git a/frontend/app/components/Session_/Player/Controls/controlButton.module.css b/frontend/app/components/Session_/Player/Controls/controlButton.module.css
index bd394c4d9..a8f7459c4 100644
--- a/frontend/app/components/Session_/Player/Controls/controlButton.module.css
+++ b/frontend/app/components/Session_/Player/Controls/controlButton.module.css
@@ -4,12 +4,14 @@
flex-direction: column;
align-items: center;
justify-content: center;
- padding: 5px 10px;
+ padding: 10px 5px;
cursor: pointer;
+ border-top: 0px;
+ border-left: 0px;
+ border-right: 0px;
min-width: 60px;
position: relative;
- border-radius: 3px;
- &.active, &:hover {
+ &:hover {
background-color: $gray-lightest;
transition: all 0.2s;
}
@@ -19,7 +21,7 @@
height: 6px;
border-radius: 3px;
background-color: red;
- bottom: 0px;
+ bottom: 2px;
right: 0px;
position: absolute;
}
@@ -44,7 +46,6 @@
& .label {
/* padding-top: 5px; */
font-size: 10px;
- color: $gray-darkest;
height: 16px;
}
diff --git a/frontend/app/components/Session_/Player/Controls/controls.module.css b/frontend/app/components/Session_/Player/Controls/controls.module.css
index 565905506..1598ddf26 100644
--- a/frontend/app/components/Session_/Player/Controls/controls.module.css
+++ b/frontend/app/components/Session_/Player/Controls/controls.module.css
@@ -64,6 +64,9 @@
background-color: $gray-lightest;
transition: all 0.2s;
}
+ &.active {
+ background: repeating-linear-gradient( 125deg, #efefef, #efefef 3px, #ddd 3px, #efefef 5px );
+ }
}
.divider {
diff --git a/frontend/app/components/Session_/Player/Controls/timeline.module.css b/frontend/app/components/Session_/Player/Controls/timeline.module.css
index 6b649e6ef..1180b6849 100644
--- a/frontend/app/components/Session_/Player/Controls/timeline.module.css
+++ b/frontend/app/components/Session_/Player/Controls/timeline.module.css
@@ -38,7 +38,7 @@
top: 3px;
height: 10px;
bottom: 0;
- background-color: $gray-light;
+ background: repeating-linear-gradient( 125deg, #efefef, #efefef 3px, #ddd 3px, #efefef 5px );
pointer-events: none;
z-index: 2;
}
@@ -49,6 +49,7 @@
width: 2px;
height: 10px;
background: $main;
+ z-index: 3;
pointer-events: none;
/* top: 0; */
/* bottom: 0; */
diff --git a/frontend/app/components/Session_/PlayerBlockHeader.js b/frontend/app/components/Session_/PlayerBlockHeader.js
index 11d63458f..252df59d5 100644
--- a/frontend/app/components/Session_/PlayerBlockHeader.js
+++ b/frontend/app/components/Session_/PlayerBlockHeader.js
@@ -104,9 +104,8 @@ export default class PlayerBlockHeader extends React.PureComponent {
const TABS = [ this.props.tabs.EVENTS, this.props.tabs.HEATMAPS ].map(tab => ({ text: tab, key: tab }));
return (
-
-
-
+
-
+
diff --git a/frontend/app/svg/icons/arrow-clockwise.svg b/frontend/app/svg/icons/arrow-clockwise.svg
new file mode 100644
index 000000000..dd97aa56f
--- /dev/null
+++ b/frontend/app/svg/icons/arrow-clockwise.svg
@@ -0,0 +1,4 @@
+
diff --git a/frontend/app/theme/colors.js b/frontend/app/theme/colors.js
index 29e740634..342a35757 100644
--- a/frontend/app/theme/colors.js
+++ b/frontend/app/theme/colors.js
@@ -31,7 +31,7 @@ module.exports = {
"bg-blue": "#e3e6ff",
"active-blue-border": "#D0D4F2",
pink: "#ffb9b9",
-
+ "light-blue-bg": "#E5F7F7",
white: "#fff",
borderColor: {