jekyll-theme-centos 2.52.0.beta.104 → 2.52.0.beta.106
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.
- checksums.yaml +4 -4
- data/_config.yml +2 -2
- data/_data/base/accordion_schema.yml +6 -0
- data/_data/base/announcement_schema.yml +1 -1
- data/_data/base/artwork_schema.yml +17 -3
- data/_data/base/bits_schema.yml +9 -4
- data/_data/base/breadcrumb_schema.yml +14 -0
- data/_data/base/breakingnews_schema.yml +1 -1
- data/_data/base/calendar_schema.yml +17 -2
- data/_data/base/card_schema.yml +2 -2
- data/_data/base/copyright_schema.yml +7 -17
- data/_data/base/copyvalue_schema.yml +4 -1
- data/_data/base/datatable_schema.yml +3 -3
- data/_data/base/download_schema.yml +42 -16
- data/_data/base/event_schema.yml +1 -1
- data/_data/base/footer_schema.yml +7 -6
- data/_data/base/highlight_schema.yml +7 -5
- data/_data/base/image_schema.yml +1 -1
- data/_data/base/link_schema.yml +13 -19
- data/_data/base/navbar_schema.yml +6 -0
- data/_data/base/preview_schema.yml +8 -4
- data/_data/base/project_schema.yml +4 -2
- data/_data/base/script_schema.yml +4 -4
- data/_data/base/shortcut_schema.yml +2 -2
- data/_data/base/social_schema.yml +2 -2
- data/_data/base/sponsors.yml +3 -2
- data/_data/base/sponsors_schema.yml +20 -0
- data/_data/base/title_schema.yml +14 -0
- data/_data/base/toc_schema.yml +16 -2
- data/_includes/base/accordion-item.html.liquid +11 -32
- data/_includes/base/accordion.html.liquid +3 -29
- data/_includes/base/announcement.html.liquid +8 -35
- data/_includes/base/artwork.html.liquid +5 -38
- data/_includes/base/backtotop.html.liquid +3 -42
- data/_includes/base/bits.html.liquid +26 -74
- data/_includes/base/breadcrumb.html.liquid +15 -49
- data/_includes/base/breakingnews.html.liquid +6 -43
- data/_includes/base/calendar-events.html.liquid +3 -37
- data/_includes/base/calendar-init.html.liquid +7 -63
- data/_includes/base/calendar.html.liquid +3 -34
- data/_includes/base/card.html.liquid +4 -44
- data/_includes/base/color-table.html.liquid +18 -4
- data/_includes/base/configuration_variables-default-cell.html.liquid +6 -50
- data/_includes/base/configuration_variables-nested.html.liquid +6 -7
- data/_includes/base/configuration_variables.html.liquid +9 -11
- data/_includes/base/content.html.liquid +7 -4
- data/_includes/base/copyright.html.liquid +8 -39
- data/_includes/base/copyvalue.html.liquid +3 -70
- data/_includes/base/datatable.html.liquid +4 -40
- data/_includes/base/download.html.liquid +12 -66
- data/_includes/base/download_architecture.html.liquid +29 -117
- data/_includes/base/download_commands.html.liquid +2 -14
- data/_includes/base/download_documentation.html.liquid +13 -47
- data/_includes/base/download_eol.html.liquid +5 -15
- data/_includes/base/download_filevalue.html.liquid +9 -49
- data/_includes/base/download_screenshots.html.liquid +10 -65
- data/_includes/base/download_sections.html.liquid +2 -19
- data/_includes/base/event.html.liquid +8 -63
- data/_includes/base/fontawesome.html.liquid +4 -38
- data/_includes/base/footer.html.liquid +9 -2
- data/_includes/base/head.html.liquid +6 -47
- data/_includes/base/highlight.html.liquid +4 -37
- data/_includes/base/image.html.liquid +5 -22
- data/_includes/base/link.html.liquid +38 -57
- data/_includes/base/locales.html.liquid +6 -26
- data/_includes/base/navbar.html.liquid +16 -45
- data/_includes/base/navindex.html.liquid +40 -111
- data/_includes/base/ogp.html.liquid +17 -83
- data/_includes/base/preview.html.liquid +18 -57
- data/_includes/base/project.html.liquid +4 -29
- data/_includes/base/shortcut.html.liquid +7 -37
- data/_includes/base/social.html.liquid +4 -42
- data/_includes/base/sponsors-cards.html.liquid +4 -55
- data/_includes/base/sponsors-carousel.html.liquid +11 -59
- data/_includes/base/sponsors-data.html.liquid +32 -0
- data/_includes/base/title.html.liquid +5 -42
- data/_includes/base/toc-generator.html.liquid +4 -0
- data/_includes/base/toc.html.liquid +28 -81
- data/_sass/base/_customization.scss +18 -0
- data/_sass/base/_preview.scss +5 -9
- data/assets/icons/favicon.ico +0 -0
- data/assets/js/base/backtotop.js +3 -3
- data/assets/js/base/copyvalue.js +15 -11
- data/assets/js/base/datatable.js +6 -13
- data/assets/js/base/highlight.js +46 -31
- metadata +2 -1
|
@@ -1,35 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
in the site's URL structure. Excludes locale codes from the visible trail.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- Automatic breadcrumb generation from page URL (no data config)
|
|
10
|
-
- Hierarchical path visualization using URL splitting
|
|
11
|
-
- Skips locale codes (e.g., /es/, /fr/) from visible breadcrumb
|
|
12
|
-
- Home link always appears first as root
|
|
13
|
-
- Current page title as active final item (non-clickable)
|
|
14
|
-
- URL reconstruction preserves locale prefix in links
|
|
15
|
-
|
|
16
|
-
Required Inputs:
|
|
17
|
-
- page.url: Current page URL path (may include locale prefix)
|
|
18
|
-
- page.original_url: URL without locale prefix (used for breadcrumb structure)
|
|
19
|
-
- page.title: Display text for active breadcrumb
|
|
20
|
-
|
|
21
|
-
Optional Inputs:
|
|
22
|
-
- with_breadcrumb_data.arialabel: aria-label for the <nav> element (default: "breadcrumb")
|
|
23
|
-
- column_class (include param): Bootstrap column class for the row wrapper (set by
|
|
24
|
-
the layout to keep this component aligned with the content column; defaults to "col")
|
|
25
|
-
- row_class (include param): Bootstrap class(es) for the row wrapper (set by
|
|
26
|
-
the layout to keep this component's row aligned with title, artwork, toc,
|
|
27
|
-
and content; defaults to "row mb-3")
|
|
28
|
-
|
|
29
|
-
Data Source Hierarchy:
|
|
30
|
-
- with_breadcrumb: include.with_breadcrumb → page.with_breadcrumb
|
|
31
|
-
- with_breadcrumb_data: include.data → page.with_breadcrumb_data → site.data.breadcrumb → site.data.base.breadcrumb
|
|
32
|
-
================================================================================
|
|
2
|
+
breadcrumb: renders a Home-rooted breadcrumb trail from the page URL, keeping the locale prefix in links; content.html.liquid sets row_class and column_class.
|
|
3
|
+
Data: include.data > page.with_breadcrumb_data > site.data.breadcrumb > site.data.base.breadcrumb
|
|
4
|
+
Schema: src/YAML/breadcrumb_schema.yml
|
|
33
5
|
{% endcomment %}
|
|
34
6
|
|
|
35
7
|
{%- assign with_breadcrumb = include.with_breadcrumb
|
|
@@ -46,39 +18,33 @@ Data Source Hierarchy:
|
|
|
46
18
|
|
|
47
19
|
{%- assign with_breadcrumb_schema = site.data.base.breadcrumb_schema.properties.with_breadcrumb_data.properties %}
|
|
48
20
|
|
|
49
|
-
{%- comment %}
|
|
21
|
+
{%- comment %} page.original_url is the URL without the jekyll-l10n locale prefix. {%- endcomment %}
|
|
50
22
|
{%- assign breadcrumb_url = page.original_url | default: page.url %}
|
|
51
23
|
|
|
52
|
-
{%- comment %}
|
|
24
|
+
{%- comment %} jekyll-l10n sets page.locale only on localized pages. {%- endcomment %}
|
|
53
25
|
{%- assign detected_locale = page.locale | default: 'en' %}
|
|
26
|
+
{%- if detected_locale == 'en' %}
|
|
27
|
+
{%- assign crumb_prefix = '' %}
|
|
28
|
+
{%- else %}
|
|
29
|
+
{%- assign crumb_prefix = detected_locale | prepend: '/' %}
|
|
30
|
+
{%- endif %}
|
|
54
31
|
|
|
55
|
-
{%- assign column_class = include.column_class | default:
|
|
56
|
-
{%- assign row_class = include.row_class | default:
|
|
32
|
+
{%- assign column_class = include.column_class | default: site.data.base.content_schema.properties.with_content_data.properties.col_class.default %}
|
|
33
|
+
{%- assign row_class = include.row_class | default: site.data.base.content_schema.properties.with_content_data.properties.row_class.default %}
|
|
57
34
|
|
|
58
35
|
<div class="{{ row_class }}">
|
|
59
36
|
<div class="{{ column_class }}">
|
|
60
|
-
<nav class="small" aria-label="{{ with_breadcrumb_data.arialabel | default: with_breadcrumb_schema.arialabel.default
|
|
37
|
+
<nav class="small" aria-label="{{ with_breadcrumb_data.arialabel | default: with_breadcrumb_schema.arialabel.default }}">
|
|
61
38
|
<ol class="breadcrumb mb-0">
|
|
62
|
-
{
|
|
63
|
-
{%- if detected_locale == 'en' or detected_locale == '' %}
|
|
64
|
-
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}/">Home</a></li>
|
|
65
|
-
{%- else %}
|
|
66
|
-
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}/{{ detected_locale }}/">Home</a></li>
|
|
67
|
-
{%- endif %}
|
|
39
|
+
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}{{ crumb_prefix }}/">Home</a></li>
|
|
68
40
|
|
|
69
41
|
{%- assign crumbs = breadcrumb_url | remove:'/index.html' | split: '/' %}
|
|
70
42
|
{%- for crumb in crumbs offset: 1 %}
|
|
71
43
|
{%- if forloop.last %}
|
|
72
44
|
<li class="breadcrumb-item active">{{ page.title }}</li>
|
|
73
45
|
{%- else %}
|
|
74
|
-
{%- comment %} Build URL with locale prefix if not English {%- endcomment %}
|
|
75
46
|
{%- assign crumb_limit = forloop.index | plus: 1 %}
|
|
76
|
-
{
|
|
77
|
-
{%- assign crumb_prefix = '' %}
|
|
78
|
-
{%- else %}
|
|
79
|
-
{%- assign crumb_prefix = detected_locale | prepend: '/' %}
|
|
80
|
-
{%- endif %}
|
|
81
|
-
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}{{ crumb_prefix }}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' | replace:'without-plugin/','without-plugins/' }}{% endfor %}">{{ crumb | replace:'-',' ' | remove:'.html' | capitalize }}</a></li>
|
|
47
|
+
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}{{ crumb_prefix }}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' }}{% endfor %}">{{ crumb | replace:'-',' ' | remove:'.html' | capitalize }}</a></li>
|
|
82
48
|
{%- endif %}
|
|
83
49
|
{%- endfor %}
|
|
84
50
|
</ol>
|
|
@@ -1,32 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
stacked alerts, colors, icons, and optional action links.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- Sticky positioning: stays visible during page scroll
|
|
10
|
-
- Stacking support: multiple alerts stack vertically
|
|
11
|
-
- Dynamic scroll offset calculation: prevents header hiding
|
|
12
|
-
- Icon and color support: visual categorization
|
|
13
|
-
- Optional action links: "Know more" button
|
|
14
|
-
|
|
15
|
-
Required Inputs:
|
|
16
|
-
- content: Alert message text/HTML
|
|
17
|
-
|
|
18
|
-
Optional Inputs:
|
|
19
|
-
- color: Alert color scheme (default: "primary")
|
|
20
|
-
- icon: Icon class for Font Awesome (default: "fa-solid fa-bullhorn")
|
|
21
|
-
- link: URL for "Know more" button (optional)
|
|
22
|
-
- data: Array of breaking news items
|
|
23
|
-
|
|
24
|
-
Data Source Hierarchy (priority):
|
|
25
|
-
1. include.data
|
|
26
|
-
2. page.with_breakingnews_data
|
|
27
|
-
3. site.data.breakingnews
|
|
28
|
-
4. site.data.base.breakingnews
|
|
29
|
-
================================================================================
|
|
2
|
+
breakingnews: renders a sticky stack of alerts, one per item, each with an optional "Know more" button.
|
|
3
|
+
Data: include.data > page.with_breakingnews_data > site.data.breakingnews > site.data.base.breakingnews
|
|
4
|
+
Schema: src/YAML/breakingnews_schema.yml
|
|
30
5
|
{% endcomment %}
|
|
31
6
|
|
|
32
7
|
{%- assign with_breakingnews = include.with_breakingnews
|
|
@@ -43,38 +18,26 @@ Data Source Hierarchy (priority):
|
|
|
43
18
|
|
|
44
19
|
{%- assign with_breakingnews_schema = site.data.base.breakingnews_schema.properties.with_breakingnews_data.items.properties %}
|
|
45
20
|
|
|
46
|
-
{%- comment %} === Presentation === {% endcomment %}
|
|
47
|
-
{%- assign breakingnews_alert_height = site.data.base.breakingnews_schema.properties.breakingnews_alert_height.default %}
|
|
48
|
-
{%- assign navbar_height = site.data.base.navbar_schema.properties.navbar_height.default %}
|
|
49
|
-
|
|
50
21
|
{%- if with_breakingnews_data.size > 0 %}
|
|
51
22
|
<div class="sticky-top sticky-top-breakingnews">
|
|
52
23
|
{% for item in with_breakingnews_data %}
|
|
53
|
-
|
|
54
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
55
|
-
{% if forloop.first %}
|
|
56
|
-
{% assign breakingnews_alerts_height = breakingnews_alert_height | plus: navbar_height %}
|
|
57
|
-
{% else %}
|
|
58
|
-
{% assign breakingnews_alerts_height = breakingnews_alerts_height | plus: breakingnews_alert_height %}
|
|
59
|
-
{% endif %}
|
|
60
24
|
{%- assign breakingnews_color = item.color | default: with_breakingnews_schema.color.default %}
|
|
61
25
|
{%- assign breakingnews_btn_class = "btn btn-sm text-nowrap btn-" | append: breakingnews_color %}
|
|
62
26
|
{%- assign breakingnews_icon = item.icon | default: with_breakingnews_schema.icon.default %}
|
|
63
|
-
|
|
64
|
-
{%-
|
|
27
|
+
{%- comment %} The pinned Liquid has no remove_last, so split/join drops the trailing "</p>" markdownify adds. {% endcomment %}
|
|
28
|
+
{%- assign breakingnews_content_html = item.content | markdownify | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip %}
|
|
65
29
|
<div class="breakingnews alert alert-{{ breakingnews_color }} p-2 rounded-0 m-0 border-start-0 border-end-0 shadow" role="alert">
|
|
66
30
|
<div class="container d-flex justify-content-between align-items-center">
|
|
67
31
|
<div class="me-3">
|
|
68
32
|
<div class="h6 mb-0"><i class="{{ breakingnews_icon }}"></i></div>
|
|
69
33
|
</div>
|
|
70
|
-
<p class="flex-fill text-start mb-0">{{
|
|
34
|
+
<p class="flex-fill text-start mb-0">{{ breakingnews_content_html }}</p>
|
|
71
35
|
{%- if item.link %}
|
|
72
36
|
<div>
|
|
73
37
|
{% include base/link.html.liquid
|
|
74
38
|
name = "Know more"
|
|
75
39
|
icon = "fa-solid fa-arrow-right"
|
|
76
40
|
icon_position = "end"
|
|
77
|
-
role = "button"
|
|
78
41
|
class = breakingnews_btn_class
|
|
79
42
|
color = breakingnews_color
|
|
80
43
|
link = item.link
|
|
@@ -1,41 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
as a JSON script tag, so a page can populate an Event Calendar instance
|
|
6
|
-
without hand-writing (and duplicating) a separate JS events array. Data
|
|
7
|
-
loading only — mapping this JSON into the Event Calendar library's own event
|
|
8
|
-
shape, and calling EventCalendar.create(), stays the responsibility of
|
|
9
|
-
whatever page or layout uses it (see calendar.html.liquid, which follows the
|
|
10
|
-
same "loading only" split for the library itself).
|
|
11
|
-
|
|
12
|
-
Design Logic:
|
|
13
|
-
- Data bridge only: re-emits with_event_data as JSON, no field mapping or
|
|
14
|
-
rendering — see calendar-init.html.liquid for the mapping/rendering step
|
|
15
|
-
- Shared data source: reuses event.html.liquid's exact fallback chain, so
|
|
16
|
-
both components always agree on the same resolved events
|
|
17
|
-
- JSON script tag output: consumable by inline JS without hand-duplicating
|
|
18
|
-
the events array
|
|
19
|
-
- Multi-instance support: "id" override lets multiple bridges coexist on
|
|
20
|
-
one page
|
|
21
|
-
|
|
22
|
-
Optional Inputs:
|
|
23
|
-
- id: script tag id (default: "centos-calendar-events") — override to run
|
|
24
|
-
more than one instance of this bridge on the same page (see
|
|
25
|
-
calendar-init.html.liquid, which derives a unique id per instance).
|
|
26
|
-
|
|
27
|
-
Data Source Hierarchy (priority) — identical to event.html.liquid, so this
|
|
28
|
-
bridge always reflects whatever with_event_data the page actually resolved:
|
|
29
|
-
1. include.data
|
|
30
|
-
2. page.with_event_data
|
|
31
|
-
3. site.data.event
|
|
32
|
-
4. site.data.base.event
|
|
33
|
-
|
|
34
|
-
Output: <script type="application/json" id="...">, holding the with_event_data
|
|
35
|
-
array unchanged (title, start, end, color, icon, link, description,
|
|
36
|
-
location) — see the calendar component's event data contract documentation
|
|
37
|
-
for how a page maps these fields into Event Calendar events.
|
|
38
|
-
================================================================================
|
|
2
|
+
calendar-events: renders the resolved event data as a JSON script tag for a calendar instance to read.
|
|
3
|
+
Data: include.data > page.with_event_data > site.data.event > site.data.base.event
|
|
4
|
+
Schema: src/YAML/event_schema.yml
|
|
39
5
|
{% endcomment %}
|
|
40
6
|
|
|
41
7
|
{%- assign with_event_data = include.data
|
|
@@ -1,63 +1,9 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
shape (see the calendar component's event data contract documentation) and
|
|
8
|
-
calls EventCalendar.create(). Configured entirely from with_calendar_data /
|
|
9
|
-
calendar_schema.yml, so customizing view, toolbar, or button labels is a
|
|
10
|
-
front matter change — no script editing required.
|
|
11
|
-
|
|
12
|
-
Design Logic:
|
|
13
|
-
- Composition: wires together the events bridge, a container element, and
|
|
14
|
-
the initialization script — each piece stays a separate, single-purpose
|
|
15
|
-
include
|
|
16
|
-
- Self-contained with graceful fallback: works standalone via
|
|
17
|
-
with_calendar_data.events, or falls back to the event component's
|
|
18
|
-
with_event_data when that's absent (see Event data source, below)
|
|
19
|
-
- Config-driven: view, toolbar, and button labels all come from
|
|
20
|
-
with_calendar_data — no script editing required
|
|
21
|
-
- Multi-instance support: a distinct "id" per include call renders
|
|
22
|
-
independent calendars on one page
|
|
23
|
-
- Security: blocks javascript:/data:/vbscript: URIs before eventClick
|
|
24
|
-
navigation
|
|
25
|
-
|
|
26
|
-
Required Inputs (per event item, from whichever event data source resolves
|
|
27
|
-
below — the init script below reads event.title/event.start directly):
|
|
28
|
-
- title: Event name/title
|
|
29
|
-
- start: Event start (YYYY-MM-DD for an all-day event, or
|
|
30
|
-
YYYY-MM-DDTHH:MM to give it a specific start time on that same day)
|
|
31
|
-
|
|
32
|
-
Optional Inputs:
|
|
33
|
-
- id: container element id (default: "centos-calendar")
|
|
34
|
-
- data: with_calendar_data override
|
|
35
|
-
- event_data: explicit per-instance event array — highest priority, mainly
|
|
36
|
-
for running multiple independent calendars on one page (see below).
|
|
37
|
-
Forwarded to calendar-events.html.liquid's own "data" param.
|
|
38
|
-
|
|
39
|
-
Data Source Hierarchy (priority) — identical to calendar.html.liquid:
|
|
40
|
-
1. include.data
|
|
41
|
-
2. page.with_calendar_data
|
|
42
|
-
3. site.data.calendar
|
|
43
|
-
4. site.data.base.calendar
|
|
44
|
-
|
|
45
|
-
Event data source (priority) — this is what makes the component
|
|
46
|
-
self-contained: a calendar-only page never has to touch with_event_data,
|
|
47
|
-
but pages that already use the event component keep working unchanged:
|
|
48
|
-
1. include.event_data — explicit override for this include call.
|
|
49
|
-
2. with_calendar_data.events — calendar-specific events, resolved above.
|
|
50
|
-
3. with_event_data — the event component's own data (via
|
|
51
|
-
calendar-events.html.liquid's own fallback chain: include.data (unused
|
|
52
|
-
here) → page.with_event_data → site.data.event → site.data.base.event).
|
|
53
|
-
|
|
54
|
-
Multiple instances per page: pass a distinct id to each include call. The
|
|
55
|
-
events bridge id is derived from it ("<id>-events"), so each instance's
|
|
56
|
-
event data (and the events script tag emitting it) stays independent. Pass
|
|
57
|
-
event_data (or a distinct with_calendar_data.events via data=) alongside a
|
|
58
|
-
distinct id when instances should show different events; omit both to have
|
|
59
|
-
every instance fall back to the same shared event source.
|
|
60
|
-
================================================================================
|
|
2
|
+
calendar-init: renders a calendar container, its events JSON, and the script that creates the Event Calendar instance.
|
|
3
|
+
Data config: include.data > page.with_calendar_data > site.data.calendar > site.data.base.calendar
|
|
4
|
+
Data events: include.event_data > with_calendar_data.events > page.with_event_data > site.data.event > site.data.base.event
|
|
5
|
+
Schema: src/YAML/calendar_schema.yml
|
|
6
|
+
Requires: base/calendar.html.liquid type="script" (the EventCalendar global)
|
|
61
7
|
{% endcomment %}
|
|
62
8
|
|
|
63
9
|
{%- assign with_calendar = include.with_calendar
|
|
@@ -76,8 +22,6 @@ every instance fall back to the same shared event source.
|
|
|
76
22
|
%}
|
|
77
23
|
|
|
78
24
|
{%- assign with_calendar_schema = site.data.base.calendar_schema.properties.with_calendar_data.properties %}
|
|
79
|
-
|
|
80
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
81
25
|
{%- assign calendar_view = with_calendar_data.view | default: with_calendar_schema.view.default %}
|
|
82
26
|
{%- assign calendar_toolbar_start = with_calendar_data.header_toolbar_start | default: with_calendar_schema.header_toolbar_start.default %}
|
|
83
27
|
{%- assign calendar_toolbar_center = with_calendar_data.header_toolbar_center | default: with_calendar_schema.header_toolbar_center.default %}
|
|
@@ -89,6 +33,7 @@ every instance fall back to the same shared event source.
|
|
|
89
33
|
{%- assign calendar_btn_today = with_calendar_data.button_text_today | default: with_calendar_schema.button_text_today.default %}
|
|
90
34
|
|
|
91
35
|
{%- assign calendar_events_data = include.event_data | default: with_calendar_data.events %}
|
|
36
|
+
{%- assign calendar_event_color = site.data.base.event_schema.properties.with_event_data.items.properties.color.default %}
|
|
92
37
|
|
|
93
38
|
{% include base/calendar-events.html.liquid id=calendar_events_id data=calendar_events_data %}
|
|
94
39
|
<div id="{{ calendar_id }}"></div>
|
|
@@ -113,7 +58,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
113
58
|
start: start,
|
|
114
59
|
end: end,
|
|
115
60
|
allDay: allDay,
|
|
116
|
-
backgroundColor: 'var(--bs-' + (event.color ||
|
|
61
|
+
backgroundColor: 'var(--bs-' + (event.color || {{ calendar_event_color | jsonify }}) + ')',
|
|
117
62
|
extendedProps: { url: event.link }
|
|
118
63
|
};
|
|
119
64
|
});
|
|
@@ -134,7 +79,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
134
79
|
},
|
|
135
80
|
events: events,
|
|
136
81
|
eventClick: function (info) {
|
|
137
|
-
// --- Security: block javascript:/data:/vbscript: URIs before navigation ---
|
|
138
82
|
var url = info.event.extendedProps.url;
|
|
139
83
|
var normalized = url ? String(url).replace(/[\x00-\x20]/g, '') : '';
|
|
140
84
|
if (url && !/^(javascript|data|vbscript):/i.test(normalized)) {
|
|
@@ -1,32 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
vkurko/calendar) from CDN with SRI integrity checks. Library loading only —
|
|
6
|
-
initializing a calendar instance (mounting an element and supplying its
|
|
7
|
-
events data) is the responsibility of whatever page or layout uses it.
|
|
8
|
-
================================================================================
|
|
9
|
-
|
|
10
|
-
Design Logic:
|
|
11
|
-
- Library loading only: does not mount or configure a calendar instance —
|
|
12
|
-
see calendar-init.html.liquid for that
|
|
13
|
-
- Split head/script output: "type" selects the CSS <link> (head) or JS
|
|
14
|
-
<script> (body) tag, capturing both fragments once and rendering by type
|
|
15
|
-
- CDN-hosted with Subresource Integrity (SRI): version-pinned, integrity-
|
|
16
|
-
checked delivery
|
|
17
|
-
|
|
18
|
-
Optional Inputs:
|
|
19
|
-
- type: "head" for CSS include, "script" for JavaScript
|
|
20
|
-
- version: Event Calendar version (e.g., "5.12.0")
|
|
21
|
-
- css_integrity, script_integrity: SRI integrity hashes
|
|
22
|
-
- data: Event Calendar configuration object
|
|
23
|
-
|
|
24
|
-
Data Source Hierarchy (priority):
|
|
25
|
-
1. include.data
|
|
26
|
-
2. page.with_calendar_data
|
|
27
|
-
3. site.data.calendar
|
|
28
|
-
4. site.data.base.calendar
|
|
29
|
-
================================================================================
|
|
2
|
+
calendar: loads the Event Calendar library from the CDN. head.html.liquid calls it with type="head" (CSS) and type="script" (JS).
|
|
3
|
+
Data: include.data > page.with_calendar_data > site.data.calendar > site.data.base.calendar
|
|
4
|
+
Schema: src/YAML/calendar_schema.yml
|
|
30
5
|
{% endcomment %}
|
|
31
6
|
|
|
32
7
|
{%- assign with_calendar = include.with_calendar
|
|
@@ -42,9 +17,6 @@ Data Source Hierarchy (priority):
|
|
|
42
17
|
{%- assign with_calendar_schema = site.data.base.calendar_schema.properties.with_calendar_data.properties %}
|
|
43
18
|
|
|
44
19
|
{%- if with_calendar %}
|
|
45
|
-
|
|
46
|
-
{%- comment %} === Presentation === {% endcomment %}
|
|
47
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
48
20
|
{%- assign calendar_version = with_calendar_data.version | default: with_calendar_schema.version.default %}
|
|
49
21
|
{%- assign calendar_css_integrity = with_calendar_data.css_integrity | default: with_calendar_schema.css_integrity.default %}
|
|
50
22
|
{%- assign calendar_script_integrity = with_calendar_data.script_integrity | default: with_calendar_schema.script_integrity.default %}
|
|
@@ -54,11 +26,8 @@ Data Source Hierarchy (priority):
|
|
|
54
26
|
{%- endcapture %}
|
|
55
27
|
|
|
56
28
|
{%- capture html_calendar_script %}
|
|
57
|
-
<!-- Event Calendar Library -->
|
|
58
29
|
<script src="https://cdn.jsdelivr.net/npm/@event-calendar/build@{{ calendar_version }}/dist/event-calendar.min.js" integrity="{{ calendar_script_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
59
30
|
{%- endcapture %}
|
|
60
|
-
|
|
61
|
-
{%- comment %} --- HTML --- {% endcomment %}
|
|
62
31
|
{%- assign type = include.type %}
|
|
63
32
|
{%- case type %}
|
|
64
33
|
{%- when "head" %}
|
|
@@ -1,37 +1,6 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Renders highly configurable card layouts with optional image,
|
|
5
|
-
icon, title, description, and action buttons.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- Modular design: each section is optional
|
|
10
|
-
- Capture-block approach: builds HTML fragments for reusability
|
|
11
|
-
- Conditional rendering: only renders sections with content
|
|
12
|
-
- Bootstrap flexbox-based layout for responsive design
|
|
13
|
-
- Reuses link component for action buttons
|
|
14
|
-
|
|
15
|
-
Optional Inputs:
|
|
16
|
-
- class: Card container CSS classes
|
|
17
|
-
- color: Color scheme for styling (default: "primary")
|
|
18
|
-
- image, icon, screenshot: Visual elements
|
|
19
|
-
- name, description: Text content, run through Liquid's `markdownify` filter
|
|
20
|
-
so inline Markdown (e.g. `` `code` `` spans) renders as HTML. The
|
|
21
|
-
paragraph wrapper kramdown adds is stripped, since each already renders
|
|
22
|
-
inside its own `<p>`.
|
|
23
|
-
- name_link: URL to wrap `name` in a link, rendered via
|
|
24
|
-
base/link.html.liquid. Empty by default (name renders as plain text).
|
|
25
|
-
- name_link_class: CSS classes for the name_link anchor (e.g. "link-dark").
|
|
26
|
-
Ignored when name_link is empty; when left empty, falls back to
|
|
27
|
-
base/link.html.liquid's own color-driven default styling, driven by this
|
|
28
|
-
card's own `color` parameter (not a hardcoded "primary").
|
|
29
|
-
- actions: Array of action buttons [{name, link, icon}]
|
|
30
|
-
- All image/icon/name/description have customizable CSS classes
|
|
31
|
-
|
|
32
|
-
Data Source:
|
|
33
|
-
- Derived from include parameters only
|
|
34
|
-
================================================================================
|
|
2
|
+
card: renders a card with an optional image, icon, name, description, screenshot, and action buttons.
|
|
3
|
+
Schema: src/YAML/card_schema.yml
|
|
35
4
|
{% endcomment %}
|
|
36
5
|
|
|
37
6
|
{%- assign with_card_schema = site.data.base.card_schema.properties %}
|
|
@@ -56,11 +25,8 @@ Data Source:
|
|
|
56
25
|
{%- assign card_description_class = include.description_class | default: with_card_schema.description_class.default %}
|
|
57
26
|
{%- assign card_actions = include.actions | default: with_card_schema.actions.default %}
|
|
58
27
|
{%- assign card_actions_class = include.actions_class | default: with_card_schema.actions_class.default %}
|
|
59
|
-
{%- assign card_actions_btn_class = include.actions_btn_class | default:
|
|
60
|
-
|
|
61
|
-
{%- comment %} === Presentation === {% endcomment %}
|
|
28
|
+
{%- assign card_actions_btn_class = include.actions_btn_class | default: with_card_schema.actions_btn_class.default | replace: "{color}", card_color %}
|
|
62
29
|
|
|
63
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
64
30
|
{%- capture html_card_screenshot -%}
|
|
65
31
|
{% if card_screenshot != "" %}
|
|
66
32
|
<div class="bg-{{ card_color }} rounded mb-3">
|
|
@@ -81,11 +47,7 @@ Data Source:
|
|
|
81
47
|
{% endif %}
|
|
82
48
|
{%- endcapture %}
|
|
83
49
|
|
|
84
|
-
{%- comment %}
|
|
85
|
-
filter, so the trailing "</p>" kramdown adds is stripped via split/join
|
|
86
|
-
instead: splitting on "</p>" drops the trailing empty segment left by the
|
|
87
|
-
closing tag at the very end of the string, and joining the remaining parts
|
|
88
|
-
back with "</p>" reconstructs everything except that final occurrence. {% endcomment %}
|
|
50
|
+
{%- comment %} The pinned Liquid has no remove_last, so split/join drops the trailing "</p>" kramdown adds. {% endcomment %}
|
|
89
51
|
{%- capture card_name_markdown -%}{{ card_name | markdownify }}{%- endcapture -%}
|
|
90
52
|
{%- assign card_name_html = card_name_markdown | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip -%}
|
|
91
53
|
|
|
@@ -110,7 +72,6 @@ Data Source:
|
|
|
110
72
|
{%- for action in card_actions %}
|
|
111
73
|
{%- include base/link.html.liquid
|
|
112
74
|
class = card_actions_btn_class
|
|
113
|
-
role = "button"
|
|
114
75
|
name = action.name
|
|
115
76
|
link = action.link
|
|
116
77
|
icon = action.icon
|
|
@@ -121,7 +82,6 @@ Data Source:
|
|
|
121
82
|
{% endif %}
|
|
122
83
|
{%- endcapture %}
|
|
123
84
|
|
|
124
|
-
{%- comment %} --- HTML --- {% endcomment -%}
|
|
125
85
|
<div class="d-flex{% if card_class != "" %} {{ card_class }}{% endif %}">
|
|
126
86
|
{{- html_card_image | strip -}}
|
|
127
87
|
{{- html_card_icon | strip -}}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
color-table: renders a table with one row per color in include.collection, with its color values, WCAG results, and a WebAIM check link; each value is a copy button when page.with_copyvalue is on, or plain code otherwise.
|
|
3
|
+
Schema: src/YAML/color_schema.yml
|
|
4
|
+
{% endcomment %}
|
|
5
|
+
{%- comment %} trim leading output {% endcomment -%}
|
|
1
6
|
<div class="table-responsive bg-light border rounded mb-3">
|
|
2
7
|
<table class="table dataTable">
|
|
3
8
|
<thead>
|
|
@@ -13,6 +18,11 @@
|
|
|
13
18
|
</tr>
|
|
14
19
|
</thead>
|
|
15
20
|
<tbody>
|
|
21
|
+
{%- comment %} Same gate as base/copyvalue.html.liquid: no copy script means no copy buttons. {% endcomment %}
|
|
22
|
+
{%- assign color_table_copy = false %}
|
|
23
|
+
{%- if page.with_copyvalue %}
|
|
24
|
+
{%- assign color_table_copy = true %}
|
|
25
|
+
{%- endif %}
|
|
16
26
|
{%- for item in include.collection %}
|
|
17
27
|
{%- if include.name_field == "full_name" %}
|
|
18
28
|
{%- assign _item_name = item.full_name | remove: '$' %}
|
|
@@ -22,12 +32,16 @@
|
|
|
22
32
|
{%- assign _webaim_fcolor = item.text_color_hex | remove: '#' | upcase %}
|
|
23
33
|
{%- assign _webaim_bcolor = item.hex | remove: '#' | upcase %}
|
|
24
34
|
{%- capture _webaim_link %}https://webaim.org/resources/contrastchecker/?fcolor={{ _webaim_fcolor }}&bcolor={{ _webaim_bcolor }}{%- endcapture %}
|
|
35
|
+
{%- assign text_color_tooltip = item.text_color %}
|
|
36
|
+
{%- if item.text_color == "Black" %}
|
|
37
|
+
{%- assign text_color_tooltip = item.text_color | append: " — near-black brand color, not literal black" %}
|
|
38
|
+
{%- endif %}
|
|
25
39
|
<tr>
|
|
26
40
|
<td class="text-nowrap">{{ _item_name }}</td>
|
|
27
|
-
<td class="text-nowrap"><i class="fas fa-circle fa-xl" style="color: {{ item.hex }}"></i
|
|
28
|
-
<td class="text-nowrap"
|
|
29
|
-
<td class="text-nowrap"
|
|
30
|
-
<td class="text-nowrap"
|
|
41
|
+
<td class="text-nowrap"><i class="fas fa-circle fa-xl" style="color: {{ item.hex }}"></i>{% if color_table_copy %}<button type="button" class="copy-btn focus-ring" data-bs-toggle="tooltip" data-bs-title="Copy hex value" data-copy-value="{{ item.hex }}" aria-label="Copy hex value {{ item.hex }}"><code>{{ item.hex }}</code> <span class="fa-regular fa-copy"></span></button>{% else %}<code>{{ item.hex }}</code>{% endif %}</td>
|
|
42
|
+
<td class="text-nowrap">{% if color_table_copy %}<button type="button" class="copy-btn focus-ring" data-bs-toggle="tooltip" data-bs-title="Copy RGB value" data-copy-value="{{ item.rgb }}" aria-label="Copy RGB value {{ item.rgb }}"><code>{{ item.rgb }}</code> <span class="fa-regular fa-copy"></span></button>{% else %}<code>{{ item.rgb }}</code>{% endif %}</td>
|
|
43
|
+
<td class="text-nowrap">{% if color_table_copy %}<button type="button" class="copy-btn focus-ring" data-bs-toggle="tooltip" data-bs-title="Copy HSV value" data-copy-value="{{ item.hsv }}" aria-label="Copy HSV value {{ item.hsv }}"><code>{{ item.hsv }}</code> <span class="fa-regular fa-copy"></span></button>{% else %}<code>{{ item.hsv }}</code>{% endif %}</td>
|
|
44
|
+
<td class="text-nowrap"><span class="badge {{ item.text_badge }}" data-bs-toggle="tooltip" data-bs-title="{{ text_color_tooltip }}"><span aria-hidden="true">{{ item.text_color | slice: 0, 1 }}</span><span class="visually-hidden">{{ item.text_color }}</span></span> {% if color_table_copy %}<button type="button" class="copy-btn focus-ring" data-bs-toggle="tooltip" data-bs-title="Copy text color hex value" data-copy-value="{{ item.text_color_hex }}" aria-label="Copy text color hex value {{ item.text_color_hex }}"><code>{{ item.text_color_hex }}</code> <span class="fa-regular fa-copy"></span></button>{% else %}<code>{{ item.text_color_hex }}</code>{% endif %}</td>
|
|
31
45
|
<td class="text-nowrap"><code>{{ item.contrast_ratio | remove: '`' }}</code> {% include base/link.html.liquid link=_webaim_link target="_blank" class="text-decoration-none" icon="fas fa-external-link-alt" data_bs_toggle="tooltip" data_bs_title="Verify with WebAIM" aria_label="Verify contrast ratio with WebAIM" %}</td>
|
|
32
46
|
<td class="text-nowrap">{% if item.wcag_2_2_aa %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Exceeds WCAG 2.2 AA standard (4.5:1 minimum)"><i class="fas fa-circle-check text-success"></i></span>{% else %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Underperforms WCAG 2.2 AA standard (4.5:1 minimum)"><i class="fas fa-circle-xmark text-danger"></i></span>{% endif %} <code>{{ item.wcag_2_2_aa_margin | remove: '`' }}</code></td>
|
|
33
47
|
<td class="text-nowrap">{% if item.wcag_2_2_aaa %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Exceeds WCAG 2.2 AAA standard (7.0:1 minimum)"><i class="fas fa-circle-check text-success"></i></span>{% else %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Underperforms WCAG 2.2 AAA standard (7.0:1 minimum)"><i class="fas fa-circle-xmark text-danger"></i></span>{% endif %} <code>{{ item.wcag_2_2_aaa_margin | remove: '`' }}</code></td>
|
|
@@ -1,56 +1,10 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
Template: Configuration Variables — Default Cell
|
|
4
|
-
Purpose: Renders one Default-column cell's contents. Included from both
|
|
5
|
-
configuration_variables.html.liquid (top-level table) and
|
|
6
|
-
configuration_variables-nested.html.liquid (recursive nested tables) so every
|
|
7
|
-
schema-driven Name/Type/Default/Description table presents a long default
|
|
8
|
-
value the same way, with one shared rule instead of two copies that could
|
|
9
|
-
drift apart.
|
|
10
|
-
|
|
11
|
-
Behavior:
|
|
12
|
-
- Liquid's `default` filter treats `false` as blank, so a plain
|
|
13
|
-
`include.default | default: "—"` would hide a real `false` value. This nil
|
|
14
|
-
check keeps `false` distinct from "no default set".
|
|
15
|
-
- An explicit `default: ""` (e.g. download_schema.yml's `iso`/`rpm`/`link`
|
|
16
|
-
URLs, whose description already says "Empty hides the ... button") is a
|
|
17
|
-
real, intentional default — not the same as "no default declared". Left to
|
|
18
|
-
fall through to `<code>{{ default_value }}</code>`, it renders as a visibly
|
|
19
|
-
empty inline code element: sighted users read it as a rendering glitch, and
|
|
20
|
-
a screen reader announces an empty `<code>` with no indication a value is
|
|
21
|
-
even there, which fails WCAG 1.3.1 (the "default is an empty string" fact
|
|
22
|
-
is conveyed by absence alone, not programmatically). It gets its own
|
|
23
|
-
`<code>""</code>` rendering plus a `.visually-hidden` "(empty string)" note,
|
|
24
|
-
so the cell reads as a value distinct from both `—` (nil) and a populated
|
|
25
|
-
default.
|
|
26
|
-
- Every real default value renders as `<code>`, the same as the Name and
|
|
27
|
-
Type columns — a config default is a literal value, not prose, so it's
|
|
28
|
-
shown raw (escaped, not markdownified) rather than interpreted as
|
|
29
|
-
Markdown. The nil placeholder `—` is left plain, since it isn't a value.
|
|
30
|
-
- A default value with a long unbroken run of characters (an SRI hash, a
|
|
31
|
-
CDN URL, ...) forces its column wide under normal table auto-layout, at
|
|
32
|
-
the Description column's expense, regardless of how many columns the
|
|
33
|
-
table has. Truncating it into a fixed-width single-line box instead would
|
|
34
|
-
need scrolling or selecting to read the rest, which runs against WCAG
|
|
35
|
-
1.4.10 Reflow. Past `long_value_threshold` characters with no space to
|
|
36
|
-
wrap at, the *longest unbroken token* (not the value's total length —
|
|
37
|
-
see below) gets the extra `.long-value` class (breaks at any character
|
|
38
|
-
via `overflow-wrap: anywhere`, see _customization.scss): the full value
|
|
39
|
-
stays visible with no interaction required, and it takes only the width
|
|
40
|
-
it actually needs.
|
|
41
|
-
- Checked by longest unbroken token, not total length: a value can be long
|
|
42
|
-
overall but still wrap fine on its own spaces (a class list, a sentence);
|
|
43
|
-
what actually forces a column wide is one run with nowhere to break.
|
|
44
|
-
- Only `type: string` values are checked for length — a boolean or number
|
|
45
|
-
is never "long", and running `split`/`size` on a non-string isn't
|
|
46
|
-
reliable.
|
|
47
|
-
|
|
48
|
-
Required Inputs:
|
|
49
|
-
- default: The raw prop_details.default value (may be nil, false, a string, etc.)
|
|
50
|
-
- type: The property's schema `type`, e.g. "string", "boolean".
|
|
51
|
-
================================================================================
|
|
2
|
+
configuration_variables-default-cell: renders one Default cell as a dash, an empty-string marker, or the escaped value in code, letting long unbroken values wrap.
|
|
52
3
|
{% endcomment %}
|
|
53
4
|
|
|
5
|
+
{% comment %} Include variables persist between calls, so reset the flag before any branch sets it. {% endcomment -%}
|
|
6
|
+
{% assign is_empty_string = false -%}
|
|
7
|
+
{% comment %} == nil keeps an explicit false default distinct from no default; the default filter treats false as blank. {% endcomment -%}
|
|
54
8
|
{% if include.default == nil %}
|
|
55
9
|
{% assign default_value = "—" %}
|
|
56
10
|
{% elsif include.default == "" %}
|
|
@@ -60,6 +14,7 @@ Required Inputs:
|
|
|
60
14
|
{% assign default_value = include.default %}
|
|
61
15
|
{% endif %}
|
|
62
16
|
|
|
17
|
+
{% comment %} Only the longest unbroken token of a string forces its column wide; past the threshold it gets .long-value so it wraps. {% endcomment -%}
|
|
63
18
|
{% assign long_value_threshold = 24 %}
|
|
64
19
|
{% assign max_token_length = 0 %}
|
|
65
20
|
{% if include.type == "string" and default_value != "—" %}
|
|
@@ -72,6 +27,7 @@ Required Inputs:
|
|
|
72
27
|
{% endfor %}
|
|
73
28
|
{% endif %}
|
|
74
29
|
|
|
30
|
+
{% comment %} An explicit "" default gets a visible marker and a screen-reader note instead of an empty code element. {% endcomment -%}
|
|
75
31
|
{% if default_value == "—" %}
|
|
76
32
|
—
|
|
77
33
|
{% elsif is_empty_string %}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
configuration_variables-nested: renders one table for a nested property, then recurses into its own nested properties.
|
|
3
|
+
Schema: src/YAML/configuration_variables_schema.yml
|
|
4
4
|
{% endcomment %}
|
|
5
5
|
|
|
6
6
|
{% assign current_properties = include.properties %}
|
|
@@ -8,10 +8,10 @@ others. Requires two distinct loops for valid HTML structure.
|
|
|
8
8
|
{% assign current_level = include.level | plus: 0 %}
|
|
9
9
|
{% assign type_desc = include.type_desc %}
|
|
10
10
|
|
|
11
|
-
{% assign col_name = include.col_name
|
|
12
|
-
{% assign col_type = include.col_type
|
|
13
|
-
{% assign col_default = include.col_default
|
|
14
|
-
{% assign col_description = include.col_description
|
|
11
|
+
{% assign col_name = include.col_name %}
|
|
12
|
+
{% assign col_type = include.col_type %}
|
|
13
|
+
{% assign col_default = include.col_default %}
|
|
14
|
+
{% assign col_description = include.col_description %}
|
|
15
15
|
|
|
16
16
|
{% assign columns = include.columns %}
|
|
17
17
|
|
|
@@ -20,7 +20,6 @@ others. Requires two distinct loops for valid HTML structure.
|
|
|
20
20
|
{% assign table_classes = "table dataTable" %}
|
|
21
21
|
{% assign table_id = parent_name | slugify | append: '-nested-' | append: current_level %}
|
|
22
22
|
|
|
23
|
-
{% comment %} Loop 1: render this table {% endcomment %}
|
|
24
23
|
<p class="my-3">The <code>{{ parent_name }}</code> variable is a {{ type_desc }} with the following properties:</p>
|
|
25
24
|
|
|
26
25
|
<table id="{{ table_id }}" class="{{ table_classes }}">
|