diff --git a/packages/fineui/dist/font/iconfont.eot b/packages/fineui/dist/font/iconfont.eot
index 4d687da28..30d5644ca 100644
Binary files a/packages/fineui/dist/font/iconfont.eot and b/packages/fineui/dist/font/iconfont.eot differ
diff --git a/packages/fineui/dist/font/iconfont.svg b/packages/fineui/dist/font/iconfont.svg
index 376406180..0aa415779 100644
--- a/packages/fineui/dist/font/iconfont.svg
+++ b/packages/fineui/dist/font/iconfont.svg
@@ -14,6 +14,20 @@
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -186,9 +200,9 @@
-
+
-
+
diff --git a/packages/fineui/dist/font/iconfont.ttf b/packages/fineui/dist/font/iconfont.ttf
index f244d53da..243165efe 100644
Binary files a/packages/fineui/dist/font/iconfont.ttf and b/packages/fineui/dist/font/iconfont.ttf differ
diff --git a/packages/fineui/dist/font/iconfont.woff b/packages/fineui/dist/font/iconfont.woff
index f866bc389..e8fb8e441 100644
Binary files a/packages/fineui/dist/font/iconfont.woff and b/packages/fineui/dist/font/iconfont.woff differ
diff --git a/packages/fineui/dist/font/iconfont.woff2 b/packages/fineui/dist/font/iconfont.woff2
index 78fc1dbb9..2229cff55 100644
Binary files a/packages/fineui/dist/font/iconfont.woff2 and b/packages/fineui/dist/font/iconfont.woff2 differ
diff --git a/packages/fineui/src/base/combination/tab.js b/packages/fineui/src/base/combination/tab.js
index 6f025baf4..c9f79278a 100644
--- a/packages/fineui/src/base/combination/tab.js
+++ b/packages/fineui/src/base/combination/tab.js
@@ -158,6 +158,10 @@ export class Tab extends Widget {
return this.layout.isCardExisted(cardName);
}
+ getAllCardIds() {
+ return Object.keys(this.cardMap);
+ }
+
getSelect() {
return this.curr;
}
diff --git a/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js b/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js
index 651ce58e1..cc582a3eb 100644
--- a/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js
+++ b/packages/fineui/src/component/treevaluechooser/abstract.treevaluechooser.js
@@ -169,6 +169,7 @@ export class AbstractTreeValueChooser extends Widget {
value: node.value,
open: true,
disabled: node.disabled,
+ iconCls: node.iconCls,
});
}
}
@@ -531,6 +532,7 @@ export class AbstractTreeValueChooser extends Widget {
halfCheck: half,
flag,
disabled: node.disabled,
+ iconCls: node.iconCls,
});
}
@@ -702,6 +704,7 @@ export class AbstractTreeValueChooser extends Widget {
disabled: nodes[i].disabled,
title: nodes[i].title || nodes[i].text,
warningTitle: nodes[i].warningTitle,
+ iconCls: nodes[i].iconCls,
});
if (openState) {
getResult(parentValues.concat([nodes[i].value]), { checked: state[0], half: state[1] });
diff --git a/packages/fineui/src/component/treevaluechooser/pane.treevaluechooser.js b/packages/fineui/src/component/treevaluechooser/pane.treevaluechooser.js
index ff5aad90f..1ecd52f6c 100644
--- a/packages/fineui/src/component/treevaluechooser/pane.treevaluechooser.js
+++ b/packages/fineui/src/component/treevaluechooser/pane.treevaluechooser.js
@@ -15,6 +15,7 @@ export class TreeValueChooserPane extends AbstractTreeValueChooser {
items: null,
itemsCreator: emptyFn,
showLine: true,
+ showIcon: false,
//searcherPaneAutoShrink和searcherPaneIsSelectedAny同时为false时,返回值和非搜索状态下的树逻辑一致
searcherPaneAutoShrink: true,//其搜索树是否会判别子结点全选则取父结点的值
searcherPaneIsSelectedAny: true, //其搜索树是否返回所有被checked的结点(包括被checked的结点的子结点)
@@ -28,6 +29,7 @@ export class TreeValueChooserPane extends AbstractTreeValueChooser {
type: o.hideSearch ? MultiSelectTreePopup.xtype : MultiSelectTree.xtype,
element: this,
showLine: o.showLine,
+ showIcon: o.showIcon,
searcherPaneIsSelectedAny: o.hideSearch || o.searcherPaneIsSelectedAny,
itemsCreator: (options, callback) => {
options.searcherPaneAutoShrink = o.hideSearch || o.searcherPaneAutoShrink;
diff --git a/packages/fineui/src/core/2.base.js b/packages/fineui/src/core/2.base.js
index fe0c611f2..fe07103c6 100644
--- a/packages/fineui/src/core/2.base.js
+++ b/packages/fineui/src/core/2.base.js
@@ -1518,7 +1518,7 @@ export function getTime() {
}
if (isNotNull(BI.timeZone)) {
// BI-33791 1901年以前的东8区标准是GMT+0805, 统一无论是什么时间,都以整的0800这样的为基准
- return dt.getTime() - BI.timeZone - new Date().getTimezoneOffset() * 60000;
+ return dt.getTime() + BI.timeZone + new Date().getTimezoneOffset() * 60000;
}
return dt.getTime();
diff --git a/packages/fineui/src/core/utils/dom.js b/packages/fineui/src/core/utils/dom.js
index df573a746..fbee6b287 100644
--- a/packages/fineui/src/core/utils/dom.js
+++ b/packages/fineui/src/core/utils/dom.js
@@ -66,10 +66,10 @@ export function preloadImages(srcArray, onload) {
each(srcArray, (i, src) => {
images[i] = new Image();
images[i].src = src;
- images[i].onload = function() {
+ images[i].onload = function () {
complete();
};
- images[i].onerror = function() {
+ images[i].onerror = function () {
complete();
};
});
@@ -741,8 +741,14 @@ export function getComboPosition(combo, popup, extraWidth, extraHeight, needAdap
default:
break;
}
- if (needAdaptHeight === true) {
- popup.resetHeight && popup.resetHeight(Math.min(viewportBounds.height - position.top - (positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0), maxHeight));
+ if (needAdaptHeight === true && popup.resetHeight) {
+ const comboRect = combo.element[0].getBoundingClientRect();
+ const relativeOffset = positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0;
+ if (position.top < comboRect.top) {
+ popup.resetHeight(Math.min(viewportBounds.height - position.top - relativeOffset, comboRect.top, maxHeight));
+ } else if (position.top >= comboRect.bottom) {
+ popup.resetHeight(Math.min(viewportBounds.height - position.top - relativeOffset, viewportBounds.height - comboRect.bottom, maxHeight));
+ }
}
return position;
diff --git a/packages/fineui/src/core/wrapper/layout/layout.card.js b/packages/fineui/src/core/wrapper/layout/layout.card.js
index f2f717938..940831926 100644
--- a/packages/fineui/src/core/wrapper/layout/layout.card.js
+++ b/packages/fineui/src/core/wrapper/layout/layout.card.js
@@ -107,9 +107,12 @@ export class CardLayout extends Layout {
throw new Error("cardName not exist", cardName);
}
- const child = this._children[this._getChildName(cardName)];
+ let child = this._children[this._getChildName(cardName)];
this._deleteCardByName(cardName);
- child && child._destroy();
+ if (child) {
+ child._destroy();
+ child = null;
+ }
}
addCardByName(cardName, cardItem) {
diff --git a/packages/fineui/src/fix/fix.compact.js b/packages/fineui/src/fix/fix.compact.js
index 40b02fe8f..e76aea6a4 100644
--- a/packages/fineui/src/fix/fix.compact.js
+++ b/packages/fineui/src/fix/fix.compact.js
@@ -76,7 +76,7 @@ function popTarget() {
export const Model = Fix.Model;
const oldWatch = Fix.watch;
-Fix.watch = function(model, expOrFn, cb, options) {
+Fix.watch = function (model, expOrFn, cb, options) {
if (isPlainObject(cb)) {
options = cb;
cb = cb.handler;
@@ -89,7 +89,7 @@ Fix.watch = function(model, expOrFn, cb, options) {
this,
model,
expOrFn,
- function() {
+ function () {
options && options.store && pushTarget(options.store);
let res;
try {
@@ -167,7 +167,7 @@ export function createStore() {
}
const _init = Widget.prototype._init;
-Widget.prototype._init = function() {
+Widget.prototype._init = function () {
const needPop = createStore.call(this);
try {
_init.apply(this, arguments);
@@ -178,7 +178,7 @@ Widget.prototype._init = function() {
};
const __initWatch = Widget.prototype.__initWatch;
-Widget.prototype.__initWatch = function() {
+Widget.prototype.__initWatch = function () {
__initWatch.apply(this, arguments);
const workerMode =
Providers.getProvider("bi.provider.system").getWorkerMode();
@@ -191,7 +191,7 @@ Widget.prototype.__initWatch = function() {
};
const unMount = Widget.prototype.__destroy;
-Widget.prototype.__destroy = function() {
+Widget.prototype.__destroy = function () {
try {
unMount.apply(this, arguments);
} catch (e) {
@@ -204,6 +204,7 @@ Widget.prototype.__destroy = function() {
unwatch();
});
});
+ Fix.cleanupDeps();
this._watchers && (this._watchers = []);
if (this.store) {
this.store._parent && (this.store._parent = null);
@@ -213,7 +214,7 @@ Widget.prototype.__destroy = function() {
delete this.__cacheStore;
};
-Widget.prototype.__watch = function(getter, handler, options) {
+Widget.prototype.__watch = function (getter, handler, options) {
this._watchers = this._watchers || [];
const watcher = new Fix.Watcher(
null,
@@ -235,7 +236,7 @@ Widget.prototype.__watch = function(getter, handler, options) {
_.each(["_render", "__afterRender", "_mount", "__afterMount"], (name) => {
const old = Widget.prototype[name];
old &&
- (Widget.prototype[name] = function() {
+ (Widget.prototype[name] = function () {
this.store && pushTarget(this.store);
let res;
try {
diff --git a/packages/fineui/src/fix/fix.js b/packages/fineui/src/fix/fix.js
index ac7a8b839..51e550ae0 100644
--- a/packages/fineui/src/fix/fix.js
+++ b/packages/fineui/src/fix/fix.js
@@ -110,7 +110,15 @@ function isExtensible(obj) {
function remove(arr, item) {
- if (arr && arr.length) {
+ if (!arr) {
+ return;
+ }
+ const len = arr.length;
+ if (len) {
+ if (item === arr[len - 1]) {
+ arr.length = len - 1;
+ return;
+ }
const index = arr.indexOf(item);
if (index > -1) {
return arr.splice(index, 1);
diff --git a/packages/fineui/src/less/resource/app.less b/packages/fineui/src/less/resource/app.less
index e09b2bd15..e6f29e3f9 100644
--- a/packages/fineui/src/less/resource/app.less
+++ b/packages/fineui/src/less/resource/app.less
@@ -25,10 +25,20 @@ body {
outline: 0 none;
}
-div, textarea {
- scrollbar-color: fade(@scroll-color, 10%) fade(@scroll-color, 5%);
- scrollbar-width: thin;
+@-moz-document url-prefix() {
+ div, textarea {
+ scrollbar-color: fade(@scroll-color, 10%) fade(@scroll-color, 5%);
+ scrollbar-width: thin;
+ }
+ .bi-theme-dark {
+ div, textarea {
+ scrollbar-color: fade(@scroll-color-theme-dark, 10%) fade(@scroll-color-theme-dark, 5%);
+ }
+ }
+}
+
+div, textarea {
&::-webkit-scrollbar {
-webkit-appearance: none;
width: 10px;
@@ -63,8 +73,6 @@ div, textarea {
.bi-theme-dark {
div, textarea {
- scrollbar-color: fade(@scroll-color-theme-dark, 10%) fade(@scroll-color-theme-dark, 5%);
-
&::-webkit-scrollbar {
-webkit-appearance: none;
}
diff --git a/packages/fineui/src/widget/downlist/combo.downlist.js b/packages/fineui/src/widget/downlist/combo.downlist.js
index 4b8a9294b..341372724 100644
--- a/packages/fineui/src/widget/downlist/combo.downlist.js
+++ b/packages/fineui/src/widget/downlist/combo.downlist.js
@@ -1,4 +1,4 @@
-import { shortcut, Widget, extend, createWidget, cloneDeep, some, isArray, each } from "@/core";
+import { cloneDeep, createWidget, each, extend, isArray, isNull, shortcut, some, Widget } from "@/core";
import { DownListPopup } from "./popup.downlist";
import { Combo } from "@/base";
import { IconTrigger } from "@/case";
@@ -102,7 +102,7 @@ export class DownListCombo extends Widget {
this.fireEvent(DownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue);
this.downlistcombo.hideView();
},
- }
+ },
],
},
stopPropagation: o.stopPropagation,
@@ -134,7 +134,11 @@ export class DownListCombo extends Widget {
}
getValue() {
- return this.popupView.getValue();
+ if (isNull(this.popupView)) {
+ return this.options.value;
+ } else {
+ return this.popupView.getValue();
+ }
}
adjustWidth() {
diff --git a/packages/fineui/src/widget/multiselect/trigger/editor.multiselect.js b/packages/fineui/src/widget/multiselect/trigger/editor.multiselect.js
index 3391c22a8..896549dfc 100644
--- a/packages/fineui/src/widget/multiselect/trigger/editor.multiselect.js
+++ b/packages/fineui/src/widget/multiselect/trigger/editor.multiselect.js
@@ -1,4 +1,15 @@
-import { shortcut, Widget, extend, i18nText, createWidget, Controller, isEmptyString, isEmptyArray, BlankSplitChar } from "@/core";
+import {
+ shortcut,
+ Widget,
+ extend,
+ i18nText,
+ createWidget,
+ Controller,
+ isEmptyString,
+ isEmptyArray,
+ BlankSplitChar,
+ first, last, isNotEmptyString
+} from "@/core";
import { StateEditor } from "@/case";
import { SelectPatchEditor } from "./editor/editor.patch";
@@ -77,8 +88,13 @@ export class MultiSelectEditor extends Widget {
getKeywords() {
const val = this.editor.getValue();
let keywords = val.split(/\u200b\s\u200b/);
- if (isEmptyString(keywords[keywords.length - 1])) {
- keywords = keywords.slice(0, keywords.length - 1);
+ if (isEmptyString(first(keywords)) || isEmptyString(last(keywords))) {
+ keywords = keywords.filter((word, index) => {
+ if (index === 0 || index === keywords.length - 1) {
+ return isNotEmptyString(word);
+ }
+ return true;
+ });
}
if (/\u200b\s\u200b$/.test(val)) {
return keywords.concat([BlankSplitChar]);
diff --git a/packages/fineui/src/widget/multiselecttree/multiselecttree.js b/packages/fineui/src/widget/multiselecttree/multiselecttree.js
index 1047a9601..779e86d7a 100644
--- a/packages/fineui/src/widget/multiselecttree/multiselecttree.js
+++ b/packages/fineui/src/widget/multiselecttree/multiselecttree.js
@@ -30,6 +30,7 @@ export class MultiSelectTree extends Single {
type: MultiSelectTreePopup.xtype,
itemsCreator: o.itemsCreator,
showLine: o.showLine,
+ showIcon: o.showIcon,
});
this.adapter.on(MultiSelectTreePopup.EVENT_CHANGE, () => {
if (self.searcher.isSearching()) {
@@ -45,6 +46,7 @@ export class MultiSelectTree extends Single {
this.searcherPane = createWidget({
type: MultiTreeSearchPane.xtype,
cls: "bi-border-left bi-border-right bi-border-bottom",
+ showIcon: o.showIcon,
isSelectedAny: o.searcherPaneIsSelectedAny,
keywordGetter() {
return self.searcher.getKeyword();
diff --git a/packages/fineui/src/widget/multiselecttree/multiselecttree.popup.js b/packages/fineui/src/widget/multiselecttree/multiselecttree.popup.js
index 3782d209b..1c45ceb3b 100644
--- a/packages/fineui/src/widget/multiselecttree/multiselecttree.popup.js
+++ b/packages/fineui/src/widget/multiselecttree/multiselecttree.popup.js
@@ -22,6 +22,7 @@ export class MultiSelectTreePopup extends Widget {
this.popup = createWidget({
type: AsyncTree.xtype,
showLine: o.showLine,
+ showIcon: o.showIcon,
element: this,
itemsCreator: o.itemsCreator,
});
diff --git a/packages/fineui/src/widget/multitree/trigger/multi.tree.search.pane.js b/packages/fineui/src/widget/multitree/trigger/multi.tree.search.pane.js
index 01bb92499..d947b8d82 100644
--- a/packages/fineui/src/widget/multitree/trigger/multi.tree.search.pane.js
+++ b/packages/fineui/src/widget/multitree/trigger/multi.tree.search.pane.js
@@ -31,6 +31,7 @@ export class MultiTreeSearchPane extends Pane {
opts.itemsCreator(op, callback);
},
value: opts.value,
+ showIcon: opts.showIcon,
listeners: [
{
eventName: Controller.EVENT_CHANGE,
diff --git a/packages/fineui/typescript/base/combination/tab.ts b/packages/fineui/typescript/base/combination/tab.ts
index fa4cc8b25..dbb4c907a 100644
--- a/packages/fineui/typescript/base/combination/tab.ts
+++ b/packages/fineui/typescript/base/combination/tab.ts
@@ -31,4 +31,6 @@ export declare class Tab extends Widget {
populate(): void;
isCardExisted(cardName: string): boolean;
+
+ getAllCardIds(): string[];
}