Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
275 changes: 186 additions & 89 deletions src/community/components/dock-panel/dock-panel.module.scss
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.tedi-dock-panel,
.tedi-dock-panel__resize-layout,
.tedi-dock-panel-layout {
--dock-panel-gap: var(--tedi-dimensions-04);
--dock-panel-rail-size: calc(var(--button-md-height) + 2 * var(--dock-panel-gap) + 2px);
Expand Down Expand Up @@ -30,54 +31,20 @@
border: 1px solid var(--general-border-primary);
}

.tedi-dock-panel[data-size='small'] {
--dock-panel-padding: var(--modal-body-padding-sm);
--dock-panel-header-padding-x: var(--modal-heading-padding-x-sm);
--dock-panel-header-padding-y: var(--modal-heading-padding-y-sm);
--dock-panel-footer-padding-x: var(--modal-footer-padding-x-sm);
--dock-panel-footer-padding-y: var(--modal-footer-padding-y-sm);
}

.tedi-dock-panel[data-placement='right'] {
top: 0;
right: 0;
width: var(--dock-panel-width);
height: var(--dock-panel-height);
}

.tedi-dock-panel[data-placement='left'] {
top: 0;
left: 0;
width: var(--dock-panel-width);
height: var(--dock-panel-height);
}

.tedi-dock-panel[data-placement='top'],
.tedi-dock-panel[data-placement='bottom'] {
--dock-panel-height: 50%;
}

.tedi-dock-panel[data-placement='top'] {
top: 0;
right: 0;
left: 0;
height: var(--dock-panel-height);
}

.tedi-dock-panel[data-placement='bottom'] {
right: 0;
bottom: 0;
left: 0;
height: var(--dock-panel-height);
}

.tedi-dock-panel__header {
display: flex;
flex: 0 0 auto;
flex-direction: column;
gap: var(--tedi-dimensions-05);
min-width: 0;
padding: var(--dock-panel-header-padding-y) var(--dock-panel-header-padding-x);
}

.tedi-dock-panel__header-row {
display: flex;
gap: var(--dock-panel-gap);
align-items: center;
min-width: 0;
padding: var(--dock-panel-header-padding-y) var(--dock-panel-header-padding-x);
}

.tedi-dock-panel__title {
Expand All @@ -90,13 +57,11 @@
white-space: nowrap;
}

.tedi-dock-panel__header-actions {
display: flex;
flex: 0 0 auto;
gap: var(--dock-panel-gap);
align-items: center;
.tedi-dock-panel__description {
color: var(--general-text-secondary);
}

.tedi-dock-panel__header-actions,
.tedi-dock-panel__controls {
display: flex;
flex: 0 0 auto;
Expand All @@ -119,14 +84,7 @@
border-top: 1px solid var(--general-border-primary);
}

/* Override flex declarations so hidden content does not remain interactive. */
.tedi-dock-panel[hidden],
.tedi-dock-panel__body[hidden],
.tedi-dock-panel__header-actions[hidden] {
display: none;
}

.tedi-dock-panel__content {
.tedi-dock-panel__scroll-area {
flex: 1 1 auto;
min-width: 0;
min-height: 0;
Expand All @@ -136,7 +94,7 @@
}

/* Keep padding inside the scrollport so short panels cannot push the footer out of view. */
.tedi-dock-panel__content-inner {
.tedi-dock-panel__content {
min-width: 0;
padding: var(--dock-panel-padding);
}
Expand All @@ -147,6 +105,101 @@
border-top: 1px solid var(--general-border-primary);
}

.tedi-dock-panel__resize-measurement {
visibility: hidden;
pointer-events: none;
}

.tedi-dock-panel__resize-layout {
position: absolute;
inset: 0;
z-index: var(--dock-panel-layer, 1);
display: flex;
min-width: 0;
height: 100%;
min-height: 0;
pointer-events: none;
}

.tedi-dock-panel__resizer {
flex: 0 1 auto;
min-width: 0;
max-width: 100%;
min-height: 0;
max-height: 100%;
pointer-events: auto;
}

.tedi-dock-panel-layout {
position: relative;
box-sizing: border-box;
display: grid;
grid-template:
'top top top' auto
'left workspace right' minmax(0, 1fr)
'bottom bottom bottom' auto / auto minmax(0, 1fr) auto;
width: 100%;
min-width: 0;
height: 100%;
min-height: 0;
isolation: isolate;
}

.tedi-dock-panel-layout__content {
position: relative;
z-index: 0;
grid-area: workspace;
min-width: 0;
min-height: 0;
overflow: hidden;
}

.tedi-dock-panel[data-size='small'] {
--dock-panel-padding: var(--modal-body-padding-sm);
--dock-panel-header-padding-x: var(--modal-heading-padding-x-sm);
--dock-panel-header-padding-y: var(--modal-heading-padding-y-sm);
--dock-panel-footer-padding-x: var(--modal-footer-padding-x-sm);
--dock-panel-footer-padding-y: var(--modal-footer-padding-y-sm);
}

.tedi-dock-panel[data-placement='left'],
.tedi-dock-panel[data-placement='right'] {
top: 0;
width: var(--dock-panel-width);
height: var(--dock-panel-height);
}

.tedi-dock-panel[data-placement='left'] {
left: 0;
}

.tedi-dock-panel[data-placement='right'] {
right: 0;
}

.tedi-dock-panel[data-placement='top'],
.tedi-dock-panel[data-placement='bottom'] {
--dock-panel-height: 50%;

right: 0;
left: 0;
height: var(--dock-panel-height);
}

.tedi-dock-panel[data-placement='top'] {
top: 0;
}

.tedi-dock-panel[data-placement='bottom'] {
bottom: 0;
}

/* Override flex declarations so hidden content does not remain interactive. */
.tedi-dock-panel__body[hidden],
.tedi-dock-panel__header-actions[hidden] {
display: none;
}

/* The minimized rail must fit its controls independently of expanded padding density. */
.tedi-dock-panel[data-collapsed='true'] .tedi-dock-panel__header {
padding: var(--dock-panel-gap);
Expand All @@ -156,12 +209,16 @@
.tedi-dock-panel[data-collapsed='true'][data-placement='right'] {
width: var(--dock-panel-rail-size);

.tedi-dock-panel__header {
.tedi-dock-panel__header,
.tedi-dock-panel__header-row {
flex: 1 1 auto;
flex-direction: column;
min-height: 0;
}

.tedi-dock-panel__header-row {
flex-direction: column;
}

.tedi-dock-panel__title {
order: 2;
text-align: center;
Expand All @@ -170,7 +227,7 @@
}

.tedi-dock-panel__controls {
flex-direction: column;
flex-direction: column-reverse;
order: 1;
}
}
Expand All @@ -180,49 +237,89 @@
height: var(--dock-panel-rail-size);
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'] {
.tedi-dock-panel[data-resizable='true'] {
height: 100%;
max-height: 100%;
pointer-events: auto;
}

.tedi-dock-panel[data-resizable='true'][data-collapsed='false'] {
width: 100%;
}

.tedi-dock-panel__resize-layout[data-placement='right'] {
justify-content: flex-end;
}

.tedi-dock-panel__resize-layout[data-placement='top'] > .tedi-dock-panel__resizer,
.tedi-dock-panel__resize-layout[data-placement='bottom'] > .tedi-dock-panel__resizer {
flex: 1 1 0;
}

.tedi-dock-panel__resize-layout[data-placement='top'] > .tedi-dock-panel__resizer {
align-self: flex-start;
}

.tedi-dock-panel__resize-layout[data-placement='bottom'] {
top: auto;

> .tedi-dock-panel__resizer {
align-self: flex-end;
}
}

.tedi-dock-panel__resize-layout[data-collapsed='true'] {
overflow: clip;

> .tedi-dock-panel__resizer {
flex-shrink: 0;
max-width: none;
max-height: none;
pointer-events: none;
}
}

.tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='left'],
.tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='right'] {
width: var(--dock-panel-rail-size);
}

.tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='top'],
.tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='bottom'] {
height: var(--dock-panel-rail-size);
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'] {
position: relative;
inset: auto;
align-self: start;
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='left'] {
grid-area: 2 / 1;
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='left'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='left'] {
grid-area: left;
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='right'] {
grid-area: 2 / 3;
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='right'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='right'] {
grid-area: right;
justify-self: end;
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='top'] {
grid-area: 1 / 1 / 2 / 4;
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='top'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='top'],
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='bottom'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='bottom'] {
width: 100%;
}

.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='bottom'] {
grid-area: 3 / 1 / 4 / 4;
width: 100%;
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='top'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='top'] {
grid-area: top;
}

.tedi-dock-panel-layout {
position: relative;
box-sizing: border-box;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
grid-template-columns: auto minmax(0, 1fr) auto;
width: 100%;
min-width: 0;
height: 100%;
min-height: 0;
isolation: isolate;
}

.tedi-dock-panel-layout__content {
position: relative;
z-index: 0;
grid-area: 2 / 2;
min-width: 0;
min-height: 0;
overflow: hidden;
.tedi-dock-panel-layout > .tedi-dock-panel[data-collapsed='true'][data-placement='bottom'],
.tedi-dock-panel-layout > .tedi-dock-panel__resize-layout[data-collapsed='true'][data-placement='bottom'] {
grid-area: bottom;
}
Loading
Loading