@qhealth-design-system/core 1.16.3 → 1.16.4

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.
@@ -358,12 +358,6 @@
358
358
  "asset_short_name": "Code",
359
359
  "children": []
360
360
  },
361
- {
362
- "asset_url": "/component-data_table.html",
363
- "asset_name": "Data_table",
364
- "asset_short_name": "Data_table",
365
- "children": []
366
- },
367
361
  {
368
362
  "asset_url": "/component-file_upload.html",
369
363
  "asset_name": "File_upload",
package/src/index.js CHANGED
@@ -2,16 +2,4 @@
2
2
  import "./styles/global.scss";
3
3
 
4
4
  // JS
5
- import $ from 'jquery';
6
-
7
-
8
- window.jQuery = window.$ = $;
9
- require('jquery-validation');
10
- require("slick-carousel");
11
- require( 'datatables.net' );
12
- require('prismjs');
13
-
14
- import Bloodhound from 'corejs-typeahead/dist/bloodhound.js';
15
- window.Bloodhound = Bloodhound;
16
- require('corejs-typeahead/dist/typeahead.jquery.js');
17
- require('./externals/funnelback.autocompletion-2.6.0.js');
5
+ require("prismjs");
@@ -10,12 +10,7 @@
10
10
 
11
11
  // Libraries
12
12
 
13
- @import "~slick-carousel/slick/slick.css";
14
- @import "~slick-carousel/slick/slick-theme.css";
15
- @import '~highlight.js/styles/github.css';
16
- @import '~datatables.net-dt/css/jquery.dataTables.css';
17
-
18
-
13
+ @import "~highlight.js/styles/github.css";
19
14
 
20
15
  // Box size all the things
21
16
  // https://squizmap.squiz.net/imp-bp/6400
@@ -101,11 +96,11 @@ a[href^="mailto:"] {
101
96
  overflow-wrap: break-word;
102
97
  }
103
98
 
104
- .qld__body fieldset, fieldset {
105
- padding:0;
99
+ .qld__body fieldset,
100
+ fieldset {
101
+ padding: 0;
106
102
  }
107
103
 
108
-
109
104
  // IE10 Metro responsive
110
105
  // Required for Windows 8 Metro split-screen snapping with IE10
111
106
  // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
@@ -119,7 +114,6 @@ a[href^="mailto:"] {
119
114
  margin: 0.5cm;
120
115
  }
121
116
 
122
-
123
117
  /*
124
118
  --------------------
125
119
  Components
@@ -1,25 +0,0 @@
1
- //--------------------------------------------------------------------------------------------------------------------------------------------------------------
2
- // Slick Slider
3
- //--------------------------------------------------------------------------------------------------------------------------------------------------------------
4
-
5
- .slick-slider{
6
- .slick-track{
7
- display: flex !important;
8
- }
9
-
10
- .slick-slide{
11
- height: inherit;
12
-
13
- > div{
14
- height: 100%;
15
- }
16
-
17
- li{
18
- height: 100%;
19
- }
20
- .qld__card{
21
- height: 100%;
22
- }
23
- }
24
-
25
- }
@@ -1,335 +0,0 @@
1
- (function () {
2
- "use strict";
3
-
4
- var forms = {};
5
-
6
- forms.init = function () {
7
- $.validator.addMethod("nospaces", function (value, element) {
8
- return this.optional(element) || value.indexOf(" ") === -1;
9
- });
10
-
11
- $.validator.addMethod("postcode", function (value, element) {
12
- return this.optional(element) || (!isNaN(value) && value.length === 4);
13
- });
14
-
15
- $(".qld__form--validate").each(function () {
16
- var $form = $(this);
17
-
18
- // Validate form
19
- $form.validate({
20
- // Error properties
21
- errorElement: "p",
22
- errorClass: "qld__input--error",
23
- errorAttribute: "tabindex=”0″",
24
-
25
- // Place error appropriately in DOM
26
- errorPlacement: function (error, element) {
27
- if (element.closest(".sq-form-question-answer").length > 0) {
28
- var errorPlacement = element.closest(".sq-form-question-answer").parent();
29
- var errorID = "#" + error[0].id.replace(/(:|\.|\[|\]|,|=|@)/g, "\\$1");
30
- error.attr("tabindex", "0");
31
- if (errorPlacement.find(errorID).length === 0) {
32
- if (element.closest(".qld__form-file-wrapper").length > 0) {
33
- element.closest(".qld__form-file-wrapper").before(error);
34
- } else {
35
- error.prependTo(errorPlacement);
36
- }
37
- }
38
- error.focus();
39
- } else if (element.closest(".qld__form-group").length > 0) {
40
- error.attr("tabindex", "0");
41
- error.prependTo(element.closest(".qld__form-group"));
42
- error.focus();
43
- }
44
- },
45
-
46
- // Set valid class
47
- validClass: "qld__input--valid",
48
-
49
- // Check validation on focus out
50
- onfocusout: function (element) {
51
- $(element).valid();
52
- },
53
-
54
- // Check validation on click
55
- onclick: function (element) {
56
- if (element.type === "radio" || element.type === "checkbox") {
57
- $(element).valid();
58
- }
59
- },
60
-
61
- // Highlight invalid
62
- highlight: function (element, errorClass, validClass) {
63
- if (element.type === "radio" || element.type === "checkbox") {
64
- this.findByName(element.name).addClass(errorClass).removeClass(validClass);
65
- } else if (element.type === "file" && element.classList.contains("qld__file-input")) {
66
- $(element).closest(".qld__form-file-dropzone").addClass(errorClass).removeClass(validClass);
67
- } else {
68
- $(element).addClass(errorClass).removeClass(validClass);
69
- }
70
- },
71
-
72
- // Highlight valid
73
- unhighlight: function (element, errorClass, validClass) {
74
- if (element.type === "radio" || element.type === "checkbox") {
75
- if (this.findByName(element.name).is(":checked") || this.findByName(element.name).is(":selected")) {
76
- this.findByName(element.name).removeClass(errorClass).addClass(validClass);
77
- }
78
- } else if (element.type === "file" && element.classList.contains("qld__file-input")) {
79
- $(element).closest(".qld__form-file-dropzone").removeClass(errorClass).addClass(validClass);
80
- } else {
81
- if ($(element).val().length > 0) {
82
- $(element).removeClass(errorClass).addClass(validClass);
83
- }
84
- }
85
- },
86
- });
87
-
88
- // Add custom rules if they exist
89
- if (typeof addCustomRules !== "undefined") {
90
- addCustomRules();
91
- }
92
-
93
- // Add required labels to fields
94
- updateRequiredLabels($form);
95
- $form.on("change", function () {
96
- updateRequiredLabels($(this));
97
- });
98
- // Add aria tag to helper text
99
- updateHelperText($form);
100
-
101
- //Add data auto complete to date field ---Matrix bug fix---
102
- dobFieldAutocomplete($form);
103
-
104
- // Validate select fields when option is selected
105
- $form.find("select").on("change", function () {
106
- console.log("select change");
107
- $(this).valid();
108
- });
109
- });
110
-
111
- $("form").each(function () {
112
- var $form = $(this);
113
- linkHintText($form);
114
- });
115
-
116
- $("[data-displayif-show]").each(function () {
117
- displayCheck($(this));
118
- });
119
-
120
- document.querySelectorAll("select").forEach((select) => {
121
- // First check that the select is not already wrapped
122
- if (select.closest(".qld__select")) {
123
- return;
124
- }
125
-
126
- // Create wrapper div
127
- const wrapper = document.createElement("div");
128
- wrapper.classList.add("qld__select");
129
-
130
- // Matrix specific - add error class to wrapper if the field has an error
131
- if (select.closest(".sq-form-question-error")) {
132
- wrapper.classList.add("qld__select-error");
133
- }
134
-
135
- // Insert wrapper BEFORE the select
136
- select.parentNode.insertBefore(wrapper, select);
137
-
138
- // Move the select into the wrapper
139
- wrapper.appendChild(select);
140
- });
141
- };
142
-
143
- // Make forms available to public
144
- QLD.forms = forms;
145
-
146
- document.addEventListener("DOMContentLoaded", function (event) {
147
- QLD.forms.init();
148
- });
149
-
150
- function updateRequiredLabels($form) {
151
- var $requiredFields = $form.find("[required]");
152
-
153
- $requiredFields.each(function () {
154
- var $field = $(this);
155
- var $question = $field.closest(".sq-form-question");
156
-
157
- if ($question.length > 0) {
158
- var $requiredLabel = $question.find(".sq-form-required-field");
159
-
160
- if ($requiredLabel.length === 0) {
161
- var $title = $question.find(".sq-form-question-title");
162
- $title.append(' <abbr class="sq-form-required-field" title="required">*</abbr>');
163
- }
164
- }
165
- });
166
- }
167
- function updateHelperText($form) {
168
- var $allFields = $form.find("input:not([type=hidden])");
169
-
170
- $allFields.each(function () {
171
- var currentField = $(this);
172
- var currentID = $(this).attr("id");
173
-
174
- if (currentField.parents(".sq-form-question-answer").siblings(".sq-form-question-note").length) {
175
- currentField.attr("aria-describedby", currentID + "_description");
176
- currentField
177
- .parents(".sq-form-question-answer")
178
- .siblings(".sq-form-question-note")
179
- .attr("id", currentID + "_description");
180
- }
181
- });
182
- }
183
-
184
- function dobFieldAutocomplete($form) {
185
- var $dateFieldWrapper = $form.find(".sq-form-question-datetime");
186
-
187
- if ($dateFieldWrapper.length) {
188
- var $dateFieldWrapperId = $form.find(".sq-form-question-datetime").attr("id");
189
- var $dateFieldLegend = $dateFieldWrapper.find("legend");
190
- var $dateFieldLegendId = $dateFieldWrapperId.replace(/(wrapper)/g, "legend");
191
- var $dateField = $dateFieldWrapper.find("input:not([type=hidden])");
192
-
193
- var $dateHelperTextId = $dateFieldWrapper.find("em.sq-form-question-note").attr("id");
194
-
195
- $dateFieldLegend.attr("id", $dateFieldLegendId);
196
- $dateFieldLegend.attr("aria-labeledby", $dateFieldLegendId + " " + $dateHelperTextId);
197
-
198
- if ($dateFieldWrapper.find(".sq-form-question-title").text().toLowerCase().indexOf("birth") >= 0) {
199
- $dateField.each(function () {
200
- var currentField = $(this);
201
- var currentID = $(this).attr("id");
202
- if (currentID.toLowerCase().indexOf("value_d") >= 0) {
203
- currentField.attr("autocomplete", "bday-day");
204
- } else if (currentID.toLowerCase().indexOf("value_m") >= 0) {
205
- currentField.attr("autocomplete", "bday-month");
206
- } else if (currentID.toLowerCase().indexOf("value_y") >= 0) {
207
- currentField.attr("autocomplete", "bday-year");
208
- }
209
- });
210
- }
211
- }
212
- }
213
-
214
- function displayCheck(field) {
215
- var show_hide = field[0].dataset.displayifShow;
216
- var logic_operator = field[0].dataset.displayifOperator;
217
- var rules = field[0].dataset.displayifRule.replaceAll("}{", "},{");
218
- rules = JSON.parse(rules);
219
- var rulesPassed = 0;
220
- var ruleCount = rules.length;
221
-
222
- for (var j = 0; j < ruleCount; j++) {
223
- var rule = rules[j];
224
- var fieldName = rule.field;
225
- var operator = rule.operator;
226
- var ruleValue = rule.value;
227
-
228
- var dependantOnField = $("#" + fieldName);
229
- var fieldValue = dependantOnField.val();
230
-
231
- if (fieldName.indexOf(":") !== -1) {
232
- dependantOnField = $(`[name="${fieldName}"]`);
233
- fieldValue = $(`[name="${fieldName}"]:checked`).val();
234
- }
235
-
236
- dependantOnField.on("change", function () {
237
- displayCheck(field);
238
- });
239
-
240
- if (dependantOnField.is(`input[type="checkbox"]`)) {
241
- if (!dependantOnField.is(":checked")) {
242
- fieldValue = "";
243
- }
244
- }
245
-
246
- if (operator == "equals") {
247
- if (fieldValue == ruleValue) {
248
- rulesPassed++;
249
- }
250
- } else if (operator == "less_than") {
251
- var dependantNumber = Number(fieldValue);
252
- var valueNumber = Number(ruleValue);
253
- if (!Number.isNaN(dependantNumber) && !Number.isNaN(valueNumber)) {
254
- if (dependantNumber < valueNumber) {
255
- rulesPassed++;
256
- }
257
- }
258
- } else if (operator == "greater_than") {
259
- var dependantNumber = Number(fieldValue);
260
- var valueNumber = Number(ruleValue);
261
- if (!Number.isNaN(dependantNumber) && !Number.isNaN(valueNumber)) {
262
- if (dependantNumber > valueNumber) {
263
- rulesPassed++;
264
- }
265
- }
266
- } else if (operator == "contains") {
267
- if (fieldValue.indexOf(ruleValue) !== -1) {
268
- rulesPassed++;
269
- }
270
- }
271
- }
272
-
273
- // For 'AND', check that all rules have passed
274
- if (logic_operator === "AND") {
275
- if (rulesPassed === ruleCount) {
276
- showHideField($(field).closest(".sq-form-question"), show_hide);
277
- } else {
278
- showHideField($(field).closest(".sq-form-question"), !show_hide);
279
- }
280
-
281
- // For 'OR', check that at least 1 rule has passed
282
- } else if (logic_operator === "OR") {
283
- if (rulesPassed > 0) {
284
- showHideField($(field).closest(".sq-form-question"), show_hide);
285
- } else {
286
- showHideField($(field).closest(".sq-form-question"), !show_hide);
287
- }
288
- }
289
- }
290
-
291
- function showHideField(field, show_hide) {
292
- if (show_hide) {
293
- $(field).removeClass("hidden");
294
- } else {
295
- $(field).addClass("hidden");
296
- }
297
- }
298
-
299
- function linkHintText($form) {
300
- var $allFields = $form.find(".sq-form-question-answer");
301
-
302
- // Check if any fields are found before proceeding
303
- if ($allFields.length === 0) {
304
- return; // Exit early if no fields are found
305
- }
306
-
307
- $allFields.each(function () {
308
- var $field = $(this);
309
-
310
- // Get the direct child input/textarea/select element
311
- var $inputElement = $field.find("input, textarea, select").first();
312
-
313
- if ($inputElement.length) {
314
- // Get the ID of the input element
315
- var inputId = $inputElement.attr("id");
316
-
317
- if (inputId) {
318
- // Find the sibling <em> element in the parent .sq-form-question
319
- var $hintElement = $field.closest(".sq-form-question").find("em").first();
320
-
321
- if ($hintElement.length) {
322
- // Create a unique ID for the <em> element
323
- var hintId = inputId + "_hint";
324
-
325
- // Apply the unique ID to the <em> element
326
- $hintElement.attr("id", hintId);
327
-
328
- // Add the 'aria-describedby' attribute to the input element
329
- $inputElement.attr("aria-describedby", hintId);
330
- }
331
- }
332
- }
333
- });
334
- }
335
- })();
@@ -1,153 +0,0 @@
1
-
2
- (function(QLD) {
3
- "use strict";
4
-
5
- /**
6
- * @module carouselSlick
7
- */
8
- var carouselSlick = {};
9
-
10
- /**
11
- * Initialise the location finder
12
- *
13
- * @memberof module:carouselSlick
14
- */
15
- carouselSlick.init = function() {
16
- var $slick = $(`[data-action="slick-slider"]`);
17
-
18
- var breakpoint = {
19
- "Lg": 991,
20
- "Md": 698,
21
- "Sm": 399
22
- };
23
- var slickSettingsMobileOnly = {
24
- slidesToShow: 1.3,
25
- slidesToScroll: 1,
26
- mobileFirst: true,
27
- infinite: false,
28
- centerMode: false,
29
- arrows: true,
30
- prevArrow: '<button class="qld__slick-prev"><span class="fa fa-angle-left"></span><span class="sr-only">Prev</span></button>',
31
- nextArrow: '<button class="qld__slick-next"><span class="fa fa-angle-right"></span><span class="sr-only">Next</span></button>',
32
- responsive: [
33
- {
34
- breakpoint: breakpoint.Md,
35
- settings: 'unslick'
36
- }
37
- ]
38
- };
39
-
40
- var slickSettingsThree = {
41
- slidesToShow: 1.4,
42
- slidesToScroll: 1,
43
- mobileFirst: true,
44
- infinite: false,
45
- centerMode: false,
46
- arrows: true,
47
- dots: false,
48
- appendArrows: '',
49
- appendArrows: '',
50
- prevArrow: '<button class="qld__slick-prev"><span class="fa fa-angle-left"></span><span class="sr-only">Prev</span></button>',
51
- nextArrow: '<button class="qld__slick-next"><span class="fa fa-angle-right"></span><span class="sr-only">Next</span></button>',
52
- responsive: [
53
- {
54
- breakpoint: breakpoint.Lg,
55
- settings: {
56
- slidesToShow: 3,
57
- slidesToScroll: 3
58
- }
59
- },
60
- {
61
- breakpoint: breakpoint.Md,
62
- settings: {
63
- slidesToShow: 2,
64
- slidesToScroll: 2
65
- }
66
- }
67
- ]
68
- }
69
-
70
- var slickSettingsFour = {
71
- slidesToShow: 1.4,
72
- slidesToScroll: 1,
73
- mobileFirst: true,
74
- infinite: false,
75
- centerMode: false,
76
- arrows: true,
77
- dots: false,
78
- appendArrows: '',
79
- appendDots: '',
80
- prevArrow: '<button class="qld__slick-prev"><span class="fa fa-angle-left"></span><span class="sr-only">Prev</span></button>',
81
- nextArrow: '<button class="qld__slick-next"><span class="fa fa-angle-right"></span><span class="sr-only">Next</span></button>',
82
- responsive: [
83
- {
84
- breakpoint: breakpoint.Lg,
85
- settings: {
86
- dots: true,
87
- slidesToShow: 4,
88
- slidesToScroll: 4
89
- }
90
- },
91
- {
92
- breakpoint: breakpoint.Md,
93
- settings: {
94
- slidesToShow: 2,
95
- slidesToScroll: 2
96
- }
97
- }
98
- ]
99
- }
100
-
101
- if($slick.length) {
102
- $slick.each(function() {
103
- var $this = $(this);
104
- if ($this.attr('data-type') == 'mobile-only' && $this.children('li').length > 1) {
105
- slickSettingsMobileOnly.appendArrows = $this.next().find('.qld__slick-controls');
106
- $this.slick(slickSettingsMobileOnly);
107
- } else if ($this.attr('data-type') == 'one'){
108
- slickSettingsMobileOnly.appendArrows = $this.next().find('.qld__slick-controls');
109
- slickSettingsMobileOnly.appendDots = $this.next().find('.qld__slick-controls');
110
- $this.slick(slickSettingsMobileOnly);
111
- }
112
- else if ($this.attr('data-type') == 'two'){
113
- slickSettingsMobileOnly.appendArrows = $this.next().find('.qld__slick-controls');
114
- slickSettingsMobileOnly.appendDots = $this.next().find('.qld__slick-controls');
115
- $this.slick(slickSettingsMobileOnly);
116
- }
117
- else if ($this.attr('data-type') == 'four'){
118
- slickSettingsFour.appendArrows = $this.next().find('.qld__slick-controls');
119
- slickSettingsFour.appendDots = $this.next().find('.qld__slick-controls');
120
- $this.slick(slickSettingsFour);
121
- } else if ($this.attr('data-type') == 'three'){
122
- slickSettingsThree.appendArrows = $this.next().find('.qld__slick-controls');
123
- slickSettingsThree.appendDots = $this.next().find('.qld__slick-controls');
124
- $this.slick(slickSettingsThree);
125
- }
126
- });
127
-
128
- $(window).on("resize", function () {
129
- if ($(window).width() > breakpoint.Md) {
130
- return;
131
- }
132
-
133
- $slick.each(function() {
134
- var $this = $(this);
135
-
136
- if (!$this.hasClass("slick-initialized") && $this.attr('data-type') == 'mobile-only' && $this.children('li').length > 1) {
137
- $this.slick(slickSettingsMobileOnly);
138
- }
139
- });
140
- });
141
- }
142
- }
143
-
144
- var QLD = QLD ? QLD : {};
145
- QLD.carouselSlick = carouselSlick;
146
- window.QLD = QLD;
147
-
148
- document.addEventListener("DOMContentLoaded", function(event) {
149
- if ($(`[data-action="slick-slider"]`).length > 0) {
150
- QLD.carouselSlick.init();
151
- }
152
- });
153
- }(window.QLD));