Skip to content

Commit 2ec48ab

Browse files
authored
import export pad in multiview (#76)
1 parent 5b2eced commit 2ec48ab

3 files changed

Lines changed: 666 additions & 46 deletions

File tree

src/components/MainControlView.css

Lines changed: 207 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,16 +1372,17 @@ body.no-scroll {
13721372
.workspace-pad-selector {
13731373
flex: 0 0 auto;
13741374
display: grid;
1375-
grid-template-columns: auto minmax(0, 1fr) 34px 34px;
1375+
grid-template-columns: auto minmax(0, 1fr) auto;
13761376
align-items: center;
13771377
column-gap: 10px;
1378+
row-gap: 6px;
13781379
min-height: 48px;
13791380
padding: 7px 10px;
13801381
border-bottom: 1px solid var(--border-color);
13811382
background: color-mix(in srgb, var(--background-secondary) 84%, transparent);
13821383
}
13831384

1384-
.workspace-pad-selector label {
1385+
.workspace-pad-selector-label {
13851386
height: 34px;
13861387
display: inline-flex;
13871388
align-items: center;
@@ -1394,38 +1395,149 @@ body.no-scroll {
13941395
white-space: nowrap;
13951396
}
13961397

1397-
.workspace-pad-selector select {
1398-
appearance: none;
1398+
.workspace-pad-layout-trigger {
13991399
min-width: 0;
14001400
width: 100%;
14011401
height: 34px;
14021402
box-sizing: border-box;
14031403
margin: 0;
1404-
padding: 0 30px 0 10px;
1404+
display: inline-flex;
1405+
align-items: center;
1406+
justify-content: space-between;
1407+
gap: 8px;
1408+
padding: 0 8px 0 10px;
14051409
border: 1px solid var(--border-color);
14061410
border-radius: 6px;
1407-
background:
1408-
linear-gradient(45deg, transparent 50%, var(--text-secondary) 50%) calc(100% - 17px) 14px / 5px 5px no-repeat,
1409-
linear-gradient(135deg, var(--text-secondary) 50%, transparent 50%) calc(100% - 12px) 14px / 5px 5px no-repeat,
1410-
var(--background-color);
1411+
background: var(--background-color);
14111412
color: var(--text-color);
14121413
font-size: 0.78rem;
14131414
font-weight: 700;
14141415
line-height: normal;
14151416
cursor: pointer;
1416-
transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
1417+
box-shadow: inset 0 1px 0 color-mix(in srgb, #fff 8%, transparent);
1418+
transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease;
14171419
}
14181420

1419-
.workspace-pad-selector select:hover {
1421+
.workspace-pad-layout-trigger:hover,
1422+
.workspace-pad-layout-trigger.is-open {
14201423
border-color: color-mix(in srgb, var(--primary-color) 58%, var(--border-color));
1424+
color: var(--primary-color);
14211425
}
14221426

1423-
.workspace-pad-selector select:focus {
1427+
.workspace-pad-layout-trigger:focus-visible {
14241428
outline: none;
14251429
border-color: var(--primary-color);
14261430
box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary-color) 18%, transparent);
14271431
}
14281432

1433+
.workspace-pad-layout-trigger-name {
1434+
min-width: 0;
1435+
overflow: hidden;
1436+
text-overflow: ellipsis;
1437+
white-space: nowrap;
1438+
}
1439+
1440+
.workspace-pad-layout-trigger-icon {
1441+
width: 16px;
1442+
height: 16px;
1443+
flex: 0 0 16px;
1444+
display: inline-flex;
1445+
transition: transform 0.15s ease;
1446+
}
1447+
1448+
.workspace-pad-layout-trigger-icon svg {
1449+
width: 16px;
1450+
height: 16px;
1451+
}
1452+
1453+
.workspace-pad-layout-trigger.is-open .workspace-pad-layout-trigger-icon {
1454+
transform: rotate(180deg);
1455+
}
1456+
1457+
.workspace-pad-layout-menu {
1458+
z-index: 1600;
1459+
display: grid;
1460+
gap: 5px;
1461+
padding: 8px;
1462+
overflow: auto;
1463+
box-sizing: border-box;
1464+
border: 1px solid var(--border-color);
1465+
border-radius: 8px;
1466+
background: var(--card-bg);
1467+
color: var(--text-color);
1468+
box-shadow: 0 16px 38px rgba(0, 0, 0, 0.34);
1469+
animation: workspace-menu-enter 150ms ease-out;
1470+
scrollbar-width: thin;
1471+
scrollbar-color: var(--primary-color) var(--background-secondary);
1472+
}
1473+
1474+
.workspace-pad-layout-option {
1475+
width: 100%;
1476+
min-height: 40px;
1477+
display: grid;
1478+
grid-template-columns: auto minmax(0, 1fr) 18px;
1479+
align-items: center;
1480+
gap: 8px;
1481+
padding: 7px 8px;
1482+
border: 1px solid transparent;
1483+
border-radius: 6px;
1484+
background: transparent;
1485+
color: var(--text-color);
1486+
text-align: left;
1487+
cursor: pointer;
1488+
transition: border-color 0.14s ease, background 0.14s ease, color 0.14s ease, transform 0.14s ease;
1489+
}
1490+
1491+
.workspace-pad-layout-option:hover,
1492+
.workspace-pad-layout-option.is-selected {
1493+
border-color: color-mix(in srgb, var(--primary-color) 42%, var(--border-color));
1494+
background: color-mix(in srgb, var(--primary-color) 9%, var(--background-secondary));
1495+
}
1496+
1497+
.workspace-pad-layout-option:hover {
1498+
transform: translateX(2px);
1499+
}
1500+
1501+
.workspace-pad-layout-option-text {
1502+
min-width: 0;
1503+
display: grid;
1504+
gap: 2px;
1505+
}
1506+
1507+
.workspace-pad-layout-option-name,
1508+
.workspace-pad-layout-option-kind {
1509+
min-width: 0;
1510+
overflow: hidden;
1511+
text-overflow: ellipsis;
1512+
white-space: nowrap;
1513+
}
1514+
1515+
.workspace-pad-layout-option-name {
1516+
font-size: 0.82rem;
1517+
font-weight: 800;
1518+
}
1519+
1520+
.workspace-pad-layout-option-kind {
1521+
color: var(--text-secondary);
1522+
font-size: 0.68rem;
1523+
font-weight: 800;
1524+
text-transform: uppercase;
1525+
}
1526+
1527+
.workspace-pad-layout-option-check {
1528+
width: 18px;
1529+
height: 18px;
1530+
display: inline-flex;
1531+
align-items: center;
1532+
justify-content: center;
1533+
color: var(--primary-color);
1534+
}
1535+
1536+
.workspace-pad-layout-option-check svg {
1537+
width: 16px;
1538+
height: 16px;
1539+
}
1540+
14291541
.workspace-pad-selector-empty {
14301542
min-width: 0;
14311543
flex: 1 1 auto;
@@ -1437,6 +1549,14 @@ body.no-scroll {
14371549
white-space: nowrap;
14381550
}
14391551

1552+
.workspace-pad-selector-actions {
1553+
display: inline-flex;
1554+
align-items: center;
1555+
justify-content: flex-end;
1556+
gap: 6px;
1557+
min-width: 0;
1558+
}
1559+
14401560
.workspace-pad-action-button {
14411561
width: 34px;
14421562
height: 34px;
@@ -1461,6 +1581,12 @@ body.no-scroll {
14611581
color: var(--primary-color);
14621582
}
14631583

1584+
.workspace-pad-delete-button:hover:not(:disabled) {
1585+
border-color: var(--error-color, #dc3545);
1586+
background: color-mix(in srgb, var(--error-color, #dc3545) 10%, var(--background-color));
1587+
color: var(--error-color, #dc3545);
1588+
}
1589+
14641590
.workspace-pad-action-button:focus-visible {
14651591
outline: none;
14661592
border-color: var(--primary-color);
@@ -1478,6 +1604,26 @@ body.no-scroll {
14781604
height: 15px;
14791605
}
14801606

1607+
.workspace-pad-transfer-notice {
1608+
grid-column: 2 / -1;
1609+
min-width: 0;
1610+
padding: 5px 8px;
1611+
border-radius: 6px;
1612+
font-size: 0.72rem;
1613+
font-weight: 700;
1614+
line-height: 1.25;
1615+
}
1616+
1617+
.workspace-pad-transfer-notice.success {
1618+
color: var(--success-color, #2e7d32);
1619+
background: color-mix(in srgb, var(--success-color, #2e7d32) 12%, transparent);
1620+
}
1621+
1622+
.workspace-pad-transfer-notice.error {
1623+
color: var(--error-color, #dc3545);
1624+
background: color-mix(in srgb, var(--error-color, #dc3545) 12%, transparent);
1625+
}
1626+
14811627
.workspace-pad-body {
14821628
flex: 1 1 auto;
14831629
min-width: 0;
@@ -1754,17 +1900,44 @@ body.no-scroll {
17541900
font-size: 0.72rem;
17551901
line-height: 1.1;
17561902
}
1903+
1904+
.workspace-pad-selector {
1905+
grid-template-columns: minmax(0, 1fr) auto;
1906+
column-gap: 6px;
1907+
padding-inline: 8px;
1908+
}
1909+
1910+
.workspace-pad-selector-label {
1911+
position: absolute;
1912+
width: 1px;
1913+
height: 1px;
1914+
margin: -1px;
1915+
padding: 0;
1916+
border: 0;
1917+
overflow: hidden;
1918+
clip: rect(0 0 0 0);
1919+
white-space: nowrap;
1920+
}
1921+
1922+
.workspace-pad-transfer-notice {
1923+
grid-column: 1 / -1;
1924+
}
17571925
}
17581926

17591927
@media (max-width: 1023px) {
17601928
.top-bar:not(.workspace-active) {
1761-
justify-content: flex-start;
1929+
display: grid;
1930+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
1931+
justify-content: stretch;
17621932
gap: 5px;
17631933
padding-left: 6px;
17641934
padding-right: 6px;
17651935
}
17661936

17671937
.top-bar .view-toggle {
1938+
grid-column: 1;
1939+
justify-self: start;
1940+
min-width: 0;
17681941
gap: 1px;
17691942
padding: 3px;
17701943
}
@@ -1779,6 +1952,8 @@ body.no-scroll {
17791952
}
17801953

17811954
.layout-controls {
1955+
grid-column: 2;
1956+
justify-self: center;
17821957
display: flex;
17831958
position: static;
17841959
left: auto;
@@ -1794,14 +1969,32 @@ body.no-scroll {
17941969
}
17951970

17961971
.top-bar:not(.workspace-active) .status-controls {
1797-
margin-left: auto;
1972+
grid-column: 3;
1973+
justify-self: end;
1974+
margin-left: 0;
17981975
}
17991976
}
18001977

18011978
@media (max-width: 420px) {
18021979
.mobile-workspace-active-label {
18031980
display: none;
18041981
}
1982+
1983+
.workspace-pad-selector-actions {
1984+
gap: 4px;
1985+
}
1986+
1987+
.workspace-pad-action-button {
1988+
width: 30px;
1989+
height: 30px;
1990+
min-width: 30px;
1991+
flex-basis: 30px;
1992+
}
1993+
1994+
.workspace-pad-action-button svg {
1995+
width: 14px;
1996+
height: 14px;
1997+
}
18051998
}
18061999

18072000
@media (max-width: 350px) {

0 commit comments

Comments
 (0)