Class: TomSelectInput
- Inherits:
-
SimpleForm::Inputs::CollectionSelectInput
- Object
- SimpleForm::Inputs::CollectionSelectInput
- TomSelectInput
show all
- Defined in:
- app/inputs/tom_select_input.rb
Direct Known Subclasses
ActivityTypePickerInput, AmazonBrowseNodePickerInput, BalanceCompanyPickerInput, BalanceCompanyPickerTomSelectInput, BranchPickerTomSelectInput, BusinessUnitPickerInput, BusinessUnitPickerTomSelectInput, ChannelPickerTomSelectInput, CityPickerInput, CommissionTierPickerInput, CompanyPickerTomSelectInput, CurrencyInput, CustomerPickerInput, CustomerPickerTomSelectInput, DateRangePickerInput, DepartmentsPickerInput, EmployeePhonePickerInput, EmployeePickerInput, EmployeePickerTomSelectInput, EmployeeRecordPickerInput, InvoiceTypePickerTomSelectInput, ItemMovedScrapGroupingPickerInput, ItemMovedScrapSkuPickerInput, ItemMovedScrapSupplierPickerInput, ItemPickerInput, ItemPickerTomSelectInput, LedgerAccountPickerInput, LedgerAccountPickerTomSelectInput, LedgerCompanyAccountPickerTomSelectInput, LedgerReconciliationAccountPickerInput, LedgerReconciliationAccountPickerTomSelectInput, MonthPickerInput, MonthPickerTomSelectInput, OpportunitiesAmountPickerInput, OpportunitiesPeriodPickerInput, OpportunityPickerInput, OpportunityPickerTomSelectInput, OrderPickerInput, PartyPickerInput, PartyPickerTomSelectInput, PeriodBreakdownPickerInput, PeriodGroupingPickerInput, PeriodGroupingPickerTomSelectInput, PeriodPickerInput, PostalCodePickerInput, PrimarySalesRepPickerInput, ProductCategoryPickerInput, ProductCategoryPickerTomSelectInput, ProductLineGroupsPickerInput, ProductLineGroupsPickerTomSelectInput, ProductLinePickerInput, ProductLinePickerTomSelectInput, QuotePickerInput, ReportGroupingSalesFactPickerInput, ReportGroupingSalesFactPickerTomSelectInput, RoomPlanPickerInput, SalesCompanyPickerTomSelectInput, SalesGoalPeriodPickerTomSelectInput, SalesRepPickerTomSelectInput, SourcePickerInput, StateFilterPickerInput, StateFilterPickerTomSelectInput, StatePickerInput, StoreItemPickerInput, StorePickerInput, StorePickerTomSelectInput, SupplierPickerInput, TagsInput, TimeGroupingPickerInput, VideoPickerInput, WeekAndDatesPickerInput, YearsPickerInput, YearsPickerTomSelectInput
Instance Method Summary
collapse
Instance Method Details
#collection ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'app/inputs/tom_select_input.rb', line 61
def collection
base_collection = options[:collection]
unless base_collection
val = selected_value
return val.present? ? Array(val) : []
end
model_values = selected_value
if input_html_options[:multiple] && model_values.is_a?(Array) && model_values.any?
reorder_collection_by_selected(base_collection, model_values)
else
base_collection
end
end
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'app/inputs/tom_select_input.rb', line 2
def input(wrapper_options = nil)
input_html_options[:type] = :select
input_html_options[:multiple] ||= options[:multiple] || multiple_by_association?
input_html_options[:data] ||= {}
placeholder = options[:placeholder] || input_html_options[:placeholder] || (options[:include_blank].is_a?(String) ? options[:include_blank] : nil) || 'Please Select'
input_html_options[:data]['tom-select-placeholder-value'] = placeholder
if input_html_options[:multiple]
options[:include_blank] = input_html_options[:include_blank] = false
elsif options[:include_blank].nil?
options[:include_blank] = true
end
current_controller = input_html_options[:data][:controller] || input_html_options[:data]['controller']
merged = [current_controller, 'tom-select'].compact.join(' ')
input_html_options[:data][:controller] = merged
input_html_options[:data]['controller'] = merged
if (url = options[:suggest_url] || input_html_options[:data].delete(:suggest_url))
input_html_options[:data]['tom-select-suggest-url-value'] = url
end
if (min_chars = options[:min_chars] || input_html_options[:data].delete(:min_chars))
input_html_options[:data]['tom-select-min-chars-value'] = min_chars
end
input_html_options[:data]['tom-select-preload-value'] = true if options[:preload] || input_html_options[:data].delete(:preload)
input_html_options[:data]['tom-select-create-value'] = true if options[:create] || input_html_options[:data].delete(:create)
if (dropdown_parent = options[:dropdown_parent] || input_html_options[:data].delete(:dropdown_parent))
input_html_options[:data]['tom-select-dropdown-parent-value'] = dropdown_parent
end
input_html_options[:class] = Array(input_html_options[:class]) << 'form-select'
input_html_options[:data]['tom-select-plugins-value'] = ['clear_button'] if options[:include_blank] || input_html_options[:placeholder].present? || options[:placeholder].present?
selected_from_params = begin
object.respond_to?(:params) ? object.params[attribute_name.to_s] : nil
rescue StandardError
nil
end
if input_html_options[:multiple]
selected = Array(selected_from_params).compact
options[:selected] = selected if selected.any?
elsif selected_from_params.present?
options[:selected] = selected_from_params
end
super
end
|
57
58
59
|
# File 'app/inputs/tom_select_input.rb', line 57
def input_html_classes
(super || []).map(&:to_s).push('tom-select').uniq
end
|