@qhealth-design-system/core 1.22.2 → 1.23.0
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/.storybook/assets/image-position-demo-portrait.svg +54 -0
- package/.storybook/assets/image-position-demo.svg +55 -0
- package/.storybook/globals.js +9 -0
- package/.storybook/preview.js +8 -1
- package/CHANGELOG.md +2 -0
- package/README.md +0 -6
- package/package.json +13 -33
- package/src/assets/img/svg-icons.svg +154 -154
- package/src/component-loader.js +11 -2
- package/src/components/_global/css/admin/component.scss +1 -0
- package/src/components/_global/css/btn/component.scss +9 -0
- package/src/components/_global/css/img/image-position-utility-classes.scss +30 -0
- package/src/components/_global/css/img/image-ratio-utility-classes.scss +41 -0
- package/src/components/_global/css/img/images.scss +74 -5
- package/src/components/_global/css/modal/component.scss +1 -0
- package/src/components/_global/js/animate/global.js +272 -294
- package/src/components/_global/js/collapsible.js +3 -3
- package/src/components/_global/js/global.js +304 -316
- package/src/components/_global/js/legacyGlobal.js +63 -0
- package/src/components/_global/js/modal/global.js +218 -223
- package/src/components/_global/js/popover/controller.js +4 -4
- package/src/components/_global/js/tabs/global.js +264 -276
- package/src/components/a-z_listing/js/global.js +106 -92
- package/src/components/accordion/css/component.scss +24 -41
- package/src/components/accordion/html/component.hbs +23 -5
- package/src/components/accordion/js/global.js +5 -10
- package/src/components/basic_search/js/global.js +0 -7
- package/src/components/code/js/global.js +6 -12
- package/src/components/file_upload/js/global.js +1 -5
- package/src/components/internal_navigation/css/component.scss +2 -2
- package/src/components/internal_navigation/html/component.hbs +16 -1
- package/src/components/main_navigation/js/global.js +341 -335
- package/src/components/overflow_menu/css/component.scss +1 -0
- package/src/components/search_box/css/component.scss +0 -1
- package/src/components/tab/js/global.js +5 -10
- package/src/components/toggle_tip/js/global.js +0 -6
- package/src/components/tool_tip/js/global.js +0 -6
- package/src/components/video_player/css/component.scss +27 -9
- package/src/components/video_player/html/component.hbs +32 -6
- package/src/components/video_player/js/global.js +8 -1
- package/src/index.js +4 -0
- package/src/stories/Accordion/accordion.stories.js +1 -0
- package/src/stories/Banner/bannerContained.stories.js +123 -0
- package/src/stories/Flexbox/Flexbox.stories.js +316 -0
- package/src/stories/Image/Image.stories.js +182 -0
- package/src/stories/Templates/ContentPage.stories.js +101 -0
- package/src/stories/Templates/LandingPage.stories.js +193 -0
- package/src/stories/Templates/templateHelpers.js +102 -0
- package/src/stories/VideoPlayer/VideoPlayer.stories.js +16 -0
- package/src/styles/imports/utilities.scss +15 -25
- package/src/styles/imports/variables.scss +26 -0
- package/src/components/_global/html/head.html +0 -22
- package/src/components/_global/html/scripts.html +0 -28
- package/src/components/_global/js/_polyfills/global.js +0 -19
- package/src/components/_template/html/component-page.html +0 -75
- package/src/components/_template/js/global.js +0 -3
- package/src/components/accordion/html/accordion-group.html +0 -163
- package/src/components/accordion/html/default.html +0 -99
- package/src/components/banner_basic/js/global.js +0 -3
- package/src/components/loading_spinner/js/global.js +0 -3
- package/src/components/pagination/html/default.html +0 -39
- package/src/components/search_box/html/component.html +0 -26
- package/src/data/current.json +0 -400
- package/src/data/current_admin.json +0 -305
- package/src/data/model_component.js +0 -14
- package/src/data/site.json +0 -977
- package/src/externals/tinymce_classes.css +0 -62
- package/src/html/component-global-elements.html +0 -2857
- package/src/html/component-horizontal_rule.html +0 -647
- package/src/html/component-internal_navigation.html +0 -583
- package/src/html/component-left_hand_navigation.html +0 -57
- package/src/html/component-main_navigation.html +0 -583
- package/src/html/component-multi_column.html +0 -582
- package/src/html/components.html +0 -354
- package/src/html/home.html +0 -1898
- package/src/html/index.html +0 -129
- package/src/html/inner-with-nav.html +0 -605
- package/src/html/inner.html +0 -618
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { initComponents } from "../../../.storybook/decorators";
|
|
2
|
+
import { initMegaMenu } from "../../components/mega_main_navigation/js/global";
|
|
3
|
+
import initCtaLinks from "../../components/_global/js/cta_links/global";
|
|
4
|
+
import initCards from "../../components/card_no_action/js/global";
|
|
5
|
+
import initBannerAdvanced from "../../components/banner_advanced/js/global";
|
|
6
|
+
import initPromoPanel from "../../components/promo_panel/js/global";
|
|
7
|
+
import CardSingleActionMeta from "../Cards/CardSingleAction.stories.js";
|
|
8
|
+
import ToowoombaImage from "../Cards/Toowoomba-web.jpeg";
|
|
9
|
+
import {
|
|
10
|
+
renderSiteHeader,
|
|
11
|
+
renderSiteFooter,
|
|
12
|
+
renderPrefooter,
|
|
13
|
+
renderAdvancedBanner,
|
|
14
|
+
renderPromoPanel,
|
|
15
|
+
icon,
|
|
16
|
+
} from "./templateHelpers.js";
|
|
17
|
+
|
|
18
|
+
// "Our facilities": a feature card (image on the right) beside a link list of
|
|
19
|
+
// related facilities. The card mirrors the card_feature component's markup so it
|
|
20
|
+
// sits cleanly in a grid column, with contact links in its footer.
|
|
21
|
+
const facilitiesSection = () => {
|
|
22
|
+
const contact = (iconName, text, href) =>
|
|
23
|
+
`<li><a class="qld__card__footer-link" href="${href}">${icon(iconName, "qld__card__footer-link-icon")}<span>${text}</span></a></li>`;
|
|
24
|
+
|
|
25
|
+
const facilityLink = (text) => `<li><a href="#">${text}</a></li>`;
|
|
26
|
+
|
|
27
|
+
return `
|
|
28
|
+
<section class="qld__body">
|
|
29
|
+
<div class="container-fluid">
|
|
30
|
+
<h2>Our facilities</h2>
|
|
31
|
+
<div class="row">
|
|
32
|
+
<div class="col-xs-12 col-lg-8">
|
|
33
|
+
<div class="qld__card qld__card__multi-action qld__card--image qld__card__multi-action--feature qld__card__multi-action--image-right">
|
|
34
|
+
<div class="qld__card__image-wrapper">
|
|
35
|
+
<div
|
|
36
|
+
class="qld__responsive-media-img--bg"
|
|
37
|
+
style="background-image: url('${ToowoombaImage}');"
|
|
38
|
+
role="img"
|
|
39
|
+
aria-label="Toowoomba Hospital"
|
|
40
|
+
></div>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="qld__card__inner">
|
|
43
|
+
<div class="qld__card__content">
|
|
44
|
+
<div class="qld__card__content-inner">
|
|
45
|
+
<h3 class="qld__card__title">
|
|
46
|
+
<a class="qld__card--clickable__link" href="#">Toowoomba Hospital</a>
|
|
47
|
+
</h3>
|
|
48
|
+
<p class="qld__card__description">Address: Pechey St, Toowoomba QLD 4350</p>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="qld__card__footer">
|
|
52
|
+
<hr class="qld__horizontal-rule" aria-hidden="true" />
|
|
53
|
+
<div class="qld__card__footer-inner">
|
|
54
|
+
<ul class="qld__link-list">
|
|
55
|
+
${contact("phone", "Phone 07 4616 6000", "tel:0746166000")}
|
|
56
|
+
${contact("alert-warning", "For emergencies call 000", "tel:000")}
|
|
57
|
+
${contact("phone", "For non-urgent health advice call 13 HEALTH (13 43 25 84)", "tel:134325")}
|
|
58
|
+
</ul>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="col-xs-12 col-lg-4">
|
|
65
|
+
<h3>Hospitals and health centres</h3>
|
|
66
|
+
<ul aria-label="Hospitals and health centres" class="qld__link-columns">
|
|
67
|
+
${facilityLink("Baillie Henderson Hospital")}
|
|
68
|
+
${facilityLink("Warwick Hospital")}
|
|
69
|
+
${facilityLink("Kingaroy Hospital")}
|
|
70
|
+
${facilityLink("Dalby Hospital")}
|
|
71
|
+
<li class="qld__link-columns__all-link">
|
|
72
|
+
<a href="#" class="qld__cta-link qld__cta-link--view-all">All hospitals and facilities</a>
|
|
73
|
+
</li>
|
|
74
|
+
</ul>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</section>
|
|
79
|
+
`;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// "Our services": a grid of icon cards. Reuses the Card (single action) story so
|
|
83
|
+
// the grid stays in sync with the component; only the section content differs.
|
|
84
|
+
const serviceCard = (id, name, iconName) => ({
|
|
85
|
+
assetid: String(id),
|
|
86
|
+
type_code: "page_standard",
|
|
87
|
+
name,
|
|
88
|
+
metadata: {
|
|
89
|
+
shortDescription: { value: "" },
|
|
90
|
+
cardIcon: { value: iconName },
|
|
91
|
+
redirect_url: { value: "#" },
|
|
92
|
+
cardDisplayFooter: { value: "false" },
|
|
93
|
+
cardFooterContent: { value: "" },
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const servicesSection = () => {
|
|
98
|
+
const result = CardSingleActionMeta.render({
|
|
99
|
+
...CardSingleActionMeta.args,
|
|
100
|
+
cardType: "icon",
|
|
101
|
+
iconAlign: "",
|
|
102
|
+
colWidth: "col-md-6 col-lg-4",
|
|
103
|
+
showArrow: false,
|
|
104
|
+
showViewAll: true,
|
|
105
|
+
introHeading: "Our services",
|
|
106
|
+
bodyBackground: "qld__body--light",
|
|
107
|
+
// Card icons render through `iconSwitch` as Material Symbols ligatures
|
|
108
|
+
// (the font is loaded in .storybook/preview-head.html), so these are
|
|
109
|
+
// Material Symbols Rounded names.
|
|
110
|
+
children: [
|
|
111
|
+
serviceCard(1, "Community health", "groups"),
|
|
112
|
+
serviceCard(2, "Sexual health", "favorite"),
|
|
113
|
+
serviceCard(3, "Dental", "dentistry"),
|
|
114
|
+
serviceCard(4, "Maternity", "pregnant_woman"),
|
|
115
|
+
serviceCard(5, "Mental health", "psychology"),
|
|
116
|
+
serviceCard(6, "Emergency", "emergency"),
|
|
117
|
+
],
|
|
118
|
+
});
|
|
119
|
+
return typeof result === "string" ? result : result.innerHTML;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* A full landing page: header + mega main nav, an advanced hero banner (with a
|
|
124
|
+
* link list and image), an "Our facilities" section (feature card + link list)
|
|
125
|
+
* and an "Our services" grid of cards, then the pre-footer and footer.
|
|
126
|
+
*/
|
|
127
|
+
function renderLandingPage(args) {
|
|
128
|
+
const { site } = args;
|
|
129
|
+
|
|
130
|
+
return `
|
|
131
|
+
${renderSiteHeader(site)}
|
|
132
|
+
<main class="main landing" role="main">
|
|
133
|
+
${renderAdvancedBanner({
|
|
134
|
+
headingPrimary: "Darling Downs Health",
|
|
135
|
+
showHeadingBackground: true,
|
|
136
|
+
abstract:
|
|
137
|
+
"Hospitals, health services and support for the Darling Downs and South West communities.",
|
|
138
|
+
backgroundColour: "dark",
|
|
139
|
+
backgroundType: "colour",
|
|
140
|
+
showBreadcrumbs: true,
|
|
141
|
+
heroImage: "https://placehold.co/782x520",
|
|
142
|
+
heroImageAlt: "Toowoomba Hospital",
|
|
143
|
+
heroImageTreatment: "crop",
|
|
144
|
+
heroImageAlignment: "grid",
|
|
145
|
+
ctaType: "link-list",
|
|
146
|
+
})}
|
|
147
|
+
${facilitiesSection()}
|
|
148
|
+
${servicesSection()}
|
|
149
|
+
${renderPromoPanel(site, {
|
|
150
|
+
title: "Find a health service near you",
|
|
151
|
+
abstract:
|
|
152
|
+
"Search our directory of hospitals, community health centres and support services across the Darling Downs and South West.",
|
|
153
|
+
imageAlignment: "qld__promo-panel--image-right",
|
|
154
|
+
bodyBackground: "qld__body--dark",
|
|
155
|
+
promoPanelIcon: undefined,
|
|
156
|
+
})}
|
|
157
|
+
${renderPrefooter(site, { pageType: "landing" })}
|
|
158
|
+
</main>
|
|
159
|
+
${renderSiteFooter(site)}
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export default {
|
|
164
|
+
title: "4. Templates/Landing page",
|
|
165
|
+
render: renderLandingPage,
|
|
166
|
+
parameters: {
|
|
167
|
+
layout: "fullscreen",
|
|
168
|
+
docs: {
|
|
169
|
+
description: {
|
|
170
|
+
component:
|
|
171
|
+
"A representative landing page assembled from the design system's " +
|
|
172
|
+
"layout and component stories: header with the horizontal mega " +
|
|
173
|
+
"navigation, an advanced hero banner with a link list, an 'Our " +
|
|
174
|
+
"facilities' section pairing a feature card with a link list, an " +
|
|
175
|
+
"'Our services' grid of cards, then the pre-footer and footer.",
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
decorators: [
|
|
180
|
+
initComponents([
|
|
181
|
+
initMegaMenu,
|
|
182
|
+
initCtaLinks,
|
|
183
|
+
initCards,
|
|
184
|
+
initBannerAdvanced,
|
|
185
|
+
initPromoPanel,
|
|
186
|
+
]),
|
|
187
|
+
],
|
|
188
|
+
argTypes: {
|
|
189
|
+
site: { table: { disable: true } },
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
export const Default = {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Shared building blocks for the page-template demo stories.
|
|
2
|
+
//
|
|
3
|
+
// These templates don't introduce any new markup of their own — they stitch
|
|
4
|
+
// together the existing component stories so the demos stay in sync with the
|
|
5
|
+
// components they showcase. Each helper calls the relevant story's own `render`
|
|
6
|
+
// (exported as `meta.render`) with that story's default args, letting callers
|
|
7
|
+
// override only what a page needs. This is the same approach Header.js uses to
|
|
8
|
+
// embed the mega nav.
|
|
9
|
+
|
|
10
|
+
import { renderHeader, headerArgs } from "../Header/Header.js";
|
|
11
|
+
import FooterMeta from "../Footer/Footer.stories.js";
|
|
12
|
+
import PrefooterMeta from "../Prefooter/Prefooter.stories.js";
|
|
13
|
+
import BannerBasicMeta from "../Banner/bannerBasic.stories.js";
|
|
14
|
+
import BannerAdvancedMeta from "../Banner/bannerAdvanced.stories.js";
|
|
15
|
+
import SideNavMeta from "../Navigation/InternalNavigation/InternalNavigation.stories.js";
|
|
16
|
+
import InPageNavMeta from "../Navigation/InPageNavigation/InPageNavigation.stories.js";
|
|
17
|
+
import PromoPanelMeta from "../PromoPanel/PromoPanel.stories.js";
|
|
18
|
+
import { dummyText, iconSpritePath } from "../../../.storybook/globals";
|
|
19
|
+
|
|
20
|
+
/** An inline SVG icon referencing the shared sprite (as `iconSwitch` produces). */
|
|
21
|
+
export const icon = (name, extraClass = "") =>
|
|
22
|
+
`<svg class="qld__icon ${extraClass}" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><use href="${iconSpritePath}#${name}"></use></svg>`;
|
|
23
|
+
|
|
24
|
+
/** Header chrome (pre-header, logo, search) plus the horizontal mega nav. */
|
|
25
|
+
export const renderSiteHeader = (site) => renderHeader({ ...headerArgs, site });
|
|
26
|
+
|
|
27
|
+
/** Footer. `site` carries the shared `coreSiteIcons` metadata the SVGs need. */
|
|
28
|
+
export const renderSiteFooter = (site) =>
|
|
29
|
+
FooterMeta.render({ ...FooterMeta.args, site });
|
|
30
|
+
|
|
31
|
+
/** Pre-footer ("Last updated" + "Back to top"). */
|
|
32
|
+
export const renderPrefooter = (site, overrides = {}) =>
|
|
33
|
+
PrefooterMeta.render({ ...PrefooterMeta.args, site, ...overrides });
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Page banner. The basic banner story renders into a detached container (so it
|
|
37
|
+
* can swap in the bundled texture image), so unwrap it to a markup string.
|
|
38
|
+
*/
|
|
39
|
+
export const renderBanner = (overrides = {}) => {
|
|
40
|
+
const result = BannerBasicMeta.render({
|
|
41
|
+
...BannerBasicMeta.args,
|
|
42
|
+
...overrides,
|
|
43
|
+
});
|
|
44
|
+
return typeof result === "string" ? result : result.innerHTML;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Advanced banner (hero image + a link-list, icon-tile or button CTA). Like the
|
|
49
|
+
* basic banner it renders into a detached container so it can swap in a bundled
|
|
50
|
+
* hero image, so unwrap it to a markup string.
|
|
51
|
+
*/
|
|
52
|
+
export const renderAdvancedBanner = (overrides = {}) => {
|
|
53
|
+
const result = BannerAdvancedMeta.render({
|
|
54
|
+
...BannerAdvancedMeta.args,
|
|
55
|
+
...overrides,
|
|
56
|
+
});
|
|
57
|
+
return typeof result === "string" ? result : result.innerHTML;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/** Side (internal) navigation for the current section. */
|
|
61
|
+
export const renderSideNav = (overrides = {}) =>
|
|
62
|
+
SideNavMeta.render({ ...SideNavMeta.args, ...overrides });
|
|
63
|
+
|
|
64
|
+
/** "On this page" in-page navigation. It scans `#content` for headings at run time. */
|
|
65
|
+
export const renderInPageNav = (overrides = {}) =>
|
|
66
|
+
InPageNavMeta.render({ ...InPageNavMeta.args, ...overrides });
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Promo panel. Like the banners it renders into a detached container (so it can
|
|
70
|
+
* swap in the bundled promo image), so unwrap it to a markup string. `site`
|
|
71
|
+
* carries the `coreSiteIcons` metadata the panel's icon SVG references — the
|
|
72
|
+
* template stories render children directly, bypassing the global `site` arg.
|
|
73
|
+
*/
|
|
74
|
+
export const renderPromoPanel = (site, overrides = {}) => {
|
|
75
|
+
const result = PromoPanelMeta.render({
|
|
76
|
+
...PromoPanelMeta.args,
|
|
77
|
+
site,
|
|
78
|
+
...overrides,
|
|
79
|
+
});
|
|
80
|
+
return typeof result === "string" ? result : result.innerHTML;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* A block of representative page copy: a handful of `h2` sections (each with a
|
|
85
|
+
* short `h3` sub-section) so the in-page nav has real anchors to list.
|
|
86
|
+
*/
|
|
87
|
+
export const contentBody = () => {
|
|
88
|
+
const section = (heading, sub) => `
|
|
89
|
+
<h2>${heading}</h2>
|
|
90
|
+
<p>${dummyText}</p>
|
|
91
|
+
<p>${dummyText}</p>
|
|
92
|
+
<h3>${sub}</h3>
|
|
93
|
+
<p>${dummyText}</p>
|
|
94
|
+
`;
|
|
95
|
+
|
|
96
|
+
return [
|
|
97
|
+
section("Overview", "Who this is for"),
|
|
98
|
+
section("Eligibility", "What you need"),
|
|
99
|
+
section("How to apply", "Step by step"),
|
|
100
|
+
section("After you apply", "What happens next"),
|
|
101
|
+
].join("");
|
|
102
|
+
};
|
|
@@ -261,15 +261,31 @@ export const TranscriptToggle = {
|
|
|
261
261
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
262
262
|
|
|
263
263
|
const button = canvasElement.querySelector(".qld__accordion__title");
|
|
264
|
+
|
|
265
|
+
// The label sync rewrites textContent on each toggle. Assert the icons
|
|
266
|
+
// sitting alongside the text survive it — writing to their wrapper
|
|
267
|
+
// instead of the text span would silently remove them.
|
|
268
|
+
const expectIconsIntact = async () => {
|
|
269
|
+
await expect(
|
|
270
|
+
button.querySelector("use[href$='#transcript']"),
|
|
271
|
+
).toBeInTheDocument();
|
|
272
|
+
await expect(
|
|
273
|
+
button.querySelector("use[href$='#chevron-up']"),
|
|
274
|
+
).toBeInTheDocument();
|
|
275
|
+
};
|
|
276
|
+
|
|
264
277
|
await expect(button).toHaveTextContent("Show transcript");
|
|
265
278
|
await expect(button).toHaveAttribute("aria-expanded", "false");
|
|
279
|
+
await expectIconsIntact();
|
|
266
280
|
|
|
267
281
|
await userEvent.click(button);
|
|
268
282
|
await expect(button).toHaveTextContent("Hide transcript");
|
|
269
283
|
await expect(button).toHaveAttribute("aria-expanded", "true");
|
|
284
|
+
await expectIconsIntact();
|
|
270
285
|
|
|
271
286
|
await userEvent.click(button);
|
|
272
287
|
await expect(button).toHaveTextContent("Show transcript");
|
|
273
288
|
await expect(button).toHaveAttribute("aria-expanded", "false");
|
|
289
|
+
await expectIconsIntact();
|
|
274
290
|
},
|
|
275
291
|
};
|
|
@@ -319,31 +319,21 @@ a.qld__max-width {
|
|
|
319
319
|
Border radius utility
|
|
320
320
|
*/
|
|
321
321
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
@include QLD-media(lg) {
|
|
338
|
-
border-radius: $QLD-border-radius-lg;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.qld__border-radius--lg {
|
|
343
|
-
border-radius: $QLD-border-radius-lg;
|
|
344
|
-
|
|
345
|
-
@include QLD-media(lg) {
|
|
346
|
-
border-radius: $QLD-border-radius-xl;
|
|
322
|
+
/*
|
|
323
|
+
* The applied radius is also published as `--QLD-applied-border-radius` so
|
|
324
|
+
* neighbouring elements can match the shape — see the captioned image rules in
|
|
325
|
+
* `_global/css/img/images.scss`.
|
|
326
|
+
*/
|
|
327
|
+
@each $name, $radii in $QLD-border-radius-scale {
|
|
328
|
+
.qld__border-radius--#{$name} {
|
|
329
|
+
--QLD-applied-border-radius: #{nth($radii, 1)};
|
|
330
|
+
border-radius: var(--QLD-applied-border-radius);
|
|
331
|
+
|
|
332
|
+
@if nth($radii, 2) {
|
|
333
|
+
@include QLD-media(lg) {
|
|
334
|
+
--QLD-applied-border-radius: #{nth($radii, 2)};
|
|
335
|
+
}
|
|
336
|
+
}
|
|
347
337
|
}
|
|
348
338
|
}
|
|
349
339
|
|
|
@@ -262,6 +262,32 @@ $QLD-border-radius-lg: map-get($QLD-space-map, 7) + px;
|
|
|
262
262
|
$QLD-border-radius-xl: map-get($QLD-space-map, 9) + px;
|
|
263
263
|
$QLD-border-radius-xxl: map-get($QLD-space-map, 12) + px;
|
|
264
264
|
|
|
265
|
+
/**
|
|
266
|
+
* QLD border-radius utility scale
|
|
267
|
+
*
|
|
268
|
+
* Each step is (mobile radius, lg-breakpoint radius). A null second value means
|
|
269
|
+
* the radius does not change at lg. Drives the `.qld__border-radius--*`
|
|
270
|
+
* utilities and anything that has to match them.
|
|
271
|
+
*/
|
|
272
|
+
$QLD-border-radius-scale: (
|
|
273
|
+
"xs": (
|
|
274
|
+
$QLD-border-radius-xs,
|
|
275
|
+
null,
|
|
276
|
+
),
|
|
277
|
+
"sm": (
|
|
278
|
+
$QLD-border-radius-sm,
|
|
279
|
+
null,
|
|
280
|
+
),
|
|
281
|
+
"md": (
|
|
282
|
+
$QLD-border-radius-md,
|
|
283
|
+
null,
|
|
284
|
+
),
|
|
285
|
+
"lg": (
|
|
286
|
+
$QLD-border-radius-lg,
|
|
287
|
+
$QLD-border-radius-xl,
|
|
288
|
+
),
|
|
289
|
+
);
|
|
290
|
+
|
|
265
291
|
/**
|
|
266
292
|
* QLD underline-thickness values
|
|
267
293
|
*/
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<!-- Metadata -->
|
|
2
|
-
<meta charset="utf-8" />
|
|
3
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
4
|
-
<!-- Imports -->
|
|
5
|
-
<link
|
|
6
|
-
href="https://fonts.googleapis.com/css?family=Noto Sans:wght@300;400;600;700;900&display=swap"
|
|
7
|
-
rel="stylesheet"
|
|
8
|
-
/>
|
|
9
|
-
|
|
10
|
-
<script
|
|
11
|
-
id="globals-loader"
|
|
12
|
-
data-current='${JSON.stringify(require("/src/data/current.json"))}'
|
|
13
|
-
data-site='${JSON.stringify(require("/src/data/site.json"))}'
|
|
14
|
-
>
|
|
15
|
-
var current = JSON.parse(
|
|
16
|
-
document.getElementById("globals-loader").getAttribute("data-current"),
|
|
17
|
-
);
|
|
18
|
-
var site = JSON.parse(
|
|
19
|
-
document.getElementById("globals-loader").getAttribute("data-site"),
|
|
20
|
-
);
|
|
21
|
-
var userData = { superAdmin: false, hhsGroup: "darling-downs" };
|
|
22
|
-
</script>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<script src="https://sdk.datastore.squiz.cloud/js/sdk-simulator.js"></script>
|
|
2
|
-
|
|
3
|
-
<script src="externals/handlebars.min-v4.7.8.js"></script>
|
|
4
|
-
<script src="externals/componentPreview.js"></script>
|
|
5
|
-
<script src="js/helpers.js"></script>
|
|
6
|
-
<script>
|
|
7
|
-
const serviceFinderData = new Datastore({
|
|
8
|
-
// serviceURL: 'http://0.0.0.0:7001/hXL8Q1uq', // Matt
|
|
9
|
-
//serviceURL: 'http://0.0.0.0:7001/afMhajMG', // Tom
|
|
10
|
-
serviceURL: "http://0.0.0.0:7001/GbO0pTqv", // Julian
|
|
11
|
-
//serviceURL: 'https://au-a14fc409.datastore.squiz.cloud',
|
|
12
|
-
jwtURL: "http://0.0.0.0:7001/__JWT/issueToken",
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
serviceFinderData.setSetting("jwtPayload", {
|
|
16
|
-
username: "jdoe",
|
|
17
|
-
fullName: "John Doe",
|
|
18
|
-
dsAdmin: false,
|
|
19
|
-
hhsGroup: "sunshine-coast",
|
|
20
|
-
isPublic: false,
|
|
21
|
-
currentHHS: true,
|
|
22
|
-
});
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<script src="externals/populateDatastoreSim.js"></script>
|
|
26
|
-
|
|
27
|
-
<!-- Configure Default HHS -->
|
|
28
|
-
<div id="qhealth__hhs" data-hhs="darling-downs"></div>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// IE 11 polyfill for .matches
|
|
2
|
-
if (!Element.prototype.matches) {
|
|
3
|
-
Element.prototype.matches =
|
|
4
|
-
Element.prototype.msMatchesSelector ||
|
|
5
|
-
Element.prototype.webkitMatchesSelector;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
// IE 11 polyfill for .closest
|
|
9
|
-
if (!Element.prototype.closest) {
|
|
10
|
-
Element.prototype.closest = function (s) {
|
|
11
|
-
var el = this;
|
|
12
|
-
|
|
13
|
-
do {
|
|
14
|
-
if (Element.prototype.matches.call(el, s)) return el;
|
|
15
|
-
el = el.parentElement || el.parentNode;
|
|
16
|
-
} while (el !== null && el.nodeType === 1);
|
|
17
|
-
return null;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<!--[if lt IE 8]>
|
|
3
|
-
<html class="no-js lt-ie8 lt-ie9" lang="en">
|
|
4
|
-
<![endif]-->
|
|
5
|
-
<!--[if IE 8]>
|
|
6
|
-
<html class="no-js lt-ie9 ie8" lang="en">
|
|
7
|
-
<![endif]-->
|
|
8
|
-
<!--[if IE 9]>
|
|
9
|
-
<html class="no-js ie9" lang="en">
|
|
10
|
-
<![endif]-->
|
|
11
|
-
<!--[if !(IE)]><!-->
|
|
12
|
-
<html class="no-js" lang="en">
|
|
13
|
-
<!--<![endif]-->
|
|
14
|
-
|
|
15
|
-
<head>
|
|
16
|
-
<title>Queensland Design System</title>
|
|
17
|
-
|
|
18
|
-
${require('../components/_global/html/head.html')}
|
|
19
|
-
</head>
|
|
20
|
-
|
|
21
|
-
<body class="qld__grid">
|
|
22
|
-
<!--noindex-->
|
|
23
|
-
${require('../components/header/html/component.hbs')({
|
|
24
|
-
"site":require('/src/data/site.json') })}
|
|
25
|
-
<!--endnoindex-->
|
|
26
|
-
${require('../components/mega_main_navigation/html/component.hbs')({
|
|
27
|
-
"site":require('/src/data/site.json') })}
|
|
28
|
-
<!-- MAIN BODY -->
|
|
29
|
-
<main class="main" role="main">
|
|
30
|
-
<section class="qld__body qld__body--breadcrumb">
|
|
31
|
-
<div class="container-fluid">
|
|
32
|
-
${require('../components/breadcrumbs/html/component.hbs')({
|
|
33
|
-
"site":require('/src/data/site.json'),
|
|
34
|
-
"current":require('/src/data/current.json'), })}
|
|
35
|
-
</div>
|
|
36
|
-
</section>
|
|
37
|
-
<!--CONTENT-->
|
|
38
|
-
<div class="qld__body">
|
|
39
|
-
<div class="container-fluid">
|
|
40
|
-
<div class="row">
|
|
41
|
-
<div class="col-xs-12 col-md-4 col-lg-3">
|
|
42
|
-
<!-- INTERNAL NAVIGATION -->
|
|
43
|
-
${require('../components/internal_navigation/html/component.hbs')({
|
|
44
|
-
"site":require('/src/data/site.json'),
|
|
45
|
-
"current":require('/src/data/current.json') })}
|
|
46
|
-
</div>
|
|
47
|
-
<div class="col-xs-12 col-md-8 col-lg-9" id="content">
|
|
48
|
-
${require('../components/_global/html/component.hbs')({
|
|
49
|
-
"manifest":require('../components/[component_name]/js/manifest.json'),
|
|
50
|
-
"component":require('!url-loader!../components/[component_name]/html/component.hbs'),
|
|
51
|
-
"component_output":require('../components/[component_name]/html/component.hbs')({
|
|
52
|
-
"component":require('../components/[component_name]/js/manifest.json').component,
|
|
53
|
-
"site":require('/src/data/site.json'),
|
|
54
|
-
"current":require('/src/data/current.json'), "content":"Lorem
|
|
55
|
-
Ipsum" }) })}
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
<!-- Page Footer Info -->
|
|
61
|
-
${require('../components/prefooter/html/component.hbs')({
|
|
62
|
-
"site":require('/src/data/site.json'),
|
|
63
|
-
"current":require('/src/data/current.json') })}
|
|
64
|
-
</main>
|
|
65
|
-
<!-- END MAIN BODY -->
|
|
66
|
-
|
|
67
|
-
<!-- FOOTER-->
|
|
68
|
-
${require('../components/footer/html/component.hbs')({
|
|
69
|
-
"site":require('/src/data/site.json') })}
|
|
70
|
-
|
|
71
|
-
<div class="footer-scripts" id="footer_js" style="display: none !important">
|
|
72
|
-
${require('../components/_global/html/scripts.html')}
|
|
73
|
-
</div>
|
|
74
|
-
</body>
|
|
75
|
-
</html>
|