diff --git a/apps/client/src/features/editors/Editor.module.scss b/apps/client/src/features/editors/Editor.module.scss
index ce3c155c3..b6db6cc37 100644
--- a/apps/client/src/features/editors/Editor.module.scss
+++ b/apps/client/src/features/editors/Editor.module.scss
@@ -144,7 +144,7 @@ $playback-width: 450px;
.eventEditor {
border-radius: 8px 8px 0 0;
background-color: $bg-container-l2;
- box-shadow: rgba(0, 0, 0, 0.35) 0 3px 6px 6px;
+ box-shadow: rgba(0, 0, 0, 0.6) 0 3px 6px 6px;
border-top: 1px solid $white-10;
position: absolute;
bottom: 0;
diff --git a/apps/client/src/features/rundown/_blockMixins.scss b/apps/client/src/features/rundown/_blockMixins.scss
index 997d355db..e088e1c35 100644
--- a/apps/client/src/features/rundown/_blockMixins.scss
+++ b/apps/client/src/features/rundown/_blockMixins.scss
@@ -8,13 +8,13 @@ $block-clearance: 8px;
$block-border-radius: 8px;
$block-text-color: $gray-50;
$block-bg: $gray-1200;
+$block-bg2: $gray-1050; // for delay and blocks
$block-box-shadow: rgba(0, 0, 0, 0.5) 0 0 3px 2px;
$secondary-block-height: 40px;
$block-cursor-color: $blue-400;
@mixin block-styling() {
box-sizing: content-box;
- background-color: $block-bg;
border: 1px solid $white-10;
font-family: $ontime-font-family;
border-radius: $block-border-radius;
diff --git a/apps/client/src/features/rundown/block-block/BlockBlock.module.scss b/apps/client/src/features/rundown/block-block/BlockBlock.module.scss
index cd3d4c3d7..f01af1477 100644
--- a/apps/client/src/features/rundown/block-block/BlockBlock.module.scss
+++ b/apps/client/src/features/rundown/block-block/BlockBlock.module.scss
@@ -3,12 +3,14 @@
.block {
@include block-spacing;
@include block-styling;
- box-sizing: content-box;
+
+ background-color: $block-bg2;
+
display: grid;
grid-template-columns: 32px 1fr auto;
- gap: 8px;
align-items: center;
height: $secondary-block-height;
+ gap: 8px;
&.hasCursor {
outline: 1px solid $block-cursor-color;
@@ -19,6 +21,6 @@
@include drag-style;
}
-.actionOverlay {
+.actionMenu {
justify-self: flex-end;
}
diff --git a/apps/client/src/features/rundown/block-block/BlockBlock.tsx b/apps/client/src/features/rundown/block-block/BlockBlock.tsx
index 5e0015389..e85f28661 100644
--- a/apps/client/src/features/rundown/block-block/BlockBlock.tsx
+++ b/apps/client/src/features/rundown/block-block/BlockBlock.tsx
@@ -59,7 +59,7 @@ export default function BlockBlock(props: BlockBlockProps) {
-
+
);
}
diff --git a/apps/client/src/features/rundown/delay-block/DelayBlock.module.scss b/apps/client/src/features/rundown/delay-block/DelayBlock.module.scss
index 8f41bff03..1365ff7ae 100644
--- a/apps/client/src/features/rundown/delay-block/DelayBlock.module.scss
+++ b/apps/client/src/features/rundown/delay-block/DelayBlock.module.scss
@@ -4,6 +4,8 @@
@include block-spacing;
@include block-styling;
+ background-color: $block-bg2;
+
display: grid;
grid-template-columns: 32px 1fr auto;
grid-template-areas: 'drag inpt btns';
diff --git a/apps/client/src/features/rundown/delay-block/DelayBlock.tsx b/apps/client/src/features/rundown/delay-block/DelayBlock.tsx
index 2e4c885fa..b35879e37 100644
--- a/apps/client/src/features/rundown/delay-block/DelayBlock.tsx
+++ b/apps/client/src/features/rundown/delay-block/DelayBlock.tsx
@@ -3,6 +3,7 @@ import { Button, HStack } from '@chakra-ui/react';
import { useSortable } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import { IoCheckmark } from '@react-icons/all-files/io5/IoCheckmark';
+import { IoClose } from '@react-icons/all-files/io5/IoClose';
import { IoReorderTwo } from '@react-icons/all-files/io5/IoReorderTwo';
import { OntimeDelay, OntimeEvent } from 'ontime-types';
@@ -31,7 +32,7 @@ interface DelayBlockProps {
export default function DelayBlock(props: DelayBlockProps) {
const { data, hasCursor, actionHandler } = props;
- const { applyDelay, updateEvent } = useEventAction();
+ const { applyDelay, updateEvent, deleteEvent } = useEventAction();
const handleRef = useRef(null);
const {
@@ -56,9 +57,13 @@ export default function DelayBlock(props: DelayBlockProps) {
}
}, [hasCursor]);
- const applyDelayHandler = useCallback(() => {
+ const applyDelayHandler = () => {
applyDelay(data.id);
- }, [data.id, applyDelay]);
+ };
+
+ const cancelDelayHandler = () => {
+ deleteEvent(data.id);
+ };
const delaySubmitHandler = useCallback(
(value: number) => {
@@ -84,7 +89,10 @@ export default function DelayBlock(props: DelayBlockProps) {
} variant='ontime-subtle-white'>
- Apply delay
+ Apply
+
+ } variant='ontime-subtle-white'>
+ Cancel
diff --git a/apps/client/src/features/rundown/event-block/EventBlock.module.scss b/apps/client/src/features/rundown/event-block/EventBlock.module.scss
index 1e8024070..41a713d44 100644
--- a/apps/client/src/features/rundown/event-block/EventBlock.module.scss
+++ b/apps/client/src/features/rundown/event-block/EventBlock.module.scss
@@ -2,8 +2,11 @@
@use '../../../theme/ontimeColours' as *;
@use '../blockMixins' as *;
+$skip-opacity: 0.1;
+
.eventBlock {
@include block-styling;
+ background-color: $block-bg;
display: grid;
grid-template-areas:
@@ -29,7 +32,6 @@
&.skip {
border: 1px solid $white-3;
- box-shadow: none;
.delayNote,
.eventTitle,
@@ -37,7 +39,7 @@
.binder,
.eventTimers,
.eventStatus {
- opacity: $opacity-disabled;
+ opacity: $skip-opacity;
}
}
}
diff --git a/apps/client/src/features/rundown/event-block/EventBlockInner.tsx b/apps/client/src/features/rundown/event-block/EventBlockInner.tsx
index d3455acaa..2165465f9 100644
--- a/apps/client/src/features/rundown/event-block/EventBlockInner.tsx
+++ b/apps/client/src/features/rundown/event-block/EventBlockInner.tsx
@@ -1,13 +1,13 @@
import { memo, useCallback, useEffect, useState } from 'react';
import { Tooltip } from '@chakra-ui/react';
-import { IoCaretDownCircle } from '@react-icons/all-files/io5/IoCaretDownCircle';
-import { IoCaretUpCircle } from '@react-icons/all-files/io5/IoCaretUpCircle';
+import { IoCaretDown } from '@react-icons/all-files/io5/IoCaretDown';
+import { IoCaretUp } from '@react-icons/all-files/io5/IoCaretUp';
import { IoOptions } from '@react-icons/all-files/io5/IoOptions';
import { IoPeople } from '@react-icons/all-files/io5/IoPeople';
-import { IoPlayCircle } from '@react-icons/all-files/io5/IoPlayCircle';
-import { IoPlayForwardCircle } from '@react-icons/all-files/io5/IoPlayForwardCircle';
-import { IoPlaySkipForwardCircle } from '@react-icons/all-files/io5/IoPlaySkipForwardCircle';
-import { IoStopCircle } from '@react-icons/all-files/io5/IoStopCircle';
+import { IoPlay } from '@react-icons/all-files/io5/IoPlay';
+import { IoPlayForward } from '@react-icons/all-files/io5/IoPlayForward';
+import { IoPlaySkipForward } from '@react-icons/all-files/io5/IoPlaySkipForward';
+import { IoStop } from '@react-icons/all-files/io5/IoStop';
import { IoTime } from '@react-icons/all-files/io5/IoTime';
import { EndAction, Playback, TimerType } from 'ontime-types';
@@ -120,16 +120,16 @@ const EventBlockInner = (props: EventBlockInnerProps) => {
NEXT
)}
-
-
-
-
-
+
+
+
+
+
@@ -161,24 +161,24 @@ export default memo(EventBlockInner);
function EndActionIcon(props: { action: EndAction; className: string }) {
const { action, className } = props;
if (action === EndAction.LoadNext) {
- return ;
+ return ;
}
if (action === EndAction.PlayNext) {
- return ;
+ return ;
}
if (action === EndAction.Stop) {
- return ;
+ return ;
}
- return ;
+ return ;
}
function TimerIcon(props: { type: TimerType; className: string }) {
const { type, className } = props;
if (type === TimerType.CountUp) {
- return ;
+ return ;
}
if (type === TimerType.Clock) {
return ;
}
- return ;
+ return ;
}
diff --git a/apps/client/src/features/rundown/event-block/composite/BlockActionMenu.tsx b/apps/client/src/features/rundown/event-block/composite/BlockActionMenu.tsx
index cc8437542..f7a4b7e2a 100644
--- a/apps/client/src/features/rundown/event-block/composite/BlockActionMenu.tsx
+++ b/apps/client/src/features/rundown/event-block/composite/BlockActionMenu.tsx
@@ -1,13 +1,5 @@
import { useCallback } from 'react';
-import {
- IconButton,
- Menu,
- MenuButton,
- MenuDivider,
- MenuItem,
- MenuList,
- Tooltip,
-} from '@chakra-ui/react';
+import { IconButton, Menu, MenuButton, MenuDivider, MenuItem, MenuList, Tooltip } from '@chakra-ui/react';
import { IoAdd } from '@react-icons/all-files/io5/IoAdd';
import { IoDuplicateOutline } from '@react-icons/all-files/io5/IoDuplicateOutline';
import { IoEllipsisHorizontal } from '@react-icons/all-files/io5/IoEllipsisHorizontal';
@@ -27,14 +19,15 @@ interface BlockActionMenuProps {
actionHandler: (action: EventItemActions, payload?: any) => void;
className?: string;
}
+
export default function BlockActionMenu(props: BlockActionMenuProps) {
const { showAdd, showDelay, showBlock, enableDelete, showClone, actionHandler, className } = props;
- const handleAddEvent = useCallback(() => actionHandler("event"), [actionHandler])
- const handleAddDelay = useCallback(() => actionHandler("delay"), [actionHandler])
- const handleAddBlock = useCallback(() => actionHandler("block"), [actionHandler])
- const handleClone = useCallback(() => actionHandler("clone"), [actionHandler])
- const handleDelete = useCallback(() => actionHandler("delete"), [actionHandler])
+ const handleAddEvent = useCallback(() => actionHandler('event'), [actionHandler]);
+ const handleAddDelay = useCallback(() => actionHandler('delay'), [actionHandler]);
+ const handleAddBlock = useCallback(() => actionHandler('block'), [actionHandler]);
+ const handleClone = useCallback(() => actionHandler('clone'), [actionHandler]);
+ const handleDelete = useCallback(() => actionHandler('delete'), [actionHandler]);
return (