mirror of
https://github.com/quorafind/Obsidian-Collapse-Node.git
synced 2026-07-22 08:40:32 +00:00
289 lines
6.6 KiB
CSS
289 lines
6.6 KiB
CSS
.canvas-node-collapse-control {
|
|
z-index: 100;
|
|
position: relative;
|
|
|
|
overflow: hidden;
|
|
|
|
min-width: 100%;
|
|
height: calc(30px * var(--zoom-multiplier));
|
|
/*max-height: 100px;*/
|
|
min-height: max(calc(30px * var(--zoom-multiplier)), 20px);
|
|
cursor: pointer;
|
|
|
|
display: flex;
|
|
align-items: center;
|
|
padding-left: var(--size-4-2);
|
|
gap: var(--size-4-3);
|
|
margin-top: calc(30px * var(--zoom-multiplier) * -1);
|
|
|
|
transition: background-color 0.2s ease-in-out;
|
|
}
|
|
|
|
.canvas-node-container:has(.canvas-node-content > img)
|
|
.canvas-node-collapse-control {
|
|
position: absolute;
|
|
}
|
|
|
|
.canvas-node-container:not(:has(.canvas-node-content > img)):has(
|
|
.canvas-node-collapse-control
|
|
) {
|
|
padding-top: calc(30px * var(--zoom-multiplier));
|
|
}
|
|
|
|
.canvas-node-container:has(.canvas-node-content > img)
|
|
.canvas-node-collapse-control {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.canvas-node:not(.collapsed) .canvas-node-collapse-control {
|
|
background-color: rgba(var(--canvas-color), 0.15);
|
|
}
|
|
|
|
.canvas-node:not(.collapsed) .canvas-node-collapse-control:hover {
|
|
background-color: rgba(var(--canvas-color), 0.5);
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-collapse-control {
|
|
background-color: rgb(var(--canvas-color));
|
|
}
|
|
|
|
.canvas-node:has(.canvas-node-collapse-control) {
|
|
width: fit-content;
|
|
height: fit-content;
|
|
}
|
|
|
|
/*.canvas-node-group:not(.is-focused):not(.is-selected) {*/
|
|
/* pointer-events: unset;*/
|
|
/*}*/
|
|
|
|
.canvas-node-group:has(.canvas-node-collapse-control)
|
|
.canvas-node-collapse-control {
|
|
pointer-events: initial !important;
|
|
}
|
|
|
|
/*.canvas-node.collapsed .canvas-node-collapse-control {*/
|
|
/* border-radius: var(--radius-m);*/
|
|
/*}*/
|
|
|
|
.canvas-node.collapsed {
|
|
height: calc(30px * var(--zoom-multiplier)) !important;
|
|
max-height: fit-content;
|
|
transition: height 0.2s ease-in-out, max-height 0.2s ease-in-out;
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-placeholder {
|
|
display: none;
|
|
}
|
|
|
|
.group-nodes-collapsed,
|
|
.group-edges-collapsed {
|
|
display: none;
|
|
transition: opacity 0.2s ease-in-out;
|
|
opacity: 0;
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-content {
|
|
display: none;
|
|
transition: opacity 0.2s ease-in-out;
|
|
opacity: 0;
|
|
}
|
|
|
|
.collapsed-interaction {
|
|
height: calc(30px * var(--zoom-multiplier)) !important;
|
|
transition: height 0.2s ease-in-out;
|
|
}
|
|
|
|
.canvas-node-collapse-control-icon,
|
|
.canvas-node-type-icon {
|
|
display: flex;
|
|
}
|
|
|
|
.canvas-node-collapse-control-icon svg,
|
|
.canvas-node-type-icon svg {
|
|
height: calc(18px * var(--zoom-multiplier));
|
|
width: calc(18px * var(--zoom-multiplier));
|
|
}
|
|
|
|
.canvas-node-collapse-control + .canvas-node-content.media-embed img {
|
|
height: auto;
|
|
max-height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.minimal-control-header .canvas-node-collapse-control-title,
|
|
.minimal-control-header .canvas-node-type-icon {
|
|
display: none;
|
|
}
|
|
|
|
.canvas-node {
|
|
/* Add transition for height and max-height only */
|
|
transition: height 0.2s ease-in-out, max-height 0.2s ease-in-out;
|
|
}
|
|
|
|
.canvas-node-content {
|
|
/* Add transition for opacity */
|
|
transition: opacity 0.2s ease-in-out;
|
|
opacity: 1;
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-content {
|
|
opacity: 0;
|
|
/* Keep the display:none but add it with a delay so the opacity transition is visible */
|
|
transition: opacity 0.2s ease-in-out;
|
|
}
|
|
|
|
/* Add rotation animation to the collapse icon */
|
|
.canvas-node-collapse-control-icon svg {
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-collapse-control-icon svg {
|
|
transform: rotate(-90deg);
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
/* Remove hover scale effect that causes node drift */
|
|
/* .canvas-node:not(.collapsed):hover {
|
|
transform: scale(1.01);
|
|
} */
|
|
|
|
/* Animate the collapse control background */
|
|
.canvas-node-collapse-control {
|
|
transition: background-color 0.2s ease-in-out;
|
|
}
|
|
|
|
/* Modify drawer animation to prevent drift */
|
|
.canvas-node-group .group-nodes,
|
|
.canvas-node-group .group-edges {
|
|
transition: opacity 0.2s ease-in-out, max-height 0.2s ease-in-out;
|
|
/* Remove transform transitions that cause drift */
|
|
}
|
|
|
|
.canvas-node-group.collapsed .group-nodes-collapsed,
|
|
.canvas-node-group.collapsed .group-edges-collapsed {
|
|
opacity: 0;
|
|
transition: opacity 0.2s ease-in-out;
|
|
/* Remove transform that causes drift */
|
|
}
|
|
|
|
/* Animation classes for transitions */
|
|
.node-transitioning {
|
|
transition: opacity 0.2s ease-in-out, max-height 0.2s ease-in-out !important;
|
|
/* Remove transform transition that causes drift */
|
|
}
|
|
|
|
.animating {
|
|
overflow: hidden !important;
|
|
}
|
|
|
|
/* Simplified drawer animation to prevent drift */
|
|
.canvas-node-group .group-nodes {
|
|
transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out;
|
|
will-change: opacity, max-height;
|
|
/* Remove transform properties that cause drift */
|
|
}
|
|
|
|
.canvas-node-group.collapsed .group-nodes {
|
|
max-height: 0;
|
|
opacity: 0;
|
|
transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out;
|
|
/* Remove transform that causes drift */
|
|
}
|
|
|
|
/* Animation for edges */
|
|
.canvas-edge {
|
|
transition: opacity 0.2s ease-in-out;
|
|
}
|
|
|
|
.group-edges-collapsed {
|
|
transition: opacity 0.2s ease-in-out;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Remove bounce animation that causes drift */
|
|
/* @keyframes bounceIn {
|
|
0% {
|
|
transform: scale(0.95);
|
|
opacity: 0;
|
|
}
|
|
70% {
|
|
transform: scale(1.02);
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: scale(1);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.canvas-node:not(.collapsed):not(.animating) {
|
|
animation: bounceIn 0.4s ease-out;
|
|
} */
|
|
|
|
.collapse-handler.collapsed svg {
|
|
transform: rotate(-90deg);
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
|
|
.collapse-handler svg {
|
|
transform: rotate(0deg);
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
|
|
.canvas-node .canvas-node-collapse-control-thumbnail {
|
|
display: none;
|
|
}
|
|
|
|
/* Styles for thumbnails and aliases in collapsed state */
|
|
.canvas-node.collapsed .canvas-node-collapse-control-thumbnail {
|
|
max-width: 100%;
|
|
max-height: 100px;
|
|
object-fit: contain;
|
|
margin: 5px auto;
|
|
display: block;
|
|
border-radius: 4px;
|
|
position: absolute;
|
|
bottom: calc(27px * var(--zoom-multiplier));
|
|
}
|
|
|
|
.canvas-node.collapsed .canvas-node-collapse-control-alias {
|
|
display: block;
|
|
font-weight: bold;
|
|
text-align: center;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
/* Adjust the header to accommodate thumbnails and aliases */
|
|
.canvas-node.collapsed .canvas-node-collapse-control {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Make sure the header elements are properly spaced in collapsed mode */
|
|
.canvas-node .canvas-node-collapse-control-icon,
|
|
.canvas-node .canvas-node-type-icon {
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
body.hide-default-node-title
|
|
.canvas-node:has(.canvas-node-collapse-control)
|
|
.canvas-node-label {
|
|
display: none;
|
|
}
|
|
|
|
.collapsed-node-hidden {
|
|
display: none !important;
|
|
}
|
|
|
|
|
|
span.canvas-node-collapse-control-title {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
max-width: 100%;
|
|
}
|