UX: Wrap words instead of dynamic widths and align left (#11)

* UX: Wrap words instead of dynamic widths and align left

* UX: Improve sticky header on scroll

* DEV: Convert default column text to localizable strings
This commit is contained in:
Keegan George 2022-08-10 13:50:38 -07:00 committed by GitHub
parent d25736adad
commit 4289145268
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 18 deletions

View File

@ -11,6 +11,7 @@ import { tracked } from "@glimmer/tracking";
export default class SpreadsheetEditor extends GlimmerComponent { export default class SpreadsheetEditor extends GlimmerComponent {
@tracked showEditReason = false; @tracked showEditReason = false;
spreadsheet = null; spreadsheet = null;
defaultColWidth = 150;
// Getters: // Getters:
get isEditingTable() { get isEditingTable() {
@ -100,9 +101,24 @@ export default class SpreadsheetEditor extends GlimmerComponent {
]; ];
const columns = [ const columns = [
{ title: "Column 1", width: 150 }, {
{ title: "Column 2", width: 150 }, title: I18n.t(
{ title: "Column 3", width: 150 }, themePrefix("discourse_table_builder.default_header.col_1")
),
width: this.defaultColWidth,
},
{
title: I18n.t(
themePrefix("discourse_table_builder.default_header.col_2")
),
width: this.defaultColWidth,
},
{
title: I18n.t(
themePrefix("discourse_table_builder.default_header.col_3")
),
width: this.defaultColWidth,
},
]; ];
return this.buildSpreadsheet(data, columns); return this.buildSpreadsheet(data, columns);
@ -127,23 +143,16 @@ export default class SpreadsheetEditor extends GlimmerComponent {
headings = this.extractTableContent(row).map((heading) => { headings = this.extractTableContent(row).map((heading) => {
return { return {
title: heading, title: heading,
width: heading.length * rowWidthFactor, width: Math.max(
heading.length * rowWidthFactor,
this.defaultColWidth
),
align: "left",
}; };
}); });
} else { } else {
// rows: // rows:
const rowContent = this.extractTableContent(row); rows.push(this.extractTableContent(row));
// If row content is larger than header, update column width:
rowContent.forEach((c, i) => {
const colWidth = rowContent[i].length * rowWidthFactor;
if (headings[i].width < colWidth) {
headings[i].width = colWidth;
}
});
rows.push(rowContent);
} }
}); });
@ -155,6 +164,8 @@ export default class SpreadsheetEditor extends GlimmerComponent {
this.spreadsheet = jspreadsheet(this.spreadsheet, { this.spreadsheet = jspreadsheet(this.spreadsheet, {
data, data,
columns, columns,
defaultColAlign: "left",
wordWrap: true,
...opts, ...opts,
}); });
} }

View File

@ -23,5 +23,9 @@ en:
reason: "why are you editing?" reason: "why are you editing?"
trigger_reason: "Add reason for edit" trigger_reason: "Add reason for edit"
default_edit_reason: "Update Table with Table Editor" default_edit_reason: "Update Table with Table Editor"
default_header:
col_1: "Column 1"
col_2: "Column 2"
col_3: "Column 3"
theme_metadata: theme_metadata:
description: "Adds a button to the composer to easily build tables in markdown" description: "Adds a button to the composer to easily build tables in markdown"

View File

@ -28,6 +28,11 @@
width: max-content; width: max-content;
} }
.modal-body {
padding: 0;
margin: 0.5em;
}
.btn-edit-reason { .btn-edit-reason {
background: none; background: none;
.d-icon { .d-icon {

View File

@ -23,7 +23,7 @@
.jexcel { .jexcel {
border-bottom: 1px solid var(--jexcel_border_color); border-bottom: 1px solid var(--jexcel_border_color);
border-right: 1px solid var(--jexcel_border_color); border-right: transparent;
background-color: transparent; background-color: transparent;
} }
@ -225,7 +225,7 @@ table.jexcel > tbody > tr.selected > td:first-child {
table.jexcel > thead > tr > td { table.jexcel > thead > tr > td {
border-top: 1px solid var(--jexcel_border_color); border-top: 1px solid var(--jexcel_border_color);
border-right: 1px solid var(--jexcel_border_color); border-right: 1px solid var(--jexcel_border_color);
border-bottom: none; border-bottom: 1px solid var(--jexcel_border_color);
background-color: var(--jexcel_header_background); background-color: var(--jexcel_header_background);
&:first-child { &:first-child {