diff --git a/bin/cli/cli.js b/bin/cli/cli.js
old mode 100644
new mode 100755
index 732fc1133..513024023
--- a/bin/cli/cli.js
+++ b/bin/cli/cli.js
@@ -1,44 +1,21 @@
#!/usr/bin/env node
+const yargs = require('yargs/yargs');
+const { hideBin } = require('yargs/helpers');
const workerCmd = require('./worker/cli.worker');
-function getArgs (startIndex = 1) {
- const args = {};
- process.argv
- .slice(startIndex, process.argv.length)
- .forEach(arg => {
- // long arg
- if (arg.slice(0, 2) === '--') {
- const longArg = arg.split('=');
- const longArgFlag = longArg[0].slice(2, longArg[0].length);
- const longArgValue = longArg.length > 1 ? longArg[1] : true;
- args[longArgFlag] = longArgValue;
- // flags
- } else if (arg[0] === '-') {
- const flags = arg.slice(1, arg.length);
- args[flags] = true;
- }
- });
+const argv = yargs(hideBin(process.argv)).argv;
- return args;
-}
+const cmd = argv._[0];
const cmds = new Map([
['worker', workerCmd],
]);
-const baseCmd = 'fui-cli';
-
-const startIndex = process.argv.findIndex(argv => argv.indexOf(baseCmd) !== -1);
-
-if (startIndex === -1) {
- throw new Error(`Command ${baseCmd} not found in args`);
-}
-
-const cmd = process.argv[startIndex + 1];
+if (!cmd) throw new Error('Command is undefined!');
if (cmds.has(cmd)) {
- cmds.get(cmd)?.exec(getArgs(startIndex + 2));
+ cmds.get(cmd)?.exec(argv);
} else {
throw new Error(`Command ${cmd} not supported`);
}
diff --git a/bin/cli/worker/cli.worker.js b/bin/cli/worker/cli.worker.js
index 555c99cf0..b67513fbb 100644
--- a/bin/cli/worker/cli.worker.js
+++ b/bin/cli/worker/cli.worker.js
@@ -5,7 +5,7 @@ function first2UpperCase(str) {
return str.toLowerCase().replace(/( |^)[a-z]/g, L => L.toUpperCase());
}
-function scanAndCreate(structure, workerName, root = process.env.INIT_CWD) {
+function scanAndCreate(structure, workerName, root) {
Object.keys(structure)
.forEach(name => {
if (typeof structure[name] === 'object') {
@@ -60,7 +60,7 @@ module.exports = {
},
};
- scanAndCreate(structure, name);
+ scanAndCreate(structure, name, args.where ? path.resolve(args.where) : process.cwd());
},
};
diff --git a/demo/js/case/demo.segment.js b/demo/js/case/demo.segment.js
index 8831c11f3..946c5d952 100644
--- a/demo/js/case/demo.segment.js
+++ b/demo/js/case/demo.segment.js
@@ -1,28 +1,28 @@
Demo.Func = BI.inherit(BI.Widget, {
props: {
- baseCls: "demo-func"
+ baseCls: "demo-func",
},
render: function () {
BI.createWidget({
- type: "bi.vertical",
+ type: "bi.horizontal",
element: this,
vgap: 20,
hgap: 30,
items: [{
type: "bi.segment",
items: [{
- text: "1",
- value: 1
+ text: "较长的选项1",
+ value: 1,
}, {
- text: "2",
- value: 2
+ text: "选项2",
+ value: 2,
}, {
- text: "3",
- value: 3
- }]
- }]
+ text: "选项3",
+ value: 3,
+ }],
+ }],
});
- }
+ },
});
-BI.shortcut("demo.segment", Demo.Func);
\ No newline at end of file
+BI.shortcut("demo.segment", Demo.Func);
diff --git a/dist/fix/fix.compact.js b/dist/fix/fix.compact.js
index 6179d484b..dced5e166 100644
--- a/dist/fix/fix.compact.js
+++ b/dist/fix/fix.compact.js
@@ -109,13 +109,13 @@
pushTarget(this.store);
return true;
}
- if (this._store) {
+ if (this._store || this.options._store) {
var store = BI.Widget.findStore(this.options.context || this._parent || this.options.element || this._context);
if (store) {
pushTarget(store);
needPop = true;
}
- this.store = this._store();
+ this.store = (this._store || this.options._store).call(this);
this.store && (this.store._widget = this);
needPop && popTarget();
needPop = false;
diff --git a/dist/font/iconfont.eot b/dist/font/iconfont.eot
index bfd53b919..525a2255d 100644
Binary files a/dist/font/iconfont.eot and b/dist/font/iconfont.eot differ
diff --git a/dist/font/iconfont.svg b/dist/font/iconfont.svg
index 35d6aab64..03bfcd64d 100644
--- a/dist/font/iconfont.svg
+++ b/dist/font/iconfont.svg
@@ -14,6 +14,62 @@
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -22,7 +78,7 @@
-
+
@@ -304,9 +360,9 @@
-
+
-
+
@@ -1896,7 +1952,7 @@
-
+
diff --git a/dist/font/iconfont.ttf b/dist/font/iconfont.ttf
index c08f197a3..e4c8c2ce8 100644
Binary files a/dist/font/iconfont.ttf and b/dist/font/iconfont.ttf differ
diff --git a/dist/font/iconfont.woff b/dist/font/iconfont.woff
index 910630447..13c6cb98e 100644
Binary files a/dist/font/iconfont.woff and b/dist/font/iconfont.woff differ
diff --git a/dist/font/iconfont.woff2 b/dist/font/iconfont.woff2
index d38205116..2c3383f13 100644
Binary files a/dist/font/iconfont.woff2 and b/dist/font/iconfont.woff2 differ
diff --git a/examples/useContext.html b/examples/useContext.html
index 4f91239bd..4092713e9 100644
--- a/examples/useContext.html
+++ b/examples/useContext.html
@@ -22,10 +22,10 @@
state: function () {
return {
expand: false,
- cssScale: 2.0
+ cssScale: true
};
},
- childContext: ["text"],
+ childContext: ["text", "cssScale"],
computed: {
text: function () {
@@ -41,10 +41,20 @@
});
BI.model("demo.model", Model);
+ var TempModel = BI.inherit(BI.Model, {
+ state: function () {
+ return {
+ cssScale: false
+ };
+ },
+ childContext: ["cssScale"],
+ });
+ BI.model("demo.temp_model", TempModel);
+
var oldFormat = BI.pixFormat;
BI.pixFormat = function (pix, border) {
var context = BI.useContext("cssScale");
- if (!context) {
+ if (!context || context.model.cssScale === false) {
return oldFormat.apply(this, arguments);
}
if (!BI.isNumber(pix)) {
@@ -59,8 +69,8 @@
var oldPix = BI.toPix;
BI.toPix = function (pix, border) {
var context = BI.useContext("cssScale");
- if (!context) {
- return oldPix.apply(this, arguments);
+ if (!context || context.model.cssScale === false) {
+ return oldFormat.apply(this, arguments);
}
if (!BI.isNumber(pix)) {
return pix;
@@ -109,7 +119,7 @@
var child;
var store = BI.useStore();
return function () {
- this.element[0].style.setProperty('--css-scale', store.model.cssScale);
+ this.element[0].style.setProperty('--css-scale', 2);
return {
type: "bi.vertical",
vgap: 20,
@@ -130,6 +140,42 @@
day: 15
}
}
+ }, {
+ type: "bi.down_list_combo",
+ cls: "bi-border",
+ width: 24,
+ height: 24,
+ popup: {
+ _store: function () {
+ return BI.Models.getModel("demo.temp_model");
+ }
+ },
+ value: [{value: 2}, {value: 3, childValue: 4}],
+ items: [[{
+ text: "属于",
+ value: 1,
+ cls: "dot-e-font"
+ }, {
+ text: "不属于",
+ value: 2,
+ cls: "dot-e-font"
+ }], [{
+ el: {
+ text: "大于",
+ value: 3,
+ iconCls1: "dot-e-font"
+ },
+ value: 3,
+ children: [{
+ text: "固定值",
+ value: 4,
+ cls: "dot-e-font"
+ }, {
+ text: "平均值",
+ value: 5,
+ cls: "dot-e-font"
+ }]
+ }]]
}]
};
};
diff --git a/package.json b/package.json
index d8d1135eb..b54ae8401 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "fineui",
- "version": "2.0.20221101100519",
+ "version": "2.0.20221121190600",
"description": "fineui",
"main": "dist/fineui_without_conflict.min.js",
"types": "dist/lib/index.d.ts",
@@ -86,5 +86,9 @@
"registry": "https://registry.npmjs.org"
},
"author": "fanruan",
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs": "17.0.13",
+ "yargs": "17.6.2"
+ }
}
\ No newline at end of file
diff --git a/src/base/single/0.single.js b/src/base/single/0.single.js
index 93705ca91..c13e02e81 100644
--- a/src/base/single/0.single.js
+++ b/src/base/single/0.single.js
@@ -19,35 +19,37 @@ BI.Single = BI.inherit(BI.Widget, {
return BI.extend(conf, {
readonly: false,
title: null,
- warningTitle: null,
- tipType: null, // success或warning
- belowMouse: false, // title是否跟随鼠标
+ warningTitle: null, // deprecated
+ tipType: null, // deprecated success或warning
+ belowMouse: false, // title是否跟随鼠标
enableHover: false,
});
},
_showToolTip: function (e, opt) {
opt || (opt = {});
+ var self = this;
var o = this.options;
- var tooltipOpt = {};
var title = this.getTitle();
- if (BI.isPlainObject(title)) {
- tooltipOpt = title;
+
+ if (title instanceof Promise) {
+ this.requestingTitle = title;
+ title.then(resolvedTitle => {
+ // 由于是异步的,所以无法避免Promise resolve时机问题,所以设计为:鼠标移出了则不显示,并且只显示最后一次发起的查询结果
+ this.mouseOver && this.requestingTitle === title && showToolTip(this._getTooltipOptions(resolvedTitle));
+ });
} else {
- tooltipOpt.level = this.getTipType() || "success";
- // 由于以前的用法,存在大量disabled:true搭配warningTitle的情况,所以这里做一个兼容,disabled:true的情况下,依然优先显示warningTitle,避免只设置了warningTitle而没有设置title的情况
- if (BI.isNull(o.tipType) && !this.isEnabled()) {
- tooltipOpt.text = (this.getWarningTitle() || title);
- } else {
- tooltipOpt.text = tooltipOpt.level === "success" ? title : (this.getWarningTitle() || title);
- }
+ showToolTip(this._getTooltipOptions(title));
}
- if (BI.isKey(tooltipOpt.text)) {
- BI.Tooltips.show(e, this.getName(), tooltipOpt, this, opt);
- if (o.action) {
- BI.Actions.runAction(o.action, "hover", o, this);
+
+ function showToolTip(tooltipOpt) {
+ if (BI.isKey(tooltipOpt.text) && !BI.Tooltips.has(self.getName())) {
+ BI.Tooltips.show(e, self.getName(), tooltipOpt, self, opt);
+ if (o.action) {
+ BI.Actions.runAction(o.action, "hover", o, self);
+ }
+ BI.Actions.runGlobalAction("hover", o, self);
}
- BI.Actions.runGlobalAction("hover", o, this);
}
},
@@ -91,12 +93,30 @@ BI.Single = BI.inherit(BI.Widget, {
}
},
+ _getTooltipOptions: function (title) {
+ var o = this.options;
+ var tooltipOpt = {};
+ if (BI.isPlainObject(title)) {
+ tooltipOpt = title;
+ } else {
+ tooltipOpt.level = this.getTipType() || "success";
+ // 由于以前的用法,存在大量disabled:true搭配warningTitle的情况,所以这里做一个兼容,disabled:true的情况下,依然优先显示warningTitle,避免只设置了warningTitle而没有设置title的情况
+ if (BI.isNull(o.tipType) && !this.isEnabled()) {
+ tooltipOpt.text = (this.getWarningTitle() || title);
+ } else {
+ tooltipOpt.text = tooltipOpt.level === "success" ? title : (this.getWarningTitle() || title);
+ }
+ }
+ return tooltipOpt;
+ },
+
enableHover: function (opt) {
opt || (opt = {});
var self = this;
if (!this._hoverBinded) {
this.element.unbind("mouseenter.title").on("mouseenter.title", function (e) {
self._e = e;
+ self.mouseOver = true;
if (self.getTipType() === "warning" || (BI.isKey(self.getWarningTitle()) && !self.isEnabled())) {
delayingTooltips = self.getName();
self.showTimeout = BI.delay(function () {
@@ -144,6 +164,7 @@ BI.Single = BI.inherit(BI.Widget, {
});
this.element.unbind("mouseleave.title").on("mouseleave.title", function (e) {
self._e = null;
+ self.mouseOver = false;
self._clearTimeOut();
self._hideTooltip();
});
diff --git a/src/base/single/button/buttons/button.js b/src/base/single/button/buttons/button.js
index 39cfffda3..a06f23191 100644
--- a/src/base/single/button/buttons/button.js
+++ b/src/base/single/button/buttons/button.js
@@ -71,6 +71,35 @@
render: function () {
var o = this.options, self = this;
+ // bi.center_adapt 作用:让 hgap 不影响 iconGap。
+ BI.createWidget({
+ type: "bi.center_adapt",
+ horizontalAlign: o.textAlign,
+ element: this,
+ ref: (ref) => {
+ self.containerRef = ref;
+ },
+ hgap: o.hgap,
+ vgap: o.vgap,
+ items: self.generateItems()
+ });
+
+ // 如果 options 对应的属性为 true 则给元素添加 class
+ var classArr = ["block", "clear", "ghost", "plain", "loading", "light"];
+ BI.each(classArr, function (_, clz) {
+ if (BI.get(o, clz) === true) {
+ self.element.addClass(clz);
+ }
+ });
+
+ if (o.minWidth > 0) {
+ this.element.css({ "min-width": BI.pixFormat(o.minWidth) });
+ }
+ },
+
+ generateItems(defaultRenderIcon) {
+ var o = this.options;
+
// 由于button默认情况下有个边框,所以要主动算行高
var lineHeight, textHeight = o.textHeight;
var hasBorder = false
@@ -90,7 +119,32 @@
}
}
- var iconInvisible = !o.loading && !o.iconCls && !o.icon;
+ var iconInvisible = !(o.loading || o.iconCls || o.icon || defaultRenderIcon);
+
+ var textWidth = o.textWidth;
+ if (BI.isNull(o.textWidth)) {
+ textWidth = (o.minWidth > 0 && o.width < o.minWidth) ? o.minWidth : o.width;
+ textWidth -= (o.hgap * 2 + o.iconGap)
+ textWidth -= iconInvisible || isVertical(o.iconPosition) ? 0 : this._const.iconWidth
+ }
+ this.text = BI.createWidget({
+ type: "bi.label",
+ text: o.text,
+ whiteSpace: o.whiteSpace,
+ textAlign: o.textAlign,
+ textWidth: textWidth,
+ textHeight: BI.toPix(textHeight, hasBorder ? 2 : 0),
+ height: BI.toPix(lineHeight, hasBorder ? 2 : 0),
+ value: o.value,
+ title: null,
+ });
+
+ if (iconInvisible) {
+ return [this.text]
+ }
+
+ this._iconRendered = true;
+
if (BI.isPlainObject(o.icon) && !o.loading) {
this.icon = BI.createWidget(o.icon);
} else {
@@ -107,64 +161,24 @@
});
}
- // 用户可能设置的 width 小于按钮的最小宽度
- var actualWidth = (o.minWidth > 0 && o.width < o.minWidth) ? o.minWidth : o.width;
- var textWidth = iconInvisible && o.width ? actualWidth - o.hgap * 2 : null;
- if (BI.isNotNull(o.textWidth)) {
- // textWidth 需要减去图标
- textWidth = o.textWidth - (iconInvisible || isVertical(o.iconPosition) ? 0 : this._const.iconWidth);
- }
- this.text = BI.createWidget({
- type: "bi.label",
- text: o.text,
- whiteSpace: o.whiteSpace,
- textAlign: o.textAlign,
- textWidth: textWidth,
- textHeight: BI.toPix(textHeight, hasBorder ? 2 : 0),
- height: BI.toPix(lineHeight, hasBorder ? 2 : 0),
- value: o.value,
- title: null,
- });
- var layoutType = "bi.horizontal";
var gapContainer = {
lgap: o.iconPosition === "left" && o.text ? o.iconGap : 0,
rgap: o.iconPosition === "right" ? o.iconGap : 0,
tgap: o.iconPosition === "top" ? o.iconGap : 0,
bgap: o.iconPosition === "bottom" ? o.iconGap : 0,
};
- var items = [this.icon, BI.extend({el: this.text}, gapContainer)];
- if (isVertical(o.iconPosition)) {
- layoutType = "bi.vertical";
- }
+
+ var items = [this.icon, BI.extend({ el: this.text }, gapContainer)];
if (o.iconPosition === "right" || o.iconPosition === "bottom") {
- items = [BI.extend({el: this.text}, gapContainer), this.icon];
+ items.reverse();
}
- // bi.center_adapt 作用:让 hgap 不影响 iconGap。
- BI.createWidget({
- type: "bi.center_adapt",
- horizontalAlign: o.textAlign,
- element: this,
- hgap: o.hgap,
- vgap: o.vgap,
- items: [{
- type: layoutType,
- horizontalAlign: "center",
- verticalAlign: "middle",
- items: items,
- }],
- });
-
- var classArr = ["block", "clear", "ghost", "plain", "loading", "light"];
- // 如果 options 对应的属性为 true 则给元素添加 class
- BI.each(classArr, function (_, clz) {
- if (BI.get(o, clz) === true) {
- self.element.addClass(clz);
- }
- });
- if (o.minWidth > 0) {
- this.element.css({ "min-width": BI.pixFormat(o.minWidth) });
- }
+ return [{
+ type: isVertical(o.iconPosition) ? "bi.vertical" : "bi.horizontal",
+ horizontalAlign: "center",
+ verticalAlign: "middle",
+ items,
+ }];
},
doClick: function () {
@@ -194,6 +208,7 @@
loading: function () {
this._loading = true;
this.element.addClass("loading");
+ !this._iconRendered && this.containerRef.populate(this.generateItems(true));
if (this.icon.loading) {
this.icon.loading();
} else {
@@ -228,6 +243,7 @@
setIcon: function (cls) {
var o = this.options;
+ !this._iconRendered && this.containerRef.populate(this.generateItems(true));
if (this.icon && o.iconCls !== cls) {
this.icon.element.removeClass(o.iconCls).addClass(cls);
o.iconCls = cls;
diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js
index 95e863430..ac9e779e9 100644
--- a/src/base/single/editor/editor.js
+++ b/src/base/single/editor/editor.js
@@ -344,11 +344,6 @@ BI.Editor = BI.inherit(BI.Single, {
return this.editor.isValid();
},
- setValid: function (b) {
- this.editor.setValid(b);
- this._checkError();
- },
-
destroyed: function () {
BI.Bubbles.remove(this.getName());
},
diff --git a/src/case/calendar/calendar.js b/src/case/calendar/calendar.js
index bfd76e2b4..0a9d40e05 100644
--- a/src/case/calendar/calendar.js
+++ b/src/case/calendar/calendar.js
@@ -156,12 +156,21 @@ BI.Calendar = BI.inherit(BI.Widget, {
return BI.map(items, function (i, item) {
return BI.map(item, function (j, td) {
var month = td.lastMonth ? o.month - 1 : (td.nextMonth ? o.month + 1 : o.month);
+ var year = o.year;
+ if (month > 12) {
+ month = 1;
+ year++;
+ } else if (month < 1) {
+ month = 12;
+ year--;
+ }
return BI.extend(td, {
type: "bi.calendar_date_item",
once: false,
forceSelected: true,
- value: o.year + "-" + month + "-" + td.text,
- disabled: td.lastMonth || td.nextMonth || td.disabled,
+ value: year + "-" + month + "-" + td.text,
+ disabled: td.disabled,
+ cls: td.lastMonth || td.nextMonth ? "not-current-month-day" : "",
lgap: 2,
rgap: 2,
tgap: 4,
diff --git a/src/case/linearsegment/linear.segment.js b/src/case/linearsegment/linear.segment.js
index 3c1b677c3..b0b00f95b 100644
--- a/src/case/linearsegment/linear.segment.js
+++ b/src/case/linearsegment/linear.segment.js
@@ -3,9 +3,6 @@ BI.LinearSegment = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-linear-segment",
items: [],
- layouts: [{
- type: "bi.center"
- }],
height: 30
},
@@ -13,11 +10,14 @@ BI.LinearSegment = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.button_group",
- items: BI.createItems(o.items, {
+ items: [BI.createItems(o.items, {
type: "bi.linear_segment_button",
height: o.height
- }),
- layouts: o.layouts,
+ })],
+ layouts: [{
+ type: "bi.table",
+ columnSize: BI.makeArrayByArray(o.items, "fill"),
+ }],
value: o.value,
listeners: [{
eventName: "__EVENT_CHANGE__",
diff --git a/src/case/segment/segment.js b/src/case/segment/segment.js
index dac7754d1..3f323ffb6 100644
--- a/src/case/segment/segment.js
+++ b/src/case/segment/segment.js
@@ -10,7 +10,7 @@ BI.Segment = BI.inherit(BI.Widget, {
return BI.extend(BI.Segment.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-segment",
items: [],
- height: 24
+ height: 24,
});
},
_init: function () {
@@ -20,16 +20,15 @@ BI.Segment = BI.inherit(BI.Widget, {
element: this,
type: "bi.button_group",
value: o.value,
- items: BI.createItems(o.items, {
+ items: [BI.createItems(o.items, {
type: "bi.segment_button",
height: BI.toPix(o.height, 2),
- whiteSpace: o.whiteSpace
- }),
- layout: [
- {
- type: "bi.center"
- }
- ]
+ whiteSpace: o.whiteSpace,
+ })],
+ layouts: [{
+ type: "bi.table",
+ columnSize: BI.makeArrayByArray(o.items, "fill"),
+ }],
});
this.buttonGroup.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
@@ -58,7 +57,7 @@ BI.Segment = BI.inherit(BI.Widget, {
getValue: function () {
return this.buttonGroup.getValue();
- }
+ },
});
BI.Segment.EVENT_CHANGE = "EVENT_CHANGE";
-BI.shortcut("bi.segment", BI.Segment);
\ No newline at end of file
+BI.shortcut("bi.segment", BI.Segment);
diff --git a/src/core/4.widget.js b/src/core/4.widget.js
index 3adf1f5f4..e541191df 100644
--- a/src/core/4.widget.js
+++ b/src/core/4.widget.js
@@ -364,7 +364,7 @@
var workerMode = BI.Providers.getProvider("bi.provider.system").getWorkerMode();
var render = BI.isFunction(this.options.render) ? this.options.render : (workerMode ? (this.$render || this.render) : this.render);
var els = render && render.call(this);
- els = this.options.configRender ? this.options.configRender(els) : els;
+ els = this.options.configRender ? this.options.configRender.call(this, els) : els;
els = BI.Plugin.getRender(this.options.type, els);
if (BI.isPlainObject(els)) {
els = [els];
diff --git a/src/core/platform/web/function.js b/src/core/platform/web/function.js
index 230fc6ad5..1c74836e2 100644
--- a/src/core/platform/web/function.js
+++ b/src/core/platform/web/function.js
@@ -125,5 +125,17 @@ BI._.extend(BI, {
}
}
return false;
+ },
+
+ getSafariVersion: function () {
+ if (!_global.navigator) {
+ return 0;
+ }
+ var agent = navigator.userAgent.toLowerCase();
+ var version = agent.match(/version\/([\d.]+)/);
+ if (version && version[1]) {
+ return version[1] * 1;
+ }
+ return 0;
}
});
diff --git a/src/core/wrapper/layout.js b/src/core/wrapper/layout.js
index 8ca284d30..d2926385d 100644
--- a/src/core/wrapper/layout.js
+++ b/src/core/wrapper/layout.js
@@ -16,7 +16,7 @@ BI.Layout = BI.inherit(BI.Widget, {
scrolly: false, // true, false
items: [],
innerHgap: 0,
- innerVgap: 0
+ innerVgap: 0,
};
},
@@ -727,6 +727,25 @@ BI.Layout = BI.inherit(BI.Widget, {
});
},
+ getRowColumnCls: function (rowIndex, colIndex, lastRowIndex, lastColIndex) {
+ var cls = "";
+ if (rowIndex === 0) {
+ cls += " first-row";
+ } else if (rowIndex === lastRowIndex) {
+ cls += " last-row";
+ }
+ if (colIndex === 0) {
+ cls += " first-col";
+ } else if (colIndex === lastColIndex) {
+ cls += " last-col";
+ }
+ BI.isOdd(rowIndex + 1) ? (cls += " odd-row") : (cls += " even-row");
+ BI.isOdd(colIndex + 1) ? (cls += " odd-col") : (cls += " even-col");
+ cls += " center-element";
+
+ return cls;
+ },
+
removeWidget: function (nameOrWidget) {
var removeIndex, self = this;
if (BI.isWidget(nameOrWidget)) {
diff --git a/src/core/wrapper/layout/layout.division.js b/src/core/wrapper/layout/layout.division.js
index 988d118be..307166283 100644
--- a/src/core/wrapper/layout/layout.division.js
+++ b/src/core/wrapper/layout/layout.division.js
@@ -28,44 +28,31 @@ BI.DivisionLayout = BI.inherit(BI.Layout, {
},
stroke: function (items) {
- var o = this.options;
+ var o = this.options, self = this;
var rows = o.rows || o.items.length, columns = o.columns || ((o.items[0] && o.items[0].length) | 0);
var map = BI.makeArray(rows), widths = {}, heights = {};
- function firstElement (item, row, col) {
- if (row === 0) {
- item.addClass("first-row");
- }
- if (col === 0) {
- item.addClass("first-col");
- }
- item.addClass(BI.isOdd(row + 1) ? "odd-row" : "even-row");
- item.addClass(BI.isOdd(col + 1) ? "odd-col" : "even-col");
- item.addClass("center-element");
+ function firstElement (item, cls) {
+ item.addClass(cls);
+
+ return item;
}
- function firstObject (item, row, col) {
- var cls = "";
- if (row === 0) {
- cls += " first-row";
- }
- if (col === 0) {
- cls += " first-col";
- }
- BI.isOdd(row + 1) ? (cls += " odd-row") : (cls += " even-row");
- BI.isOdd(col + 1) ? (cls += " odd-col") : (cls += " even-col");
- item.cls = (item.cls || "") + cls + " center-element";
+ function firstObject (item, cls) {
+ item.cls = (item.cls || "") + cls;
+
+ return item;
}
- function first (item, row, col) {
+ function first (item, cls) {
if (item instanceof BI.Widget) {
- firstElement(item.element, row, col);
+ firstElement(item.element, cls);
} else if (item.el instanceof BI.Widget) {
- firstElement(item.el.element, row, col);
+ firstElement(item.el.element, cls);
} else if (item.el) {
- firstObject(item.el, row, col);
+ firstObject(item.el, cls);
} else {
- firstObject(item, row, col);
+ firstObject(item, cls);
}
}
@@ -79,6 +66,7 @@ BI.DivisionLayout = BI.inherit(BI.Layout, {
heights[j] = (heights[j] || 0) + item.height;
map[i][j] = el;
});
+
return;
}
widths[item.row] = (widths[item.row] || 0) + item.width;
@@ -106,7 +94,7 @@ BI.DivisionLayout = BI.inherit(BI.Layout, {
if (j == o.columns - 1) {
w.element.css({right: "0%"});
}
- first(w, i, j);
+ first(w, self.getRowColumnCls(i, j, rows - 1, columns - 1));
totalW += map[i][j].width;
}
}
diff --git a/src/core/wrapper/layout/layout.grid.js b/src/core/wrapper/layout/layout.grid.js
index a81c31681..53e4cf00b 100644
--- a/src/core/wrapper/layout/layout.grid.js
+++ b/src/core/wrapper/layout/layout.grid.js
@@ -36,29 +36,16 @@ BI.GridLayout = BI.inherit(BI.Layout, {
els[i] = [];
}
- function firstElement (item, row, col) {
- if (row === 0) {
- item.addClass("first-row");
- }
- if (col === 0) {
- item.addClass("first-col");
- }
- item.addClass(BI.isOdd(row + 1) ? "odd-row" : "even-row");
- item.addClass(BI.isOdd(col + 1) ? "odd-col" : "even-col");
- item.addClass("center-element");
+ function firstElement (item, cls) {
+ item.addClass(cls);
+
+ return item;
}
- function firstObject (item, row, col) {
- var cls = "";
- if (row === 0) {
- cls += " first-row";
- }
- if (col === 0) {
- cls += " first-col";
- }
- BI.isOdd(row + 1) ? (cls += " odd-row") : (cls += " even-row");
- BI.isOdd(col + 1) ? (cls += " odd-col") : (cls += " even-col");
- item.cls = (item.cls || "") + cls + " center-element";
+ function firstObject (item, cls) {
+ item.cls = (item.cls || "") + cls;
+
+ return item;
}
function first (item, row, col) {
@@ -89,7 +76,7 @@ BI.GridLayout = BI.inherit(BI.Layout, {
type: "bi.layout"
});
}
- first(els[i][j], i, j);
+ first(els[i][j], self.getRowColumnCls(i, j, rows - 1, columns - 1));
els[i][j].element.css({
position: "absolute",
top: height * i + "%",
diff --git a/src/core/wrapper/layout/layout.table.js b/src/core/wrapper/layout/layout.table.js
index 6352672c2..51d6eeb14 100644
--- a/src/core/wrapper/layout/layout.table.js
+++ b/src/core/wrapper/layout/layout.table.js
@@ -16,7 +16,7 @@ BI.TableLayout = BI.inherit(BI.Layout, {
// rowSize: 30, // or [30,30,30]
hgap: 0,
vgap: 0,
- items: []
+ items: [],
});
},
render: function () {
@@ -45,57 +45,43 @@ BI.TableLayout = BI.inherit(BI.Layout, {
return self._optimiseGap(size);
}).join(" ") : BI.range(o.items.length).fill(this._optimiseGap(o.rowSize)).join(" "),
"grid-row-gap": this._optimiseGap(o.vgap),
- "grid-column-gap": this._optimiseGap(o.hgap)
+ "grid-column-gap": this._optimiseGap(o.hgap),
});
}
+
return {
type: "bi.default",
ref: function (_ref) {
self.layout = _ref;
},
- items: this._formatItems(items)
+ items: this._formatItems(items),
};
},
_formatItems: function (items) {
- var o = this.options;
+ var o = this.options, self = this;
+
+ function firstElement (item, cls) {
+ item.addClass(cls);
- function firstElement (item, row, col) {
- if (row === 0) {
- item.addClass("first-row");
- }
- if (col === 0) {
- item.addClass("first-col");
- }
- item.addClass(BI.isOdd(row + 1) ? "odd-row" : "even-row");
- item.addClass(BI.isOdd(col + 1) ? "odd-col" : "even-col");
- item.addClass("center-element");
return item;
}
- function firstObject (item, row, col) {
- var cls = "";
- if (row === 0) {
- cls += " first-row";
- }
- if (col === 0) {
- cls += " first-col";
- }
- BI.isOdd(row + 1) ? (cls += " odd-row") : (cls += " even-row");
- BI.isOdd(col + 1) ? (cls += " odd-col") : (cls += " even-col");
- item.cls = (item.cls || "") + cls + " center-element";
+ function firstObject (item, cls) {
+ item.cls = (item.cls || "") + cls;
+
return item;
}
- function first (item, row, col) {
+ function first (item, cls) {
if (item instanceof BI.Widget) {
- return firstElement(item.element, row, col);
+ return firstElement(item.element, cls);
} else if (item.el instanceof BI.Widget) {
- return firstElement(item.el.element, row, col);
+ return firstElement(item.el.element, cls);
} else if (item.el) {
- return firstObject(item.el, row, col);
+ return firstObject(item.el, cls);
} else {
- return firstObject(item, row, col);
+ return firstObject(item, cls);
}
}
@@ -105,18 +91,20 @@ BI.TableLayout = BI.inherit(BI.Layout, {
columnSize: ["fill"],
horizontalAlign: o.horizontalAlign,
verticalAlign: o.verticalAlign,
- items: [BI.formatEL(item)]
+ items: [BI.formatEL(item)],
};
}
- return BI.reduce(items, function (row, result, i) {
- return result.concat(BI.map(row, function (j, item) {
+ return BI.reduce(items, function (rowItems, result, rowIndex) {
+ return result.concat(BI.map(rowItems, function (colIndex, item) {
+ var cls = self.getRowColumnCls(rowIndex, colIndex, items.length - 1, rowItems.length - 1);
if (BI.isEmpty(item)) {
return first(wrapLayout({
- type: "bi.layout"
- }), i, j);
+ type: "bi.layout",
+ }), cls);
}
- return first(wrapLayout(item), i, j);
+
+ return first(wrapLayout(item), cls);
}));
}, []);
},
@@ -127,6 +115,6 @@ BI.TableLayout = BI.inherit(BI.Layout, {
populate: function (items) {
this.layout.populate(this._formatItems(items));
- }
+ },
});
BI.shortcut("bi.table", BI.TableLayout);
diff --git a/src/core/wrapper/layout/layout.tape.js b/src/core/wrapper/layout/layout.tape.js
index 185af813d..9303f5865 100644
--- a/src/core/wrapper/layout/layout.tape.js
+++ b/src/core/wrapper/layout/layout.tape.js
@@ -217,7 +217,7 @@ BI.VTapeLayout = BI.inherit(BI.Layout, {
top: self._optimiseGap(top[i] + self._optimiseItemTgap(item) + self._optimiseItemVgap(item) + o.vgap + o.tgap)
});
- if (rowSize === "" || rowSize === "fill") {
+ if (BI.isNull(rowSize) || rowSize === "" || rowSize === "fill") {
return true;
}
});
@@ -235,7 +235,7 @@ BI.VTapeLayout = BI.inherit(BI.Layout, {
bottom: self._optimiseGap(bottom[i] + self._optimiseItemBgap(item) + self._optimiseItemVgap(item) + o.vgap + o.bgap)
});
- if (rowSize === "" || rowSize === "fill") {
+ if (BI.isNull(rowSize) || rowSize === "" || rowSize === "fill") {
return true;
}
});
diff --git a/src/core/wrapper/layout/layout.window.js b/src/core/wrapper/layout/layout.window.js
index c7d14623c..a6e6c6a26 100644
--- a/src/core/wrapper/layout/layout.window.js
+++ b/src/core/wrapper/layout/layout.window.js
@@ -35,7 +35,7 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
},
stroke: function (items) {
- var o = this.options;
+ var o = this.options, self = this;
if (BI.isNumber(o.rowSize)) {
o.rowSize = BI.makeArray(o.items.length, 1 / o.items.length);
}
@@ -43,29 +43,16 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
o.columnSize = BI.makeArray(o.items[0].length, 1 / o.items[0].length);
}
- function firstElement (item, row, col) {
- if (row === 0) {
- item.addClass("first-row");
- }
- if (col === 0) {
- item.addClass("first-col");
- }
- item.addClass(BI.isOdd(row + 1) ? "odd-row" : "even-row");
- item.addClass(BI.isOdd(col + 1) ? "odd-col" : "even-col");
- item.addClass("center-element");
+ function firstElement (item, cls) {
+ item.addClass(cls);
+
+ return item;
}
- function firstObject (item, row, col) {
- var cls = "";
- if (row === 0) {
- cls += " first-row";
- }
- if (col === 0) {
- cls += " first-col";
- }
- BI.isOdd(row + 1) ? (cls += " odd-row") : (cls += " even-row");
- BI.isOdd(col + 1) ? (cls += " odd-col") : (cls += " even-col");
- item.cls = (item.cls || "") + cls + " center-element";
+ function firstObject (item, cls) {
+ item.cls = (item.cls || "") + cls;
+
+ return item;
}
function first (item, row, col) {
@@ -109,7 +96,7 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
h = this._optimiseGap(o.rowSize[i]);
}
wi.element.css({top: t, height: h});
- first(wi, i, j);
+ first(wi, self.getRowColumnCls(i, j, o.rows - 1, o.columns - 1));
}
if (!BI.isNumber(o.rowSize[i])) {
break;
@@ -127,7 +114,7 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
h = this._optimiseGap(o.rowSize[i]);
}
wi.element.css({bottom: b, height: h});
- first(wi, i, j);
+ first(wi, self.getRowColumnCls(i, j, o.rows - 1, o.columns - 1));
}
if (!BI.isNumber(o.rowSize[i])) {
break;
@@ -145,7 +132,7 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
w = this._optimiseGap(o.columnSize[j]);
}
wi.element.css({left: l, width: w});
- first(wi, i, j);
+ first(wi, self.getRowColumnCls(i, j, o.rows - 1, o.columns - 1));
}
if (!BI.isNumber(o.columnSize[j])) {
break;
@@ -163,7 +150,7 @@ BI.WindowLayout = BI.inherit(BI.Layout, {
w = this._optimiseGap(o.columnSize[j]);
}
wi.element.css({right: r, width: w});
- first(wi, i, j);
+ first(wi, self.getRowColumnCls(i, j, o.rows - 1, o.columns - 1));
}
if (!BI.isNumber(o.columnSize[j])) {
break;
diff --git a/src/less/base/segment/button.segment.less b/src/less/base/segment/button.segment.less
index 451d65f33..5fdd04264 100644
--- a/src/less/base/segment/button.segment.less
+++ b/src/less/base/segment/button.segment.less
@@ -10,7 +10,7 @@
.line-segment-button-line {
.transition(background 0.3s);
}
- &.active, &:active {
+ &.active, &:active:not(.disabled) {
font-weight: bold;
}
}
diff --git a/src/less/base/segment/segment.less b/src/less/base/segment/segment.less
index f106ddc75..08fec037a 100644
--- a/src/less/base/segment/segment.less
+++ b/src/less/base/segment/segment.less
@@ -7,17 +7,24 @@
border-top: 1px solid @color-bi-split-segment;
border-bottom: 1px solid @color-bi-split-segment;
}
- & > .first-element{
+ & > .first-col{
border-left: 1px solid @color-bi-split-segment;
.border-corner-radius(2px,0px,0px,2px)
}
- & > .last-element{
+ & > .last-col{
.border-corner-radius(0px,2px,2px,0px)
}
- &.disabled > .center-element, &.disabled > .first-element{
+ &.disabled > .center-element, &.disabled > .first-col{
border-color: @color-bi-split-disabled-segment;
}
}
+.bi-linear-segment {
+ &.disabled {
+ .bi-high-light-background {
+ background-color: @color-bi-background-dark-gray !important;
+ }
+ }
+}
.bi-theme-dark {
.bi-segment {
@@ -27,7 +34,7 @@
border-top: 1px solid @color-bi-split-segment-theme-dark;
border-bottom: 1px solid @color-bi-split-segment-theme-dark;
}
- & > .first-element{
+ & > .first-col{
border-left: 1px solid @color-bi-split-segment-theme-dark;
}
}
diff --git a/src/less/base/single/button/button.less b/src/less/base/single/button/button.less
index b9aad6d1a..d404edd24 100644
--- a/src/less/base/single/button/button.less
+++ b/src/less/base/single/button/button.less
@@ -502,6 +502,7 @@ body .bi-button, #body .bi-button {
&.button-error.disabled,
&.button-warning.disabled {
&, &.base-disabled {
+ color: @color-bi-text-disabled-button-theme-dark !important;
border-color: @color-bi-border-dark-gray-line-theme-dark !important;
background-color: fade(@color-bi-background-disabled-button-theme-dark, 20%) !important;
@ieColor: argb(fade(@color-bi-background-disabled-button-theme-dark, 20%));
diff --git a/src/less/base/tree/tree.display.less b/src/less/base/tree/tree.display.less
index 2343d4054..6c483feac 100644
--- a/src/less/base/tree/tree.display.less
+++ b/src/less/base/tree/tree.display.less
@@ -17,4 +17,12 @@
background-color: inherit;
.opacity(1);
}
+}
+
+.bi-theme-dark {
+ .bi-display-tree {
+ .ztree * {
+ color: @color-bi-text-display-tree-theme-dark;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/less/base/tree/ztree.less b/src/less/base/tree/ztree.less
index a75904add..e9eee2c97 100644
--- a/src/less/base/tree/ztree.less
+++ b/src/less/base/tree/ztree.less
@@ -90,6 +90,12 @@
}
}
+ .ztree li span.button.chk {
+ &.bi-checkbox {
+ border-color: @color-bi-border-dark-line-theme-dark;
+ }
+ }
+
&.bi-half-button {
border: 1px solid @color-bi-border-hover-active-checkbox-theme-dark;
}
diff --git a/src/less/case/calendar/calendar.less b/src/less/case/calendar/calendar.less
new file mode 100644
index 000000000..388bcf9e3
--- /dev/null
+++ b/src/less/case/calendar/calendar.less
@@ -0,0 +1,5 @@
+@import "../../index.less";
+
+.bi-calendar-date-item.not-current-month-day {
+ color: @color-bi-text-disabled-button !important;
+}
\ No newline at end of file
diff --git a/src/less/lib/colors.less b/src/less/lib/colors.less
index dca2a9989..fd429ac08 100644
--- a/src/less/lib/colors.less
+++ b/src/less/lib/colors.less
@@ -13,6 +13,7 @@
@color-bi-text-black-theme-dark: @font-color-normal-theme-dark;
//灰色字体颜色
@color-bi-text-gray: @font-color-gray;
+@color-bi-text-gray-theme-dark: @font-color-gray-theme-dark;
//浅灰色字体
@color-bi-text-light-gray: @font-color-light-gray;
//深色主题浅灰色字体
diff --git a/src/less/lib/constant.less b/src/less/lib/constant.less
index 17421baf0..fa69a4783 100644
--- a/src/less/lib/constant.less
+++ b/src/less/lib/constant.less
@@ -167,6 +167,7 @@
@font-color-light-disabled: @color-dark-gray;
@font-color-light-disabled-theme-dark: @color-dark-gray-theme-dark;
@font-color-gray: #999999;
+@font-color-gray-theme-dark: @color-gray-theme-dark;
@font-color-white: @color-white;
@font-color-white-theme-dark: @color-white-theme-dark;
@font-color-light-highlight: @color-light-blue-100;
diff --git a/src/less/lib/theme.less b/src/less/lib/theme.less
index ae3fd45bb..50339345c 100644
--- a/src/less/lib/theme.less
+++ b/src/less/lib/theme.less
@@ -125,6 +125,7 @@
@color-bi-text-error-clear-button: @color-bi-text-failure;
@color-bi-text-error-ghost-button: @color-bi-text-failure;
@color-bi-text-disabled-button: @color-bi-text-disabled;
+@color-bi-text-disabled-button-theme-dark: @color-bi-text-disabled-theme-dark;
@color-bi-background-disabled-button: @color-bi-background-light-disabled;
@color-bi-border-disabled-button: @color-bi-border-disabled;
@color-bi-text-disabled-ignore-button: @color-bi-text-disabled;
@@ -233,6 +234,7 @@
@color-bi-color-error-input-text-area: @color-bi-text-failure;
// tree
@color-bi-text-display-tree: @color-bi-text-gray;
+@color-bi-text-display-tree-theme-dark: @color-bi-text-gray-theme-dark;
@color-bi-border-tree-expander-popup-line: @color-bi-border-dark-gray-line;
@color-bi-border-tree-expander-popup-line-theme-dark: @color-bi-border-dark-gray-line-theme-dark;
// popup
diff --git a/src/less/widget/multiselect/trigger/button.checkselected.less b/src/less/widget/multiselect/trigger/button.checkselected.less
index 35c00dec0..4a36315b0 100644
--- a/src/less/widget/multiselect/trigger/button.checkselected.less
+++ b/src/less/widget/multiselect/trigger/button.checkselected.less
@@ -2,8 +2,8 @@
.bi-multi-select-check-selected-button {
z-index: 1;
- min-width: 16px;
- .border-radius(8px);
+ .border-radius(50%);
+
&:active {
color: @color-bi-text-highlight;
background-color: @color-bi-background-multi-select-trigger-check-selected;
diff --git a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less
index 55207b67a..5393d7b24 100644
--- a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less
+++ b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less
@@ -7,6 +7,7 @@
}
.trigger-check-text {
.border-radius(8px);
+ .border-radius(calc(var(--css-scale, 1) * 8px));
z-index: 1;
&:active {
background-color: @color-bi-background-multi-select-trigger-check-selected;
diff --git a/src/widget/date/calendar/combo.month.date.js b/src/widget/date/calendar/combo.month.date.js
index 82068ceac..aac5a7fc0 100644
--- a/src/widget/date/calendar/combo.month.date.js
+++ b/src/widget/date/calendar/combo.month.date.js
@@ -48,6 +48,7 @@ BI.MonthDateCombo = BI.inherit(BI.Trigger, {
el: {
type: "bi.vertical",
hgap: 6,
+ vgap: 5,
items: [this.popup]
}
}
diff --git a/src/widget/downlist/combo.downlist.js b/src/widget/downlist/combo.downlist.js
index cf983dfc4..8b9aa4c0c 100644
--- a/src/widget/downlist/combo.downlist.js
+++ b/src/widget/downlist/combo.downlist.js
@@ -17,7 +17,7 @@
text: item.text,
icon: item.icon,
cls: item.cls,
- iconCls1: item.iconCls1,
+ iconCls1: item.iconCls1,
value: item.value
};
}
@@ -25,7 +25,7 @@
});
return result;
}
-
+
/**
* Created by roy on 15/8/14.
*/
@@ -41,16 +41,17 @@
container: null,
stopPropagation: false,
el: {},
+ popup: {},
minWidth: 140,
maxHeight: 1000,
destroyWhenHide: false
});
},
-
+
_init: function () {
BI.DownListCombo.superclass._init.apply(this, arguments);
var self = this, o = this.options;
-
+
this.downlistcombo = BI.createWidget({
element: this,
type: "bi.combo",
@@ -63,12 +64,13 @@
belowMouse: o.belowMouse,
stopPropagation: o.stopPropagation,
destroyWhenHide: o.destroyWhenHide,
- el: BI.createWidget(o.el, {
+ el: {
type: "bi.icon_trigger",
extraCls: o.iconCls,
width: o.width,
- height: o.height
- }),
+ height: o.height,
+ ...o.el
+ },
popup: {
el: {
type: "bi.down_list_popup",
@@ -94,39 +96,40 @@
},
stopPropagation: o.stopPropagation,
maxHeight: o.maxHeight,
- minWidth: o.minWidth
+ minWidth: o.minWidth,
+ ...o.popup
}
});
-
+
this.downlistcombo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
self.fireEvent(BI.DownListCombo.EVENT_BEFORE_POPUPVIEW);
});
},
-
+
hideView: function () {
this.downlistcombo.hideView();
},
-
+
showView: function (e) {
this.downlistcombo.showView(e);
},
-
+
populate: function (items) {
this.popupView.populate(items);
},
-
+
setValue: function (v) {
this.popupView.setValue(v);
},
-
+
getValue: function () {
return this.popupView.getValue();
},
-
+
adjustWidth: function () {
this.downlistcombo.adjustWidth();
},
-
+
adjustHeight: function () {
this.downlistcombo.adjustHeight();
}
@@ -134,6 +137,6 @@
BI.DownListCombo.EVENT_CHANGE = "EVENT_CHANGE";
BI.DownListCombo.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE";
BI.DownListCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
-
+
BI.shortcut("bi.down_list_combo", BI.DownListCombo);
}());
diff --git a/src/widget/editor/editor.text.js b/src/widget/editor/editor.text.js
index 4525a2a7b..19f51fd73 100644
--- a/src/widget/editor/editor.text.js
+++ b/src/widget/editor/editor.text.js
@@ -138,10 +138,6 @@ BI.TextEditor = BI.inherit(BI.Widget, {
return this.editor.isValid();
},
- setValid: function (b) {
- this.editor.setValid(b);
- },
-
setValue: function (v) {
this.editor.setValue(v);
},
diff --git a/src/widget/multilayerselecttree/multilayerselecttree.combo.js b/src/widget/multilayerselecttree/multilayerselecttree.combo.js
index 9d334bffd..ec2a9a393 100644
--- a/src/widget/multilayerselecttree/multilayerselecttree.combo.js
+++ b/src/widget/multilayerselecttree/multilayerselecttree.combo.js
@@ -260,11 +260,11 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, {
},
focus: function () {
- this.trigger.focus();
+ this.trigger ? this.trigger.focus() : this.textTrigger.focus();
},
blur: function () {
- this.trigger.blur();
+ this.trigger ? this.trigger.blur() : this.textTrigger.blur();
},
showView: function () {
@@ -272,7 +272,7 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, {
},
setWaterMark: function (v) {
- this.trigger.setWaterMark(v);
+ this.trigger ? this.trigger.setWaterMark(v) : this.textTrigger.setWaterMark(v);
}
});
diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js
index 1734124af..ce84a730e 100644
--- a/src/widget/multiselect/multiselect.combo.nobar.js
+++ b/src/widget/multiselect/multiselect.combo.nobar.js
@@ -160,6 +160,7 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, {
itemsCreator: o.itemsCreator,
itemHeight: o.itemHeight,
valueFormatter: o.valueFormatter,
+ itemFormatter: o.itemFormatter,
onLoaded: function () {
BI.nextTick(function () {
self.combo.adjustWidth();
diff --git a/src/widget/multitree/trigger/multi.tree.button.checkselected.js b/src/widget/multitree/trigger/multi.tree.button.checkselected.js
index 59522d784..5efd65b2e 100644
--- a/src/widget/multitree/trigger/multi.tree.button.checkselected.js
+++ b/src/widget/multitree/trigger/multi.tree.button.checkselected.js
@@ -19,8 +19,8 @@ BI.MultiTreeCheckSelectedButton = BI.inherit(BI.Single, {
this.indicator = BI.createWidget({
type: "bi.icon_button",
cls: "check-font trigger-check-selected icon-size-12",
- width: 15,
- height: 15,
+ width: 16,
+ height: 16,
stopPropagation: true
});
@@ -31,7 +31,6 @@ BI.MultiTreeCheckSelectedButton = BI.inherit(BI.Single, {
hgap: 4,
text: BI.i18nText("BI-Check_Selected"),
textAlign: "center",
- textHeight: 15
});
this.checkSelected.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
@@ -65,4 +64,4 @@ BI.MultiTreeCheckSelectedButton = BI.inherit(BI.Single, {
});
BI.MultiTreeCheckSelectedButton.EVENT_CHANGE = "EVENT_CHANGE";
-BI.shortcut("bi.multi_tree_check_selected_button", BI.MultiTreeCheckSelectedButton);
\ No newline at end of file
+BI.shortcut("bi.multi_tree_check_selected_button", BI.MultiTreeCheckSelectedButton);
diff --git a/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js b/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js
index 9410d9190..956e18552 100644
--- a/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js
+++ b/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js
@@ -19,14 +19,6 @@ BI.TextValueDownListCombo = BI.inherit(BI.Widget, {
if(BI.isNotNull(o.value)) {
value = this._digest(o.value);
}
- this.trigger = BI.createWidget({
- type: "bi.down_list_select_text_trigger",
- cls: "text-value-down-list-trigger",
- height: BI.toPix(o.height, 2),
- items: o.items,
- text: o.text,
- value: value
- });
this.combo = BI.createWidget({
type: "bi.down_list_combo",
@@ -35,7 +27,17 @@ BI.TextValueDownListCombo = BI.inherit(BI.Widget, {
adjustLength: 2,
width: BI.toPix(o.width, 2),
height: BI.toPix(o.height, 2),
- el: this.trigger,
+ el: {
+ type: "bi.down_list_select_text_trigger",
+ ref: function (_ref) {
+ self.trigger = _ref;
+ },
+ cls: "text-value-down-list-trigger",
+ height: BI.toPix(o.height, 2),
+ items: o.items,
+ text: o.text,
+ value: value
+ },
value: BI.isNull(value) ? [] : [value],
items: BI.deepClone(o.items)
});
@@ -79,7 +81,7 @@ BI.TextValueDownListCombo = BI.inherit(BI.Widget, {
setValue: function (v) {
v = this._digest(v);
this.combo.setValue([v]);
- this.trigger.setValue(v);
+ this.trigger?.setValue(v);
},
getValue: function () {
@@ -94,4 +96,4 @@ BI.TextValueDownListCombo = BI.inherit(BI.Widget, {
}
});
BI.TextValueDownListCombo.EVENT_CHANGE = "EVENT_CHANGE";
-BI.shortcut("bi.text_value_down_list_combo", BI.TextValueDownListCombo);
\ No newline at end of file
+BI.shortcut("bi.text_value_down_list_combo", BI.TextValueDownListCombo);
diff --git a/src/widget/year/combo.year.js b/src/widget/year/combo.year.js
index 558a6c62a..d2d68d19b 100644
--- a/src/widget/year/combo.year.js
+++ b/src/widget/year/combo.year.js
@@ -141,7 +141,7 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, {
items: [{
el: {
type: "bi.icon_button",
- cls: "bi-trigger-icon-button",
+ cls: "bi-trigger-icon-button date-change-h-font",
width: this._const.iconWidth,
height: BI.toPix(o.height, border),
ref: function () {
diff --git a/src/widget/yearmonth/combo.yearmonth.js b/src/widget/yearmonth/combo.yearmonth.js
index 4a85db0f2..82d6e3ca8 100644
--- a/src/widget/yearmonth/combo.yearmonth.js
+++ b/src/widget/yearmonth/combo.yearmonth.js
@@ -141,7 +141,7 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, {
items: [{
el: {
type: "bi.icon_button",
- cls: "bi-trigger-icon-button",
+ cls: "bi-trigger-icon-button date-change-h-font",
width: BI.toPix(o.height, border),
height: BI.toPix(o.height, border),
ref: function () {
diff --git a/src/widget/yearquarter/combo.yearquarter.js b/src/widget/yearquarter/combo.yearquarter.js
index 455fd9901..1403d254f 100644
--- a/src/widget/yearquarter/combo.yearquarter.js
+++ b/src/widget/yearquarter/combo.yearquarter.js
@@ -144,7 +144,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, {
items: [{
el: {
type: "bi.icon_button",
- cls: "bi-trigger-icon-button",
+ cls: "bi-trigger-icon-button date-change-h-font",
width: this._consts.iconWidth,
height: BI.toPix(o.height, border),
ref: function () {
@@ -169,7 +169,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, {
}
switch (type) {
case BI.DynamicYearQuarterCombo.Dynamic:
- this.comboWrapper.resize();
+ this.changeIcon.setVisible(true);
break;
default:
this.changeIcon.setVisible(false);
diff --git a/typescript/core/base.ts b/typescript/core/base.ts
index b5a3ce55c..6182a0833 100644
--- a/typescript/core/base.ts
+++ b/typescript/core/base.ts
@@ -148,9 +148,9 @@ export interface _base {
takeRight: (array: T[], n: number) => T[];
- findIndex: (array: any[], value: any, callback?: Function | object | string, thisArg?: any) => number;
+ findIndex: (array: T[], predicate?: ((index: number, item: T, array: T[]) => any) | object | string, thisArg?: any) => number;
- findLastIndex: (array: any[], value: any, callback?: Function | object | string, thisArg?: any) => number;
+ findLastIndex: (array: T[], predicate?: ((index: number, item: T, array: T[]) => any) | object | string, thisArg?: any) => number;
makeArray: (length: number, value?: T) => number[] | T[];
diff --git a/typescript/core/platform/web/function.ts b/typescript/core/platform/web/function.ts
index 95b2d29ef..406eb95ee 100644
--- a/typescript/core/platform/web/function.ts
+++ b/typescript/core/platform/web/function.ts
@@ -9,4 +9,5 @@ export type _function = {
isMac: () => boolean;
isWindows: () => boolean;
isSupportCss3: (style: any) => boolean;
+ getSafariVersion: () => number;
}
\ No newline at end of file
diff --git a/typescript/core/worker/controller/worker.main_thread.controller.ts b/typescript/core/worker/controller/worker.main_thread.controller.ts
index bd7dcfc96..b9ddb4fb6 100644
--- a/typescript/core/worker/controller/worker.main_thread.controller.ts
+++ b/typescript/core/worker/controller/worker.main_thread.controller.ts
@@ -10,9 +10,10 @@ export class WorkerMainThreadController extends WorkerBaseController {
/**
* 是否支持 new Worker, 默认为 Wroker Class 是否实现
+ * 由于Blob url支持度问题 规避Safari 12以下版本
*/
- public canNewWorker: boolean = WorkerMainThreadController.hasWorkerClass;
+ public canNewWorker: boolean = WorkerMainThreadController.hasWorkerClass && !(BI.isSafari() && BI.getSafariVersion() < 12);
/**
* 主线程 new Worker 起始时刻