react-address-picker-cc
Version:
仿京东移动端地址选择组件 mobile/pc address picker component
537 lines (511 loc) • 29 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var ReactDOM = require('react-dom');
var PropTypes = require('prop-types');
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
function styleInject(css, ref) {
if ( ref === void 0 ) ref = {};
var insertAt = ref.insertAt;
if (!css || typeof document === 'undefined') { return; }
var head = document.head || document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.type = 'text/css';
if (insertAt === 'top') {
if (head.firstChild) {
head.insertBefore(style, head.firstChild);
} else {
head.appendChild(style);
}
} else {
head.appendChild(style);
}
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
}
var css = ":root {\n --rap-dialog-bg: #fff;\n --rap-dialog-one-text:#2f3742;\n --rap-dialog-one-active:#2f5aff;\n --rap-dialog-one-bg-active: #f7f8fa;\n}\n\n\n.rap-address-picker {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0);\n animation: zindexdown .3s forwards;\n border-radius: 3px 3px 0 0;\n -webkit-text-size-adjust: none;\n}\n\n.rap-address-picker-visible {\n animation: zindexup .3s forwards;\n background: rgba(0, 0, 0, .2);\n height: 100%;\n opacity: 1;\n overflow: hidden;\n}\n\n.rap-address-picker-modal {\n transition: transform 0.3s;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n background: #fff;\n background: var(--rap-dialog-bg);\n height: 70%;\n transform: translate3d(0, 100%, 0);\n display: flex;\n flex-direction: column;\n}\n\n.rap-address-picker-visible .rap-address-picker-modal {\n transform: translate3d(0, 0, 0);\n}\n.rap-address-picker-title {\n position: relative;\n font-size: 17px;\n padding-top: 10px;\n padding-bottom: 12px;\n margin-bottom: 6px;\n border-bottom: 1px solid #f7f8fa;\n border-bottom: 1px solid var(--rap-dialog-one-bg-active);\n color: #2f3742;\n color: var(--rap-dialog-one-text);\n text-align: center;\n -webkit-user-select: none;\n user-select: none\n}\n\n.rap-address-picker-title-close {\n position: absolute;\n right: 16px;\n top: 16px;\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.rap-address-picker-title-close:before, .rap-address-picker-title-close:after {\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n top: 50%;\n left: 0;\n margin-top: 0px;\n background: #999;\n}\n.rap-address-picker-title-close:before {\n transform: rotate(45deg);\n}\n.rap-address-picker-title-close:after {\n transform: rotate(-45deg);\n}\n\n.rap-address-picker-main-wrap {\n width: 100%;\n height: 100%;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n max-width: 768px;\n margin: 0 auto\n}\n\n.rap-address-picker-nav {\n -webkit-box-flex: 0;\n flex: none;\n position: relative\n}\n\n.rap-address-picker-nav-active {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 1px;\n background: #2f5aff;\n background: var(--rap-dialog-one-active);\n -webkit-transition: left .3s ease-in;\n transition: left .3s ease-in;\n width: 50px\n}\n\n.rap-address-picker-nav-list {\n display: -webkit-box;\n display: flex\n}\n\n.rap-address-picker-nav-list:before {\n content: \"\";\n height: 1px;\n left: 20px;\n right: 20px;\n position: absolute;\n bottom: 0;\n background-color: #f7f8fa;\n background-color: var(--rap-dialog-one-bg-active);\n -webkit-transform: scaleY(.5);\n -ms-transform: scaleY(.5);\n transform: scaleY(.5)\n}\n\n.rap-address-picker-nav-item {\n -webkit-box-flex: 0;\n flex: none;\n padding: 7px 0;\n text-align: center;\n font-size: 14px;\n color: #2f3742;\n color: var(--rap-dialog-one-text);\n margin-left: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 7em;\n -webkit-user-select: none;\n user-select: none;\n position: relative;\n cursor: pointer\n}\n\n.rap-address-picker-nav-item:before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 1px;\n background: rgba(0,0,0,0)\n}\n\n.rap-address-picker-nav-item+.rap-address-picker-nav-item {\n margin-left: 36px\n}\n\n@media (max-width: 374px) {\n .rap-address-picker-nav-item+.rap-address-picker-nav-item {\n margin-left:20px\n }\n}\n\n.rap-address-picker-nav-item.active {\n color: #2f5aff;\n color: var(--rap-dialog-one-active);\n}\n\n.rap-address-picker-nav-item.active:before {\n background: #2f5aff;\n background: var(--rap-dialog-one-active);\n}\n\n.rap-address-picker-body {\n -webkit-box-flex: 1;\n flex: auto;\n position: relative;\n overflow: hidden\n}\n\n.rap-address-picker-body-wrap {\n display: -webkit-box;\n display: flex;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n -webkit-transition-property: -webkit-transform;\n transition-property: -webkit-transform;\n transition-property: transform;\n transition-property: transform,-webkit-transform;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transition-timing-function: ease-in-out;\n transition-timing-function: ease-in-out;\n will-change: transform;\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar {\n width: 6px;\n height: 8px;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-button {\n width: 0;\n height: 0\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-track {\n -webkit-border-radius: 8px\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-thumb {\n background-color: rgba(70,77,92,.4);\n -webkit-border-radius: 5px\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-thumb:active,.rap-address-picker-body-wrap ::-webkit-scrollbar-thumb:hover {\n background-color: #999\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-corner {\n background-color: #f1f1f1;\n -webkit-border-radius: 1px\n}\n\n.rap-address-picker-body-wrap ::-webkit-scrollbar-track:hover {\n background-color: rgba(0,0,0,0)\n}\n\n.rap-address-picker-body-list {\n font-size: 14px;\n position: relative;\n float: left;\n overflow-y: scroll;\n height: 100%;\n overflow-scrolling: touch;\n -webkit-overflow-scrolling: touch;\n padding: 7px 0;\n -webkit-box-flex: 1;\n flex: 1;\n box-sizing: border-box\n}\n\n.rap-address-picker-body-item {\n position: relative;\n padding: 13px 20px;\n line-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n -webkit-user-select: none;\n user-select: none;\n color: #2f3742;\n color: var(--rap-dialog-one-text);\n cursor: pointer\n}\n\n.rap-address-picker-body-item.active {\n color: #2f5aff;\n color: var(--rap-dialog-one-active);\n background: #f7f8fa;\n background: var(--rap-dialog-one-bg-active);\n}\n\n.rap-address-picker-body-item.active:after {\n content: '';\n position: absolute;\n border-width: 0 2px 2px 0;\n border-style: solid;\n height: 13px;\n width: 5px;\n right: 25px;\n margin-top: 3px;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg)\n}\n\n@keyframes zindexdown {\n 0% {\n z-index: 999;\n }\n to {\n z-index: -1;\n }\n}\n\n@keyframes zindexup {\n 0% {\n z-index: -1;\n }\n to {\n z-index: 999;\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n background: transparent;\n }\n 80% {\n opacity: .2;\n }\n to {\n opacity: 1;\n background: #2f5aff;\n background: var(--rap-dialog-one-active);\n }\n}\n\n\n.rap-address-picker.theme-dark {\n --rap-dialog-bg: #0E1226;\n --rap-dialog-one-text: #ffffff;\n --rap-dialog-one-bg-active: rgba(255,255,255,.06);\n}";
styleInject(css);
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var bind = createCommonjsModule(function (module) {
/*!
Copyright (c) 2017 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
var hasOwn = {}.hasOwnProperty;
function classNames () {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(this && this[arg] || arg);
} else if (Array.isArray(arg)) {
classes.push(classNames.apply(this, arg));
} else if (argType === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(this && this[key] || key);
}
}
}
}
return classes.join(' ');
}
if (module.exports) {
classNames.default = classNames;
module.exports = classNames;
} else {
window.classNames = classNames;
}
}());
});
var PICKER_CLASSNAME = 'rap-address-picker';
function guid() {
return 'xxx'.replace(/[x]/g, function (c) {
var r = Math.random() * 16 | 0;
var v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
var cx = bind.bind(css);
var getSelectedRows = function (_a) {
var selectedIdList = _a.selectedIdList, dataSource = _a.dataSource;
var selectedRows = [];
if (selectedIdList && dataSource && selectedIdList.length) {
var loop_1 = function (ds, level) {
var v = selectedIdList[level];
var rows = ds.filter(function (item) { return item.id === v; });
if (rows.length) {
selectedRows.push(rows[0]);
if (rows[0].subArea && rows[0].subArea.length && selectedIdList.length === level + 1) {
selectedRows.push({});
}
else if (rows[0].subArea && rows[0].subArea.length) {
loop_1(rows[0].subArea, ++level);
}
}
};
loop_1(dataSource, 0);
}
if (!selectedRows.length) {
return {
currentLevel: 0,
selectedRows: [{}]
};
}
return {
currentLevel: selectedRows.length - 1,
selectedRows: selectedRows
};
};
var AddressPicker = /** @class */ (function (_super) {
__extends(AddressPicker, _super);
function AddressPicker(props) {
var _this = _super.call(this, props) || this;
_this.idUUid = guid();
_this.touch = {
startX: -1,
startY: -1,
moved: false,
targetIdx: -1
};
// TODO 这里要不要改一下?
_this.pickerStatusChange = function (show) {
if (show) {
_this.doAnimation();
_this.bindEvent();
}
_this.props.pickerStatusChange(show);
};
/**
* 外部调用,显示事件
*
* @memberof AddressPicker
*/
_this.show = function () {
_this.setState({
show: true
}, function () { return _this.pickerStatusChange(_this.state.show); });
};
/**
* 外部调用,显示事件
*
* @memberof AddressPicker
*/
_this.hide = function () {
_this.setState({
// 关掉后重置数据
selectedRows: [{}],
currentLevel: -1,
show: false
}, function () { return _this.pickerStatusChange(_this.state.show); });
};
// TODO 目标是使用Ref外部调用
_this.changeInnerState = function () {
var _a = _this.props, selectedIdList = _a.selectedIdList, dataSource = _a.dataSource;
var selectedRows = _this.state.selectedRows;
// TODO 这里要不要改一下?
// 显示前,看selectedRows是否为空
if (selectedIdList.length >= 1 && dataSource.length && selectedRows[0] && (!selectedRows[0].id)) {
var oneId_1 = selectedIdList[0];
var rows = dataSource.filter(function (item) { return item.id === oneId_1; });
if (rows) {
var _b = getSelectedRows({
selectedIdList: selectedIdList,
dataSource: dataSource
}), selectedRows_1 = _b.selectedRows, currentLevel = _b.currentLevel;
_this.setState({
currentLevel: currentLevel,
selectedRows: selectedRows_1
});
}
}
};
_this.onTouchStart = function (e) {
_this.touch.startX = e.touches[0].clientX;
_this.touch.startY = e.touches[0].clientY;
_this.touch.moved = false;
};
_this.onTouchMove = function (e) {
var _a = _this.state, currentLevel = _a.currentLevel, selectedRows = _a.selectedRows;
var moveX = e.touches[0].clientX;
var moveY = e.touches[0].clientY;
var deltaX = moveX - (_this.touch.startX || 0);
var deltaY = moveY - (_this.touch.startY || 0);
if (Math.abs(deltaY) > Math.abs(deltaX))
return;
var mainWrapRef = _this.mainWrapRef;
if (!mainWrapRef)
return;
var innerWidth = mainWrapRef.offsetWidth;
var curOffsetWidth = -(currentLevel * innerWidth);
var maxOffsetWidth = -((selectedRows.length - 1) * innerWidth);
var offsetWidth = Math.min(0, Math.max(maxOffsetWidth, curOffsetWidth + deltaX));
if (offsetWidth >= 0 || offsetWidth <= maxOffsetWidth)
return;
if (!_this.touch.moved)
_this.touch.moved = true;
e.preventDefault();
_this.listWrapRef.style.transform = "translate3d(" + offsetWidth + "px, 0, 0)";
var percent = Math.abs(deltaX / innerWidth);
_this.touch.targetIdx =
percent >= 0.1
? (deltaX < 0 ? currentLevel + 1 : currentLevel - 1)
: currentLevel;
};
_this.onTouchEnd = function () {
var currentLevel = _this.state.currentLevel;
if (!_this.touch.moved)
return;
var mainWrapRef = _this.mainWrapRef;
if (!mainWrapRef)
return;
var innerWidth = mainWrapRef.offsetWidth;
if (_this.touch.targetIdx !== currentLevel) {
_this.setState({
currentLevel: _this.touch.targetIdx || 0
});
}
else {
// 没有移动到别的级别,就返回当前
_this.listWrapRef.style.transform = "translate3d(-" + (currentLevel) * innerWidth + "px, 0, 0)";
}
};
_this.bindEvent = function () {
var wrap = _this.listWrapRef;
if (wrap) {
wrap.addEventListener('touchstart', _this.onTouchStart, false);
wrap.addEventListener('touchmove', _this.onTouchMove, false);
wrap.addEventListener('touchend', _this.onTouchEnd, false);
}
};
_this.unBindEvent = function () {
var wrap = _this.listWrapRef;
if (wrap) {
wrap.removeEventListener('touchstart', _this.onTouchStart, false);
wrap.removeEventListener('touchmove', _this.onTouchMove, false);
wrap.removeEventListener('touchend', _this.onTouchEnd, false);
}
};
_this.doAnimation = function () {
var currentLevel = _this.state.currentLevel;
_this.setItemCenter();
var navItem = _this.navRef.children[currentLevel];
if (navItem) {
_this.navLineRef.style.width = navItem.offsetWidth + "px";
_this.navLineRef.style.left = navItem.offsetLeft + "px";
_this.navLineRef.style.bottom = _this.navRef.clientHeight - (navItem.offsetTop + navItem.offsetHeight) + "px";
var activeItem = document.querySelector("." + PICKER_CLASSNAME + "-nav-item.active");
if (activeItem) {
activeItem.classList.remove('active');
}
setTimeout(function () {
var _toActiItem = document.querySelector("#nav-item-" + _this.idUUid + "-" + currentLevel);
_toActiItem && _toActiItem.classList.add('active');
}, 300);
}
};
// 当前高亮的导航项 居中
_this.setItemCenter = function () {
var listWrapRef = _this.listWrapRef;
var listWrapChilds = listWrapRef.children;
var selectedRows = _this.state.selectedRows;
selectedRows.forEach(function (row, rowIndex) {
var listElm = listWrapChilds[rowIndex];
if (!listElm)
return;
// 当没有下级或者下级的总高度没有超过父级高度,都pass
if (!listElm.children.length || listElm.children.length * 40 < listElm.offsetHeight)
return;
if (!row.id) {
// 当未选择时,应该滚到顶部
listElm.scrollTop = 0;
return;
}
// 滚到中间
var activeItem = listElm.querySelector("." + PICKER_CLASSNAME + "-body-item.active");
if (!activeItem)
return;
var listElmHeight = listElm.offsetHeight;
var elmHeight = activeItem.offsetHeight;
var dataY = activeItem.offsetTop;
var scrollY = dataY - listElmHeight / 2 + elmHeight - 10;
listElm.scrollTop = scrollY;
});
};
_this.getOneLevelData = function (item, level) {
_this.props.getOneLevelData(item, level).then(function (_a) {
var dataSource = _a.dataSource;
// 异步加载数据后
var selectedRows = getSelectedRows({
selectedIdList: item.id ? [item.id] : [],
dataSource: dataSource
}).selectedRows;
_this.setState({
selectedRows: selectedRows
}, function () {
_this.doAnimation();
});
}).catch(function (error) { return console.log('error :', error); });
};
_this.onSelectedRow = function (item, level) { return function () {
var currentLevel = _this.state.currentLevel;
var selectedRows = _this.state.selectedRows;
var isAsyncData = _this.props.isAsyncData;
// 大于一级才可以没有下级
var isEnd = (level || !isAsyncData) && (!item.subArea || !item.subArea.length);
if (selectedRows[level]) {
// 用于下方选择的数据和空项目
var tmpItem = [item];
if (isAsyncData && level === 0 && item.subArea && !item.subArea.length) {
_this.getOneLevelData(item, level);
}
if (item.subArea && item.subArea.length && currentLevel + 1 >= selectedRows.length) {
tmpItem.push({});
}
else if (currentLevel + 1 < selectedRows.length) {
selectedRows = selectedRows.slice(0, currentLevel + 1);
tmpItem.push({});
}
selectedRows.splice.apply(selectedRows, [level, 1].concat(tmpItem));
_this.setState({
selectedRows: selectedRows.slice(),
currentLevel: isEnd ? level : level + 1
}, function () {
isEnd && _this.hide();
});
}
if (isEnd) {
var _selectList = selectedRows.filter(function (_item) { return typeof _item.id !== 'undefined'; }).map(function (_item) {
return {
id: _item.id,
areaName: _item.areaName
};
});
_this.props.onAddressChange(_selectList);
}
}; };
_this.onSelectedNav = function (level) { return function () {
_this.setState({
currentLevel: level
});
}; };
_this.onNavBarMove = function () {
_this.navLineRef.style.width = 0;
};
_this.renderNextData = function (ds, level, item) {
if (level === void 0) { level = 0; }
var selectedRows = _this.state.selectedRows;
var row = selectedRows[level] || {};
var lists = item && level > 0 ? selectedRows[level - 1].subArea : ds;
if (!lists || !lists.length) {
return null;
}
return (React.createElement("div", { key: level, className: PICKER_CLASSNAME + "-body-list" }, lists.map(function (item) { return (React.createElement("div", { key: item.id, className: cx(PICKER_CLASSNAME + "-body-item", { active: row.id === item.id }), onClick: _this.onSelectedRow(item, level) }, item.areaName)); })));
};
// 获取选中的选项
var _a = getSelectedRows(props), currentLevel = _a.currentLevel, selectedRows = _a.selectedRows;
_this.state = {
selectedRows: selectedRows,
currentLevel: currentLevel,
show: false
};
return _this;
}
AddressPicker.getDerivedStateFromProps = function (nextProps, prevState) {
var selectedIdList = nextProps.selectedIdList, dataSource = nextProps.dataSource;
var prevSelectedRows = prevState.selectedRows, show = prevState.show;
// 初始化数据,需要外界获取好市级数据
// 从关闭到打开,每次都要重新获取一遍数据,为了保证准确,也为了防止外界强行更换了数据
if (!show && selectedIdList.length >= 1 && dataSource.length && prevSelectedRows[0] && (!prevSelectedRows[0].id)) {
var oneId_2 = selectedIdList[0];
var rows = dataSource.filter(function (item) { return item.id === oneId_2; });
if (rows) {
var _a = getSelectedRows(nextProps), selectedRows = _a.selectedRows, currentLevel = _a.currentLevel;
return {
currentLevel: currentLevel,
selectedRows: selectedRows
};
}
}
return null;
};
AddressPicker.prototype.componentWillUnmount = function () {
this.unBindEvent();
};
AddressPicker.prototype.componentDidUpdate = function (prevProps, prevState) {
var _this = this;
var show = this.state.show;
// 更换层级时执行
if (show && prevProps && prevState.currentLevel !== this.state.currentLevel) {
setTimeout(function () {
_this.doAnimation();
});
}
};
AddressPicker.prototype.render = function () {
var _this = this;
var _a;
var _b = this.state, selectedRows = _b.selectedRows, show = _b.show, currentLevel = _b.currentLevel;
var _c = this.props, dataSource = _c.dataSource, navTips = _c.navTips, title = _c.title, className = _c.className, theme = _c.theme, onClose = _c.onClose;
var wrapStyles = {
width: selectedRows.length * 100 + "%"
};
if (selectedRows.length === 1) {
wrapStyles.transform = 'translate3d(0, 0, 0)';
}
else if (currentLevel > 0) {
wrapStyles.transform = "translate3d(-" + (currentLevel / selectedRows.length) * 100 + "%, 0, 0)";
}
var node = (React.createElement("div", { className: cx(PICKER_CLASSNAME + " " + className + " " + theme, (_a = {}, _a[PICKER_CLASSNAME + "-visible"] = show, _a)) },
React.createElement("div", { className: PICKER_CLASSNAME + "-modal" },
React.createElement("div", { className: PICKER_CLASSNAME + "-main-wrap", ref: function (w) { return (_this.mainWrapRef = w); } },
React.createElement("div", { className: PICKER_CLASSNAME + "-title" },
title,
React.createElement("div", { className: PICKER_CLASSNAME + "-title-close", onClick: onClose })),
React.createElement("div", { className: PICKER_CLASSNAME + "-nav" },
React.createElement("div", { className: PICKER_CLASSNAME + "-nav-list", ref: function (nav) { return (_this.navRef = nav); }, onTouchMove: this.onNavBarMove }, selectedRows.map(function (item, index) { return (React.createElement("div", { key: index, onClick: _this.onSelectedNav(index), id: "nav-item-" + _this.idUUid + "-" + index, className: PICKER_CLASSNAME + "-nav-item" }, item.id ? item.areaName : navTips)); })),
React.createElement("span", { className: PICKER_CLASSNAME + "-nav-active", ref: function (navline) { return (_this.navLineRef = navline); } })),
React.createElement("div", { className: PICKER_CLASSNAME + "-body" },
React.createElement("div", { className: PICKER_CLASSNAME + "-body-wrap", ref: function (wrap) { return (_this.listWrapRef = wrap); }, style: wrapStyles }, selectedRows.map(function (item, index) { return _this.renderNextData(dataSource, index, item); })))))));
return ReactDOM.createPortal(node, document.body);
};
return AddressPicker;
}(React.Component));
AddressPicker.propTypes = {
/**
* 数据源,多维数组
*/
dataSource: PropTypes.array.isRequired,
/**
* 自定义组件标题
*/
title: PropTypes.node,
/**
* 自定义 ClassName
*/
className: PropTypes.string,
/**
* 主题
*/
theme: PropTypes.string,
/**
* 自定义样式
*/
customStyle: PropTypes.object,
/**
* 地址导航提示文字
*/
navTips: PropTypes.string,
/**
* 初始化地址的id数组
*/
selectedIdList: PropTypes.array,
/**
* 是否异步获取数据
*/
isAsyncData: PropTypes.bool,
/**
* 自定义 关闭方法
*/
onClose: function () { },
/**
* 初始化地址的id数组
*/
getOneLevelData: function () { },
/**
* 初始化地址的id数组
*/
onAddressChange: function () { },
/**
* pickerStatusChange
*/
pickerStatusChange: function () { }
};
AddressPicker.defaultProps = {
dataSource: [],
navTips: '请选择',
title: '选择地址',
className: '',
theme: '',
isAsyncData: false,
selectedIdList: [],
onClose: function () { },
getOneLevelData: function () { },
pickerStatusChange: function () { },
onAddressChange: function () { }
};
exports.default = AddressPicker;
//# sourceMappingURL=index.js.map