add internal sort panel.
This commit is contained in:
@ -111,7 +111,7 @@ export class GridDropdownColumn extends GridColumn {
|
||||
wrapper: container.parentElement
|
||||
});
|
||||
drop.onSelected = trigger;
|
||||
drop.onExpanded = function () {
|
||||
drop.onExpanded = () => {
|
||||
if (it.__editing == null) {
|
||||
it.__editing = {
|
||||
[col.key]: true
|
||||
@ -161,10 +161,10 @@ export class GridDropdownColumn extends GridColumn {
|
||||
return source;
|
||||
}
|
||||
|
||||
static _setValue(source, element, val) {
|
||||
const data = source?.find(v => v.value === val);
|
||||
static _setValue(source, element, val, opts) {
|
||||
const data = source?.find(v => v[opts?.valueKey ?? 'value'] === val);
|
||||
if (data != null) {
|
||||
val = data.text;
|
||||
val = data[opts?.textKey ?? 'text'];
|
||||
}
|
||||
super.setValue(element, val);
|
||||
}
|
||||
@ -173,9 +173,9 @@ export class GridDropdownColumn extends GridColumn {
|
||||
if (element.tagName !== 'DIV') {
|
||||
let source = this._getSource(item, col);
|
||||
if (source instanceof Promise) {
|
||||
source.then(s => this._setValue(s, element, val));
|
||||
source.then(s => this._setValue(s, element, val, col.dropOptions));
|
||||
} else {
|
||||
this._setValue(source, element, val);
|
||||
this._setValue(source, element, val, col.dropOptions);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -312,26 +312,35 @@ export class GridDateColumn extends GridColumn {
|
||||
|
||||
static setValue(element, val) {
|
||||
if (element.tagName === 'INPUT') {
|
||||
if (isNaN(val) || /^\d{4}-\d{2}-\d{2}$/.test(val)) {
|
||||
element.value = val;
|
||||
if (isNaN(val)) {
|
||||
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) {
|
||||
element.value = val;
|
||||
} else if (/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(val)) {
|
||||
element.value = this._toDateValue(new Date(val));
|
||||
} else {
|
||||
element.value = '';
|
||||
}
|
||||
} else {
|
||||
val = new Date((val - 621355968e9) / 1e4);
|
||||
const month = String(val.getMonth() + 1).padStart(2, '0');
|
||||
const date = String(val.getDate()).padStart(2, '0');
|
||||
element.value = `${val.getFullYear()}-${month}-${date}`;
|
||||
if (!(val instanceof Date)) {
|
||||
val = new Date((val - 621355968e9) / 1e4);
|
||||
}
|
||||
element.value = this._toDateValue(val);
|
||||
}
|
||||
} else {
|
||||
element.innerText = this.formatDate(val);
|
||||
}
|
||||
}
|
||||
|
||||
static getValue(e) {
|
||||
static getValue(e, col) {
|
||||
const date = e.target?.valueAsDate;
|
||||
if (date instanceof Date && !isNaN(date)) {
|
||||
const year = date.getFullYear();
|
||||
if (year < 1900 || year > 9999) {
|
||||
return '';
|
||||
}
|
||||
if (typeof col.dateValueFormatter === 'function') {
|
||||
return col.dateValueFormatter(date);
|
||||
}
|
||||
return String(date.getTime() * 1e4 + 621355968e9);
|
||||
}
|
||||
return '';
|
||||
@ -341,6 +350,15 @@ export class GridDateColumn extends GridColumn {
|
||||
element.disabled = enabled === false;
|
||||
}
|
||||
|
||||
static _toDateValue(dt) {
|
||||
if (isNaN(dt)) {
|
||||
return '';
|
||||
}
|
||||
const month = String(dt.getMonth() + 1).padStart(2, '0');
|
||||
const date = String(dt.getDate()).padStart(2, '0');
|
||||
return `${dt.getFullYear()}-${month}-${date}`;
|
||||
}
|
||||
|
||||
static _resolveDate(s) {
|
||||
if (s instanceof Date) {
|
||||
return s;
|
||||
|
Reference in New Issue
Block a user