UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

2 lines (1 loc) 19.3 kB
(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var t=e.$,a=e.utils,r=e.getDevice,n=(e.getSupport,e.Class),l=(e.Modal,e.ConstructorMethods),p=(e.ModalMethods,a.extend),s=a.id,i=a.nextTick,u=a.iosPreloaderContent,d=a.mdPreloaderContent,c=a.auroraPreloaderContent,m=a.deleteProps;function v(e){this.wrapped=e}function f(e){var o,t;function a(o,t){try{var n=e[o](t),l=n.value,p=l instanceof v;Promise.resolve(p?l.wrapped:l).then((function(e){p?a("return"===o?"return":"next",e):r(n.done?"return":"normal",e)}),(function(e){a("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":o.resolve({value:r,done:!0});break;case"throw":o.reject(r);break;default:o.resolve({value:r,done:!1})}(o=o.next)?a(o.key,o.arg):t=null}this._invoke=function(e,r){return new Promise((function(n,l){var p={key:e,arg:r,resolve:n,reject:l,next:null};t?t=t.next=p:(o=t=p,a(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function h(e,o){for(var t=0;t<o.length;t++){var a=o[t];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $(e,o){return($=Object.setPrototypeOf||function(e,o){return e.__proto__=o,e})(e,o)}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}f.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},f.prototype.next=function(e){return this._invoke("next",e)},f.prototype.throw=function(e){return this._invoke("throw",e)},f.prototype.return=function(e){return this._invoke("return",e)};s=0;var b=function(e){var o,a;function n(o,a){var n;void 0===a&&(a={});var l=g(n=e.call(this,a,[o])||this);l.app=o;var u,d,c=r(),m=p({on:{}},o.params.autocomplete);void 0===m.searchbarDisableButton&&(m.searchbarDisableButton="aurora"!==o.theme),l.useModulesParams(m),l.params=p(m,a),l.params.openerEl&&(u=t(l.params.openerEl)).length&&(u[0].f7Autocomplete=l),l.params.inputEl&&(d=t(l.params.inputEl)).length&&(d[0].f7Autocomplete=l);var v=s(),f=a.url;!f&&u&&u.length&&(u.attr("href")?f=u.attr("href"):u.find("a").length>0&&(f=u.find("a").attr("href"))),f&&"#"!==f&&""!==f||(f=l.params.url);var h=l.params.multiple?"checkbox":"radio";p(l,{$openerEl:u,openerEl:u&&u[0],$inputEl:d,inputEl:d&&d[0],id:v,url:f,value:l.params.value||[],inputType:h,inputName:h+"-"+v,$modalEl:void 0,$dropdownEl:void 0});var $="";function b(){var e=l.$inputEl.val().trim();l.params.source&&l.params.source.call(l,e,(function(o){var t,a,r,n="",p=l.params.limit?Math.min(l.params.limit,o.length):o.length;l.items=o,l.params.highlightMatches&&(e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),t=new RegExp("("+e+")","i"));for(var s=0;s<p;s+=1){var i="object"==typeof o[s]?o[s][l.params.valueProperty]:o[s],u="object"==typeof o[s]?o[s][l.params.textProperty]:o[s];0===s&&(a=i,r=l.items[s]),n+=l.renderItem({value:i,text:l.params.highlightMatches?u.replace(t,"<b>$1</b>"):u},s)}if(""===n&&""===e&&l.params.dropdownPlaceholderText&&(n+=l.renderItem({placeholder:!0,text:l.params.dropdownPlaceholderText})),l.$dropdownEl.find("ul").html(n),l.params.typeahead){if(!a||!r)return;if(0!==a.toLowerCase().indexOf(e.toLowerCase()))return;if($.toLowerCase()===e.toLowerCase())return void(l.value=[]);if(0===$.toLowerCase().indexOf(e.toLowerCase()))return $=e,void(l.value=[]);d.val(a),d[0].setSelectionRange(e.length,a.length);var c="object"==typeof l.value[0]?l.value[0][l.params.valueProperty]:l.value[0];c&&a.toLowerCase()===c.toLowerCase()||(l.value=[r],l.emit("local::change autocompleteChange",[r]))}$=e}))}function w(){var e,o,a,r=this,n=r.value;if(t(r).parents(".autocomplete-values").length>0){if("checkbox"===l.inputType&&!r.checked){for(var p=0;p<l.value.length;p+=1)(a="string"==typeof l.value[p]?l.value[p]:l.value[p][l.params.valueProperty])!==n&&1*a!=1*n||l.value.splice(p,1);l.updateValues(),l.emit("local::change autocompleteChange",l.value)}}else{for(var s=0;s<l.items.length;s+=1)(o="object"==typeof l.items[s]?l.items[s][l.params.valueProperty]:l.items[s])!==n&&1*o!=1*n||(e=l.items[s]);if("radio"===l.inputType)l.value=[e];else if(r.checked)l.value.push(e);else for(var i=0;i<l.value.length;i+=1)(a="object"==typeof l.value[i]?l.value[i][l.params.valueProperty]:l.value[i])!==n&&1*a!=1*n||l.value.splice(i,1);l.updateValues(),("radio"===l.inputType&&r.checked||"checkbox"===l.inputType)&&l.emit("local::change autocompleteChange",l.value)}}function x(e){var o=t(e.target);o.is(l.$inputEl[0])||l.$dropdownEl&&o.closest(l.$dropdownEl[0]).length||l.close()}function E(){l.open()}function y(){l.open()}function C(){l.$dropdownEl.find("label.active-state").length>0||setTimeout((function(){l.close()}),0)}function j(){l.positionDropdown()}function P(e){if(l.opened){if(27===e.keyCode)return e.preventDefault(),void l.$inputEl.blur();if(13===e.keyCode){var o=l.$dropdownEl.find(".autocomplete-dropdown-selected label");return o.length?(e.preventDefault(),o.trigger("click"),void l.$inputEl.blur()):void(l.params.typeahead&&(e.preventDefault(),l.$inputEl.blur()))}if(40===e.keyCode||38===e.keyCode){e.preventDefault();var t,a=l.$dropdownEl.find(".autocomplete-dropdown-selected");a.length&&(t=a[40===e.keyCode?"next":"prev"]("li")).length||(t=l.$dropdownEl.find("li").eq(40===e.keyCode?0:l.$dropdownEl.find("li").length-1)),t.hasClass("autocomplete-dropdown-placeholder")||(a.removeClass("autocomplete-dropdown-selected"),t.addClass("autocomplete-dropdown-selected"))}}}function k(){for(var e,o=t(this),a=0;a<l.items.length;a+=1){var r="object"==typeof l.items[a]?l.items[a][l.params.valueProperty]:l.items[a],n=o.attr("data-value");r!==n&&1*r!=1*n||(e=l.items[a])}l.params.updateInputValueOnSelect&&(l.$inputEl.val("object"==typeof e?e[l.params.valueProperty]:e),l.$inputEl.trigger("input change")),l.value=[e],l.emit("local::change autocompleteChange",[e]),l.close()}return l.attachEvents=function(){"dropdown"!==l.params.openIn&&l.$openerEl&&l.$openerEl.on("click",E),"dropdown"===l.params.openIn&&l.$inputEl&&(l.$inputEl.on("focus",y),l.$inputEl.on(l.params.inputEvents,b),c.android?t("html").on("click",x):l.$inputEl.on("blur",C),l.$inputEl.on("keydown",P))},l.detachEvents=function(){"dropdown"!==l.params.openIn&&l.$openerEl&&l.$openerEl.off("click",E),"dropdown"===l.params.openIn&&l.$inputEl&&(l.$inputEl.off("focus",y),l.$inputEl.off(l.params.inputEvents,b),c.android?t("html").off("click",x):l.$inputEl.off("blur",C),l.$inputEl.off("keydown",P))},l.attachDropdownEvents=function(){l.$dropdownEl.on("click","label",k),o.on("resize",j)},l.detachDropdownEvents=function(){l.$dropdownEl.off("click","label",k),o.off("resize",j)},l.attachPageEvents=function(){l.$el.on("change",'input[type="radio"], input[type="checkbox"]',w),l.params.closeOnSelect&&!l.params.multiple&&l.$el.once("click",".list label",(function(){i((function(){l.close()}))}))},l.detachPageEvents=function(){l.$el.off("change",'input[type="radio"], input[type="checkbox"]',w)},l.useModules(),l.init(),l||g(n)}a=e,(o=n).prototype=Object.create(a.prototype),o.prototype.constructor=o,$(o,a);var l,v,f,b=n.prototype;return b.positionDropdown=function(){var e,o=this,a=o.$inputEl,r=o.app,n=o.$dropdownEl,l=a.parents(".page-content");if(0!==l.length){var p,s=a.offset(),i=a[0].offsetWidth,u=a[0].offsetHeight,d=a.parents(".list");d.parents().each((function(e){if(!p){var o=t(e);o.parent(l).length&&(p=o)}}));var c,m=d.offset(),v=parseInt(l.css("padding-bottom"),10),f=d.length>0?m.left-l.offset().left:0,h=s.left-(d.length>0?m.left:0)-(r.rtl,0),$=s.top-(l.offset().top-l[0].scrollTop),g=l[0].scrollHeight-v-($+l[0].scrollTop)-a[0].offsetHeight,b=r.rtl?"padding-right":"padding-left";d.length&&!o.params.expandInput&&(c=(r.rtl?d[0].offsetWidth-h-i:h)-("md"===r.theme?16:15)),n.css({left:(d.length>0?f:h)+"px",top:$+l[0].scrollTop+u+"px",width:(d.length>0?d[0].offsetWidth:i)+"px"}),n.children(".autocomplete-dropdown-inner").css(((e={maxHeight:g+"px"})[b]=d.length>0&&!o.params.expandInput?c+"px":"",e))}},b.focus=function(){this.$el.find("input[type=search]").focus()},b.source=function(e){var o=this;if(o.params.source){var t=o.$el;o.params.source.call(o,e,(function(a){var r="",n=o.params.limit?Math.min(o.params.limit,a.length):a.length;o.items=a;for(var l=0;l<n;l+=1){for(var p=!1,s="object"==typeof a[l]?a[l][o.params.valueProperty]:a[l],i=0;i<o.value.length;i+=1){var u="object"==typeof o.value[i]?o.value[i][o.params.valueProperty]:o.value[i];u!==s&&1*u!=1*s||(p=!0)}r+=o.renderItem({value:s,text:"object"==typeof a[l]?a[l][o.params.textProperty]:a[l],inputType:o.inputType,id:o.id,inputName:o.inputName,selected:p},l)}t.find(".autocomplete-found ul").html(r),0===a.length?0!==e.length?(t.find(".autocomplete-not-found").show(),t.find(".autocomplete-found, .autocomplete-values").hide()):(t.find(".autocomplete-values").show(),t.find(".autocomplete-found, .autocomplete-not-found").hide()):(t.find(".autocomplete-found").show(),t.find(".autocomplete-not-found, .autocomplete-values").hide())}))}},b.updateValues=function(){for(var e=this,o="",t=0;t<e.value.length;t+=1)o+=e.renderItem({value:"object"==typeof e.value[t]?e.value[t][e.params.valueProperty]:e.value[t],text:"object"==typeof e.value[t]?e.value[t][e.params.textProperty]:e.value[t],inputType:e.inputType,id:e.id,inputName:e.inputName+"-checked}",selected:!0},t);e.$el.find(".autocomplete-values ul").html(o)},b.preloaderHide=function(){var e=this;"dropdown"===e.params.openIn&&e.$dropdownEl?e.$dropdownEl.find(".autocomplete-preloader").removeClass("autocomplete-preloader-visible"):t(".autocomplete-preloader").removeClass("autocomplete-preloader-visible")},b.preloaderShow=function(){var e=this;"dropdown"===e.params.openIn&&e.$dropdownEl?e.$dropdownEl.find(".autocomplete-preloader").addClass("autocomplete-preloader-visible"):t(".autocomplete-preloader").addClass("autocomplete-preloader-visible")},b.renderPreloader=function(){var e=this,o={iosPreloaderContent:u,mdPreloaderContent:d,auroraPreloaderContent:c};return $jsx("div",{class:"autocomplete-preloader preloader "+(e.params.preloaderColor?"color-"+e.params.preloaderColor:"")},o[e.app.theme+"PreloaderContent"]||"")},b.renderSearchbar=function(){var e=this;return e.params.renderSearchbar?e.params.renderSearchbar.call(e):$jsx("form",{class:"searchbar"},$jsx("div",{class:"searchbar-inner"},$jsx("div",{class:"searchbar-input-wrap"},$jsx("input",{type:"search",spellcheck:e.params.searchbarSpellcheck||"false",placeholder:e.params.searchbarPlaceholder}),$jsx("i",{class:"searchbar-icon"}),$jsx("span",{class:"input-clear-button"})),e.params.searchbarDisableButton&&$jsx("span",{class:"searchbar-disable-button"},e.params.searchbarDisableText)))},b.renderItem=function(e,o){var t=this;if(t.params.renderItem)return t.params.renderItem.call(t,e,o);var a=e.value&&"string"==typeof e.value?e.value.replace(/"/g,"&quot;"):e.value;return"dropdown"!==t.params.openIn?$jsx("li",null,$jsx("label",{class:"item-"+e.inputType+" item-content"},$jsx("input",{type:e.inputType,name:e.inputName,value:a,_checked:e.selected}),$jsx("i",{class:"icon icon-"+e.inputType}),$jsx("div",{class:"item-inner"},$jsx("div",{class:"item-title"},e.text)))):e.placeholder?$jsx("li",{class:"autocomplete-dropdown-placeholder"},$jsx("label",{class:"item-content"},$jsx("div",{class:"item-inner"},$jsx("div",{class:"item-title"},e.text)))):$jsx("li",null,$jsx("label",{class:"item-radio item-content","data-value":a},$jsx("div",{class:"item-inner"},$jsx("div",{class:"item-title"},e.text))))},b.renderNavbar=function(){var e=this;if(e.params.renderNavbar)return e.params.renderNavbar.call(e);var o=e.params.pageTitle;void 0===o&&e.$openerEl&&e.$openerEl.length&&(o=e.$openerEl.find(".item-title").text().trim());var t="popup"===e.params.openIn,a=t?e.params.preloader&&$jsx("div",{class:"left"},e.renderPreloader()):$jsx("div",{class:"left sliding"},$jsx("a",{class:"link back"},$jsx("i",{class:"icon icon-back"}),$jsx("span",{class:"if-not-md"},e.params.pageBackLinkText))),r=t?$jsx("div",{class:"right"},$jsx("a",{class:"link popup-close","data-popup":".autocomplete-popup"},e.params.popupCloseLinkText)):e.params.preloader&&$jsx("div",{class:"right"},e.renderPreloader());return $jsx("div",{class:"navbar "+(e.params.navbarColorTheme?"color-"+e.params.navbarColorTheme:"")},$jsx("div",{class:"navbar-bg"}),$jsx("div",{class:"navbar-inner "+(e.params.navbarColorTheme?"color-"+e.params.navbarColorTheme:"")},a,o&&$jsx("div",{class:"title sliding"},o),r,$jsx("div",{class:"subnavbar sliding"},e.renderSearchbar())))},b.renderDropdown=function(){var e=this;return e.params.renderDropdown?e.params.renderDropdown.call(e,e.items):$jsx("div",{class:"autocomplete-dropdown"},$jsx("div",{class:"autocomplete-dropdown-inner"},$jsx("div",{class:"list "+(e.params.expandInput?"":"no-safe-areas")},$jsx("ul",null))),e.params.preloader&&e.renderPreloader())},b.renderPage=function(e){var o=this;return o.params.renderPage?o.params.renderPage.call(o,o.items):$jsx("div",{class:"page page-with-subnavbar autocomplete-page","data-name":"autocomplete-page"},o.renderNavbar(e),$jsx("div",{class:"searchbar-backdrop"}),$jsx("div",{class:"page-content"},$jsx("div",{class:"list autocomplete-list autocomplete-found autocomplete-list-"+o.id+" "+(o.params.formColorTheme?"color-"+o.params.formColorTheme:"")},$jsx("ul",null)),$jsx("div",{class:"list autocomplete-not-found"},$jsx("ul",null,$jsx("li",{class:"item-content"},$jsx("div",{class:"item-inner"},$jsx("div",{class:"item-title"},o.params.notFoundText))))),$jsx("div",{class:"list autocomplete-values"},$jsx("ul",null))))},b.renderPopup=function(){var e=this;return e.params.renderPopup?e.params.renderPopup.call(e,e.items):$jsx("div",{class:"popup autocomplete-popup"},$jsx("div",{class:"view"},e.renderPage(!0),";"))},b.onOpen=function(e,o){var a=this,r=a.app,n=t(o);if(a.$el=n,a.el=n[0],a.openedIn=e,a.opened=!0,"dropdown"===a.params.openIn)a.attachDropdownEvents(),a.$dropdownEl.addClass("autocomplete-dropdown-in"),a.$inputEl.trigger("input");else{var l=n.find(".searchbar");"page"===a.params.openIn&&"ios"===r.theme&&0===l.length&&(l=t(r.navbar.getElByPage(n)).find(".searchbar")),a.searchbar=r.searchbar.create({el:l,backdropEl:n.find(".searchbar-backdrop"),customSearch:!0,on:{search:function(e,o){0===o.length&&a.searchbar.enabled?a.searchbar.backdropShow():a.searchbar.backdropHide(),a.source(o)}}}),a.attachPageEvents(),a.updateValues(),a.params.requestSourceOnOpen&&a.source("")}a.emit("local::open autocompleteOpen",a)},b.autoFocus=function(){var e=this;return e.searchbar&&e.searchbar.$inputEl&&e.searchbar.$inputEl.focus(),e},b.onOpened=function(){var e=this;"dropdown"!==e.params.openIn&&e.params.autoFocus&&e.autoFocus(),e.emit("local::opened autocompleteOpened",e)},b.onClose=function(){var e=this;e.destroyed||(e.searchbar&&e.searchbar.destroy&&(e.searchbar.destroy(),e.searchbar=null,delete e.searchbar),"dropdown"===e.params.openIn?(e.detachDropdownEvents(),e.$dropdownEl.removeClass("autocomplete-dropdown-in").remove(),e.$inputEl.parents(".item-content-dropdown-expanded").removeClass("item-content-dropdown-expanded")):e.detachPageEvents(),e.emit("local::close autocompleteClose",e))},b.onClosed=function(){var e=this;e.destroyed||(e.opened=!1,e.$el=null,e.el=null,delete e.$el,delete e.el,e.emit("local::closed autocompleteClosed",e))},b.openPage=function(){var e=this;if(e.opened)return e;var o=e.renderPage();return e.view.router.navigate({url:e.url,route:{content:o,path:e.url,on:{pageBeforeIn:function(o,t){e.onOpen("page",t.el)},pageAfterIn:function(o,t){e.onOpened("page",t.el)},pageBeforeOut:function(o,t){e.onClose("page",t.el)},pageAfterOut:function(o,t){e.onClosed("page",t.el)}},options:{animate:e.params.animate}}}),e},b.openPopup=function(){var e=this;if(e.opened)return e;var o={content:e.renderPopup(),animate:e.params.animate,push:e.params.popupPush,swipeToClose:e.params.popupSwipeToClose,on:{popupOpen:function(o){e.onOpen("popup",o.el)},popupOpened:function(o){e.onOpened("popup",o.el)},popupClose:function(o){e.onClose("popup",o.el)},popupClosed:function(o){e.onClosed("popup",o.el)}}};return e.params.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,popup:o}}):e.modal=e.app.popup.create(o).open(e.params.animate),e},b.openDropdown=function(){var e=this;e.$dropdownEl||(e.$dropdownEl=t(e.renderDropdown())),e.$inputEl.parents(".list").length&&e.$inputEl.parents(".item-content").length>0&&e.params.expandInput&&e.$inputEl.parents(".item-content").addClass("item-content-dropdown-expanded");var o=e.$inputEl.parents(".page-content");e.params.dropdownContainerEl?t(e.params.dropdownContainerEl).append(e.$dropdownEl):0===o.length?e.$dropdownEl.insertAfter(e.$inputEl):(e.positionDropdown(),o.append(e.$dropdownEl)),e.onOpen("dropdown",e.$dropdownEl),e.onOpened("dropdown",e.$dropdownEl)},b.open=function(){var e=this;return e.opened||e["open"+e.params.openIn.split("").map((function(e,o){return 0===o?e.toUpperCase():e})).join("")](),e},b.close=function(){var e=this;return e.opened?("dropdown"===e.params.openIn?(e.onClose(),e.onClosed()):e.params.routableModals&&e.view||"page"===e.openedIn?e.view.router.back({animate:e.params.animate}):(e.modal.once("modalClosed",(function(){i((function(){e.destroyed||(e.modal.destroy(),delete e.modal)}))})),e.modal.close()),e):e},b.init=function(){this.attachEvents()},b.destroy=function(){var e=this;e.emit("local::beforeDestroy autocompleteBeforeDestroy",e),e.detachEvents(),e.$inputEl&&e.$inputEl[0]&&delete e.$inputEl[0].f7Autocomplete,e.$openerEl&&e.$openerEl[0]&&delete e.$openerEl[0].f7Autocomplete,m(e),e.destroyed=!0},l=n,(v=[{key:"view",get:function(){var e,o=this,t=o.$openerEl,a=o.$inputEl,r=o.app;if(o.params.view)e=o.params.view;else if(t||a){var n=t||a;e=n.closest(".view").length&&n.closest(".view")[0].f7View}return e||(e=r.views.main),e}}])&&h(l.prototype,v),f&&h(l,f),n}(n),w={name:"autocomplete",params:{autocomplete:{openerEl:void 0,inputEl:void 0,view:void 0,dropdownContainerEl:void 0,dropdownPlaceholderText:void 0,typeahead:!1,highlightMatches:!0,expandInput:!1,updateInputValueOnSelect:!0,inputEvents:"input",value:void 0,multiple:!1,source:void 0,limit:void 0,valueProperty:"id",textProperty:"text",openIn:"page",pageBackLinkText:"Back",popupCloseLinkText:"Close",pageTitle:void 0,searchbarPlaceholder:"Search...",searchbarDisableText:"Cancel",searchbarDisableButton:void 0,searchbarSpellcheck:!1,popupPush:!1,popupSwipeToClose:void 0,animate:!0,autoFocus:!1,closeOnSelect:!1,notFoundText:"Nothing found",requestSourceOnOpen:!1,preloaderColor:void 0,preloader:!1,formColorTheme:void 0,navbarColorTheme:void 0,routableModals:!1,url:"select/",renderDropdown:void 0,renderPage:void 0,renderPopup:void 0,renderItem:void 0,renderSearchbar:void 0,renderNavbar:void 0}},static:{Autocomplete:b},create:function(){var e=this;e.autocomplete=p(l({defaultSelector:void 0,constructor:b,app:e,domProp:"f7Autocomplete"}),{open:function(o){var t=e.autocomplete.get(o);if(t&&t.open)return t.open()},close:function(o){var t=e.autocomplete.get(o);if(t&&t.close)return t.close()}})}};if(o){if(e.prototype.modules&&e.prototype.modules[w.name])return;e.use(w),e.instance&&(e.instance.useModuleParams(w,e.instance.params),e.instance.useModule(w))}return w}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))