Skip to content

Commit b316d6a

Browse files
authored
Fix setEditableInputTypeSelect (#1214)
Closes #1212
1 parent b1f8090 commit b316d6a

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

assets/plugins/features/editable.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ export class EditablePlugin implements DatagridPlugin {
3333

3434
if (!cell.classList.contains("editing")) {
3535
cell.classList.add("editing");
36-
const originalValue = cell.innerHTML.replace(/<\/?br>/g, "\n");
37-
const valueToEdit = cell.getAttribute(EditableValueAttribute) ?? originalValue;
36+
const originalValue = (cell.innerHTML.replace(/<\/?br>/g, "\n")).trim();
37+
const valueToEdit = (cell.getAttribute(EditableValueAttribute) ?? originalValue).trim();
3838

3939
cell.setAttribute("originalValue", originalValue);
4040
cell.setAttribute("valueToEdit", valueToEdit);
@@ -49,15 +49,16 @@ export class EditablePlugin implements DatagridPlugin {
4949
input = cell.querySelector("textarea")!;
5050
break;
5151
case "select":
52-
input = cell.querySelector(cell.getAttribute(EditableElementAttribute) ?? "")!;
52+
cell.innerHTML = cell.getAttribute(EditableElementAttribute) ?? "";
53+
input = cell.querySelector("select")!;
5354
input
5455
.querySelectorAll(`option[value='${valueToEdit}']`)
5556
.forEach(input => input.setAttribute("selected", "true"));
5657
break;
5758
default:
5859
cell.innerHTML = `<input type='${type}' />`;
5960
input = cell.querySelector("input")!;
60-
input.setAttribute("value", valueToEdit.trim());
61+
input.setAttribute("value", valueToEdit);
6162
}
6263

6364
const attributes = JSON.parse(cell.getAttribute(EditableAttrsAttribute) ?? "{}");
@@ -81,7 +82,9 @@ export class EditablePlugin implements DatagridPlugin {
8182
}) as any;
8283

8384
if (type === "select") {
84-
cell.innerHTML = cell.querySelector(`option[value='${value}']`)?.innerHTML ?? "";
85+
cell.innerHTML = (el instanceof HTMLSelectElement)
86+
? el.options[el.selectedIndex]?.text ?? value
87+
: value;
8588
} else {
8689
if (response._datagrid_editable_new_value) {
8790
value = response._datagrid_editable_new_value;

0 commit comments

Comments
 (0)