Selection of multiple tags separated by ',' works for hardcoded array of tags.
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
//= require jquery_ujs
|
//= require jquery_ujs
|
||||||
//= require jquery-ui/widgets/datepicker
|
//= require jquery-ui/widgets/datepicker
|
||||||
//= require jquery-ui/i18n/datepicker-es
|
//= require jquery-ui/i18n/datepicker-es
|
||||||
|
//= require jquery-ui/widgets/autocomplete
|
||||||
//= require jquery-fileupload/basic
|
//= require jquery-fileupload/basic
|
||||||
//= require foundation
|
//= require foundation
|
||||||
//= require turbolinks
|
//= require turbolinks
|
||||||
@@ -63,6 +64,7 @@
|
|||||||
//= require documentable
|
//= require documentable
|
||||||
//= require tree_navigator
|
//= require tree_navigator
|
||||||
//= require custom
|
//= require custom
|
||||||
|
//= require tag_autocomplete
|
||||||
|
|
||||||
var initialize_modules = function() {
|
var initialize_modules = function() {
|
||||||
App.Comments.initialize();
|
App.Comments.initialize();
|
||||||
@@ -97,6 +99,7 @@ var initialize_modules = function() {
|
|||||||
App.WatchFormChanges.initialize();
|
App.WatchFormChanges.initialize();
|
||||||
App.TreeNavigator.initialize();
|
App.TreeNavigator.initialize();
|
||||||
App.Documentable.initialize();
|
App.Documentable.initialize();
|
||||||
|
App.TagAutocomplete.initialize();
|
||||||
};
|
};
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
|
|||||||
29
app/assets/javascripts/tag_autocomplete.js.coffee
Normal file
29
app/assets/javascripts/tag_autocomplete.js.coffee
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
App.TagAutocomplete =
|
||||||
|
|
||||||
|
split: ( val ) ->
|
||||||
|
return (val.split( /,\s*/ ))
|
||||||
|
|
||||||
|
extractLast: ( term ) ->
|
||||||
|
return (App.TagAutocomplete.split( term ).pop())
|
||||||
|
|
||||||
|
init_autocomplete: ->
|
||||||
|
$('.js-tag-list').autocomplete
|
||||||
|
source: (request, response) ->
|
||||||
|
response( $.ui.autocomplete.filter(["Arbol", "Becerro", "Caracol"], App.TagAutocomplete.extractLast( request.term ) ) );
|
||||||
|
minLength: 0,
|
||||||
|
search: ->
|
||||||
|
console.log(this.value);
|
||||||
|
console.log(App.TagAutocomplete.extractLast( this.value ));
|
||||||
|
App.TagAutocomplete.extractLast( this.value );
|
||||||
|
focus: ->
|
||||||
|
return false;
|
||||||
|
select: ( event, ui ) -> (
|
||||||
|
terms = App.TagAutocomplete.split( this.value );
|
||||||
|
terms.pop();
|
||||||
|
terms.push( ui.item.value );
|
||||||
|
terms.push( "" );
|
||||||
|
this.value = terms.join( ", " );
|
||||||
|
return false;);
|
||||||
|
|
||||||
|
initialize: ->
|
||||||
|
App.TagAutocomplete.init_autocomplete();
|
||||||
@@ -16,4 +16,6 @@
|
|||||||
@import 'annotator_overrides';
|
@import 'annotator_overrides';
|
||||||
@import 'jquery-ui/datepicker';
|
@import 'jquery-ui/datepicker';
|
||||||
@import 'datepicker_overrides';
|
@import 'datepicker_overrides';
|
||||||
|
@import 'jquery-ui/autocomplete';
|
||||||
|
@import 'autocomplete_overrides';
|
||||||
@import 'documentable';
|
@import 'documentable';
|
||||||
|
|||||||
41
app/assets/stylesheets/autocomplete_overrides.scss
Normal file
41
app/assets/stylesheets/autocomplete_overrides.scss
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
// Overrides styles of jquery-ui/autocomplete
|
||||||
|
//
|
||||||
|
|
||||||
|
/* Autocomplete
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-autocomplete { position: absolute; cursor: default; }
|
||||||
|
.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
|
||||||
|
|
||||||
|
/* workarounds */
|
||||||
|
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
||||||
|
|
||||||
|
/* Menu
|
||||||
|
----------------------------------*/
|
||||||
|
.ui-menu {
|
||||||
|
list-style:none;
|
||||||
|
padding: 0px 5px;
|
||||||
|
margin: 0;
|
||||||
|
display:block;
|
||||||
|
/*width:227px;*/
|
||||||
|
background: white;
|
||||||
|
border: 1px solid $border;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu {
|
||||||
|
margin-top: -3px;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item {
|
||||||
|
margin:0;
|
||||||
|
padding: 0;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item a {
|
||||||
|
/* text-decoration:none;
|
||||||
|
display:block;*/
|
||||||
|
padding:.2em .4em;
|
||||||
|
/* line-height:1.5;
|
||||||
|
zoom:1;*/
|
||||||
|
}
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-hover,
|
||||||
|
.ui-menu .ui-menu-item a.ui-state-active {
|
||||||
|
margin: -1px;
|
||||||
|
}
|
||||||
@@ -22,7 +22,8 @@
|
|||||||
<%= f.text_field :tag_list, value: @debate.tag_list.to_s,
|
<%= f.text_field :tag_list, value: @debate.tag_list.to_s,
|
||||||
label: false,
|
label: false,
|
||||||
placeholder: t("debates.form.tags_placeholder"),
|
placeholder: t("debates.form.tags_placeholder"),
|
||||||
aria: {describedby: "tag-list-help-text"} %>
|
aria: {describedby: "tag-list-help-text"},
|
||||||
|
data: {js_url: tags_search_path}%>
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 column">
|
<div class="small-12 column">
|
||||||
<% if @debate.new_record? %>
|
<% if @debate.new_record? %>
|
||||||
|
|||||||
@@ -168,6 +168,10 @@ Rails.application.routes.draw do
|
|||||||
resource :letter, controller: "letter", only: [:new, :create, :show, :edit, :update]
|
resource :letter, controller: "letter", only: [:new, :create, :show, :edit, :update]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
namespace :tags do
|
||||||
|
get :search
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
root to: "dashboard#index"
|
root to: "dashboard#index"
|
||||||
|
|||||||
Reference in New Issue
Block a user