UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

98 lines (96 loc) 3.48 kB
/** * DevExtreme (cjs/__internal/ui/button/icon.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/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultIconProps = exports.Icon = void 0; var _inferno = require("inferno"); var _inferno2 = require("@devextreme/runtime/inferno"); var _icon = require("../../../core/utils/icon"); var _index = require("../../core/r1/utils/index"); var _combine_classes = require("../../core/utils/combine_classes"); 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 defaultIconProps = exports.defaultIconProps = { position: "left", source: "" }; class Icon extends _inferno2.BaseInfernoComponent { constructor(props) { super(props); this.state = {} } get sourceType() { return (0, _icon.getImageSourceType)(this.props.source) } get cssClass() { return "left" !== this.props.position ? "dx-icon-right" : "" } get iconClassName() { const generalClasses = { "dx-icon": true, [this.cssClass]: !!this.cssClass }; const { source: source } = this.props; if ("dxIcon" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { [`dx-icon-${source}`]: true })) } if ("fontIcon" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { [String(source)]: !!source })) } if ("image" === this.sourceType) { return (0, _combine_classes.combineClasses)(generalClasses) } if ("svg" === this.sourceType) { return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, { "dx-svg-icon": true })) } return "" } get restAttributes() { const restProps = _extends({}, this.props); ["iconTemplate", "position", "source"].forEach((excluded => { delete restProps[excluded] })); return restProps } render() { const { iconClassName: iconClassName, props: { source: source }, sourceType: sourceType } = this; const IconTemplate = (0, _index.getTemplate)(this.props.iconTemplate); return (0, _inferno.createFragment)(["dxIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "fontIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "image" === sourceType && (0, _inferno.createVNode)(1, "img", iconClassName, null, 1, { alt: "", src: source }), IconTemplate && (0, _inferno.createVNode)(1, "i", iconClassName, IconTemplate({}), 0)], 0) } } exports.Icon = Icon; Icon.defaultProps = defaultIconProps;