UNPKG

3.15 kBJavaScriptView Raw
1!function(){"use strict";window.Ractive.controller("pl-autocomplete",function(t,e,i,n,o){function l(){var t=p.input.offset().top,e=p.input.outerWidth(),i=p.input.outerHeight();c.set("inEdition",c.get("focused")&&c.get("list")&&c.get("list").length),c.set("listWidth",e),c.set("listHeight",c.get("focused")?p.listContent.outerHeight():0);var n=c.get("listposition")||"auto";"top"==n||"auto"==n&&t+(i-2)+c.get("listHeight")>p.window.height()?(c.set("listFromBottom",!0),c.set("listTop",-c.get("listHeight")+2)):(c.set("listFromBottom",!1),c.set("listTop",i-2)),c.set("selectionWidth",e)}function s(t){var e=c.get("select");e&&e(t,p.input.val(),c)}function u(t){var e=c.get("change");e&&e(t,p.input.val(),c)}function a(t){return t.original.charCode?t.original.charCode:t.original.keyCode}var c=t({plName:"pl-autocomplete",data:$.extend(!0,{focused:!1,inEdition:!1,listfocused:-1,listTop:0,listWidth:0,listHeight:0,selection:""},e),partials:$.extend(!0,{templateDefault:["<div"," class=\"pl-autocomplete-list-item {{listfocused == @index ? 'focused' : ''}}\"",' on-mousedown="selectListItem"',' on-mouseenter="enterListItem"',">","{{{display}}}","</div>"].join("")},n.partials),refresh:function(){l()},clear:function(){p.input.val()&&(p.input.val(""),u(event)),c.get("list")&&c.set("list",null),-1!==c.get("listfocused")&&c.set("listfocused",-1),c.get("selection")&&c.set("selection",null)},focus:function(){p.input.focus()}}),p={window:$(window),input:$(c.el).find(".pl-autocomplete-input"),selection:$(c.el).find(".pl-autocomplete-selection"),list:$(c.el).find(".pl-autocomplete-list"),listContent:$(c.el).find(".pl-autocomplete-list-content")};c.partials.template=c.partials.template||c.partials.templateDefault,c.on("enterListItem",function(t){var e=c.get("list"),i=parseInt(t.keypath.substring(t.keypath.lastIndexOf(".")+1),10);c.set("listfocused",i),c.set("selection",e&&e.length&&e[i].value||"")}),c.on("selectListItem",function(t){t.original.stopPropagation(),t.original.preventDefault(),p.input.val(t.context.value),u(t),s(t)}),c.on("inputFocus",function(t){c.set("focused",!0),l();var e=c.get("focus");e&&e(t,p.input.val(),c)}),c.on("inputBlur",function(t){c.set("focused",!1),l();var e=c.get("blur");e&&e(t,p.input.val(),c)}),c.on("inputKeydown",function(t){var e=a(t);if(9==e){var i=c.get("selection");if(i&&p.input.val()!=i)return t.original.stopPropagation(),t.original.preventDefault(),p.input.val(i),void u(t)}var n=c.get("keydown");n&&n(t,c)}),c.on("inputKeyup",function(t){var e=c.get("keyup");if(!e||e(t,c)!==!1){var i=a(t),n="true"==(c.get("autoselection")||"true"),o=c.get("selection"),l=c.get("list"),r=c.get("listfocused");return n&&39==i&&o?(p.input.val(o),void u(t)):(38==i||40==i)&&l&&l.length?(r+=38==i?-1:1,r=-2==r?l.length-1:r,r=r==l.length?-1:r,c.set("listfocused",r),void c.set("selection",l&&l.length&&l[r].value||"")):13==i?void(l&&l.length&&-1!==r?l&&l.length&&l[r]&&(p.input.val(l[r].value),c.set("listfocused",-1),u(t),s(t)):s(t)):void u(t)}}),c.observe("list",function(t){c.set("selection",t&&t.length&&t[0].value||""),c.set("listfocused",-1),setTimeout(l)}),o()})}();
2//# sourceMappingURL=pl-autocomplete.min.js.map