liquid_feedback_frontend

annotate env/ui/filters.lua @ 1859:02c34183b6df

Fixed wrong filename in INSTALL file
author bsw
date Tue Nov 28 18:54:51 2023 +0100 (6 months ago)
parents dcacc0b98d70
children
rev   line source
bsw/jbe@1309 1 local function filters(args)
bsw/jbe@1309 2
bsw@295 3 local el_id = ui.create_unique_id()
bsw/jbe@1309 4 local class = "lf-filter"
bsw/jbe@1309 5 if args.class then
bsw/jbe@1309 6 class = class .. " " .. args.class
bsw/jbe@1309 7 end
bsw@1489 8 ui.tag{
bsw@1489 9 tag = "fieldset",
bsw/jbe@1309 10 attr = { class = { class } },
bsw@295 11 content = function()
bsw@1489 12 local legend = args.legend
bsw@1489 13 if legend then
bsw@1489 14 ui.tag{ tag = "legend", attr = { style = "display: none;" }, content = legend }
bsw@1489 15 end
bsw@852 16 for idx, filter in ipairs(args) do
bsw@852 17 local filter_name = filter.name or "filter"
bsw@1570 18 if filter.selector_modifier then
bsw@1570 19 filter.selector_modifier(args.selector)
bsw@1570 20 end
bsw/jbe@1309 21 local current_option_name = atom.string:load(request.get_param{ name = filter_name })
bsw/jbe@1309 22 if not current_option_name then
bsw/jbe@1309 23 current_option_name = param.get(filter_name)
bsw@852 24 end
bsw/jbe@1309 25 local current_option = filter[1]
bsw@852 26 for idx, option in ipairs(filter) do
bsw/jbe@1309 27 if current_option_name == option.name then
bsw/jbe@1309 28 current_option = option
bsw@295 29 end
bsw@295 30 end
bsw/jbe@1309 31 if not current_option_name or #current_option_name == 0 or not current_option then
bsw/jbe@1309 32 current_option_name = filter[1].name
bsw@852 33 end
bsw/jbe@1309 34 ui.tag{ tag = "button", attr = { id = "filter-" .. filter_name .. "-menu", class = "mdl-button mdl-js-button" }, content = function()
bsw/jbe@1309 35 ui.tag{ content = current_option.label }
bsw/jbe@1309 36 slot.put(" ")
bsw@1489 37 ui.tag{ tag = "i", attr = { class = "material-icons", ["aria-hidden"] = "true" }, content = "arrow_drop_down" }
bsw/jbe@1309 38 end }
bsw@1145 39 local id = request.get_id_string()
bsw@1145 40 local params = request.get_param_strings()
bsw/jbe@1309 41 local class = "mdl-menu mdl-js-menu mdl-js-ripple-effect"
bsw@1045 42 if filter.class then
bsw@1045 43 class = class .. " " .. filter.class
bsw@1045 44 end
bsw/jbe@1309 45 ui.tag{
bsw/jbe@1309 46 tag = "ul",
bsw/jbe@1309 47 attr = { class = class, ["data-mdl-for"] = "filter-" .. filter_name .. "-menu" },
bsw@852 48 content = function()
bsw@852 49 for idx, option in ipairs(filter) do
bsw@852 50 params[filter_name] = option.name
bsw@852 51 local attr = {}
bsw/jbe@1309 52 attr.class = "mdl-menu__link"
bsw/jbe@1309 53 if current_option_name == option.name then
bsw/jbe@1309 54 attr.class = attr.class .. " active"
bsw@852 55 option.selector_modifier(args.selector)
bsw@852 56 end
bsw@852 57 if idx > 1 then
bsw@852 58 slot.put(" ")
bsw@852 59 end
bsw/jbe@1309 60 ui.tag{
bsw/jbe@1309 61 tag = "li",
bsw/jbe@1309 62 attr = { class = "mdl-menu__item" },
bsw/jbe@1309 63 content = function()
bsw/jbe@1309 64 ui.link{
bsw/jbe@1309 65 attr = attr,
bsw/jbe@1309 66 module = request.get_module(),
bsw/jbe@1309 67 view = request.get_view(),
bsw/jbe@1309 68 id = id,
bsw/jbe@1309 69 params = params,
bsw/jbe@1309 70 content = option.label,
bsw/jbe@1309 71 partial = {
bsw/jbe@1309 72 params = {
bsw/jbe@1309 73 [filter_name] = idx > 1 and option.name or nil
bsw/jbe@1309 74 }
bsw/jbe@1309 75 }
bsw@852 76 }
bsw/jbe@1309 77 end
bsw@852 78 }
bsw@295 79 end
bsw@295 80 end
bsw@852 81 }
bsw@852 82 end
bsw@295 83 end
bsw@295 84 }
bsw/jbe@1309 85 end
bsw/jbe@1309 86
bsw/jbe@1309 87 function ui.filters(args)
bsw/jbe@1309 88 if args.slot then
bsw/jbe@1309 89 slot.select(args.slot, function()
bsw/jbe@1309 90 filters(args)
bsw/jbe@1309 91 end)
bsw/jbe@1309 92 else
bsw/jbe@1309 93 filters(args)
bsw/jbe@1309 94 end
bsw@295 95 ui.container{
bsw@295 96 attr = { class = "ui_filter_content" },
bsw@295 97 content = function()
bsw@295 98 args.content()
bsw@295 99 end
bsw@295 100 }
bsw@295 101 end

Impressum / About Us