@qld-gov-au/qgds-bootstrap5 2.0.7 → 2.0.8
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/.esbuild/plugins/qgds-plugin-handlebar-partial-builder.js +76 -66
- package/.storybook/preview.js +1 -1
- package/dist/assets/components/bs5/footer/footer.hbs +20 -18
- package/dist/assets/components/bs5/head/head.hbs +1 -1
- package/dist/assets/components/bs5/header/header.hbs +40 -52
- package/dist/assets/components/bs5/header/headerBrand.hbs +9 -10
- package/dist/assets/components/bs5/logo/logo.hbs +2 -0
- package/dist/assets/components/bs5/logo/logoCOADeliveringForQLD.hbs +49 -0
- package/dist/assets/components/bs5/logo/logoCOALandscape.hbs +55 -109
- package/dist/assets/components/bs5/logo/logoCOALandscape2Lines.hbs +55 -55
- package/dist/assets/components/bs5/searchInput/searchInput.hbs +5 -5
- package/dist/assets/css/qld.bootstrap.css +1 -1
- package/dist/assets/css/qld.bootstrap.css.map +3 -3
- package/dist/assets/css/qld.bootstrap.legacy.css +1 -1
- package/dist/assets/css/qld.bootstrap.legacy.css.map +3 -3
- package/dist/assets/img/coa-delivering-for-qld.svg +47 -0
- package/dist/assets/img/coa-delivering-for-qld.svg.old +58 -0
- package/dist/assets/img/coa-landscape-2lines.svg +63 -0
- package/dist/assets/img/coa-landscape-web.svg +56 -0
- package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
- package/dist/assets/js/handlebars.helpers.bundle.js.map +3 -3
- package/dist/assets/js/handlebars.init.min.js +1329 -1344
- package/dist/assets/js/handlebars.init.min.js.map +4 -4
- package/dist/assets/js/handlebars.partials.js +1329 -1344
- package/dist/assets/js/handlebars.partials.js.map +4 -4
- package/dist/assets/js/qld.bootstrap.min.js +3 -3
- package/dist/assets/js/qld.bootstrap.min.js.map +3 -3
- package/dist/assets/node/handlebars.init.min.js +219 -198
- package/dist/assets/node/handlebars.init.min.js.map +3 -3
- package/dist/components/bs5/footer/footer.hbs +20 -18
- package/dist/components/bs5/head/head.hbs +1 -1
- package/dist/components/bs5/header/header.hbs +40 -52
- package/dist/components/bs5/header/headerBrand.hbs +9 -10
- package/dist/components/bs5/logo/logo.hbs +2 -0
- package/dist/components/bs5/logo/logoCOADeliveringForQLD.hbs +49 -0
- package/dist/components/bs5/logo/logoCOALandscape.hbs +55 -109
- package/dist/components/bs5/logo/logoCOALandscape2Lines.hbs +55 -55
- package/dist/components/bs5/searchInput/searchInput.hbs +5 -5
- package/dist/package.json +12 -12
- package/dist/sample-data/header/header.variant.coBrand.data.json +5 -8
- package/dist/sample-data/header/header.variant.endorsed.data.json +3 -6
- package/dist/sample-data/header/header.variant.masterBrand.data.json +1 -6
- package/dist/sample-data/header/header.variant.standAlone.data.json +3 -6
- package/dist/sample-data/header/header.variant.subBrand.data.json +5 -8
- package/esbuild.js +1 -1
- package/package.json +12 -12
- package/src/components/bs5/banner/banner.scss +2 -2
- package/src/components/bs5/breadcrumbs/breadcrumbs.scss +7 -2
- package/src/components/bs5/card/card.scss +1 -1
- package/src/components/bs5/footer/footer.hbs +20 -18
- package/src/components/bs5/footer/footer.scss +7 -5
- package/src/components/bs5/header/Header.js +25 -0
- package/src/components/bs5/header/_header-variables.scss +61 -247
- package/src/components/bs5/header/header.functions.js +10 -15
- package/src/components/bs5/header/header.hbs +40 -52
- package/src/components/bs5/header/header.scss +166 -158
- package/src/components/bs5/header/header.stories.js +37 -206
- package/src/components/bs5/header/header.variant.coBrand.data.json +5 -8
- package/src/components/bs5/header/header.variant.endorsed.data.json +3 -6
- package/src/components/bs5/header/header.variant.masterBrand.data.json +1 -6
- package/src/components/bs5/header/header.variant.standAlone.data.json +3 -6
- package/src/components/bs5/header/header.variant.subBrand.data.json +5 -8
- package/src/components/bs5/header/headerBrand.hbs +9 -10
- package/src/components/bs5/inpageAlert/inpageAlert.scss +107 -120
- package/src/components/bs5/linkColumns/linkColumns.scss +18 -25
- package/src/components/bs5/logo/logo.hbs +2 -0
- package/src/components/bs5/logo/logoCOADeliveringForQLD.hbs +49 -0
- package/src/components/bs5/logo/logoCOALandscape.hbs +55 -109
- package/src/components/bs5/logo/logoCOALandscape2Lines.hbs +55 -55
- package/src/components/bs5/navbar/navbar.scss +36 -14
- package/src/components/bs5/searchInput/SearchInput.js +3 -5
- package/src/components/bs5/searchInput/__snapshots__/searchInput.test.js.snap +5 -5
- package/src/components/bs5/searchInput/searchInput.hbs +5 -5
- package/src/components/bs5/searchInput/searchInput.scss +13 -0
- package/src/components/bs5/tag/tag--large.stories.js +53 -0
- package/src/components/bs5/tag/tag--standard.stories.js +39 -0
- package/src/components/bs5/tag/tag--status.stories.js +97 -0
- package/src/components/bs5/tag/tag.scss +67 -36
- package/src/components/bs5/tag/tag.stories.js +69 -106
- package/src/css/main.scss +2 -2
- package/src/css/mixins/_index.scss +1 -0
- package/src/css/mixins/focusable.scss +6 -5
- package/src/css/mixins/make-link.scss +40 -0
- package/src/css/qld-theme.scss +16 -8
- package/src/css/qld-type.scss +3 -73
- package/src/css/variables/animation.scss +5 -0
- package/src/img/coa-delivering-for-qld.svg +47 -0
- package/src/img/coa-delivering-for-qld.svg.old +58 -0
- package/src/img/coa-landscape-2lines.svg +63 -0
- package/src/img/coa-landscape-web.svg +56 -0
- package/src/js/handlebars.helpers.js +51 -38
- package/src/js/handlebars.partials.js +12 -10
- package/dist/assets/img/_coa_header-logo-qgov--stacked.svg +0 -171
- package/dist/assets/img/_coa_header-logo-qgov-masterbrand.svg +0 -56
- package/dist/assets/img/_coa_preheader-logo-qgov.svg +0 -56
- package/src/img/_coa_header-logo-qgov--stacked.svg +0 -171
- package/src/img/_coa_header-logo-qgov-masterbrand.svg +0 -56
- package/src/img/_coa_preheader-logo-qgov.svg +0 -56
|
@@ -168,7 +168,6 @@
|
|
|
168
168
|
color: var(--link-color);
|
|
169
169
|
text-decoration-color: inherit;
|
|
170
170
|
padding: 0;
|
|
171
|
-
// transition:none;
|
|
172
171
|
&:after {
|
|
173
172
|
content: "";
|
|
174
173
|
content: none;
|
|
@@ -211,6 +210,15 @@
|
|
|
211
210
|
width: 100%;
|
|
212
211
|
border-block-end: 0;
|
|
213
212
|
margin-block-end: 0;
|
|
213
|
+
position: relative;
|
|
214
|
+
&::before {
|
|
215
|
+
content: "";
|
|
216
|
+
position: absolute;
|
|
217
|
+
border-inline-start: 5px solid var(--link-border-color);
|
|
218
|
+
left: -5px;
|
|
219
|
+
top: 0;
|
|
220
|
+
bottom: calc(var(--border-width) * -1);
|
|
221
|
+
}
|
|
214
222
|
&:hover,
|
|
215
223
|
&.active {
|
|
216
224
|
border-block-end: 0;
|
|
@@ -218,6 +226,9 @@
|
|
|
218
226
|
margin-block-end: 0;
|
|
219
227
|
border-block-end: 0;
|
|
220
228
|
}
|
|
229
|
+
&::before {
|
|
230
|
+
border-inline-start: 0.25rem solid var(--link-border-color-hover);
|
|
231
|
+
}
|
|
221
232
|
}
|
|
222
233
|
&:hover {
|
|
223
234
|
.qld-icon {
|
|
@@ -284,6 +295,9 @@
|
|
|
284
295
|
/* House keeping */
|
|
285
296
|
--icon-dir: 1;
|
|
286
297
|
--navbar-max-width: 26.25rem;
|
|
298
|
+
--border-width: 1px;
|
|
299
|
+
--nav-link-padding-block: 0.625rem;
|
|
300
|
+
|
|
287
301
|
:dir(rtl) {
|
|
288
302
|
--icon-dir: -1;
|
|
289
303
|
}
|
|
@@ -434,6 +448,9 @@
|
|
|
434
448
|
display: none;
|
|
435
449
|
}
|
|
436
450
|
.container {
|
|
451
|
+
--padding-block-size: calc(var(--nav-link-padding-block) * 2);
|
|
452
|
+
min-height: calc(var(--padding-block-size) + 2rem);
|
|
453
|
+
min-height: round(up, calc(var(--padding-block-size) + 2rem), 1px);
|
|
437
454
|
position: relative;
|
|
438
455
|
}
|
|
439
456
|
.nav-item {
|
|
@@ -453,6 +470,7 @@
|
|
|
453
470
|
background-color: var(--dropdown-bg-color);
|
|
454
471
|
border-block-end: var(--horizontal-bar-border-width) solid var(--dropdown-bg-color);
|
|
455
472
|
font-weight: 600;
|
|
473
|
+
z-index: 20;
|
|
456
474
|
&:hover {
|
|
457
475
|
background-color: var(--dropdown-bg-color);
|
|
458
476
|
border-block-end: var(--horizontal-bar-border-width) solid var(--link-border-color-hover);
|
|
@@ -475,7 +493,7 @@
|
|
|
475
493
|
.navbar-nav a.nav-link,
|
|
476
494
|
a.dropdown-item {
|
|
477
495
|
color: var(--link-color);
|
|
478
|
-
padding-block:
|
|
496
|
+
padding-block: var(--nav-link-padding-block);
|
|
479
497
|
padding-inline: 0.75rem;
|
|
480
498
|
display: flex;
|
|
481
499
|
line-height: 2rem;
|
|
@@ -517,10 +535,7 @@
|
|
|
517
535
|
}
|
|
518
536
|
}
|
|
519
537
|
.dropdown-menu.show {
|
|
520
|
-
--horizontal-bar-border-
|
|
521
|
-
var(--horizontal-bar-border-width) * 2
|
|
522
|
-
);
|
|
523
|
-
margin-block-start: calc(var(--horizontal-bar-border-widthx2) - 1px);
|
|
538
|
+
margin-block-start: calc(var(--horizontal-bar-border-width) - var(--border-width));
|
|
524
539
|
inset-inline: 0;
|
|
525
540
|
background-color: var(--dropdown-bg-color);
|
|
526
541
|
padding: 4rem;
|
|
@@ -533,16 +548,21 @@
|
|
|
533
548
|
grid-template-columns: repeat(3, 1fr);
|
|
534
549
|
column-gap: 2rem;
|
|
535
550
|
row-gap: 0;
|
|
551
|
+
z-index: 10;
|
|
552
|
+
border-width: 0;
|
|
536
553
|
@include media-breakpoint-up(xl) {
|
|
537
554
|
column-gap: 4rem;
|
|
538
555
|
row-gap: 0;
|
|
539
556
|
}
|
|
557
|
+
@include media-breakpoint-up(md) {
|
|
558
|
+
padding-block: 3rem;
|
|
559
|
+
}
|
|
540
560
|
&::before {
|
|
541
561
|
content: "";
|
|
542
562
|
position: absolute;
|
|
543
563
|
height: var(--horizontal-bar-border-width);
|
|
544
564
|
inset: 0;
|
|
545
|
-
inset-block-start:
|
|
565
|
+
inset-block-start: 0;
|
|
546
566
|
background-color: var(--dropdown-bg-color);
|
|
547
567
|
}
|
|
548
568
|
li {
|
|
@@ -563,9 +583,9 @@
|
|
|
563
583
|
padding-inline-start: 0;
|
|
564
584
|
padding-inline-end: 0.5rem;
|
|
565
585
|
white-space: normal;
|
|
566
|
-
border-block-end:
|
|
586
|
+
border-block-end: var(--border-width) solid var(--border-color);
|
|
567
587
|
padding-block-start: 1rem;
|
|
568
|
-
padding-block-end: calc(1rem -
|
|
588
|
+
padding-block-end: calc(1rem - var(--border-width));
|
|
569
589
|
gap: 0.75rem;
|
|
570
590
|
font-weight: 600;
|
|
571
591
|
transition:
|
|
@@ -615,7 +635,7 @@
|
|
|
615
635
|
grid-column: 1 / -1;
|
|
616
636
|
.dropdown-item {
|
|
617
637
|
border-block-end: 0;
|
|
618
|
-
padding-block
|
|
638
|
+
padding-block: 0;
|
|
619
639
|
gap: 1rem;
|
|
620
640
|
transition: gap var(--animation-time) ease-in-out;
|
|
621
641
|
font-size: 1.5rem;
|
|
@@ -646,17 +666,18 @@
|
|
|
646
666
|
flex-direction: row-reverse;
|
|
647
667
|
padding-inline-end: 0.5rem;
|
|
648
668
|
gap: 0.5rem;
|
|
669
|
+
font-size: 1.25rem;
|
|
649
670
|
transition:
|
|
650
671
|
gap var(--animation-time) ease-in-out,
|
|
651
672
|
padding-inline-end var(--animation-time) ease-in-out;
|
|
652
673
|
&::before {
|
|
653
674
|
content: "";
|
|
654
|
-
mask-image: var(--qgds-icon-
|
|
675
|
+
mask-image: var(--qgds-icon-view-all);
|
|
655
676
|
mask-repeat: no-repeat;
|
|
656
677
|
mask-position: 0;
|
|
657
678
|
background-color: var(--action-icon-color);
|
|
658
|
-
height:
|
|
659
|
-
width:
|
|
679
|
+
height: 2rem;
|
|
680
|
+
width: 2rem;
|
|
660
681
|
transform: scaleX(var(--icon-dir));
|
|
661
682
|
}
|
|
662
683
|
&::after {
|
|
@@ -803,4 +824,5 @@
|
|
|
803
824
|
//Prevent double scrollbar when navabr is open
|
|
804
825
|
body:has(.navbar.show) {
|
|
805
826
|
overflow: hidden;
|
|
806
|
-
}
|
|
827
|
+
}
|
|
828
|
+
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import Component from
|
|
1
|
+
import Component from "../../../js/QGDSComponent.js";
|
|
2
2
|
import template from "./searchInput.hbs?raw";
|
|
3
3
|
|
|
4
4
|
export class SearchInput {
|
|
5
|
-
|
|
6
5
|
// Use the global Component class to create a new instance of the Textbox component.
|
|
7
|
-
// A data object, containing the Handlebars placeholder replacement strings, should be provided as an argument.
|
|
6
|
+
// A data object, containing the Handlebars placeholder replacement strings, should be provided as an argument.
|
|
8
7
|
|
|
9
|
-
constructor(
|
|
8
|
+
constructor(data = {}) {
|
|
10
9
|
return new Component(template, data);
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
}
|
|
@@ -7,7 +7,10 @@ exports[`SearchInput > Renders as expected 1`] = `
|
|
|
7
7
|
<div class="qld-search-input ">
|
|
8
8
|
<input id="search" name="query" class="form-control" type="text" autocomplete="off"
|
|
9
9
|
aria-label="Search website" data-collection="qgov~sp-search" data-profile="qld" data-numranks="10" data-tiers="off" data-suggestions="https://discover.search.qld.gov.au/s/suggest.json" data-results-url="https://discover.search.qld.gov.au/s/search.json" />
|
|
10
|
-
|
|
10
|
+
<button class="btn btn-primary" type="submit" id="search-button">
|
|
11
|
+
<span class="btn-icon"></span>
|
|
12
|
+
<span class="btn-label">Search</span>
|
|
13
|
+
</button>
|
|
11
14
|
<div class="suggestions suggestions__group d-none">
|
|
12
15
|
<div class="default-suggestions">
|
|
13
16
|
<div class="suggestions-category mt-16">
|
|
@@ -37,9 +40,6 @@ exports[`SearchInput > Renders as expected 1`] = `
|
|
|
37
40
|
</div>
|
|
38
41
|
<div class="dynamic-suggestions"></div>
|
|
39
42
|
</div>
|
|
40
|
-
|
|
41
|
-
<span class="btn-icon"></span>
|
|
42
|
-
<span class="btn-label">Search</span>
|
|
43
|
-
</button>
|
|
43
|
+
|
|
44
44
|
</div>"
|
|
45
45
|
`;
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
<div class="qld-search-input {{customClass}}">
|
|
5
5
|
<input id="{{ inputID }}" name="{{ inputName }}" class="form-control" type="text" autocomplete="off"
|
|
6
6
|
aria-label="{{ ariaLabel }}" {{#each tags}} data-{{@key}}="{{this}}" {{/each}} />
|
|
7
|
-
|
|
7
|
+
<button class="btn btn-primary" type="{{ buttonType }}" id="{{ buttonID }}">
|
|
8
|
+
<span class="btn-icon"></span>
|
|
9
|
+
<span class="btn-label">{{ buttonLabel }}</span>
|
|
10
|
+
</button>
|
|
8
11
|
{{#if suggestions}}
|
|
9
12
|
<div class="suggestions suggestions__group d-none">
|
|
10
13
|
<div class="default-suggestions">
|
|
@@ -36,8 +39,5 @@
|
|
|
36
39
|
<div class="dynamic-suggestions"></div>
|
|
37
40
|
</div>
|
|
38
41
|
{{/if}}
|
|
39
|
-
|
|
40
|
-
<span class="btn-icon"></span>
|
|
41
|
-
<span class="btn-label">{{ buttonLabel }}</span>
|
|
42
|
-
</button>
|
|
42
|
+
|
|
43
43
|
</div>
|
|
@@ -14,6 +14,18 @@
|
|
|
14
14
|
--qld-focus-color: var(--#{$prefix}dark-focus);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
.suggestions.d-none {
|
|
18
|
+
display: unset !important; // !important to override bootstrap d-none
|
|
19
|
+
}
|
|
20
|
+
.suggestions.d-none {
|
|
21
|
+
display: none !important; // !important to override bootstrap d-none
|
|
22
|
+
}
|
|
23
|
+
&:focus-within {
|
|
24
|
+
.suggestions.d-none {
|
|
25
|
+
display: block !important; // !important to override bootstrap d-none
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
17
29
|
// Suggestions variables
|
|
18
30
|
--suggestions-shadow:
|
|
19
31
|
0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 3px 1px rgba(0, 0, 0, 0.1);
|
|
@@ -144,6 +156,7 @@
|
|
|
144
156
|
top: 50%;
|
|
145
157
|
transform: translateY(-50%);
|
|
146
158
|
left: calc(1rem - 0.125rem);
|
|
159
|
+
pointer-events: none;
|
|
147
160
|
}
|
|
148
161
|
}
|
|
149
162
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// tag--large.stories.js
|
|
2
|
+
import { Tag } from "./Tag.js";
|
|
3
|
+
import defaultdata from "./tag.data.json";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
title: "3. Components/Tag/Large",
|
|
8
|
+
render: (args) => new Tag(args).html,
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: {
|
|
11
|
+
description: `Tags theme`,
|
|
12
|
+
control: {
|
|
13
|
+
type: "radio",
|
|
14
|
+
labels: {
|
|
15
|
+
"tag-default": "Default",
|
|
16
|
+
"tag-alt": "Alt",
|
|
17
|
+
"tag-dark": "Dark",
|
|
18
|
+
"tag-dark-alt": "Dark-alt",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
options: ["tag-default", "tag-alt", "tag-dark", "tag-dark-alt"],
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Large Tag story
|
|
27
|
+
export const Large = {
|
|
28
|
+
args: defaultdata.large,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Large Information Tag story with all variants
|
|
32
|
+
export const LargeInformation = {
|
|
33
|
+
name: "Large Information variants",
|
|
34
|
+
args: {
|
|
35
|
+
...defaultdata.info,
|
|
36
|
+
tagItems: defaultdata.info.tagItems.map((item) => ({
|
|
37
|
+
...item,
|
|
38
|
+
classes: `${item.classes} tag-large`,
|
|
39
|
+
})),
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// Large Action Tag story with all variants
|
|
44
|
+
export const LargeAction = {
|
|
45
|
+
name: "Large Action variants",
|
|
46
|
+
args: {
|
|
47
|
+
...defaultdata.action,
|
|
48
|
+
tagItems: defaultdata.action.tagItems.map((item) => ({
|
|
49
|
+
...item,
|
|
50
|
+
classes: `${item.classes} tag-large`,
|
|
51
|
+
})),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// tag--standard.stories.js
|
|
2
|
+
import { Tag } from './Tag.js';
|
|
3
|
+
import defaultdata from './tag.data.json';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
title: '3. Components/Tag/Standard',
|
|
8
|
+
render: (args) => new Tag(args).html,
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: {
|
|
11
|
+
description: `Tags theme`,
|
|
12
|
+
control: {
|
|
13
|
+
type: "radio",
|
|
14
|
+
labels: {
|
|
15
|
+
"tag-default": "Default",
|
|
16
|
+
"tag-alt": "Alt",
|
|
17
|
+
"tag-dark": "Dark",
|
|
18
|
+
"tag-dark-alt": "Dark-alt",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
options: ["tag-default", "tag-alt", "tag-dark", "tag-dark-alt"],
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Default Tag story
|
|
27
|
+
export const Default = {
|
|
28
|
+
args: defaultdata.default,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Info Tag story
|
|
32
|
+
export const Information = {
|
|
33
|
+
args: defaultdata.info,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// Action Tag story
|
|
37
|
+
export const Action = {
|
|
38
|
+
args: defaultdata.action,
|
|
39
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// tag--status.stories.js
|
|
2
|
+
import { Tag } from "./Tag.js";
|
|
3
|
+
import defaultdata from "./tag.data.json";
|
|
4
|
+
|
|
5
|
+
const sizes = {
|
|
6
|
+
"": "Small (Default)",
|
|
7
|
+
"tag-large": "Large",
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const emphasis = {
|
|
11
|
+
"tag-low": "Low",
|
|
12
|
+
"tag-high": "High",
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const types = {
|
|
16
|
+
"tag-neutral": "Neutral",
|
|
17
|
+
"tag-success": "Success",
|
|
18
|
+
"tag-warning": "Warning",
|
|
19
|
+
"tag-error": "Error",
|
|
20
|
+
"tag-information": "Information",
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Construct Status tag for all possible variants with various sizes, emphasis levels, and types.
|
|
25
|
+
* @returns {HTML} HTMLMarkup of the tags.
|
|
26
|
+
*/
|
|
27
|
+
function statusVariantsMarkup() {
|
|
28
|
+
//Map through the emphasis levels and sizes objects.
|
|
29
|
+
return Object.entries(emphasis)
|
|
30
|
+
.map(([emClass, emLabel]) => {
|
|
31
|
+
return Object.entries(sizes)
|
|
32
|
+
.map(([sizeClass, sizeLabel]) => {
|
|
33
|
+
//Construct tagItems for each types.
|
|
34
|
+
let tagItems = [];
|
|
35
|
+
Object.entries(types).map(([typeClass, typeLabel]) => {
|
|
36
|
+
tagItems.push({
|
|
37
|
+
content: `${typeLabel}`,
|
|
38
|
+
classes: `${typeClass}`,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
//Generate Tag component markup from all possible tag types.
|
|
43
|
+
const tagHtml = new Tag({
|
|
44
|
+
variant: defaultdata.status.variant,
|
|
45
|
+
tagItems: tagItems,
|
|
46
|
+
size: sizeClass,
|
|
47
|
+
emphasis: emClass,
|
|
48
|
+
}).html;
|
|
49
|
+
|
|
50
|
+
//Return Tag component markup in grid with tag's emphasis and size as label.
|
|
51
|
+
return `<div class="d-grid mb-4">
|
|
52
|
+
<div class="fw-bold">${emLabel} ${sizeLabel}</div>
|
|
53
|
+
<div class="btn-toolbar">
|
|
54
|
+
${tagHtml}
|
|
55
|
+
</div>
|
|
56
|
+
</div>`;
|
|
57
|
+
})
|
|
58
|
+
.join("");
|
|
59
|
+
})
|
|
60
|
+
.join("");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default {
|
|
64
|
+
tags: ["autodocs"],
|
|
65
|
+
title: "3. Components/Tag/Status",
|
|
66
|
+
render: (args) => new Tag(args).html,
|
|
67
|
+
argTypes: {
|
|
68
|
+
variant: {
|
|
69
|
+
description: `Tags theme`,
|
|
70
|
+
control: {
|
|
71
|
+
type: "radio",
|
|
72
|
+
labels: {
|
|
73
|
+
"tag-default": "Default",
|
|
74
|
+
"tag-alt": "Alt",
|
|
75
|
+
"tag-dark": "Dark",
|
|
76
|
+
"tag-dark-alt": "Dark-alt",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
options: ["tag-default", "tag-alt", "tag-dark", "tag-dark-alt"],
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Show the Default mode of Status tags in all possible variants.
|
|
86
|
+
* This Story can be used to help in troubleshooting.
|
|
87
|
+
*/
|
|
88
|
+
export const AllStatusVariantsInDefaultMode = {
|
|
89
|
+
render: () => {
|
|
90
|
+
return statusVariantsMarkup();
|
|
91
|
+
},
|
|
92
|
+
parameters: {
|
|
93
|
+
controls: {
|
|
94
|
+
disable: true,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
};
|
|
@@ -93,6 +93,9 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
93
93
|
list-style-type: none;
|
|
94
94
|
margin: 0.5rem 0;
|
|
95
95
|
padding: 30px;
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
gap: 1rem;
|
|
96
99
|
|
|
97
100
|
.tag-item {
|
|
98
101
|
--_padding-y: 0;
|
|
@@ -104,12 +107,11 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
104
107
|
//
|
|
105
108
|
display: inline-flex;
|
|
106
109
|
align-items: center;
|
|
107
|
-
color: var(--#{$prefix}
|
|
108
|
-
margin
|
|
109
|
-
gap: calc(var(--_padding-x) / 2);
|
|
110
|
+
color: var(--#{$prefix}light-text-lighter);
|
|
111
|
+
// margin: 0 1rem 1rem 0;
|
|
110
112
|
padding: var(--_padding-y) var(--_padding-x);
|
|
111
113
|
list-style-type: none;
|
|
112
|
-
border: var(--_border-width) solid var(--#{$prefix}
|
|
114
|
+
border: var(--_border-width) solid var(--#{$prefix}neutral-lighter);
|
|
113
115
|
border-radius: 1rem;
|
|
114
116
|
font-size: 0.875rem;
|
|
115
117
|
line-height: 1.5;
|
|
@@ -121,14 +123,13 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
121
123
|
--_padding-x: 1rem;
|
|
122
124
|
--_height: 2.5rem;
|
|
123
125
|
--_icon-size: 1.5rem;
|
|
124
|
-
margin: 0 1rem 1rem 0;
|
|
125
126
|
font-size: 1rem;
|
|
126
127
|
border-radius: calc(var(--_height) / 2);
|
|
127
128
|
}
|
|
128
129
|
|
|
129
130
|
&.tag-link {
|
|
130
|
-
color: var(--#{$prefix}
|
|
131
|
-
border-color: var(--#{$prefix}
|
|
131
|
+
color: var(--#{$prefix}light-link);
|
|
132
|
+
border-color: var(--#{$prefix}light-link);
|
|
132
133
|
|
|
133
134
|
a {
|
|
134
135
|
text-decoration: none;
|
|
@@ -144,14 +145,13 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
144
145
|
&:active,
|
|
145
146
|
&:focus,
|
|
146
147
|
&:focus-within {
|
|
147
|
-
|
|
148
|
-
color: var(--#{$prefix}
|
|
149
|
-
background-color: var(--#{$prefix}button-dark-blue);
|
|
148
|
+
color: var(--#{$prefix}light-link-on-action);
|
|
149
|
+
background-color: var(--#{$prefix}light-action-primary-hover);
|
|
150
150
|
text-decoration: underline;
|
|
151
151
|
text-underline-offset: var(--#{$prefix}link-underline-offset);
|
|
152
152
|
|
|
153
153
|
a {
|
|
154
|
-
color: var(--#{$prefix}
|
|
154
|
+
color: var(--#{$prefix}light-link-on-action);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
}
|
|
@@ -166,9 +166,9 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
&.tag-info {
|
|
169
|
-
color: var(--#{$prefix}
|
|
169
|
+
color: var(--#{$prefix}light-text-lighter);
|
|
170
170
|
border: 0;
|
|
171
|
-
background-color: var(--#{$prefix}
|
|
171
|
+
background-color: var(--#{$prefix}neutral-lightest);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -266,20 +266,22 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
-
&.tag-dark
|
|
270
|
-
|
|
269
|
+
&.tag-dark,
|
|
270
|
+
.dark &:not(.tag-dark):not(.tag-dark-alt):not(.tag-alt) {
|
|
271
|
+
background-color: var(--#{$prefix}dark-background);
|
|
271
272
|
|
|
272
273
|
.tag-item {
|
|
273
274
|
--qld-focus-color: #{$qld-dark-focus}; // because we use component-scoped context (.tag-dark) not global .dark, need to set focus color correctly here.
|
|
274
|
-
color: var(--#{$prefix}dark-text);
|
|
275
|
+
color: var(--#{$prefix}dark-text-lighter);
|
|
276
|
+
border-color: var(--#{$prefix}dark-alt-border);
|
|
275
277
|
}
|
|
276
278
|
|
|
277
279
|
.tag-link {
|
|
278
|
-
color: var(--#{$prefix}
|
|
279
|
-
border-color: var(--#{$prefix}
|
|
280
|
+
color: var(--#{$prefix}dark-link);
|
|
281
|
+
border-color: var(--#{$prefix}dark-link);
|
|
280
282
|
|
|
281
283
|
a {
|
|
282
|
-
color:
|
|
284
|
+
color: var(--#{$prefix}dark-link);
|
|
283
285
|
}
|
|
284
286
|
|
|
285
287
|
&:hover,
|
|
@@ -287,17 +289,18 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
287
289
|
&:focus,
|
|
288
290
|
&:focus-within {
|
|
289
291
|
background-color: var(--#{$prefix}dark-action-primary-hover);
|
|
290
|
-
border-color: var(--#{$prefix}
|
|
291
|
-
color: var(--#{$prefix}
|
|
292
|
+
border-color: var(--#{$prefix}dark-action-primary-hover);
|
|
293
|
+
color: var(--#{$prefix}dark-link-on-action);
|
|
292
294
|
|
|
293
295
|
a {
|
|
294
|
-
color: var(--#{$prefix}
|
|
296
|
+
color: var(--#{$prefix}dark-link-on-action);
|
|
295
297
|
}
|
|
296
298
|
}
|
|
297
299
|
}
|
|
298
300
|
|
|
299
301
|
.tag-info {
|
|
300
|
-
background-color: var(--#{$prefix}
|
|
302
|
+
background-color: var(--#{$prefix}dark-background-shade);
|
|
303
|
+
color: var(--#{$prefix}dark-text-lighter);
|
|
301
304
|
}
|
|
302
305
|
|
|
303
306
|
.tag-clear-filter-button {
|
|
@@ -310,11 +313,11 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
310
313
|
}
|
|
311
314
|
|
|
312
315
|
&.tag-alt {
|
|
313
|
-
background-color: var(--#{$prefix}light-
|
|
316
|
+
background-color: var(--#{$prefix}light-alt-background);
|
|
314
317
|
|
|
315
318
|
.tag-item {
|
|
316
|
-
color: var(--#{$prefix}
|
|
317
|
-
border-color: var(--#{$prefix}
|
|
319
|
+
color: var(--#{$prefix}light-text-lighter);
|
|
320
|
+
border-color: var(--#{$prefix}light-alt-border);
|
|
318
321
|
}
|
|
319
322
|
|
|
320
323
|
.tag-link:hover,
|
|
@@ -324,27 +327,55 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
324
327
|
}
|
|
325
328
|
|
|
326
329
|
.tag-link {
|
|
327
|
-
color: var(--#{$prefix}
|
|
328
|
-
border-color: var(--#{$prefix}
|
|
330
|
+
color: var(--#{$prefix}light-link);
|
|
331
|
+
border-color: var(--#{$prefix}light-link);
|
|
329
332
|
}
|
|
330
333
|
}
|
|
331
334
|
|
|
332
|
-
&.tag-
|
|
333
|
-
background-color: var(--#{$prefix}
|
|
335
|
+
&.tag-light {
|
|
336
|
+
background-color: var(--#{$prefix}light-background);
|
|
337
|
+
|
|
338
|
+
.tag-item {
|
|
339
|
+
color: var(--#{$prefix}light-text-lighter);
|
|
340
|
+
border-color: var(--#{$prefix}light-border);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.tag-link {
|
|
344
|
+
color: var(--#{$prefix}light-link);
|
|
345
|
+
border-color: var(--#{$prefix}light-link);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.tag-info {
|
|
349
|
+
background-color: var(--#{$prefix}light-background-shade);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.tag-clear-filter-button {
|
|
353
|
+
color: var(--#{$prefix}light-action-secondary);
|
|
354
|
+
|
|
355
|
+
&:hover {
|
|
356
|
+
color: var(--#{$prefix}light-action-secondary-hover);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
&.tag-dark-alt,
|
|
362
|
+
.dark-alt &:not(.tag-dark, .tag-dark-alt, .tag-alt) {
|
|
363
|
+
background-color: var(--#{$prefix}dark-alt-background);
|
|
334
364
|
|
|
335
365
|
.tag-item {
|
|
336
366
|
--qld-focus-color: #{$qld-dark-focus}; // because we use component-scoped context (.tag-dark) not global .dark, need to set focus color correctly here.
|
|
337
367
|
|
|
338
368
|
a {
|
|
339
|
-
color: var(--#{$prefix}dark-text);
|
|
369
|
+
color: var(--#{$prefix}dark-text-lighter);
|
|
340
370
|
}
|
|
341
371
|
|
|
342
|
-
color: var(--#{$prefix}dark-text);
|
|
372
|
+
color: var(--#{$prefix}dark-text-lighter);
|
|
343
373
|
border-color: var(--#{$prefix}dark-border);
|
|
344
374
|
}
|
|
345
375
|
|
|
346
376
|
.tag-info {
|
|
347
|
-
background-color: var(--#{$prefix}dark-
|
|
377
|
+
background-color: var(--#{$prefix}dark-alt-background-shade);
|
|
378
|
+
color: var(--#{$prefix}dark-text-lighter);
|
|
348
379
|
}
|
|
349
380
|
|
|
350
381
|
.tag-link {
|
|
@@ -353,11 +384,11 @@ $_icon-status-cancel: url('data:image/svg+xml,<svg width="32" height="32" viewBo
|
|
|
353
384
|
&:focus,
|
|
354
385
|
&:focus-within {
|
|
355
386
|
background-color: var(--#{$prefix}dark-action-primary-hover);
|
|
356
|
-
border-color: var(--#{$prefix}
|
|
357
|
-
color: var(--#{$prefix}
|
|
387
|
+
border-color: var(--#{$prefix}dark-link-on-action);
|
|
388
|
+
color: var(--#{$prefix}dark-link-on-action);
|
|
358
389
|
|
|
359
390
|
a {
|
|
360
|
-
color: var(--#{$prefix}
|
|
391
|
+
color: var(--#{$prefix}dark-link-on-action);
|
|
361
392
|
}
|
|
362
393
|
}
|
|
363
394
|
}
|