Browse Source

Iteration on search fixes

pull/1243/head
jlukic 10 years ago
parent
commit
1d8a8e3fe7
19 changed files with 533 additions and 323 deletions
  1. 9
      dist/components/api.js
  2. 2
      dist/components/api.min.js
  3. 4
      dist/components/message.css
  4. 2
      dist/components/message.min.css
  5. 2
      dist/components/modal.css
  6. 2
      dist/components/modal.min.css
  7. 12
      dist/components/reveal.css
  8. 2
      dist/components/reveal.min.css
  9. 183
      dist/components/search.css
  10. 141
      dist/components/search.js
  11. 2
      dist/components/search.min.css
  12. 2
      dist/components/search.min.js
  13. 205
      dist/semantic.css
  14. 150
      dist/semantic.js
  15. 2
      dist/semantic.min.css
  16. 14
      dist/semantic.min.js
  17. 33
      src/definitions/modules/search.js
  18. 73
      src/definitions/modules/search.less
  19. 16
      src/themes/default/modules/search.variables

9
dist/components/api.js

@ -172,7 +172,7 @@ $.api = $.fn.api = function(parameters) {
ajaxSettings = $.extend(true, {}, settings, {
type : settings.method || settings.type,
data : data,
url : url,
url : settings.base + url,
beforeSend : settings.beforeXHR,
success : function() {},
failure : function() {},
@ -466,17 +466,17 @@ $.api = $.fn.api = function(parameters) {
if(runSettings) {
if(runSettings.success !== undefined) {
module.debug('Legacy success callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.success);
runSettings.onSuccess = runSettings.success;
}
if(runSettings.failure !== undefined) {
module.debug('Legacy failure callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.failure);
runSettings.onFailure = runSettings.failure;
}
if(runSettings.complete !== undefined) {
module.debug('Legacy complete callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.complete);
runSettings.onComplete = runSettings.complete;
}
}
@ -767,6 +767,7 @@ $.api.settings = {
// templating
action : false,
url : false,
base : '',
// data
urlData : {},

2
dist/components/api.min.js
File diff suppressed because it is too large
View File

4
dist/components/message.css

@ -21,7 +21,7 @@
margin: 1em 0em;
background: #efefef;
padding: 1em 1.5em;
line-height: 1.3;
line-height: 1.33;
color: rgba(0, 0, 0, 0.8);
-webkit-transition: opacity 0.2s ease, color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
transition: opacity 0.2s ease, color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
@ -108,7 +108,7 @@
cursor: pointer;
position: absolute;
margin: 0em;
top: 1.15em;
top: 1.165em;
right: 0.5em;
opacity: 0.7;
-webkit-transition: opacity 0.1s linear

2
dist/components/message.min.css
File diff suppressed because it is too large
View File

2
dist/components/modal.css

@ -80,7 +80,7 @@
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
background: -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)) #ffffff;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.05)) #ffffff;
margin: 0em;
margin: 1em 0em 1rem;
padding: 1.2rem 2rem;
box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.05);
font-size: 1.6em;

2
dist/components/modal.min.css
File diff suppressed because it is too large
View File

12
dist/components/reveal.css

@ -26,8 +26,8 @@
top: 0em !important;
left: 0em !important;
z-index: 4 !important;
-webkit-transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
-webkit-transition: all 0.2s ease 0.15s;
transition: all 0.2s ease 0.15s;
}
.ui.reveal > .hidden.content {
position: relative !important;
@ -54,8 +54,8 @@
display: block;
float: left;
margin: 0em;
-webkit-transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
-webkit-transition: top 0.2s ease 0.15s, left 0.2s ease 0.15s, right 0.2s ease 0.15s, bottom 0.2s ease 0.15s;
transition: top 0.2s ease 0.15s, left 0.2s ease 0.15s, right 0.2s ease 0.15s, bottom 0.2s ease 0.15s;
}
.ui.slide.reveal > .visible.content {
position: relative !important;
@ -186,8 +186,8 @@
---------------*/
.ui.rotate.reveal > .visible.content {
-webkit-transition-duration: 0.8s;
transition-duration: 0.8s;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);

2
dist/components/reveal.min.css

@ -8,4 +8,4 @@
* http://opensource.org/licenses/MIT
*
*/
.ui.reveal{display:inline-block;position:relative!important;z-index:3!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:4!important;-webkit-transition:all .8s cubic-bezier(0.175,.885,.32,1) .15s;transition:all .8s cubic-bezier(0.175,.885,.32,1) .15s}.ui.reveal>.hidden.content{position:relative!important;z-index:3!important}.ui.slide.reveal{position:relative!important;display:block;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;float:left;margin:0;-webkit-transition:top .8s cubic-bezier(0.175,.885,.32,1) .15s,left .8s cubic-bezier(0.175,.885,.32,1) .15s,right .8s cubic-bezier(0.175,.885,.32,1) .15s,bottom .8s cubic-bezier(0.175,.885,.32,1) .15s;transition:top .8s cubic-bezier(0.175,.885,.32,1) .15s,left .8s cubic-bezier(0.175,.885,.32,1) .15s,right .8s cubic-bezier(0.175,.885,.32,1) .15s,bottom .8s cubic-bezier(0.175,.885,.32,1) .15s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:100%!important;width:100%!important}.ui.slide.reveal:hover>.visible.content{left:-100%!important}.ui.slide.reveal:hover>.hidden.content{left:0!important}.ui.right.slide.reveal>.visible.content{left:0}.ui.right.slide.reveal>.hidden.content{left:auto!important;right:100%!important}.ui.right.slide.reveal:hover>.visible.content{left:100%!important;right:auto!important}.ui.right.slide.reveal:hover>.hidden.content{left:auto!important;right:0!important}.ui.up.slide.reveal>.visible.content{top:0!important;left:0!important;right:auto!important;bottom:auto!important}.ui.up.slide.reveal>.hidden.content{top:100%!important;left:0!important;right:auto!important;bottom:auto!important}.ui.slide.up.reveal:hover>.visible.content{top:-100%!important;left:0!important}.ui.slide.up.reveal:hover>.hidden.content{top:0!important;left:0!important}.ui.down.slide.reveal>.visible.content{top:auto!important;right:auto!important;bottom:auto!important;bottom:0!important}.ui.down.slide.reveal>.hidden.content{top:auto!important;right:auto!important;bottom:100%!important;left:0!important}.ui.slide.down.reveal:hover>.visible.content{left:0!important;bottom:-100%!important}.ui.slide.down.reveal:hover>.hidden.content{left:0!important;bottom:0!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.left.reveal>.visible.content,.ui.move.reveal>.visible.content{left:auto!important;top:auto!important;bottom:auto!important;right:0!important}.ui.move.left.reveal:hover>.visible.content,.ui.move.reveal:hover>.visible.content{right:100%!important}.ui.move.right.reveal>.visible.content{right:auto!important;top:auto!important;bottom:auto!important;left:0!important}.ui.move.right.reveal:hover>.visible.content{left:100%!important}.ui.move.up.reveal>.visible.content{right:auto!important;left:auto!important;top:auto!important;bottom:0!important}.ui.move.up.reveal:hover>.visible.content{bottom:100%!important}.ui.move.down.reveal>.visible.content{right:auto!important;left:auto!important;top:0!important;bottom:auto!important}.ui.move.down.reveal:hover>.visible.content{top:100%!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.8s;transition-duration:.8s;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;-ms-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);-ms-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;-ms-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);-ms-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal{opacity:1!important}.ui.disabled.reveal>.content{-webkit-transition:none!important;transition:none!important}.ui.disabled.reveal:hover>.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.content{display:none!important}.ui.masked.reveal{overflow:hidden}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important}
.ui.reveal{display:inline-block;position:relative!important;z-index:3!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:4!important;-webkit-transition:all .2s ease .15s;transition:all .2s ease .15s}.ui.reveal>.hidden.content{position:relative!important;z-index:3!important}.ui.slide.reveal{position:relative!important;display:block;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;float:left;margin:0;-webkit-transition:top .2s ease .15s,left .2s ease .15s,right .2s ease .15s,bottom .2s ease .15s;transition:top .2s ease .15s,left .2s ease .15s,right .2s ease .15s,bottom .2s ease .15s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:100%!important;width:100%!important}.ui.slide.reveal:hover>.visible.content{left:-100%!important}.ui.slide.reveal:hover>.hidden.content{left:0!important}.ui.right.slide.reveal>.visible.content{left:0}.ui.right.slide.reveal>.hidden.content{left:auto!important;right:100%!important}.ui.right.slide.reveal:hover>.visible.content{left:100%!important;right:auto!important}.ui.right.slide.reveal:hover>.hidden.content{left:auto!important;right:0!important}.ui.up.slide.reveal>.visible.content{top:0!important;left:0!important;right:auto!important;bottom:auto!important}.ui.up.slide.reveal>.hidden.content{top:100%!important;left:0!important;right:auto!important;bottom:auto!important}.ui.slide.up.reveal:hover>.visible.content{top:-100%!important;left:0!important}.ui.slide.up.reveal:hover>.hidden.content{top:0!important;left:0!important}.ui.down.slide.reveal>.visible.content{top:auto!important;right:auto!important;bottom:auto!important;bottom:0!important}.ui.down.slide.reveal>.hidden.content{top:auto!important;right:auto!important;bottom:100%!important;left:0!important}.ui.slide.down.reveal:hover>.visible.content{left:0!important;bottom:-100%!important}.ui.slide.down.reveal:hover>.hidden.content{left:0!important;bottom:0!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.left.reveal>.visible.content,.ui.move.reveal>.visible.content{left:auto!important;top:auto!important;bottom:auto!important;right:0!important}.ui.move.left.reveal:hover>.visible.content,.ui.move.reveal:hover>.visible.content{right:100%!important}.ui.move.right.reveal>.visible.content{right:auto!important;top:auto!important;bottom:auto!important;left:0!important}.ui.move.right.reveal:hover>.visible.content{left:100%!important}.ui.move.up.reveal>.visible.content{right:auto!important;left:auto!important;top:auto!important;bottom:0!important}.ui.move.up.reveal:hover>.visible.content{bottom:100%!important}.ui.move.down.reveal>.visible.content{right:auto!important;left:auto!important;top:0!important;bottom:auto!important}.ui.move.down.reveal:hover>.visible.content{top:100%!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;-ms-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);-ms-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;-ms-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);-ms-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal{opacity:1!important}.ui.disabled.reveal>.content{-webkit-transition:none!important;transition:none!important}.ui.disabled.reveal:hover>.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.content{display:none!important}.ui.masked.reveal{overflow:hidden}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important}

183
dist/components/search.css

@ -18,11 +18,26 @@
.ui.search {
position: relative;
}
.ui.search input {
border-radius: 500rem;
.ui.search > .prompt {
margin: 0em;
outline: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-shadow: none;
font-style: normal;
font-weight: normal;
line-height: 1.2;
padding: 0.7em 1em;
font-size: 1em;
background: #ffffff;
border: 1px solid rgba(39, 41, 43, 0.15);
color: rgba(0, 0, 0, 0.8);
box-shadow: 0em 0em 0em 0em transparent inset;
-webkit-transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.ui.search .prompt {
border-radius: 500rem;
}
/*--------------
@ -37,7 +52,7 @@
Results
---------------*/
.ui.search .results {
.ui.search > .results {
display: none;
position: absolute;
z-index: 998;
@ -55,21 +70,22 @@
Result
---------------*/
.ui.search .result {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
.ui.search > .results .result {
cursor: pointer;
display: block;
overflow: hidden;
font-size: 0.9em;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 1em;
padding: 0.5em 1em;
color: rgba(0, 0, 0, 0.8);
line-height: 1.33;
}
.ui.search .result:first-child {
.ui.search > .results .result:first-child {
border-top: none;
}
/* Image */
.ui.search .result .image {
.ui.search > .results .result .image {
float: right;
overflow: hidden;
background: none;
@ -77,7 +93,7 @@
height: 3em;
border-radius: 0.25em;
}
.ui.search .result .image img {
.ui.search > .results .result .image img {
display: block;
width: auto;
height: 100%;
@ -87,18 +103,21 @@
Info
---------------*/
.ui.search .result .image + .content {
.ui.search > .results .result .image + .content {
margin: 0em 6em 0em 0em;
}
.ui.search .result .title {
.ui.search > .results .result .title {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-weight: normal;
font-weight: bold;
font-size: 1em;
color: rgba(0, 0, 0, 0.85);
}
.ui.search .result .description {
color: rgba(0, 0, 0, 0.8);
.ui.search > .results .result .description {
margin-top: 0em;
font-size: 0.9285em;
color: rgba(0, 0, 0, 0.4);
}
.ui.search .result .price {
.ui.search > .results .result .price {
float: right;
color: #5bbd72;
}
@ -107,26 +126,26 @@
Message
---------------*/
.ui.search .message {
.ui.search > .results > .message {
padding: 1em 1em;
}
.ui.search .message .header {
.ui.search > .results > .message .header {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 1.2em;
font-size: 1.1428em;
font-weight: bold;
color: rgba(0, 0, 0, 0.8);
}
.ui.search .message .description {
.ui.search > .results > .message .description {
margin-top: 0.25rem;
font-size: 1rem;
font-size: 1em;
color: rgba(0, 0, 0, 0.8);
}
/* View All Results */
.ui.search .all {
.ui.search > .results > .action {
display: block;
border-top: 1px solid rgba(0, 0, 0, 0.1);
background-color: #f0f0f0;
border-top: 1px solid rgba(39, 41, 43, 0.15);
background: #f0f0f0;
height: 2em;
line-height: 2em;
color: rgba(0, 0, 0, 0.8);
@ -140,50 +159,73 @@
*******************************/
/*--------------
Hover
---------------*/
/*--------------------
Loading
---------------------*/
.ui.search .result:hover,
.ui.search .results .category .result:hover {
background: #fafafa;
.ui.loading.search .input > .icon:before {
position: absolute;
content: '';
top: 50%;
left: 50%;
margin: -0.64285em 0em 0em -0.64285em;
width: 1.2857em;
height: 1.2857em;
border-radius: 500rem;
border: 0.2em solid rgba(0, 0, 0, 0.1);
}
.ui.search .all:hover {
background: #fafafa;
.ui.loading.search .input > .icon:after {
position: absolute;
content: '';
top: 50%;
left: 50%;
margin: -0.64285em 0em 0em -0.64285em;
width: 1.2857em;
height: 1.2857em;
-webkit-animation: button-spin 0.6s linear;
animation: button-spin 0.6s linear;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
border-radius: 500rem;
border-color: #aaaaaa transparent transparent;
border-style: solid;
border-width: 0.2em;
box-shadow: 0px 0px 0px 1px transparent;
}
/*--------------
Loading
Hover
---------------*/
.ui.search.loading .input .icon {
background: url("../themes/default/assets/images/loader-mini.gif") no-repeat 50% 50%;
.ui.search > .results .result:hover,
.ui.search > .results .category .result:hover {
background: #fafafa;
}
.ui.search.loading .input .icon:before,
.ui.search.loading .input .icon:after {
display: none;
.ui.search .all:hover {
background: #fafafa;
}
/*--------------
Active
---------------*/
.ui.search .results .category.active {
background-color: #f1f1f1;
.ui.search > .results .category.active {
background: #f0f0f0;
}
.ui.search .results .category.active > .name {
.ui.search > .results .category.active > .name {
color: rgba(0, 0, 0, 0.8);
}
.ui.search .result.active,
.ui.search .results .category .result.active {
.ui.search > .results .result.active,
.ui.search > .results .category .result.active {
position: relative;
border-left-color: transparent;
background-color: #f0f0f0;
box-shadow: 2px 0px 2px 0px rgba(0, 0, 0, 0.2);
background: #f0f0f0;
box-shadow: 3px 0px 3px 0px rgba(39, 41, 43, 0.15);
}
.ui.search .result.active .title {
.ui.search > .results .result.active .title {
color: rgba(0, 0, 0, 0.85);
}
.ui.search .result.active .description {
.ui.search > .results .result.active .description {
color: rgba(0, 0, 0, 0.85);
}
@ -197,7 +239,11 @@
Left / Right
--------------------*/
.ui.right.aligned.search .results {
.ui[class*="left aligned"].search > .results {
right: auto;
left: 0%;
}
.ui[class*="right aligned"].search > .results {
right: 0%;
left: auto;
}
@ -206,33 +252,44 @@
Categories
---------------*/
.ui.search .results .category {
/* Category */
.ui.search > .results .category {
background: #f0f0f0;
box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1);
box-shadow: none;
border-bottom: 1px solid rgba(39, 41, 43, 0.15);
-webkit-transition: background 0.2s ease, border-color 0.2s ease;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ui.search .results .category,
.ui.search .results .category .result {
position: relative;
.ui.search > .results .category:last-child {
border-bottom: none;
}
/* Category Result */
.ui.search > .results .category .result {
background: #ffffff;
margin-left: 100px;
border-left: 1px solid rgba(39, 41, 43, 0.15);
border-bottom: 1px solid rgba(39, 41, 43, 0.15);
-webkit-transition: background 0.2s ease, border-color 0.2s ease;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ui.search .results .category:first-child {
box-shadow: none;
.ui.search > .results .category .result:last-child {
border-bottom: none;
}
.ui.search .results .category > .name {
/* Category Result Name */
.ui.search > .results .category > .name {
background: #f0f0f0;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
float: 0.9em;
font-size: 1em;
width: 100px;
float: 1em;
float: left;
padding: 0.4em 0em 0em 1em;
padding: 0.4em 1em;
font-weight: bold;
color: rgba(0, 0, 0, 0.4);
}
.ui.search .results .category .result {
background-color: #ffffff;
margin-left: 100px;
border-left: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
/*******************************

141
dist/components/search.js

@ -111,7 +111,9 @@ $.fn.search = function(parameters) {
;
clearTimeout(module.timer);
module.search.throttle();
module.results.show();
if(module.has.minimum()) {
module.results.show();
}
},
blur: function() {
module.search.cancel();
@ -211,6 +213,15 @@ $.fn.search = function(parameters) {
}
}
},
has: {
minimum: function() {
var
searchTerm = $prompt.val(),
numCharacters = searchTerm.length
;
return (numCharacters >= settings.minCharacters);
}
},
search: {
cancel: function() {
var
@ -222,13 +233,9 @@ $.fn.search = function(parameters) {
}
},
throttle: function() {
var
searchTerm = $prompt.val(),
numCharacters = searchTerm.length
;
clearTimeout(module.timer);
if(numCharacters >= settings.minCharacters) {
module.timer = setTimeout(module.search.query, settings.searchThrottle);
if(module.has.minimum()) {
module.timer = setTimeout(module.search.query, settings.searchDelay);
}
else {
module.results.hide();
@ -289,7 +296,7 @@ $.fn.search = function(parameters) {
if( searchRegExp.test( content[field] ) ) {
results.push(content);
}
else if( fullTextRegExp.test( content[field] ) ) {
else if( settings.searchFullText && fullTextRegExp.test( content[field] ) ) {
fullTextResults.push(content);
}
}
@ -307,8 +314,8 @@ $.fn.search = function(parameters) {
remote: function(searchTerm) {
var
apiSettings = {
stateContext : $module,
urlData: {
stateContext : $module,
urlData : {
query: searchTerm
},
onSuccess : function(response) {
@ -316,7 +323,7 @@ $.fn.search = function(parameters) {
module.search.cache.write(searchTerm, searchHTML);
module.results.add(searchHTML);
},
failure : module.error
onFailure : module.error
},
searchHTML
;
@ -359,14 +366,17 @@ $.fn.search = function(parameters) {
;
if(($.isPlainObject(response.results) && !$.isEmptyObject(response.results)) || ($.isArray(response.results) && response.results.length > 0) ) {
if(settings.maxResults > 0) {
response.results = $.makeArray(response.results).slice(0, settings.maxResults);
response.results = $.isArray(response.results)
? response.results.slice(0, settings.maxResults)
: response.results
;
}
if($.isFunction(template)) {
html = template(response);
}
else {
module.error(error.noTemplate, false);
}
if($.isFunction(template)) {
html = template(response);
}
else {
module.error(error.noTemplate, false);
}
}
else {
html = module.message(error.noResults, 'empty');
@ -384,10 +394,14 @@ $.fn.search = function(parameters) {
},
show: function() {
if( ($results.filter(':visible').size() === 0) && ($prompt.filter(':focus').size() > 0) && $results.html() !== '') {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is inward')) {
module.debug('Showing results with css animations');
$results
.transition(settings.transition + ' in', settings.duration)
.transition({
animation : settings.transition + ' in',
duration : settings.duration,
queue : true
})
;
}
else {
@ -402,10 +416,14 @@ $.fn.search = function(parameters) {
},
hide: function() {
if($results.filter(':visible').size() > 0) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is outward')) {
module.debug('Hiding results with css animations');
$results
.transition(settings.transition + ' out', settings.duration)
.transition({
animation : settings.transition + ' out',
duration : settings.duration,
queue : true
})
;
}
else {
@ -428,10 +446,17 @@ $.fn.search = function(parameters) {
if(settings.onSelect == 'default' || $.proxy(settings.onSelect, this)(event) == 'default') {
var
$link = $result.find('a[href]').eq(0),
$title = $result.find(selector.title).eq(0),
href = $link.attr('href') || false,
target = $link.attr('target') || false
target = $link.attr('target') || false,
name = ($title.size() > 0)
? $title.text()
: false
;
module.results.hide();
if(name) {
$prompt.val(name);
}
if(href) {
if(target == '_blank' || event.ctrlKey) {
window.open(href);
@ -638,37 +663,37 @@ $.fn.search.settings = {
verbose : true,
performance : true,
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
onSearchQuery : function(){},
onResults : function(response){},
onResultsOpen : function(){},
onResultsClose : function(){},
// api config
apiSettings : false,
type : 'standard',
minCharacters : 1,
source : false,
searchFields : [
'title',
'description'
],
searchFullText : true,
automatic : 'true',
type : 'simple',
hideDelay : 300,
minCharacters : 3,
searchThrottle : 300,
hideDelay : 0,
searchDelay : 200,
maxResults : 7,
cache : true,
searchFields : [
'title',
'description'
],
transition : 'scale',
duration : 300,
easing : 'easeOutExpo',
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
transition : 'scale',
duration : 300,
easing : 'easeOutExpo',
onSearchQuery : function(){},
onResults : function(response){},
// api config
apiSettings: false,
onResultsOpen : function(){},
onResultsClose : function(){},
className: {
active : 'active',
@ -692,7 +717,8 @@ $.fn.search.settings = {
searchButton : '.search.button',
results : '.results',
category : '.category',
result : '.result'
result : '.result',
title : '.title, .name'
},
templates: {
@ -739,7 +765,7 @@ $.fn.search.settings = {
}
return html;
},
categories: function(response) {
category: function(response) {
var
html = '',
escape = $.fn.search.settings.templates.escape
@ -755,7 +781,9 @@ $.fn.search.settings = {
// each item inside category
$.each(category.results, function(index, result) {
html += '<div class="result">';
html += '<a href="' + result.url + '"></a>';
if(result.url) {
html += '<a href="' + result.url + '"></a>';
}
if(result.image !== undefined) {
result.image = escape(result.image);
html += ''
@ -786,17 +814,17 @@ $.fn.search.settings = {
;
}
});
if(response.resultPage) {
if(response.action) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '<a href="' + response.action.url + '" class="action">'
+ response.action.text
+ '</a>';
}
return html;
}
return false;
},
simple: function(response) {
standard: function(response) {
var
html = ''
;
@ -804,7 +832,12 @@ $.fn.search.settings = {
// each result
$.each(response.results, function(index, result) {
html += '<a class="result" href="' + result.url + '">';
if(result.url) {
html += '<a class="result" href="' + result.url + '">';
}
else {
html += '<a class="result">';
}
if(result.image !== undefined) {
html += ''
+ '<div class="image">'
@ -824,8 +857,8 @@ $.fn.search.settings = {
}
html += ''
+ '</div>'
+ '</a>'
;
html += '</a>';
});
if(response.resultPage) {

2
dist/components/search.min.css

@ -8,4 +8,4 @@
* http://opensource.org/licenses/MIT
*
*/
.ui.search{position:relative}.ui.search input{border-radius:500rem;text-shadow:none;font-style:normal;font-weight:400}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search .results{display:none;position:absolute;z-index:998;top:100%;left:0;overflow:hidden;background:#fff;margin-top:.5em;width:380px;border-radius:.25em;box-shadow:0 1px 3px 1px rgba(0,0,0,.2)}.ui.search .result{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;cursor:pointer;overflow:hidden;font-size:.9em;padding:.5em 1em;color:rgba(0,0,0,.8);line-height:1.33}.ui.search .result:first-child{border-top:none}.ui.search .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search .result .image img{display:block;width:auto;height:100%}.ui.search .result .image+.content{margin:0 6em 0 0}.ui.search .result .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:400;color:rgba(0,0,0,.85)}.ui.search .result .description{color:rgba(0,0,0,.8)}.ui.search .result .price{float:right;color:#5bbd72}.ui.search .message{padding:1em}.ui.search .message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.2em;font-weight:700;color:rgba(0,0,0,.8)}.ui.search .message .description{margin-top:.25rem;font-size:1rem;color:rgba(0,0,0,.8)}.ui.search .all{display:block;border-top:1px solid rgba(0,0,0,.1);background-color:#f0f0f0;height:2em;line-height:2em;color:rgba(0,0,0,.8);font-weight:700;text-align:center}.ui.search .all:hover,.ui.search .result:hover,.ui.search .results .category .result:hover{background:#fafafa}.ui.search.loading .input .icon{background:url(../themes/default/assets/images/loader-mini.gif) 50% 50% no-repeat}.ui.search.loading .input .icon:after,.ui.search.loading .input .icon:before{display:none}.ui.search .results .category.active{background-color:#f1f1f1}.ui.search .results .category.active>.name{color:rgba(0,0,0,.8)}.ui.search .result.active,.ui.search .results .category .result.active{border-left-color:transparent;background-color:#f0f0f0;box-shadow:2px 0 2px 0 rgba(0,0,0,.2)}.ui.search .result.active .description,.ui.search .result.active .title{color:rgba(0,0,0,.85)}.ui.right.aligned.search .results{right:0;left:auto}.ui.search .results .category{background:#f0f0f0;box-shadow:0 -1px 0 0 rgba(0,0,0,.1)}.ui.search .results .category,.ui.search .results .category .result{position:relative;-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.search .results .category:first-child{box-shadow:none}.ui.search .results .category>.name{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;float:.9em;float:left;padding:.4em 0 0 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui.search .results .category .result{background-color:#fff;margin-left:100px;border-left:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(0,0,0,.1)}.ui.search{font-size:1em}.ui.large.search{font-size:1.1em}
.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.2;padding:.7em 1em;font-size:1em;background:#fff;border:1px solid rgba(39,41,43,.15);color:rgba(0,0,0,.8);box-shadow:0 0 transparent inset;-webkit-transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;z-index:998;top:100%;left:0;overflow:hidden;background:#fff;margin-top:.5em;width:380px;border-radius:.25em;box-shadow:0 1px 3px 1px rgba(0,0,0,.2)}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;padding:.5em 1em;color:rgba(0,0,0,.8);line-height:1.33}.ui.search>.results .result:first-child{border-top:none}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.9285em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#5bbd72}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.1428em;font-weight:700;color:rgba(0,0,0,.8)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.8)}.ui.search>.results>.action{display:block;border-top:1px solid rgba(39,41,43,.15);background:#f0f0f0;height:2em;line-height:2em;color:rgba(0,0,0,.8);font-weight:700;text-align:center}.ui.loading.search .input>.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.search .all:hover,.ui.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#fafafa}.ui.search>.results .category.active{background:#f0f0f0}.ui.search>.results .category.active>.name{color:rgba(0,0,0,.8)}.ui.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:transparent;background:#f0f0f0;box-shadow:3px 0 3px 0 rgba(39,41,43,.15)}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.search>.results .category{background:#f0f0f0;box-shadow:none;border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.search>.results .category:last-child{border-bottom:none}.ui.search>.results .category .result{background:#fff;margin-left:100px;border-left:1px solid rgba(39,41,43,.15);border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.search>.results .category .result:last-child{border-bottom:none}.ui.search>.results .category>.name{background:#f0f0f0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;width:100px;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui.search{font-size:1em}.ui.large.search{font-size:1.1em}

2
dist/components/search.min.js
File diff suppressed because it is too large
View File

205
dist/semantic.css

@ -18917,7 +18917,7 @@ ol.ui.horizontal.list li:before,
margin: 1em 0em;
background: #efefef;
padding: 1em 1.5em;
line-height: 1.3;
line-height: 1.33;
color: rgba(0, 0, 0, 0.8);
-webkit-transition: opacity 0.2s ease, color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
transition: opacity 0.2s ease, color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
@ -19019,7 +19019,7 @@ ol.ui.horizontal.list li:before,
cursor: pointer;
position: absolute;
margin: 0em;
top: 1.15em;
top: 1.165em;
right: 0.5em;
opacity: 0.7;
-webkit-transition: opacity 0.1s linear;
@ -19444,7 +19444,7 @@ ol.ui.horizontal.list li:before,
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
background: -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)) #ffffff;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.05)) #ffffff;
margin: 0em;
margin: 1em 0em 1rem;
padding: 1.2rem 2rem;
box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.05);
font-size: 1.6em;
@ -21619,8 +21619,8 @@ th {
top: 0em !important;
left: 0em !important;
z-index: 4 !important;
-webkit-transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
-webkit-transition: all 0.2s ease 0.15s;
transition: all 0.2s ease 0.15s;
}
.ui.reveal > .hidden.content {
@ -21647,8 +21647,8 @@ th {
display: block;
float: left;
margin: 0em;
-webkit-transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s;
-webkit-transition: top 0.2s ease 0.15s, left 0.2s ease 0.15s, right 0.2s ease 0.15s, bottom 0.2s ease 0.15s;
transition: top 0.2s ease 0.15s, left 0.2s ease 0.15s, right 0.2s ease 0.15s, bottom 0.2s ease 0.15s;
}
.ui.slide.reveal > .visible.content {
@ -21803,8 +21803,8 @@ th {
---------------*/
.ui.rotate.reveal > .visible.content {
-webkit-transition-duration: 0.8s;
transition-duration: 0.8s;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
@ -21914,11 +21914,27 @@ th {
position: relative;
}
.ui.search input {
border-radius: 500rem;
.ui.search > .prompt {
margin: 0em;
outline: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-shadow: none;
font-style: normal;
font-weight: normal;
line-height: 1.2;
padding: 0.7em 1em;
font-size: 1em;
background: #ffffff;
border: 1px solid rgba(39, 41, 43, 0.15);
color: rgba(0, 0, 0, 0.8);
box-shadow: 0em 0em 0em 0em transparent inset;
-webkit-transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.ui.search .prompt {
border-radius: 500rem;
}
/*--------------
@ -21933,7 +21949,7 @@ th {
Results
---------------*/
.ui.search .results {
.ui.search > .results {
display: none;
position: absolute;
z-index: 998;
@ -21951,23 +21967,24 @@ th {
Result
---------------*/
.ui.search .result {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
.ui.search > .results .result {
cursor: pointer;
display: block;
overflow: hidden;
font-size: 0.9em;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 1em;
padding: 0.5em 1em;
color: rgba(0, 0, 0, 0.8);
line-height: 1.33;
}
.ui.search .result:first-child {
.ui.search > .results .result:first-child {
border-top: none;
}
/* Image */
.ui.search .result .image {
.ui.search > .results .result .image {
float: right;
overflow: hidden;
background: none;
@ -21976,7 +21993,7 @@ th {
border-radius: 0.25em;
}
.ui.search .result .image img {
.ui.search > .results .result .image img {
display: block;
width: auto;
height: 100%;
@ -21986,21 +22003,24 @@ th {
Info
---------------*/
.ui.search .result .image + .content {
.ui.search > .results .result .image + .content {
margin: 0em 6em 0em 0em;
}
.ui.search .result .title {
.ui.search > .results .result .title {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-weight: normal;
font-weight: bold;
font-size: 1em;
color: rgba(0, 0, 0, 0.85);
}
.ui.search .result .description {
color: rgba(0, 0, 0, 0.8);
.ui.search > .results .result .description {
margin-top: 0em;
font-size: 0.9285em;
color: rgba(0, 0, 0, 0.4);
}
.ui.search .result .price {
.ui.search > .results .result .price {
float: right;
color: #5bbd72;
}
@ -22009,29 +22029,29 @@ th {
Message
---------------*/
.ui.search .message {
.ui.search > .results > .message {
padding: 1em 1em;
}
.ui.search .message .header {
.ui.search > .results > .message .header {
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-size: 1.2em;
font-size: 1.1428em;
font-weight: bold;
color: rgba(0, 0, 0, 0.8);
}
.ui.search .message .description {
.ui.search > .results > .message .description {
margin-top: 0.25rem;
font-size: 1rem;
font-size: 1em;
color: rgba(0, 0, 0, 0.8);
}
/* View All Results */
.ui.search .all {
.ui.search > .results > .action {
display: block;
border-top: 1px solid rgba(0, 0, 0, 0.1);
background-color: #f0f0f0;
border-top: 1px solid rgba(39, 41, 43, 0.15);
background: #f0f0f0;
height: 2em;
line-height: 2em;
color: rgba(0, 0, 0, 0.8);
@ -22043,56 +22063,79 @@ th {
States
*******************************/
/*--------------
Hover
---------------*/
/*--------------------
Loading
---------------------*/
.ui.search .result:hover,
.ui.search .results .category .result:hover {
background: #fafafa;
.ui.loading.search .input > .icon:before {
position: absolute;
content: '';
top: 50%;
left: 50%;
margin: -0.64285em 0em 0em -0.64285em;
width: 1.2857em;
height: 1.2857em;
border-radius: 500rem;
border: 0.2em solid rgba(0, 0, 0, 0.1);
}
.ui.search .all:hover {
background: #fafafa;
.ui.loading.search .input > .icon:after {
position: absolute;
content: '';
top: 50%;
left: 50%;
margin: -0.64285em 0em 0em -0.64285em;
width: 1.2857em;
height: 1.2857em;
-webkit-animation: button-spin 0.6s linear;
animation: button-spin 0.6s linear;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
border-radius: 500rem;
border-color: #aaaaaa transparent transparent;
border-style: solid;
border-width: 0.2em;
box-shadow: 0px 0px 0px 1px transparent;
}
/*--------------
Loading
Hover
---------------*/
.ui.search.loading .input .icon {
background: url("themes/default/assets/images/loader-mini.gif") no-repeat 50% 50%;
.ui.search > .results .result:hover,
.ui.search > .results .category .result:hover {
background: #fafafa;
}
.ui.search.loading .input .icon:before,
.ui.search.loading .input .icon:after {
display: none;
.ui.search .all:hover {
background: #fafafa;
}
/*--------------
Active
---------------*/
.ui.search .results .category.active {
background-color: #f1f1f1;
.ui.search > .results .category.active {
background: #f0f0f0;
}
.ui.search .results .category.active > .name {
.ui.search > .results .category.active > .name {
color: rgba(0, 0, 0, 0.8);
}
.ui.search .result.active,
.ui.search .results .category .result.active {
.ui.search > .results .result.active,
.ui.search > .results .category .result.active {
position: relative;
border-left-color: transparent;
background-color: #f0f0f0;
box-shadow: 2px 0px 2px 0px rgba(0, 0, 0, 0.2);
background: #f0f0f0;
box-shadow: 3px 0px 3px 0px rgba(39, 41, 43, 0.15);
}
.ui.search .result.active .title {
.ui.search > .results .result.active .title {
color: rgba(0, 0, 0, 0.85);
}
.ui.search .result.active .description {
.ui.search > .results .result.active .description {
color: rgba(0, 0, 0, 0.85);
}
@ -22104,7 +22147,12 @@ th {
Left / Right
--------------------*/
.ui.right.aligned.search .results {
.ui[class*="left aligned"].search > .results {
right: auto;
left: 0%;
}
.ui[class*="right aligned"].search > .results {
right: 0%;
left: auto;
}
@ -22113,38 +22161,49 @@ th {
Categories
---------------*/
.ui.search .results .category {
/* Category */
.ui.search > .results .category {
background: #f0f0f0;
box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1);
box-shadow: none;
border-bottom: 1px solid rgba(39, 41, 43, 0.15);
-webkit-transition: background 0.2s ease, border-color 0.2s ease;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ui.search .results .category,
.ui.search .results .category .result {
position: relative;
.ui.search > .results .category:last-child {
border-bottom: none;
}
/* Category Result */
.ui.search > .results .category .result {
background: #ffffff;
margin-left: 100px;
border-left: 1px solid rgba(39, 41, 43, 0.15);
border-bottom: 1px solid rgba(39, 41, 43, 0.15);
-webkit-transition: background 0.2s ease, border-color 0.2s ease;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ui.search .results .category:first-child {
box-shadow: none;
.ui.search > .results .category .result:last-child {
border-bottom: none;
}
.ui.search .results .category > .name {
/* Category Result Name */
.ui.search > .results .category > .name {
background: #f0f0f0;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
float: 0.9em;
font-size: 1em;
width: 100px;
float: 1em;
float: left;
padding: 0.4em 0em 0em 1em;
padding: 0.4em 1em;
font-weight: bold;
color: rgba(0, 0, 0, 0.4);
}
.ui.search .results .category .result {
background-color: #ffffff;
margin-left: 100px;
border-left: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
/*******************************
Variations
*******************************/

150
dist/semantic.js

@ -687,7 +687,7 @@ $.api = $.fn.api = function(parameters) {
ajaxSettings = $.extend(true, {}, settings, {
type : settings.method || settings.type,
data : data,
url : url,
url : settings.base + url,
beforeSend : settings.beforeXHR,
success : function() {},
failure : function() {},
@ -981,17 +981,17 @@ $.api = $.fn.api = function(parameters) {
if(runSettings) {
if(runSettings.success !== undefined) {
module.debug('Legacy success callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.success);
runSettings.onSuccess = runSettings.success;
}
if(runSettings.failure !== undefined) {
module.debug('Legacy failure callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.failure);
runSettings.onFailure = runSettings.failure;
}
if(runSettings.complete !== undefined) {
module.debug('Legacy complete callback detected', runSettings);
module.error(error.legacyParameters);
module.error(error.legacyParameters, runSettings.complete);
runSettings.onComplete = runSettings.complete;
}
}
@ -1282,6 +1282,7 @@ $.api.settings = {
// templating
action : false,
url : false,
base : '',
// data
urlData : {},
@ -9230,7 +9231,9 @@ $.fn.search = function(parameters) {
;
clearTimeout(module.timer);
module.search.throttle();
module.results.show();
if(module.has.minimum()) {
module.results.show();
}
},
blur: function() {
module.search.cancel();
@ -9330,6 +9333,15 @@ $.fn.search = function(parameters) {
}
}
},
has: {
minimum: function() {
var
searchTerm = $prompt.val(),
numCharacters = searchTerm.length
;
return (numCharacters >= settings.minCharacters);
}
},
search: {
cancel: function() {
var
@ -9341,13 +9353,9 @@ $.fn.search = function(parameters) {
}
},
throttle: function() {
var
searchTerm = $prompt.val(),
numCharacters = searchTerm.length
;
clearTimeout(module.timer);
if(numCharacters >= settings.minCharacters) {
module.timer = setTimeout(module.search.query, settings.searchThrottle);
if(module.has.minimum()) {
module.timer = setTimeout(module.search.query, settings.searchDelay);
}
else {
module.results.hide();
@ -9408,7 +9416,7 @@ $.fn.search = function(parameters) {
if( searchRegExp.test( content[field] ) ) {
results.push(content);
}
else if( fullTextRegExp.test( content[field] ) ) {
else if( settings.searchFullText && fullTextRegExp.test( content[field] ) ) {
fullTextResults.push(content);
}
}
@ -9426,8 +9434,8 @@ $.fn.search = function(parameters) {
remote: function(searchTerm) {
var
apiSettings = {
stateContext : $module,
urlData: {
stateContext : $module,
urlData : {
query: searchTerm
},
onSuccess : function(response) {
@ -9435,7 +9443,7 @@ $.fn.search = function(parameters) {
module.search.cache.write(searchTerm, searchHTML);
module.results.add(searchHTML);
},
failure : module.error
onFailure : module.error
},
searchHTML
;
@ -9478,14 +9486,17 @@ $.fn.search = function(parameters) {
;
if(($.isPlainObject(response.results) && !$.isEmptyObject(response.results)) || ($.isArray(response.results) && response.results.length > 0) ) {
if(settings.maxResults > 0) {
response.results = $.makeArray(response.results).slice(0, settings.maxResults);
response.results = $.isArray(response.results)
? response.results.slice(0, settings.maxResults)
: response.results
;
}
if($.isFunction(template)) {
html = template(response);
}
else {
module.error(error.noTemplate, false);
}
if($.isFunction(template)) {
html = template(response);
}
else {
module.error(error.noTemplate, false);
}
}
else {
html = module.message(error.noResults, 'empty');
@ -9503,10 +9514,14 @@ $.fn.search = function(parameters) {
},
show: function() {
if( ($results.filter(':visible').size() === 0) && ($prompt.filter(':focus').size() > 0) && $results.html() !== '') {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is inward')) {
module.debug('Showing results with css animations');
$results
.transition(settings.transition + ' in', settings.duration)
.transition({
animation : settings.transition + ' in',
duration : settings.duration,
queue : true
})
;
}
else {
@ -9521,10 +9536,14 @@ $.fn.search = function(parameters) {
},
hide: function() {
if($results.filter(':visible').size() > 0) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is outward')) {
module.debug('Hiding results with css animations');
$results
.transition(settings.transition + ' out', settings.duration)
.transition({
animation : settings.transition + ' out',
duration : settings.duration,
queue : true
})
;
}
else {
@ -9547,10 +9566,17 @@ $.fn.search = function(parameters) {
if(settings.onSelect == 'default' || $.proxy(settings.onSelect, this)(event) == 'default') {
var
$link = $result.find('a[href]').eq(0),
$title = $result.find(selector.title).eq(0),
href = $link.attr('href') || false,
target = $link.attr('target') || false
target = $link.attr('target') || false,
name = ($title.size() > 0)
? $title.text()
: false
;
module.results.hide();
if(name) {
$prompt.val(name);
}
if(href) {
if(target == '_blank' || event.ctrlKey) {
window.open(href);
@ -9757,37 +9783,37 @@ $.fn.search.settings = {
verbose : true,
performance : true,
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
onSearchQuery : function(){},
onResults : function(response){},
onResultsOpen : function(){},
onResultsClose : function(){},
// api config
apiSettings : false,
type : 'standard',
minCharacters : 1,
source : false,
searchFields : [
'title',
'description'
],
searchFullText : true,
automatic : 'true',
type : 'simple',
hideDelay : 300,
minCharacters : 3,
searchThrottle : 300,
hideDelay : 0,
searchDelay : 200,
maxResults : 7,
cache : true,
searchFields : [
'title',
'description'
],
transition : 'scale',
duration : 300,
easing : 'easeOutExpo',
transition : 'scale',
duration : 300,
easing : 'easeOutExpo',
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
// api config
apiSettings: false,
onSearchQuery : function(){},
onResults : function(response){},
onResultsOpen : function(){},
onResultsClose : function(){},
className: {
active : 'active',
@ -9811,7 +9837,8 @@ $.fn.search.settings = {
searchButton : '.search.button',
results : '.results',
category : '.category',
result : '.result'
result : '.result',
title : '.title, .name'
},
templates: {
@ -9858,7 +9885,7 @@ $.fn.search.settings = {
}
return html;
},
categories: function(response) {
category: function(response) {
var
html = '',
escape = $.fn.search.settings.templates.escape
@ -9874,7 +9901,9 @@ $.fn.search.settings = {
// each item inside category
$.each(category.results, function(index, result) {
html += '<div class="result">';
html += '<a href="' + result.url + '"></a>';
if(result.url) {
html += '<a href="' + result.url + '"></a>';
}
if(result.image !== undefined) {
result.image = escape(result.image);
html += ''
@ -9905,17 +9934,17 @@ $.fn.search.settings = {
;
}
});
if(response.resultPage) {
if(response.action) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '<a href="' + response.action.url + '" class="action">'
+ response.action.text
+ '</a>';
}
return html;
}
return false;
},
simple: function(response) {
standard: function(response) {
var
html = ''
;
@ -9923,7 +9952,12 @@ $.fn.search.settings = {
// each result
$.each(response.results, function(index, result) {
html += '<a class="result" href="' + result.url + '">';
if(result.url) {
html += '<a class="result" href="' + result.url + '">';
}
else {
html += '<a class="result">';
}
if(result.image !== undefined) {
html += ''
+ '<div class="image">'
@ -9943,8 +9977,8 @@ $.fn.search.settings = {
}
html += ''
+ '</div>'
+ '</a>'
;
html += '</a>';
});
if(response.resultPage) {

2
dist/semantic.min.css
File diff suppressed because it is too large
View File

14
dist/semantic.min.js
File diff suppressed because it is too large
View File

33
src/definitions/modules/search.js

@ -63,21 +63,22 @@ $.fn.search = function(parameters) {
? 'propertychange'
: 'keyup'
;
// attach events
$prompt
.on('focus' + eventNamespace, module.event.focus)
.on('blur' + eventNamespace, module.event.blur)
.on('keydown' + eventNamespace, module.handleKeyboard)
;
if(settings.automatic) {
$prompt
.on(inputEvent + eventNamespace, module.search.throttle)
;
}
$prompt
.on('focus' + eventNamespace, module.event.focus)
.on('blur' + eventNamespace, module.event.blur)
.on('keydown' + eventNamespace, module.handleKeyboard)
;
$searchButton
.on('click' + eventNamespace, module.search.query)
;
$results
.on('mousedown' + eventNamespace, module.event.mousedown)
.on('mouseup' + eventNamespace, module.event.mouseup)
.on('click' + eventNamespace, selector.result, module.results.select)
;
module.instantiate();
@ -115,12 +116,20 @@ $.fn.search = function(parameters) {
module.results.show();
}
},
blur: function() {
mousedown: function() {
module.resultsClicked = true;
},
mouseup: function() {
module.resultsClicked = false;
},
blur: function(event) {
module.search.cancel();
$module
.removeClass(className.focus)
;
module.timer = setTimeout(module.results.hide, settings.hideDelay);
if(!module.resultsClicked) {
module.timer = setTimeout(module.results.hide, settings.hideDelay);
}
}
},
handleKeyboard: function(event) {
@ -677,7 +686,7 @@ $.fn.search.settings = {
automatic : 'true',
hideDelay : 0,
searchDelay : 200,
searchDelay : 300,
maxResults : 7,
cache : true,
@ -861,10 +870,10 @@ $.fn.search.settings = {
html += '</a>';
});
if(response.resultPage) {
if(response.action) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '<a href="' + response.action.url + '" class="action">'
+ response.action.text
+ '</a>';
}
return html;

73
src/definitions/modules/search.less

@ -90,14 +90,14 @@
cursor: pointer;
display: block;
overflow: hidden;
font-family: @pageFont;
font-size: @resultFontSize;
padding: @resultVerticalPadding @resultHorizontalPadding;
color: @resultTextColor;
line-height: @resultLineHeight;
border-bottom: @resultDivider;
}
.ui.search > .results .result:first-child {
border-top: none;
.ui.search > .results .result:last-child {
border-bottom: @resultLastDivider;
}
/* Image */
@ -163,15 +163,13 @@
display: block;
border-top: @actionBorder;
background: @actionBackground;
height: @actionHeight;
line-height: @actionHeight;
padding: @actionPadding;
color: @actionColor;
font-weight: @actionFontWeight;
text-align: @actionAlign;
}
/*******************************
States
*******************************/
@ -221,10 +219,10 @@
---------------*/
.ui.search > .results .result:hover,
.ui.search > .results .category .result:hover {
.ui.category.search > .results .category .result:hover {
background: @resultHoverBackground;
}
.ui.search .all:hover {
.ui.search .action:hover {
background: @actionHoverBackground;
}
@ -240,7 +238,7 @@
}
.ui.search > .results .result.active,
.ui.search > .results .category .result.active {
.ui.category.search > .results .category .result.active {
position: relative;
border-left-color: @resultActiveBorderLeft;
background: @resultActiveBackground;
@ -257,53 +255,43 @@
Types
*******************************/
/*-------------------
Left / Right
--------------------*/
.ui[class*="left aligned"].search > .results {
right: auto;
left: 0%;
}
.ui[class*="right aligned"].search > .results {
right: 0%;
left: auto;
}
/*--------------
Categories
---------------*/
.ui.category.search .results {
width: @categoryResultsWidth;
}
/* Category */
.ui.search > .results .category {
.ui.category.search > .results .category {
background: @categoryBackground;
box-shadow: @categoryBoxShadow;
border-bottom: @categoryDivider;
transition: @categoryTransition;
}
.ui.search > .results .category:last-child {
.ui.category.search > .results .category:last-child {
border-bottom: none;
}
/* Category Result */
.ui.search > .results .category .result {
.ui.category.search > .results .category .result {
background: @categoryResultBackground;
margin-left: @categoryNameWidth;
border-left: @categoryResultLeftBorder;
border-bottom: @categoryResultDivider;
transition: @categoryResultTransition;
}
.ui.search > .results .category .result:last-child {
.ui.category.search > .results .category .result:last-child {
border-bottom: @categoryResultLastDivider;
}
/* Category Result Name */
.ui.search > .results .category > .name {
.ui.category.search > .results .category > .name {
width: @categoryNameWidth;
background: @categoryNameBackground;
font-family: @categoryNameFont;
font-size: @categoryNameFontSize;
width: @categoryNameWidth;
float: @categoryNameFontSize;
float: @categoryNameFloat;
padding: @categoryNamePadding;
@ -315,10 +303,35 @@
Variations
*******************************/
/*-------------------
Left / Right
--------------------*/
.ui[class*="left aligned"].search > .results {
right: auto;
left: 0%;
}
.ui[class*="right aligned"].search > .results {
right: 0%;
left: auto;
}
/*--------------
Fluid
---------------*/
.ui.fluid.search .results {
width: 100%;
}
/*--------------
Sizes
---------------*/
.ui.search {
font-size: @medium;
}
.ui.large.search {
font-size: @large;
}

16
src/themes/default/modules/search.variables

@ -21,9 +21,9 @@
@promptBoxShadow: 0em 0em 0em 0em transparent inset;
/* Result Box */
@resultsWidth: 190px;
@resultsBackground: #FFFFFF;
@resultsDistance: 0.5em;
@resultsWidth: 380px;
@resultsBorderRadius: 0.25em;
@resultsBoxShadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.2);
@ -33,6 +33,8 @@
@resultHorizontalPadding: 1em;
@resultTextColor: @textColor;
@resultLineHeight: 1.33;
@resultDivider: 1px solid @borderColor;
@resultLastDivider: none;
/* Result Image */
@resultImageFloat: right;
@ -68,9 +70,9 @@
@messageDescriptionColor: @textColor;
/* All Results Link */
@actionBorder: 1px solid @borderColor;
@actionBackground: #F0F0F0;
@actionHeight: 2em;
@actionBorder: none;
@actionBackground: @darkWhite;
@actionPadding: 0.5em 1em;
@actionColor: @textColor;
@actionFontWeight: bold;
@actionAlign: center;
@ -82,7 +84,7 @@
/* Hover */
@resultHoverBackground: @offWhite;
@actionHoverBackground: @offWhite;
@actionHoverBackground: #E0E0E0;
/* Loading */
@loaderSize: 1.2857em;
@ -115,12 +117,15 @@
border-color 0.2s ease
;
@categoryResultsWidth: 380px;
@categoryResultBackground: @white;
@categoryResultLeftBorder: 1px solid @borderColor;
@categoryResultDivider: 1px solid @borderColor;
@categoryResultLastDivider: none;
@categoryResultTransition: @categoryTransition;
@categoryNameWidth: 100px;
@categoryNameBackground: @darkWhite;
@categoryNameFont: @pageFont;
@categoryNameFontSize: 1em;
@ -128,7 +133,6 @@
@categoryNamePadding: 0.4em 1em;
@categoryNameFontWeight: bold;
@categoryNameColor: @lightTextColor;
@categoryNameWidth: 100px;
/* Sizes */
@medium: 1em;

Loading…
Cancel
Save