Browse Source

Merge remote-tracking branch 'origin/master'

research/test
Kobi 11 months ago
parent
commit
4127618721
  1. 148
      packages/fineui/src/base/foundation/message.js
  2. 26
      packages/fineui/src/case/button/switch.js
  3. 2
      packages/fineui/src/less/lib/colors.less
  4. 2
      packages/fineui/src/less/lib/constant.less
  5. 5
      packages/fineui/src/less/lib/font.less
  6. 5
      packages/fineui/src/less/resource/font.less
  7. 16
      packages/fineui/typescript/base/foundation/message.ts
  8. 5
      packages/fineui/typescript/case/button/switch.ts

148
packages/fineui/src/base/foundation/message.js

@ -17,9 +17,13 @@ import {
i18nText,
KeyCode,
isPlainObject,
SIZE_CONSANTS
SIZE_CONSANTS,
CenterAdaptLayout,
VerticalLayout,
HTapeLayout,
RightVerticalAdaptLayout
} from "../../core";
import { Toast } from "../single";
import { Button, IconLabel, Label, Toast } from "../single";
let $mask, $pop;
@ -27,15 +31,33 @@ const messageShows = [];
const toastStack = [];
const defaultConfig = {
buttonHeight: 24,
};
const AlertLevel = {
WARNING: 'warning',
INFO: 'info',
ERROR: 'error',
SUCCESS: 'success',
}
function getIconCls(level) {
switch (level) {
case AlertLevel.ERROR:
return 'alert-error-font';
case AlertLevel.SUCCESS:
return 'alert-success-font';
case AlertLevel.INFO:
return 'alert-info-font';
case AlertLevel.WARNING:
default:
return 'alert-warning-font';
}
}
export const Msg = {
alert(title, message, callback, config = defaultConfig) {
alert(title, message, callback, config) {
_show(false, title, message, callback, config);
},
confirm(title, message, callback, config = defaultConfig) {
confirm(title, message, callback, config) {
_show(true, title, message, callback, config);
},
toast(message, options, context) {
@ -99,7 +121,14 @@ export const Msg = {
},
};
function _show(hasCancel, title, message, callback, config) {
function _show(hasCancel, title, message, callback, config = {}) {
config = {
buttonHeight: 24,
cancelText: i18nText("BI-Basic_Cancel"),
sureText: i18nText("BI-Basic_OK"),
level: AlertLevel.WARNING,
...config,
}
isNull($mask) &&
($mask = Widget._renderEngine
.createElement("<div class=\"bi-z-index-mask\">")
@ -138,9 +167,9 @@ function _show(hasCancel, title, message, callback, config) {
if (hasCancel === true) {
controlItems.push({
el: {
type: "bi.button",
type: Button.xtype,
height: config.buttonHeight,
text: i18nText("BI-Basic_Cancel"),
text: config.cancelText,
light: true,
handler() {
close();
@ -153,9 +182,9 @@ function _show(hasCancel, title, message, callback, config) {
}
controlItems.push({
el: {
type: "bi.button",
type: Button.xtype,
height: config.buttonHeight,
text: i18nText("BI-Basic_OK"),
text: config.sureText,
handler() {
close();
if (isFunction(callback)) {
@ -166,10 +195,13 @@ function _show(hasCancel, title, message, callback, config) {
});
const conf = {
element: $pop,
type: "bi.center_adapt",
type: CenterAdaptLayout.xtype,
items: [
{
type: "bi.border",
type: VerticalLayout.xtype,
cls: "bi-card bi-border-radius",
width: 450,
hgap: 32,
attributes: {
tabIndex: 1,
},
@ -194,75 +226,57 @@ function _show(hasCancel, title, message, callback, config) {
} catch (e) {
}
},
cls: "bi-card",
items: {
north: {
el: {
type: "bi.border",
cls: "bi-message-title bi-background",
items: {
center: {
el: {
type: "bi.label",
cls: "bi-font-bold",
text: title || i18nText("BI-Basic_Prompt"),
textAlign: "left",
hgap: 20,
height: 40,
},
},
east: {
items: [
{
el: {
type: "bi.icon_button",
cls: "bi-message-close close-font",
// height: 50,
handler() {
close();
if (isFunction(callback)) {
callback.apply(null, [false]);
}
},
},
width: 56,
type: HTapeLayout.xtype,
height: 24,
items: [
{
type: IconLabel.xtype,
cls: `${getIconCls(config.level)} icon-size-20`,
width: 24,
height: 24,
},
{
type: Label.xtype,
css: { "font-size": 16 },
cls: 'bi-font-bold', // 16px
textAlign: 'left',
width: 'fill',
text: title || i18nText('BI-Basic_Prompt'),
lgap: 16,
},
],
},
height: 40,
tgap: 32,
},
center: {
{
el: isPlainObject(message)
? message
: {
type: "bi.label",
vgap: 10,
hgap: 20,
whiteSpace: "normal",
type: Label.xtype,
css: { "font-size": 14 },
cls: 'alert-content',
textAlign: 'left',
text: message,
whiteSpace: 'normal',
},
height: 'fill',
tgap: 12,
lgap: 40,
},
south: {
el: {
type: "bi.absolute",
items: [
{
el: {
type: "bi.right_vertical_adapt",
lgap: 10,
el: config.footer && isFunction(config.footer) ? config.footer(close) : {
type: RightVerticalAdaptLayout.xtype,
lgap: 12,
items: controlItems,
},
top: 0,
left: 20,
right: 20,
bottom: 0,
}
],
},
height: 44,
tgap: 32,
bgap: 24,
},
],
},
width: 450,
height: 200,
}
],
};

26
packages/fineui/src/case/button/switch.js

@ -1,15 +1,13 @@
import { AbsoluteLayout, shortcut, i18nText } from "@/core";
import { TextButton, Label, BasicButton } from "@/base";
const CIRCLE_SIZE = 12;
@shortcut()
export class Switch extends BasicButton {
static xtype = "bi.switch";
static EVENT_CHANGE = "EVENT_CHANGE";
constants = {
CIRCLE_SIZE: 12,
};
props = {
extraCls: "bi-switch",
attributes: {
@ -18,12 +16,12 @@ export class Switch extends BasicButton {
height: 20,
width: 44,
showTip: false,
textGap: 8,
};
render() {
const o = this.options,
c = this.constants;
const tgap = (o.height - c.CIRCLE_SIZE) / 2;
const { selected, width, height, textGap, showTip } = this.options;
const tgap = (height - CIRCLE_SIZE) / 2;
return {
type: AbsoluteLayout.xtype,
@ -39,15 +37,15 @@ export class Switch extends BasicButton {
width: 12,
height: 12,
top: tgap,
left: o.selected ? 28 : 4,
left: selected ? width - height + tgap : tgap,
},
{
type: Label.xtype,
text: i18nText("BI-Basic_Simple_Open"),
cls: "content-tip",
left: 8,
left: textGap,
top: tgap - 2,
invisible: !(o.showTip && o.selected),
invisible: !(showTip && selected),
ref: _ref => {
this.openTip = _ref;
},
@ -56,9 +54,9 @@ export class Switch extends BasicButton {
type: Label.xtype,
text: i18nText("BI-Basic_Simple_Close"),
cls: "content-tip",
right: 8,
right: textGap,
top: tgap - 2,
invisible: !(o.showTip && !o.selected),
invisible: !(showTip && !selected),
ref: _ref => {
this.closeTip = _ref;
},
@ -78,7 +76,9 @@ export class Switch extends BasicButton {
setSelected(v) {
super.setSelected(...arguments);
this.layout.attr("items")[0].left = v ? 28 : 4;
const { width, height } = this.options;
const tgap = (height - CIRCLE_SIZE) / 2;
this.layout.attr("items")[0].left = v ? width - height + tgap : tgap;
this.layout.resize();
this.options.showTip && this.openTip.setVisible(v);
this.options.showTip && this.closeTip.setVisible(!v);

2
packages/fineui/src/less/lib/colors.less

@ -132,3 +132,5 @@
@color-bi-border-warning: @border-color-warning;
//边框提亮
@color-bi-border-highlight: @border-color-highlight;
@color-bi-alert-warning: @color-bi-orange;

2
packages/fineui/src/less/lib/constant.less

@ -248,3 +248,5 @@
//box-shadow效果
@box-shadow-toast: 0 6px 20px -2px rgba(9, 30, 64, 0.16);
@color-bi-orange: #f0ac3c;

5
packages/fineui/src/less/lib/font.less

@ -58,3 +58,8 @@
@font-key: "e1d0";
@font-add: "e1c7";
@font-alert-warning: 'e755';
@font-alert-success: 'e6de';
@font-alert-info: 'e74b';
@font-alert-error: 'e757';

5
packages/fineui/src/less/resource/font.less

@ -118,3 +118,8 @@
.font(text-align-left-font, @font-align-left);
.font(text-align-center-font, @font-align-center);
.font(text-align-right-font, @font-align-right);
.font(alert-success-font, @font-alert-success, @color-sea-green-100);
.font(alert-warning-font, @font-alert-warning, @color-bi-alert-warning);
.font(alert-error-font, @font-alert-error, @color-red-100);
.font(alert-info-font, @font-alert-info, @color-bi-text-highlight);

16
packages/fineui/typescript/base/foundation/message.ts

@ -8,11 +8,23 @@ type toastOptions = {
export declare namespace Msg {
function alert(title: string, message?: string | {
[key: string]: any
}, callback?: (result?: boolean) => void): void
}, callback?: (result?: boolean) => void, config?: {
buttonHeight?: number,
sureText?: string,
cancelText?: string,
level?: 'success' | 'warning' | 'error' | 'info',
footer?: (onClose: Function) => Obj;
}): void
function confirm(title: string, message?: string | {
[key: string]: any
}, callback?: (result: boolean) => void): void
}, callback?: (result: boolean) => void, config?: {
buttonHeight?: number,
sureText?: string,
cancelText?: string,
level?: 'success' | 'warning' | 'error' | 'info',
footer?: (onClose: Function) => Obj;
}): void
function toast(message: string | Obj, options?: toastOptions | string, context?: HTMLElement): Function
}

5
packages/fineui/typescript/case/button/switch.ts

@ -1,6 +1,11 @@
import { BasicButton } from "../../base/single/button/button.basic";
export declare class Switch extends BasicButton {
props: {
textGap: number;
} & BasicButton['props']
static xtype: string;
static EVENT_CHANGE: string;
}

Loading…
Cancel
Save