@aliretail/react-materials-components
Version:
116 lines (86 loc) • 5.35 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.Switch = void 0;
var _switch = _interopRequireDefault(require("@alifd/next/lib/switch"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _next = require("@formily/next");
var _shared = require("../shared");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var DEFAULT_WIDTH = 56;
var NextSwitchX = function NextSwitchX(props) {
var _props$isPreview = props.isPreview,
isPreview = _props$isPreview === void 0 ? false : _props$isPreview,
_props$readOnly = props.readOnly,
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
_props$className = props.className,
className = _props$className === void 0 ? '' : _props$className,
checkedChildren = props.checkedChildren,
unCheckedChildren = props.unCheckedChildren,
checked = props.checked;
var _React$useState = React.useState(DEFAULT_WIDTH),
width = _React$useState[0],
setWidth = _React$useState[1];
var blankRef = React.useRef(null);
var getWidth = function getWidth() {
var offsetWidth = 0;
try {
var _blankRef$current, _blankRef$current$upd;
if (blankRef !== null && blankRef !== void 0 && (_blankRef$current = blankRef.current) !== null && _blankRef$current !== void 0 && (_blankRef$current$upd = _blankRef$current.updater) !== null && _blankRef$current$upd !== void 0 && _blankRef$current$upd.isMounted(blankRef === null || blankRef === void 0 ? void 0 : blankRef.current)) {
var _ReactDOM$findDOMNode, _window, _window$getComputedSt2, _childDom$innerText;
var childDom = _reactDom["default"] === null || _reactDom["default"] === void 0 ? void 0 : (_ReactDOM$findDOMNode = _reactDom["default"].findDOMNode(blankRef.current)) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.querySelector('.next-switch-children');
var _window$getComputedSt = (_window = window) === null || _window === void 0 ? void 0 : (_window$getComputedSt2 = _window.getComputedStyle) === null || _window$getComputedSt2 === void 0 ? void 0 : _window$getComputedSt2.call(_window, childDom),
fontSize = _window$getComputedSt.fontSize;
var len = (childDom === null || childDom === void 0 ? void 0 : (_childDom$innerText = childDom.innerText) === null || _childDom$innerText === void 0 ? void 0 : _childDom$innerText.length) || 0;
offsetWidth = Number(fontSize.replace(/[^\d]/g, '')) * len;
}
} catch (e) {}
var tempWidth = offsetWidth + 36;
return Math.max(tempWidth, DEFAULT_WIDTH);
}; // 1.23.6版本以上的fusion使用auto width
var isUseAutoWidth = function isUseAutoWidth() {
var _window2, _window2$Next;
var nextVersion = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$Next = _window2.Next) === null || _window2$Next === void 0 ? void 0 : _window2$Next.version;
if (!nextVersion) return false;
var nextVersionSplit = nextVersion.split('.');
var versionDes = [1, 23, 6];
for (var i = 0; i < versionDes.length; i++) {
var targetVer = versionDes[i];
if (nextVersionSplit[i] > targetVer) {
return true;
} else if (nextVersionSplit[i] < targetVer) {
return false;
}
}
return true;
};
React.useEffect(function () {
if (blankRef) {
var _width = getWidth();
setWidth(_width);
}
}, [checked, checkedChildren, unCheckedChildren]);
var widthCon = isUseAutoWidth() ? {
autoWidth: true
} : {
style: {
width: width
}
};
return /*#__PURE__*/React.createElement(_switch["default"], (0, _extends2["default"])({
ref: blankRef
}, props, widthCon, {
size: "small",
className: (readOnly ? 'aliretail-preview-text' : '') + className,
isPreview: isPreview || readOnly
}));
};
var Switch = (0, _next.connect)({
valueName: 'checked',
getProps: _shared.mapStyledProps,
getComponent: _shared.mapCustomComponent
})(NextSwitchX);
exports.Switch = Switch;