index.js 8.1 KB

1
  1. "use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_classNames2=_interopRequireDefault(require("../helpers/libs/classNames")),_styleToCssString=_interopRequireDefault(require("../helpers/libs/styleToCssString")),_arrayTreeFilter=_interopRequireDefault(require("../helpers/libs/arrayTreeFilter")),_fieldNamesBehavior=_interopRequireDefault(require("../helpers/mixins/fieldNamesBehavior")),_excluded=["activeOptions"];function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,i=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,r)),i}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _objectWithoutProperties(e,t){if(null==e)return{};var r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols)for(var n=Object.getOwnPropertySymbols(e),a=0;a<n.length;a++)r=n[a],0<=t.indexOf(r)||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r]);return i}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};for(var r,i={},n=Object.keys(e),a=0;a<n.length;a++)r=n[a],0<=t.indexOf(r)||(i[r]=e[r]);return i}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}var WUX_CASCADER_VIEW="wux-cascader-view";(0,_baseComponent.default)({behaviors:[_fieldNamesBehavior.default],externalClasses:["wux-scroll-view-class"],properties:{prefixCls:{type:String,value:"wux-cascader-view"},defaultValue:{type:Array,value:[]},value:{type:Array,value:[]},controlled:{type:Boolean,value:!1},options:{type:Array,value:[]},full:{type:Boolean,value:!1},placeholder:{type:String,value:"请选择"},height:{type:[String,Number],value:"auto"},skipAnimation:{type:Boolean,value:!1}},data:{activeOptions:[],activeIndex:0,bodyStyle:"",activeValue:[],showOptions:[],scrollViewStyle:""},computed:{classes:["prefixCls, full",function(e,t){return{wrap:(0,_classNames2.default)(e),hd:"".concat(e,"__hd"),bd:"".concat(e,"__bd"),innerScroll:(0,_classNames2.default)("".concat(e,"__inner-scroll"),_defineProperty({},"".concat(e,"__inner-scroll--full"),t)),scrollView:"".concat(e,"__scroll-view"),ft:"".concat(e,"__ft")}}]},observers:{value:function(e){this.data.controlled&&(this.setData({activeValue:e}),this.getCurrentOptions(e))},options:function(){this.getCurrentOptions(this.data.activeValue)},height:function(e){this.updateStyle(e)}},methods:{getActiveOptions:function(r){var e=this.data.options,i=this.getFieldName("value"),t=this.getFieldName("children");return(0,_arrayTreeFilter.default)(e,function(e,t){return e[i]===r[t]},{childrenKeyName:t})},getShowOptions:function(e){var t=this.data.options,r=this.getFieldName("children"),e=this.getActiveOptions(e).map(function(e){return e[r]}).filter(function(e){return!!e});return[t].concat(_toConsumableArray(e))},getMenus:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],r=1<arguments.length?arguments[1]:void 0,i=this.data.placeholder,t=this.getActiveOptions(t);return r&&(r=this.getFieldName("value"),e=this.getFieldName("label"),t.push(_defineProperty(_defineProperty({},r,WUX_CASCADER_VIEW),e,i))),t},getNextActiveValue:function(e,t){var r=this.data.activeValue;return(r=r.slice(0,t+1))[t]=e,r},updated:function(e,t,r,i){var n=this.getFieldName("value"),a=this.getFieldName("children"),a=e&&e[a]&&0<e[a].length,n=this.getNextActiveValue(e[n],t),o=this.getMenus(n,a),l=o.length-1,s=this.getShowOptions(n),o={activeValue:n,activeOptions:o,activeIndex:l,showOptions:s};(a||n.length===s.length&&(t=Math.max(0,t-1)))&&(o.bodyStyle=this.getTransform(t+1),o.showOptions=s),r&&this.setCascaderView(o),"function"==typeof i&&i.call(this,e,n)},getCurrentOptions:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.data.activeValue,t=Math.max(0,e.length-1),r=this.getActiveOptions(e),i=r[t];i?this.updated(i,t,!0):(i=this.getFieldName("value"),t=this.getFieldName("label"),r.push(_defineProperty(_defineProperty({},i,WUX_CASCADER_VIEW),t,this.data.placeholder)),i=this.getShowOptions(e),t=r.length-1,this.setCascaderView({showOptions:i,activeOptions:r,activeIndex:t,bodyStyle:""}))},setCascaderView:function(e){var t=this,r=e.activeOptions,i=_objectWithoutProperties(e,_excluded);this.setData({activeOptions:r},function(){t.data.activeIndex!==i.activeIndex&&t.triggerEvent("tabsChange",{index:i.activeIndex}),t.setData(i)})},getTransform:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!this.data.skipAnimation,r=this.data.full?2:1,e=this.data.full?e:e-1;return(0,_styleToCssString.default)({transition:t?"transform .3s":"none",transform:"translate(".concat(-50*r*Math.max(0,e),"%)")})},onTabsChange:function(e){var e=parseInt(e.detail.key),t=this.getTransform(e);this.data.bodyStyle===t&&this.data.activeIndex===e||(this.setData({bodyStyle:t,activeIndex:e}),this.triggerEvent("tabsChange",{index:e}))},onItemSelect:function(e){var t=e.currentTarget.dataset.optionIndex,e=e.detail.index,e=this.data.showOptions[t][e];this.updated(e,t,!this.data.controlled,this.onChange)},onChange:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],r=this.getFieldName("children"),t=this.getValue(t);e&&!1===e.isLeaf&&!e[r]?(this.triggerEvent("change",_objectSpread({},t)),this.triggerEvent("load",{value:t.value,options:t.options})):this.triggerEvent("change",_objectSpread({},t))},getValue:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.data.activeValue,t=Math.max(0,e.length-1),e=this.getActiveOptions(e),t=e[t],r=this.getFieldName("value"),i=this.getFieldName("children"),n=t&&t[i]&&0<t[i].length,e=e.filter(function(e){return e[r]!==WUX_CASCADER_VIEW}),a=e.map(function(e){return e[r]});return t&&!1===t.isLeaf&&!t[i]?{value:a,options:e,done:!1}:{value:a,options:e,done:!n}},updateStyle:function(e){e=(0,_styleToCssString.default)({height:e,minHeight:e});this.data.scrollViewStyle!==e&&this.setData({scrollViewStyle:e})}},attached:function(){var e=this.data,t=e.defaultValue,r=e.value,i=e.controlled,e=e.height,i=i?r:t;this.setData({activeValue:i}),this.getCurrentOptions(i),this.updateStyle(e)}});