import { Widget, Label, Decorators, each, Msg, StyleLoaders, ColorChooser, VerticalAdaptLayout, HTapeLayout, TextButton, IconTextItem, VerticalLayout, Button, DownListCombo, IconTextIconItem, GridLayout, Layout, Fix, } from "@fui/core"; @Decorators.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(); } }