dbl-components
Version:
Framework based on bootstrap 5
2 lines • 10.2 kB
JavaScript
var _excluded=["options","more","value","reset"];function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t)}:p}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value}},_get.apply(null,arguments)}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}import React,{createRef}from"react";import{eventHandler}from"dbl-utils";import Field from"./field";var AutocompleteField=/*#__PURE__*/function(_Field){function AutocompleteField(props){var _this;_classCallCheck(this,AutocompleteField);_this=_callSuper(this,AutocompleteField,[props]);_defineProperty(_this,"show",function(){_this.setState({showDropdown:"show",value:""},function(){return _this.onFilter()})});_defineProperty(_this,"hide",function(){var opt=_this.state.selected;var value=opt?opt.label:"";_this.setState({showDropdown:"",value:value},function(){if(opt){var error=_this.isInvalid(opt.value);if(_this.state.error!=error)_this.setState({error:error})}})});_defineProperty(_this,"mapOptions",function(optRaw,i){if(!optRaw)return false;var modify=typeof _this.props.mutations==="function"&&_this.props.mutations("".concat(_this.props.name,".").concat(optRaw.value),optRaw);var opt=Object.assign({},optRaw,modify||{});if(opt.active===false)return false;return/*#__PURE__*/React.createElement("li",{key:opt.value,className:opt.disabled?"muted":""},/*#__PURE__*/React.createElement("span",{className:"dropdown-item",style:{cursor:"pointer"},onClick:!opt.disabled?function(){return _this.onSelectOption(opt)}:undefined},opt.label),opt.divider&&/*#__PURE__*/React.createElement("hr",className="m-0"))});_this.menuDropdown=/*#__PURE__*/createRef();_this.state.options=(props.options||[]).slice(0,props.maxItems);_this.state.more=!!(props.options||[]).slice(props.maxItems).length;_this.state.showDropdown="";if(props.value||props["default"]){var opt=_this.state.options.find(function(opt){return opt.value==props.value||opt.value==props["default"]});_this.state.value=opt?opt.label:""}return _this}_inherits(AutocompleteField,_Field);return _createClass(AutocompleteField,[{key:"onChange",value:function onChange(e){var _this2=this;var value=e.target.value;if(value)this.state.showDropdown="show";this.setState({value:value},function(){return _this2.onFilter()})}},{key:"onFilter",value:function onFilter(){var _this3=this;var value=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.state.value;var _this$props=this.props,options=_this$props.options,forceUseFilter=_this$props.forceUseFilter;if(options!==null&&options!==void 0&&options.length&&!forceUseFilter){var maxItems=this.props.maxItems;var allOpts=options.filter(function(opt){return opt.label.toLowerCase().includes(value.toLowerCase())});this.setState({options:allOpts.slice(0,maxItems),more:!!allOpts.slice(maxItems).length})}else{clearTimeout(this.timeoutFilter);this.timeoutFilter=setTimeout(function(){_this3.setState({loading:true});eventHandler.dispatch("filter."+_this3.props.name,value)},300)}}},{key:"onUpdate",value:function onUpdate(_ref){var _this4=this;var options=_ref.options,more=_ref.more,value=_ref.value,reset=_ref.reset,update=_objectWithoutProperties(_ref,_excluded);if(typeof options!=="undefined"){this.state.loading=false;var maxItems=this.props.maxItems;this.state.options=options.slice(0,maxItems);this.state.more=options.length>maxItems||more}if(typeof value!=="undefined"){this.state.value="";this.state.selected=null;if(![null,""].includes(value)){var opt=(options||this.state.options).concat(this.props.options||[]).find(function(opt){return opt.value==value});this.onSelectOption(opt)}if(this.input.current){var error=this.isInvalid(value);if(this.state.error!==error)this.state.error=error}}if(reset){this.state.value="";this.state.selected=null;if(![null,"",undefined].includes(this.props["default"])){var _opt=(options||this.state.options).concat(this.props.options||[]).find(function(opt){return opt.value==_this4.props["default"]});if(_opt){this.state.value=_opt.label;this.state.selected=_opt}}this._reset=true;this.returnData()}return _superPropGet(AutocompleteField,"onUpdate",this,3)([update])}},{key:"onSelectOption",value:function onSelectOption(opt){var _this5=this;this.setState({value:opt&&opt.value!==null?opt.label:"",selected:opt,error:false},function(){if(!opt)return;_this5.hide();_this5.returnData(opt.value,{option:opt})})}},{key:"type",get:function get(){return"text"}},{key:"inputProps",get:function get(){var _this6=this;var props=_superPropGet(AutocompleteField,"inputProps",this,1);props.onFocus=!(props.disabled||props.readOnly)?function(){return[_this6.show(),_superPropGet(AutocompleteField,"inputProps",_this6,1).onFocus()]}:null;props.autoComplete="off";props.list="autocompleteOff";return props}},{key:"inputNode",get:function get(){var _this$input$current;var loading=this.props.loading;var _this$state=this.state,options=_this$state.options,more=_this$state.more,showDropdown=_this$state.showDropdown,l=_this$state.loading;var cn=["dropdown-menu shadow",showDropdown];var closeStyle={top:0,left:0,position:"fixed",width:"100%",height:"100vh",opacity:0,zIndex:1000};var inputRect=((_this$input$current=this.input.current)===null||_this$input$current===void 0?void 0:_this$input$current.getBoundingClientRect())||{};return/*#__PURE__*/React.createElement(React.Fragment,{},showDropdown&&/*#__PURE__*/React.createElement("div",{onClick:this.hide,style:closeStyle}),_superPropGet(AutocompleteField,"inputNode",this,1),l&&loading,/*#__PURE__*/React.createElement("ul",{className:cn.flat().join(" "),ref:this.menuDropdown,style:{minWidth:inputRect.width||200,left:inputRect.left,top:(inputRect.top||0)+(inputRect.height||0),overflow:"hidden",zIndex:1001,position:"fixed"}},options.map(this.mapOptions).filter(function(o){return!!o}),more&&/*#__PURE__*/React.createElement("li",{},/*#__PURE__*/React.createElement("span",{className:"dropdown-item text-wrap"},"..."))))}}])}(Field);_defineProperty(AutocompleteField,"jsClass","AutocompleteField");_defineProperty(AutocompleteField,"defaultProps",_objectSpread(_objectSpread({},Field.defaultProps),{},{maxItems:6}));export{AutocompleteField as default};
//# sourceMappingURL=autocomplete-field.js.map