From 8a9ba4d4fbd16132a4e417253701e97924df36b9 Mon Sep 17 00:00:00 2001 From: Tsanie Date: Mon, 5 Feb 2024 09:52:26 +0800 Subject: [PATCH] fix: Date Column editing issue. docs: add some examples. --- jsdoc/grid/assets/column-types.png | Bin 12574 -> 15378 bytes lib/ui.js | 3 +- lib/ui/css/variables/definition.scss | 1 + lib/ui/date.d.ts | 6 +++ lib/ui/date.js | 7 +++- lib/ui/grid/column.js | 16 +++++++- lib/ui/grid/grid.js | 56 +++++++++++++++++++++++---- 7 files changed, 78 insertions(+), 11 deletions(-) diff --git a/jsdoc/grid/assets/column-types.png b/jsdoc/grid/assets/column-types.png index 5c5e7a04cd75bf9b1f0d9dcf1576f006c04d12f2..50fb5ef6f2b13f90bb93f384c4e0803adfeda5fa 100644 GIT binary patch literal 15378 zcmaL81yoy2)Gkc%7H^9?6sKr$EACK=y96s*pg4p=aRQW5q*!nXAy{!M792`};I75p z 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 literal 12574 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 diff --git a/lib/ui.js b/lib/ui.js index 92c96ec..baf83ad 100644 --- a/lib/ui.js +++ b/lib/ui.js @@ -10,7 +10,7 @@ import { GridColumn, GridInputColumn, GridDropdownColumn, GridCheckboxColumn, Gr import { Popup, createPopup, showAlert, showConfirm } from "./ui/popup"; import { createPicture, createAudio, createVideo, createFile } from './ui/media'; import { validation, convertCssStyle } from './ui/extension'; -import { createDateInput, formatDate, setDateValue, getDateValue, DateSelector } from './ui/date'; +import { createDateInput, toDateValue, formatDate, setDateValue, getDateValue, DateSelector } from './ui/date'; export { createElement, @@ -43,6 +43,7 @@ export { showConfirm, // dateSelector createDateInput, + toDateValue, formatDate, setDateValue, getDateValue, diff --git a/lib/ui/css/variables/definition.scss b/lib/ui/css/variables/definition.scss index 763d3bd..c1a7794 100644 --- a/lib/ui/css/variables/definition.scss +++ b/lib/ui/css/variables/definition.scss @@ -25,6 +25,7 @@ --red-color: red; --title-color: #fff; --title-bg-color: rgb(68, 114, 196); + --title-ctrlbg-color: rgb(68, 114, 196); --hover-bg-color: #eee; --link-color: #1890ff; --secondary-link-color: #1d9ac0; diff --git a/lib/ui/date.d.ts b/lib/ui/date.d.ts index fd93895..839ea37 100644 --- a/lib/ui/date.d.ts +++ b/lib/ui/date.d.ts @@ -7,6 +7,12 @@ */ export function createDateInput(min?: string, max?: string, element?: HTMLInputElement): HTMLInputElement; +/** + * 将日期转换成 yyyy-MM-dd 格式的字符串 + * @param dt 日期值 + */ +export function toDateValue(dt: Date): string; + /** * 格式化日期字符串 * @param date 要格式化的日期值

diff --git a/lib/ui/date.js b/lib/ui/date.js index efc3d0b..a0a2a3e 100644 --- a/lib/ui/date.js +++ b/lib/ui/date.js @@ -29,7 +29,12 @@ export function createDateInput(min, max, element) { return date; } -function toDateValue(dt) { +/** + * 将日期转换为 `yyyy-MM-dd` 格式的字符串 + * @param {Date} dt 要转换的日期值 + * @returns 返回 `yyyy-MM-dd` 格式的字符串 + */ +export function toDateValue(dt) { if (isNaN(dt)) { return ''; } diff --git a/lib/ui/grid/column.js b/lib/ui/grid/column.js index 106899c..eea67ff 100644 --- a/lib/ui/grid/column.js +++ b/lib/ui/grid/column.js @@ -131,6 +131,10 @@ export class GridColumn { * @virtual */ + /** + * 复写 [toString]{@linkcode String#toString} 方法 + * @private + */ static toString() { return '[object Column]' } } @@ -417,6 +421,8 @@ export class GridIconColumn extends GridColumn { } export class GridDateColumn extends GridColumn { + static get editing() { return true }; + static createEdit(trigger, col, _container, vals) { let enabled = col.enabled; if (typeof enabled === 'string') { @@ -428,7 +434,15 @@ export class GridDateColumn extends GridColumn { return super.create(); } const date = createDateInput(col.dateMin, col.dateMax); - // date.addEventListener('change', trigger); + date.addEventListener('change', () => { + if (vals.__editing == null) { + vals.__editing = { + [col.key]: true + } + } else { + vals.__editing[col.key] = true; + } + }); date.addEventListener('blur', trigger); return date; } diff --git a/lib/ui/grid/grid.js b/lib/ui/grid/grid.js index b89b5fd..109c0bb 100644 --- a/lib/ui/grid/grid.js +++ b/lib/ui/grid/grid.js @@ -210,6 +210,8 @@ let r = lang; * @property {(@deprecated)} [bgFilter] - **已过时**
_根据返回值设置单元格背景色_ * @property {object} [events] - 给单元格元素附加事件(事件函数上下文为数据行对象) * @property {Function} events.{event} - 事件回调函数 + * @property {Function} events.{event}.{this} - 上下文为行数据对象 + * @property {Function} events.{event}.e - 事件参数 * @property {(object | GridItemObjectCallback)} [attrs] - 根据返回值设置单元格元素的附加属性,允许直接设置对象也支持调用如下函数返回对象 * @property {GridColumnDefinition} attrs.{this} - 上下文为列定义对象 * @property {GridItem} attrs.item - 行数据对象 @@ -244,12 +246,33 @@ let r = lang; * { * key: 'name', * // type: Grid.ColumnTypes.Common, - * caption: 'Name' + * caption: 'Name', + * captionStyle: { + * 'font-style': 'italic' + * }, + * width: 150, + * allowFilter: true + * }, + * { + * key: 'birthday', + * type: Grid.ColumnTypes.Date, + * caption: 'Birthday', + * width: 120, + * dateMin: '1900-01-01', + * dateMax: '2025-01-01', + * dateValueFormatter: toDateValue * }, * { * key: 'age', * type: Grid.ColumnTypes.Input, - * caption: 'Age' + * caption: 'Age', + * enabled: false, + * align: 'right', + * filter: item => { + * const ms = new Date() - new Date(item.birthday); + * const age = Math.floor(ms / 1000 / 60 / 60 / 24 / 365); + * return String(age); + * } * }, * { * key: 'sex', @@ -267,14 +290,31 @@ let r = lang; * caption: 'Active' * }, * { - * key: 'birthday', - * type: Grid.ColumnTypes.Date, - * caption: 'Birthday' - * }, - * { * key: 'remove', * type: Grid.ColumnTypes.Icon, - * text: 'times' + * text: 'times', + * resizable: false, + * sortable: false, + * orderable: false, + * tooltip: 'Remove', + * events: { + * onclick: () => { + * showConfirm('Remove', 'Are you sure you want to remove this person?', [ + * { + * key: 'yes', + * text: 'Yes', + * trigger: () => { + * console.log('yes'); + * return true; + * } + * }, + * { + * key: 'no', + * text: 'No' + * } + * ], 'question') + * } + * } * } * ] */