@nationalarchives/frontend 0.1.24-prerelease → 0.1.26-prerelease
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 +22 -0
- package/govuk-prototype-kit.config.json +4 -12
- package/nationalarchives/all.css +2 -2
- package/nationalarchives/all.css.map +1 -1
- package/nationalarchives/all.js +1 -1
- package/nationalarchives/all.js.map +1 -1
- package/nationalarchives/all.mjs +0 -11
- package/nationalarchives/components/_index.scss +8 -0
- package/nationalarchives/components/breadcrumbs/breadcrumbs.css +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.mjs +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.scss +1 -1
- package/nationalarchives/components/breadcrumbs/breadcrumbs.stories.js +1 -1
- package/nationalarchives/components/button/_button-group.scss +4 -0
- package/nationalarchives/components/button/button.css +1 -1
- package/nationalarchives/components/button/button.css.map +1 -1
- package/nationalarchives/components/button/button.scss +89 -26
- package/nationalarchives/components/button/button.stories.js +52 -5
- package/nationalarchives/components/button/macro-options.json +18 -0
- package/nationalarchives/components/button/template.njk +15 -6
- package/nationalarchives/components/card/card.css +1 -1
- package/nationalarchives/components/card/card.css.map +1 -1
- package/nationalarchives/components/card/card.scss +7 -37
- package/nationalarchives/components/card/card.stories.js +6 -78
- package/nationalarchives/components/card/fixtures.json +17 -17
- package/nationalarchives/components/card/macro-options.json +41 -17
- package/nationalarchives/components/card/template.njk +51 -48
- package/nationalarchives/components/checkboxes/_index.scss +1 -0
- package/nationalarchives/components/checkboxes/checkboxes.css +1 -0
- package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -0
- package/nationalarchives/components/checkboxes/checkboxes.scss +143 -0
- package/nationalarchives/components/checkboxes/checkboxes.stories.js +238 -0
- package/nationalarchives/components/checkboxes/fixtures.json +4 -0
- package/nationalarchives/components/checkboxes/macro-options.json +102 -0
- package/nationalarchives/components/checkboxes/macro.njk +3 -0
- package/nationalarchives/components/checkboxes/template.njk +35 -0
- package/nationalarchives/components/cookie-banner/cookie-banner.css +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.css.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
- package/nationalarchives/components/cookie-banner/cookie-banner.mjs +19 -16
- package/nationalarchives/components/cookie-banner/cookie-banner.stories.js +103 -42
- package/nationalarchives/components/cookie-banner/fixtures.json +54 -8
- package/nationalarchives/components/cookie-banner/macro-options.json +19 -1
- package/nationalarchives/components/cookie-banner/template.njk +1 -1
- package/nationalarchives/components/date-input/_index.scss +1 -0
- package/nationalarchives/components/date-input/date-input.css +1 -0
- package/nationalarchives/components/date-input/date-input.css.map +1 -0
- package/nationalarchives/components/date-input/date-input.scss +48 -0
- package/nationalarchives/components/date-input/date-input.stories.js +116 -0
- package/nationalarchives/components/date-input/fixtures.json +4 -0
- package/nationalarchives/components/date-input/macro-options.json +96 -0
- package/nationalarchives/components/date-input/macro.njk +3 -0
- package/nationalarchives/components/date-input/template.njk +45 -0
- package/nationalarchives/components/date-search/_index.scss +1 -0
- package/nationalarchives/components/date-search/date-search.css +1 -0
- package/nationalarchives/components/date-search/date-search.css.map +1 -0
- package/nationalarchives/components/date-search/date-search.scss +27 -0
- package/nationalarchives/components/date-search/date-search.stories.js +121 -0
- package/nationalarchives/components/date-search/fixtures.json +4 -0
- package/nationalarchives/components/date-search/macro-options.json +94 -0
- package/nationalarchives/components/date-search/macro.njk +3 -0
- package/nationalarchives/components/date-search/template.njk +27 -0
- package/nationalarchives/components/featured-records/featured-records.css +1 -1
- package/nationalarchives/components/featured-records/featured-records.css.map +1 -1
- package/nationalarchives/components/filters/filters.css +1 -1
- package/nationalarchives/components/filters/filters.css.map +1 -1
- package/nationalarchives/components/filters/filters.scss +0 -8
- package/nationalarchives/components/filters/template.njk +2 -2
- package/nationalarchives/components/footer/footer.css +1 -1
- package/nationalarchives/components/footer/footer.css.map +1 -1
- package/nationalarchives/components/footer/footer.scss +3 -5
- package/nationalarchives/components/footer/footer.stories.js +1 -1
- package/nationalarchives/components/footer/template.njk +13 -9
- package/nationalarchives/components/gallery/gallery.css +1 -1
- package/nationalarchives/components/gallery/gallery.css.map +1 -1
- package/nationalarchives/components/gallery/gallery.scss +0 -11
- package/nationalarchives/components/gallery/gallery.stories.js +8 -10
- package/nationalarchives/components/gallery/template.njk +1 -1
- package/nationalarchives/components/grid/grid.css +1 -1
- package/nationalarchives/components/grid/grid.css.map +1 -1
- package/nationalarchives/components/grid/grid.scss +12 -0
- package/nationalarchives/components/grid/grid.stories.js +12 -0
- package/nationalarchives/components/header/header.css +1 -1
- package/nationalarchives/components/header/header.css.map +1 -1
- package/nationalarchives/components/header/header.scss +36 -41
- package/nationalarchives/components/header/header.stories.js +0 -41
- package/nationalarchives/components/header/template.njk +3 -3
- package/nationalarchives/components/hero/hero.css +1 -1
- package/nationalarchives/components/hero/hero.css.map +1 -1
- package/nationalarchives/components/hero/hero.scss +3 -7
- package/nationalarchives/components/hero/hero.stories.js +6 -0
- package/nationalarchives/components/index-grid/fixtures.json +324 -1
- package/nationalarchives/components/index-grid/index-grid.css +1 -1
- package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
- package/nationalarchives/components/index-grid/index-grid.scss +13 -10
- package/nationalarchives/components/index-grid/index-grid.stories.js +27 -14
- package/nationalarchives/components/index-grid/macro-options.json +34 -29
- package/nationalarchives/components/index-grid/template.njk +13 -8
- package/nationalarchives/components/message/message.css +1 -1
- package/nationalarchives/components/message/message.css.map +1 -1
- package/nationalarchives/components/message/message.scss +1 -6
- package/nationalarchives/components/message/template.njk +1 -1
- package/nationalarchives/components/pagination/macro-options.json +6 -0
- package/nationalarchives/components/pagination/pagination.css +1 -1
- package/nationalarchives/components/pagination/pagination.css.map +1 -1
- package/nationalarchives/components/pagination/pagination.scss +4 -0
- package/nationalarchives/components/pagination/pagination.stories.js +63 -2
- package/nationalarchives/components/pagination/template.njk +39 -17
- package/nationalarchives/components/phase-banner/phase-banner.css +1 -1
- package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
- package/nationalarchives/components/phase-banner/phase-banner.scss +2 -3
- package/nationalarchives/components/picture/picture.css +1 -1
- package/nationalarchives/components/picture/picture.css.map +1 -1
- package/nationalarchives/components/picture/picture.js.map +1 -1
- package/nationalarchives/components/picture/picture.mjs +0 -4
- package/nationalarchives/components/picture/picture.scss +1 -1
- package/nationalarchives/components/picture/template.njk +1 -1
- package/nationalarchives/components/radios/_index.scss +1 -0
- package/nationalarchives/components/radios/fixtures.json +4 -0
- package/nationalarchives/components/radios/macro-options.json +102 -0
- package/nationalarchives/components/radios/macro.njk +3 -0
- package/nationalarchives/components/radios/radios.css +1 -0
- package/nationalarchives/components/radios/radios.css.map +1 -0
- package/nationalarchives/components/radios/radios.scss +131 -0
- package/nationalarchives/components/radios/radios.stories.js +241 -0
- package/nationalarchives/components/radios/template.njk +35 -0
- package/nationalarchives/components/search-field/_index.scss +1 -0
- package/nationalarchives/components/search-field/fixtures.json +4 -0
- package/nationalarchives/components/search-field/macro-options.json +68 -0
- package/nationalarchives/components/search-field/macro.njk +3 -0
- package/nationalarchives/components/search-field/search-field.css +1 -0
- package/nationalarchives/components/search-field/search-field.css.map +1 -0
- package/nationalarchives/components/search-field/search-field.scss +32 -0
- package/nationalarchives/components/search-field/search-field.stories.js +88 -0
- package/nationalarchives/components/search-field/template.njk +32 -0
- package/nationalarchives/components/select/_index.scss +1 -0
- package/nationalarchives/components/select/fixtures.json +4 -0
- package/nationalarchives/components/select/macro-options.json +114 -0
- package/nationalarchives/components/select/macro.njk +3 -0
- package/nationalarchives/components/select/select.css +1 -0
- package/nationalarchives/components/select/select.css.map +1 -0
- package/nationalarchives/components/select/select.scss +51 -0
- package/nationalarchives/components/select/select.stories.js +194 -0
- package/nationalarchives/components/select/template.njk +29 -0
- package/nationalarchives/components/sensitive-image/sensitive-image.css +1 -1
- package/nationalarchives/components/sensitive-image/sensitive-image.css.map +1 -1
- package/nationalarchives/components/sensitive-image/sensitive-image.stories.js +3 -0
- package/nationalarchives/components/sensitive-image/template.njk +1 -1
- package/nationalarchives/components/skip-link/skip-link.css +1 -1
- package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
- package/nationalarchives/components/skip-link/skip-link.stories.js +4 -1
- package/nationalarchives/components/skip-link/template.njk +1 -1
- package/nationalarchives/components/tabs/tabs.css +1 -1
- package/nationalarchives/components/tabs/tabs.css.map +1 -1
- package/nationalarchives/components/tabs/tabs.js +1 -1
- package/nationalarchives/components/tabs/tabs.js.map +1 -1
- package/nationalarchives/components/tabs/tabs.mjs +1 -1
- package/nationalarchives/components/tabs/tabs.scss +11 -1
- package/nationalarchives/components/tabs/tabs.stories.js +6 -3
- package/nationalarchives/components/tabs/template.njk +1 -1
- package/nationalarchives/components/text-input/_index.scss +1 -0
- package/nationalarchives/components/text-input/fixtures.json +4 -0
- package/nationalarchives/components/text-input/macro-options.json +118 -0
- package/nationalarchives/components/text-input/macro.njk +3 -0
- package/nationalarchives/components/text-input/template.njk +30 -0
- package/nationalarchives/components/text-input/text-input.css +1 -0
- package/nationalarchives/components/text-input/text-input.css.map +1 -0
- package/nationalarchives/components/text-input/text-input.scss +44 -0
- package/nationalarchives/components/text-input/text-input.stories.js +188 -0
- package/nationalarchives/components/textarea/_index.scss +1 -0
- package/nationalarchives/components/textarea/fixtures.json +4 -0
- package/nationalarchives/components/textarea/macro-options.json +106 -0
- package/nationalarchives/components/textarea/macro.njk +3 -0
- package/nationalarchives/components/textarea/template.njk +27 -0
- package/nationalarchives/components/textarea/textarea.css +1 -0
- package/nationalarchives/components/textarea/textarea.css.map +1 -0
- package/nationalarchives/components/textarea/textarea.scss +45 -0
- package/nationalarchives/components/textarea/textarea.stories.js +127 -0
- package/nationalarchives/lib/cookies.mjs +172 -63
- package/nationalarchives/prototype-kit.css +2 -2
- package/nationalarchives/prototype-kit.css.map +1 -1
- package/nationalarchives/prototype-kit.scss +0 -8
- package/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js +449 -91
- package/nationalarchives/stories/utilities/forms/forms.mdx +117 -0
- package/nationalarchives/stories/utilities/overrides/overrides.stories.js +1 -0
- package/nationalarchives/stories/utilities/tables/tables.mdx +8 -0
- package/nationalarchives/stories/utilities/tables/tables.stories.js +45 -0
- package/nationalarchives/stories/utilities/typography/heading-groups.stories.js +59 -19
- package/nationalarchives/stories/utilities/typography/typography.stories.js +0 -6
- package/nationalarchives/templates/layouts/_generic.njk +1 -1
- package/nationalarchives/templates/layouts/_prototype-kit.njk +2 -0
- package/nationalarchives/tests/cookies.test.js +427 -0
- package/nationalarchives/tests/uuid.test.js +17 -0
- package/nationalarchives/tools/_colour.scss +50 -27
- package/nationalarchives/tools/_typography.scss +0 -1
- package/nationalarchives/utilities/_a11y.scss +6 -2
- package/nationalarchives/utilities/_colour.scss +10 -6
- package/nationalarchives/utilities/_debug.scss +3 -4
- package/nationalarchives/utilities/_forms.scss +93 -0
- package/nationalarchives/utilities/_index.scss +2 -0
- package/nationalarchives/utilities/_lists.scss +6 -1
- package/nationalarchives/utilities/_overrides.scss +1 -1
- package/nationalarchives/utilities/_tables.scss +86 -0
- package/nationalarchives/utilities/_typography.scss +71 -77
- package/nationalarchives/variables/_colour.scss +15 -10
- package/nationalarchives/variables/_forms.scss +2 -0
- package/nationalarchives/variables/_index.scss +1 -0
- package/nationalarchives/variables/_typography.scss +2 -2
- package/package.json +19 -19
- package/nationalarchives/stories/utilities/overrides/overrides.mdx +0 -53
@@ -1,3 +1,35 @@
|
|
1
|
+
export class CookieEventHandler {
|
2
|
+
events = {};
|
3
|
+
|
4
|
+
constructor() {
|
5
|
+
if (CookieEventHandler._instance) {
|
6
|
+
return CookieEventHandler._instance;
|
7
|
+
}
|
8
|
+
CookieEventHandler._instance = this;
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Add an event listener.
|
13
|
+
* @param {string} event - The event to add a listener for.
|
14
|
+
* @param {function} callback - The callback function to call when the event is triggered.
|
15
|
+
*/
|
16
|
+
on(event, callback) {
|
17
|
+
if (!Object.prototype.hasOwnProperty.call(this.events, event)) {
|
18
|
+
this.events[event] = [];
|
19
|
+
}
|
20
|
+
this.events[event] = [...this.events[event], callback];
|
21
|
+
}
|
22
|
+
|
23
|
+
/** @protected */
|
24
|
+
trigger(event, data = {}) {
|
25
|
+
if (Object.prototype.hasOwnProperty.call(this.events, event)) {
|
26
|
+
this.events[event].forEach((eventToTrigger) =>
|
27
|
+
eventToTrigger.call(this, data),
|
28
|
+
);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
1
33
|
/**
|
2
34
|
* Class to handle cookies.
|
3
35
|
* @class Cookies
|
@@ -6,49 +38,73 @@
|
|
6
38
|
*/
|
7
39
|
export default class Cookies {
|
8
40
|
/** @protected */
|
9
|
-
|
41
|
+
extraPolicies = [];
|
42
|
+
/** @protected */
|
43
|
+
domain = "";
|
44
|
+
/** @protected */
|
45
|
+
path = "";
|
46
|
+
/** @protected */
|
47
|
+
secure = true;
|
48
|
+
/** @protected */
|
49
|
+
policiesKey = "";
|
10
50
|
|
11
51
|
/**
|
12
52
|
* Create a cookie handler.
|
13
|
-
* @param {string[]} [
|
14
|
-
* @param {string} [
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
) {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
: this.#policies;
|
53
|
+
* @param {string[]} [extraPolicies=[]] - The extra cookie policies to manage in addition to essential, settings and usage.
|
54
|
+
* @param {string} [options.domain=""] - The domain to register the cookie with.
|
55
|
+
* @param {string} [options.path=""] - The domain to register the cookie with.
|
56
|
+
* @param {string} [options.secure=true] - Only set cookie in HTTPS environments.
|
57
|
+
* @param {string} [options.policiesKey=cookies_policy] - The name of the cookie.
|
58
|
+
*/
|
59
|
+
constructor(extraPolicies = [], options = {}) {
|
60
|
+
const {
|
61
|
+
domain = "",
|
62
|
+
path = "/",
|
63
|
+
secure = true,
|
64
|
+
policiesKey = "cookies_policy",
|
65
|
+
} = options;
|
66
|
+
this.extraPolicies = extraPolicies;
|
67
|
+
this.domain = domain;
|
68
|
+
this.path = path;
|
69
|
+
this.secure = secure;
|
70
|
+
this.policiesKey = policiesKey;
|
71
|
+
this.events = new CookieEventHandler();
|
72
|
+
this.init();
|
34
73
|
}
|
35
74
|
|
36
|
-
|
37
|
-
|
75
|
+
/** @protected */
|
76
|
+
init() {
|
77
|
+
this.savePolicies({
|
78
|
+
...Object.fromEntries(
|
79
|
+
this.extraPolicies.map((k) => [k.toLowerCase(), false]),
|
80
|
+
),
|
81
|
+
usage: false,
|
82
|
+
settings: false,
|
83
|
+
...this.policies,
|
84
|
+
essential: true,
|
85
|
+
});
|
38
86
|
}
|
39
87
|
|
40
|
-
|
41
|
-
#deserialise(cookieString) {
|
88
|
+
get all() {
|
42
89
|
const deserialised = {};
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
90
|
+
document.cookie
|
91
|
+
.split("; ")
|
92
|
+
.filter((x) => x)
|
93
|
+
.forEach((cookie) => {
|
94
|
+
const parts = cookie.trim().split("=");
|
95
|
+
if (parts[0]) {
|
96
|
+
deserialised[parts[0]] = parts[1];
|
97
|
+
}
|
98
|
+
});
|
47
99
|
return deserialised;
|
48
100
|
}
|
49
101
|
|
50
|
-
get
|
51
|
-
|
102
|
+
get policies() {
|
103
|
+
try {
|
104
|
+
return JSON.parse(this.get(this.policiesKey) || "{}");
|
105
|
+
} catch (e) {
|
106
|
+
return {};
|
107
|
+
}
|
52
108
|
}
|
53
109
|
|
54
110
|
/**
|
@@ -87,16 +143,37 @@ export default class Cookies {
|
|
87
143
|
* @param {number} [options.maxAge=31536000] - The maximum age of the cookie in seconds.
|
88
144
|
* @param {string} [options.path=/] - The path to register the cookie for.
|
89
145
|
* @param {string} [options.sameSite=Lax] - The sameSite attribute.
|
146
|
+
* @param {string} [options.domain=this.domain] - The domain to register the cookie with.
|
147
|
+
* @param {string} [options.path=this.path] - The path to register the cookie with.
|
148
|
+
* @param {string} [options.secure=this.secure] - Only set cookie in HTTPS environments.
|
90
149
|
*/
|
91
150
|
set(key, value, options = {}) {
|
92
151
|
const {
|
93
152
|
maxAge = 60 * 60 * 24 * 365,
|
94
|
-
path = "/",
|
95
153
|
sameSite = "Lax",
|
154
|
+
domain = this.domain,
|
155
|
+
path = this.path,
|
156
|
+
secure = this.secure,
|
96
157
|
} = options;
|
97
|
-
|
158
|
+
if (!key) {
|
159
|
+
return;
|
160
|
+
}
|
161
|
+
const cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};${
|
162
|
+
domain ? ` domain=${domain}; ` : ""
|
163
|
+
} samesite=${sameSite}; path=${path}; max-age=${maxAge}${
|
164
|
+
secure ? "; secure" : ""
|
165
|
+
}`;
|
166
|
+
document.cookie = cookie;
|
167
|
+
this.events.trigger("setCookie", {
|
168
|
+
key,
|
98
169
|
value,
|
99
|
-
|
170
|
+
maxAge,
|
171
|
+
path,
|
172
|
+
sameSite,
|
173
|
+
domain,
|
174
|
+
secure,
|
175
|
+
cookie,
|
176
|
+
});
|
100
177
|
}
|
101
178
|
|
102
179
|
/**
|
@@ -104,12 +181,20 @@ export default class Cookies {
|
|
104
181
|
* @param {string} key - The cookie name.
|
105
182
|
* @param {string} [path=/] - The path to the cookie is registered on.
|
106
183
|
*/
|
107
|
-
delete(key, path = "/") {
|
108
|
-
|
184
|
+
delete(key, path = "/", domain = null) {
|
185
|
+
const options = { maxAge: -1, path, domain: domain || undefined };
|
186
|
+
this.set(key, "", options);
|
187
|
+
this.events.trigger("deleteCookie", { key, ...options });
|
109
188
|
}
|
110
189
|
|
111
|
-
|
112
|
-
|
190
|
+
/**
|
191
|
+
* Delete all cookies.
|
192
|
+
*/
|
193
|
+
deleteAll(path = "/", domain = null) {
|
194
|
+
Object.keys(this.all).forEach((cookie) => {
|
195
|
+
this.delete(cookie, path, domain);
|
196
|
+
});
|
197
|
+
this.events.trigger("deleteAllCookies", { path, domain });
|
113
198
|
}
|
114
199
|
|
115
200
|
/**
|
@@ -117,8 +202,9 @@ export default class Cookies {
|
|
117
202
|
* @param {string} policy - The name of the policy.
|
118
203
|
*/
|
119
204
|
acceptPolicy(policy) {
|
120
|
-
this
|
121
|
-
this.
|
205
|
+
this.setPolicy(policy, true);
|
206
|
+
this.events.trigger("acceptPolicy", policy);
|
207
|
+
this.events.trigger("changePolicy", { [policy]: true });
|
122
208
|
}
|
123
209
|
|
124
210
|
/**
|
@@ -126,47 +212,61 @@ export default class Cookies {
|
|
126
212
|
* @param {string} policy - The name of the policy.
|
127
213
|
*/
|
128
214
|
rejectPolicy(policy) {
|
215
|
+
this.setPolicy(policy, false);
|
216
|
+
this.events.trigger("rejectPolicy", policy);
|
217
|
+
this.events.trigger("changePolicy", { [policy]: false });
|
218
|
+
}
|
219
|
+
|
220
|
+
/**
|
221
|
+
* Set a policy.
|
222
|
+
* @param {string} policy - The name of the policy.
|
223
|
+
* @param {boolean} accepted - Whether the policy is accepted or not.
|
224
|
+
*/
|
225
|
+
setPolicy(policy, accepted) {
|
129
226
|
if (policy === "essential") {
|
130
227
|
return;
|
131
228
|
}
|
132
|
-
this
|
133
|
-
this.savePolicies();
|
134
|
-
}
|
135
|
-
|
136
|
-
/** @protected */
|
137
|
-
#setPolicy(policy, accepted) {
|
138
|
-
this.policies = {
|
229
|
+
this.savePolicies({
|
139
230
|
...this.policies,
|
140
231
|
[policy]: accepted,
|
141
232
|
essential: true,
|
142
|
-
};
|
143
|
-
|
144
|
-
|
145
|
-
/**
|
146
|
-
* Commit the policy preferences to the browser.
|
147
|
-
*/
|
148
|
-
savePolicies() {
|
149
|
-
this.set(this.cookiesPolicyKey, JSON.stringify(this.policies));
|
233
|
+
});
|
234
|
+
this.events.trigger("changePolicy", { [policy]: accepted });
|
150
235
|
}
|
151
236
|
|
152
237
|
/**
|
153
238
|
* Accept all the cookie policies.
|
154
239
|
*/
|
155
240
|
acceptAllPolicies() {
|
156
|
-
Object.
|
157
|
-
this
|
241
|
+
const allPolicies = Object.fromEntries(
|
242
|
+
Object.keys(this.policies).map((k) => [k.toLowerCase(), true]),
|
158
243
|
);
|
159
|
-
this.savePolicies();
|
244
|
+
this.savePolicies(allPolicies);
|
245
|
+
this.events.trigger("acceptAllPolicies");
|
246
|
+
this.events.trigger("changePolicy", allPolicies);
|
160
247
|
}
|
161
248
|
|
162
249
|
/**
|
163
250
|
* Reject all the cookie policies.
|
164
251
|
*/
|
165
252
|
rejectAllPolicies() {
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
253
|
+
const allPolicies = {
|
254
|
+
...Object.fromEntries(
|
255
|
+
Object.keys(this.policies).map((k) => [k.toLowerCase(), false]),
|
256
|
+
),
|
257
|
+
essential: true,
|
258
|
+
};
|
259
|
+
this.savePolicies(allPolicies);
|
260
|
+
this.events.trigger("rejectAllPolicies");
|
261
|
+
this.events.trigger("changePolicy", allPolicies);
|
262
|
+
}
|
263
|
+
|
264
|
+
/**
|
265
|
+
* Commit policy preferences to the browser.
|
266
|
+
* @param {object} policies - The policies to commit.
|
267
|
+
*/
|
268
|
+
savePolicies(policies) {
|
269
|
+
this.set(this.policiesKey, JSON.stringify(policies));
|
170
270
|
}
|
171
271
|
|
172
272
|
/**
|
@@ -179,4 +279,13 @@ export default class Cookies {
|
|
179
279
|
? this.policies[policy] === true
|
180
280
|
: null;
|
181
281
|
}
|
282
|
+
|
283
|
+
/**
|
284
|
+
* Add an event listener.
|
285
|
+
* @param {string} event - The event to add a listener for.
|
286
|
+
* @param {function} callback - The callback function to call when the event is triggered.
|
287
|
+
*/
|
288
|
+
on(event, callback) {
|
289
|
+
this.events.on(event, callback);
|
290
|
+
}
|
182
291
|
}
|