diff --git a/src/CollectionNode.tsx b/src/CollectionNode.tsx index c8900f24..b29af099 100644 --- a/src/CollectionNode.tsx +++ b/src/CollectionNode.tsx @@ -63,12 +63,8 @@ export const CollectionNode: React.FC = (props) => { const startCollapsed = collapseFilter(incomingNodeData) - const { contentRef, isAnimating, maxHeight, collapsed, animateCollapse } = useCollapseTransition( - data, - collapseAnimationTime, - startCollapsed, - mainContainerRef - ) + const { contentRef, isAnimating, maxHeight, collapsed, animateCollapse, cssTransitionValue } = + useCollapseTransition(data, collapseAnimationTime, startCollapsed, mainContainerRef) const { pathString, @@ -462,7 +458,7 @@ export const CollectionNode: React.FC = (props) => {
handleCollapse(e)} > @@ -480,7 +476,7 @@ export const CollectionNode: React.FC = (props) => { {!isEditing && showCount && (
{size === 1 ? translate('ITEM_SINGLE', { ...nodeData, size: 1 }, 1) @@ -489,7 +485,7 @@ export const CollectionNode: React.FC = (props) => { )}
{brackets.close}
@@ -510,6 +506,7 @@ export const CollectionNode: React.FC = (props) => { // Prevent collapse if this node or any children are being edited maxHeight: childrenEditing ? undefined : maxHeight, ...getStyles('collectionInner', nodeData), + transition: cssTransitionValue, }} ref={contentRef} > diff --git a/src/JsonEditor.tsx b/src/JsonEditor.tsx index c1133961..0a7f44c0 100644 --- a/src/JsonEditor.tsx +++ b/src/JsonEditor.tsx @@ -376,15 +376,8 @@ export const JsonEditor: React.FC = (props) => { setDocRoot(root) }, []) - const { collapseAnimationTime = 300 } = props - if (!docRoot) return null - const transitionTime = getComputedStyle(docRoot).getPropertyValue('--jer-expand-transition-time') - if (parseFloat(transitionTime) * 1000 !== collapseAnimationTime) { - docRoot.style.setProperty('--jer-expand-transition-time', `${collapseAnimationTime / 1000}s`) - } - return ( diff --git a/src/hooks/useCollapseTransition.ts b/src/hooks/useCollapseTransition.ts index a0b286a8..d0c250d5 100644 --- a/src/hooks/useCollapseTransition.ts +++ b/src/hooks/useCollapseTransition.ts @@ -62,6 +62,8 @@ export const useCollapseTransition = ( const prevHeight = useRef(0) const timerId = useRef() + const cssTransitionValue = `${collapseAnimationTime / 1000}s` + // Method to change the collapse state and manage the animated transition const animateCollapse = (collapse: boolean) => { if (collapsed === collapse) return @@ -98,6 +100,7 @@ export const useCollapseTransition = ( animateCollapse, maxHeight, collapsed, + cssTransitionValue, } } diff --git a/src/style.css b/src/style.css index 66d5815a..532d5de5 100644 --- a/src/style.css +++ b/src/style.css @@ -4,18 +4,15 @@ --jer-select-arrow: #777; --jer-form-border: 1px solid #ededf0; --jer-form-border-focus: 1px solid #e2e2e2; - --jer-expand-transition-time: 0.3s; --jer-highlight-color: #b3d8ff; } .jer-visible { opacity: 1; - transition: var(--jer-expand-transition-time); } .jer-hidden { opacity: 0; - transition: var(--jer-expand-transition-time); } /* Select styled as per: @@ -157,7 +154,6 @@ select:focus + .focus { .jer-collection-inner { position: relative; - transition: var(--jer-expand-transition-time); } .jer-collection-text-edit { @@ -339,7 +335,7 @@ select:focus + .focus { .jer-copy-pulse { position: relative; - transition: transform var(--jer-expand-transition-time); + transition: 0.3s; } .jer-copy-pulse:hover { @@ -378,12 +374,10 @@ select:focus + .focus { .jer-rotate-90 { transform: rotate(-90deg); - transition: transform var(--jer-expand-transition-time); } .jer-accordion-icon { /* font-size: '2em'; */ - transition: transform var(--jer-expand-transition-time); } .jer-icon:hover {