style(client): refine drag insertion markers
This commit is contained in:
@@ -215,12 +215,16 @@
|
|||||||
min-height: 0;
|
min-height: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-left: -4px;
|
||||||
margin-right: calc(-1 * var(--dsh-sidebar-inline-padding));
|
margin-right: calc(-1 * var(--dsh-sidebar-inline-padding));
|
||||||
|
padding-left: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.collapsed .regionArea {
|
.collapsed .regionArea {
|
||||||
|
margin-left: 0;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Foot seat: a pure layout socket pinned under the region; the ui-settings
|
/* Foot seat: a pure layout socket pinned under the region; the ui-settings
|
||||||
|
|||||||
@@ -30,9 +30,13 @@ describe('SidebarRoot.module.css inset', () => {
|
|||||||
const root = declarations('.root')
|
const root = declarations('.root')
|
||||||
expect(root?.get('--dsh-sidebar-inline-padding')).toBe('12px')
|
expect(root?.get('--dsh-sidebar-inline-padding')).toBe('12px')
|
||||||
expect(root?.get('padding')).toBe('6px var(--dsh-sidebar-inline-padding)')
|
expect(root?.get('padding')).toBe('6px var(--dsh-sidebar-inline-padding)')
|
||||||
|
expect(declarations('.regionArea')?.get('margin-left')).toBe('-4px')
|
||||||
|
expect(declarations('.regionArea')?.get('padding-left')).toBe('4px')
|
||||||
expect(declarations('.regionArea')?.get('margin-right')).toBe(
|
expect(declarations('.regionArea')?.get('margin-right')).toBe(
|
||||||
'calc(-1 * var(--dsh-sidebar-inline-padding))',
|
'calc(-1 * var(--dsh-sidebar-inline-padding))',
|
||||||
)
|
)
|
||||||
|
expect(declarations('.collapsed .regionArea')?.get('margin-left')).toBe('0')
|
||||||
|
expect(declarations('.collapsed .regionArea')?.get('padding-left')).toBe('0')
|
||||||
expect(declarations('.collapsed .regionArea')?.get('margin-right')).toBe('0')
|
expect(declarations('.collapsed .regionArea')?.get('margin-right')).toBe('0')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -296,12 +296,16 @@
|
|||||||
min-height: 0;
|
min-height: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-left: -4px;
|
||||||
margin-right: calc(-1 * var(--dsh-session-list-edge-inset));
|
margin-right: calc(-1 * var(--dsh-session-list-edge-inset));
|
||||||
|
padding-left: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rail .listArea {
|
.rail .listArea {
|
||||||
|
margin-left: 0;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Relative for the bottom fade overlay. */
|
/* Relative for the bottom fade overlay. */
|
||||||
@@ -342,7 +346,9 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
margin-left: -4px;
|
||||||
margin-right: var(--dsh-session-list-scrollbar-offset);
|
margin-right: var(--dsh-session-list-scrollbar-offset);
|
||||||
|
padding-left: 4px;
|
||||||
padding-right: calc(
|
padding-right: calc(
|
||||||
var(--dsh-session-list-edge-inset)
|
var(--dsh-session-list-edge-inset)
|
||||||
- var(--dsh-session-list-scrollbar-width)
|
- var(--dsh-session-list-scrollbar-width)
|
||||||
@@ -386,20 +392,28 @@
|
|||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
left: 4px;
|
left: -4px;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
height: 2px;
|
height: 12px;
|
||||||
border-radius: 999px;
|
background:
|
||||||
background: var(--dsw-alias-state-business-primary);
|
radial-gradient(
|
||||||
|
circle at 6px 6px,
|
||||||
|
transparent 0 3px,
|
||||||
|
var(--dsw-alias-state-business-primary) 3px 5px,
|
||||||
|
transparent 5px
|
||||||
|
),
|
||||||
|
linear-gradient(
|
||||||
|
var(--dsw-alias-state-business-primary) 0 0
|
||||||
|
) 10px 5px / calc(100% - 10px) 2px no-repeat;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaceDropBefore::before {
|
.workspaceDropBefore::before {
|
||||||
top: -3px;
|
top: -8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaceDropAfter::after {
|
.workspaceDropAfter::after {
|
||||||
bottom: -3px;
|
bottom: -8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sessionOverflowButton {
|
.sessionOverflowButton {
|
||||||
|
|||||||
@@ -236,8 +236,8 @@
|
|||||||
background: var(--dsw-alias-interactive-bg-hover);
|
background: var(--dsw-alias-interactive-bg-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Session drag insert line: an independent 2px rule between rows, absolutely
|
/* Session drag insert marker: a hollow leading dot and 2px rule between rows,
|
||||||
positioned so it neither resembles a row border nor changes layout. */
|
absolutely positioned so it neither resembles a row border nor changes layout. */
|
||||||
.sessionRow.dropBefore,
|
.sessionRow.dropBefore,
|
||||||
.sessionRow.dropAfter {
|
.sessionRow.dropAfter {
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -248,20 +248,28 @@
|
|||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
left: 4px;
|
left: 0;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
height: 2px;
|
height: 12px;
|
||||||
border-radius: 999px;
|
background:
|
||||||
background: var(--dsw-alias-state-business-primary);
|
radial-gradient(
|
||||||
|
circle at 6px 6px,
|
||||||
|
transparent 0 3px,
|
||||||
|
var(--dsw-alias-state-business-primary) 3px 5px,
|
||||||
|
transparent 5px
|
||||||
|
),
|
||||||
|
linear-gradient(
|
||||||
|
var(--dsw-alias-state-business-primary) 0 0
|
||||||
|
) 10px 5px / calc(100% - 10px) 2px no-repeat;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sessionRow.dropBefore::before {
|
.sessionRow.dropBefore::before {
|
||||||
top: -2px;
|
top: -7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sessionRow.dropAfter::after {
|
.sessionRow.dropAfter::after {
|
||||||
bottom: -2px;
|
bottom: -7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hover-card body (figma 169:16903): dark surface, fixed colors both themes. */
|
/* Hover-card body (figma 169:16903): dark surface, fixed colors both themes. */
|
||||||
|
|||||||
@@ -48,9 +48,13 @@ describe('WorkspaceBrowser.module.css list', () => {
|
|||||||
expect(root?.get('--dsh-session-list-scrollbar-width')).toBe('8px')
|
expect(root?.get('--dsh-session-list-scrollbar-width')).toBe('8px')
|
||||||
expect(root?.get('--dsh-session-list-scrollbar-offset')).toBe('2px')
|
expect(root?.get('--dsh-session-list-scrollbar-offset')).toBe('2px')
|
||||||
expect(root?.get('padding-right')).toBe('var(--dsh-session-list-edge-inset)')
|
expect(root?.get('padding-right')).toBe('var(--dsh-session-list-edge-inset)')
|
||||||
|
expect(listArea?.get('margin-left')).toBe('-4px')
|
||||||
|
expect(listArea?.get('padding-left')).toBe('4px')
|
||||||
expect(listArea?.get('margin-right')).toBe('calc(-1 * var(--dsh-session-list-edge-inset))')
|
expect(listArea?.get('margin-right')).toBe('calc(-1 * var(--dsh-session-list-edge-inset))')
|
||||||
expect(declarations('.fade')?.get('right')).toBe('var(--dsh-session-list-edge-inset)')
|
expect(declarations('.fade')?.get('right')).toBe('var(--dsh-session-list-edge-inset)')
|
||||||
expect(list?.get('margin-right')).toBe('var(--dsh-session-list-scrollbar-offset)')
|
expect(list?.get('margin-right')).toBe('var(--dsh-session-list-scrollbar-offset)')
|
||||||
|
expect(list?.get('margin-left')).toBe('-4px')
|
||||||
|
expect(list?.get('padding-left')).toBe('4px')
|
||||||
expect(list?.get('padding-right')).toBe([
|
expect(list?.get('padding-right')).toBe([
|
||||||
'calc(',
|
'calc(',
|
||||||
'var(--dsh-session-list-edge-inset)',
|
'var(--dsh-session-list-edge-inset)',
|
||||||
@@ -72,6 +76,20 @@ describe('WorkspaceBrowser.module.css list', () => {
|
|||||||
expect(declarations('.groupSection + .groupSection')?.get('margin-top')).toBe('4px')
|
expect(declarations('.groupSection + .groupSection')?.get('margin-top')).toBe('4px')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('draws drag targets as a hollow leading dot joined to the insertion line', () => {
|
||||||
|
const workspaceMarker = declarations('.workspaceDropBefore::before')
|
||||||
|
const sessionMarker = rowDeclarations('.sessionRow.dropBefore::before')
|
||||||
|
expect(workspaceMarker?.get('left')).toBe('-4px')
|
||||||
|
expect(sessionMarker?.get('left')).toBe('0')
|
||||||
|
for (const marker of [workspaceMarker, sessionMarker]) {
|
||||||
|
expect(marker?.get('height')).toBe('12px')
|
||||||
|
expect(marker?.get('background')).toContain('radial-gradient')
|
||||||
|
expect(marker?.get('background')).toContain('linear-gradient')
|
||||||
|
expect(marker?.get('background')).toContain('var(--dsw-alias-state-business-primary) 3px 5px')
|
||||||
|
expect(marker?.get('background')).toContain('10px 5px / calc(100% - 10px) 2px')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
it('keeps the compact fade, overflow control, search field, and row heights', () => {
|
it('keeps the compact fade, overflow control, search field, and row heights', () => {
|
||||||
expect(declarations('.fade')?.get('height')).toBe('24px')
|
expect(declarations('.fade')?.get('height')).toBe('24px')
|
||||||
expect(declarations('.sessionOverflowButton')?.get('height')).toBe('28px')
|
expect(declarations('.sessionOverflowButton')?.get('height')).toBe('28px')
|
||||||
|
|||||||
Reference in New Issue
Block a user