@ons/design-system 74.0.0-next.1 → 74.0.0-next.11
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 +15 -3
- package/components/access-code/example-access-code-error.njk +2 -2
- package/components/access-code/example-access-code.njk +2 -2
- package/components/address-input/_macro.njk +6 -6
- package/components/address-input/_macro.spec.js +0 -3
- package/components/address-input/autosuggest.address.spec.js +23 -0
- package/components/address-output/_macro.njk +1 -1
- package/components/announcement-banner/_announcement-banner.scss +5 -0
- package/components/autosuggest/_autosuggest.scss +8 -0
- package/components/autosuggest/autosuggest.ui.js +11 -5
- package/components/back-to-top/_back-to-top.scss +7 -0
- package/components/back-to-top/_macro.njk +1 -1
- package/components/back-to-top/example-full-page-back-to-top.njk +1 -1
- package/components/breadcrumbs/_breadcrumbs.scss +4 -7
- package/components/breadcrumbs/_macro.njk +29 -25
- package/components/breadcrumbs/_macro.spec.js +39 -0
- package/components/breadcrumbs/example-breadcrumbs-wide.njk +52 -0
- package/components/char-check-limit/_macro.njk +16 -14
- package/components/chart/_chart.scss +0 -9
- package/components/chart/_macro.njk +96 -128
- package/components/chart/_macro.spec.js +43 -28
- package/components/chart/example-area-chart-with-axis-min-and-max-values.njk +6 -3
- package/components/chart/example-area-chart.njk +6 -3
- package/components/chart/example-bar-chart-with-annotations.njk +6 -3
- package/components/chart/example-bar-chart-with-axis-min-and-max-values.njk +6 -3
- package/components/chart/example-bar-chart-with-point-range-and-reference-line-annotations.njk +6 -3
- package/components/chart/example-bar-chart.njk +6 -3
- package/components/chart/example-bar-with-confidence-levels.njk +6 -3
- package/components/chart/example-clustered-bar-chart.njk +6 -3
- package/components/chart/example-clustered-column-chart.njk +6 -3
- package/components/chart/example-column-chart-with-annotations.njk +6 -3
- package/components/chart/example-column-chart-with-axis-min-and-max-values.njk +6 -3
- package/components/chart/example-column-chart-with-custom-reference-line-value.njk +6 -3
- package/components/chart/example-column-chart-with-range-annotations.njk +6 -3
- package/components/chart/example-column-chart-with-reference-line-annotations.njk +6 -3
- package/components/chart/example-column-chart.njk +6 -3
- package/components/chart/example-column-with-confidence-levels.njk +6 -3
- package/components/chart/example-column-with-line-chart.njk +6 -3
- package/components/chart/example-iframe-chart.njk +6 -3
- package/components/chart/example-line-chart-with-annotations.njk +6 -3
- package/components/chart/example-line-chart-with-axis-min-and-max-values.njk +6 -3
- package/components/chart/example-line-chart-with-custom-reference-line-value.njk +6 -3
- package/components/chart/example-line-chart-with-label-format.njk +6 -3
- package/components/chart/example-line-chart-with-markers.njk +6 -3
- package/components/chart/example-line-chart-with-range-annotations-inside.njk +6 -3
- package/components/chart/example-line-chart-with-range-annotations-outside-left-right.njk +6 -3
- package/components/chart/example-line-chart-with-range-annotations-outside-top-bottom.njk +6 -3
- package/components/chart/example-line-chart-with-reference-line-annotations.njk +6 -3
- package/components/chart/example-line-chart.njk +6 -3
- package/components/chart/example-scatter-chart-with-axis-min-and-max-values.njk +6 -3
- package/components/chart/example-scatter-chart.njk +6 -3
- package/components/chart/example-stacked-bar-chart.njk +6 -3
- package/components/chart/example-stacked-column-chart.njk +6 -3
- package/components/details/_details.scss +9 -0
- package/components/details/example-details-with-warning.njk +1 -1
- package/components/document-list/_macro.njk +2 -2
- package/components/document-list/_macro.spec.js +55 -0
- package/components/featured-article/_macro.njk +6 -40
- package/components/featured-article/example-featured-article-with-chart.njk +19 -14
- package/components/featured-article/example-featured-article-with-image.njk +12 -7
- package/components/featured-article/featured-article.scss +1 -1
- package/components/featured-article/macro.spec.js +46 -69
- package/components/feedback/_macro.njk +4 -1
- package/components/feedback/_macro.spec.js +1 -1
- package/components/figure/_figure.scss +32 -0
- package/components/figure/_macro.njk +98 -0
- package/components/figure/_macro.spec.js +520 -0
- package/components/figure/example-figure-heading-level-2.njk +34 -0
- package/components/figure/example-figure-with-div.njk +29 -0
- package/components/figure/example-figure-without-footer.njk +12 -0
- package/components/figure/example-figure-without-header.njk +24 -0
- package/components/figure/example-figure.njk +34 -0
- package/components/footer/_macro.njk +5 -2
- package/components/header/_header.scss +1 -3
- package/components/header/_macro.njk +8 -4
- package/components/header/_macro.spec.js +48 -0
- package/components/hero/_hero.scss +4 -0
- package/components/hero/_macro.njk +3 -2
- package/components/hero/_macro.spec.js +36 -0
- package/components/hero/example-hero-dark-wide.njk +17 -0
- package/components/hero/example-hero-dark-with-external-breadcrumbs.njk +17 -21
- package/components/hero/example-hero-default-full-width.njk +16 -0
- package/components/hero/example-hero-default-with-external-breadcrumbs.njk +165 -169
- package/components/hero/example-hero-grey-with-external-breadcrumbs.njk +207 -211
- package/components/hero/example-hero-navy-blue-with-external-breadcrumbs.njk +163 -167
- package/components/hero/example-hero-pale-blue-with-external-breadcrumbs.njk +165 -169
- package/components/image/_image.scss +0 -7
- package/components/image/_macro.njk +25 -14
- package/components/image/_macro.spec.js +122 -7
- package/components/image/example-image-with-figure-fields.njk +25 -0
- package/components/input/_input.scss +4 -0
- package/components/input/_macro.njk +4 -1
- package/components/label/_label.scss +3 -0
- package/components/list/_list.scss +5 -0
- package/components/list/_macro.njk +1 -0
- package/components/list/_macro.spec.js +16 -0
- package/components/message-list/_message-list.scss +2 -0
- package/components/panel/_macro.njk +1 -1
- package/components/panel/_panel.scss +8 -0
- package/components/panel/example-panel-bare.njk +1 -1
- package/components/phase-banner/_phase-banner.scss +1 -0
- package/components/question/example-question-ccs.njk +1 -1
- package/components/question/example-question-fieldset.njk +1 -1
- package/components/question/example-question-interviewer-note.njk +1 -1
- package/components/question/example-question-no-fieldset.njk +1 -1
- package/components/quote/_macro.njk +1 -1
- package/components/relationships/example-relationships-error.njk +1 -1
- package/components/relationships/example-relationships-you.njk +1 -1
- package/components/relationships/example-relationships.njk +1 -1
- package/components/skip-to-content/_macro.njk +1 -1
- package/components/skip-to-content/_skip.scss +8 -0
- package/components/table/_macro.njk +138 -111
- package/components/table/_macro.spec.js +175 -16
- package/components/table/_table.scss +6 -1
- package/components/table/example-table-basic-no-caption.njk +46 -0
- package/components/table/example-table-basic-visually-hidden-caption.njk +47 -0
- package/components/table/example-table-with-figure-fields.njk +86 -0
- package/components/table/table.spec.js +2 -0
- package/components/table-of-contents/_macro.njk +6 -4
- package/components/table-of-contents/_macro.spec.js +43 -3
- package/components/table-of-contents/example-table-of-contents-ordered.njk +64 -0
- package/components/table-of-contents/example-table-of-contents-sticky-full-page-ordered.njk +156 -0
- package/components/table-of-contents/example-table-of-contents-sticky-full-page.njk +1 -1
- package/components/table-of-contents/table-of-contents.spec.js +4 -5
- package/css/main.css +1 -1
- package/layout/_template.njk +66 -46
- package/package.json +45 -36
- package/scripts/main.es5.js +3 -3
- package/scripts/main.js +2 -2
- package/scss/base/_global.scss +8 -0
- package/scss/base/_typography.scss +9 -0
- package/scss/helpers/_mixins.scss +8 -0
- package/scss/main.scss +1 -0
- package/scss/objects/_page.scss +1 -1
- package/scss/objects/_spacing.scss +0 -4
- package/scss/utilities/_utilities.scss +10 -0
- package/scss/vars/_forms.scss +2 -1
- package/scss/vars/_index.scss +1 -0
- package/scss/vars/_utilities.scss +2 -0
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
padding: 0 0 0 1.5rem;
|
|
4
4
|
|
|
5
5
|
&__item {
|
|
6
|
+
@include reading-width;
|
|
7
|
+
|
|
6
8
|
&:first-child {
|
|
7
9
|
margin-top: 0.5rem;
|
|
8
10
|
}
|
|
@@ -109,14 +111,17 @@
|
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
@include bp-suffix('ons-list--inline') {
|
|
114
|
+
/* stylelint-disable-next-line nesting-selector-no-missing-scoping-root */
|
|
112
115
|
&:not(.ons-list--icons) {
|
|
113
116
|
margin: 0 1rem 0 0;
|
|
114
117
|
.ons-list__item {
|
|
118
|
+
max-width: none;
|
|
115
119
|
display: inline-block;
|
|
116
120
|
margin: 0 1rem 0 0;
|
|
117
121
|
}
|
|
118
122
|
}
|
|
119
123
|
|
|
124
|
+
/* stylelint-disable-next-line nesting-selector-no-missing-scoping-root */
|
|
120
125
|
&.ons-list--icons {
|
|
121
126
|
align-items: center;
|
|
122
127
|
display: flex;
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
href="{{ item.url }}"
|
|
80
80
|
class="ons-list__link{{ ' ons-js-inpagelink' if item.variants == 'inPageLink' }}{{ ' ' + item.classes if item.classes else '' }}"
|
|
81
81
|
{% if item.target %}target="{{ item.target }}"{% endif %}
|
|
82
|
+
{% if item.download %}download="{{ item.download}}"{% endif %}
|
|
82
83
|
>
|
|
83
84
|
{%- if item.prefix -%}<span class="ons-u-vh">{{- item.prefix -}}</span>{%- endif -%} {{- itemText | safe -}}
|
|
84
85
|
{%- if item.target == "_blank" -%}
|
|
@@ -376,6 +376,22 @@ describe('macro: list', () => {
|
|
|
376
376
|
expect($('.ons-list__link').hasClass('another-extra-class')).toBe(true);
|
|
377
377
|
});
|
|
378
378
|
|
|
379
|
+
it('has the provided `download` attribute', () => {
|
|
380
|
+
const $ = cheerio.load(
|
|
381
|
+
renderComponent('list', {
|
|
382
|
+
itemsList: [
|
|
383
|
+
{
|
|
384
|
+
...item,
|
|
385
|
+
url: '/example.csv',
|
|
386
|
+
download: 'file',
|
|
387
|
+
},
|
|
388
|
+
],
|
|
389
|
+
}),
|
|
390
|
+
);
|
|
391
|
+
|
|
392
|
+
expect($('.ons-list__link').attr('download')).toBe('file');
|
|
393
|
+
});
|
|
394
|
+
|
|
379
395
|
it('has the provided `target` attribute', () => {
|
|
380
396
|
const $ = cheerio.load(
|
|
381
397
|
renderComponent('list', {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
{% set closingTag = "</" ~ titleTag ~ ">" %}
|
|
63
63
|
<div class="ons-panel__header">
|
|
64
64
|
{{ openingTag | safe }} id="alert"{% if params.variant %}data-qa="{{ params.variant }}-header"{% endif %}
|
|
65
|
-
class="ons-panel__title ons-u-fs-r--b">{{ params.title | safe }}{{ closingTag | safe }}
|
|
65
|
+
class="ons-panel__title ons-u-fs-r--b ons-u-reading-width">{{ params.title | safe }}{{ closingTag | safe }}
|
|
66
66
|
</div>
|
|
67
67
|
{% else %}
|
|
68
68
|
{% if not params.variant or params.variant == "branded" or params.variant == "info" or params.variant == "bare" %}
|
|
@@ -112,6 +112,14 @@
|
|
|
112
112
|
margin: 0;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
// Restrict the width of textual content within the panel body (paragraphs are already globally restricted)
|
|
117
|
+
ul,
|
|
118
|
+
ol,
|
|
119
|
+
label,
|
|
120
|
+
legend {
|
|
121
|
+
@include reading-width;
|
|
122
|
+
}
|
|
115
123
|
}
|
|
116
124
|
|
|
117
125
|
&__error {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{% macro onsSkipToContent(params) %}
|
|
2
2
|
<div role="region">
|
|
3
3
|
{% set text = params.text | default('Skip to content') %}
|
|
4
|
-
<a class="ons-skip-to-content ons-u-fs-r--b" href="{{ params.url }}">{{ text }}</a>
|
|
4
|
+
<a class="ons-skip-to-content ons-u-fs-r--b" href="{{ params.url }}"><span class="ons-skip-to-content__text">{{ text }}</span></a>
|
|
5
5
|
</div>
|
|
6
6
|
{% endmacro %}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
.ons-skip-to-content {
|
|
2
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
2
3
|
clip: rect(0 0 0 0);
|
|
3
4
|
clip-path: inset(50%);
|
|
4
5
|
display: block;
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
&:focus {
|
|
14
15
|
background-color: var(--ons-color-focus);
|
|
15
16
|
box-shadow: 0;
|
|
17
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
16
18
|
clip: auto;
|
|
17
19
|
clip-path: none;
|
|
18
20
|
color: var(--ons-color-text-link-focus);
|
|
@@ -28,4 +30,10 @@
|
|
|
28
30
|
white-space: inherit;
|
|
29
31
|
width: auto;
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
&__text {
|
|
35
|
+
// Reading width max-width is hard-coded as skip to content sits outside the `ons-container` class
|
|
36
|
+
max-width: $reading-width;
|
|
37
|
+
display: block;
|
|
38
|
+
}
|
|
31
39
|
}
|
|
@@ -1,121 +1,148 @@
|
|
|
1
1
|
{% macro onsTable(params) %}
|
|
2
2
|
{% from "components/button/_macro.njk" import onsButton %}
|
|
3
3
|
{% from "components/icon/_macro.njk" import onsIcon %}
|
|
4
|
+
{% from "components/figure/_macro.njk" import onsFigure %}
|
|
4
5
|
{% set variants = params.variants if params.variants %}
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
{%
|
|
8
|
+
call onsFigure({
|
|
9
|
+
"useDivForRootElement": true,
|
|
10
|
+
"id": params.id,
|
|
11
|
+
"headingLevel": params.headingLevel,
|
|
12
|
+
"figureNumber": params.figureNumber,
|
|
13
|
+
"title": params.title,
|
|
14
|
+
"subtitle": params.subtitle,
|
|
15
|
+
"footnotes": params.footnotes,
|
|
16
|
+
"download": params.download,
|
|
17
|
+
"caption": params.sourceNote
|
|
18
|
+
})
|
|
19
|
+
%}
|
|
20
|
+
{% set tableClasses = "ons-table" %}
|
|
21
|
+
|
|
22
|
+
{# If there is no source note, footnotes or downloads after the table, add a bottom margin to the table to match the previous spacing #}
|
|
23
|
+
{# If there source note, footnotes or downloads after the table, the figure component handles the extra spacing #}
|
|
24
|
+
{% if not params.sourceNote and not params.footnotes and not params.download %}
|
|
25
|
+
{% set tableClasses = tableClasses + " ons-table--bottom-space" %}
|
|
26
|
+
{% endif %}
|
|
27
|
+
|
|
28
|
+
{% if params.tableClasses %}
|
|
29
|
+
{% set tableClasses = tableClasses + " " + params.tableClasses %}
|
|
30
|
+
{% endif %}
|
|
31
|
+
|
|
32
|
+
<div class="ons-table-scrollable ons-table-scrollable--on">
|
|
33
|
+
<div
|
|
34
|
+
class="ons-table-scrollable__content"
|
|
35
|
+
tabindex="0"
|
|
36
|
+
role="region"
|
|
37
|
+
{% if params.ariaLabel %}aria-label="{{ params.ariaLabel }}"{% endif %}
|
|
20
38
|
>
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<thead class="ons-table__head">
|
|
27
|
-
{# Uses thList if multiple-row headers, otherwise wrap single ths array into a default group #}
|
|
28
|
-
{% if params.thList %}
|
|
29
|
-
{% set thGroups = params.thList %}
|
|
30
|
-
{% else %}
|
|
31
|
-
{% set thGroups = [ { "ths": params.ths } ] %}
|
|
39
|
+
{# Uses multiple loops to set the rowspan class so that it can work in both nunjucks and jinja2 environments due to the scoping rules of each language #}
|
|
40
|
+
<table
|
|
41
|
+
class="{{ tableClasses }}{% for row in params.thList %}{% for th in row.ths %}{% if th.rowspan %}{{ ' ' }}ons-table--has-rowspan{% endif %}{% endfor %}{% endfor %}{% for row in params.trs %}{% for td in row.tds %}{% if td.rowspan %}{{ ' ' }}ons-table--has-rowspan{% endif %}{% endfor %}{% endfor %}{% if variants %}{% if variants is not string %}{% for variant in variants %}{{ ' ' }}ons-table--{{ variant }}{% endfor %}{% else %}{{ ' ' }}ons-table--{{ variants }}{% endif %}{% endif %}"
|
|
42
|
+
{% if params.sortBy and 'sortable' in variants %}
|
|
43
|
+
data-aria-sort="{{ params.sortBy }}" data-aria-asc="{{ params.ariaAsc }}" data-aria-desc="{{ params.ariaDesc }}"
|
|
32
44
|
{% endif %}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-}}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
{% set openingTag = '<th' %}
|
|
68
|
-
{% set closingTag = '</th>' %}
|
|
69
|
-
{% else %}
|
|
70
|
-
{% set openingTag = '<td' %}
|
|
71
|
-
{% set closingTag = '</td>' %}
|
|
72
|
-
{% endif %}
|
|
73
|
-
{% set isFirstRow = loop.index == 0 and td.rowspan %}
|
|
74
|
-
{% set rowSpan = isFirstRow and loop.index0 == rowspanCount %}
|
|
75
|
-
{{ openingTag | safe }}
|
|
76
|
-
class="ons-table__cell
|
|
77
|
-
ons-table__cell--{{ td.valign | default('top') }}{{ ' ' + td.tdClasses if td.tdClasses else '' }}{{ ' ons-table__cell--numeric' if td.numeric }}"
|
|
78
|
-
{% if td.id %}id="{{ td.id }}"{% endif %}
|
|
79
|
-
{% if td.data %}{{ ' ' }}data-th="{{ td.data }}"{% endif %}
|
|
80
|
-
{% if td.colspan %}colspan="{{ td.colspan }}"{% endif %}
|
|
81
|
-
{% if td.rowspan %}rowspan="{{ td.rowspan }}"{% endif %}
|
|
82
|
-
{% if td.dataSort %}{{ ' ' }}data-sort-value="{{ td.dataSort }}"{% endif %}
|
|
83
|
-
{% if td.heading %}scope="row"{% endif %}
|
|
84
|
-
>
|
|
85
|
-
{% if td.form %}
|
|
86
|
-
<form action="{{ td.form.action }}" method="{{ td.form.method | default('POST') }}">
|
|
87
|
-
{{ onsButton(td.form.button) }}
|
|
88
|
-
{% if td.form.hiddenFormField %}
|
|
89
|
-
{% for hiddenField in td.form.hiddenFormField %}
|
|
90
|
-
<input
|
|
91
|
-
type="hidden"
|
|
92
|
-
{% if hiddenField.name %}name="{{ hiddenField.name }}"{% endif %}
|
|
93
|
-
{% if hiddenField.value %}value="{{ hiddenField.value }}"{% endif %}
|
|
94
|
-
/>
|
|
95
|
-
{% endfor %}
|
|
45
|
+
>
|
|
46
|
+
{# Note that the caption is rendered inside the table element to be semantically correct, and we deliberately do not render it with the onsFigure caption option. We also have the option to visually hide it for the table. #}
|
|
47
|
+
{% if params.caption %}
|
|
48
|
+
<caption class="ons-table__caption{{ ' ons-u-vh' if params.hideCaption }}">
|
|
49
|
+
{{ params.caption }}
|
|
50
|
+
</caption>
|
|
51
|
+
{% endif %}
|
|
52
|
+
<thead class="ons-table__head">
|
|
53
|
+
{# Uses thList if multiple-row headers, otherwise wrap single ths array into a default group #}
|
|
54
|
+
{% if params.thList %}
|
|
55
|
+
{% set thGroups = params.thList %}
|
|
56
|
+
{% else %}
|
|
57
|
+
{% set thGroups = [ { "ths": params.ths } ] %}
|
|
58
|
+
{% endif %}
|
|
59
|
+
{% for headerCols in thGroups %}
|
|
60
|
+
<tr class="ons-table__row">
|
|
61
|
+
{% for th in headerCols.ths %}
|
|
62
|
+
<th
|
|
63
|
+
scope="col"
|
|
64
|
+
class="ons-table__header ons-table__header--{{ th.valign | default('top') }}{{ ' ' + th.thClasses if th.thClasses else '' }}{{ ' ons-table__header--numeric' if th.numeric }}"
|
|
65
|
+
{% if th.colspan %}colspan="{{ th.colspan }}"{% endif %}
|
|
66
|
+
{% if th.rowspan %}rowspan="{{ th.rowspan }}"{% endif %}
|
|
67
|
+
{% if 'sortable' in variants %}aria-sort="{{ th.ariaSort | default('none') }}"{% endif %}
|
|
68
|
+
{% if th.widthPercentage %}width="{{ th.widthPercentage }}%"{% endif %}
|
|
69
|
+
>
|
|
70
|
+
<span class="ons-table__header-text">{{ th.value | safe }}</span>
|
|
71
|
+
{% if 'sortable' in variants %}
|
|
72
|
+
{{-
|
|
73
|
+
onsIcon({
|
|
74
|
+
"iconType": "sort-sprite",
|
|
75
|
+
"id": th.value | replace(' ', '-'),
|
|
76
|
+
"classes": 'ons-u-d-no'
|
|
77
|
+
})
|
|
78
|
+
-}}
|
|
96
79
|
{% endif %}
|
|
97
|
-
</
|
|
98
|
-
{%
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
{
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
80
|
+
</th>
|
|
81
|
+
{% endfor %}
|
|
82
|
+
</tr>
|
|
83
|
+
{% endfor %}
|
|
84
|
+
</thead>
|
|
85
|
+
<tbody class="ons-table__body">
|
|
86
|
+
{% for tr in params.trs %}
|
|
87
|
+
<tr
|
|
88
|
+
class="ons-table__row{{ ' ons-table__row--highlight' if tr.highlight }}"
|
|
89
|
+
{% if tr.id %}id="{{ tr.id }}"{% endif %}
|
|
90
|
+
>
|
|
91
|
+
{% for td in tr.tds %}
|
|
92
|
+
{% if td.heading == true %}
|
|
93
|
+
{% set openingTag = '<th' %}
|
|
94
|
+
{% set closingTag = '</th>' %}
|
|
95
|
+
{% else %}
|
|
96
|
+
{% set openingTag = '<td' %}
|
|
97
|
+
{% set closingTag = '</td>' %}
|
|
98
|
+
{% endif %}
|
|
99
|
+
{% set isFirstRow = loop.index == 0 and td.rowspan %}
|
|
100
|
+
{% set rowSpan = isFirstRow and loop.index0 == rowspanCount %}
|
|
101
|
+
{{ openingTag | safe }}
|
|
102
|
+
class="ons-table__cell
|
|
103
|
+
ons-table__cell--{{ td.valign | default('top') }}{{ ' ' + td.tdClasses if td.tdClasses else '' }}{{ ' ons-table__cell--numeric' if td.numeric }}"
|
|
104
|
+
{% if td.id %}id="{{ td.id }}"{% endif %}
|
|
105
|
+
{% if td.data %}{{ ' ' }}data-th="{{ td.data }}"{% endif %}
|
|
106
|
+
{% if td.colspan %}colspan="{{ td.colspan }}"{% endif %}
|
|
107
|
+
{% if td.rowspan %}rowspan="{{ td.rowspan }}"{% endif %}
|
|
108
|
+
{% if td.dataSort %}{{ ' ' }}data-sort-value="{{ td.dataSort }}"{% endif %}
|
|
109
|
+
{% if td.heading %}scope="row"{% endif %}
|
|
110
|
+
>
|
|
111
|
+
{% if td.form %}
|
|
112
|
+
<form action="{{ td.form.action }}" method="{{ td.form.method | default('POST') }}">
|
|
113
|
+
{{ onsButton(td.form.button) }}
|
|
114
|
+
{% if td.form.hiddenFormField %}
|
|
115
|
+
{% for hiddenField in td.form.hiddenFormField %}
|
|
116
|
+
<input
|
|
117
|
+
type="hidden"
|
|
118
|
+
{% if hiddenField.name %}name="{{ hiddenField.name }}"{% endif %}
|
|
119
|
+
{% if hiddenField.value %}value="{{ hiddenField.value }}"{% endif %}
|
|
120
|
+
/>
|
|
121
|
+
{% endfor %}
|
|
122
|
+
{% endif %}
|
|
123
|
+
</form>
|
|
124
|
+
{% endif %}
|
|
125
|
+
{% if td.value %}
|
|
126
|
+
{{ td.value | safe }}
|
|
127
|
+
{% endif %}
|
|
128
|
+
{{ closingTag | safe }}
|
|
129
|
+
{% endfor %}
|
|
130
|
+
</tr>
|
|
131
|
+
{% endfor %}
|
|
132
|
+
</tbody>
|
|
133
|
+
{% if params.tfoot %}
|
|
134
|
+
<tfoot class="ons-table__foot">
|
|
135
|
+
<tr class="ons-table__row">
|
|
136
|
+
{% for tfootCell in params.tfoot %}
|
|
137
|
+
<td class="ons-table__cell ons-table__cell--{{ tfootCell.valign | default('top') }} ons-u-fs-s">
|
|
138
|
+
{{ tfootCell.value }}
|
|
139
|
+
</td>
|
|
140
|
+
{% endfor %}
|
|
141
|
+
</tr>
|
|
142
|
+
</tfoot>
|
|
143
|
+
{% endif %}
|
|
144
|
+
</table>
|
|
145
|
+
</div>
|
|
119
146
|
</div>
|
|
120
|
-
|
|
147
|
+
{% endcall %}
|
|
121
148
|
{% endmacro %}
|