Tomorrow 3 years ago
parent
commit
95c77d5731
  1. 3
      bi.lessconfig.json
  2. 29
      demo/js/base/button/demo.button.js
  3. BIN
      dist/font/iconfont.eot
  4. BIN
      dist/font/iconfont.ttf
  5. BIN
      dist/font/iconfont.woff
  6. BIN
      dist/font/iconfont.woff2
  7. 2
      package.json
  8. 347
      src/base/single/button/buttons/button.js
  9. 3
      src/base/single/editor/editor.multifile.js
  10. 18
      src/base/single/input/file.js
  11. 8
      src/base/single/tip/tip.toast.js
  12. 12
      src/case/combo/bubblecombo/popup.bubble.js
  13. 17
      src/less/base/single/tip/tip.toast.less
  14. 1
      src/less/lib/font.less
  15. 1
      src/less/resource/font.less
  16. 15
      typescript/base/foundation/message.ts

3
bi.lessconfig.json

@ -10,10 +10,9 @@
"@border-color-dark-line": "#2E3A4D", "@border-color-dark-line": "#2E3A4D",
"@color-sliver-theme-dark": "#363E55", "@color-sliver-theme-dark": "#363E55",
"@border-color-disabled": "#E7E8EB", "@border-color-disabled": "#E7E8EB",
"@color-bi-background-active-radio": "transparent", "@color-bi-background-active-radio": "transparent",
"@color-bi-background-active-radio-content": "#2C60DB", "@color-bi-background-active-radio-content": "#2C60DB",
"@color-bi-background-disabled-active-radio-content": "#D0D4DA", "@color-bi-background-disabled-active-radio-content": "#FFFFFF",
"@color-bi-background-disabled-active-radio-content-theme-dark": "#606479", "@color-bi-background-disabled-active-radio-content-theme-dark": "#606479",
"@color-bi-background-disabled-active-checkbox-content": "#FFFFFF", "@color-bi-background-disabled-active-checkbox-content": "#FFFFFF",
"@color-bi-background-disabled-active-checkbox-content-theme-dark": "#606479", "@color-bi-background-disabled-active-checkbox-content-theme-dark": "#606479",

29
demo/js/base/button/demo.button.js

@ -213,6 +213,35 @@ Demo.Button = BI.inherit(BI.Widget, {
}, },
height: 30 height: 30
} }
}, {
el: {
type: "bi.button",
text: "图标在上面的按钮,而且可以自动撑开高度",
iconCls: "close-font",
iconGap: 24,
iconPosition: "top"
}
}, {
el: {
type: "bi.button",
text: "图标在下面的按钮",
iconCls: "close-font",
iconPosition: "bottom"
}
}, {
el: {
type: "bi.button",
text: "图标在左边的按钮",
iconCls: "close-font",
iconPosition: "left"
}
}, {
el: {
type: "bi.button",
text: "图标在右边的按钮",
iconCls: "close-font",
iconPosition: "right"
}
}]; }];
// BI.each(items, function (i, item) { // BI.each(items, function (i, item) {
// item.el.handler = function () { // item.el.handler = function () {

BIN
dist/font/iconfont.eot vendored

Binary file not shown.

BIN
dist/font/iconfont.ttf vendored

Binary file not shown.

BIN
dist/font/iconfont.woff vendored

Binary file not shown.

BIN
dist/font/iconfont.woff2 vendored

Binary file not shown.

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "fineui", "name": "fineui",
"version": "2.0.20220523172422", "version": "2.0.20220527170604",
"description": "fineui", "description": "fineui",
"main": "dist/fineui.min.js", "main": "dist/fineui.min.js",
"types": "dist/lib/index.d.ts", "types": "dist/lib/index.d.ts",

347
src/base/single/button/buttons/button.js

@ -1,169 +1,208 @@
/** (function () {
* 文字类型的按钮 function isVertical(position) {
* @class BI.Button return position === "top" || position === "bottom";
* @extends BI.BasicButton }
*
* @cfg {JSON} options 配置属性 /**
* @cfg {'common'/'success'/'warning'/'ignore'} [options.level='common'] 按钮类型用不同颜色强调不同的场景 * 文字类型的按钮
*/ * @class BI.Button
BI.Button = BI.inherit(BI.BasicButton, { * @extends BI.BasicButton
*
* @cfg {JSON} options 配置属性
* @cfg {'common'/'success'/'warning'/'ignore'} [options.level='common'] 按钮类型用不同颜色强调不同的场景
*/
BI.Button = BI.inherit(BI.BasicButton, {
_const: { _const: {
iconWidth: 18 iconWidth: 16
}, },
_defaultConfig: function (props) { _defaultConfig: function (props) {
var conf = BI.Button.superclass._defaultConfig.apply(this, arguments); var conf = BI.Button.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-button" + ((BI.isIE() && BI.isIE9Below()) ? " hack" : ""), return BI.extend(conf, {
attributes: { baseCls: (conf.baseCls || "") + " bi-button" + ((BI.isIE() && BI.isIE9Below()) ? " hack" : ""),
tabIndex: 1 attributes: {
}, tabIndex: 1
minWidth: (props.block === true || props.clear === true) ? 0 : 80, },
height: 24, minWidth: (props.block === true || props.clear === true) ? 0 : 80,
shadow: props.clear !== true, // 44 = 垂直间距 6 + 边框 2 + 图标 16 + 图标和文字间隔 8 + 文字 12
isShadowShowingOnSelected: true, height: isVertical(props.iconPosition) ? 44 + ((props.iconGap || 8) - 8) : 24,
readonly: true, shadow: props.clear !== true,
iconCls: "", isShadowShowingOnSelected: true,
level: "common", readonly: true,
block: false, // 是否块状显示,即不显示边框,没有最小宽度的限制 iconCls: "",
clear: false, // 是否去掉边框和背景 level: "common",
ghost: false, // 是否幽灵显示, 即正常状态无背景 block: false, // 是否块状显示,即不显示边框,没有最小宽度的限制
textAlign: "center", clear: false, // 是否去掉边框和背景
whiteSpace: "nowrap", ghost: false, // 是否幽灵显示, 即正常状态无背景
textWidth: null, loading: false, // 是否处于加载中
textHeight: null, textAlign: "center",
hgap: props.clear ? 0 : 10, whiteSpace: "nowrap",
vgap: 0, textWidth: null,
tgap: 0, textHeight: null,
bgap: 0, hgap: props.clear ? 0 : 10,
lgap: 0, vgap: 0,
rgap: 0 tgap: 0,
}); bgap: 0,
}, lgap: 0,
rgap: 0,
iconGap: 8,
iconPosition: "left"
});
},
render: function () { render: function () {
var o = this.options, self = this; var o = this.options;
// 由于button默认情况下有个边框,所以要主动算行高 // 由于button默认情况下有个边框,所以要主动算行高
var lineHeight, textHeight = o.textHeight; var lineHeight, textHeight = o.textHeight;
if (BI.isNumber(o.height)) { if (BI.isNumber(o.height)) {
if (o.clear || o.block) { if (!isVertical(o.iconPosition)) {
lineHeight = o.height; if (o.clear || o.block) {
lineHeight = o.height;
} else {
lineHeight = o.height - 2;
}
} else {
lineHeight = textHeight;
}
}
if (!textHeight) {
if (o.whiteSpace === "nowrap") {
textHeight = lineHeight;
}
}
if (BI.isKey(o.iconCls)) {
this.icon = BI.createWidget({
type: "bi.icon_label",
cls: o.iconCls,
width: this._const.iconWidth,
height: lineHeight,
lineHeight: lineHeight
});
this.text = BI.createWidget({
type: "bi.label",
text: o.text,
textWidth: BI.isNotNull(o.textWidth) ? o.textWidth - this._const.iconWidth : null,
textHeight: textHeight,
height: lineHeight,
value: o.value
});
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";
}
if (o.iconPosition === "right" || o.iconPosition === "bottom") {
items = [BI.extend({el: this.text}, gapContainer), this.icon];
}
BI.createWidget({
type: "bi.center_adapt",
element: this,
hgap: o.hgap,
vgap: o.vgap,
items: [{
type: layoutType,
horizontalAlign: "center",
verticalAlign: "middle",
items: items
}]
});
} else { } else {
lineHeight = o.height - 2; this.text = BI.createWidget({
type: "bi.label",
height: o.height,
textAlign: o.textAlign,
whiteSpace: o.whiteSpace,
textWidth: o.textWidth,
textHeight: textHeight,
hgap: o.hgap,
vgap: o.vgap,
tgap: o.tgap,
bgap: o.bgap,
lgap: o.lgap,
rgap: o.rgap,
element: this,
text: o.text,
value: o.value
});
} }
} if (o.block === true) {
if (!textHeight) { this.element.addClass("block");
if (o.whiteSpace === "nowrap") {
textHeight = lineHeight;
} }
} if (o.clear === true) {
if (BI.isKey(o.iconCls)) { this.element.addClass("clear");
this.icon = BI.createWidget({ }
type: "bi.icon_label", if (o.ghost === true) {
cls: o.iconCls, this.element.addClass("ghost");
width: this._const.iconWidth, }
height: lineHeight, if (o.loading === true) {
lineHeight: lineHeight, this.element.addClass("loading");
iconWidth: o.iconWidth, }
iconHeight: o.iconHeight if (o.minWidth > 0) {
}); this.element.css({"min-width": o.minWidth / BI.pixRatio + BI.pixUnit});
this.text = BI.createWidget({ }
type: "bi.label", },
text: o.text,
textWidth: BI.isNotNull(o.textWidth) ? o.textWidth - this._const.iconWidth : null,
textHeight: textHeight,
height: lineHeight,
value: o.value
});
BI.createWidget({
type: "bi.center_adapt",
element: this,
hgap: o.hgap,
vgap: o.vgap,
items: [{
type: "bi.horizontal",
columnSize: ["", "fill"],
items: [this.icon, this.text]
}]
});
} else {
this.text = BI.createWidget({
type: "bi.label",
height: o.height,
textAlign: o.textAlign,
whiteSpace: o.whiteSpace,
textWidth: o.textWidth,
textHeight: textHeight,
hgap: o.hgap,
vgap: o.vgap,
tgap: o.tgap,
bgap: o.bgap,
lgap: o.lgap,
rgap: o.rgap,
element: this,
text: o.text,
value: o.value
});
}
if (o.block === true) {
this.element.addClass("block");
}
if (o.clear === true) {
this.element.addClass("clear");
}
if (o.ghost === true) {
this.element.addClass("ghost");
}
if (o.minWidth > 0) {
this.element.css({"min-width": o.minWidth / BI.pixRatio + BI.pixUnit});
}
},
doClick: function () { doClick: function () {
BI.Button.superclass.doClick.apply(this, arguments); BI.Button.superclass.doClick.apply(this, arguments);
if (this.isValid()) { if (this.isValid()) {
this.fireEvent(BI.Button.EVENT_CHANGE, this); this.fireEvent(BI.Button.EVENT_CHANGE, this);
} }
}, },
_setEnable: function (enable) { _setEnable: function (enable) {
BI.Button.superclass._setEnable.apply(this, arguments); BI.Button.superclass._setEnable.apply(this, arguments);
if (enable === true) { if (enable === true) {
this.element.attr("tabIndex", 1); this.element.attr("tabIndex", 1);
} else if (enable === false) { } else if (enable === false) {
this.element.removeAttr("tabIndex"); this.element.removeAttr("tabIndex");
} }
}, },
setText: function (text) { setLoading: function (loading) {
BI.Button.superclass.setText.apply(this, arguments); if(loading) {
this.text.setText(text); this.element.addClass("loading");
}, } else {
this.element.removeClass("loading");
}
},
setValue: function (text) { setText: function (text) {
BI.Button.superclass.setValue.apply(this, arguments); BI.Button.superclass.setText.apply(this, arguments);
if (!this.isReadOnly()) { this.text.setText(text);
this.text.setValue(text); },
}
},
doRedMark: function () { setValue: function (text) {
this.text.doRedMark.apply(this.text, arguments); BI.Button.superclass.setValue.apply(this, arguments);
}, if (!this.isReadOnly()) {
this.text.setValue(text);
}
},
unRedMark: function () { doRedMark: function () {
this.text.unRedMark.apply(this.text, arguments); this.text.doRedMark.apply(this.text, arguments);
}, },
doHighLight: function () { unRedMark: function () {
this.text.doHighLight.apply(this.text, arguments); this.text.unRedMark.apply(this.text, arguments);
}, },
unHighLight: function () { doHighLight: function () {
this.text.unHighLight.apply(this.text, arguments); this.text.doHighLight.apply(this.text, arguments);
} },
});
BI.shortcut("bi.button", BI.Button); unHighLight: function () {
BI.Button.EVENT_CHANGE = "EVENT_CHANGE"; this.text.unHighLight.apply(this.text, arguments);
}
});
BI.shortcut("bi.button", BI.Button);
BI.Button.EVENT_CHANGE = "EVENT_CHANGE";
}());

3
src/base/single/editor/editor.multifile.js

@ -31,7 +31,8 @@ BI.MultifileEditor = BI.inherit(BI.Widget, {
accept: o.accept, accept: o.accept,
maxSize: o.maxSize, maxSize: o.maxSize,
maxLength: o.maxLength, maxLength: o.maxLength,
title: o.title title: o.title,
errorText: o.errorText,
}); });
this.file.on(BI.File.EVENT_CHANGE, function () { this.file.on(BI.File.EVENT_CHANGE, function () {
self.fireEvent(BI.MultifileEditor.EVENT_CHANGE, arguments); self.fireEvent(BI.MultifileEditor.EVENT_CHANGE, arguments);

18
src/base/single/input/file.js

@ -445,8 +445,9 @@
url: "", url: "",
multiple: true, multiple: true,
accept: "", // .png,.pdf,image/jpg,image/* 等 accept: "", // .png,.pdf,image/jpg,image/* 等
maxSize: -1, // 1024 * 1024 maxSize: -1, // 1024 * 1024 单位b
maxLength: -1 // 无限制, 与multiple配合使用 maxLength: -1, // 无限制, 与multiple配合使用
errorText: BI.emptyFn,
}); });
}, },
@ -472,12 +473,10 @@
// handlers // handlers
_wrap.onloadstart = function (rpe, xhr) { _wrap.onloadstart = function (rpe, xhr) {
// BI.Msg.toast("loadstart");
self.fireEvent(BI.File.EVENT_UPLOADSTART, arguments); self.fireEvent(BI.File.EVENT_UPLOADSTART, arguments);
}; };
_wrap.onprogress = function (rpe, xhr) { _wrap.onprogress = function (rpe, xhr) {
// BI.Msg.toast("onprogress");
// percent for each bar // percent for each bar
// fileSize is -1 only if browser does not support file info access // fileSize is -1 only if browser does not support file info access
@ -561,21 +560,26 @@
var validateFileType = fileTypeValidate(value, wrap.fileType); var validateFileType = fileTypeValidate(value, wrap.fileType);
if (!validateFileType) { if (!validateFileType) {
// 文件类型不支持 // 文件类型不支持
BI.Msg.toast(BI.i18nText("BI-Upload_File_Type_Error"), { level: "error" }); BI.Msg.toast(o.errorText({
errorType: 0,
file: item
}) || BI.i18nText("BI-Upload_File_Type_Error", wrap.fileType), { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR, { self.fireEvent(BI.File.EVENT_ERROR, {
errorType: 0, errorType: 0,
file: item file: item
}); });
} else if (wrap.maxSize !== -1 && size && wrap.maxSize < size) { } else if (wrap.maxSize !== -1 && size && wrap.maxSize < size) {
// 文件大小不支持 // 文件大小不支持
BI.Msg.toast(BI.i18nText("BI-Upload_File_Size_Error"), { level: "error" }); BI.Msg.toast(o.errorText({
errorType: 1,
file: item
}) || BI.i18nText("BI-Upload_File_Size_Error", Math.ceil(wrap.maxSize / 1024 / 1024)), { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR, { self.fireEvent(BI.File.EVENT_ERROR, {
errorType: 1, errorType: 1,
file: item file: item
}); });
} else { } else {
wrap.files.unshift(item); wrap.files.unshift(item);
// BI.Msg.toast(value);
} }
} }
} }

8
src/base/single/tip/tip.toast.js

@ -20,7 +20,8 @@ BI.Toast = BI.inherit(BI.Tip, {
text: "", text: "",
level: "success", // success或warning level: "success", // success或warning
autoClose: true, autoClose: true,
closable: null closable: null,
vgap: 7,
}); });
}, },
@ -56,6 +57,9 @@ BI.Toast = BI.inherit(BI.Tip, {
case "warning": case "warning":
cls = "toast-warning-font"; cls = "toast-warning-font";
break; break;
case "loading":
cls = "toast-loading-font anim-rotate";
break;
case "normal": case "normal":
default: default:
cls = "toast-message-font"; cls = "toast-message-font";
@ -99,7 +103,7 @@ BI.Toast = BI.inherit(BI.Tip, {
horizontalAlign: BI.HorizontalAlign.Stretch, horizontalAlign: BI.HorizontalAlign.Stretch,
element: this, element: this,
items: items, items: items,
vgap: 12, vgap: o.vgap,
columnSize: columnSize columnSize: columnSize
}); });
}, },

12
src/case/combo/bubblecombo/popup.bubble.js

@ -48,8 +48,8 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, {
if (BI.isWidget(buttonOpt)) { if (BI.isWidget(buttonOpt)) {
items.push({ items.push({
el: buttonOpt, el: buttonOpt,
lgap: i === 0 ? 20 : 15, lgap: i === 0 ? 15 : 10,
rgap: i === o.buttons.length - 1 ? 20 : 0 rgap: i === o.buttons.length - 1 ? 15 : 0
}); });
} else { } else {
items.push({ items.push({
@ -60,14 +60,14 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, {
self.fireEvent(BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v); self.fireEvent(BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v);
} }
}, buttonOpt), }, buttonOpt),
lgap: i === 0 ? 20 : 15, lgap: i === 0 ? 15 : 10,
rgap: i === o.buttons.length - 1 ? 20 : 0 rgap: i === o.buttons.length - 1 ? 15 : 0
}); });
} }
}); });
return BI.createWidget({ return BI.createWidget({
type: "bi.right_vertical_adapt", type: "bi.right_vertical_adapt",
height: 54, height: 44,
items: items items: items
}); });
}, },
@ -90,7 +90,7 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, {
}] }]
}); });
button.element.css("min-height", o.minHeight - 54); button.element.css("min-height", o.minHeight - 44);
return button; return button;
} }

17
src/less/base/single/tip/tip.toast.less

@ -1,22 +1,27 @@
@import "../../../index.less"; @import "../../../index.less";
.bi-toast{ .bi-toast {
color: @color-bi-color-toast-text; color: @color-bi-color-toast-text;
line-height: @font-size-16; line-height: @font-size-16;
.border-radius(2px); .border-radius(2px);
&.toast-success{
&.toast-success {
background: @color-bi-background-toast-success; background: @color-bi-background-toast-success;
} }
&.toast-warning{
&.toast-warning {
background: @color-bi-background-toast-warning; background: @color-bi-background-toast-warning;
} }
&.toast-error{
&.toast-error {
background: @color-bi-background-toast-error; background: @color-bi-background-toast-error;
} }
&.toast-normal, &.toast-common{
&.toast-normal, &.toast-common, &.toast-loading {
background: @color-bi-background-toast-normal; background: @color-bi-background-toast-normal;
} }
& .toast-icon{
& .toast-icon {
font-size: @font-size-16; font-size: @font-size-16;
} }
} }

1
src/less/lib/font.less

@ -51,6 +51,7 @@
@font-tip-success: "e1db"; @font-tip-success: "e1db";
@font-tip-warning: "e1d7"; @font-tip-warning: "e1d7";
@font-tip-message: "e1d9"; @font-tip-message: "e1d9";
@font-tip-loading: "e7cd";
@font-key: "e1d0"; @font-key: "e1d0";

1
src/less/resource/font.less

@ -86,6 +86,7 @@
.font(toast-success-font, @font-tip-success, @color-bi-color-toast-success); .font(toast-success-font, @font-tip-success, @color-bi-color-toast-success);
.font(toast-warning-font, @font-tip-warning, @color-bi-color-toast-warning); .font(toast-warning-font, @font-tip-warning, @color-bi-color-toast-warning);
.font(toast-message-font, @font-tip-message, @color-bi-color-toast-normal); .font(toast-message-font, @font-tip-message, @color-bi-color-toast-normal);
.font(toast-loading-font, @font-tip-loading, @color-bi-color-toast-normal);
//数值区间 //数值区间
.font(less-font, @font-less); .font(less-font, @font-less);

15
typescript/base/foundation/message.ts

@ -1,6 +1,13 @@
type toastOptions = {
level: "success" | "warning" | "error" | "normal" | "loading"
autoClose?: boolean
callback?: Function
closable?: boolean
}
export type _msg = { export type _msg = {
alert: (title: string, message?: string | {[key: string]: any}, callback?: (result?: boolean)=>void) => void alert: (title: string, message?: string | { [key: string]: any }, callback?: (result?: boolean) => void) => void
confirm: (title: string, message?: string | {[key: string]: any}, callback?: (result: boolean)=>void) => void confirm: (title: string, message?: string | { [key: string]: any }, callback?: (result: boolean) => void) => void
prompt: (title: string, message?: string, value?: any, callback?: (result: string) => void, minWidth?: number) => void prompt: (title: string, message?: string, value?: any, callback?: (result: string) => void, minWidth?: number) => void
toast: (message: string, options?: object | string, context?: HTMLElement) => void toast: (message: string | Obj, options?: toastOptions | string, context?: HTMLElement) => void
} }

Loading…
Cancel
Save