wot-design
Version:
Mobile UI components built on vue.js
1,144 lines (1,006 loc) • 35 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 52);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functioal component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
/***/ }),
/***/ 1:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isServer; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isSupportSticky; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getScrollTargetEvent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return padZero; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return range; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isEqual; });
/* unused harmony export bus */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getType; });
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
var isServer = vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer;
/**
* judge if the browser is support sticky
*/
var isSupportSticky = function isSupportSticky() {
var div = document.createElement('div');
var style = 'display: none; position: -webkit-sticky; position: sticky';
div.style.cssText = style;
var body = document.body;
body.appendChild(div);
var isSupport = /sticky/i.test(window.getComputedStyle(div).position);
body.removeChild(div);
div = null;
return isSupport;
};
/**
* get the overscroll parentNode
* @param {*} element current node
* @param {*} rootElement root node
*/
var getScrollTargetEvent = function getScrollTargetEvent(element) {
var rootElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
var currentNode = element;
while (currentNode && currentNode.tagName !== 'HTML' && currentNode.tagName !== 'BODY' && currentNode !== rootElement && currentNode.nodeType === 1) {
var overflowY = document.defaultView.getComputedStyle(currentNode).overflowY;
if (overflowY === 'auto' || overflowY === 'scroll') {
return currentNode;
}
currentNode = currentNode.parentNode;
}
return rootElement;
};
var padZero = function padZero(number) {
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
number = number + '';
while (number.length < length) {
number = '0' + number;
}
return number;
};
var range = function range(value, min, max) {
return Math.min(Math.max(value, min), max);
};
/** @description 比较数值是否相等 */
var isEqual = function isEqual(value1, value2) {
if (value1 === value2) return true;
if (!(value1 instanceof Array)) return false;
if (!(value2 instanceof Array)) return false;
if (value1.length !== value2.length) return false;
for (var i = 0; i !== value1.length; ++i) {
if (value1[i] !== value2[i]) return false;
}
return true;
};
var bus = new vue__WEBPACK_IMPORTED_MODULE_0___default.a();
/**
* @description 获取目标原始类型
* @param target 任意类型
* @returns {string} type 数据类型
*/
function getType(target) {
// 得到原生类型
var typeStr = Object.prototype.toString.call(target); // 拿到类型值
var type = typeStr.match(/\[object (\w+)\]/)[1]; // 类型值转小写并返回
return type.toLowerCase();
}
/***/ }),
/***/ 16:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony default export */ __webpack_exports__["a"] = ({
loading: Boolean,
arrowHtml: {
type: Boolean,
default: true
},
columnsHeight: {
type: Number,
default: 217
},
loadingColor: String
});
/***/ }),
/***/ 2:
/***/ (function(module, exports) {
module.exports = require("vue");
/***/ }),
/***/ 4:
/***/ (function(module, exports) {
module.exports = require("wot-design/lib/mixins/locale");
/***/ }),
/***/ 5:
/***/ (function(module, exports) {
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
module.exports = _defineProperty;
/***/ }),
/***/ 52:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/picker-view/src/main.vue?vue&type=template&id=12821e1a&
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "wd-picker-view" }, [
_c(
"div",
{
staticClass: "wd-picker-view__columns",
style: "height: " + _vm.columnsHeight + "px"
},
[
_vm._l(_vm.formatColumns, function(column, index) {
return _c("wd-picker-view-column", {
key: index,
attrs: {
"arrow-html": _vm.arrowHtml,
value: _vm.value instanceof Array ? _vm.value[index] : _vm.value,
"initial-data": column,
"value-key": _vm.valueKey,
"label-key": _vm.labelKey
},
on: {
change: function($event) {
return _vm.onChange(index)
}
}
})
}),
_vm._v(" "),
_c("div", {
staticClass: "wd-picker-view__mask",
style: { "background-size": "100% 45%" }
}),
_vm._v(" "),
_vm.loading
? _c(
"div",
{ staticClass: "wd-picker-view__loading" },
[_c("wd-loading", { attrs: { color: _vm.loadingColor } })],
1
)
: _vm._e()
],
2
)
])
}
var staticRenderFns = []
render._withStripped = true
// CONCATENATED MODULE: ./packages/picker-view/src/main.vue?vue&type=template&id=12821e1a&
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/typeof.js
var helpers_typeof = __webpack_require__(9);
var typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread.js
var objectSpread = __webpack_require__(6);
var objectSpread_default = /*#__PURE__*/__webpack_require__.n(objectSpread);
// EXTERNAL MODULE: external "wot-design/lib/mixins/locale"
var locale_ = __webpack_require__(4);
var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
// EXTERNAL MODULE: ./packages/picker-view/src/pickerViewProps.js
var pickerViewProps = __webpack_require__(16);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/picker-view/src/pickerColumn.vue?vue&type=template&id=7a3b1d84&
var pickerColumnvue_type_template_id_7a3b1d84_render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "wd-picker-view-wrapper" }, [
_c(
"ul",
{ ref: "roller", staticClass: "wd-picker-view-roller" },
_vm._l(_vm.data, function(item, index) {
return _c(
"li",
{
key: index,
class: {
"wd-picker-view-roller__item": 1,
"is-hidden": _vm.isHidden(index),
"wd-picker-view-roller__item--disabled":
typeof item === "string" ? false : item.disabled
},
style: {
transform:
"rotate3d(1, 0, 0, " +
-18 * index +
"deg) translateZ(" +
_vm.radius +
"px)"
},
domProps: {
innerHTML: _vm._s(_vm.arrowHtml ? _vm.getItemLabel(item) : "")
},
on: {
click: function($event) {
return _vm.selectItem(index)
}
}
},
[_vm._v(_vm._s(_vm.arrowHtml ? "" : _vm.getItemLabel(item)))]
)
}),
0
),
_vm._v(" "),
_c("div", { staticClass: "wd-picker-view-content" }, [
_c(
"ul",
{ ref: "list", staticClass: "wd-picker-view-list" },
_vm._l(_vm.data, function(item, index) {
return _c(
"li",
{
key: index,
class: [
{
"wd-picker-view-roller__item--disabled":
typeof item === "string" ? false : item.disabled
}
],
domProps: {
innerHTML: _vm._s(_vm.arrowHtml ? _vm.getItemLabel(item) : "")
}
},
[_vm._v(_vm._s(_vm.arrowHtml ? "" : _vm.getItemLabel(item)))]
)
}),
0
)
])
])
}
var pickerColumnvue_type_template_id_7a3b1d84_staticRenderFns = []
pickerColumnvue_type_template_id_7a3b1d84_render._withStripped = true
// CONCATENATED MODULE: ./packages/picker-view/src/pickerColumn.vue?vue&type=template&id=7a3b1d84&
// EXTERNAL MODULE: ./src/utils/index.js
var utils = __webpack_require__(1);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/picker-view/src/pickerColumn.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var MOMENTUM_LIMIT_DURATION = 300; // 惯性滑动限制最大时间
var MOMENTUM_DURATION = 600; // 惯性滑动持续时间
/* harmony default export */ var pickerColumnvue_type_script_lang_js_ = ({
name: 'WdPickerViewColumn',
data: function data() {
return {
touchParams: {
startY: 0,
endY: 0,
startTime: 0,
endTime: 0
},
// 滑动到的 当前索引
currentIndex: 1,
// 平铺 translateY 高度
transformY: 0,
// 弧长 | 每一项高
itemHeight: 35,
// 当前滚动距离
scrollDistance: 0,
// 当前选中索引(已经emit)
selectedIndex: '',
// 半径
radius: 110,
// 单个弧形角度
rollAngle: 18,
// 判断是否
moving: false,
data: this.initialData || []
};
},
props: {
arrowHtml: Boolean,
visibleItemCount: Number,
initialData: {
type: Array,
default: function _default() {
return [];
}
},
defaultIndex: {
type: Number,
default: 0
},
value: [String, Number],
labelKey: String,
valueKey: String
},
computed: {
length: function length() {
return this.data.length;
}
},
watch: {
value: {
handler: function handler(val) {
if (this.length === 0) return;
var selectedIndex = 0;
for (var i = 0; i < this.length; i++) {
if (this.getItemValue(this.data[i]) === this.value) {
selectedIndex = i;
break;
}
}
this.setIndex(selectedIndex, val === '' || val === null || val === undefined);
},
immediate: true
},
initialData: function initialData() {
this.data = this.initialData || [];
},
selectedIndex: function selectedIndex(val) {
if (val !== this.currentIndex) {
this.transformY = 0;
this.setMove(-this.itemHeight * val, 'end', 0, false);
}
},
data: function data(val) {
if (this.selectedIndex && val[this.selectedIndex] && val[this.selectedIndex].disabled) {
this.setIndex(this.selectedIndex, true);
}
}
},
methods: {
isHidden: function isHidden(index) {
if (index >= this.currentIndex + 9 || index <= this.currentIndex - 9) {
return true;
} else {
return false;
}
},
/**
* 滚动位置+角度设置
* @param {Number} offset 距离上一次移动的竖向距离
* @param {String} type 是否是结束滚动 值为'end'表示结束手势操作
* @param {Number} time 滚动手势持续时间
* @param {Boolean} change 是否动态改变当前选中的index 如果是true 那么向外传递
*/
setTransform: function setTransform() {
var translateY = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var type = arguments.length > 1 ? arguments[1] : undefined;
var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : MOMENTUM_DURATION;
var deg = arguments.length > 3 ? arguments[3] : undefined;
if (type === 'end') {
this.$refs.list.style.webkitTransition = "transform ".concat(time, "ms cubic-bezier(0.19, 1, 0.22, 1)");
this.$refs.roller.style.webkitTransition = "transform ".concat(time, "ms cubic-bezier(0.19, 1, 0.22, 1)");
} else {
this.$refs.list.style.webkitTransition = '';
this.$refs.roller.style.webkitTransition = '';
}
this.$refs.list.style.webkitTransform = "translate3d(0, ".concat(translateY, "px, 0)");
this.$refs.roller.style.webkitTransform = "rotate3d(1, 0, 0, ".concat(deg, "deg)");
this.scrollDistance = translateY;
},
/**
* 手势移动间距、滚动位置设置与当前选中index对应,对滚动角度添加限制
* @param {Number} offset 距离上一次移动的竖向距离
* @param {String} type 是否是结束滚动 值为'end'表示结束手势操作
* @param {Number} time 滚动手势持续时间
* @param {Boolean} change 是否动态改变当前选中的index 如果是true 那么向外传递
*/
setMove: function setMove(offset, type, time) {
var change = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
var updateMove = offset + this.transformY;
this.moving = true;
if (type === 'end') {
// 限定滚动距离
this.moving = false;
if (updateMove > 0) {
updateMove = 0;
}
if (updateMove < -(this.length - 1) * this.itemHeight) {
updateMove = -(this.length - 1) * this.itemHeight;
}
var endMove = Math.round(updateMove / this.itemHeight) * this.itemHeight;
var index = Math.abs(Math.round(endMove / this.itemHeight));
var deg = Math.abs(Math.round(endMove / this.itemHeight)) * this.rollAngle; // 添加禁用兜底
if (this.data[index] && this.data[index].disabled) {
index = this.selectedIndex || 0;
this.selectItem(index);
} else {
this.setTransform(endMove, type, time, deg);
}
this.currentIndex = index;
if (change) {
this.setIndex(this.currentIndex);
}
} else {
var _deg = '0'; // 滚动过程中设置最大角度限制
var maxDeg = (this.length - 1) * this.rollAngle + 30;
var minDeg = -30;
_deg = Object(utils["g" /* range */])(updateMove < 0 ? Math.abs(updateMove / this.itemHeight) * this.rollAngle : -updateMove / this.itemHeight * this.rollAngle, minDeg, maxDeg); // touch 事件超出当前区域,会触发触底回弹,因此需要阻止继续移动的行为
if (_deg === minDeg || _deg === maxDeg) return;
this.currentIndex = Math.abs(Math.round(updateMove / this.itemHeight)); // 根据限制角度计算当前 竖向滑动 距离
this.setTransform(updateMove, null, null, _deg);
}
},
getItemLabel: function getItemLabel(item) {
return typeof_default()(item) === 'object' && this.labelKey in item ? item[this.labelKey] : item;
},
getItemValue: function getItemValue(item) {
return typeof_default()(item) === 'object' && this.valueKey in item ? item[this.valueKey] : this.getItemLabel(item);
},
adjustIndex: function adjustIndex(index) {
index = Object(utils["g" /* range */])(index, 0, this.length);
for (var i = index; i < this.length; i++) {
if (typeof_default()(this.data[i]) !== 'object' || !this.data[i].disabled) return i;
}
for (var _i = index; _i > 0; _i--) {
if (typeof_default()(this.data[_i]) !== 'object' || !this.data[_i].disabled) return _i;
}
},
selectItem: function selectItem(index) {
if (this.moving) return;
this.transformY = -this.currentIndex * this.itemHeight;
this.setMove((this.currentIndex - index) * this.itemHeight, 'end', MOMENTUM_DURATION);
},
setIndex: function setIndex(index) {
var userAction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
index = this.adjustIndex(index);
if (this.selectedIndex !== index) {
this.selectedIndex = index;
if (userAction) {
this.$emit('change');
}
}
},
onTouchStart: function onTouchStart(event) {
var changedTouches = event.changedTouches[0];
this.touchParams.startY = changedTouches.pageY;
this.touchParams.startTime = event.timestamp || Date.now();
this.transformY = this.scrollDistance;
},
onTouchMove: function onTouchMove(event) {
event.preventDefault();
var changedTouches = event.changedTouches[0];
this.touchParams.lastY = changedTouches.pageY;
this.touchParams.lastTime = event.timestamp || Date.now();
var offset = this.touchParams.lastY - this.touchParams.startY;
this.setMove(offset);
},
onTouchEnd: function onTouchEnd(event) {
var changedTouches = event.changedTouches[0];
this.touchParams.lastY = changedTouches.pageY;
this.touchParams.lastTime = event.timestamp || Date.now();
var offset = this.touchParams.lastY - this.touchParams.startY;
var moveTime = this.touchParams.lastTime - this.touchParams.startTime;
if (moveTime <= MOMENTUM_LIMIT_DURATION) {
offset = offset * 2;
moveTime = moveTime + MOMENTUM_DURATION;
this.setMove(offset, 'end', moveTime);
} else {
this.setMove(offset, 'end');
}
},
getValue: function getValue() {
var item = this.data[this.selectedIndex || 0];
if (item) {
return this.getItemValue(this.data[this.selectedIndex || 0]);
}
},
getLabel: function getLabel() {
return this.getItemLabel(this.data[this.selectedIndex || 0]);
},
setValue: function setValue(value) {
for (var i = 0; i < this.length; i++) {
if (this.getItemValue(this.data[i]) === value && !this.data[i].disabled) {
this.setIndex(i, false);
return;
}
}
}
},
created: function created() {
if (this.$parent.children) {
this.$parent.children.push(this);
}
},
mounted: function mounted() {
// 初始化位置 函数
this.setMove(-this.itemHeight * (this.selectedIndex || 0), 'end', 0);
this.$el.addEventListener('touchstart', this.onTouchStart);
this.$el.addEventListener('touchmove', this.onTouchMove);
this.$el.addEventListener('touchend', this.onTouchEnd);
this.$el.addEventListener('touchcancel', this.onTouchEnd);
},
beforeDestroy: function beforeDestroy() {
// 移除监听
this.$el.removeEventListener('touchstart', this.onTouchStart);
this.$el.removeEventListener('touchmove', this.onTouchMove);
this.$el.removeEventListener('touchend', this.onTouchEnd);
this.$el.removeEventListener('touchcancel', this.onTouchEnd);
},
destroyed: function destroyed() {
var children = this.$parent.children;
if (children) {
children.splice(children.indexOf(this), 1);
}
}
});
// CONCATENATED MODULE: ./packages/picker-view/src/pickerColumn.vue?vue&type=script&lang=js&
/* harmony default export */ var src_pickerColumnvue_type_script_lang_js_ = (pickerColumnvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(0);
// CONCATENATED MODULE: ./packages/picker-view/src/pickerColumn.vue
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
src_pickerColumnvue_type_script_lang_js_,
pickerColumnvue_type_template_id_7a3b1d84_render,
pickerColumnvue_type_template_id_7a3b1d84_staticRenderFns,
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "packages/picker-view/src/pickerColumn.vue"
/* harmony default export */ var pickerColumn = (component.exports);
// EXTERNAL MODULE: external "wot-design/lib/loading"
var loading_ = __webpack_require__(8);
var loading_default = /*#__PURE__*/__webpack_require__.n(loading_);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/picker-view/src/main.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var mainvue_type_script_lang_js_ = ({
name: 'WdPickerView',
mixins: [locale_default.a],
components: {
WdPickerViewColumn: pickerColumn,
WdLoading: loading_default.a
},
data: function data() {
return {
children: []
};
},
props: objectSpread_default()({}, pickerViewProps["a" /* default */], {
value: [String, Number, Boolean, Array],
columnChange: Function,
columns: {
default: function _default() {
return [];
}
},
valueKey: {
type: String,
default: 'value'
},
labelKey: {
type: String,
default: 'label'
}
}),
computed: {
isSingle: function isSingle() {
return this.columns.length && !(this.columns[0] instanceof Array);
},
formatColumns: function formatColumns() {
return this.isSingle ? [this.columns] : this.columns;
}
},
watch: {
columns: function columns() {
var _this = this;
var formatColumns = this.isSingle ? [this.columns] : this.columns;
formatColumns.forEach(function (data, index) {
_this.setColumnData(index, data);
});
},
value: {
handler: function handler(val) {
if ((val === '' || val === null || val === undefined || val instanceof Array && !val.length) && this.columns.length) {
this.onChange(0);
}
},
immediate: true
}
},
methods: {
onChange: function onChange(columnIndex) {
var _this2 = this;
if (this.columnChange) {
var selectedItem = this.getColumnItem(columnIndex);
if (selectedItem) {
// 列项修改参数:当前pickerView实例、要修改的列项数组、列项、回调函数(执行修改)
this.columnChange(this, selectedItem, columnIndex, function () {
_this2.handleChange(columnIndex);
});
} else {
this.handleChange(columnIndex);
}
} else {
this.handleChange(columnIndex);
}
},
handleChange: function handleChange(columnIndex) {
if (this.isSingle) {
var value = this.getColumnValue(columnIndex);
this.$emit('input', value);
this.$emit('change', this, value, this.getColumnIndex(columnIndex));
} else {
var _value = this.getValues();
this.$emit('input', _value);
this.$emit('change', this, _value, columnIndex);
}
},
getValues: function getValues() {
return this.children.map(function (column) {
return column.getValue();
});
},
setValues: function setValues(values) {
this.children.forEach(function (column, index) {
column.setValue(values[index]);
});
},
getLabels: function getLabels() {
return this.children.map(function (column) {
return column.getLabel();
});
},
getColumnValue: function getColumnValue(columnIndex) {
var column = this.children[columnIndex];
return column && column.getValue();
},
getColumnIndex: function getColumnIndex(columnIndex) {
return (this.children[columnIndex] || {}).selectedIndex || 0;
},
getItems: function getItems() {
return this.children.map(function (column) {
return column.data[column.selectedIndex || 0];
});
},
getColumnItem: function getColumnItem(columnIndex) {
var column = this.children[columnIndex];
if (column) {
return column.data[column.selectedIndex || 0];
}
},
getColumnData: function getColumnData(columnIndex) {
return (this.children[columnIndex] || {}).data;
},
setColumnData: function setColumnData(columnIndex, data) {
var column = this.children[columnIndex];
if (!column) return;
var columnData = column.data.map(function (item) {
if (typeof_default()(item) === 'object') {
return {
label: item.label,
value: item.value || item.label
};
} else {
return {
label: item,
value: item
};
}
});
var newData = data.map(function (item) {
if (typeof_default()(item) === 'object') {
return {
label: item.label,
value: item.value || item.label
};
} else {
return {
label: item,
value: item
};
}
});
if (column && JSON.stringify(columnData) !== JSON.stringify(newData)) {
column.data = data;
column.setIndex(0, false);
}
},
getColumnsData: function getColumnsData() {
if (this.isSingle) {
return this.children[0].data;
}
return this.children.map(function (column) {
return column.data;
});
}
}
});
// CONCATENATED MODULE: ./packages/picker-view/src/main.vue?vue&type=script&lang=js&
/* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_);
// CONCATENATED MODULE: ./packages/picker-view/src/main.vue
/* normalize component */
var main_component = Object(componentNormalizer["a" /* default */])(
src_mainvue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* hot reload */
if (false) { var main_api; }
main_component.options.__file = "packages/picker-view/src/main.vue"
/* harmony default export */ var main = (main_component.exports);
// CONCATENATED MODULE: ./packages/picker-view/index.js
main.install = function (Vue) {
Vue.component(main.name, main);
};
/* harmony default export */ var picker_view = __webpack_exports__["default"] = (main);
/***/ }),
/***/ 6:
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__(5);
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
defineProperty(target, key, source[key]);
});
}
return target;
}
module.exports = _objectSpread;
/***/ }),
/***/ 8:
/***/ (function(module, exports) {
module.exports = require("wot-design/lib/loading");
/***/ }),
/***/ 9:
/***/ (function(module, exports) {
function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
function _typeof(obj) {
if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
module.exports = _typeof = function _typeof(obj) {
return _typeof2(obj);
};
} else {
module.exports = _typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
};
}
return _typeof(obj);
}
module.exports = _typeof;
/***/ })
/******/ });