import { normalizeComponent, createInjector } from 'vue-runtime-helpers'; // // // // // // // // // // // // // TODO: 支持自定义的render渲染 // import textRender from './render' var script = { props: { cancelText: { type: String }, confirmText: { type: String }, title: { type: String } }, methods: { cancel () { this.$emit('cancel'); }, confirm () { this.$emit('confirm'); } } }; /* script */ const __vue_script__ = script; /* template */ var __vue_render__ = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { staticClass: "header" }, [ _c("div", { staticClass: "left" }, [ _c("span", { staticClass: "btn", on: { click: _vm.cancel } }, [ _vm._v(_vm._s(_vm.cancelText)) ]) ]), _vm._v(" "), _c("div", { staticClass: "title" }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c("div", { staticClass: "right" }, [ _c("span", { staticClass: "btn", on: { click: _vm.confirm } }, [ _vm._v(_vm._s(_vm.confirmText)) ]) ]) ]) }; var __vue_staticRenderFns__ = []; __vue_render__._withStripped = true; /* style */ const __vue_inject_styles__ = function (inject) { if (!inject) return inject("data-v-6ffe26b0_0", { source: ".header[data-v-6ffe26b0] {\n height: 44px;\n line-height: 44px;\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: justify;\n justify-content: space-between;\n position: relative;\n}\n.header[data-v-6ffe26b0]::after {\n position: absolute;\n box-sizing: border-box;\n content: \" \";\n pointer-events: none;\n top: -50%;\n right: -50%;\n bottom: -50%;\n left: -50%;\n border: 0 solid #ebedf0;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n border-width: 1px 0;\n}\n.title[data-v-6ffe26b0] {\n max-width: 50%;\n font-weight: 500;\n font-size: 16px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.btn[data-v-6ffe26b0] {\n padding: 0 16px;\n color: #1989fa;\n font-size: 14px;\n background-color: transparent;\n}\n\n/*# sourceMappingURL=header.vue.map */", map: {"version":3,"sources":["/Users/naice/my-project/vue-picker/src/header.vue","header.vue"],"names":[],"mappings":"AAuCA;EACA,YAAA;EACA,iBAAA;EACA,oBAAA;EAAA,aAAA;EACA,yBAAA;UAAA,8BAAA;EACA,kBAAA;ACtCA;ADuCA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;EACA,oBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,uBAAA;EACA,6BAAA;UAAA,qBAAA;EACA,mBAAA;ACrCA;ADwCA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ACrCA;ADuCA;EACA,eAAA;EACA,cAAA;EACA,eAAA;EACA,6BAAA;ACpCA;;AAEA,qCAAqC","file":"header.vue","sourcesContent":["\n\n\n\n\n",".header {\n height: 44px;\n line-height: 44px;\n display: flex;\n justify-content: space-between;\n position: relative;\n}\n.header::after {\n position: absolute;\n box-sizing: border-box;\n content: \" \";\n pointer-events: none;\n top: -50%;\n right: -50%;\n bottom: -50%;\n left: -50%;\n border: 0 solid #ebedf0;\n transform: scale(0.5);\n border-width: 1px 0;\n}\n\n.title {\n max-width: 50%;\n font-weight: 500;\n font-size: 16px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.btn {\n padding: 0 16px;\n color: #1989fa;\n font-size: 14px;\n background-color: transparent;\n}\n\n/*# sourceMappingURL=header.vue.map */"]}, media: undefined }); }; /* scoped */ const __vue_scope_id__ = "data-v-6ffe26b0"; /* module identifier */ const __vue_module_identifier__ = undefined; /* functional template */ const __vue_is_functional_template__ = false; /* style inject SSR */ /* style inject shadow dom */ var Header = normalizeComponent( { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, createInjector, undefined, undefined ); const DEFTAULT_ITEM_HEIGHT = 44; // 兼容pc 移动端 const HAS_TOUCH = 'ontouchstart' in window; const START_EVENT = HAS_TOUCH ? 'touchstart' : 'mousedown'; const MOVE_EVENT = HAS_TOUCH ? 'touchmove' : 'mousemove'; const END_EVENT = HAS_TOUCH ? 'touchend' : 'mouseup'; const getClient = e => { let clientX = HAS_TOUCH ? e.changedTouches[0].clientX : e.clientX; let clientY = HAS_TOUCH ? e.changedTouches[0].clientY : e.clientY; return { x: clientX, y: clientY } }; const isPC = () => { const userAgentInfo = navigator.userAgent; const Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']; let flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break } } return flag }; // const DEFAULT_DURATION = 200; // 惯性滑动思路: // 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `LIMIT_TIME` 且 move // 距离大于 `LIMIT_DISTANCE` 时,执行惯性滑动 const LIMIT_TIME = 300; const LIMIT_DISTANCE = 15; const IS_PC = isPC(); var script$1 = { props: { defaultIndex: { type: Number, default: 0 }, column: { type: Array, default: () => ([]) }, boxHeight: Number, itemHeight: Number, rowNumber: Number }, data() { return { ulStyle: { transform: `translate3d(0px, 0px, 0px)`, transitionDuration: `0ms`, transitionProperty: `none`, lineHeight: `${this.itemHeight}px` } } }, computed: { count() { return this.column.length }, getRoNumber() { return Math.floor(this.rowNumber / 2) } }, methods: { init () { this.setTop(this.defaultIndex); const halfBox = (this.boxHeight - this.itemHeight) / 2; this.bottom = halfBox + this.itemHeight; this.top = halfBox - this.count * this.itemHeight; }, // 根据index 设置滚动位置 setTop (index = 0) { const { boxHeight, itemHeight } = this; this.startTop = ((boxHeight - itemHeight) / 2) - (index * itemHeight); this.ulStyle.transform = `translate3d(0px, ${this.startTop}px, 0px)`; this.selectIndex = index; this.change(); }, handleStart (e) { this.distStartTop = getClient(e).y; this.touchStartTime = Date.now(); // ---- this.startY = getClient(e).y; this.momentumTop = this.startTop; this.ulStyle.transitionDuration = `0ms`; this.ulStyle.transitionProperty = `none`; if (IS_PC) { document.addEventListener(MOVE_EVENT, this.handleMove, false); document.addEventListener(END_EVENT, this.handleEnd, false); } }, handleMove (e) { e.preventDefault(); e.stopPropagation(); this.disY = getClient(e).y - this.startY; this.startY = getClient(e).y; if (this.startTop >= this.bottom) { this.startTop = this.bottom; } else if (this.startTop <= this.top) { this.startTop = this.top; } else { this.startTop += this.disY; } this.ulStyle.transform = `translate3d(0px, ${this.startTop}px, 0px)`; const now = Date.now(); if (now - this.touchStartTime > LIMIT_TIME) { this.touchStartTime = now; this.momentumTop = this.startTop; } }, handleEnd () { if (IS_PC) { document.removeEventListener(MOVE_EVENT, this.handleMove, false); document.removeEventListener(END_EVENT, this.handleEnd, false); } const distance = this.startTop - this.momentumTop; const duration = Date.now() - this.touchStartTime; const allowMomentum = duration < LIMIT_TIME && Math.abs(distance) > LIMIT_DISTANCE; if (allowMomentum) { this.toMove(distance, duration); } else { this.setTranfromTop(); } }, setTranfromTop () { this.ulStyle.transitionProperty = `all`; this.ulStyle.transitionDuration = `${DEFAULT_DURATION}ms`; if (this.startTop >= this.bottom - this.itemHeight) { this.setTop(); } else if (this.startTop <= this.top + this.itemHeight) { this.setTop(this.count - 1); } else { let index = Math.round((this.startTop) / this.itemHeight); this.startTop = index * this.itemHeight; if (this.startTop > this.bottom) { this.startTop = this.bottom - this.itemHeight; index = -this.getRoNumber; } else if (this.startTop < this.top) { this.startTop = this.top + this.itemHeight; index = this.count + 1; } this.ulStyle.transform = `translate3d(0px, ${this.startTop}px, 0px)`; index = this.getRoNumber - index; if (this.selectIndex !== index) { this.selectIndex = index; this.change(); } } }, toMove (distance, duration) { const speed = Math.abs(distance / duration); distance = this.startTop + (speed / 0.002) * (distance < 0 ? -1 : 1); this.ulStyle.transitionProperty = `all`; this.ulStyle.transitionDuration = `1000ms`; this.setTop(Math.min(Math.max(Math.round(-distance / this.itemHeight), 0), this.count - 1)); }, change () { this.$emit('change', this.column[this.selectIndex]); }, mousewheel (e) { e.preventDefault(); e.stopPropagation(); this.ulStyle.transitionDuration = `0ms`; this.ulStyle.transitionProperty = `none`; const { deltaX, deltaY } = e; if (Math.abs(deltaX) < Math.abs(deltaY)) { this.startTop = this.startTop - deltaY; let b = this.bottom - this.itemHeight; let t = this.top + this.itemHeight; let shouldMove = true; if (this.startTop > b ) { this.startTop = b; shouldMove = false; } else if (this.startTop < t) { this.startTop = t; shouldMove = false; } this.ulStyle.transform = `translate3d(0px, ${this.startTop}px, 0px)`; if (shouldMove) { clearInterval(this.wheelTimer); this.wheelTimer = setTimeout(this.setTranfromTop, 100); } } } }, mounted () { this.init(); // 监听开始事件 this.$el.addEventListener(START_EVENT, this.handleStart, false); if (IS_PC) { this.$el.addEventListener('wheel', this.mousewheel, false); } else { this.$el.addEventListener(MOVE_EVENT, this.handleMove, false); this.$el.addEventListener(END_EVENT, this.handleEnd, false); } }, watch: { column () { this.init(); }, defaultIndex () { this.setTop(this.defaultIndex); } }, beforeDestroy () { this.$el.removeEventListener(START_EVENT, this.handleStart, false); if (IS_PC) { this.$el.removeEventListener('wheel', this.mousewheel, false); this.$el.removeEventListener(MOVE_EVENT, this.handleMove, false); this.$el.removeEventListener(END_EVENT, this.handleEnd, false); } } }; /* script */ const __vue_script__$1 = script$1; /* template */ var __vue_render__$1 = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { ref: "list", staticClass: "list" }, [ _c( "ul", { style: _vm.ulStyle }, _vm._l(_vm.column, function(item, index) { return _c("li", { key: "item" + index }, [_vm._v(_vm._s(item.label))]) }), 0 ) ]) }; var __vue_staticRenderFns__$1 = []; __vue_render__$1._withStripped = true; /* style */ const __vue_inject_styles__$1 = function (inject) { if (!inject) return inject("data-v-ec129ff4_0", { source: ".list[data-v-ec129ff4] {\n margin: 0;\n padding: 0;\n -webkit-box-flex: 1;\n flex: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.list ul[data-v-ec129ff4] {\n margin: 0;\n padding: 0;\n -webkit-transition-timing-function: cubic-bezier(0.23, 1, 0.68, 1);\n transition-timing-function: cubic-bezier(0.23, 1, 0.68, 1);\n line-height: 44px;\n}\n.list li[data-v-ec129ff4] {\n margin: 0;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 0 5px;\n color: #000;\n}\n\n/*# sourceMappingURL=list.vue.map */", map: {"version":3,"sources":["/Users/naice/my-project/vue-picker/src/list.vue","list.vue"],"names":[],"mappings":"AA4MA;EACA,SAAA;EACA,UAAA;EACA,mBAAA;UAAA,OAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;AC3MA;AD4MA;EACA,SAAA;EACA,UAAA;EACA,kEAAA;UAAA,0DAAA;EACA,iBAAA;AC1MA;AD4MA;EACA,SAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,WAAA;AC1MA;;AAEA,mCAAmC","file":"list.vue","sourcesContent":["\n\n\n\n\n",".list {\n margin: 0;\n padding: 0;\n flex: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.list ul {\n margin: 0;\n padding: 0;\n transition-timing-function: cubic-bezier(0.23, 1, 0.68, 1);\n line-height: 44px;\n}\n.list li {\n margin: 0;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 0 5px;\n color: #000;\n}\n\n/*# sourceMappingURL=list.vue.map */"]}, media: undefined }); }; /* scoped */ const __vue_scope_id__$1 = "data-v-ec129ff4"; /* module identifier */ const __vue_module_identifier__$1 = undefined; /* functional template */ const __vue_is_functional_template__$1 = false; /* style inject SSR */ /* style inject shadow dom */ var List = normalizeComponent( { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, createInjector, undefined, undefined ); // var script$2 = { name: 'VuePicker', props: { visible: { type: Boolean, default: false }, data: { type: Array, default: () => [] }, layer: { type: Number, default: 0 }, itemHeight: { type: [Number, String], default: DEFTAULT_ITEM_HEIGHT }, defaultIndex: { type: [Number, Array], default: 0 }, cancelText: { type: String, default: '取消' }, confirmText: { type: String, default: '确认' }, title: { type: String, default: '' }, showToolbar: { type: Boolean, default: false }, maskClick: { type: Boolean, default: false }, rowNumber: { type: Number, default: 5 }, appendToBody: { type: Boolean, default: false } }, components: { Header, List }, data () { return { column1: [], column2: [], column3: [], column4: [], dIndex1: 0, dIndex2: 0, dIndex3: 0, dIndex4: 0 } }, computed: { boxHeight () { let itemHeight = parseInt(this.itemHeight); itemHeight = itemHeight ? itemHeight : DEFTAULT_ITEM_HEIGHT; return itemHeight * this.getRowNumber }, getRowNumber () { if (this.rowNumber < 3) { return 3 } return this.rowNumber % 2 === 0 ? this.rowNumber + 1 : this.rowNumber }, maskStyle() { let style = { backgroundSize: '100% 88px' }; if (this.getRowNumber === 3) { style = { backgroundSize: '100% 44px' }; } return style } }, methods: { clickMask () { if (this.maskClick) { this.looseBody(); this.$emit('update:visible', false); } }, formateData () { if (this.layer > 1) { this.setLinkColumn(); } else { this.column1 = this.data[0] || []; this.column2 = this.data[1] || []; this.column3 = this.data[2] || []; this.column4 = this.data[3] || []; this.setNormalIndex(); } }, setLinkColumn () { if (this.layer === 2) { this.setLinkLayer2(); } else if (this.layer === 3) { this.setLinkLayer2(); this.setLinkLayer3(); } else if (this.layer === 4) { this.setLinkLayer2(); this.setLinkLayer3(); this.setLinkLayer4(); } }, setLinkLayer2 () { const { defaultIndex } = this; this.column1 = this.data || []; if (typeof defaultIndex === 'number') { this.dIndex1 = defaultIndex; this.dIndex2 = 0; if (this.data.length > 1 && this.data[0].children) { this.column2 = this.data[0].children || []; } } else if (Array.isArray(defaultIndex) && defaultIndex.length > 0){ this.dIndex1 = defaultIndex[0] || 0; this.column2 = this.data[this.dIndex1].children || []; this.$nextTick(() => { if (this.column2.length - 1 < defaultIndex[1]) { this.dIndex2 = this.column2.length - 1; } else { this.dIndex2 = defaultIndex[1] || 0; } }); } }, setLinkLayer3 () { const { defaultIndex } = this; if (typeof defaultIndex === 'number') { this.dIndex3 = 0; if (this.column2.length > 1 && this.column2[0].children) { this.column3 = this.column2[0].children || []; } } else if (Array.isArray(defaultIndex) && defaultIndex.length > 1){ this.$nextTick(() => { this.column3 = this.column2[this.dIndex2].children || []; this.$nextTick(() => { if (this.column3.length - 1 < defaultIndex[2]) { this.dIndex3 = this.column3.length - 1; } else { this.dIndex3 = defaultIndex[2] || 0; } }); }); } }, setLinkLayer4 () { const { defaultIndex } = this; if (typeof defaultIndex === 'number') { this.dIndex4 = 0; if (this.column3.length > 1 && this.column3[0].children) { this.column4 = this.column3[0].children || []; } } else if (Array.isArray(defaultIndex) && defaultIndex.length > 2){ setTimeout(() => { this.column4 = this.column3[this.dIndex3].children || []; this.$nextTick(() => { if (this.column4.length - 1 < defaultIndex[3]) { this.dIndex4 = this.column4.length - 1; } else { this.dIndex4 = defaultIndex[3] || 0; } }); }); } }, setNormalIndex () { this.$nextTick(() => { const { defaultIndex } = this; if (Array.isArray(defaultIndex)) { this.setDefaultIndex(); } else { this.dIndex1 = Number(defaultIndex) || 0; } }); }, setDefaultIndex () { const { indexArr } = this; const self = this; function next() { let promise = Promise.resolve(); let index = 0; while (index < self.data.length) { promise = promise.then(indexArr[index]); index++; } } next(); }, change (index, res) { this.result[index] = res; this.$emit('change', this.result); }, change1 (res) { if (res) { this.change(0, res); if (this.layer > 1) { this.dIndex2 = 0; this.changeLink('column2', res); } } }, change2 (res) { if (res) { this.change(1, res); if (this.layer > 2) { this.dIndex3 = 0; this.changeLink('column3', res); } } }, change3 (res) { if (res) { this.change(2, res); if (this.layer > 3) { this.dIndex4 = 0; this.changeLink('column4', res); } } }, change4 (res) { if (res) { this.change(3, res); } }, changeLink (key, res) { if (this.layer) { // clearTimeout(this.linktimer) this.linktimer = setTimeout(() => { this[key] = res.children || []; }, 1000 / 60); } }, cancel () { this.looseBody(); this.$emit('cancel'); this.$emit('update:visible', false); }, confirm () { this.looseBody(); this.$emit('confirm', this.result); this.$emit('update:visible', false); }, stopPropagation (e) { e.stopPropagation(); }, fixedBody() { const scrollTop = document.body.scrollTop || document.documentElement.scrollTop; this.prevBodyCss = document.body.style.cssText; document.body.style.cssText += 'position:fixed;width:100%;top:-' + scrollTop + 'px;'; }, looseBody() { const body = document.body; const top = body.style.top; body.style.cssText = this.prevBodyCss; body.scrollTop = document.documentElement.scrollTop = -parseInt(top); body.style.top = ''; }, init() { this.result = []; this.indexArr = [ () => this.dIndex1 = this.defaultIndex[0] || 0, () => this.dIndex2 = this.defaultIndex[1] || 0, () => this.dIndex3 = this.defaultIndex[2] || 0, () => this.dIndex4 = this.defaultIndex[3] || 0 ]; this.formateData(); } }, created () { this.init(); }, mounted () { this.$refs.picker.addEventListener('click', this.stopPropagation); if (this.appendToBody) { document.body.appendChild(this.$el); } }, watch: { visible (v) { if (v) { this.fixedBody(); } }, defaultIndex () { this.init(); }, data() { this.init(); } }, beforeDestroy () { this.$refs.picker.removeEventListener('click', this.stopPropagation); } }; /* script */ const __vue_script__$2 = script$2; /* template */ var __vue_render__$2 = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("transition", { attrs: { name: "fade" } }, [ _c( "div", { directives: [ { name: "show", rawName: "v-show", value: _vm.visible, expression: "visible" } ], staticClass: "pickerbox", on: { click: _vm.clickMask } }, [ _c("transition", { attrs: { name: "toup" } }, [ _c( "div", { directives: [ { name: "show", rawName: "v-show", value: _vm.visible, expression: "visible" } ], ref: "picker", staticClass: "vue-picker" }, [ _vm.showToolbar ? _c("Header", { attrs: { cancelText: _vm.cancelText, confirmText: _vm.confirmText, title: _vm.title }, on: { cancel: _vm.cancel, confirm: _vm.confirm } }) : _vm._e(), _vm._v(" "), _c( "div", { staticClass: "content", style: { height: _vm.boxHeight + "px" } }, [ _c( "div", { staticClass: "colums" }, [ _c("List", { attrs: { column: _vm.column1, boxHeight: _vm.boxHeight, itemHeight: _vm.itemHeight, defaultIndex: _vm.dIndex1, rowNumber: _vm.getRowNumber }, on: { change: _vm.change1 } }), _vm._v(" "), _vm.column2.length > 0 ? _c("List", { attrs: { column: _vm.column2, boxHeight: _vm.boxHeight, itemHeight: _vm.itemHeight, defaultIndex: _vm.dIndex2, rowNumber: _vm.getRowNumber }, on: { change: _vm.change2 } }) : _vm._e(), _vm._v(" "), _vm.column3.length > 0 ? _c("List", { attrs: { column: _vm.column3, boxHeight: _vm.boxHeight, itemHeight: _vm.itemHeight, defaultIndex: _vm.dIndex3, rowNumber: _vm.getRowNumber }, on: { change: _vm.change3 } }) : _vm._e(), _vm._v(" "), _vm.column4.length > 0 ? _c("List", { attrs: { column: _vm.column4, boxHeight: _vm.boxHeight, itemHeight: _vm.itemHeight, defaultIndex: _vm.dIndex4, rowNumber: _vm.getRowNumber }, on: { change: _vm.change4 } }) : _vm._e() ], 1 ), _vm._v(" "), _c("div", { staticClass: "mask", style: _vm.maskStyle }), _vm._v(" "), _c("div", { staticClass: "hairline" }) ] ) ], 1 ) ]) ], 1 ) ]) }; var __vue_staticRenderFns__$2 = []; __vue_render__$2._withStripped = true; /* style */ const __vue_inject_styles__$2 = function (inject) { if (!inject) return inject("data-v-200a1302_0", { source: ".pickerbox[data-v-200a1302] {\n position: fixed;\n width: 100vw;\n height: 100vh;\n left: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n z-index: 9999;\n overflow: hidden;\n}\n.fade-enter-active[data-v-200a1302], .fade-leave-active[data-v-200a1302] {\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n}\n.fade-enter[data-v-200a1302], .fade-leave-to[data-v-200a1302] {\n opacity: 0;\n}\n.toup-enter-active[data-v-200a1302], .toup-leave-active[data-v-200a1302] {\n -webkit-transition: -webkit-transform 0.3s;\n transition: -webkit-transform 0.3s;\n transition: transform 0.3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\n.toup-enter[data-v-200a1302], .toup-leave-to[data-v-200a1302] {\n -webkit-transform: translate3d(0, 100px, 0);\n transform: translate3d(0, 100px, 0);\n}\n.vue-picker[data-v-200a1302] {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: #fff;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: transparent;\n}\n.content[data-v-200a1302] {\n overflow: hidden;\n height: 220px;\n position: relative;\n display: -webkit-box;\n display: flex;\n}\n.colums[data-v-200a1302] {\n display: -webkit-box;\n display: flex;\n overflow: hidden;\n font-size: 16px;\n text-align: center;\n -webkit-box-flex: 1;\n flex: 1;\n}\n.mask[data-v-200a1302] {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.9)), to(rgba(255, 255, 255, 0.4))), -webkit-gradient(linear, left bottom, left top, from(rgba(255, 255, 255, 0.9)), to(rgba(255, 255, 255, 0.4)));\n background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4));\n background-repeat: no-repeat;\n background-position: top, bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n pointer-events: none;\n background-size: 100% 88px;\n}\n.hairline[data-v-200a1302] {\n position: absolute;\n top: 50%;\n left: 0;\n z-index: 3;\n width: 100%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n pointer-events: none;\n height: 44px;\n}\n.hairline[data-v-200a1302]::after {\n position: absolute;\n box-sizing: border-box;\n content: \" \";\n pointer-events: none;\n top: -50%;\n right: -50%;\n bottom: -50%;\n left: -50%;\n border: 0 solid #ebedf0;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n border-width: 1px 0;\n}\n\n/*# sourceMappingURL=index.vue.map */", map: {"version":3,"sources":["/Users/naice/my-project/vue-picker/src/index.vue","index.vue"],"names":[],"mappings":"AA2WA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;EACA,8BAAA;EACA,aAAA;EACA,gBAAA;AC1WA;AD4WA;EACA,gCAAA;EAAA,wBAAA;ACzWA;AD2WA;EACA,UAAA;ACxWA;AD0WA;EACA,0CAAA;EAAA,kCAAA;EAAA,0BAAA;EAAA,kDAAA;ACvWA;ADyWA;EACA,2CAAA;UAAA,mCAAA;ACtWA;ADyWA;EACA,kBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,sBAAA;EACA,yBAAA;KAAA,sBAAA;MAAA,qBAAA;UAAA,iBAAA;EACA,8BAAA;EACA,wCAAA;ACtWA;ADwWA;EACA,gBAAA;EACA,aAAA;EACA,kBAAA;EACA,oBAAA;EAAA,aAAA;ACrWA;ADuWA;EACA,oBAAA;EAAA,aAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;UAAA,OAAA;ACpWA;ADsWA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,8OAAA;EAAA,wKAAA;EACA,4BAAA;EACA,gCAAA;EACA,mCAAA;UAAA,2BAAA;EACA,oBAAA;EACA,0BAAA;ACnWA;ADqWA;EACA,kBAAA;EACA,QAAA;EACA,OAAA;EACA,UAAA;EACA,WAAA;EACA,mCAAA;UAAA,2BAAA;EACA,oBAAA;EACA,YAAA;AClWA;ADmWA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;EACA,oBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,uBAAA;EACA,6BAAA;EACA,qBAAA;EACA,mBAAA;ACjWA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["\n\n\n",".pickerbox {\n position: fixed;\n width: 100vw;\n height: 100vh;\n left: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n z-index: 9999;\n overflow: hidden;\n}\n\n.fade-enter-active, .fade-leave-active {\n transition: opacity 0.2s;\n}\n\n.fade-enter, .fade-leave-to {\n opacity: 0;\n}\n\n.toup-enter-active, .toup-leave-active {\n transition: transform 0.3s;\n}\n\n.toup-enter, .toup-leave-to {\n transform: translate3d(0, 100px, 0);\n}\n\n.vue-picker {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: #fff;\n user-select: none;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: transparent;\n}\n\n.content {\n overflow: hidden;\n height: 220px;\n position: relative;\n display: flex;\n}\n\n.colums {\n display: flex;\n overflow: hidden;\n font-size: 16px;\n text-align: center;\n flex: 1;\n}\n\n.mask {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4));\n background-repeat: no-repeat;\n background-position: top, bottom;\n backface-visibility: hidden;\n pointer-events: none;\n background-size: 100% 88px;\n}\n\n.hairline {\n position: absolute;\n top: 50%;\n left: 0;\n z-index: 3;\n width: 100%;\n transform: translateY(-50%);\n pointer-events: none;\n height: 44px;\n}\n.hairline::after {\n position: absolute;\n box-sizing: border-box;\n content: \" \";\n pointer-events: none;\n top: -50%;\n right: -50%;\n bottom: -50%;\n left: -50%;\n border: 0 solid #ebedf0;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n border-width: 1px 0;\n}\n\n/*# sourceMappingURL=index.vue.map */"]}, media: undefined }); }; /* scoped */ const __vue_scope_id__$2 = "data-v-200a1302"; /* module identifier */ const __vue_module_identifier__$2 = undefined; /* functional template */ const __vue_is_functional_template__$2 = false; /* style inject SSR */ /* style inject shadow dom */ var index = normalizeComponent( { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 }, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, createInjector, undefined, undefined ); export default index;