annotate sat_templates/templates/bulma/input/field.html @ 369:1b753e3baf06

bulma (chat): add `search_item` to handle search results in chat selection
author Goffi <goffi@goffi.org>
date Thu, 06 Jul 2023 11:42:16 +0200
parents 58c4c1664421
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 {# macros to create form fields #}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
3 {% macro field(type, name, label="", value=none, class="", control_class="", help="", required=false, icon_left=none, icon_right=none, in_group=false, attrs=none) %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 {# generic field
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 "class" keyword can be used to add classes
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 additional kwargs will be passed as attributes #}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
8 {% if not in_group %}
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
9 <div class="field form_input {{class}}">
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
10 {% endif %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 {% set cur_id = name|next_gidx %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 {% if label %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 <label for="{{cur_id}}" class="label">{{label}}</label>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 {% endif %}
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
15 <div class="control{% if icon_left %} has-icons-left{% endif %}{% if icon_right %} has-icons-right{% endif %} {{control_class}}">
269
edefc1f25219 bulma (input/field): fixed use of `attrs` in `field`, added args, replaced use of `kwargs`
Goffi <goffi@goffi.org>
parents: 259
diff changeset
16 <input id="{{cur_id}}" class="input" type="{{type}}" name="{{name}}" {{"required" if required}}{{{'value': value}|xmlattr}}{{(attrs or {})|xmlattr}}>
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 {% if icon_left %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 <span class="icon is-left">
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
19 {# we use <i> with font from CSS instead of SVG, because using directly SVG doesn't play way with Bulma's control #}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 <i class="icon-{{icon_left}}"></i>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 </span>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 {% endif %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 {% if icon_right %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 <span class="icon is-right">
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 <i class="icon-{{icon_right}}"></i>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 </span>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 {% endif %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 </div>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 {% if help %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 <p class="help">{{help}}</p>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 {% endif %}
296
fbea1b9a558f bulma: new search box, used in blog for now
Goffi <goffi@goffi.org>
parents: 269
diff changeset
32 {% if caller %}
fbea1b9a558f bulma: new search box, used in blog for now
Goffi <goffi@goffi.org>
parents: 269
diff changeset
33 {{ caller() }}
fbea1b9a558f bulma: new search box, used in blog for now
Goffi <goffi@goffi.org>
parents: 269
diff changeset
34 {% endif %}
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
35 {% if not in_group %}
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
36 </div>
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
37 {% endif %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
40 {% macro select(name, options_list, selected=none, required=false, multiple=false, class="") %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 {# selection of elements with <select>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 @param name: name of the field
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 @param options_list(list[str, str]): list of name, label of options
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 @param selected(none, list): list of select elements
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 @param required(bool): true this field is required
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 @param multiple(bool): true is multiple selection is possible
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48 #}
269
edefc1f25219 bulma (input/field): fixed use of `attrs` in `field`, added args, replaced use of `kwargs`
Goffi <goffi@goffi.org>
parents: 259
diff changeset
49 <select name="{{name}}" class="form_input {{class}}" {{"required" if required}}>
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 {% for value, label in options_list %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 <option value="{{value}}" {{'selected' if selected and value in selected}}>{{label}}</option>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 {% endfor %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 </select>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
55
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
56 {% macro choices(name, choices_list, checked=none, class="") %}
269
edefc1f25219 bulma (input/field): fixed use of `attrs` in `field`, added args, replaced use of `kwargs`
Goffi <goffi@goffi.org>
parents: 259
diff changeset
57 <div class="control {{class}}">
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 {% for choice, label in choices_list %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 <label class="radio" for="{{name|cur_gidx}}">
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 <input id="{{name|next_gidx}}" type="radio" name="{{name}}" value="{{choice}}"{{" checked" if checked==choice}}>{{label}}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 </label>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 {% endfor %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 </div>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
65
305
552daa830d42 bulma (input/field): `int` macro has new attributes:
Goffi <goffi@goffi.org>
parents: 304
diff changeset
66 {% macro int(name, label="", init=0, class="", control_class="", placeholder=none, min=none, max=none, step=none, in_group=false) %}
552daa830d42 bulma (input/field): `int` macro has new attributes:
Goffi <goffi@goffi.org>
parents: 304
diff changeset
67 {{ field("number", name=name, label=label, value=init, class=class, control_class=control_class, in_group=in_group, attrs={"min": min, "max": max, "step": step, "placeholder": placeholder}) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
69
349
2e548a9830c6 (bulma) input/field: fix `name` attribute + add `required` to checkbox
Goffi <goffi@goffi.org>
parents: 317
diff changeset
70 {% macro checkbox(name, label="", checked=false, required=false) %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 {% set cur_id = name|next_gidx %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 <label for="{{cur_id}}" class="label checkbox">{{label}}</label>
349
2e548a9830c6 (bulma) input/field: fix `name` attribute + add `required` to checkbox
Goffi <goffi@goffi.org>
parents: 317
diff changeset
73 <input {{ {"id": cur_id, "name": name}|xmlattr }} type="checkbox" {% if checked %}checked=checked{% endif %} {{"required" if required}}>
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
75
316
81689d346cf6 bulma (input/field): added `help` argument to `text` macro
Goffi <goffi@goffi.org>
parents: 307
diff changeset
76 {% macro text(name, label="", value=none, class="", control_class="", placeholder=none, help="", required=false, pattern=none, title=none, autocomplete=none, icon_left=none, icon_right=none, in_group=false) %}
81689d346cf6 bulma (input/field): added `help` argument to `text` macro
Goffi <goffi@goffi.org>
parents: 307
diff changeset
77 {{ field("text", name=name, label=label, value=value, class=class, control_class=control_class, help=help, required=required, icon_left=icon_left, icon_right=icon_right, attrs={'placeholder': placeholder, 'pattern': pattern, 'title': title, 'autocomplete': autocomplete}, in_group=in_group, caller=caller) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
79
367
58c4c1664421 bulma (input/field): add `search` field
Goffi <goffi@goffi.org>
parents: 350
diff changeset
80 {% macro search(name, label="", value=none, class="", control_class="", placeholder=none, help="", required=false, pattern=none, title=none, autocomplete=none, icon_left=none, icon_right=none, in_group=false) %}
58c4c1664421 bulma (input/field): add `search` field
Goffi <goffi@goffi.org>
parents: 350
diff changeset
81 {{ field("search", name=name, label=label, value=value, class=class, control_class=control_class, help=help, required=required, icon_left=icon_left, icon_right=icon_right, attrs={'placeholder': placeholder, 'pattern': pattern, 'title': title, 'autocomplete': autocomplete}, in_group=in_group, caller=caller) }}
58c4c1664421 bulma (input/field): add `search` field
Goffi <goffi@goffi.org>
parents: 350
diff changeset
82 {% endmacro %}
58c4c1664421 bulma (input/field): add `search` field
Goffi <goffi@goffi.org>
parents: 350
diff changeset
83
269
edefc1f25219 bulma (input/field): fixed use of `attrs` in `field`, added args, replaced use of `kwargs`
Goffi <goffi@goffi.org>
parents: 259
diff changeset
84 {% macro password(name, label="", value=none, required=false, minlength=none, icon_left=none, icon_right=none) %}
edefc1f25219 bulma (input/field): fixed use of `attrs` in `field`, added args, replaced use of `kwargs`
Goffi <goffi@goffi.org>
parents: 259
diff changeset
85 {{ field("password", name=name, label=label, value=value, required=required, icon_left=icon_left, icon_right=icon_right, attrs={'minlength': minlength}) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
87
350
1de6a0ecd529 (bulma) input/field: add `placeholder` attribute
Goffi <goffi@goffi.org>
parents: 349
diff changeset
88 {% macro email(name, label="", required=false, value=none, placeholder=none, icon_left=none, icon_right=none) %}
1de6a0ecd529 (bulma) input/field: add `placeholder` attribute
Goffi <goffi@goffi.org>
parents: 349
diff changeset
89 {{ field("email", name=name, label=label, value=value, required=required, icon_left=icon_left, icon_right=icon_right, attrs={'placeholder': placeholder}) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
91
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 {% macro date(name, label="", required=false) %}
249
60bf3e45d7b2 bulma (input/field): don't use kwargs anymore:
Goffi <goffi@goffi.org>
parents: 230
diff changeset
93 {{ field("date", name=name, label=label, required=required) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
94 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
95
249
60bf3e45d7b2 bulma (input/field): don't use kwargs anymore:
Goffi <goffi@goffi.org>
parents: 230
diff changeset
96 {% macro url(name, label="", class="", placeholder=none, required=false, title=none, pattern=none) %}
60bf3e45d7b2 bulma (input/field): don't use kwargs anymore:
Goffi <goffi@goffi.org>
parents: 230
diff changeset
97 {{ field("url", name=name, label=label, required=required, attrs={'placeholder': placeholder, 'title': title, 'pattern': pattern}) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
98 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
99
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
100 {% macro file(name, label="", required=false) %}
249
60bf3e45d7b2 bulma (input/field): don't use kwargs anymore:
Goffi <goffi@goffi.org>
parents: 230
diff changeset
101 {{ field("file", name=name, label=label, required=required) }}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
103
304
cdf88211b86b bulma (input/field): `field` macro now has `control_class` and `in_group` attributes:
Goffi <goffi@goffi.org>
parents: 296
diff changeset
104 {% macro textarea(name, label="", rows=none, cols=50, placeholder="", help="", required=false) %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
105 <div class="field form_input">
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 {% set cur_id = name|next_gidx %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
107 {% if label %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 <label for="{{cur_id}}" class="label">{{label}}</label>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
109 {% endif %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 <textarea id="{{cur_id}}" name="{{name}}" {{ {"rows": rows, "cols": cols}|xmlattr }} placeholder="{{placeholder}}" {{"required" if required}} class="textarea"></textarea>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
111 {% if help %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
112 <p class="help">{{help}}</p>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
113 {% endif %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 </div>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
115 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
116
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 {% macro meta(name, value) %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
118 <input type="hidden" name="{{name}}" value="{{value}}">
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 {% endmacro %}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
120
317
ae903ca0ed66 bulma (input/field): color can now be specified for `submit` button
Goffi <goffi@goffi.org>
parents: 316
diff changeset
121 {% macro submit(text=_("Send"), id=none, class="", icon=none, attrs=none, color="is-primary") %}
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
122 {# submit button
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
123
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
124 @param text(str): label of the button
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
125 @param id(none, str): id of the element
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 #}
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
127 <div class="control {{class}}">
317
ae903ca0ed66 bulma (input/field): color can now be specified for `submit` button
Goffi <goffi@goffi.org>
parents: 316
diff changeset
128 <button{{ {'id': id}|xmlattr }} class="button {{color}} form_submit {{class}}" type="submit"{{(attrs or {})|xmlattr}}>
307
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
129 {{text}}
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
130 {% if icon %}
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
131 <span class="icon is-small">
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
132 <i class="icon-{{icon}}"></i>
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
133 </span>
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
134 {% endif %}
605bce1df126 bulma (input/field): icon can now be specified with `submit` macro
Goffi <goffi@goffi.org>
parents: 306
diff changeset
135 </button>
230
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 </div>
0e69b5843c2f theme: bulma theme first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 {% endmacro %}