@bpui/picker
Advanced tools
Comparing version 0.1.10 to 0.1.11
/*! | ||
* bpui picker v0.1.10 | ||
* bpui picker v0.1.11 | ||
* Copyright (c) 2020 Copyright bp All Rights Reserved. | ||
* Released under the MIT License. | ||
*/'use strict';function _interopDefault(a){return a&&"object"==typeof a&&"default"in a?a["default"]:a}var febs=_interopDefault(require("febs-browser")),bpLibs=_interopDefault(require("@bpui/libs")),bpDialog=_interopDefault(require("@bpui/dialog"));function isArrayEqual(a,b){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}return!1}function isArrayEqualByKey(a,b,c){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let d=0;d<a.length;d++)for(let e=0;e<c.length;e++)if(Array.isArray(a[d][c[e]])){if(!isArrayEqualByKey(a[d][c[e]],b[d][c[e]],c))return!1;}else if(a[d][c[e]]!=b[d][c[e]])return!1;return!0}return!1}class PickerSingleDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(1)}picker_datasource(a,b,c){c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null})}picker_changed(){}}class PickerDoubleDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else{let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}}picker_changed(a,b){0==a&&b.refreshDatasource(1).then(()=>{})}}class PickerThreeDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else if(1==a){let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}else if(2==a){let a=b.getSelect(0),d=b.getSelect(1);if(a&&d){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value){let a=this.ds[b].children;if(a){for(let b=0;b<a.length;b++)if(a[b].value==d.value)return void(a[b].children?c({datasource:a[b].children,value:0<a[b].children.length?a[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null});return}}else c({datasource:[],value:null})}}picker_changed(a,b){0==a?b.refreshDatasource(1).then(()=>b.refreshDatasource(2)).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}}const POS_CENTER=120,POS_CELL_HEIGHT=40;function mobile_onTouchstart_picker(a){a=a||window.event;var b;if(b=a.touches?a.touches[0]:{clientX:a.clientX,clientY:a.clientY},b){var c=a.currentTarget;if(c){var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(d=$(d[0]),!d[0])return!1;d.css("transition","all 0s"),d=d[0],d.__picker_start=!0,d.__picker_touch=b.clientX,d.__picker_touch1=b.clientY,d.__picker_start_at=Date.now();var e=picker_getOffset($(d));return d.__offset=e,c.setCapture?c.setCapture():"undefined"==typeof c.ontouchstart?(febs.dom.removeEventListener(c,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c,"mouseup",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c,"mouseout",mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.addEventListener(c,"mouseup",mobile_onTouchend_picker,!0),febs.dom.addEventListener(c,"mouseout",mobile_onTouchcancel_picker,!0)):(febs.dom.removeEventListener(c,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c,"touchend",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c,"touchcancel",mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.addEventListener(c,"touchend",mobile_onTouchend_picker,!0),febs.dom.addEventListener(c,"touchcancel",mobile_onTouchcancel_picker,!0)),a.preventDefault(),a.stopPropagation(),a.cancelBubble=!0,!1}return!0}}function mobile_onTouchmove_picker(a){a=a||window.event;var b;if(b=a.touches?a.touches[0]:{clientX:a.clientX,clientY:a.clientY},b){var c=a.currentTarget;if(!c)return!1;var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(!d[0])return!1;if(d=d[0],!d.__picker_start)return;var e=parseFloat(b.clientY-d.__picker_touch1);e+=d.__offset||0,e=e.toFixed(1),$(d).css("transform","translate3d(0px, "+e+"px, 0px)")}return a.stopPropagation(),a.preventDefault(),a.cancelBubble=!0,!1}function mobile_onTouchend_picker(a){a=a||window.event;var b=a.currentTarget;if(!b)return!1;var c=$(b).parent(".bp-picker__group").children(".bp-picker__content");if(!c[0])return!1;c=c[0],b.releaseCapture?b.releaseCapture():"undefined"==typeof b.ontouchstart?(febs.dom.removeEventListener(b,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(b,"mouseup",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(b,"mouseout",mobile_onTouchcancel_picker,!0)):(febs.dom.removeEventListener(b,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(b,"touchend",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(b,"touchcancel",mobile_onTouchcancel_picker,!0));var d=a.touches&&0<a.touches.length||a.changedTouches&&0<a.changedTouches.length?a.touches[0]||a.changedTouches[0]:{clientX:a.clientX,clientY:a.clientY,clientX:a.clientX,clientY:a.clientY};var e=$(c),f=picker_getOffset(e),g=c.__offset,h=1e3*((d.clientY-c.__picker_touch1)/(Date.now()-c.__picker_start_at||1));if(c.__picker_touch1==d.clientY){var i=-(d.clientY-febs.dom.getElementOffset(a.currentTarget).top);i+=a.currentTarget.clientHeight/2,f+=i,h=0}delete c.__picker_start,delete c.__picker_start_at,delete c.__picker_touch,delete c.__picker_touch1,f+=.1*h,f=picker_setOffset(e,f),g!=f&&e.trigger("change")}var mobile_onTouchcancel_picker=mobile_onTouchend_picker;function picker_setOffset(a,b){var c=b%POS_CELL_HEIGHT;if(0<c?c>=POS_CELL_HEIGHT/2?(b-=c,b+=POS_CELL_HEIGHT):b-=c:c<=-POS_CELL_HEIGHT/2?(b-=c,b-=POS_CELL_HEIGHT):b-=c,b>POS_CENTER)b=POS_CENTER;else{var d=-POS_CELL_HEIGHT*a.children(".bp-picker__item").length+POS_CENTER+POS_CELL_HEIGHT;b<d&&(b=d)}return a.css("transition","all 0.3s").css("transform","translate3d(0px, "+b+"px, 0px)"),b}function picker_getOffset(a){var b=a[0].style.transform;return febs.string.isEmpty(b)?b=0:(b=b.split(","),b=b[1]||"0",b=febs.string.trim(b),b=febs.string.replace(b,"px",""),b=parseFloat(b)),b}var script={components:{bpIcon:bpLibs.VueObject.bpIcon,bpWidget:bpDialog.bpWidget},props:{visible:Boolean,mask:{default:!0,type:Boolean},maskClose:{default:!1,type:Boolean},pageClass:String|Array,pageStyle:String|Array|Object,cancelBtnText:{type:String,default:"\u53D6\u6D88"},confirmBtnText:{type:String,default:"\u786E\u8BA4"},datasource:{validator:function(a){return"object"==typeof a||Array.isArray(a)}},value:{validator:function(a){return!a||"string"==typeof a||"number"==typeof a||Array.isArray(a)}}},data(){return{visibleReal:!1,visibleRealByProperty:!1,items0:null,items1:null,items2:null,items3:null,groupCount:1,value0:null,value1:null,value2:null,value3:null}},watch:{value(a,b){if(this.noEmitUpdateWatch)return void(this.noEmitUpdateWatch=!1);if(a!==b){let c=typeof a;if("string"==c||"number"===c)this.value0=a,this.$nextTick(()=>{this.setSelect(0,a,!1)});else if(Array.isArray(a)){if(isArrayEqual(a,b))return;this.$nextTick(()=>{for(let b=0;b<a.length&&b<this.groupCount;b++)this["value"+b]=a[b],this.setSelect(b,a[b],!1)})}else throw new Error("picker value is error")}},visible(a){this.visibleReal!=a&&(this.visibleRealByProperty=!0,this.visibleReal=a)},visibleReal(a,b){if(a!=b){if(this.$emit("update:visible",a),a){let a=this.getValue();if(Array.isArray(a))for(let b=0;b<a.length&&4>b;b++)this.setSelect(b,a[b],!1);else this.setSelect(0,a,!1)}a||this.visibleRealByProperty||this._onCancel(),this.visibleRealByProperty=!1}},datasource:function(a,b){if(!(a&&b&&isArrayEqualByKey(a,b,["label","value","children"]))){let b=this.visibleReal;b?this.timer.sleep(300).then(()=>{this._initRealDatasource(a),this._refreshDatasource(!0)}):(this._initRealDatasource(a),this._refreshDatasource(!0))}}},created(){this.timer=new bpLibs.Timer},beforeMount(){if(!this.datasource)throw new Error("picker must have datasource");this._initRealDatasource(this.datasource),this._refreshDatasource(!1),this.visibleReal=this.visible},beforeDestroy(){this.hide(),this.timer.dispose(),this.timer=null},mounted(){},methods:{show:function(){return this.$refs.widget.show()},hide:function(){return this.$refs.widget.hide()},setSelect(a,b,c=!1){let d=this["items"+a];if(d){let e=this.$refs.agentMain;if(e&&(e=$(e),e=$(e.children(`.bp-picker__group`)[a]),e=$(e.children(".bp-picker__content")[0]),e)){e=$(e);let f=picker_getOffset(e),g=0;for(;g<d.length&&d[g].value!=b&&b;g++);g>=d.length&&(g=d.length-1),g<d.length&&(g=-g*POS_CELL_HEIGHT+POS_CENTER,g!=f&&(picker_setOffset(e,g),g=picker_getOffset(e),f!=g&&this.realDatasource.picker_changed(a,this),c&&this._onChange()))}}},getSelect(a=0){let b=this["items"+a];if(b){let c=this.$refs.agentMain;if(c&&(c=$(c),c=$(c.children(`.bp-picker__group`)[a]),c=$(c.children(".bp-picker__content")[0]),c)){c=$(c);let a=picker_getOffset(c);if(a-=POS_CENTER,a=parseInt(-a/POS_CELL_HEIGHT),b[a])return febs.utils.mergeMap(b[a])}return b[0]?b[0]:{}}return{}},getValue(){let a;return a=1==this.groupCount?this.value0:2==this.groupCount?[this.value0,this.value1]:3==this.groupCount?[this.value0,this.value1,this.value2]:[this.value0,this.value1,this.value2,this.value3],a},_onCancel(){this.$emit("cancel")},_onChange(){let a;a=1==this.groupCount?this.getSelect(0).value:2==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value]:3==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value]:[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value,this.getSelect(3).value],this.$emit("change",a)},_onConfirm(){let a;1==this.groupCount?(this.value0=this.getSelect(0).value,a=this.value0):2==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,a=[this.value0,this.value1]):3==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,a=[this.value0,this.value1,this.value2]):(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,this.value3=this.getSelect(3).value,a=[this.value0,this.value1,this.value2,this.value3]),this.noEmitUpdateWatch=!0,this.$emit("input",a),this.$emit("confirm",this)},_bindEvent(){let a=this.$refs.agentToolbar,b=$(this.$refs.agentMain),c=b.children(".bp-picker__group").children(".bp-picker__mask"),d=b.children(".bp-picker__group").children(".bp-picker__content");if(d[0])for(let a=0;a<d.length;a++)$(d[a]).off("change").on("change",a=>{let b=parseInt($(a.currentTarget).attr("data-group"));this.realDatasource.picker_changed(b,this),this._onChange()});if(c[0]){let a,b,d,e;"undefined"==typeof c[0].ontouchstart?(a="mousedown",b="mousemove",d="mouseup",e="mouseout"):(a="touchstart",b="touchmove",d="touchend",e="touchcancel");for(let f=0;f<c.length;f++)febs.dom.removeEventListener(c[f],a,mobile_onTouchstart_picker,!0),febs.dom.removeEventListener(c[f],b,mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c[f],d,mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c[f],e,mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c[f],a,mobile_onTouchstart_picker,!0)}},refreshDatasource(a,b=!0){return new Promise((c,d)=>{let e,f=!1;try{this.realDatasource.picker_datasource(a,this,g=>{try{if(e=g.value,!Array.isArray(g.datasource))throw new Error("picker datasource must is Array");!!this["items"+a]&&!!g.datasource||(f=!0),this["items"+a]=g.datasource}catch(a){d(a)}this.$nextTick(()=>{setTimeout(()=>{this.setSelect(a,e,b),c(e),this._bindEvent(),b&&f},0)})})}catch(a){d(a)}})},_refreshDatasource(a=!0){this.realDatasource.picker_datasource_groups(b=>{if(0>=b||4<b)throw new Error("picker group count must in [1,4]");this.groupCount=b;let c=new Promise(a=>a());for(let d=0;d<b;d++)c=c.then(febs.utils.sleep(1).then(this.refreshDatasource(d,a)));this.$nextTick(()=>{c.then(()=>{this._bindEvent()})})})},_initRealDatasource(a){if(Array.isArray(a)){let b=1;for(let c=0;c<a.length;c++)if(a[c].children&&Array.isArray(a[c].children)){b=2;let d=0;for(d=0;d<a[c].children.length;d++)if(a[c].children[d].children&&Array.isArray(a[c].children[d].children)){b=3;break}if(d<a[c].children.length)break}let c;c=1==b?PickerSingleDatasource:2==b?PickerDoubleDatasource:PickerThreeDatasource,this.realDatasource=new c(a)}else this.realDatasource=a;if("function"!=typeof this.realDatasource.picker_datasource_groups||"function"!=typeof this.realDatasource.picker_datasource||"function"!=typeof this.realDatasource.picker_changed)throw new Error("picker datasource class must have `picker_datasource_groups`, `picker_datasource`, `picker_changed` function")}}};function normalizeComponent(a,b,c,d,e,f,g,h,i,j){"boolean"!=typeof g&&(i=h,h=g,g=!1);const k="function"==typeof c?c.options:c;a&&a.render&&(k.render=a.render,k.staticRenderFns=a.staticRenderFns,k._compiled=!0,e&&(k.functional=!0)),d&&(k._scopeId=d);let l;if(f?(l=function(a){a=a||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,a||"undefined"==typeof __VUE_SSR_CONTEXT__||(a=__VUE_SSR_CONTEXT__),b&&b.call(this,i(a)),a&&a._registeredComponents&&a._registeredComponents.add(f)},k._ssrRegister=l):b&&(l=g?function(a){b.call(this,j(a,this.$root.$options.shadowRoot))}:function(a){b.call(this,h(a))}),l)if(k.functional){const a=k.render;k.render=function(b,c){return l.call(c),a(b,c)}}else{const a=k.beforeCreate;k.beforeCreate=a?[].concat(a,l):[l]}return c}const __vue_script__=script;var __vue_render__=function(){var a=this,b=a.$createElement,c=a._self._c||b;return c("bp-widget",{ref:"widget",staticClass:"bp-picker",attrs:{visible:a.visibleReal,maskClose:a.maskClose,mask:a.mask,pageClass:a.pageClass,pageStyle:a.pageStyle,preventEvent:!0},on:{"update:visible":function(b){a.visibleReal=b}}},[a.$slots.toolbar?c("div",{staticClass:"bp-picker__toolbar bp-ellipsis"},[a._t("toolbar")],2):c("div",{ref:"agentToolbar",staticClass:"bp-picker__toolbar bp-ellipsis"},[c("button",{staticClass:"bp-picker__cancelBtn",on:{click:function(){a.visibleReal=!1}}},[a._v(a._s(a.cancelBtnText))]),a._v(" "),c("button",{on:{click:a._onConfirm}},[a._v(a._s(a.confirmBtnText))])]),a._v(" "),c("div",{ref:"agentMain",staticClass:"bp-picker__main"},[c("div",{staticClass:"bp-picker__group",style:{display:0<a.groupCount?"inherit":"none"},attrs:{"data-picker":"0"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content0",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"0"}},a._l(a.items0,function(b,d){return c("div",{key:"_1"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:1<a.groupCount?"inherit":"none"},attrs:{"data-picker":"1"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content1",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"1"}},a._l(a.items1,function(b,d){return c("div",{key:"_2"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:2<a.groupCount?"inherit":"none"},attrs:{"data-picker":"2"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content2",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"2"}},a._l(a.items2,function(b,d){return c("div",{key:"_3"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:3<a.groupCount?"inherit":"none"},attrs:{"data-picker":"3"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content3",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"3"}},a._l(a.items3,function(b,d){return c("div",{key:"_4"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)])])])},__vue_staticRenderFns__=[];__vue_render__._withStripped=!0;const __vue_inject_styles__=void 0,__vue_scope_id__=void 0,__vue_module_identifier__=void 0,__vue_is_functional_template__=!1,__vue_component__=normalizeComponent({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},void 0,__vue_script__,__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,!1,void 0,void 0,void 0);function ds_years(a,b,c){let d=new Date;if(a||(a=d.getFullYear()-80),b||(b=d.getFullYear()+80),a>b){let c=a;a=b,b=c}let e=[];for(let d=a;d<=b;d++)e.push({label:d+(c?c:""),value:d});return e}function ds_months(a){let b=[];for(let c=0;12>c;c++)b.push({label:c+1+(a?a:""),value:c});return b}function ds_days(a,b,c){let d=new Date(a,b+1,1,0,0,0,0);d.setTime(d.getTime()-82800000);let e=d.getDate(),f=[];for(let d=1;d<=e;d++)f.push({label:d+(c?c:""),value:d});return f}class PickerDateDatasource{constructor(a){a=a||{},this.yearText=a.yearText||"\u5E74",this.monthText=a.monthText||"\u6708",this.dateText=a.dateText||"\u65E5",this.yearFrom=a.yearFrom,this.yearTo=a.yearTo}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a){let a=new Date;return void c({datasource:ds_years(this.yearFrom,this.yearTo,this.yearText),value:a.getFullYear()})}if(1==a){let a=new Date;return void c({datasource:ds_months(this.monthText),value:a.getMonth()})}if(2==a){let a=b.getSelect(0).value,d=b.getSelect(1).value,e=b.getSelect(2).value,f=new Date,g=ds_days(a?a:f.getFullYear(),null===d||void 0===d?f.getMonth():d,this.dateText);return void c({datasource:g,value:e?e:f.getDate()})}}picker_changed(a,b){0==a?b.refreshDatasource(2).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}}function ds_hours(a){let b=[];for(let c=0;24>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}function ds_mins(a){let b=[];for(let c=0;60>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}class PickerTimeDatasource{constructor(a){a=a||{},this.hourText=a.hourText||"\u65F6",this.minuteText=a.minuteText||"\u5206"}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a){let a=new Date;c({datasource:ds_hours(this.hourText),value:a.getHours()})}else if(1==a){let a=new Date;c({datasource:ds_mins(this.minuteText),value:a.getMinutes()})}}picker_changed(){}}var index={bpPicker:__vue_component__,PickerDateDatasource,PickerDoubleDatasource,PickerSingleDatasource,PickerThreeDatasource,PickerTimeDatasource};module.exports=index; |
/*! | ||
* bpui picker v0.1.10 | ||
* bpui picker v0.1.11 | ||
* Copyright (c) 2020 Copyright bp All Rights Reserved. | ||
* Released under the MIT License. | ||
*/import febs from"febs-browser";import bpLibs from"@bpui/libs";import bpDialog from"@bpui/dialog";function isArrayEqual(a,b){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}return!1}function isArrayEqualByKey(a,b,c){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let d=0;d<a.length;d++)for(let e=0;e<c.length;e++)if(Array.isArray(a[d][c[e]])){if(!isArrayEqualByKey(a[d][c[e]],b[d][c[e]],c))return!1;}else if(a[d][c[e]]!=b[d][c[e]])return!1;return!0}return!1}class PickerSingleDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(1)}picker_datasource(a,b,c){c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null})}picker_changed(){}}class PickerDoubleDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else{let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}}picker_changed(a,b){0==a&&b.refreshDatasource(1).then(()=>{})}}class PickerThreeDatasource{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else if(1==a){let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}else if(2==a){let a=b.getSelect(0),d=b.getSelect(1);if(a&&d){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value){let a=this.ds[b].children;if(a){for(let b=0;b<a.length;b++)if(a[b].value==d.value)return void(a[b].children?c({datasource:a[b].children,value:0<a[b].children.length?a[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null});return}}else c({datasource:[],value:null})}}picker_changed(a,b){0==a?b.refreshDatasource(1).then(()=>b.refreshDatasource(2)).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}}const POS_CENTER=120,POS_CELL_HEIGHT=40;function mobile_onTouchstart_picker(a){a=a||window.event;var b;if(b=a.touches?a.touches[0]:{clientX:a.clientX,clientY:a.clientY},b){var c=a.currentTarget;if(c){var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(d=$(d[0]),!d[0])return!1;d.css("transition","all 0s"),d=d[0],d.__picker_start=!0,d.__picker_touch=b.clientX,d.__picker_touch1=b.clientY,d.__picker_start_at=Date.now();var e=picker_getOffset($(d));return d.__offset=e,c.setCapture?c.setCapture():"undefined"==typeof c.ontouchstart?(febs.dom.removeEventListener(c,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c,"mouseup",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c,"mouseout",mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.addEventListener(c,"mouseup",mobile_onTouchend_picker,!0),febs.dom.addEventListener(c,"mouseout",mobile_onTouchcancel_picker,!0)):(febs.dom.removeEventListener(c,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c,"touchend",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c,"touchcancel",mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.addEventListener(c,"touchend",mobile_onTouchend_picker,!0),febs.dom.addEventListener(c,"touchcancel",mobile_onTouchcancel_picker,!0)),a.preventDefault(),a.stopPropagation(),a.cancelBubble=!0,!1}return!0}}function mobile_onTouchmove_picker(a){a=a||window.event;var b;if(b=a.touches?a.touches[0]:{clientX:a.clientX,clientY:a.clientY},b){var c=a.currentTarget;if(!c)return!1;var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(!d[0])return!1;if(d=d[0],!d.__picker_start)return;var e=parseFloat(b.clientY-d.__picker_touch1);e+=d.__offset||0,e=e.toFixed(1),$(d).css("transform","translate3d(0px, "+e+"px, 0px)")}return a.stopPropagation(),a.preventDefault(),a.cancelBubble=!0,!1}function mobile_onTouchend_picker(a){a=a||window.event;var b=a.currentTarget;if(!b)return!1;var c=$(b).parent(".bp-picker__group").children(".bp-picker__content");if(!c[0])return!1;c=c[0],b.releaseCapture?b.releaseCapture():"undefined"==typeof b.ontouchstart?(febs.dom.removeEventListener(b,"mousemove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(b,"mouseup",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(b,"mouseout",mobile_onTouchcancel_picker,!0)):(febs.dom.removeEventListener(b,"touchmove",mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(b,"touchend",mobile_onTouchend_picker,!0),febs.dom.removeEventListener(b,"touchcancel",mobile_onTouchcancel_picker,!0));var d=a.touches&&0<a.touches.length||a.changedTouches&&0<a.changedTouches.length?a.touches[0]||a.changedTouches[0]:{clientX:a.clientX,clientY:a.clientY,clientX:a.clientX,clientY:a.clientY};var e=$(c),f=picker_getOffset(e),g=c.__offset,h=1e3*((d.clientY-c.__picker_touch1)/(Date.now()-c.__picker_start_at||1));if(c.__picker_touch1==d.clientY){var i=-(d.clientY-febs.dom.getElementOffset(a.currentTarget).top);i+=a.currentTarget.clientHeight/2,f+=i,h=0}delete c.__picker_start,delete c.__picker_start_at,delete c.__picker_touch,delete c.__picker_touch1,f+=.1*h,f=picker_setOffset(e,f),g!=f&&e.trigger("change")}var mobile_onTouchcancel_picker=mobile_onTouchend_picker;function picker_setOffset(a,b){var c=b%POS_CELL_HEIGHT;if(0<c?c>=POS_CELL_HEIGHT/2?(b-=c,b+=POS_CELL_HEIGHT):b-=c:c<=-POS_CELL_HEIGHT/2?(b-=c,b-=POS_CELL_HEIGHT):b-=c,b>POS_CENTER)b=POS_CENTER;else{var d=-POS_CELL_HEIGHT*a.children(".bp-picker__item").length+POS_CENTER+POS_CELL_HEIGHT;b<d&&(b=d)}return a.css("transition","all 0.3s").css("transform","translate3d(0px, "+b+"px, 0px)"),b}function picker_getOffset(a){var b=a[0].style.transform;return febs.string.isEmpty(b)?b=0:(b=b.split(","),b=b[1]||"0",b=febs.string.trim(b),b=febs.string.replace(b,"px",""),b=parseFloat(b)),b}var script={components:{bpIcon:bpLibs.VueObject.bpIcon,bpWidget:bpDialog.bpWidget},props:{visible:Boolean,mask:{default:!0,type:Boolean},maskClose:{default:!1,type:Boolean},pageClass:String|Array,pageStyle:String|Array|Object,cancelBtnText:{type:String,default:"\u53D6\u6D88"},confirmBtnText:{type:String,default:"\u786E\u8BA4"},datasource:{validator:function(a){return"object"==typeof a||Array.isArray(a)}},value:{validator:function(a){return!a||"string"==typeof a||"number"==typeof a||Array.isArray(a)}}},data(){return{visibleReal:!1,visibleRealByProperty:!1,items0:null,items1:null,items2:null,items3:null,groupCount:1,value0:null,value1:null,value2:null,value3:null}},watch:{value(a,b){if(this.noEmitUpdateWatch)return void(this.noEmitUpdateWatch=!1);if(a!==b){let c=typeof a;if("string"==c||"number"===c)this.value0=a,this.$nextTick(()=>{this.setSelect(0,a,!1)});else if(Array.isArray(a)){if(isArrayEqual(a,b))return;this.$nextTick(()=>{for(let b=0;b<a.length&&b<this.groupCount;b++)this["value"+b]=a[b],this.setSelect(b,a[b],!1)})}else throw new Error("picker value is error")}},visible(a){this.visibleReal!=a&&(this.visibleRealByProperty=!0,this.visibleReal=a)},visibleReal(a,b){if(a!=b){if(this.$emit("update:visible",a),a){let a=this.getValue();if(Array.isArray(a))for(let b=0;b<a.length&&4>b;b++)this.setSelect(b,a[b],!1);else this.setSelect(0,a,!1)}a||this.visibleRealByProperty||this._onCancel(),this.visibleRealByProperty=!1}},datasource:function(a,b){if(!(a&&b&&isArrayEqualByKey(a,b,["label","value","children"]))){let b=this.visibleReal;b?this.timer.sleep(300).then(()=>{this._initRealDatasource(a),this._refreshDatasource(!0)}):(this._initRealDatasource(a),this._refreshDatasource(!0))}}},created(){this.timer=new bpLibs.Timer},beforeMount(){if(!this.datasource)throw new Error("picker must have datasource");this._initRealDatasource(this.datasource),this._refreshDatasource(!1),this.visibleReal=this.visible},beforeDestroy(){this.hide(),this.timer.dispose(),this.timer=null},mounted(){},methods:{show:function(){return this.$refs.widget.show()},hide:function(){return this.$refs.widget.hide()},setSelect(a,b,c=!1){let d=this["items"+a];if(d){let e=this.$refs.agentMain;if(e&&(e=$(e),e=$(e.children(`.bp-picker__group`)[a]),e=$(e.children(".bp-picker__content")[0]),e)){e=$(e);let f=picker_getOffset(e),g=0;for(;g<d.length&&d[g].value!=b&&b;g++);g>=d.length&&(g=d.length-1),g<d.length&&(g=-g*POS_CELL_HEIGHT+POS_CENTER,g!=f&&(picker_setOffset(e,g),g=picker_getOffset(e),f!=g&&this.realDatasource.picker_changed(a,this),c&&this._onChange()))}}},getSelect(a=0){let b=this["items"+a];if(b){let c=this.$refs.agentMain;if(c&&(c=$(c),c=$(c.children(`.bp-picker__group`)[a]),c=$(c.children(".bp-picker__content")[0]),c)){c=$(c);let a=picker_getOffset(c);if(a-=POS_CENTER,a=parseInt(-a/POS_CELL_HEIGHT),b[a])return febs.utils.mergeMap(b[a])}return b[0]?b[0]:{}}return{}},getValue(){let a;return a=1==this.groupCount?this.value0:2==this.groupCount?[this.value0,this.value1]:3==this.groupCount?[this.value0,this.value1,this.value2]:[this.value0,this.value1,this.value2,this.value3],a},_onCancel(){this.$emit("cancel")},_onChange(){let a;a=1==this.groupCount?this.getSelect(0).value:2==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value]:3==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value]:[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value,this.getSelect(3).value],this.$emit("change",a)},_onConfirm(){let a;1==this.groupCount?(this.value0=this.getSelect(0).value,a=this.value0):2==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,a=[this.value0,this.value1]):3==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,a=[this.value0,this.value1,this.value2]):(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,this.value3=this.getSelect(3).value,a=[this.value0,this.value1,this.value2,this.value3]),this.noEmitUpdateWatch=!0,this.$emit("input",a),this.$emit("confirm",this)},_bindEvent(){let a=this.$refs.agentToolbar,b=$(this.$refs.agentMain),c=b.children(".bp-picker__group").children(".bp-picker__mask"),d=b.children(".bp-picker__group").children(".bp-picker__content");if(d[0])for(let a=0;a<d.length;a++)$(d[a]).off("change").on("change",a=>{let b=parseInt($(a.currentTarget).attr("data-group"));this.realDatasource.picker_changed(b,this),this._onChange()});if(c[0]){let a,b,d,e;"undefined"==typeof c[0].ontouchstart?(a="mousedown",b="mousemove",d="mouseup",e="mouseout"):(a="touchstart",b="touchmove",d="touchend",e="touchcancel");for(let f=0;f<c.length;f++)febs.dom.removeEventListener(c[f],a,mobile_onTouchstart_picker,!0),febs.dom.removeEventListener(c[f],b,mobile_onTouchmove_picker,!0),febs.dom.removeEventListener(c[f],d,mobile_onTouchend_picker,!0),febs.dom.removeEventListener(c[f],e,mobile_onTouchcancel_picker,!0),febs.dom.addEventListener(c[f],a,mobile_onTouchstart_picker,!0)}},refreshDatasource(a,b=!0){return new Promise((c,d)=>{let e,f=!1;try{this.realDatasource.picker_datasource(a,this,g=>{try{if(e=g.value,!Array.isArray(g.datasource))throw new Error("picker datasource must is Array");!!this["items"+a]&&!!g.datasource||(f=!0),this["items"+a]=g.datasource}catch(a){d(a)}this.$nextTick(()=>{setTimeout(()=>{this.setSelect(a,e,b),c(e),this._bindEvent(),b&&f},0)})})}catch(a){d(a)}})},_refreshDatasource(a=!0){this.realDatasource.picker_datasource_groups(b=>{if(0>=b||4<b)throw new Error("picker group count must in [1,4]");this.groupCount=b;let c=new Promise(a=>a());for(let d=0;d<b;d++)c=c.then(febs.utils.sleep(1).then(this.refreshDatasource(d,a)));this.$nextTick(()=>{c.then(()=>{this._bindEvent()})})})},_initRealDatasource(a){if(Array.isArray(a)){let b=1;for(let c=0;c<a.length;c++)if(a[c].children&&Array.isArray(a[c].children)){b=2;let d=0;for(d=0;d<a[c].children.length;d++)if(a[c].children[d].children&&Array.isArray(a[c].children[d].children)){b=3;break}if(d<a[c].children.length)break}let c;c=1==b?PickerSingleDatasource:2==b?PickerDoubleDatasource:PickerThreeDatasource,this.realDatasource=new c(a)}else this.realDatasource=a;if("function"!=typeof this.realDatasource.picker_datasource_groups||"function"!=typeof this.realDatasource.picker_datasource||"function"!=typeof this.realDatasource.picker_changed)throw new Error("picker datasource class must have `picker_datasource_groups`, `picker_datasource`, `picker_changed` function")}}};function normalizeComponent(a,b,c,d,e,f,g,h,i,j){"boolean"!=typeof g&&(i=h,h=g,g=!1);const k="function"==typeof c?c.options:c;a&&a.render&&(k.render=a.render,k.staticRenderFns=a.staticRenderFns,k._compiled=!0,e&&(k.functional=!0)),d&&(k._scopeId=d);let l;if(f?(l=function(a){a=a||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,a||"undefined"==typeof __VUE_SSR_CONTEXT__||(a=__VUE_SSR_CONTEXT__),b&&b.call(this,i(a)),a&&a._registeredComponents&&a._registeredComponents.add(f)},k._ssrRegister=l):b&&(l=g?function(a){b.call(this,j(a,this.$root.$options.shadowRoot))}:function(a){b.call(this,h(a))}),l)if(k.functional){const a=k.render;k.render=function(b,c){return l.call(c),a(b,c)}}else{const a=k.beforeCreate;k.beforeCreate=a?[].concat(a,l):[l]}return c}const __vue_script__=script;var __vue_render__=function(){var a=this,b=a.$createElement,c=a._self._c||b;return c("bp-widget",{ref:"widget",staticClass:"bp-picker",attrs:{visible:a.visibleReal,maskClose:a.maskClose,mask:a.mask,pageClass:a.pageClass,pageStyle:a.pageStyle,preventEvent:!0},on:{"update:visible":function(b){a.visibleReal=b}}},[a.$slots.toolbar?c("div",{staticClass:"bp-picker__toolbar bp-ellipsis"},[a._t("toolbar")],2):c("div",{ref:"agentToolbar",staticClass:"bp-picker__toolbar bp-ellipsis"},[c("button",{staticClass:"bp-picker__cancelBtn",on:{click:function(){a.visibleReal=!1}}},[a._v(a._s(a.cancelBtnText))]),a._v(" "),c("button",{on:{click:a._onConfirm}},[a._v(a._s(a.confirmBtnText))])]),a._v(" "),c("div",{ref:"agentMain",staticClass:"bp-picker__main"},[c("div",{staticClass:"bp-picker__group",style:{display:0<a.groupCount?"inherit":"none"},attrs:{"data-picker":"0"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content0",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"0"}},a._l(a.items0,function(b,d){return c("div",{key:"_1"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:1<a.groupCount?"inherit":"none"},attrs:{"data-picker":"1"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content1",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"1"}},a._l(a.items1,function(b,d){return c("div",{key:"_2"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:2<a.groupCount?"inherit":"none"},attrs:{"data-picker":"2"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content2",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"2"}},a._l(a.items2,function(b,d){return c("div",{key:"_3"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:3<a.groupCount?"inherit":"none"},attrs:{"data-picker":"3"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content3",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"3"}},a._l(a.items3,function(b,d){return c("div",{key:"_4"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)])])])},__vue_staticRenderFns__=[];__vue_render__._withStripped=!0;const __vue_inject_styles__=void 0,__vue_scope_id__=void 0,__vue_module_identifier__=void 0,__vue_is_functional_template__=!1,__vue_component__=normalizeComponent({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},void 0,__vue_script__,__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,!1,void 0,void 0,void 0);function ds_years(a,b,c){let d=new Date;if(a||(a=d.getFullYear()-80),b||(b=d.getFullYear()+80),a>b){let c=a;a=b,b=c}let e=[];for(let d=a;d<=b;d++)e.push({label:d+(c?c:""),value:d});return e}function ds_months(a){let b=[];for(let c=0;12>c;c++)b.push({label:c+1+(a?a:""),value:c});return b}function ds_days(a,b,c){let d=new Date(a,b+1,1,0,0,0,0);d.setTime(d.getTime()-82800000);let e=d.getDate(),f=[];for(let d=1;d<=e;d++)f.push({label:d+(c?c:""),value:d});return f}class PickerDateDatasource{constructor(a){a=a||{},this.yearText=a.yearText||"\u5E74",this.monthText=a.monthText||"\u6708",this.dateText=a.dateText||"\u65E5",this.yearFrom=a.yearFrom,this.yearTo=a.yearTo}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a){let a=new Date;return void c({datasource:ds_years(this.yearFrom,this.yearTo,this.yearText),value:a.getFullYear()})}if(1==a){let a=new Date;return void c({datasource:ds_months(this.monthText),value:a.getMonth()})}if(2==a){let a=b.getSelect(0).value,d=b.getSelect(1).value,e=b.getSelect(2).value,f=new Date,g=ds_days(a?a:f.getFullYear(),null===d||void 0===d?f.getMonth():d,this.dateText);return void c({datasource:g,value:e?e:f.getDate()})}}picker_changed(a,b){0==a?b.refreshDatasource(2).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}}function ds_hours(a){let b=[];for(let c=0;24>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}function ds_mins(a){let b=[];for(let c=0;60>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}class PickerTimeDatasource{constructor(a){a=a||{},this.hourText=a.hourText||"\u65F6",this.minuteText=a.minuteText||"\u5206"}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a){let a=new Date;c({datasource:ds_hours(this.hourText),value:a.getHours()})}else if(1==a){let a=new Date;c({datasource:ds_mins(this.minuteText),value:a.getMinutes()})}}picker_changed(){}}var index={bpPicker:__vue_component__,PickerDateDatasource,PickerDoubleDatasource,PickerSingleDatasource,PickerThreeDatasource,PickerTimeDatasource};export default index; |
/*! | ||
* bpui picker v0.1.10 | ||
* bpui picker v0.1.11 | ||
* Copyright (c) 2020 Copyright bp All Rights Reserved. | ||
* Released under the MIT License. | ||
*/(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b(require("febs-browser"),require("@bpui/libs"),require("@bpui/dialog")):"function"==typeof define&&define.amd?define(["febs-browser","@bpui/libs","@bpui/dialog"],b):(a=a||self,a.bpPicker=b(a.febs,a.bpLibs,a.bpDialog))})(this,function(a,b,c){'use strict';function d(a,b){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}return!1}function e(a,b,c){if(!a&&!b)return!0;if(Array.isArray(a)&&Array.isArray(b)&&a.length==b.length){for(let d=0;d<a.length;d++)for(let f=0;f<c.length;f++)if(Array.isArray(a[d][c[f]])){if(!e(a[d][c[f]],b[d][c[f]],c))return!1;}else if(a[d][c[f]]!=b[d][c[f]])return!1;return!0}return!1}function f(b){b=b||window.event;var c;if(c=b.touches?b.touches[0]:{clientX:b.clientX,clientY:b.clientY},c){var d=b.currentTarget;if(d){var e=$(d).parent(".bp-picker__group").children(".bp-picker__content");if(e=$(e[0]),!e[0])return!1;e.css("transition","all 0s"),e=e[0],e.__picker_start=!0,e.__picker_touch=c.clientX,e.__picker_touch1=c.clientY,e.__picker_start_at=Date.now();var f=k($(e));return e.__offset=f,d.setCapture?d.setCapture():"undefined"==typeof d.ontouchstart?(a.dom.removeEventListener(d,"mousemove",g,!0),a.dom.removeEventListener(d,"mouseup",h,!0),a.dom.removeEventListener(d,"mouseout",v,!0),a.dom.addEventListener(d,"mousemove",g,!0),a.dom.addEventListener(d,"mouseup",h,!0),a.dom.addEventListener(d,"mouseout",v,!0)):(a.dom.removeEventListener(d,"touchmove",g,!0),a.dom.removeEventListener(d,"touchend",h,!0),a.dom.removeEventListener(d,"touchcancel",v,!0),a.dom.addEventListener(d,"touchmove",g,!0),a.dom.addEventListener(d,"touchend",h,!0),a.dom.addEventListener(d,"touchcancel",v,!0)),b.preventDefault(),b.stopPropagation(),b.cancelBubble=!0,!1}return!0}}function g(a){a=a||window.event;var b;if(b=a.touches?a.touches[0]:{clientX:a.clientX,clientY:a.clientY},b){var c=a.currentTarget;if(!c)return!1;var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(!d[0])return!1;if(d=d[0],!d.__picker_start)return;var e=parseFloat(b.clientY-d.__picker_touch1);e+=d.__offset||0,e=e.toFixed(1),$(d).css("transform","translate3d(0px, "+e+"px, 0px)")}return a.stopPropagation(),a.preventDefault(),a.cancelBubble=!0,!1}function h(b){b=b||window.event;var c=b.currentTarget;if(!c)return!1;var d=$(c).parent(".bp-picker__group").children(".bp-picker__content");if(!d[0])return!1;d=d[0],c.releaseCapture?c.releaseCapture():"undefined"==typeof c.ontouchstart?(a.dom.removeEventListener(c,"mousemove",g,!0),a.dom.removeEventListener(c,"mouseup",h,!0),a.dom.removeEventListener(c,"mouseout",v,!0)):(a.dom.removeEventListener(c,"touchmove",g,!0),a.dom.removeEventListener(c,"touchend",h,!0),a.dom.removeEventListener(c,"touchcancel",v,!0));var e=b.touches&&0<b.touches.length||b.changedTouches&&0<b.changedTouches.length?b.touches[0]||b.changedTouches[0]:{clientX:b.clientX,clientY:b.clientY,clientX:b.clientX,clientY:b.clientY};var f=$(d),i=k(f),l=d.__offset,m=1e3*((e.clientY-d.__picker_touch1)/(Date.now()-d.__picker_start_at||1));if(d.__picker_touch1==e.clientY){var n=-(e.clientY-a.dom.getElementOffset(b.currentTarget).top);n+=b.currentTarget.clientHeight/2,i+=n,m=0}delete d.__picker_start,delete d.__picker_start_at,delete d.__picker_touch,delete d.__picker_touch1,i+=.1*m,i=j(f,i),l!=i&&f.trigger("change")}function j(a,b){var c=b%u;if(0<c?20<=c?(b-=c,b+=u):b-=c:-20>=c?(b-=c,b-=u):b-=c,b>t)b=t;else{var d=-40*a.children(".bp-picker__item").length+t+u;b<d&&(b=d)}return a.css("transition","all 0.3s").css("transform","translate3d(0px, "+b+"px, 0px)"),b}function k(b){var c=b[0].style.transform;return a.string.isEmpty(c)?c=0:(c=c.split(","),c=c[1]||"0",c=a.string.trim(c),c=a.string.replace(c,"px",""),c=parseFloat(c)),c}function l(a,b,c){let d=new Date;if(a||(a=d.getFullYear()-80),b||(b=d.getFullYear()+80),a>b){let c=a;a=b,b=c}let e=[];for(let d=a;d<=b;d++)e.push({label:d+(c?c:""),value:d});return e}function m(a){let b=[];for(let c=0;12>c;c++)b.push({label:c+1+(a?a:""),value:c});return b}function n(a,b,c){let d=new Date(a,b+1,1,0,0,0,0);d.setTime(d.getTime()-82800000);let e=d.getDate(),f=[];for(let d=1;d<=e;d++)f.push({label:d+(c?c:""),value:d});return f}function o(a){let b=[];for(let c=0;24>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}function p(a){let b=[];for(let c=0;60>c;c++)b.push({label:(10>c?"0"+c:c)+(a?" "+a:""),value:c});return b}a=a&&Object.prototype.hasOwnProperty.call(a,"default")?a["default"]:a,b=b&&Object.prototype.hasOwnProperty.call(b,"default")?b["default"]:b,c=c&&Object.prototype.hasOwnProperty.call(c,"default")?c["default"]:c;class q{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(1)}picker_datasource(a,b,c){c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null})}picker_changed(){}}class r{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else{let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}}picker_changed(a,b){0==a&&b.refreshDatasource(1).then(()=>{})}}class s{constructor(a){if(a=a||[],!(a&&Array.isArray(a)))throw new Error("Picker datasource must is array & isnt null");this.ds=a}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a)c({datasource:this.ds,value:0<this.ds.length?this.ds[0].value:null});else if(1==a){let a=b.getSelect(0);if(a){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value)return void(this.ds[b].children?c({datasource:this.ds[b].children,value:0<this.ds[b].children.length?this.ds[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null})}else if(2==a){let a=b.getSelect(0),d=b.getSelect(1);if(a&&d){for(let b=0;b<this.ds.length;b++)if(this.ds[b].value==a.value){let a=this.ds[b].children;if(a){for(let b=0;b<a.length;b++)if(a[b].value==d.value)return void(a[b].children?c({datasource:a[b].children,value:0<a[b].children.length?a[b].children[0].value:null}):c({datasource:[],value:null}));}else c({datasource:[],value:null});return}}else c({datasource:[],value:null})}}picker_changed(a,b){0==a?b.refreshDatasource(1).then(()=>b.refreshDatasource(2)).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}}const t=120,u=40;var v=h,w={components:{bpIcon:b.VueObject.bpIcon,bpWidget:c.bpWidget},props:{visible:Boolean,mask:{default:!0,type:Boolean},maskClose:{default:!1,type:Boolean},pageClass:String|Array,pageStyle:String|Array|Object,cancelBtnText:{type:String,default:"\u53D6\u6D88"},confirmBtnText:{type:String,default:"\u786E\u8BA4"},datasource:{validator:function(a){return"object"==typeof a||Array.isArray(a)}},value:{validator:function(a){return!a||"string"==typeof a||"number"==typeof a||Array.isArray(a)}}},data(){return{visibleReal:!1,visibleRealByProperty:!1,items0:null,items1:null,items2:null,items3:null,groupCount:1,value0:null,value1:null,value2:null,value3:null}},watch:{value(a,b){if(this.noEmitUpdateWatch)return void(this.noEmitUpdateWatch=!1);if(a!==b){let c=typeof a;if("string"==c||"number"===c)this.value0=a,this.$nextTick(()=>{this.setSelect(0,a,!1)});else if(Array.isArray(a)){if(d(a,b))return;this.$nextTick(()=>{for(let b=0;b<a.length&&b<this.groupCount;b++)this["value"+b]=a[b],this.setSelect(b,a[b],!1)})}else throw new Error("picker value is error")}},visible(a){this.visibleReal!=a&&(this.visibleRealByProperty=!0,this.visibleReal=a)},visibleReal(a,b){if(a!=b){if(this.$emit("update:visible",a),a){let a=this.getValue();if(Array.isArray(a))for(let b=0;b<a.length&&4>b;b++)this.setSelect(b,a[b],!1);else this.setSelect(0,a,!1)}a||this.visibleRealByProperty||this._onCancel(),this.visibleRealByProperty=!1}},datasource:function(a,b){if(!(a&&b&&e(a,b,["label","value","children"]))){let b=this.visibleReal;b?this.timer.sleep(300).then(()=>{this._initRealDatasource(a),this._refreshDatasource(!0)}):(this._initRealDatasource(a),this._refreshDatasource(!0))}}},created(){this.timer=new b.Timer},beforeMount(){if(!this.datasource)throw new Error("picker must have datasource");this._initRealDatasource(this.datasource),this._refreshDatasource(!1),this.visibleReal=this.visible},beforeDestroy(){this.hide(),this.timer.dispose(),this.timer=null},mounted(){},methods:{show:function(){return this.$refs.widget.show()},hide:function(){return this.$refs.widget.hide()},setSelect(a,b,c=!1){let d=this["items"+a];if(d){let e=this.$refs.agentMain;if(e&&(e=$(e),e=$(e.children(`.bp-picker__group`)[a]),e=$(e.children(".bp-picker__content")[0]),e)){e=$(e);let f=k(e),g=0;for(;g<d.length&&d[g].value!=b&&b;g++);g>=d.length&&(g=d.length-1),g<d.length&&(g=-g*u+t,g!=f&&(j(e,g),g=k(e),f!=g&&this.realDatasource.picker_changed(a,this),c&&this._onChange()))}}},getSelect(b=0){let c=this["items"+b];if(c){let d=this.$refs.agentMain;if(d&&(d=$(d),d=$(d.children(`.bp-picker__group`)[b]),d=$(d.children(".bp-picker__content")[0]),d)){d=$(d);let b=k(d);if(b-=t,b=parseInt(-b/u),c[b])return a.utils.mergeMap(c[b])}return c[0]?c[0]:{}}return{}},getValue(){let a;return a=1==this.groupCount?this.value0:2==this.groupCount?[this.value0,this.value1]:3==this.groupCount?[this.value0,this.value1,this.value2]:[this.value0,this.value1,this.value2,this.value3],a},_onCancel(){this.$emit("cancel")},_onChange(){let a;a=1==this.groupCount?this.getSelect(0).value:2==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value]:3==this.groupCount?[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value]:[this.getSelect(0).value,this.getSelect(1).value,this.getSelect(2).value,this.getSelect(3).value],this.$emit("change",a)},_onConfirm(){let a;1==this.groupCount?(this.value0=this.getSelect(0).value,a=this.value0):2==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,a=[this.value0,this.value1]):3==this.groupCount?(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,a=[this.value0,this.value1,this.value2]):(this.value0=this.getSelect(0).value,this.value1=this.getSelect(1).value,this.value2=this.getSelect(2).value,this.value3=this.getSelect(3).value,a=[this.value0,this.value1,this.value2,this.value3]),this.noEmitUpdateWatch=!0,this.$emit("input",a),this.$emit("confirm",this)},_bindEvent(){let b=this.$refs.agentToolbar,c=$(this.$refs.agentMain),d=c.children(".bp-picker__group").children(".bp-picker__mask"),e=c.children(".bp-picker__group").children(".bp-picker__content");if(e[0])for(let a=0;a<e.length;a++)$(e[a]).off("change").on("change",a=>{let b=parseInt($(a.currentTarget).attr("data-group"));this.realDatasource.picker_changed(b,this),this._onChange()});if(d[0]){let b,c,e,j;"undefined"==typeof d[0].ontouchstart?(b="mousedown",c="mousemove",e="mouseup",j="mouseout"):(b="touchstart",c="touchmove",e="touchend",j="touchcancel");for(let k=0;k<d.length;k++)a.dom.removeEventListener(d[k],b,f,!0),a.dom.removeEventListener(d[k],c,g,!0),a.dom.removeEventListener(d[k],e,h,!0),a.dom.removeEventListener(d[k],j,v,!0),a.dom.addEventListener(d[k],b,f,!0)}},refreshDatasource(a,b=!0){return new Promise((c,d)=>{let e,f=!1;try{this.realDatasource.picker_datasource(a,this,g=>{try{if(e=g.value,!Array.isArray(g.datasource))throw new Error("picker datasource must is Array");!!this["items"+a]&&!!g.datasource||(f=!0),this["items"+a]=g.datasource}catch(a){d(a)}this.$nextTick(()=>{setTimeout(()=>{this.setSelect(a,e,b),c(e),this._bindEvent(),b&&f},0)})})}catch(a){d(a)}})},_refreshDatasource(b=!0){this.realDatasource.picker_datasource_groups(c=>{if(0>=c||4<c)throw new Error("picker group count must in [1,4]");this.groupCount=c;let d=new Promise(a=>a());for(let e=0;e<c;e++)d=d.then(a.utils.sleep(1).then(this.refreshDatasource(e,b)));this.$nextTick(()=>{d.then(()=>{this._bindEvent()})})})},_initRealDatasource(a){if(Array.isArray(a)){let b=1;for(let c=0;c<a.length;c++)if(a[c].children&&Array.isArray(a[c].children)){b=2;let d=0;for(d=0;d<a[c].children.length;d++)if(a[c].children[d].children&&Array.isArray(a[c].children[d].children)){b=3;break}if(d<a[c].children.length)break}let c;c=1==b?q:2==b?r:s,this.realDatasource=new c(a)}else this.realDatasource=a;if("function"!=typeof this.realDatasource.picker_datasource_groups||"function"!=typeof this.realDatasource.picker_datasource||"function"!=typeof this.realDatasource.picker_changed)throw new Error("picker datasource class must have `picker_datasource_groups`, `picker_datasource`, `picker_changed` function")}}};var x=function(){var a=this,b=a.$createElement,c=a._self._c||b;return c("bp-widget",{ref:"widget",staticClass:"bp-picker",attrs:{visible:a.visibleReal,maskClose:a.maskClose,mask:a.mask,pageClass:a.pageClass,pageStyle:a.pageStyle,preventEvent:!0},on:{"update:visible":function(b){a.visibleReal=b}}},[a.$slots.toolbar?c("div",{staticClass:"bp-picker__toolbar bp-ellipsis"},[a._t("toolbar")],2):c("div",{ref:"agentToolbar",staticClass:"bp-picker__toolbar bp-ellipsis"},[c("button",{staticClass:"bp-picker__cancelBtn",on:{click:function(){a.visibleReal=!1}}},[a._v(a._s(a.cancelBtnText))]),a._v(" "),c("button",{on:{click:a._onConfirm}},[a._v(a._s(a.confirmBtnText))])]),a._v(" "),c("div",{ref:"agentMain",staticClass:"bp-picker__main"},[c("div",{staticClass:"bp-picker__group",style:{display:0<a.groupCount?"inherit":"none"},attrs:{"data-picker":"0"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content0",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"0"}},a._l(a.items0,function(b,d){return c("div",{key:"_1"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:1<a.groupCount?"inherit":"none"},attrs:{"data-picker":"1"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content1",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"1"}},a._l(a.items1,function(b,d){return c("div",{key:"_2"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:2<a.groupCount?"inherit":"none"},attrs:{"data-picker":"2"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content2",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"2"}},a._l(a.items2,function(b,d){return c("div",{key:"_3"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)]),a._v(" "),c("div",{staticClass:"bp-picker__group",style:{display:3<a.groupCount?"inherit":"none"},attrs:{"data-picker":"3"}},[c("div",{staticClass:"bp-picker__mask"}),a._v(" "),c("div",{staticClass:"bp-picker__indicator"}),a._v(" "),c("div",{ref:"content3",staticClass:"bp-picker__content",style:"transform: translate3d(0px, 102px, 0px); transition: all 0.3s;",attrs:{"data-group":"3"}},a._l(a.items3,function(b,d){return c("div",{key:"_4"+d,class:"bp-picker__item"+(b.disabled?" bp-picker__item-disabled":""),attrs:{"data-value":b.value}},[a._v(a._s(b.label))])}),0)])])])};x._withStripped=!0;const y=function(a,b,c,d,e,f,g,h,i,j){"boolean"!=typeof g&&(i=h,h=g,g=!1);const k="function"==typeof c?c.options:c;a&&a.render&&(k.render=a.render,k.staticRenderFns=a.staticRenderFns,k._compiled=!0,e&&(k.functional=!0)),d&&(k._scopeId=d);let l;if(f?(l=function(a){a=a||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,a||"undefined"==typeof __VUE_SSR_CONTEXT__||(a=__VUE_SSR_CONTEXT__),b&&b.call(this,i(a)),a&&a._registeredComponents&&a._registeredComponents.add(f)},k._ssrRegister=l):b&&(l=g?function(a){b.call(this,j(a,this.$root.$options.shadowRoot))}:function(a){b.call(this,h(a))}),l)if(k.functional){const a=k.render;k.render=function(b,c){return l.call(c),a(b,c)}}else{const a=k.beforeCreate;k.beforeCreate=a?[].concat(a,l):[l]}return c}({render:x,staticRenderFns:[]},void 0,w,void 0,!1,void 0,!1,void 0,void 0,void 0);return{bpPicker:y,PickerDateDatasource:class{constructor(a){a=a||{},this.yearText=a.yearText||"\u5E74",this.monthText=a.monthText||"\u6708",this.dateText=a.dateText||"\u65E5",this.yearFrom=a.yearFrom,this.yearTo=a.yearTo}picker_datasource_groups(a){a(3)}picker_datasource(a,b,c){if(0==a){let a=new Date;return void c({datasource:l(this.yearFrom,this.yearTo,this.yearText),value:a.getFullYear()})}if(1==a){let a=new Date;return void c({datasource:m(this.monthText),value:a.getMonth()})}if(2==a){let a=b.getSelect(0).value,d=b.getSelect(1).value,e=b.getSelect(2).value,f=new Date,g=n(a?a:f.getFullYear(),null===d||void 0===d?f.getMonth():d,this.dateText);return void c({datasource:g,value:e?e:f.getDate()})}}picker_changed(a,b){0==a?b.refreshDatasource(2).then(()=>{}):1==a&&b.refreshDatasource(2).then(()=>{})}},PickerDoubleDatasource:r,PickerSingleDatasource:q,PickerThreeDatasource:s,PickerTimeDatasource:class{constructor(a){a=a||{},this.hourText=a.hourText||"\u65F6",this.minuteText=a.minuteText||"\u5206"}picker_datasource_groups(a){a(2)}picker_datasource(a,b,c){if(0==a){let a=new Date;c({datasource:o(this.hourText),value:a.getHours()})}else if(1==a){let a=new Date;c({datasource:p(this.minuteText),value:a.getMinutes()})}}picker_changed(){}}}}); |
{ | ||
"description": "picker", | ||
"dependencies": { | ||
"@bpui/dialog": "^0.1.6", | ||
"@bpui/libs": "^0.2.3" | ||
"@bpui/dialog": "^0.1.7", | ||
"@bpui/libs": "^0.2.5" | ||
}, | ||
@@ -38,3 +38,3 @@ "directories": {}, | ||
"name": "@bpui/picker", | ||
"version": "0.1.10" | ||
"version": "0.1.11" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
499998
6443
Updated@bpui/dialog@^0.1.7
Updated@bpui/libs@^0.2.5