fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

876 lines
31 KiB

import {
Widget,
Label,
shortcut,
each,
Msg,
StyleLoaders,
ColorChooser,
VerticalAdaptLayout,
HTapeLayout,
TextButton,
IconTextItem,
VerticalLayout,
Button,
DownListCombo,
IconTextIconItem,
GridLayout,
Layout,
} from '@fui/core';
@shortcut()
export class Face extends Widget {
static xtype = 'demo.face';
props = {
baseCls: 'demo-face',
};
_createLabel(text) {
return {
width: 200,
el: {
type: Label.xtyp,
text: text,
textAlign: 'left',
hgap: 5,
height: 40,
cls: 'config-label',
},
};
}
_createColorPicker(ref, action) {
return {
el: {
type: VerticalAdaptLayout.xtype,
items: [
{
type: ColorChooser.xtype,
listeners: [
{
eventName: ColorChooser.EVENT_CHANGE,
action: action,
},
],
ref: ref,
width: 24,
height: 24,
},
],
},
};
}
_createBackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('背景色:'),
this._createColorPicker(
function () {
self.backgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createFontConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('字体颜色:'),
this._createColorPicker(
function () {
self.fontColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createActiveFontConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('激活状态字体颜色:'),
this._createColorPicker(
function () {
self.activeFontColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
cls: 'bi-list-item-active',
text: '测试激活状态',
},
},
],
};
}
_createSelectFontConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('选中状态字体颜色:'),
this._createColorPicker(
function () {
self.selectFontColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
cls: 'bi-list-item-active',
text: '测试选中状态',
},
},
],
};
}
_createGrayFontConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('tip提示字体颜色:'),
this._createColorPicker(
function () {
self.grayFontColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: IconTextItem.xtype,
cls: 'bi-tips copy-font',
height: 40,
text: '测试提示文字',
},
},
],
};
}
_createDisableFontConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('灰化字体颜色:'),
this._createColorPicker(
function () {
self.disabledFontColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
text: '这个按钮是灰化的',
disabled: true,
},
},
],
};
}
_createCardBackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('Card背景颜色:'),
this._createColorPicker(
function () {
self.cardBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createHoverBackgroundColor() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('悬浮状态背景颜色:'),
this._createColorPicker(
function () {
self.hoverBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
cls: 'bi-list-item-active',
text: '测试悬浮状态',
},
},
],
};
}
_createActiveBackgroundColor() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('激活状态背景颜色:'),
this._createColorPicker(
function () {
self.activeBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
cls: 'bi-list-item-active',
text: '测试激活状态',
},
},
],
};
}
_createSelectBackgroundColor() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('选中状态背景颜色:'),
this._createColorPicker(
function () {
self.selectBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: TextButton.xtype,
cls: 'bi-list-item-active',
text: '测试选中状态',
},
},
],
};
}
_createSlitColor() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('分割线颜色:'),
this._createColorPicker(
function () {
self.slitColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createBaseConfig() {
return {
type: VerticalLayout.xtype,
items: [
this._createLabel('--通用配色--'),
this._createBackgroundConfig(),
this._createCardBackgroundConfig(),
this._createFontConfig(),
this._createActiveFontConfig(),
this._createSelectFontConfig(),
this._createGrayFontConfig(),
this._createDisableFontConfig(),
this._createHoverBackgroundColor(),
this._createActiveBackgroundColor(),
this._createSelectBackgroundColor(),
this._createSlitColor(),
],
};
}
_createButton1BackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('按钮背景色1:'),
this._createColorPicker(
function () {
self.button1BackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
height: 40,
items: [
{
type: Button.xtype,
cls: 'config-button1',
text: '测试按钮',
},
],
},
},
],
};
}
_createButton2BackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('按钮背景色2:'),
this._createColorPicker(
function () {
self.button2BackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
height: 40,
items: [
{
type: Button.xtype,
level: 'success',
cls: 'config-button2',
text: '测试按钮',
},
],
},
},
],
};
}
_createButton3BackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('按钮背景色3:'),
this._createColorPicker(
function () {
self.button3BackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
height: 40,
items: [
{
type: Button.xtype,
level: 'warning',
cls: 'config-button3',
text: '测试按钮',
},
],
},
},
],
};
}
_createButton4BackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('按钮背景色4:'),
this._createColorPicker(
function () {
self.button4BackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
height: 40,
items: [
{
type: Button.xtype,
level: 'ignore',
cls: 'config-button4',
text: '测试按钮',
},
],
},
},
],
};
}
_createScrollBackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('滚动条底色:'),
this._createColorPicker(
function () {
self.scrollBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createScrollThumbConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('滚动条thumb颜色:'),
this._createColorPicker(
function () {
self.scrollThumbColor = this;
},
function () {
self._runGlobalStyle();
}
),
],
};
}
_createPopupBackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('下拉框背景颜色:'),
this._createColorPicker(
function () {
self.popupBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
items: [
{
type: DownListCombo.xtype,
items: [
[
{
el: {
text: 'column 1111',
iconCls1: 'check-mark-e-font',
value: 11,
},
children: [
{
text: 'column 1.1',
value: 21,
cls: 'dot-e-font',
selected: true,
},
{
text: 'column 1.222222222222222222222222222222222222',
cls: 'dot-e-font',
value: 22,
},
{
text: 'column 1.3',
cls: 'dot-e-font',
value: 23,
},
{
text: 'column 1.4',
cls: 'dot-e-font',
value: 24,
},
{
text: 'column 1.5',
cls: 'dot-e-font',
value: 25,
},
],
},
],
[
{
el: {
type: IconTextIconItem.xtype,
text: 'column 2',
iconCls1: 'chart-type-e-font',
cls: 'dot-e-font',
value: 12,
},
disabled: true,
children: [
{
type: IconTextItem.xtype,
cls: 'dot-e-font',
height: 25,
text: 'column 2.1',
value: 11,
},
{ text: 'column 2.2', value: 12, cls: 'dot-e-font' },
],
},
],
[
{
text: 'column 33333333333333333333333333333333',
cls: 'style-set-e-font',
value: 13,
},
],
[
{
text: 'column 4',
cls: 'filter-e-font',
value: 14,
},
],
[
{
text: 'column 5',
cls: 'copy-e-font',
value: 15,
},
],
[
{
text: 'column 6',
cls: 'delete-e-font',
value: 16,
},
],
[
{
text: 'column 7',
cls: 'dimension-from-e-font',
value: 17,
disabled: true,
},
],
],
},
],
},
},
],
};
}
_createMaskBackgroundConfig() {
var self = this;
return {
type: HTapeLayout.xtype,
cls: 'config-item bi-border-bottom',
height: 40,
items: [
this._createLabel('弹出层蒙版颜色:'),
this._createColorPicker(
function () {
self.maskBackgroundColor = this;
},
function () {
self._runGlobalStyle();
}
),
{
width: 100,
el: {
type: VerticalAdaptLayout.xtype,
items: [
{
type: Button.xtype,
text: 'mask测试',
handler() {
Msg.alert('弹出层', '弹出层面板');
},
},
],
},
},
],
};
}
_createCommonConfig() {
return {
type: VerticalLayout.xtype,
items: [
this._createLabel('--一般配色--'),
this._createButton1BackgroundConfig(),
this._createButton2BackgroundConfig(),
this._createButton3BackgroundConfig(),
this._createButton4BackgroundConfig(),
this._createScrollBackgroundConfig(),
this._createScrollThumbConfig(),
this._createPopupBackgroundConfig(),
this._createMaskBackgroundConfig(),
],
};
}
render() {
var self = this;
return {
type: GridLayout.xtype,
items: [
[
{
el: {
type: VerticalLayout.xtype,
cls: 'face-config bi-border-right',
items: [this._createBaseConfig(), this._createCommonConfig()],
},
},
{
el: {
type: Layout.xtype,
},
},
],
],
};
}
_setStyle(objects) {
var result = '';
each(objects, function (cls, object) {
result += cls + '{';
each(object, function (name, value) {
result += name + ':' + value + ';';
});
result += '} ';
});
StyleLoaders.removeStyle('style').loadStyle('style', result);
}
_runGlobalStyle() {
var backgroundColor = this.backgroundColor.getValue();
var fontColor = this.fontColor.getValue();
var activeFontColor = this.activeFontColor.getValue();
var selectFontColor = this.selectFontColor.getValue();
var grayFontColor = this.grayFontColor.getValue();
var disabledFontColor = this.disabledFontColor.getValue();
var cardBackgroundColor = this.cardBackgroundColor.getValue();
var hoverBackgroundColor = this.hoverBackgroundColor.getValue();
var activeBackgroundColor = this.activeBackgroundColor.getValue();
var selectBackgroundColor = this.selectBackgroundColor.getValue();
var slitColor = this.slitColor.getValue();
var button1BackgroundColor = this.button1BackgroundColor.getValue();
var button2BackgroundColor = this.button2BackgroundColor.getValue();
var button3BackgroundColor = this.button3BackgroundColor.getValue();
var button4BackgroundColor = this.button4BackgroundColor.getValue();
var scrollBackgroundColor = this.scrollBackgroundColor.getValue();
var scrollThumbColor = this.scrollThumbColor.getValue();
var popupBackgroundColor = this.popupBackgroundColor.getValue();
var maskBackgroundColor = this.maskBackgroundColor.getValue();
this._setStyle({
'body.bi-background, body .bi-background': {
'background-color': backgroundColor,
color: fontColor,
},
'body .bi-card': {
'background-color': cardBackgroundColor,
color: fontColor,
},
'body .bi-tips': {
color: grayFontColor,
},
'div::-webkit-scrollbar,.scrollbar-layout-main': {
'background-color': scrollBackgroundColor + '!important',
},
'div::-webkit-scrollbar-thumb,.public-scrollbar-face:after': {
'background-color': scrollThumbColor + '!important',
},
'.base-disabled': {
color: disabledFontColor + '!important',
},
'.base-disabled .b-font:before': {
color: disabledFontColor + '!important',
},
'.list-view-outer': {
'background-color': popupBackgroundColor + '!important',
},
'.bi-z-index-mask': {
'background-color': maskBackgroundColor + '!important',
},
'.bi-list-item:hover,.bi-list-item-hover:hover,.bi-list-item-active:hover,.bi-list-item-select:hover,.bi-list-item-effect:hover':
{
'background-color': hoverBackgroundColor + '!important',
},
'.bi-list-item-active:active,.bi-list-item-select:active,.bi-list-item-effect:active': {
'background-color': activeBackgroundColor + '!important',
color: activeFontColor + '!important',
},
'.bi-list-item-active.active,.bi-list-item-select.active,.bi-list-item-effect.active': {
'background-color': selectBackgroundColor + '!important',
color: selectFontColor + '!important',
},
'body .bi-button.button-common': {
'background-color': button1BackgroundColor,
'border-color': button1BackgroundColor,
},
'body .bi-button.button-success': {
'background-color': button2BackgroundColor,
'border-color': button2BackgroundColor,
},
'body .bi-button.button-warning': {
'background-color': button3BackgroundColor,
'border-color': button3BackgroundColor,
},
'body .bi-button.button-ignore': {
'background-color': button4BackgroundColor,
},
// 以下是分割线颜色
'body .bi-border,body .bi-border-top,#wrapper .bi-border-bottom,body .bi-border-left,body .bi-border-right':
{
'border-color': slitColor,
},
'.bi-collection-table-cell': {
'border-right-color': slitColor,
'border-bottom-color': slitColor,
},
'.bi-collection-table-cell.first-col': {
'border-left-color': slitColor,
},
'.bi-collection-table-cell.first-row': {
'border-top-color': slitColor,
},
});
}
mounted() {
this.backgroundColor.setValue('');
this.fontColor.setValue('');
this.activeFontColor.setValue('');
this.selectFontColor.setValue('');
this.grayFontColor.setValue('');
this.disabledFontColor.setValue('');
this.cardBackgroundColor.setValue('');
this.hoverBackgroundColor.setValue('');
this.activeBackgroundColor.setValue('');
this.selectBackgroundColor.setValue('');
this.button1BackgroundColor.setValue('');
this.button2BackgroundColor.setValue('');
this.button3BackgroundColor.setValue('');
this.button4BackgroundColor.setValue('');
this.scrollBackgroundColor.setValue('');
this.scrollThumbColor.setValue('');
this.popupBackgroundColor.setValue('');
this.maskBackgroundColor.setValue('');
this.slitColor.setValue('');
this._runGlobalStyle();
}
}