From e75e7639382e10fc5ba59ba89cea62cf749953c2 Mon Sep 17 00:00:00 2001 From: Tsanie Date: Thu, 7 Mar 2024 17:16:37 +0800 Subject: [PATCH] change: sample structure fix: tooltip of some readonly column in editing mode feature: adapt filter panel's height --- lib/ui/css/functions/func.scss | 5 +++++ lib/ui/css/grid.scss | 8 ++++---- lib/ui/grid/column.js | 14 ++++++++++++++ lib/ui/grid/grid.js | 20 +++++++++++++------- {fonts => sample/fonts}/fa-brands.svg | 0 {fonts => sample/fonts}/fa-light.svg | 0 {fonts => sample/fonts}/fa-regular.svg | 0 {fonts => sample/fonts}/fa-solid.svg | 0 {language => sample/language}/en-au/res.json | 0 {language => sample/language}/en/res.json | 0 {language => sample/language}/fr/res.json | 0 {language => sample/language}/zh-cn/res.json | 0 12 files changed, 36 insertions(+), 11 deletions(-) rename {fonts => sample/fonts}/fa-brands.svg (100%) rename {fonts => sample/fonts}/fa-light.svg (100%) rename {fonts => sample/fonts}/fa-regular.svg (100%) rename {fonts => sample/fonts}/fa-solid.svg (100%) rename {language => sample/language}/en-au/res.json (100%) rename {language => sample/language}/en/res.json (100%) rename {language => sample/language}/fr/res.json (100%) rename {language => sample/language}/zh-cn/res.json (100%) diff --git a/lib/ui/css/functions/func.scss b/lib/ui/css/functions/func.scss index f945ed2..ffb424c 100644 --- a/lib/ui/css/functions/func.scss +++ b/lib/ui/css/functions/func.scss @@ -44,6 +44,11 @@ } } +@mixin wrap() { + white-space: normal; + word-break: break-word; +} + @mixin ui-check() { .ui-check-inner { position: relative; diff --git a/lib/ui/css/grid.scss b/lib/ui/css/grid.scss index fa62f2e..341cc7c 100644 --- a/lib/ui/css/grid.scss +++ b/lib/ui/css/grid.scss @@ -118,7 +118,7 @@ text-overflow: ellipsis; &.wrap { - white-space: normal; + @include wrap(); } } @@ -286,14 +286,14 @@ } >span { - padding: var(--spacing-cell); + margin: var(--spacing-cell); display: block; overflow: hidden; text-overflow: ellipsis; white-space: pre; &.wrap { - white-space: normal; + @include wrap(); } } } @@ -434,7 +434,7 @@ justify-content: center; align-items: center; position: relative; - padding: var(--spacing-s); + // padding: var(--spacing-s); >svg { width: 16px; diff --git a/lib/ui/grid/column.js b/lib/ui/grid/column.js index 990dd90..7313e1b 100644 --- a/lib/ui/grid/column.js +++ b/lib/ui/grid/column.js @@ -36,6 +36,14 @@ export class GridColumn { * @see 更多例子参考 {@linkcode GridInputColumn} {@linkcode GridDateColumn} 中的代码实现 */ + /** + * 标记该类型是否可编辑 + * @member + * @name GridColumn.canEdit + * @readonly + * @type {boolean} + */ + /** * 创建显示单元格时调用的方法 * @param {GridColumnDefinition} col - 列定义对象 @@ -197,6 +205,7 @@ export class GridColumn { */ export class GridInputColumn extends GridColumn { static get editing() { return true }; + static get canEdit() { return true }; /** * @ignore @@ -311,6 +320,8 @@ const SymbolDropdown = Symbol.for('ui-dropdown'); * @hideconstructor */ export class GridDropdownColumn extends GridColumn { + static get canEdit() { return true }; + /** * @ignore * @param {Function} trigger @@ -512,6 +523,8 @@ export class GridDropdownColumn extends GridColumn { * @ignore */ export class GridCheckboxColumn extends GridColumn { + static get canEdit() { return true }; + /** * @ignore * @param {Function} trigger @@ -654,6 +667,7 @@ export class GridIconColumn extends GridColumn { */ export class GridDateColumn extends GridColumn { static get editing() { return true }; + static get canEdit() { return true }; /** * @ignore diff --git a/lib/ui/grid/grid.js b/lib/ui/grid/grid.js index 6cac4a0..0a7749f 100644 --- a/lib/ui/grid/grid.js +++ b/lib/ui/grid/grid.js @@ -3311,6 +3311,12 @@ export class Grid { totalWidth - FilterPanelWidth : offsetLeft + (width > FilterPanelWidth ? width - FilterPanelWidth : 0); panel.style.left = `${left}px`; + const maxHeight = this._var.el.offsetHeight - this._var.headerHeight; + if (maxHeight < 300) { + panel.style.height = `${maxHeight}px`; + } else { + panel.style.height = ''; + } // search let searchbox; @@ -3810,8 +3816,14 @@ export class Grid { // sub ui-grid return; } + const col = target.dataset.col; const row = target.dataset.row; - if (this._var.virtualRows[row]?.editing) { + if (holder.dataset.row === row && + holder.dataset.col === col) { + return; + } + const type = this._var.colTypes[this.columns[col]?.key]; + if (type?.canEdit && this._var.virtualRows[row]?.editing) { delete holder.dataset.row; delete holder.dataset.col; if (holder.classList.contains('active')) { @@ -3819,12 +3831,6 @@ export class Grid { } return; } - const col = target.dataset.col; - if (holder.dataset.row === row && - holder.dataset.col === col) { - return; - } - const type = this._var.colTypes[this.columns[col]?.key]; let element = target.children[0]; if (type != null && typeof type.getElement === 'function') { element = type.getElement(element); diff --git a/fonts/fa-brands.svg b/sample/fonts/fa-brands.svg similarity index 100% rename from fonts/fa-brands.svg rename to sample/fonts/fa-brands.svg diff --git a/fonts/fa-light.svg b/sample/fonts/fa-light.svg similarity index 100% rename from fonts/fa-light.svg rename to sample/fonts/fa-light.svg diff --git a/fonts/fa-regular.svg b/sample/fonts/fa-regular.svg similarity index 100% rename from fonts/fa-regular.svg rename to sample/fonts/fa-regular.svg diff --git a/fonts/fa-solid.svg b/sample/fonts/fa-solid.svg similarity index 100% rename from fonts/fa-solid.svg rename to sample/fonts/fa-solid.svg diff --git a/language/en-au/res.json b/sample/language/en-au/res.json similarity index 100% rename from language/en-au/res.json rename to sample/language/en-au/res.json diff --git a/language/en/res.json b/sample/language/en/res.json similarity index 100% rename from language/en/res.json rename to sample/language/en/res.json diff --git a/language/fr/res.json b/sample/language/fr/res.json similarity index 100% rename from language/fr/res.json rename to sample/language/fr/res.json diff --git a/language/zh-cn/res.json b/sample/language/zh-cn/res.json similarity index 100% rename from language/zh-cn/res.json rename to sample/language/zh-cn/res.json