Smart collection
Render a collection in a paginated, filterable table with custom row action slots or with completely customized collection rendering (e.g. cards per item instead of table rows)
bs_smart_collection(*args)
bs_smart_collection(*args)Optional options
Docs in progress! Please review the examples.
Examples
Table rendering with custom row actions
def response
#...
bs_smart_collection collection_config
#...
end
def collection_config
{
id: 'customers',
items: Customer.all,
paginate: 10,
rerender_on: "success",
hoverable: true,
columns: {
id: 'ID',
first_name: "First Name",
last_name: "Last Name",
street: "Street",
house_number: "House Number",
postal_code: "Postal Code",
city: "City"
},
filters: {
last_name: {
placeholder: 'Filter by Last Name',
match: :like,
}
},
slots: {
table_item_actions: method(:table_item_actions)
}
}
end
def table_item_actions customer
transition path: edit_dummy_customer_path(customer), delay: 300 do
bs_btn outline: true, size: :sm, variant: :primary, class: "m-1" do
bs_icon name: 'arrow-right', size: 20
end
end
action customer_delete_action_config(customer) do
bs_btn outline: true, size: :sm, variant: :danger, class: "m-1" do
bs_icon name: 'trash2', size: 20
end
end
end
def customer_delete_action_config customer
{
method: :delete,
path: dummy_customer_path(id: customer.id),
confirm: true,
success: {
emit: "success"
}
}
endTable rendering with joined model and formatted col data rendering
Table rendering formatted col data rendering access the whole row instance object
Table rendering formatted col data rendering access the whole row instance object in multiple columns
Table rendering via slot enabling flexible column content composition
Custom collection rendering
Last updated