@nationalarchives/frontend 0.1.54 → 0.1.56
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/nationalarchives/all.css +1 -1
- package/nationalarchives/all.css.map +1 -1
- package/nationalarchives/all.js +1 -1
- package/nationalarchives/all.js.map +1 -1
- package/nationalarchives/all.mjs +7 -0
- package/nationalarchives/components/_index.scss +2 -0
- package/nationalarchives/components/accordion/_index.scss +1 -0
- package/nationalarchives/components/accordion/accordion.css +1 -0
- package/nationalarchives/components/accordion/accordion.css.map +1 -0
- package/nationalarchives/components/accordion/accordion.js +2 -0
- package/nationalarchives/components/accordion/accordion.js.map +1 -0
- package/nationalarchives/components/accordion/accordion.mjs +35 -0
- package/nationalarchives/components/accordion/accordion.scss +105 -0
- package/nationalarchives/components/accordion/accordion.stories.js +410 -0
- package/nationalarchives/components/accordion/fixtures.json +74 -0
- package/nationalarchives/components/accordion/macro-options.json +52 -0
- package/nationalarchives/components/accordion/macro.njk +3 -0
- package/nationalarchives/components/accordion/template.njk +16 -0
- package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
- package/nationalarchives/components/button/button.css.map +1 -1
- package/nationalarchives/components/button/macro-options.json +2 -2
- package/nationalarchives/components/card/card.css.map +1 -1
- package/nationalarchives/components/card/card.stories.js +3 -0
- package/nationalarchives/components/card/fixtures.json +14 -0
- package/nationalarchives/components/card/macro-options.json +11 -5
- package/nationalarchives/components/card/template.njk +1 -1
- package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -1
- package/nationalarchives/components/compound-filters/compound-filters.css.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.css.map +1 -1
- package/nationalarchives/components/cookie-banner/macro-options.json +1 -1
- package/nationalarchives/components/date-input/date-input.css.map +1 -1
- package/nationalarchives/components/date-search/date-search.css.map +1 -1
- package/nationalarchives/components/details/_index.scss +1 -0
- package/nationalarchives/components/details/details.css +1 -0
- package/nationalarchives/components/details/details.css.map +1 -0
- package/nationalarchives/components/details/details.scss +113 -0
- package/nationalarchives/components/details/details.stories.js +33 -0
- package/nationalarchives/components/details/fixtures.json +50 -0
- package/nationalarchives/components/details/macro-options.json +38 -0
- package/nationalarchives/components/details/macro.njk +3 -0
- package/nationalarchives/components/details/template.njk +14 -0
- package/nationalarchives/components/error-summary/error-summary.css +1 -1
- package/nationalarchives/components/error-summary/error-summary.css.map +1 -1
- package/nationalarchives/components/featured-records/featured-records.css.map +1 -1
- package/nationalarchives/components/featured-records/featured-records.stories.js +1 -1
- package/nationalarchives/components/footer/footer.css.map +1 -1
- package/nationalarchives/components/footer/macro-options.json +6 -0
- package/nationalarchives/components/gallery/gallery.css.map +1 -1
- package/nationalarchives/components/global-header/global-header.css.map +1 -1
- package/nationalarchives/components/global-header/global-header.stories.js +24 -12
- package/nationalarchives/components/header/header.css.map +1 -1
- package/nationalarchives/components/hero/hero.css +1 -1
- package/nationalarchives/components/hero/hero.css.map +1 -1
- package/nationalarchives/components/hero/hero.scss +6 -0
- package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
- package/nationalarchives/components/index-grid/macro-options.json +1 -1
- package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
- package/nationalarchives/components/picture/picture.css.map +1 -1
- package/nationalarchives/components/quick-filters/quick-filters.css.map +1 -1
- package/nationalarchives/components/radios/radios.css.map +1 -1
- package/nationalarchives/components/search-field/search-field.css.map +1 -1
- package/nationalarchives/components/search-filters/search-filters.css +1 -1
- package/nationalarchives/components/search-filters/search-filters.css.map +1 -1
- package/nationalarchives/components/search-filters/search-filters.scss +20 -11
- package/nationalarchives/components/select/select.css.map +1 -1
- package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
- package/nationalarchives/components/tabs/tabs.css.map +1 -1
- package/nationalarchives/components/text-input/text-input.css.map +1 -1
- package/nationalarchives/components/textarea/textarea.css.map +1 -1
- package/nationalarchives/components/warning/warning.css.map +1 -1
- package/nationalarchives/global-header-package.css +1 -1
- package/nationalarchives/global-header-package.css.map +1 -1
- package/nationalarchives/prototype-kit.css +1 -1
- package/nationalarchives/prototype-kit.css.map +1 -1
- package/nationalarchives/stories/utilities/colour-schemes/colour-themes.stories.js +81 -8
- package/nationalarchives/stories/utilities/tables/tables.stories.js +1 -1
- package/nationalarchives/templates/fixtures.json +3 -3
- package/nationalarchives/templates/layouts/_prototype-kit.njk +1 -1
- package/nationalarchives/templates/plain.njk +1 -1
- package/nationalarchives/tools/_colour.scss +15 -24
- package/nationalarchives/utilities/_a11y.scss +15 -1
- package/nationalarchives/utilities/_lists.scss +13 -13
- package/nationalarchives/utilities/_tables.scss +3 -7
- package/package.json +1 -1
@@ -0,0 +1,105 @@
|
|
1
|
+
@use "sass:math";
|
2
|
+
@use "../../tools/colour";
|
3
|
+
@use "../../tools/spacing";
|
4
|
+
@use "../../tools/typography";
|
5
|
+
|
6
|
+
.tna-accordion {
|
7
|
+
@include spacing.space-above;
|
8
|
+
|
9
|
+
@include colour.colour-border("keyline", 1px, solid, top);
|
10
|
+
// @include colour.thick-keyline-dark(top);
|
11
|
+
// @include colour.thick-keyline-accent(top);
|
12
|
+
|
13
|
+
&__details {
|
14
|
+
@include colour.colour-border("keyline", 1px, solid, bottom);
|
15
|
+
|
16
|
+
position: relative;
|
17
|
+
z-index: 1;
|
18
|
+
}
|
19
|
+
|
20
|
+
&__details:has(&__summary:focus) {
|
21
|
+
z-index: 2;
|
22
|
+
}
|
23
|
+
|
24
|
+
&__summary {
|
25
|
+
padding: spacing.space(0.5) spacing.space(3) spacing.space(0.5)
|
26
|
+
spacing.space(1);
|
27
|
+
|
28
|
+
position: relative;
|
29
|
+
|
30
|
+
@include typography.main-font-weight-bold;
|
31
|
+
list-style: none;
|
32
|
+
|
33
|
+
border-radius: 0.1px;
|
34
|
+
|
35
|
+
cursor: pointer;
|
36
|
+
|
37
|
+
&::-webkit-details-marker {
|
38
|
+
display: none;
|
39
|
+
}
|
40
|
+
|
41
|
+
&::before {
|
42
|
+
content: "";
|
43
|
+
|
44
|
+
width: 0;
|
45
|
+
height: 0;
|
46
|
+
|
47
|
+
position: absolute;
|
48
|
+
top: calc(50% - #{math.div(math.sqrt(3), 4)}rem);
|
49
|
+
right: 0.75rem;
|
50
|
+
|
51
|
+
border-width: #{math.div(math.sqrt(3), 2)}rem 0.5rem 0 0.5rem;
|
52
|
+
border-color: colour.colour-var("font-light") transparent;
|
53
|
+
border-style: solid;
|
54
|
+
}
|
55
|
+
|
56
|
+
&:hover {
|
57
|
+
@include typography.interacted-text-decoration;
|
58
|
+
@include colour.colour-background("background-tint");
|
59
|
+
|
60
|
+
&::before {
|
61
|
+
border-color: colour.colour-var("font-dark") transparent;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
&__content {
|
67
|
+
padding: spacing.space(1);
|
68
|
+
|
69
|
+
&:has(.tna-table-wrapper):has(.tna-table) {
|
70
|
+
padding-right: 0;
|
71
|
+
padding-left: 0;
|
72
|
+
|
73
|
+
.tna-table {
|
74
|
+
&__caption {
|
75
|
+
padding-top: 0;
|
76
|
+
padding-bottom: spacing.space(1);
|
77
|
+
|
78
|
+
font-size: inherit;
|
79
|
+
line-height: inherit;
|
80
|
+
text-align: left;
|
81
|
+
caption-side: top;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
.tna-table-wrapper {
|
86
|
+
padding-right: 0;
|
87
|
+
padding-left: 0;
|
88
|
+
|
89
|
+
left: 0;
|
90
|
+
|
91
|
+
.tna-table {
|
92
|
+
width: calc(100% - #{spacing.space(2)});
|
93
|
+
margin-right: spacing.space(1);
|
94
|
+
margin-left: spacing.space(1);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
&__details[open] &__summary {
|
101
|
+
&::before {
|
102
|
+
border-width: 0 0.5rem #{math.div(math.sqrt(3), 2)}rem 0.5rem;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
@@ -0,0 +1,410 @@
|
|
1
|
+
import Accordion from "./template.njk";
|
2
|
+
import macroOptions from "./macro-options.json";
|
3
|
+
import { fireEvent, expect } from "@storybook/test";
|
4
|
+
|
5
|
+
const argTypes = {
|
6
|
+
items: { control: "object" },
|
7
|
+
group: { control: "text" },
|
8
|
+
classes: { control: "text" },
|
9
|
+
attributes: { control: "object" },
|
10
|
+
};
|
11
|
+
|
12
|
+
Object.keys(argTypes).forEach((argType) => {
|
13
|
+
argTypes[argType].description = macroOptions.find(
|
14
|
+
(option) => option.name === argType,
|
15
|
+
)?.description;
|
16
|
+
});
|
17
|
+
|
18
|
+
export default {
|
19
|
+
title: "Components/Accordion",
|
20
|
+
argTypes,
|
21
|
+
};
|
22
|
+
|
23
|
+
const Template = ({ items, group, classes, attributes }) =>
|
24
|
+
Accordion({
|
25
|
+
params: { items, group, classes, attributes },
|
26
|
+
});
|
27
|
+
|
28
|
+
export const Standard = Template.bind({});
|
29
|
+
Standard.args = {
|
30
|
+
items: [
|
31
|
+
{
|
32
|
+
title: "Alpha",
|
33
|
+
text: "Content",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
title: "Beta",
|
37
|
+
body: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>",
|
38
|
+
},
|
39
|
+
{
|
40
|
+
title: "Gamma",
|
41
|
+
body: `<ul class="tna-ul">
|
42
|
+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
|
43
|
+
<li>Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim.</li>
|
44
|
+
<li>Donec bibendum est leo, sed dapibus mauris facilisis vitae.</li>
|
45
|
+
<li>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi.</li>
|
46
|
+
</ul>`,
|
47
|
+
},
|
48
|
+
{
|
49
|
+
title: "Delta",
|
50
|
+
body: `<div class="tna-table-wrapper">
|
51
|
+
<table class="tna-table">
|
52
|
+
<caption class="tna-table__caption">
|
53
|
+
Records added and removed between 2020 and 2022.
|
54
|
+
</caption>
|
55
|
+
<thead class="tna-table__head">
|
56
|
+
<tr class="tna-table__row">
|
57
|
+
<th class="tna-table__header" scope="col">Year</th>
|
58
|
+
<th class="tna-table__header" scope="col">Chinese zodiac sign</th>
|
59
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Records added</th>
|
60
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Size (megabytes)</th>
|
61
|
+
</tr>
|
62
|
+
</thead>
|
63
|
+
<tbody class="tna-table__body">
|
64
|
+
<tr>
|
65
|
+
<th class="tna-table__header" scope="row">2020</th>
|
66
|
+
<td class="tna-table__cell">Rat</td>
|
67
|
+
<td class="tna-table__cell tna-table__cell--numeric">123,456</td>
|
68
|
+
<td class="tna-table__cell tna-table__cell--numeric">789</td>
|
69
|
+
</tr>
|
70
|
+
<tr>
|
71
|
+
<th class="tna-table__header" scope="row">2021</th>
|
72
|
+
<td class="tna-table__cell">Ox</td>
|
73
|
+
<td class="tna-table__cell tna-table__cell--numeric">456,789</td>
|
74
|
+
<td class="tna-table__cell tna-table__cell--numeric">123</td>
|
75
|
+
</tr>
|
76
|
+
<tr>
|
77
|
+
<th class="tna-table__header" scope="row">2022</th>
|
78
|
+
<td class="tna-table__cell">Tiger</td>
|
79
|
+
<td class="tna-table__cell tna-table__cell--numeric">42,424</td>
|
80
|
+
<td class="tna-table__cell tna-table__cell--numeric">1,337</td>
|
81
|
+
</tr>
|
82
|
+
</tbody>
|
83
|
+
<tfoot class="tna-table__foot">
|
84
|
+
<tr>
|
85
|
+
<th class="tna-table__header" scope="row">Totals</th>
|
86
|
+
<td class="tna-table__cell"></td>
|
87
|
+
<td class="tna-table__cell tna-table__cell--numeric">622,669</td>
|
88
|
+
<td class="tna-table__cell tna-table__cell--numeric">2,249</td>
|
89
|
+
</tr>
|
90
|
+
</tfoot>
|
91
|
+
</table>
|
92
|
+
</div>`,
|
93
|
+
},
|
94
|
+
],
|
95
|
+
group: "group-1",
|
96
|
+
classes: "tna-accordion--demo",
|
97
|
+
};
|
98
|
+
|
99
|
+
export const OpenItems = Template.bind({});
|
100
|
+
OpenItems.parameters = {
|
101
|
+
chromatic: { disableSnapshot: true },
|
102
|
+
};
|
103
|
+
OpenItems.args = {
|
104
|
+
items: [
|
105
|
+
{
|
106
|
+
title: "Alpha",
|
107
|
+
text: "Content",
|
108
|
+
},
|
109
|
+
{
|
110
|
+
title: "Beta",
|
111
|
+
body: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>",
|
112
|
+
},
|
113
|
+
{
|
114
|
+
title: "Gamma",
|
115
|
+
body: `<ul class="tna-ul">
|
116
|
+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
|
117
|
+
<li>Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim.</li>
|
118
|
+
<li>Donec bibendum est leo, sed dapibus mauris facilisis vitae.</li>
|
119
|
+
<li>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi.</li>
|
120
|
+
</ul>`,
|
121
|
+
open: true,
|
122
|
+
},
|
123
|
+
{
|
124
|
+
title: "Delta",
|
125
|
+
body: `<div class="tna-table-wrapper">
|
126
|
+
<table class="tna-table">
|
127
|
+
<caption class="tna-table__caption">
|
128
|
+
Records added and removed between 2020 and 2022.
|
129
|
+
</caption>
|
130
|
+
<thead class="tna-table__head">
|
131
|
+
<tr class="tna-table__row">
|
132
|
+
<th class="tna-table__header" scope="col">Year</th>
|
133
|
+
<th class="tna-table__header" scope="col">Chinese zodiac sign</th>
|
134
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Records added</th>
|
135
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Size (megabytes)</th>
|
136
|
+
</tr>
|
137
|
+
</thead>
|
138
|
+
<tbody class="tna-table__body">
|
139
|
+
<tr>
|
140
|
+
<th class="tna-table__header" scope="row">2020</th>
|
141
|
+
<td class="tna-table__cell">Rat</td>
|
142
|
+
<td class="tna-table__cell tna-table__cell--numeric">123,456</td>
|
143
|
+
<td class="tna-table__cell tna-table__cell--numeric">789</td>
|
144
|
+
</tr>
|
145
|
+
<tr>
|
146
|
+
<th class="tna-table__header" scope="row">2021</th>
|
147
|
+
<td class="tna-table__cell">Ox</td>
|
148
|
+
<td class="tna-table__cell tna-table__cell--numeric">456,789</td>
|
149
|
+
<td class="tna-table__cell tna-table__cell--numeric">123</td>
|
150
|
+
</tr>
|
151
|
+
<tr>
|
152
|
+
<th class="tna-table__header" scope="row">2022</th>
|
153
|
+
<td class="tna-table__cell">Tiger</td>
|
154
|
+
<td class="tna-table__cell tna-table__cell--numeric">42,424</td>
|
155
|
+
<td class="tna-table__cell tna-table__cell--numeric">1,337</td>
|
156
|
+
</tr>
|
157
|
+
</tbody>
|
158
|
+
<tfoot class="tna-table__foot">
|
159
|
+
<tr>
|
160
|
+
<th class="tna-table__header" scope="row">Totals</th>
|
161
|
+
<td class="tna-table__cell"></td>
|
162
|
+
<td class="tna-table__cell tna-table__cell--numeric">622,669</td>
|
163
|
+
<td class="tna-table__cell tna-table__cell--numeric">2,249</td>
|
164
|
+
</tr>
|
165
|
+
</tfoot>
|
166
|
+
</table>
|
167
|
+
</div>`,
|
168
|
+
},
|
169
|
+
],
|
170
|
+
group: "group-2",
|
171
|
+
classes: "tna-accordion--demo",
|
172
|
+
};
|
173
|
+
|
174
|
+
export const NoGroup = Template.bind({});
|
175
|
+
NoGroup.parameters = {
|
176
|
+
chromatic: { disableSnapshot: true },
|
177
|
+
};
|
178
|
+
NoGroup.args = {
|
179
|
+
items: [
|
180
|
+
{
|
181
|
+
title: "Alpha",
|
182
|
+
text: "Content",
|
183
|
+
},
|
184
|
+
{
|
185
|
+
title: "Beta",
|
186
|
+
body: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>",
|
187
|
+
},
|
188
|
+
{
|
189
|
+
title: "Gamma",
|
190
|
+
body: `<ul class="tna-ul">
|
191
|
+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
|
192
|
+
<li>Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim.</li>
|
193
|
+
<li>Donec bibendum est leo, sed dapibus mauris facilisis vitae.</li>
|
194
|
+
<li>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi.</li>
|
195
|
+
</ul>`,
|
196
|
+
},
|
197
|
+
{
|
198
|
+
title: "Delta",
|
199
|
+
body: `<div class="tna-table-wrapper">
|
200
|
+
<table class="tna-table">
|
201
|
+
<caption class="tna-table__caption">
|
202
|
+
Records added and removed between 2020 and 2022.
|
203
|
+
</caption>
|
204
|
+
<thead class="tna-table__head">
|
205
|
+
<tr class="tna-table__row">
|
206
|
+
<th class="tna-table__header" scope="col">Year</th>
|
207
|
+
<th class="tna-table__header" scope="col">Chinese zodiac sign</th>
|
208
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Records added</th>
|
209
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Size (megabytes)</th>
|
210
|
+
</tr>
|
211
|
+
</thead>
|
212
|
+
<tbody class="tna-table__body">
|
213
|
+
<tr>
|
214
|
+
<th class="tna-table__header" scope="row">2020</th>
|
215
|
+
<td class="tna-table__cell">Rat</td>
|
216
|
+
<td class="tna-table__cell tna-table__cell--numeric">123,456</td>
|
217
|
+
<td class="tna-table__cell tna-table__cell--numeric">789</td>
|
218
|
+
</tr>
|
219
|
+
<tr>
|
220
|
+
<th class="tna-table__header" scope="row">2021</th>
|
221
|
+
<td class="tna-table__cell">Ox</td>
|
222
|
+
<td class="tna-table__cell tna-table__cell--numeric">456,789</td>
|
223
|
+
<td class="tna-table__cell tna-table__cell--numeric">123</td>
|
224
|
+
</tr>
|
225
|
+
<tr>
|
226
|
+
<th class="tna-table__header" scope="row">2022</th>
|
227
|
+
<td class="tna-table__cell">Tiger</td>
|
228
|
+
<td class="tna-table__cell tna-table__cell--numeric">42,424</td>
|
229
|
+
<td class="tna-table__cell tna-table__cell--numeric">1,337</td>
|
230
|
+
</tr>
|
231
|
+
</tbody>
|
232
|
+
<tfoot class="tna-table__foot">
|
233
|
+
<tr>
|
234
|
+
<th class="tna-table__header" scope="row">Totals</th>
|
235
|
+
<td class="tna-table__cell"></td>
|
236
|
+
<td class="tna-table__cell tna-table__cell--numeric">622,669</td>
|
237
|
+
<td class="tna-table__cell tna-table__cell--numeric">2,249</td>
|
238
|
+
</tr>
|
239
|
+
</tfoot>
|
240
|
+
</table>
|
241
|
+
</div>`,
|
242
|
+
},
|
243
|
+
],
|
244
|
+
classes: "tna-accordion--demo",
|
245
|
+
};
|
246
|
+
|
247
|
+
export const Test = Template.bind({});
|
248
|
+
Test.parameters = {
|
249
|
+
chromatic: { disableSnapshot: true },
|
250
|
+
};
|
251
|
+
Test.args = {
|
252
|
+
items: [
|
253
|
+
{
|
254
|
+
title: "Alpha",
|
255
|
+
text: "Content",
|
256
|
+
},
|
257
|
+
{
|
258
|
+
title: "Beta",
|
259
|
+
body: "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>",
|
260
|
+
},
|
261
|
+
{
|
262
|
+
title: "Gamma",
|
263
|
+
body: `<ul class="tna-ul">
|
264
|
+
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
|
265
|
+
<li>Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim.</li>
|
266
|
+
<li>Donec bibendum est leo, sed dapibus mauris facilisis vitae.</li>
|
267
|
+
<li>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi.</li>
|
268
|
+
</ul>`,
|
269
|
+
},
|
270
|
+
{
|
271
|
+
title: "Delta",
|
272
|
+
body: `<div class="tna-table-wrapper">
|
273
|
+
<table class="tna-table">
|
274
|
+
<caption class="tna-table__caption">
|
275
|
+
Records added and removed between 2020 and 2022.
|
276
|
+
</caption>
|
277
|
+
<thead class="tna-table__head">
|
278
|
+
<tr class="tna-table__row">
|
279
|
+
<th class="tna-table__header" scope="col">Year</th>
|
280
|
+
<th class="tna-table__header" scope="col">Chinese zodiac sign</th>
|
281
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Records added</th>
|
282
|
+
<th class="tna-table__header tna-table__header--numeric" scope="col">Size (megabytes)</th>
|
283
|
+
</tr>
|
284
|
+
</thead>
|
285
|
+
<tbody class="tna-table__body">
|
286
|
+
<tr>
|
287
|
+
<th class="tna-table__header" scope="row">2020</th>
|
288
|
+
<td class="tna-table__cell">Rat</td>
|
289
|
+
<td class="tna-table__cell tna-table__cell--numeric">123,456</td>
|
290
|
+
<td class="tna-table__cell tna-table__cell--numeric">789</td>
|
291
|
+
</tr>
|
292
|
+
<tr>
|
293
|
+
<th class="tna-table__header" scope="row">2021</th>
|
294
|
+
<td class="tna-table__cell">Ox</td>
|
295
|
+
<td class="tna-table__cell tna-table__cell--numeric">456,789</td>
|
296
|
+
<td class="tna-table__cell tna-table__cell--numeric">123</td>
|
297
|
+
</tr>
|
298
|
+
<tr>
|
299
|
+
<th class="tna-table__header" scope="row">2022</th>
|
300
|
+
<td class="tna-table__cell">Tiger</td>
|
301
|
+
<td class="tna-table__cell tna-table__cell--numeric">42,424</td>
|
302
|
+
<td class="tna-table__cell tna-table__cell--numeric">1,337</td>
|
303
|
+
</tr>
|
304
|
+
</tbody>
|
305
|
+
<tfoot class="tna-table__foot">
|
306
|
+
<tr>
|
307
|
+
<th class="tna-table__header" scope="row">Totals</th>
|
308
|
+
<td class="tna-table__cell"></td>
|
309
|
+
<td class="tna-table__cell tna-table__cell--numeric">622,669</td>
|
310
|
+
<td class="tna-table__cell tna-table__cell--numeric">2,249</td>
|
311
|
+
</tr>
|
312
|
+
</tfoot>
|
313
|
+
</table>
|
314
|
+
</div>`,
|
315
|
+
},
|
316
|
+
],
|
317
|
+
group: "group-1",
|
318
|
+
classes: "tna-accordion--demo",
|
319
|
+
};
|
320
|
+
Test.play = async ({ step }) => {
|
321
|
+
const $allDetails = Array.from(
|
322
|
+
document.querySelectorAll(".tna-accordion__details"),
|
323
|
+
);
|
324
|
+
|
325
|
+
await step("Initial load", async () => {
|
326
|
+
await $allDetails.forEach(async ($details) => {
|
327
|
+
await expect(
|
328
|
+
$details.querySelector(".tna-accordion__summary"),
|
329
|
+
).toBeVisible();
|
330
|
+
await expect(
|
331
|
+
$details.querySelector(".tna-accordion__content"),
|
332
|
+
).not.toBeVisible();
|
333
|
+
});
|
334
|
+
});
|
335
|
+
|
336
|
+
await step("Open first item", async () => {
|
337
|
+
await fireEvent.click(
|
338
|
+
$allDetails[0].querySelector(".tna-accordion__summary"),
|
339
|
+
);
|
340
|
+
console.log($allDetails[0].querySelector(".tna-accordion__summary"));
|
341
|
+
await $allDetails.forEach(async ($details, index) => {
|
342
|
+
if (index === 0) {
|
343
|
+
await expect(
|
344
|
+
$details.querySelector(".tna-accordion__content"),
|
345
|
+
).toBeVisible();
|
346
|
+
} else {
|
347
|
+
await expect(
|
348
|
+
$details.querySelector(".tna-accordion__content"),
|
349
|
+
).not.toBeVisible();
|
350
|
+
}
|
351
|
+
});
|
352
|
+
});
|
353
|
+
|
354
|
+
await step("Close first item", async () => {
|
355
|
+
await fireEvent.click(
|
356
|
+
$allDetails[0].querySelector(".tna-accordion__summary"),
|
357
|
+
);
|
358
|
+
await $allDetails.forEach(async ($details) => {
|
359
|
+
await expect(
|
360
|
+
$details.querySelector(".tna-accordion__content"),
|
361
|
+
).not.toBeVisible();
|
362
|
+
});
|
363
|
+
});
|
364
|
+
|
365
|
+
await step("Open first item", async () => {
|
366
|
+
await fireEvent.click(
|
367
|
+
$allDetails[0].querySelector(".tna-accordion__summary"),
|
368
|
+
);
|
369
|
+
await $allDetails.forEach(async ($details, index) => {
|
370
|
+
if (index === 0) {
|
371
|
+
await expect(
|
372
|
+
$details.querySelector(".tna-accordion__content"),
|
373
|
+
).toBeVisible();
|
374
|
+
} else {
|
375
|
+
await expect(
|
376
|
+
$details.querySelector(".tna-accordion__content"),
|
377
|
+
).not.toBeVisible();
|
378
|
+
}
|
379
|
+
});
|
380
|
+
});
|
381
|
+
|
382
|
+
// TODO: fireEvent doesn't work on Firefox
|
383
|
+
// await step("Open second item", async () => {
|
384
|
+
// await fireEvent.click(
|
385
|
+
// $allDetails[1].querySelector(".tna-accordion__summary"),
|
386
|
+
// );
|
387
|
+
// await $allDetails.forEach(async ($details, index) => {
|
388
|
+
// if (index === 1) {
|
389
|
+
// await expect(
|
390
|
+
// $details.querySelector(".tna-accordion__content"),
|
391
|
+
// ).toBeVisible();
|
392
|
+
// } else {
|
393
|
+
// await expect(
|
394
|
+
// $details.querySelector(".tna-accordion__content"),
|
395
|
+
// ).not.toBeVisible();
|
396
|
+
// }
|
397
|
+
// });
|
398
|
+
// });
|
399
|
+
|
400
|
+
// await step("Close second item", async () => {
|
401
|
+
// await fireEvent.click(
|
402
|
+
// $allDetails[1].querySelector(".tna-accordion__summary"),
|
403
|
+
// );
|
404
|
+
// await $allDetails.forEach(async ($details) => {
|
405
|
+
// await expect(
|
406
|
+
// $details.querySelector(".tna-accordion__content"),
|
407
|
+
// ).not.toBeVisible();
|
408
|
+
// });
|
409
|
+
// });
|
410
|
+
};
|
@@ -0,0 +1,74 @@
|
|
1
|
+
{
|
2
|
+
"component": "accordion",
|
3
|
+
"fixtures": [
|
4
|
+
{
|
5
|
+
"name": "minimal",
|
6
|
+
"options": {
|
7
|
+
"items": [
|
8
|
+
{
|
9
|
+
"title": "Alpha",
|
10
|
+
"text": "Content"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"title": "Beta",
|
14
|
+
"body": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>"
|
15
|
+
}
|
16
|
+
]
|
17
|
+
},
|
18
|
+
"html": "<div class=\"tna-accordion\" data-module=\"tna-accordion\"><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Alpha</summary><div class=\"tna-accordion__content\"><p>Content</p></div></details><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Beta</summary><div class=\"tna-accordion__content\"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p></div></details></div>"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"name": "with group",
|
22
|
+
"options": {
|
23
|
+
"items": [
|
24
|
+
{
|
25
|
+
"title": "Alpha",
|
26
|
+
"text": "Content"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"title": "Beta",
|
30
|
+
"body": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>"
|
31
|
+
}
|
32
|
+
],
|
33
|
+
"group": "group-1"
|
34
|
+
},
|
35
|
+
"html": "<div class=\"tna-accordion\" data-module=\"tna-accordion\"><details class=\"tna-accordion__details\" name=\"group-1\"><summary class=\"tna-accordion__summary\">Alpha</summary><div class=\"tna-accordion__content\"><p>Content</p></div></details><details class=\"tna-accordion__details\" name=\"group-1\"><summary class=\"tna-accordion__summary\">Beta</summary><div class=\"tna-accordion__content\"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p></div></details></div>"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"name": "with classes",
|
39
|
+
"options": {
|
40
|
+
"items": [
|
41
|
+
{
|
42
|
+
"title": "Alpha",
|
43
|
+
"text": "Content"
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"title": "Beta",
|
47
|
+
"body": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>"
|
48
|
+
}
|
49
|
+
],
|
50
|
+
"classes": "accordion__test-class"
|
51
|
+
},
|
52
|
+
"html": "<div class=\"tna-accordion accordion__test-class\" data-module=\"tna-accordion\"><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Alpha</summary><div class=\"tna-accordion__content\"><p>Content</p></div></details><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Beta</summary><div class=\"tna-accordion__content\"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p></div></details></div>"
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"name": "with attributes",
|
56
|
+
"options": {
|
57
|
+
"items": [
|
58
|
+
{
|
59
|
+
"title": "Alpha",
|
60
|
+
"text": "Content"
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"title": "Beta",
|
64
|
+
"body": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p>"
|
65
|
+
}
|
66
|
+
],
|
67
|
+
"attributes": {
|
68
|
+
"data-testattribute": "foobar"
|
69
|
+
}
|
70
|
+
},
|
71
|
+
"html": "<div class=\"tna-accordion\" data-module=\"tna-accordion\" data-testattribute=\"foobar\"><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Alpha</summary><div class=\"tna-accordion__content\"><p>Content</p></div></details><details class=\"tna-accordion__details\"><summary class=\"tna-accordion__summary\">Beta</summary><div class=\"tna-accordion__content\"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dignissim vehicula magna, et hendrerit quam iaculis a. Mauris in ultricies enim. Donec bibendum est leo, sed dapibus mauris facilisis vitae.</p><p>Quisque hendrerit condimentum nisl, non volutpat ex eleifend at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi id suscipit felis, sed tincidunt arcu. Etiam vel blandit diam, vitae commodo mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla blandit mi vel rhoncus aliquam.</p><p>Pellentesque ultrices bibendum nibh, sit amet ornare turpis efficitur id. Aenean ullamcorper neque eget justo sagittis, rutrum ultrices urna varius. Mauris sodales a lorem at sodales.</p></div></details></div>"
|
72
|
+
}
|
73
|
+
]
|
74
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "items",
|
4
|
+
"type": "array",
|
5
|
+
"required": true,
|
6
|
+
"description": "The sections within the accordion.",
|
7
|
+
"items": [
|
8
|
+
{
|
9
|
+
"name": "title",
|
10
|
+
"type": "string",
|
11
|
+
"required": true,
|
12
|
+
"description": "The heading of each accordion section."
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"name": "body",
|
16
|
+
"type": "string",
|
17
|
+
"required": false,
|
18
|
+
"description": "The HTML for the main body of the accordion item. Not displayed if `text` is set."
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"name": "text",
|
22
|
+
"type": "string",
|
23
|
+
"required": false,
|
24
|
+
"description": "The text for the accordion item which will be inserted into a `<p>` element. Overwrites `body` if it is set."
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"name": "open",
|
28
|
+
"type": "boolean",
|
29
|
+
"required": false,
|
30
|
+
"description": "If true, open the accordion item. If a `group` is set, only one item in that group can be open."
|
31
|
+
}
|
32
|
+
]
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"name": "group",
|
36
|
+
"type": "string",
|
37
|
+
"required": false,
|
38
|
+
"description": "The name of the accordion group. If set, only one item in the named group can be opened at a time."
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"name": "classes",
|
42
|
+
"type": "string",
|
43
|
+
"required": false,
|
44
|
+
"description": "Classes to add to the accordion."
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"name": "attributes",
|
48
|
+
"type": "object",
|
49
|
+
"required": false,
|
50
|
+
"description": "HTML attributes (for example data attributes) to add to the accordion."
|
51
|
+
}
|
52
|
+
]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{%- set containerClasses = [params.classes] if params.classes else [] -%}
|
2
|
+
{%- set classes = containerClasses | join(' ') -%}
|
3
|
+
<div class="tna-accordion{% if classes %} {{ classes }}{% endif %}" data-module="tna-accordion"{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
|
4
|
+
{%- for item in params.items %}
|
5
|
+
<details class="tna-accordion__details"{%- if params.group %} name="{{ params.group }}"{% endif %}{%- if item.open %} open{% endif %}>
|
6
|
+
<summary class="tna-accordion__summary">{{ item.title }}</summary>
|
7
|
+
<div class="tna-accordion__content">
|
8
|
+
{%- if item.text %}
|
9
|
+
<p>{{ item.text }}</p>
|
10
|
+
{%- else %}
|
11
|
+
{{ item.body | safe }}
|
12
|
+
{%- endif %}
|
13
|
+
</div>
|
14
|
+
</details>
|
15
|
+
{%- endfor %}
|
16
|
+
</div>
|