devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
120 lines (117 loc) • 4.47 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/radio_group/m_radio_button.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _click = require("../../../common/core/events/click");
var _events_engine = _interopRequireDefault(require("../../../common/core/events/core/events_engine"));
var _index = require("../../../common/core/events/utils/index");
var _component_registrator = _interopRequireDefault(require("../../../core/component_registrator"));
var _devices = _interopRequireDefault(require("../../../core/devices"));
var _renderer = _interopRequireDefault(require("../../../core/renderer"));
var _editor = _interopRequireDefault(require("../../ui/editor/editor"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
const RADIO_BUTTON_CLASS = "dx-radiobutton";
const RADIO_BUTTON_ICON_CLASS = "dx-radiobutton-icon";
const RADIO_BUTTON_ICON_DOT_CLASS = "dx-radiobutton-icon-dot";
const RADIO_BUTTON_CHECKED_CLASS = "dx-radiobutton-checked";
const RADIO_BUTTON_ICON_CHECKED_CLASS = "dx-radiobutton-icon-checked";
class RadioButton extends _editor.default {
_supportedKeys() {
return _extends({}, super._supportedKeys(), {
space: function(e) {
e.preventDefault();
this._clickAction({
event: e
})
}
})
}
_getDefaultOptions() {
return _extends({}, super._getDefaultOptions(), {
hoverStateEnabled: true,
activeStateEnabled: true,
value: false
})
}
_canValueBeChangedByClick() {
return true
}
_defaultOptionsRules() {
return super._defaultOptionsRules().concat([{
device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
options: {
focusStateEnabled: true
}
}])
}
_init() {
super._init();
this.$element().addClass("dx-radiobutton")
}
_initMarkup() {
super._initMarkup();
this._renderIcon();
this._renderCheckedState(this.option("value"));
this._renderClick();
this.setAria("role", "radio")
}
_renderIcon() {
this._$icon = (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon");
(0, _renderer.default)("<div>").addClass("dx-radiobutton-icon-dot").appendTo(this._$icon);
this.$element().append(this._$icon)
}
_renderCheckedState(checked) {
this.$element().toggleClass("dx-radiobutton-checked", checked).find(".dx-radiobutton-icon").toggleClass("dx-radiobutton-icon-checked", checked);
this.setAria("checked", checked)
}
_renderClick() {
const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
this._clickAction = this._createAction((args => {
this._clickHandler(args.event)
}));
_events_engine.default.off(this.$element(), eventName);
_events_engine.default.on(this.$element(), eventName, (e => {
var _this$_clickAction;
null === (_this$_clickAction = this._clickAction) || void 0 === _this$_clickAction || _this$_clickAction.call(this, {
event: e
})
}))
}
_clickHandler(e) {
this._saveValueChangeEvent(e);
this.option("value", true)
}
_optionChanged(args) {
if ("value" === args.name) {
this._renderCheckedState(args.value);
super._optionChanged(args)
} else {
super._optionChanged(args)
}
}
}(0, _component_registrator.default)("dxRadioButton", RadioButton);
var _default = exports.default = RadioButton;