jquery-inputsearch
Version:
jQuery plugin for automagically transforming input[type="text"] elements into input[type="search"]-like elements
1 lines • 4.3 kB
JSON
{"dependencies":[],"generated":{"js":"\"use strict\";\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/**\n * jQuery plugin for automagically transforming `input[type=\"text\"]` elements\n * into `input[type=\"search\"]`-like elements.\n * @author Glenn Dwiyatcita\n * @date 25.12.2017\n * @version 1.0.0\n */\n(function iife($) {\n $.fn.inputSearch = function inputSearch(options) {\n var searchIconImgData = \"\\n data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAASkl\\n EQVR42mNwZcAPGeitQMn1PxwqYVMAktAHQxALqwJ9V15XDiDWx62AA0hzYFegjt8ESajjcLhB\\n Csn9WH0BEdTBHQ4gackBigsAp89pbWKQMm4AAAAASUVORK5CYII=\\n \";\n\n var clearIconImgData = \"\\n data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAdkl\\n EQVR42pWRPQ7AIAiFuVknFk9hwuxZXBwdvCkFa9X607R5Azzel6gICO+C74DBhFyUxA2Aq+Et\\n 1wNmilWmATEPSDqtIJ3W2AAugUb0nPQAl5CqnwCbnd0BV2hXR4TlJUMDcPlM7BdFU0zjqg/0N\\n fTi/n/WRic9QaXT/imcNgAAAABJRU5ErkJggg==\\n \";\n\n var opts = _extends({}, $.fn.inputSearch.defaults, options);\n\n var observer = void 0;\n if (window.MutationObserver) {\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n $(mutation.target).data().refreshWrapperVisibility();\n });\n });\n }\n\n return this.filter('input').each(function (i, el) {\n var wrapper = $('<div>').addClass('jqis-input-wrapper').css({\n display: 'inline-block',\n position: 'relative'\n });\n\n var icon = $('<img>').addClass('jqis-icon-search').attr({\n src: searchIconImgData\n }).css({\n position: 'absolute',\n width: 16,\n height: 16,\n visibility: opts.searchIconVisible ? 'visible' : 'hidden'\n }).on('click', function (e) {\n if ($(e.currentTarget).hasClass('jqis-icon-clear')) {\n input.val('').focus().triggerHandler('input');\n\n opts.onClear();\n }\n });\n\n var input = $(el).data({\n refreshWrapperVisibility: function refreshWrapperVisibility() {\n input.parent('.jqis-input-wrapper').css({\n display: input.css('display'),\n visibility: input.css('visibility'),\n opacity: input.css('opacity')\n });\n }\n }).on('input', function (e) {\n var query = $(e.currentTarget).val();\n var src = icon.attr('src');\n\n if (query.length > 0) {\n if (src !== clearIconImgData) {\n icon.attr('src', clearIconImgData).toggleClass('jqis-icon-search', false).toggleClass('jqis-icon-clear', true).css({\n cursor: 'pointer',\n visibility: 'visible'\n });\n }\n } else if (src !== searchIconImgData) {\n icon.attr('src', searchIconImgData).toggleClass('jqis-icon-search', true).toggleClass('jqis-icon-clear', false).css({\n cursor: 'auto',\n visibility: opts.searchIconVisible ? 'visible' : 'hidden'\n });\n }\n }).wrap(wrapper).after(icon).show();\n\n var gutter = 4;\n var paddingRight = icon.outerWidth() + gutter;\n var width = parseFloat(input.css('width')) - paddingRight;\n\n var _input$position = input.position(),\n top = _input$position.top,\n left = _input$position.left;\n\n input.css({\n paddingRight: paddingRight,\n width: width\n });\n\n icon.css({\n top: top + gutter / 2,\n left: left + width + gutter\n });\n\n if (observer) {\n observer.observe(input[0], {\n attributeFilter: ['style']\n });\n } else {\n setInterval(function () {\n return input.data().refreshWrapperVisibility();\n }, 200);\n }\n\n if (!input.is(':visible')) {\n input.hide();\n }\n\n input.triggerHandler('input');\n });\n };\n\n $.fn.inputSearch.defaults = {\n searchIconVisible: true,\n onClear: $.noop\n };\n})(jQuery);"},"hash":"5003a605ea4f5df2cec5c9eb6195555b"}