rails-active-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Rakefile +6 -0
- data/app/assets/stylesheets.css +73555 -0
- data/app/components/accordion_component.rb +34 -0
- data/app/components/ad_component.rb +28 -0
- data/app/components/api_component.rb +24 -0
- data/app/components/breadcrumb_component.rb +26 -0
- data/app/components/button_component.rb +49 -0
- data/app/components/calendar_component.rb +34 -0
- data/app/components/card_component.rb +56 -0
- data/app/components/checkbox_component.rb +41 -0
- data/app/components/column_component.rb +62 -0
- data/app/components/comment_component.rb +45 -0
- data/app/components/concerns/alignable.rb +21 -0
- data/app/components/concerns/attachable.rb +16 -0
- data/app/components/concerns/orientable.rb +21 -0
- data/app/components/concerns/positionable.rb +21 -0
- data/app/components/concerns/sizeable.rb +18 -0
- data/app/components/container_component.rb +23 -0
- data/app/components/dimmer_component.rb +30 -0
- data/app/components/divider_component.rb +30 -0
- data/app/components/dropdown_component.rb +63 -0
- data/app/components/embed_component.rb +32 -0
- data/app/components/emoji_component.rb +15 -0
- data/app/components/feed_component.rb +22 -0
- data/app/components/flag_component.rb +15 -0
- data/app/components/flyout_component.rb +41 -0
- data/app/components/form_component.rb +39 -0
- data/app/components/grid_component.rb +85 -0
- data/app/components/h_stack_component.rb +67 -0
- data/app/components/header_component.rb +60 -0
- data/app/components/icon_component.rb +41 -0
- data/app/components/image_component.rb +46 -0
- data/app/components/input_component.rb +52 -0
- data/app/components/item_component.rb +39 -0
- data/app/components/item_group_component.rb +30 -0
- data/app/components/label_component.rb +49 -0
- data/app/components/link_component.rb +23 -0
- data/app/components/list_component.rb +39 -0
- data/app/components/loader_component.rb +33 -0
- data/app/components/menu_component.rb +64 -0
- data/app/components/menu_item_component.rb +52 -0
- data/app/components/message_component.rb +54 -0
- data/app/components/modal_component.rb +50 -0
- data/app/components/nag_component.rb +25 -0
- data/app/components/overlay_component.rb +16 -0
- data/app/components/placeholder_component.rb +39 -0
- data/app/components/popup_component.rb +31 -0
- data/app/components/progress_component.rb +48 -0
- data/app/components/pusher_component.rb +18 -0
- data/app/components/rail_component.rb +31 -0
- data/app/components/rating_component.rb +41 -0
- data/app/components/reset_component.rb +12 -0
- data/app/components/reveal_component.rb +39 -0
- data/app/components/row_component.rb +39 -0
- data/app/components/search_component.rb +44 -0
- data/app/components/segment_component.rb +57 -0
- data/app/components/segment_group_component.rb +36 -0
- data/app/components/shape_component.rb +25 -0
- data/app/components/sidebar_component.rb +33 -0
- data/app/components/site_component.rb +12 -0
- data/app/components/slider_component.rb +46 -0
- data/app/components/state_component.rb +25 -0
- data/app/components/statistic_component.rb +43 -0
- data/app/components/step_component.rb +56 -0
- data/app/components/step_group_component.rb +38 -0
- data/app/components/sticky_component.rb +22 -0
- data/app/components/sub_header_component.rb +15 -0
- data/app/components/sub_menu_component.rb +24 -0
- data/app/components/tab_component.rb +24 -0
- data/app/components/table_cell_component.rb +60 -0
- data/app/components/table_component.rb +160 -0
- data/app/components/table_row_component.rb +43 -0
- data/app/components/text_component.rb +73 -0
- data/app/components/toast_component.rb +36 -0
- data/app/components/transition_component.rb +32 -0
- data/app/components/v_stack_component.rb +31 -0
- data/app/components/visibility_component.rb +22 -0
- data/app/helpers/component_helper.rb +109 -0
- data/app/helpers/fui_helper.rb +53 -0
- data/app/javascript/accordion.js +547 -0
- data/app/javascript/accordion.min.js +11 -0
- data/app/javascript/api.js +1112 -0
- data/app/javascript/api.min.js +11 -0
- data/app/javascript/calendar.js +1960 -0
- data/app/javascript/calendar.min.js +11 -0
- data/app/javascript/checkbox.js +819 -0
- data/app/javascript/checkbox.min.js +11 -0
- data/app/javascript/dimmer.js +686 -0
- data/app/javascript/dimmer.min.js +11 -0
- data/app/javascript/dropdown.js +4019 -0
- data/app/javascript/dropdown.min.js +11 -0
- data/app/javascript/embed.js +646 -0
- data/app/javascript/embed.min.js +11 -0
- data/app/javascript/flyout.js +1405 -0
- data/app/javascript/flyout.min.js +11 -0
- data/app/javascript/form.js +2070 -0
- data/app/javascript/form.min.js +11 -0
- data/app/javascript/jquery.js +10716 -0
- data/app/javascript/jquery.min.js +2 -0
- data/app/javascript/modal.js +1507 -0
- data/app/javascript/modal.min.js +11 -0
- data/app/javascript/nag.js +522 -0
- data/app/javascript/nag.min.js +11 -0
- data/app/javascript/popup.js +1457 -0
- data/app/javascript/popup.min.js +11 -0
- data/app/javascript/progress.js +922 -0
- data/app/javascript/progress.min.js +11 -0
- data/app/javascript/rating.js +496 -0
- data/app/javascript/rating.min.js +11 -0
- data/app/javascript/search.js +1519 -0
- data/app/javascript/search.min.js +11 -0
- data/app/javascript/shape.js +721 -0
- data/app/javascript/shape.min.js +11 -0
- data/app/javascript/sidebar.js +952 -0
- data/app/javascript/sidebar.min.js +11 -0
- data/app/javascript/site.js +415 -0
- data/app/javascript/site.min.js +11 -0
- data/app/javascript/slider.js +1449 -0
- data/app/javascript/slider.min.js +11 -0
- data/app/javascript/state.js +653 -0
- data/app/javascript/state.min.js +11 -0
- data/app/javascript/sticky.js +852 -0
- data/app/javascript/sticky.min.js +11 -0
- data/app/javascript/tab.js +867 -0
- data/app/javascript/tab.min.js +11 -0
- data/app/javascript/toast.js +916 -0
- data/app/javascript/toast.min.js +11 -0
- data/app/javascript/transition.js +955 -0
- data/app/javascript/transition.min.js +11 -0
- data/app/javascript/ui/controllers/fui_accordion_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_api_controller.js +80 -0
- data/app/javascript/ui/controllers/fui_calendar_controller.js +66 -0
- data/app/javascript/ui/controllers/fui_checkbox_controller.js +48 -0
- data/app/javascript/ui/controllers/fui_dimmer_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_dropdown_controller.js +68 -0
- data/app/javascript/ui/controllers/fui_embed_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_flyout_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_form_controller.js +62 -0
- data/app/javascript/ui/controllers/fui_modal_controller.js +61 -0
- data/app/javascript/ui/controllers/fui_nag_controller.js +52 -0
- data/app/javascript/ui/controllers/fui_popup_controller.js +58 -0
- data/app/javascript/ui/controllers/fui_progress_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_rating_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_search_controller.js +76 -0
- data/app/javascript/ui/controllers/fui_shape_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_sidebar_controller.js +48 -0
- data/app/javascript/ui/controllers/fui_site_controller.js +29 -0
- data/app/javascript/ui/controllers/fui_slider_controller.js +53 -0
- data/app/javascript/ui/controllers/fui_state_controller.js +63 -0
- data/app/javascript/ui/controllers/fui_sticky_controller.js +50 -0
- data/app/javascript/ui/controllers/fui_tab_controller.js +57 -0
- data/app/javascript/ui/controllers/fui_toast_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_transition_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_visibility_controller.js +55 -0
- data/app/javascript/ui/index.js +114 -0
- data/app/javascript/visibility.js +1196 -0
- data/app/javascript/visibility.min.js +11 -0
- data/app/lib/component.rb +63 -0
- data/config/importmap.rb +27 -0
- data/config/initializers/ruby_template_handler.rb +31 -0
- data/config/routes.rb +2 -0
- data/lib/tasks/ui_tasks.rake +4 -0
- data/lib/ui/engine.rb +27 -0
- data/lib/ui/version.rb +3 -0
- data/lib/ui.rb +6 -0
- metadata +220 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* # Fomantic UI - 2.9.4
|
|
3
|
+
* https://github.com/fomantic/Fomantic-UI
|
|
4
|
+
* https://fomantic-ui.com/
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2026 Contributors
|
|
7
|
+
* Released under the MIT license
|
|
8
|
+
* https://opensource.org/licenses/MIT
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
!function(j,F,q){"use strict";function D(e){return"function"==typeof e&&"number"!=typeof e.nodeType}F=void 0!==F&&F.Math===Math?F:globalThis,j.fn.search=function(...e){const l=j(this);let x=Date.now(),C=[];const A=e[0],w="string"==typeof A,T=e.slice(1);let k;return l.each(function(){const f=j.isPlainObject(A)?j.extend(!0,{},j.fn.search.settings,A):j.extend({},j.fn.search.settings),g=f.className,u=f.metadata,n=f.regExp,d=f.fields,h=f.selector,p=f.error;var e=f.namespace;const i="."+e,t=e+"-module",v=j(this);let m=v.find(h.prompt),s=v.find(h.searchButton),r=v.find(h.results),a=v.find(h.result),o=void v.find(h.category);const y=this;let c=v.data(t),b=!1,R=!1;const S={initialize:function(){S.verbose("Initializing module"),S.get.settings(),S.determine.searchFields(),S.bind.events(),S.set.type(),S.create.results(),S.instantiate()},instantiate:function(){S.verbose("Storing instance of module",S),c=S,v.data(t,S)},destroy:function(){S.verbose("Destroying instance"),v.off(i).removeData(t)},refresh:function(){S.debug("Refreshing selector cache"),m=v.find(h.prompt),s=v.find(h.searchButton),o=v.find(h.category),r=v.find(h.results),a=v.find(h.result)},refreshResults:function(){r=v.find(h.results),a=v.find(h.result)},bind:{events:function(){S.verbose("Binding events to search"),f.automatic&&(v.on(S.get.inputEvent()+i,h.prompt,S.event.input),m.attr("autocomplete",S.is.chrome()?"fomantic-search":"off")),v.on("focus"+i,h.prompt,S.event.focus).on("blur"+i,h.prompt,S.event.blur).on("keydown"+i,h.prompt,S.handleKeyboard).on("click"+i,h.searchButton,S.query).on("mousedown"+i,h.results,S.event.result.mousedown).on("mouseup"+i,h.results,S.event.result.mouseup).on("click"+i,h.result,S.event.result.click).on("click"+i,h.remove,S.event.remove.click)}},determine:{searchFields:function(){A&&void 0!==A.searchFields&&(f.searchFields=Array.isArray(A.searchFields)?A.searchFields:[A.searchFields])}},event:{input:function(){f.searchDelay?(clearTimeout(S.timer),S.timer=setTimeout(function(){S.is.focused()&&S.query()},f.searchDelay)):S.query()},focus:function(){S.set.focus(),f.searchOnFocus&&S.has.minimumCharacters()&&S.query(function(){S.can.show()&&S.showResults()})},blur:function(e){var t=q.activeElement===this;function s(){S.cancel.query(),S.remove.focus(),S.timer=setTimeout(function(){S.hideResults()},f.hideDelay)}t||(R=!1,S.resultsClicked?(S.debug("Determining if user action caused search to close"),v.one("click.close"+i,h.results,function(e){S.is.inMessage(e)||b?m.trigger("focus"):(b=!1,S.is.animating()||S.is.hidden()||s())})):(S.debug("Input blurred without user action, closing results"),s()))},remove:{click:function(){S.clear.value(),m.trigger("focus")}},result:{mousedown:function(){S.resultsClicked=!0},mouseup:function(){S.resultsClicked=!1},click:function(e){S.debug("Search result selected");const t=j(this),s=t.find(h.title).eq(0),n=t.is("a[href]")?t:j();var i=n.attr("href")||!1,r=n.attr("target")||!1,a=0<s.length&&s.text(),o=S.get.results(),c=t.data(u.result)||S.get.result(a,o),l=S.get.value();if(D(f.onSelect)&&!1===f.onSelect.call(y,c,o))return S.debug("Custom onSelect callback cancelled default select action"),void(b=!0);S.hideResults(),a&&S.get.value()===l&&S.set.value(a),i&&(e.preventDefault(),S.verbose("Opening search link found in result",n),"_blank"===r||e.ctrlKey?F.open(i):F.location.href=i)}}},ensureVisible:function(e){var t,s,n;0!==e.length&&(e=(t=e.position().top)+e.outerHeight(!0),s=r.scrollTop(),n=r.height(),t<0?r.scrollTop(s+t):n<e&&r.scrollTop(s+(e-n)))},handleKeyboard:function(e){const t=v.find(h.result),s=v.find(h.category);var n=t.filter("."+g.active),i=t.index(n),r=t.length,n=0<n.length,a=e.which;const o=13,c=27,l=38,u=40;let d;if(a===c&&(S.is.visible()?S.hideResults():(S.verbose("Escape key pressed, blurring search field"),m.trigger("blur")),e.stopPropagation(),R=!0),S.is.visible())if(a===o){if(S.verbose("Enter key pressed, selecting active result"),0<t.filter("."+g.active).length)return S.event.result.click.call(t.filter("."+g.active),e),e.preventDefault(),!1}else a===l&&n?(S.verbose("Up key pressed, changing active result"),d=i-1<0?i:i-1,s.removeClass(g.active),t.removeClass(g.active).eq(d).addClass(g.active).closest(s).addClass(g.active),S.ensureVisible(t.eq(d)),e.preventDefault()):a===u&&(S.verbose("Down key pressed, changing active result"),d=r<=i+1?i:i+1,s.removeClass(g.active),t.removeClass(g.active).eq(d).addClass(g.active).closest(s).addClass(g.active),S.ensureVisible(t.eq(d)),e.preventDefault());else a===o&&(S.verbose("Enter key pressed, executing query"),S.query(),S.set.buttonPressed(),m.one("keyup",S.remove.buttonFocus))},setup:{api:function(n,i){var e={debug:f.debug,on:!1,cache:f.cache,action:"search",urlData:{query:n}},t={onSuccess:function(e,t,s){S.parse.response.call(y,e,n),i(),f.apiSettings&&"function"==typeof f.apiSettings.onSuccess&&f.apiSettings.onSuccess.call(this,e,t,s)},onFailure:function(e,t,s){S.displayMessage(p.serverError),i(),f.apiSettings&&"function"==typeof f.apiSettings.onFailure&&f.apiSettings.onFailure.call(this,e,t,s)},onAbort:function(e,t,s){f.apiSettings&&"function"==typeof f.apiSettings.onAbort&&f.apiSettings.onAbort.call(this,e,t,s)},onError:function(e,t,s){S.error(),f.apiSettings&&"function"==typeof f.apiSettings.onError&&f.apiSettings.onError.call(this,e,t,s)}};j.extend(!0,e,f.apiSettings,t),S.verbose("Setting up API request",e),v.api(e)}},can:{useAPI:function(){return void 0!==j.fn.api},show:function(){return S.is.focused()&&!S.is.visible()&&!S.is.empty()},transition:function(){return f.transition&&void 0!==j.fn.transition}},is:{animating:function(){return r.hasClass(g.animating)},chrome:function(){return!!F.chrome&&!F.StyleMedia},hidden:function(){return r.hasClass(g.hidden)},inMessage:function(e){if(e.target){const t=j(e.target);return q.documentElement.contains(e.target)&&0<t.closest(h.message).length}},empty:function(){return""===r.html()},visible:function(){return 0<r.filter(":visible").length},focused:function(){return 0<m.filter(":focus").length}},get:{settings:function(){j.isPlainObject(A)&&A.searchFullText&&(f.fullTextSearch=A.searchFullText,S.error(f.error.oldSearchSyntax,y))},inputEvent:function(){var e=m[0];return void 0!==e&&void 0!==e.oninput?"input":void 0!==e&&void 0!==e.onpropertychange?"propertychange":"keyup"},value:function(){return m.val()},results:function(){return v.data(u.results)},result:function(s=S.get.value(),e=S.get.results()){let n=!1;return"category"===f.type?(S.debug("Finding result that matches",s),j.each(e,function(e,t){if(Array.isArray(t.results)&&(n=S.search.object(s,t.results)[0]))return!1})):(S.debug("Finding result in results object",s),n=S.search.object(s,e)[0]),n||!1}},select:{firstResult:function(){S.verbose("Selecting first result"),a.first().addClass(g.active)}},set:{focus:function(){v.addClass(g.focus)},loading:function(){v.addClass(g.loading)},value:function(e){S.verbose("Setting search input value",e),m.val(e)},type:function(e=f.type){g[e]&&v.addClass(g[e])},buttonPressed:function(){s.addClass(g.pressed)}},remove:{loading:function(){v.removeClass(g.loading)},focus:function(){v.removeClass(g.focus)},buttonPressed:function(){s.removeClass(g.pressed)},diacritics:function(e){return f.ignoreDiacritics?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}},query:function(e=function(){}){e=D(e)?e:function(){};var t=S.get.value(),s=S.read.cache(t);S.has.minimumCharacters()?(s?(S.debug("Reading result from cache",t),S.save.results(s.results),f.onResults.call(y,s.results,!0),S.addResults(s.html),S.inject.id(s.results),e()):(S.debug("Querying for",t),j.isPlainObject(f.source)||Array.isArray(f.source)?(S.search.local(t),e()):S.can.useAPI()?S.search.remote(t,e):(S.error(p.source),e())),f.onSearchQuery.call(y,t)):S.hideResults()},search:{local:function(e){let t=S.search.object(e,f.source);S.set.loading(),S.save.results(t),S.debug("Returned full local search results",t),0<f.maxResults&&(S.debug("Using specified max results",t),t=t.slice(0,f.maxResults)),"category"===f.type&&(t=S.create.categoryResults(t));var s=S.generateResults({results:t});S.remove.loading(),S.addResults(s),S.inject.id(t),S.write.cache(e,{html:s,results:t})},remote:function(e,t){t=D(t)?t:function(){},v.api("is loading")&&v.api("abort"),S.setup.api(e,t),v.api("query")},object:function(r,e=f.source,t=f.searchFields){r=S.remove.diacritics(String(r));const a=[],o=[],c=[];var s=r.replace(n.escape,"\\$&");function l(e,t){var s=!a.includes(t),n=!c.includes(t),i=!o.includes(t);s&&n&&i&&e.push(t)}const u=new RegExp(n.beginsWith+s,f.ignoreSearchCase?"i":"");if(Array.isArray(t)||(t=[t]),void 0===e||!1===e)return S.error(p.source),[];const d=t.length-1;return j.each(e,function(e,n){const i=[];j.each(t,function(t,s){if("string"==typeof n[s]||"number"==typeof n[s]){let e;if(e="string"==typeof n[s]?S.remove.diacritics(n[s]):n[s].toString(),e=j("<div/>",{html:e}).text().trim(),"all"===f.fullTextSearch){if(i.push(e),t<d)return!0;e=i.join(" ")}"all"!==f.fullTextSearch&&-1!==e.search(u)?l(a,n):"exact"===f.fullTextSearch&&S.exactSearch(r,e)||"some"===f.fullTextSearch&&S.wordSearch(r,e)||"all"===f.fullTextSearch&&S.wordSearch(r,e,!0)?l(o,n):!0===f.fullTextSearch&&S.fuzzySearch(r,e)&&l(c,n)}})}),[...a,...o,...c]}},exactSearch:function(e,t){return f.ignoreSearchCase&&(e=e.toLowerCase(),t=t.toLowerCase()),t.includes(e)},wordSearch:function(e,t,s){let n=!1;for(const i of e.split(/\s+/))if(!(n=S.exactSearch(i,t))&&s||n&&!s)break;return n},fuzzySearch:function(n,i){var r=i.length,e=n.length;if("string"!=typeof n)return!1;if(f.ignoreSearchCase&&(n=n.toLowerCase(),i=i.toLowerCase()),r<e)return!1;if(e===r)return n===i;for(let t=0,s=0;t<e;t++){let e=!1;for(var a=n.codePointAt(t);s<r;)if(i.codePointAt(s++)===a){e=!0;break}if(!e)return!1}return!0},parse:{response:function(e,t){if(Array.isArray(e)){const n={};n[d.results]=e,e=n}var s=S.generateResults(e);S.verbose("Parsing server response",e),void 0!==e&&void 0!==t&&void 0!==e[d.results]&&(S.addResults(s),S.inject.id(e[d.results]),S.write.cache(t,{html:s,results:e[d.results]}),S.save.results(e[d.results]))}},cancel:{query:function(){S.can.useAPI()&&v.api("abort")}},has:{minimumCharacters:function(){return S.get.value().length>=f.minCharacters},results:function(){return 0!==r.length&&""!==r.html()}},clear:{cache:function(e){const t=v.data(u.cache);e?t&&t[e]&&(S.debug("Removing value from cache",e),delete t[e],v.data(u.cache,t)):(S.debug("Clearing cache",e),v.removeData(u.cache))},value:function(){S.set.value("")}},read:{cache:function(e){var t=v.data(u.cache);return!!f.cache&&(S.verbose("Checking cache for generated html for query",e),"object"==typeof t&&void 0!==t[e]&&t[e])}},create:{categoryResults:function(e){const s={};return j.each(e,function(e,t){t.category&&(void 0===s[t.category]?(S.verbose("Creating new category of results",t.category),s[t.category]={name:t.category,results:[t]}):s[t.category].results.push(t))}),s},id:function(e,t){e+=1;let s;return void 0!==t?(t=String.fromCodePoint(97+t),s=t+e,S.verbose("Creating category result id",s)):(s=e,S.verbose("Creating result id",s)),s},results:function(){0===r.length&&(r=j("<div />").addClass(g.results).appendTo(v))}},inject:{result:function(e,t,s){S.verbose("Injecting result into results");const n=(void 0!==s?r.children().eq(s).children(h.results).first():r).children(h.result).eq(t);S.verbose("Injecting results metadata",n),n.data(u.result,e)},id:function(e){S.debug("Injecting unique ids into results");let s=0,n=0;return"category"===f.type?j.each(e,function(e,t){0<t.results.length&&(n=0,j.each(t.results,function(e,t){void 0===t.id&&(t.id=S.create.id(n,s)),S.inject.result(t,n,s),n++}),s++)}):j.each(e,function(e,t){void 0===t.id&&(t.id=S.create.id(n)),S.inject.result(t,n),n++}),e}},save:{results:function(e){S.verbose("Saving current search results to metadata",e),v.data(u.results,e)}},write:{cache:function(e,t){const s=void 0!==v.data(u.cache)?v.data(u.cache):{};f.cache&&(S.verbose("Writing generated html to cache",e,t),s[e]=t,v.data(u.cache,s))}},addResults:function(e){if(D(f.onResultsAdd)&&!1===f.onResultsAdd.call(r,e))return S.debug("onResultsAdd callback cancelled default action"),!1;e?(r.html(e),S.refreshResults(),f.selectFirstResult&&S.select.firstResult(),S.showResults()):S.hideResults(function(){r.empty()})},showResults:function(e){e=D(e)?e:function(){},R||!S.is.visible()&&S.has.results()&&(S.can.transition()?(S.debug("Showing results with css animations"),r.transition({animation:f.transition+" in",debug:f.debug,verbose:f.verbose,silent:f.silent,duration:f.duration,onShow:function(){var e=v.find(h.result).eq(0);S.ensureVisible(e)},onComplete:function(){e()},queue:!0})):(S.debug("Showing results with javascript"),r.stop().fadeIn(f.duration,f.easing)),f.onResultsOpen.call(r))},hideResults:function(e){e=D(e)?e:function(){},S.is.visible()&&(S.can.transition()?(S.debug("Hiding results with css animations"),r.transition({animation:f.transition+" out",debug:f.debug,verbose:f.verbose,silent:f.silent,duration:f.duration,onComplete:function(){e()},queue:!0})):(S.debug("Hiding results with javascript"),r.stop().fadeOut(f.duration,f.easing)),f.onResultsClose.call(r))},generateResults:function(i){S.debug("Generating html from response",i);const e=f.templates[f.type];var t=j.isPlainObject(i[d.results])&&!j.isEmptyObject(i[d.results]),s=Array.isArray(i[d.results])&&0<i[d.results].length;let n="";if(t||s){if(0<f.maxResults&&(t?"standard"===f.type&&S.error(p.maxResults):i[d.results]=i[d.results].slice(0,f.maxResults)),f.highlightMatches){s=i[d.results],t=f.ignoreSearchCase?"i":"";const o=[...S.get.value()];var r=f.ignoreDiacritics?"[̀-ͯ]?":"",a="(?![^<]*>)";const c=new RegExp(a+"("+o.join(r+")(.*?)"+a+"(")+r+")",t),l=function(...e){return(e=e.slice(1,2*o.length).map(function(e,t){return 1&t?e:"<mark>"+e+"</mark>"})).join("")};j.each(s,function(s,n){j.each(f.searchFields,function(e,t){if("string"==typeof n[t]||"number"==typeof n[t]){let e="string"==typeof n[t]?n[t]:n[t].toString();e=(e=f.ignoreDiacritics?e.normalize("NFD"):e).replace(/<\/?mark>/g,""),i[d.results][s][t]=e.replace(c,l)}})})}D(e)?n=e(i,f):S.error(p.noTemplate,!1)}else f.showNoResults&&(n=S.displayMessage(p.noResults,"empty",p.noResultsHeader));return f.onResults.call(y,i),n},displayMessage:function(e,t="standard",s=!1){return S.debug("Displaying message",e,t,s),S.addResults(f.templates.message(e,t,s)),f.templates.message(e,t,s)},setting:function(e,t){if(j.isPlainObject(e))j.extend(!0,f,e);else{if(void 0===t)return f[e];f[e]=t}},internal:function(e,t){if(j.isPlainObject(e))j.extend(!0,S,e);else{if(void 0===t)return S[e];S[e]=t}},debug:function(...e){!f.silent&&f.debug&&(f.performance?S.performance.log(e):(S.debug=Function.prototype.bind.call(console.info,console,f.name+":"),S.debug.apply(console,e)))},verbose:function(...e){!f.silent&&f.verbose&&f.debug&&(f.performance?S.performance.log(e):(S.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),S.verbose.apply(console,e)))},error:function(...e){f.silent||(S.error=Function.prototype.bind.call(console.error,console,f.name+":"),S.error.apply(console,e))},performance:{log:function(e){var t,s;f.performance&&(s=(t=Date.now())-(x||t),x=t,C.push({Name:e[0],Arguments:e.slice(1),Element:y,"Execution Time":s})),clearTimeout(S.performance.timer),S.performance.timer=setTimeout(function(){S.performance.display()},500)},display:function(){let e=f.name+":",s=0;x=!1,clearTimeout(S.performance.timer),j.each(C,function(e,t){s+=t["Execution Time"]}),e+=" "+s+"ms",1<l.length&&(e+=" ("+l.length+")"),0<C.length&&(console.groupCollapsed(e),console.table(C),console.groupEnd()),C=[]}},invoke:function(n,e=T,t=y){let i=c,r,a,s;return"string"==typeof n&&void 0!==i&&(n=n.split(/[ .]/),r=n.length-1,j.each(n,function(e,t){var s=e!==r?t+n[e+1].charAt(0).toUpperCase()+n[e+1].slice(1):n;if(j.isPlainObject(i[s])&&e!==r)i=i[s];else{if(void 0!==i[s])return a=i[s],!1;{if(!j.isPlainObject(i[t])||e===r)return void 0!==i[t]?a=i[t]:S.error(p.method,n),!1;i=i[t]}}})),D(a)?s=a.apply(t,e):void 0!==a&&(s=a),Array.isArray(k)?k.push(s):void 0!==k?k=[k,s]:void 0!==s&&(k=s),a}};w?(void 0===c&&S.initialize(),S.invoke(A)):(void 0!==c&&c.invoke("destroy"),S.initialize())}),void 0!==k?k:this},j.fn.search.settings={name:"Search",namespace:"search",silent:!1,debug:!1,verbose:!1,performance:!0,type:"standard",minCharacters:1,selectFirstResult:!1,apiSettings:!1,source:!1,searchOnFocus:!0,searchFields:["id","title","description"],displayField:"",fullTextSearch:"exact",highlightMatches:!1,ignoreDiacritics:!1,ignoreSearchCase:!0,automatic:!0,hideDelay:0,searchDelay:200,maxResults:7,cache:!0,showNoResults:!0,preserveHTML:!1,transition:"scale",duration:200,easing:"easeOutExpo",onSelect:!1,onResultsAdd:!1,onSearchQuery:function(e){},onResults:function(e,t){},onResultsOpen:function(){},onResultsClose:function(){},className:{animating:"animating",active:"active",category:"category",empty:"empty",focus:"focus",hidden:"hidden",loading:"loading",results:"results",pressed:"down"},error:{source:"Cannot search. No source used, and Fomantic API module was not included",noResultsHeader:"No Results",noResults:"Your search returned no results",noTemplate:"A valid template name was not specified.",oldSearchSyntax:"searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.",serverError:"There was an issue querying the server.",maxResults:"Results must be an array to use maxResults setting",method:"The method you called is not defined."},metadata:{cache:"cache",results:"results",result:"result"},regExp:{escape:/[$()*+./?[\\\]^{|}-]/g,beginsWith:"(?:\\s|^)"},fields:{categories:"results",categoryName:"name",categoryResults:"results",description:"description",image:"image",alt:"alt",price:"price",results:"results",title:"title",url:"url",id:"id",class:"class",action:"action",actionText:"text",actionURL:"url"},selector:{prompt:".prompt",remove:"> .icon.input > .remove.icon",searchButton:".search.button",results:".results",message:".results > .message",category:".category",result:".result",title:".title, .name"},templates:{escape:function(e,t){if(void 0!==t&&t.preserveHTML)return e;const s={'"':""","&":"&","'":"'","<":"<",">":">"};return e=(e=String(e).replace(/["&'<>]/g,e=>s[e])).replace(/<(\/)*mark>/g,"<$1mark>")},message:function(e,t,s){let n="";return void 0!==e&&void 0!==t&&(n+='<div class="message '+t+'">',s&&(n+='<div class="header">'+s+"</div>"),n=n+' <div class="description">'+e+"</div></div>"),n},category:function(e,s){let n="";const i=s.fields,r=s.templates.escape;return void 0!==e[i.categoryResults]&&(j.each(e[i.categoryResults],function(e,t){void 0!==t[i.results]&&0<t.results.length&&(n+='<div class="category">',void 0!==t[i.categoryName]&&(n+='<div class="name">'+r(t[i.categoryName],s)+"</div>"),n+='<div class="results">',j.each(t.results,function(e,t){n=(n=(n+=t[i.url]?'<a href="'+t[i.url].replaceAll('"',"")+'" ':"<div ")+(void 0!==t[i.id]?' id="'+t[i.id].replaceAll('"',"")+'" ':""))+(void 0!==t[i.class]?' class="result '+t[i.class].replaceAll('"',"")+'">':' class="result">'),void 0!==t[i.image]&&(n+='<div class="image"> <img src="'+t[i.image].replaceAll('"',"")+'"'+(t[i.alt]?' alt="'+t[i.alt].replaceAll('"',"")+'"':"")+"></div>"),n+='<div class="content">',void 0!==t[i.price]&&(n+='<div class="price">'+r(t[i.price],s)+"</div>"),void 0!==t[i.title]&&(n+='<div class="title">'+r(t[i.title],s)+"</div>"),void 0!==t[i.description]&&(n+='<div class="description">'+r(t[i.description],s)+"</div>"),n=(n+="</div>")+(t[i.url]?"</a>":"</div>")}),n+="</div></div>")}),e[i.action]&&(n+=!1===i.actionURL?'<div class="action">'+r(e[i.action][i.actionText],s)+"</div>":'<a href="'+e[i.action][i.actionURL].replaceAll('"',"")+'" class="action">'+r(e[i.action][i.actionText],s)+"</a>"),n)},standard:function(e,s){let n="";const i=s.fields,r=s.templates.escape;return void 0!==e[i.results]&&(j.each(e[i.results],function(e,t){n=(n=(n+=t[i.url]?'<a href="'+t[i.url].replaceAll('"',"")+'" ':"<div ")+(void 0!==t[i.id]?'id="'+t[i.id].replaceAll('"',"")+'" ':""))+(void 0!==t[i.class]?'class="result '+t[i.class].replaceAll('"',"")+'">':'class="result">'),void 0!==t[i.image]&&(n+='<div class="image"> <img src="'+t[i.image].replaceAll('"',"")+'"'+(t[i.alt]?' alt="'+t[i.alt].replaceAll('"',"")+'"':"")+"></div>"),n+='<div class="content">',void 0!==t[i.price]&&(n+='<div class="price">'+r(t[i.price],s)+"</div>"),void 0!==t[i.title]&&(n+='<div class="title">'+r(t[i.title],s)+"</div>"),void 0!==t[i.description]&&(n+='<div class="description">'+r(t[i.description],s)+"</div>"),n=(n+="</div>")+(t[i.url]?"</a>":"</div>")}),e[i.action]&&(n+=!1===i.actionURL?'<div class="action">'+r(e[i.action][i.actionText],s)+"</div>":'<a href="'+e[i.action][i.actionURL].replaceAll('"',"")+'" class="action">'+r(e[i.action][i.actionText],s)+"</a>"),n)}}},j.extend(j.easing,{easeOutExpo:function(e){return 1===e?1:1-2**(-10*e)}})}(jQuery,window,document);
|