laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
308 lines (307 loc) • 9.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UIGroup = void 0;
const Box_1 = require("./Box");
const Event_1 = require("../events/Event");
const Loader_1 = require("../net/Loader");
const Handler_1 = require("../utils/Handler");
const ILaya_1 = require("../../ILaya");
class UIGroup extends Box_1.Box {
constructor(labels = null, skin = null) {
super();
this._selectedIndex = -1;
this._direction = "horizontal";
this._space = 0;
this.skin = skin;
this.labels = labels;
}
preinitialize() {
this.mouseEnabled = true;
}
destroy(destroyChild = true) {
super.destroy(destroyChild);
this._items && (this._items.length = 0);
this._items = null;
this.selectHandler = null;
}
addItem(item, autoLayOut = true) {
var display = item;
var index = this._items.length;
display.name = "item" + index;
this.addChild(display);
this.initItems();
if (autoLayOut && index > 0) {
var preItem = this._items[index - 1];
if (this._direction == "horizontal") {
display.x = preItem._x + preItem.width + this._space;
}
else {
display.y = preItem._y + preItem.height + this._space;
}
}
else {
if (autoLayOut) {
display.x = 0;
display.y = 0;
}
}
return index;
}
delItem(item, autoLayOut = true) {
var index = this._items.indexOf(item);
if (index != -1) {
var display = item;
this.removeChild(display);
for (var i = index + 1, n = this._items.length; i < n; i++) {
var child = this._items[i];
child.name = "item" + (i - 1);
if (autoLayOut) {
if (this._direction == "horizontal") {
child.x -= display.width + this._space;
}
else {
child.y -= display.height + this._space;
}
}
}
this.initItems();
if (this._selectedIndex > -1) {
var newIndex;
newIndex = this._selectedIndex < this._items.length ? this._selectedIndex : (this._selectedIndex - 1);
this._selectedIndex = -1;
this.selectedIndex = newIndex;
}
}
}
_afterInited() {
this.initItems();
}
initItems() {
this._items || (this._items = []);
this._items.length = 0;
for (var i = 0; i < 10000; i++) {
var item = this.getChildByName("item" + i);
if (item == null)
break;
this._items.push(item);
item.selected = (i === this._selectedIndex);
item.clickHandler = Handler_1.Handler.create(this, this.itemClick, [i], false);
}
}
itemClick(index) {
this.selectedIndex = index;
}
get selectedIndex() {
return this._selectedIndex;
}
set selectedIndex(value) {
if (this._selectedIndex != value) {
this.setSelect(this._selectedIndex, false);
this._selectedIndex = value;
this.setSelect(value, true);
this.event(Event_1.Event.CHANGE);
this.selectHandler && this.selectHandler.runWith(this._selectedIndex);
}
}
setSelect(index, selected) {
if (this._items && index > -1 && index < this._items.length)
this._items[index].selected = selected;
}
get skin() {
return this._skin;
}
set skin(value) {
if (this._skin != value) {
this._skin = value;
if (this._skin && !Loader_1.Loader.getRes(this._skin)) {
ILaya_1.ILaya.loader.load(this._skin, Handler_1.Handler.create(this, this._skinLoaded), null, Loader_1.Loader.IMAGE, 1);
}
else {
this._skinLoaded();
}
}
}
_skinLoaded() {
this._setLabelChanged();
this.event(Event_1.Event.LOADED);
}
get labels() {
return this._labels;
}
set labels(value) {
if (this._labels != value) {
this._labels = value;
this.removeChildren();
this._setLabelChanged();
if (this._labels) {
var a = this._labels.split(",");
for (var i = 0, n = a.length; i < n; i++) {
var item = this.createItem(this._skin, a[i]);
item.name = "item" + i;
this.addChild(item);
}
}
this.initItems();
}
}
createItem(skin, label) {
return null;
}
get labelColors() {
return this._labelColors;
}
set labelColors(value) {
if (this._labelColors != value) {
this._labelColors = value;
this._setLabelChanged();
}
}
get labelStroke() {
return this._labelStroke;
}
set labelStroke(value) {
if (this._labelStroke != value) {
this._labelStroke = value;
this._setLabelChanged();
}
}
get labelStrokeColor() {
return this._labelStrokeColor;
}
set labelStrokeColor(value) {
if (this._labelStrokeColor != value) {
this._labelStrokeColor = value;
this._setLabelChanged();
}
}
get strokeColors() {
return this._strokeColors;
}
set strokeColors(value) {
if (this._strokeColors != value) {
this._strokeColors = value;
this._setLabelChanged();
}
}
get labelSize() {
return this._labelSize;
}
set labelSize(value) {
if (this._labelSize != value) {
this._labelSize = value;
this._setLabelChanged();
}
}
get stateNum() {
return this._stateNum;
}
set stateNum(value) {
if (this._stateNum != value) {
this._stateNum = value;
this._setLabelChanged();
}
}
get labelBold() {
return this._labelBold;
}
set labelBold(value) {
if (this._labelBold != value) {
this._labelBold = value;
this._setLabelChanged();
}
}
get labelFont() {
return this._labelFont;
}
set labelFont(value) {
if (this._labelFont != value) {
this._labelFont = value;
this._setLabelChanged();
}
}
get labelPadding() {
return this._labelPadding;
}
set labelPadding(value) {
if (this._labelPadding != value) {
this._labelPadding = value;
this._setLabelChanged();
}
}
get direction() {
return this._direction;
}
set direction(value) {
this._direction = value;
this._setLabelChanged();
}
get space() {
return this._space;
}
set space(value) {
this._space = value;
this._setLabelChanged();
}
changeLabels() {
this._labelChanged = false;
if (this._items) {
var left = 0;
for (var i = 0, n = this._items.length; i < n; i++) {
var btn = this._items[i];
this._skin && (btn.skin = this._skin);
this._labelColors && (btn.labelColors = this._labelColors);
this._labelSize && (btn.labelSize = this._labelSize);
this._labelStroke && (btn.labelStroke = this._labelStroke);
this._labelStrokeColor && (btn.labelStrokeColor = this._labelStrokeColor);
this._strokeColors && (btn.strokeColors = this._strokeColors);
this._labelBold && (btn.labelBold = this._labelBold);
this._labelPadding && (btn.labelPadding = this._labelPadding);
this._labelAlign && (btn.labelAlign = this._labelAlign);
this._stateNum && (btn.stateNum = this._stateNum);
this._labelFont && (btn.labelFont = this._labelFont);
if (this._direction === "horizontal") {
btn.y = 0;
btn.x = left;
left += btn.width + this._space;
}
else {
btn.x = 0;
btn.y = left;
left += btn.height + this._space;
}
}
}
this._sizeChanged();
}
commitMeasure() {
this.runCallLater(this.changeLabels);
}
get items() {
return this._items;
}
get selection() {
return this._selectedIndex > -1 && this._selectedIndex < this._items.length ? this._items[this._selectedIndex] : null;
}
set selection(value) {
this.selectedIndex = this._items.indexOf(value);
}
set dataSource(value) {
this._dataSource = value;
if (typeof (value) == 'number' || typeof (value) == 'string')
this.selectedIndex = parseInt(value);
else if (value instanceof Array)
this.labels = value.join(",");
else
super.dataSource = value;
}
get dataSource() {
return super.dataSource;
}
_setLabelChanged() {
if (!this._labelChanged) {
this._labelChanged = true;
this.callLater(this.changeLabels);
}
}
}
exports.UIGroup = UIGroup;