tfp
Version:
A Web UI framework for TaskBuilder
158 lines (131 loc) • 5.24 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _controller = require("../controller.js");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
/**
* 单选框组件
* @param {[type]} dataModel [description]
*/
var Radio = /*#__PURE__*/function (_FormInput) {
(0, _inherits2["default"])(Radio, _FormInput);
var _super = _createSuper(Radio);
function Radio(__tfp, dataModel, parent) {
(0, _classCallCheck2["default"])(this, Radio);
return _super.call(this, __tfp, "Radio", dataModel, parent);
} //属性
(0, _createClass2["default"])(Radio, [{
key: "value",
get: function get() {
return this.dataModel.value;
},
set: function set(value) {
this.dataModel.value = value;
if (this._jqObj) {
this._jqObj.find(".tfp-radio-box").each(function () {
if ($(this).attr("data-option") == value) {
$(this).find("div").css("display", "inline-block");
} else {
$(this).find("div").css("display", "none");
}
});
}
if (!this._tfp.isDesigning) {
this.valueOnChange();
this.exeEventHandler("onChange", value);
}
}
}, {
key: "options",
get: function get() {
return this.dataModel.options;
},
set: function set(value) {
if (!value) return;
this.setOptions(value);
if (this._jqObj) {
this._jqObj.empty();
for (var i = 0; i < value.length; i++) {
this.addOption(value[i], true);
}
}
}
}, {
key: "portrait",
get: function get() {
return this.dataModel.portrait;
},
set: function set(value) {
this.dataModel.portrait = value ? true : false;
if (this._jqObj) {
if (value) {
var that = this;
this._jqObj.find("label").each(function (index) {
if (index < that._jqObj.find("label").length - 1) {
$("<br/>").insertAfter($(this));
}
});
} else {
this._jqObj.find("br").remove();
}
}
}
}, {
key: "getOptionHtml",
value: function getOptionHtml(indent, option) {
var optionHtml = "";
var optionDisplay = "none";
if (this.value == option.value) optionDisplay = "inline-block";
var disabledStyle = "";
if (this.dataModel.disabled) disabledStyle = " style=\"background-color:#eeeeee;\"";
optionHtml += indent + "\t<div class=\"tfp-radio-box\" " + disabledStyle + " data-option=\"" + option.value + "\">" + "<div style=\"display:" + optionDisplay + ";\"></div></div>";
if (option.text) {
optionHtml += "<label>" + option.text + "</label>\r\n";
} else {
optionHtml += "<label>" + option.value + "</label>\r\n";
}
return optionHtml;
}
}, {
key: "addOption",
value: function addOption(option, isInit) {
var indent = this.getHtmlIndent();
var str = "";
if (this.portrait && this._jqObj.children().length > 0) str += indent + "\t<br>\r\n";
str += this.getOptionHtml(indent, option);
if (str != "") {
this._jqObj.append(str);
this.bindOptionEvent(this._jqObj.find(".tfp-radio-box").last().get(0));
if (!isInit) this.dataModel.options.push(option);
}
}
}, {
key: "bindOptionEvent",
value: function bindOptionEvent(el) {
var that = this;
$(el).click(function () {
if (that.dataModel.disabled || that.dataModel.readonly) return;
that.value = $(this).attr("data-option");
});
}
}, {
key: "initRuntime",
value: function initRuntime() {
var that = this;
this._jqObj.find(".tfp-radio-box").each(function () {
that.bindOptionEvent(this);
});
}
}]);
return Radio;
}(_controller.FormInput);
exports["default"] = Radio;