add new table tool
All checks were successful
Deploy Sokko G / deploy (push) Successful in 6s

This commit is contained in:
Shinuwa 2026-07-30 11:32:33 +02:00
parent 896ae23ff2
commit 025cd4bf22
19 changed files with 1336 additions and 1 deletions

View file

@ -207,6 +207,31 @@
-webkit-mask-image: url("/static/icons/columns.svg");
}
.ui-icon-add-row {
mask-image: url("/static/icons/add-row.svg");
-webkit-mask-image: url("/static/icons/add-row.svg");
}
.ui-icon-add-column {
mask-image: url("/static/icons/add-column.svg");
-webkit-mask-image: url("/static/icons/add-column.svg");
}
.ui-icon-remove-row {
mask-image: url("/static/icons/remove-row.svg");
-webkit-mask-image: url("/static/icons/remove-row.svg");
}
.ui-icon-remove-column {
mask-image: url("/static/icons/remove-column.svg");
-webkit-mask-image: url("/static/icons/remove-column.svg");
}
.ui-icon-table {
mask-image: url("/static/icons/table.svg");
-webkit-mask-image: url("/static/icons/table.svg");
}
.ui-icon-close {
mask-image: url("/static/icons/close.svg");
-webkit-mask-image: url("/static/icons/close.svg");

View file

@ -732,6 +732,16 @@
-webkit-mask-image: url("/static/icons/map.svg");
}
.module-icon-columns {
mask-image: url("/static/icons/columns.svg");
-webkit-mask-image: url("/static/icons/columns.svg");
}
.module-icon-table {
mask-image: url("/static/icons/table.svg");
-webkit-mask-image: url("/static/icons/table.svg");
}
.tabs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
@ -2757,6 +2767,191 @@ textarea:focus {
text-align: right;
}
.table-module {
display: grid;
gap: var(--space-3);
min-width: 0;
padding: var(--space-4);
}
.table-toolbar {
justify-content: space-between;
}
.table-controls {
flex: 1 1 auto;
}
.table-size-indicator {
min-height: 34px;
display: inline-flex;
align-items: center;
padding: 0 8px;
color: var(--color-text-secondary);
font-size: var(--font-size-sm);
font-weight: 800;
}
.table-copy-group {
margin-left: auto;
}
.table-copy-group.notepad-toolbar-group {
padding-right: 0;
border-right: 0;
}
.table-grid-wrap {
width: 100%;
min-width: 0;
overflow: auto;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(139, 92, 246, 0.045), transparent 62%),
rgba(7, 10, 24, 0.24);
}
.table-grid {
display: grid;
grid-template-columns: var(--table-columns);
width: 100%;
min-width: var(--table-min-width);
align-items: stretch;
justify-content: start;
}
.table-grid > * {
min-width: 0;
}
.table-corner,
.table-header-cell,
.table-row-header {
display: grid;
min-height: 34px;
place-items: center;
border-right: 1px solid rgba(165, 180, 252, 0.1);
border-bottom: 1px solid rgba(165, 180, 252, 0.1);
background: rgba(5, 7, 17, 0.54);
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 900;
font-variant-numeric: tabular-nums;
}
.table-header-input {
width: 100%;
padding: 0 8px;
border-top: 0;
border-left: 0;
border-radius: 0;
text-align: center;
}
.table-header-input::placeholder {
color: var(--color-text-muted);
opacity: 1;
}
.table-header-input:hover {
background: rgba(21, 26, 48, 0.68);
}
.table-header-input:focus {
z-index: 5;
border-color: rgba(246, 196, 83, 0.38);
background: rgba(21, 26, 48, 0.8);
color: var(--color-text-primary);
box-shadow: inset 0 0 0 1px rgba(246, 196, 83, 0.55), 0 0 0 2px rgba(139, 92, 246, 0.18);
outline: 0;
}
.table-header-cell {
position: sticky;
top: 0;
z-index: 2;
}
.table-row-header {
position: sticky;
left: 0;
z-index: 1;
}
.table-corner {
position: sticky;
top: 0;
left: 0;
z-index: 3;
}
.table-cell-input {
width: 100%;
min-width: 0;
min-height: 34px;
padding: 6px 8px;
border: 0;
border-right: 1px solid rgba(165, 180, 252, 0.08);
border-bottom: 1px solid rgba(165, 180, 252, 0.08);
border-radius: 0;
background: rgba(16, 20, 38, 0.34);
color: var(--color-text-primary);
caret-color: transparent;
font-size: var(--font-size-sm);
font-variant-numeric: tabular-nums;
}
.table-cell-input:hover {
background: rgba(32, 39, 69, 0.38);
}
.table-cell-input:focus {
position: relative;
z-index: 4;
border-color: rgba(34, 211, 238, 0.42);
background:
linear-gradient(135deg, rgba(34, 211, 238, 0.08), rgba(139, 92, 246, 0.06)),
rgba(21, 26, 48, 0.58);
box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.58);
outline: 0;
}
.table-cell-input.is-editing:focus {
border-color: rgba(246, 196, 83, 0.38);
background: rgba(21, 26, 48, 0.72);
caret-color: auto;
box-shadow: inset 0 0 0 1px rgba(246, 196, 83, 0.55), 0 0 0 2px rgba(139, 92, 246, 0.18);
}
.table-cell-input.is-formula {
color: var(--color-accent-cyan);
}
.table-cell-input.has-error {
color: #fecaca;
background: rgba(127, 29, 29, 0.24);
}
.table-cell-input.is-selected {
background:
linear-gradient(135deg, rgba(34, 211, 238, 0.1), rgba(139, 92, 246, 0.08)),
rgba(21, 26, 48, 0.58);
box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.42);
}
.table-cell-input.is-selected:focus {
box-shadow: inset 0 0 0 1px rgba(246, 196, 83, 0.6), 0 0 0 2px rgba(34, 211, 238, 0.2);
}
.table-cell-input.is-selected:focus:not(.is-editing) {
box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.68);
}
.table-cell-input.is-referenced {
box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.72);
}
.tool-split-results {
grid-template-rows: auto minmax(0, 1fr);
gap: var(--space-3);
@ -2968,6 +3163,7 @@ textarea:focus {
.tool-split-action-button.danger,
.tool-split-entry > button.danger,
.notepad-toolbar-button.danger,
.counter-actions button.danger,
.link-item button.danger,
.task-planner-clear-completed-button.danger,
@ -2979,6 +3175,7 @@ textarea:focus {
.tool-split-action-button.danger:hover:not(:disabled),
.tool-split-entry > button.danger:hover,
.notepad-toolbar-button.danger:hover:not(:disabled),
.counter-actions button.danger:hover,
.link-item button.danger:hover,
.task-planner-clear-completed-button.danger:hover:not(:disabled),
@ -2995,6 +3192,7 @@ textarea:focus {
.tool-split-action-button.danger:hover .ui-icon,
.tool-split-entry > button.danger:hover .ui-icon,
.notepad-toolbar-button.danger:hover .ui-icon,
.counter-actions button.danger:hover .ui-icon,
.link-item button.danger:hover .ui-icon,
.task-planner-clear-completed-button.danger:hover .ui-icon,