@gov-cy/govcy-frontend-renderer 1.20.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -503,6 +503,8 @@ If your using the `pageData.layout`, you can render html in each of the followin
503
503
  - **main**: the main content
504
504
  - **footer**: the footer section
505
505
  - **bodyEnd**: the end of the body
506
+ - **afterBody**: the section after the body. Usually reserved for overlay elements
507
+ - **afterJS**: the section after the JS. Usually reserved for JS scripts
506
508
 
507
509
  Use the `govcyElement` macro inside the blocks to render the design elements defined in the `govcyElement.njk` template. More details in defining design elements see in the [design elements](DESIGN_ELEMENTS.md) section.
508
510
 
@@ -559,6 +561,8 @@ If your using the `pageData.layout`, you can render html in each of the followin
559
561
  - **main**: the main content
560
562
  - **footer**: the footer section
561
563
  - **bodyEnd**: the end of the body
564
+ - **afterBody**: the section after the body. Usually reserved for overlay elements
565
+ - **afterJS**: the section after the JS. Usually reserved for JS scripts
562
566
 
563
567
  Define your design elements for each `sections` under the `elements` array. These elements use the same `govcyElement` macro to render the design elements. Do that by defining the `element` and `params` objects. For example:
564
568
 
@@ -2691,7 +2691,7 @@ context.setVariable("hint", t_16);
2691
2691
  var t_17;
2692
2692
  t_17 = (function() {
2693
2693
  var output = "";
2694
- output += runtime.suppressValue((lineno = 21, colno = 41, runtime.callWrap(t_8, "govcyGetContent", context, ["fileView_view",runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2694
+ output += runtime.suppressValue((lineno = 23, colno = 41, runtime.callWrap(t_8, "govcyGetContent", context, ["fileView_view",runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2695
2695
  ;
2696
2696
  return output;
2697
2697
  })()
@@ -2706,7 +2706,7 @@ context.addExport("viewLabel", t_17);
2706
2706
  var t_18;
2707
2707
  t_18 = (function() {
2708
2708
  var output = "";
2709
- output += runtime.suppressValue((lineno = 22, colno = 43, runtime.callWrap(t_8, "govcyGetContent", context, ["fileView_delete",runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2709
+ output += runtime.suppressValue((lineno = 24, colno = 43, runtime.callWrap(t_8, "govcyGetContent", context, ["fileView_delete",runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2710
2710
  ;
2711
2711
  return output;
2712
2712
  })()
@@ -2727,7 +2727,7 @@ t_2 += "-view-control\" ";
2727
2727
  ;
2728
2728
  }
2729
2729
  t_2 += "class=\"govcy-form\">\n ";
2730
- t_2 += runtime.suppressValue((lineno = 26, colno = 23, runtime.callWrap(t_12, "formControl", context, [{"classes": runtime.memberLookup((l_params),"classes"),"lang": runtime.memberLookup((l_params),"lang")},runtime.makeKeywordArgs({"caller": (function (){var macro_t_19 = runtime.makeMacro(
2730
+ t_2 += runtime.suppressValue((lineno = 28, colno = 23, runtime.callWrap(t_12, "formControl", context, [{"classes": runtime.memberLookup((l_params),"classes"),"lang": runtime.memberLookup((l_params),"lang")},runtime.makeKeywordArgs({"caller": (function (){var macro_t_19 = runtime.makeMacro(
2731
2731
  [],
2732
2732
  [],
2733
2733
  function (kwargs) {
@@ -2744,7 +2744,7 @@ else {
2744
2744
  t_20 += "<p class=\"govcy-label govcy-label-primary\">";
2745
2745
  ;
2746
2746
  }
2747
- t_20 += runtime.suppressValue((lineno = 27, colno = 135, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"label"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2747
+ t_20 += runtime.suppressValue((lineno = 29, colno = 135, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"label"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2748
2748
  if(runtime.memberLookup((l_params),"isPageHeading")) {
2749
2749
  t_20 += "</h1>";
2750
2750
  ;
@@ -2753,7 +2753,7 @@ else {
2753
2753
  t_20 += "</p>";
2754
2754
  ;
2755
2755
  }
2756
- t_20 += runtime.suppressValue((lineno = 29, colno = 20, runtime.callWrap(t_16, "hint", context, [{"hint": runtime.memberLookup((l_params),"hint"),"lang": runtime.memberLookup((l_params),"lang")},runtime.makeKeywordArgs({"caller": (function (){var macro_t_21 = runtime.makeMacro(
2756
+ t_20 += runtime.suppressValue((lineno = 31, colno = 20, runtime.callWrap(t_16, "hint", context, [{"hint": runtime.memberLookup((l_params),"hint"),"lang": runtime.memberLookup((l_params),"lang")},runtime.makeKeywordArgs({"caller": (function (){var macro_t_21 = runtime.makeMacro(
2757
2757
  [],
2758
2758
  [],
2759
2759
  function (kwargs) {
@@ -2769,27 +2769,41 @@ return new runtime.SafeString(t_22);
2769
2769
  return macro_t_21;})()})])), env.opts.autoescape);
2770
2770
  t_20 += "<a href=\"";
2771
2771
  t_20 += runtime.suppressValue(runtime.memberLookup((l_params),"viewHref"), env.opts.autoescape);
2772
- t_20 += "\">";
2772
+ t_20 += "\"";
2773
+ if(runtime.memberLookup((l_params),"viewTarget")) {
2774
+ t_20 += " target=\"";
2775
+ t_20 += runtime.suppressValue(runtime.memberLookup((l_params),"viewTarget"), env.opts.autoescape);
2776
+ t_20 += "\"";
2777
+ ;
2778
+ }
2779
+ t_20 += ">";
2773
2780
  t_20 += runtime.suppressValue(runtime.contextOrFrameLookup(context, frame, "viewLabel"), env.opts.autoescape);
2774
2781
  if(runtime.memberLookup((l_params),"visuallyHiddenText")) {
2775
2782
  t_20 += "<span class=\"govcy-visually-hidden\">";
2776
- t_20 += runtime.suppressValue((lineno = 31, colno = 146, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"visuallyHiddenText"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2783
+ t_20 += runtime.suppressValue((lineno = 33, colno = 214, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"visuallyHiddenText"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2777
2784
  t_20 += "</span>";
2778
2785
  ;
2779
2786
  }
2780
2787
  t_20 += "</a>";
2781
2788
  t_20 += "<a class=\"govcy-ml-3\" href=\"";
2782
2789
  t_20 += runtime.suppressValue(runtime.memberLookup((l_params),"deleteHref"), env.opts.autoescape);
2783
- t_20 += "\">";
2790
+ t_20 += "\"";
2791
+ if(runtime.memberLookup((l_params),"deleteTarget")) {
2792
+ t_20 += " target=\"";
2793
+ t_20 += runtime.suppressValue(runtime.memberLookup((l_params),"deleteTarget"), env.opts.autoescape);
2794
+ t_20 += "\"";
2795
+ ;
2796
+ }
2797
+ t_20 += ">";
2784
2798
  t_20 += runtime.suppressValue(runtime.contextOrFrameLookup(context, frame, "deleteLabel"), env.opts.autoescape);
2785
2799
  if(runtime.memberLookup((l_params),"visuallyHiddenText")) {
2786
2800
  t_20 += "<span class=\"govcy-visually-hidden\">";
2787
- t_20 += runtime.suppressValue((lineno = 33, colno = 169, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"visuallyHiddenText"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2801
+ t_20 += runtime.suppressValue((lineno = 35, colno = 241, runtime.callWrap(t_6, "govcyLocalizeContent", context, [runtime.memberLookup((l_params),"visuallyHiddenText"),runtime.memberLookup((l_params),"lang")])), env.opts.autoescape);
2788
2802
  t_20 += "</span>";
2789
2803
  ;
2790
2804
  }
2791
2805
  t_20 += "</a>\n ";
2792
- if(runtime.memberLookup((l_params),"name") && runtime.memberLookup((l_params),"fileId") && runtime.memberLookup((l_params),"sha256")) {
2806
+ if(runtime.memberLookup((l_params),"name")) {
2793
2807
  t_20 += "<input type=\"hidden\" name=\"";
2794
2808
  t_20 += runtime.suppressValue(runtime.memberLookup((l_params),"name"), env.opts.autoescape);
2795
2809
  t_20 += "Attachment[fileId]\" value=\"";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gov-cy/govcy-frontend-renderer",
3
- "version": "1.20.0",
3
+ "version": "1.22.0",
4
4
  "description": "Render html for design elements of the Unified design system using njk or json template.",
5
5
  "author": "DMRID - DSF Team",
6
6
  "license": "MIT",
@@ -2,7 +2,9 @@
2
2
  @param {object} label The label text. Will escape text. `{en:"Content",el:"Περιεχομένο"}`
3
3
  @param {string} id The input id. Will append '-view-control', for example 'id-card-proof-view-control'. Optional
4
4
  @param {string} viewHref The view link's href. Will escape text
5
+ @param {string} viewTarget The view link's target. Optional. Will escape text
5
6
  @param {string} deleteHref The delete link's href. Will escape text
7
+ @param {string} deleteTarget The delete link's target. Optional. Will escape text
6
8
  @param {object} visuallyHiddenText The visuallyHiddenText text. Optional. Will escape text. `{en:"Content",el:"Περιεχομένο"}`
7
9
  @param {object} hint The hint text. Optional. Will escape text. `{en:"Content",el:"Περιεχομένο"}`
8
10
  @param {string} classes Additional classes to add to the outer div. Optional
@@ -29,9 +31,9 @@
29
31
  {#- render hint -#}
30
32
  {% call hint({hint:params.hint, lang:params.lang}) %}{% endcall %}
31
33
  {#- render view -#}
32
- <a href="{{ params.viewHref }}">{{viewLabel}}{%if params.visuallyHiddenText%}<span class="govcy-visually-hidden"> {{- govcyLocalizeContent(params.visuallyHiddenText, params.lang) -}}</span>{% endif %}</a>
34
+ <a href="{{ params.viewHref }}"{%if params.viewTarget%} target="{{ params.viewTarget }}"{% endif %}>{{viewLabel}}{%if params.visuallyHiddenText%}<span class="govcy-visually-hidden"> {{- govcyLocalizeContent(params.visuallyHiddenText, params.lang) -}}</span>{% endif %}</a>
33
35
  {#- render delete -#}
34
- <a class="govcy-ml-3" href="{{ params.deleteHref }}">{{deleteLabel}}{%if params.visuallyHiddenText%}<span class="govcy-visually-hidden"> {{- govcyLocalizeContent(params.visuallyHiddenText, params.lang) -}}</span>{% endif %}</a>
36
+ <a class="govcy-ml-3" href="{{ params.deleteHref }}"{%if params.deleteTarget%} target="{{ params.deleteTarget }}"{% endif %}>{{deleteLabel}}{%if params.visuallyHiddenText%}<span class="govcy-visually-hidden"> {{- govcyLocalizeContent(params.visuallyHiddenText, params.lang) -}}</span>{% endif %}</a>
35
37
  {% if params.name -%}
36
38
  <input type="hidden" name="{{ params.name }}Attachment[fileId]" value="{{ params.fileId }}">
37
39
  <input type="hidden" name="{{ params.name }}Attachment[sha256]" value="{{ params.sha256 }}">
@@ -162,115 +162,122 @@ To use this template you need to pass the following data:
162
162
  {% endif %}
163
163
  </head>
164
164
  <body>
165
- <!--bodyStart-->
166
- <section class="govcy-container-fluid" id="bodyStartContainer">
167
- <a href="#mainContainer" class="govcy-skip-link">{%- if site.lang=='el' -%}Μεταφορά στο κεντρικό περιεχόμενο{%- else -%}Skip to main content{%- endif -%}</a>
168
- {% block bodyStart %}{% endblock %}
169
- </section>
165
+ <div id="govcy--body">
166
+ <!--bodyStart-->
167
+ <section class="govcy-container-fluid" id="bodyStartContainer">
168
+ <a href="#mainContainer" class="govcy-skip-link">{%- if site.lang=='el' -%}Μεταφορά στο κεντρικό περιεχόμενο{%- else -%}Skip to main content{%- endif -%}</a>
169
+ {% block bodyStart %}{% endblock %}
170
+ </section>
170
171
 
171
- <!--Header-->
172
- <header class="govcy-header govcy-d-print-none" id="headerContainer">
173
- {% block userName %}{% endblock %}
174
- {% block header %}
175
- <div class="govcy-header-main-area">
176
- <div class="govcy-container govcy-main-area-items">
177
- <div class="govcy-navigation-container">
178
- <div class="govcy-service-container">
179
- <a href="https://gov.cy" class="govcy-logo" title="Go to the gov.cy homepage"><img alt="gov.cy Logo"></a>
180
- <span class="govcy-service-name">{{ govcyLocalizeContent(site.headerTitle, site.lang) }}</span>
172
+ <!--Header-->
173
+ <header class="govcy-header govcy-d-print-none" id="headerContainer">
174
+ {% block userName %}{% endblock %}
175
+ {% block header %}
176
+ <div class="govcy-header-main-area">
177
+ <div class="govcy-container govcy-main-area-items">
178
+ <div class="govcy-navigation-container">
179
+ <div class="govcy-service-container">
180
+ <a href="https://gov.cy" class="govcy-logo" title="Go to the gov.cy homepage"><img alt="gov.cy Logo"></a>
181
+ <span class="govcy-service-name">{{ govcyLocalizeContent(site.headerTitle, site.lang) }}</span>
182
+ </div>
183
+ {%- if site.languages -%}
184
+ <ul class="govcy-menu-items">
185
+ {%- for iLang in site.languages %}
186
+ <li class="govcy-desktop-menu-only"><span><a href="{{ iLang.href }}"
187
+ class="govcy-menu-item{% if iLang.code == site.lang %} active{% endif %}"
188
+ {% if iLang.code == site.lang %} aria-current="true"{% endif %}
189
+ aria-label="{{ iLang.alt }}" lang="{{ iLang.code }}">{{ iLang.label }}</a></span>
190
+ </li>{%- endfor %}
191
+ <li class="govcy-mobile-menu govcy-mobile-menu-only govcy-dropdown govcy-ms-auto"><span><a href="#" class="govcy-menu-item govcy-expand-btn">{{ govcyLocalizeContent(pageData.menu, site.lang) }}</a></span></li>
192
+ </ul>
193
+ {%- endif %}
181
194
  </div>
182
- {%- if site.languages -%}
183
- <ul class="govcy-menu-items">
184
- {%- for iLang in site.languages %}
185
- <li class="govcy-desktop-menu-only"><span><a href="{{ iLang.href }}"
186
- class="govcy-menu-item{% if iLang.code == site.lang %} active{% endif %}"
187
- {% if iLang.code == site.lang %} aria-current="true"{% endif %}
188
- aria-label="{{ iLang.alt }}" lang="{{ iLang.code }}">{{ iLang.label }}</a></span>
189
- </li>{%- endfor %}
190
- <li class="govcy-mobile-menu govcy-mobile-menu-only govcy-dropdown govcy-ms-auto"><span><a href="#" class="govcy-menu-item govcy-expand-btn">{{ govcyLocalizeContent(pageData.menu, site.lang) }}</a></span></li>
191
- </ul>
192
- {%- endif %}
193
195
  </div>
194
196
  </div>
195
- </div>
196
197
 
197
- {%- if site.languages -%}
198
- <div class="govcy-header-menu-area">
199
- <nav class="govcy-mainmenu" aria-label="{{ govcyLocalizeContent(pageData.menu, site.lang) }}">
200
- <div class="govcy-container">
201
- <ul class="govcy-menu-items govcy-header-language-area govcy-mobile-menu-only">
202
- {%- for iLang in site.languages %}
203
- <li><a href="{{ iLang.href }}" class="govcy-menu-item{% if iLang.code == site.lang %} active{% endif %}" {% if iLang.code == site.lang %} aria-current="true"{% endif %} aria-label="{{ iLang.alt }}" lang="{{ iLang.code }}">{{ iLang.label }}</a></li>
204
- {%- endfor %}
205
- </ul>
198
+ {%- if site.languages -%}
199
+ <div class="govcy-header-menu-area">
200
+ <nav class="govcy-mainmenu" aria-label="{{ govcyLocalizeContent(pageData.menu, site.lang) }}">
201
+ <div class="govcy-container">
202
+ <ul class="govcy-menu-items govcy-header-language-area govcy-mobile-menu-only">
203
+ {%- for iLang in site.languages %}
204
+ <li><a href="{{ iLang.href }}" class="govcy-menu-item{% if iLang.code == site.lang %} active{% endif %}" {% if iLang.code == site.lang %} aria-current="true"{% endif %} aria-label="{{ iLang.alt }}" lang="{{ iLang.code }}">{{ iLang.label }}</a></li>
205
+ {%- endfor %}
206
+ </ul>
207
+ </div>
208
+ </nav>
209
+ </div>
210
+ {%- endif %}
211
+ {% endblock %}
212
+ </header>
213
+
214
+ <!--beforeMain-->
215
+ <section class="govcy-container" id="beforeMainContainer">
216
+ {% block beforeMain %}{% endblock %}
217
+ {% if site.isTesting %}
218
+ <div class="govcy-phase-banner">
219
+ <span class="govcy-tag">TESTING</span>
220
+ <span class="govcy-ml-2">{{ govcyLocalizeContent({"en": "This is not a real service. It is only used for testing purposes. Any submissions made through this service will be ignored", "el": "Αυτή δεν είναι πραγματική υπηρεσία. Χρησιμοποιείται μόνο για σκοπούς δοκιμών. Οποιεσδήποτε υποβολές γίνουν μέσω της υπηρεσίας αυτής θα αγνοηθούν."}, site.lang) }}</span>
206
221
  </div>
207
- </nav>
208
- </div>
209
- {%- endif %}
210
- {% endblock %}
211
- </header>
222
+ {% endif %}
223
+ </section>
212
224
 
213
- <!--beforeMain-->
214
- <section class="govcy-container" id="beforeMainContainer">
215
- {% block beforeMain %}{% endblock %}
216
- {% if site.isTesting %}
217
- <div class="govcy-phase-banner">
218
- <span class="govcy-tag">TESTING</span>
219
- <span class="govcy-ml-2">{{ govcyLocalizeContent({"en": "This is not a real service. It is only used for testing purposes. Any submissions made through this service will be ignored", "el": "Αυτή δεν είναι πραγματική υπηρεσία. Χρησιμοποιείται μόνο για σκοπούς δοκιμών. Οποιεσδήποτε υποβολές γίνουν μέσω της υπηρεσίας αυτής θα αγνοηθούν."}, site.lang) }}</span>
225
+ <!--main-->
226
+ <main class="govcy-container" id="mainContainer">
227
+ <div class="govcy-row">
228
+ <article class="govcy-col-{% if pageData.mainLayout=='max-width' %}12{% else %}8{% endif %}">
229
+ {% block main %}{% endblock %}
230
+ </article>
220
231
  </div>
221
- {% endif %}
222
- </section>
223
-
224
- <!--main-->
225
- <main class="govcy-container" id="mainContainer">
226
- <div class="govcy-row">
227
- <article class="govcy-col-{% if pageData.mainLayout=='max-width' %}12{% else %}8{% endif %}">
228
- {% block main %}{% endblock %}
229
- </article>
230
- </div>
231
- </main>
232
+ </main>
232
233
 
233
- <!-- Footer -->
234
- <footer class="govcy-footer govcy-d-print-none" id="footerContainer">
235
- {% block footer %}
236
- <div class="govcy-container">
237
- <div class="govcy-d-flex govcy-justify-content-between govcy-align-items-end govcy-flex-wrap">
238
- <div class="govcy-my-4">
239
- {%- if site.footerLinks %}
240
- <ul>
241
- {%- for iLink in site.footerLinks %}
242
- <li><a href="{{ iLink.href }}">{{ govcyLocalizeContent(iLink.label, site.lang) }}</a></li>
243
- {%- endfor %}
244
- </ul>
245
- {%- endif %}
246
- <div class="govcy-d-flex govcy-align-items-center govcy-flex-wrap">
247
- <span class="govcy-fs-2 govcy-fw-bold govcy-mr-6">gov.cy</span>
248
- <span class="govcy-mr-6 govcy-mt-2">&copy; {{ govcyLocalizeContent(site.copyrightText, site.lang) }}</span>
249
- {%- if site.footerIcons %}
250
- {% for footerIcon in site.footerIcons %}
251
- {#- src, alt and href are mandatory -#}
252
- {%- if footerIcon.src and footerIcon.alt and footerIcon.href -%}
253
- <a href="{{ govcyLocalizeContent(footerIcon.href, site.lang, true) }}"{% if footerIcon.target %} target="{{ footerIcon.target }}"{% endif %}{% if footerIcon.title %} title="{{ govcyLocalizeContent(footerIcon.title, site.lang) }}"{% endif %}>
254
- <img class="govcy-eu-logo govcy-mb-2{% if footerIcon.classes %} {{ footerIcon.classes }}{% endif %}" src="{{ govcyLocalizeContent(footerIcon.src, site.lang, true) }}" alt="{{ govcyLocalizeContent(footerIcon.alt, site.lang, true) }}"{% if footerIcon.style %} style="{{ govcyLocalizeContent(footerIcon.style, site.lang, true) }}"{% endif %}>
255
- </a>
256
- {%- endif %}
257
- {% endfor %}
234
+ <!-- Footer -->
235
+ <footer class="govcy-footer govcy-d-print-none" id="footerContainer">
236
+ {% block footer %}
237
+ <div class="govcy-container">
238
+ <div class="govcy-d-flex govcy-justify-content-between govcy-align-items-end govcy-flex-wrap">
239
+ <div class="govcy-my-4">
240
+ {%- if site.footerLinks %}
241
+ <ul>
242
+ {%- for iLink in site.footerLinks %}
243
+ <li><a href="{{ iLink.href }}">{{ govcyLocalizeContent(iLink.label, site.lang) }}</a></li>
244
+ {%- endfor %}
245
+ </ul>
258
246
  {%- endif %}
247
+ <div class="govcy-d-flex govcy-align-items-center govcy-flex-wrap">
248
+ <span class="govcy-fs-2 govcy-fw-bold govcy-mr-6">gov.cy</span>
249
+ <span class="govcy-mr-6 govcy-mt-2">&copy; {{ govcyLocalizeContent(site.copyrightText, site.lang) }}</span>
250
+ {%- if site.footerIcons %}
251
+ {% for footerIcon in site.footerIcons %}
252
+ {#- src, alt and href are mandatory -#}
253
+ {%- if footerIcon.src and footerIcon.alt and footerIcon.href -%}
254
+ <a href="{{ govcyLocalizeContent(footerIcon.href, site.lang, true) }}"{% if footerIcon.target %} target="{{ footerIcon.target }}"{% endif %}{% if footerIcon.title %} title="{{ govcyLocalizeContent(footerIcon.title, site.lang) }}"{% endif %}>
255
+ <img class="govcy-eu-logo govcy-mb-2{% if footerIcon.classes %} {{ footerIcon.classes }}{% endif %}" src="{{ govcyLocalizeContent(footerIcon.src, site.lang, true) }}" alt="{{ govcyLocalizeContent(footerIcon.alt, site.lang, true) }}"{% if footerIcon.style %} style="{{ govcyLocalizeContent(footerIcon.style, site.lang, true) }}"{% endif %}>
256
+ </a>
257
+ {%- endif %}
258
+ {% endfor %}
259
+ {%- endif %}
260
+ </div>
261
+ </div>
262
+ <div class="govcy-my-4">
263
+ <a href="https://gov.cy" class="govcy-footer-logo" title="Go to the gov.cy homepage"><img alt="gov.cy Logo"/></a>
259
264
  </div>
260
- </div>
261
- <div class="govcy-my-4">
262
- <a href="https://gov.cy" class="govcy-footer-logo" title="Go to the gov.cy homepage"><img alt="gov.cy Logo"/></a>
263
265
  </div>
264
266
  </div>
265
- </div>
266
- {% endblock %}
267
- </footer>
267
+ {% endblock %}
268
+ </footer>
268
269
 
269
- <!--bodyEnd-->
270
- <section class="govcy-container-fluid" id="bodyEndContainer">
271
- {% block bodyEnd %}{% endblock %}
272
- </section>
270
+ <!--bodyEnd-->
271
+ <section class="govcy-container-fluid" id="bodyEndContainer">
272
+ {% block bodyEnd %}{% endblock %}
273
+ </section>
274
+ </div>
275
+ <div id="govcy--afterBody">
276
+ {% block afterBody %}{% endblock %}
277
+ </div>
278
+ <!-- JS -->
273
279
  {%- if site.lang == 'en' -%}<script src="{{ site.cdn.dist }}/js/locales/govcy.datepicker.en.min.js"></script>{%- elseif site.lang == 'el' -%}<script src="{{ site.cdn.dist }}/js/locales/govcy.datepicker.el.min.js"></script>{%- endif -%}
274
280
  <script src="{{ site.cdn.dist }}/js/govcy.uds.min.js"{% if site.cdn.jsIntegrity %} integrity="{{ site.cdn.jsIntegrity }}" crossorigin="anonymous"{% endif %}></script>
281
+ {% block afterJS %}{% endblock %}
275
282
  </body>
276
283
  </html>