issue fix

This commit is contained in:
2024-01-18 17:25:44 +08:00
parent fb9e920c15
commit feec8b59a7
7 changed files with 265 additions and 231 deletions

View File

@ -32,7 +32,7 @@ export class GridColumn {
export class GridInputColumn extends GridColumn {
static get editing() { return true };
static createEdit(trigger, col, _parent, vals) {
static createEdit(trigger, col, _wrapper, vals) {
const input = createElement('input');
input.setAttribute('type', 'text');
if (typeof trigger === 'function') {
@ -61,13 +61,13 @@ export class GridInputColumn extends GridColumn {
static getValue(e) { return e.target.value }
static setEnabled(element, enabled) {
super.setEnabled(element , enabled);
super.setEnabled(element, enabled);
element.disabled = enabled === false;
}
}
export class GridTextColumn extends GridInputColumn {
static createEdit(trigger, col, _parent, vals) {
static createEdit(trigger, col, _wrapper, vals) {
const input = createElement('textarea');
if (typeof trigger === 'function') {
input.addEventListener('change', trigger);
@ -101,13 +101,15 @@ export class GridTextColumn extends GridInputColumn {
const SymbolDropdown = Symbol.for('ui-dropdown');
export class GridDropdownColumn extends GridColumn {
static createEdit(trigger, col, parent) {
static createEdit(trigger, col, wrapper, it) {
const drop = new Dropdown({
...col.dropOptions,
parent,
holder: parent
wrapper
});
drop.onselected = trigger;
if (typeof col.dropExpanded === 'function') {
drop.onexpanded = col.dropExpanded.bind(col, it.values, drop);
}
return drop.create();
}
@ -125,9 +127,23 @@ export class GridDropdownColumn extends GridColumn {
}
static _getSource(item, col) {
let source = col.source;
let source;
if (col.sourceCache !== false) {
source = item.source?.[col.key];
if (source != null) {
return source;
}
}
source = col.source;
if (typeof source === 'function') {
source = source(item);
source = source(item.values);
}
if (col.sourceCache !== false) {
if (item.source == null) {
item.source = { [col.key]: source };
} else {
item.source[col.key] = source;
}
}
return source;
}
@ -169,12 +185,12 @@ export class GridDropdownColumn extends GridColumn {
drop.select(val, true);
}
static getValue(e) {
return e.value;
static getValue(e, col) {
return e[col.dropOptions?.valueKey ?? 'value'];
}
static setEnabled(element, enabled) {
super.setEnabled(element , enabled);
super.setEnabled(element, enabled);
const drop = this._getDrop(element);
if (drop == null) {
return;
@ -198,7 +214,7 @@ export class GridCheckboxColumn extends GridColumn {
static getValue(e) { return e.target.checked }
static setEnabled(element, enabled) {
super.setEnabled(element , enabled);
super.setEnabled(element, enabled);
element.querySelector('input').disabled = enabled === false;
}
}
@ -206,10 +222,10 @@ export class GridCheckboxColumn extends GridColumn {
export class GridIconColumn extends GridColumn {
static create() { return createElement('span', 'col-icon') }
static setValue(element, val, item, col, grid) {
static setValue(element, val, item, col, _grid) {
let className = col.className;
if (typeof className === 'function') {
className = className.call(col, item);
className = className.call(col, item.values);
}
if (className == null) {
element.className = 'col-icon';
@ -218,7 +234,7 @@ export class GridIconColumn extends GridColumn {
}
let type = col.iconType;
if (typeof type === 'function') {
type = type.call(col, item);
type = type.call(col, item.values);
}
type ??= 'fa-regular';
if (element.dataset.type !== type || element.dataset.icon !== val) {
@ -232,7 +248,7 @@ export class GridIconColumn extends GridColumn {
}
static setEnabled(element, enabled) {
super.setEnabled(element , enabled);
super.setEnabled(element, enabled);
if (enabled === false) {
element.classList.add('disabled');
} else {