qc-trousse-sdg 1.4.6 → 1.4.7

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.
Files changed (57) hide show
  1. package/README.md +10 -0
  2. package/dist/css/qc-sdg-no-grid.min.css +1 -1
  3. package/dist/css/qc-sdg.min.css +1 -1
  4. package/dist/js/qc-sdg.min.js +1 -1
  5. package/package-lock.json +4689 -0
  6. package/package.json +1 -1
  7. package/public/css/qc-doc-sdg.css +38 -6
  8. package/public/css/qc-sdg-no-grid.css +47 -20
  9. package/public/css/qc-sdg.css +47 -20
  10. package/public/index.html +58 -20
  11. package/public/js/qc-doc-sdg.js +294 -204
  12. package/public/js/qc-sdg.js +663 -315
  13. package/src/doc/qc-doc-sdg.js +6 -1
  14. package/src/doc/scss/components/_exemple.scss +5 -1
  15. package/src/doc/scss/qc-doc-sdg.scss +22 -4
  16. package/src/sdg/bases/Icon/Icon.svelte +2 -0
  17. package/src/sdg/bases/links/_links.scss +18 -12
  18. package/src/sdg/components/Alert/Alert.svelte +28 -9
  19. package/src/sdg/components/Alert/AlertWC.svelte +20 -5
  20. package/src/sdg/components/Alert/Test/AlertSvelteTest.svelte +25 -0
  21. package/src/sdg/components/Alert/Test/alertBaselineTest.html +13 -0
  22. package/src/sdg/components/Alert/Test/alertSvelteTest.html +1 -0
  23. package/src/sdg/components/Alert/_alert.html +23 -11
  24. package/src/sdg/components/Checkbox/Checkbox.svelte +6 -5
  25. package/src/sdg/components/DropdownList/DropdownList.svelte +65 -14
  26. package/src/sdg/components/DropdownList/DropdownListButton/DropdownListButton.svelte +2 -6
  27. package/src/sdg/components/DropdownList/DropdownListItems/DropdownListItems.svelte +4 -22
  28. package/src/sdg/components/DropdownList/DropdownListItems/DropdownListItemsMultiple/DropdownListItemsMultiple.svelte +2 -1
  29. package/src/sdg/components/DropdownList/DropdownListItems/DropdownListItemsSingle/DropdownListItemsSingle.svelte +2 -1
  30. package/src/sdg/components/DropdownList/SelectWC.svelte +39 -13
  31. package/src/sdg/components/DropdownList/Test/DropdownListSvelteTest.svelte +2 -2
  32. package/src/sdg/components/DropdownList/Test/dropdownListBaselineTest.html +7 -0
  33. package/src/sdg/components/DropdownList/_dropdownList.scss +7 -5
  34. package/src/sdg/components/DropdownList/_select.html +31 -5
  35. package/src/sdg/components/ExternalLink/ExternalLink.svelte +36 -74
  36. package/src/sdg/components/ExternalLink/ExternalLinkWC.svelte +44 -1
  37. package/src/sdg/components/ExternalLink/externalLinkBaselineTest.html +45 -0
  38. package/src/sdg/components/Fieldset/_fieldset.scss +1 -1
  39. package/src/sdg/components/Label/LabelText.svelte +2 -1
  40. package/src/sdg/components/Label/_label.scss +10 -2
  41. package/src/sdg/components/PivFooter/_pivFooter.html +4 -4
  42. package/src/sdg/components/TextField/Test/TextFieldEmbededTest.svelte +19 -3
  43. package/src/sdg/components/TextField/Test/textFieldBaselineTest.html +5 -2
  44. package/src/sdg/components/TextField/TextField.svelte +12 -6
  45. package/src/sdg/components/TextField/TextFieldWC.svelte +18 -6
  46. package/src/sdg/components/TextField/textFieldUtils.js +3 -2
  47. package/src/sdg/components/utils.js +23 -0
  48. package/src/sdg/qc-sdg-test.js +2 -1
  49. package/src/sdg/scss/lib/_mixins.scss +6 -0
  50. package/src/sdg/scss/utilities/_states.scss +1 -1
  51. package/tests/alert-baseline.spec.ts +23 -0
  52. package/tests/alert-svelte.spec.ts +23 -0
  53. package/tests/buildSvelteTestsIgnore.json +2 -1
  54. package/tests/dropdown-list-baseline.spec.ts +8 -0
  55. package/tests/external-link-baseline.spec.ts +30 -0
  56. package/tests/textfield-baseline.spec.ts +5 -5
  57. package/tests/textfield-svelte.spec.ts +5 -5
@@ -77903,6 +77903,29 @@
77903
77903
  // Convertit le mot en minuscules.
77904
77904
  return word.toLowerCase();
77905
77905
  }
77906
+
77907
+ static now() {
77908
+ return (new Date()).getTime();
77909
+ }
77910
+
77911
+ /**
77912
+ * Creates a MutationObserver instance with selector nesting check
77913
+ * @param rootElement
77914
+ * @param callback
77915
+ * @param selector
77916
+ * @returns {MutationObserver | null}
77917
+ */
77918
+ static createMutationObserver(rootElement, callback, selector) {
77919
+ if (!selector) {
77920
+ selector = rootElement.tagName.toLowerCase();
77921
+ }
77922
+ if (rootElement.querySelector(selector)) {
77923
+ console.warn(`Imbrication d'éléments "${selector}" détectée. Le MutationObserver n'est pas créé`);
77924
+ return null;
77925
+ }
77926
+
77927
+ return new MutationObserver(callback);
77928
+ }
77906
77929
  }
77907
77930
 
77908
77931
  function getCacheBustingParam(cssPath, currentScriptSrc) {
@@ -77949,8 +77972,8 @@
77949
77972
 
77950
77973
  LabelText[FILENAME] = 'src/sdg/components/Label/LabelText.svelte';
77951
77974
 
77952
- var root_1$6 = add_locations(from_html(`<span class="qc-required" aria-hidden="true">*</span>`), LabelText[FILENAME], [[4, 26]]);
77953
- var root$9 = add_locations(from_html(`<!><!>`, 1), LabelText[FILENAME], []);
77975
+ var root_1$6 = add_locations(from_html(`<span class="qc-required" aria-hidden="true">*</span>`), LabelText[FILENAME], [[5, 61]]);
77976
+ var root$9 = add_locations(from_html(`<span class="qc-label-text"><!></span><!>`, 1), LabelText[FILENAME], [[5, 0]]);
77954
77977
 
77955
77978
  function LabelText($$anchor, $$props) {
77956
77979
  check_target(new.target);
@@ -77982,17 +78005,19 @@
77982
78005
  };
77983
78006
 
77984
78007
  var fragment = root$9();
77985
- var node = first_child(fragment);
78008
+ var span = first_child(fragment);
78009
+ var node = child(span);
77986
78010
 
77987
78011
  html$1(node, text);
78012
+ reset(span);
77988
78013
 
77989
- var node_1 = sibling(node);
78014
+ var node_1 = sibling(span);
77990
78015
 
77991
78016
  {
77992
78017
  var consequent = ($$anchor) => {
77993
- var span = root_1$6();
78018
+ var span_1 = root_1$6();
77994
78019
 
77995
- append($$anchor, span);
78020
+ append($$anchor, span_1);
77996
78021
  };
77997
78022
 
77998
78023
  add_svelte_meta(
@@ -78001,8 +78026,8 @@
78001
78026
  }),
78002
78027
  'if',
78003
78028
  LabelText,
78004
- 4,
78005
- 12
78029
+ 5,
78030
+ 47
78006
78031
  );
78007
78032
  }
78008
78033
 
@@ -78170,7 +78195,7 @@
78170
78195
 
78171
78196
  Icon[FILENAME] = 'src/sdg/bases/Icon/Icon.svelte';
78172
78197
 
78173
- var root$7 = add_locations(from_html(`<div></div>`), Icon[FILENAME], [[16, 0]]);
78198
+ var root$7 = add_locations(from_html(`<div></div>`), Icon[FILENAME], [[17, 0]]);
78174
78199
 
78175
78200
  function Icon($$anchor, $$props) {
78176
78201
  check_target(new.target);
@@ -78184,6 +78209,7 @@
78184
78209
  height = prop($$props, 'height', 7, 'auto'),
78185
78210
  src = prop($$props, 'src', 7, ''),
78186
78211
  rotate = prop($$props, 'rotate', 7, 0),
78212
+ rootElement = prop($$props, 'rootElement', 15),
78187
78213
  rest = rest_props(
78188
78214
  $$props,
78189
78215
  [
@@ -78198,7 +78224,8 @@
78198
78224
  'width',
78199
78225
  'height',
78200
78226
  'src',
78201
- 'rotate'
78227
+ 'rotate',
78228
+ 'rootElement'
78202
78229
  ]);
78203
78230
 
78204
78231
  let attributes = tag(user_derived(() => strict_equals(width(), 'auto') ? { 'data-img-size': size() } : {}), 'attributes');
@@ -78276,6 +78303,15 @@
78276
78303
  flushSync();
78277
78304
  },
78278
78305
 
78306
+ get rootElement() {
78307
+ return rootElement();
78308
+ },
78309
+
78310
+ set rootElement($$value) {
78311
+ rootElement($$value);
78312
+ flushSync();
78313
+ },
78314
+
78279
78315
  ...legacy_api()
78280
78316
  };
78281
78317
 
@@ -78299,6 +78335,7 @@
78299
78335
  [STYLE]: { '--img-rotate': rotate() && rotate() + "deg" }
78300
78336
  }));
78301
78337
 
78338
+ bind_this(div, ($$value) => rootElement($$value), () => rootElement());
78302
78339
  append($$anchor, div);
78303
78340
 
78304
78341
  return pop($$exports);
@@ -78314,7 +78351,8 @@
78314
78351
  width: {},
78315
78352
  height: {},
78316
78353
  src: {},
78317
- rotate: {}
78354
+ rotate: {},
78355
+ rootElement: {}
78318
78356
  },
78319
78357
  [],
78320
78358
  [],
@@ -78500,7 +78538,7 @@
78500
78538
  true
78501
78539
  );
78502
78540
 
78503
- function onMountInput(input, setTextFieldRow, setValue, setInvalid) {
78541
+ function onMountInput(input, setTextFieldRow, setValue, setInvalid, setRequired) {
78504
78542
  if (!input) return;
78505
78543
  if (!input.autocomplete) {
78506
78544
  input.autocomplete = "off";
@@ -78509,6 +78547,7 @@
78509
78547
  input.id = Utils.generateId(input.type);
78510
78548
  }
78511
78549
  setValue(input.value);
78550
+ setRequired(input.required);
78512
78551
  input.addEventListener(
78513
78552
  'input',
78514
78553
  () => {
@@ -78520,10 +78559,10 @@
78520
78559
 
78521
78560
  TextField[FILENAME] = 'src/sdg/components/TextField/TextField.svelte';
78522
78561
 
78523
- var root_3$2 = add_locations(from_html(`<div class="qc-description"><!></div>`), TextField[FILENAME], [[135, 8]]);
78524
- var root_4$3 = add_locations(from_html(`<div aria-live="polite"><!></div>`), TextField[FILENAME], [[146, 8]]);
78562
+ var root_3$2 = add_locations(from_html(`<div class="qc-description"><!></div>`), TextField[FILENAME], [[141, 8]]);
78563
+ var root_4$3 = add_locations(from_html(`<div aria-live="polite"><!></div>`), TextField[FILENAME], [[152, 8]]);
78525
78564
  var root_1$4 = add_locations(from_html(`<!> <!> <!> <!> <!>`, 1), TextField[FILENAME], []);
78526
- var root_6$1 = add_locations(from_html(`<div class="qc-textfield"><!></div>`), TextField[FILENAME], [[170, 4]]);
78565
+ var root_6$1 = add_locations(from_html(`<div class="qc-textfield"><!></div>`), TextField[FILENAME], [[176, 4]]);
78527
78566
 
78528
78567
  function TextField($$anchor, $$props) {
78529
78568
  check_target(new.target);
@@ -78573,7 +78612,7 @@
78573
78612
  }),
78574
78613
  'component',
78575
78614
  TextField,
78576
- 125,
78615
+ 131,
78577
78616
  8,
78578
78617
  { componentTag: 'Label' }
78579
78618
  );
@@ -78586,7 +78625,7 @@
78586
78625
  }),
78587
78626
  'if',
78588
78627
  TextField,
78589
- 124,
78628
+ 130,
78590
78629
  4
78591
78630
  );
78592
78631
  }
@@ -78611,14 +78650,14 @@
78611
78650
  }),
78612
78651
  'if',
78613
78652
  TextField,
78614
- 134,
78653
+ 140,
78615
78654
  4
78616
78655
  );
78617
78656
  }
78618
78657
 
78619
78658
  var node_3 = sibling(node_1, 2);
78620
78659
 
78621
- add_svelte_meta(() => snippet(node_3, children), 'render', TextField, 143, 4);
78660
+ add_svelte_meta(() => snippet(node_3, () => children() ?? noop), 'render', TextField, 149, 4);
78622
78661
 
78623
78662
  var node_4 = sibling(node_3, 2);
78624
78663
 
@@ -78649,7 +78688,7 @@
78649
78688
  }),
78650
78689
  'if',
78651
78690
  TextField,
78652
- 145,
78691
+ 151,
78653
78692
  4
78654
78693
  );
78655
78694
  }
@@ -78696,7 +78735,7 @@
78696
78735
  }),
78697
78736
  'component',
78698
78737
  TextField,
78699
- 159,
78738
+ 165,
78700
78739
  4,
78701
78740
  { componentTag: 'FormError' }
78702
78741
  );
@@ -78733,7 +78772,9 @@
78733
78772
  textFieldRow = tag(state(void 0), 'textFieldRow'),
78734
78773
  defaultInvalidText = tag(
78735
78774
  user_derived(() => {
78736
- if (!maxlengthReached()) return '';
78775
+ if (!maxlengthReached()) {
78776
+ return undefined;
78777
+ }
78737
78778
 
78738
78779
  return strict_equals(lang, 'fr')
78739
78780
  ? `La limite de caractères du champ ${label()} est dépassée.`
@@ -78746,10 +78787,14 @@
78746
78787
  if (webComponentMode) return;
78747
78788
 
78748
78789
  if (!input()) {
78749
- input(get(rootElement).querySelector('input,textarea'));
78790
+ input(get(rootElement)?.querySelector('input,textarea'));
78750
78791
  }
78751
78792
 
78752
- onMountInput(input(), (textFieldRowParam) => set(textFieldRow, textFieldRowParam, true), (valueParam) => value(valueParam), (invalidParam) => invalid(invalidParam));
78793
+ onMountInput(input(), (textFieldRowParam) => set(textFieldRow, textFieldRowParam, true), (valueParam) => value(valueParam), (invalidParam) => invalid(invalidParam), (requiredParam) => {
78794
+ if (requiredParam) {
78795
+ required(requiredParam);
78796
+ }
78797
+ });
78753
78798
  });
78754
78799
 
78755
78800
  user_effect(() => {
@@ -78982,14 +79027,14 @@
78982
79027
 
78983
79028
  {
78984
79029
  var consequent_3 = ($$anchor) => {
78985
- add_svelte_meta(() => textfield($$anchor), 'render', TextField, 168, 4);
79030
+ add_svelte_meta(() => textfield($$anchor), 'render', TextField, 174, 4);
78986
79031
  };
78987
79032
 
78988
79033
  var alternate = ($$anchor) => {
78989
79034
  var div_2 = root_6$1();
78990
79035
  var node_8 = child(div_2);
78991
79036
 
78992
- add_svelte_meta(() => textfield(node_8), 'render', TextField, 175, 8);
79037
+ add_svelte_meta(() => textfield(node_8), 'render', TextField, 181, 8);
78993
79038
  reset(div_2);
78994
79039
  bind_this(div_2, ($$value) => set(rootElement, $$value), () => get(rootElement));
78995
79040
 
@@ -79007,7 +79052,7 @@
79007
79052
  }),
79008
79053
  'if',
79009
79054
  TextField,
79010
- 167,
79055
+ 173,
79011
79056
  0
79012
79057
  );
79013
79058
  }
@@ -79086,8 +79131,8 @@
79086
79131
 
79087
79132
  Checkbox[FILENAME] = 'src/sdg/components/Checkbox/Checkbox.svelte';
79088
79133
 
79089
- var root_2$6 = add_locations(from_html(`<span class="qc-required" aria-hidden="true">*</span>`), Checkbox[FILENAME], [[56, 4]]);
79090
- var root$6 = add_locations(from_html(`<div><!> <!> <!></div>`), Checkbox[FILENAME], [[64, 4]]);
79134
+ var root_2$6 = add_locations(from_html(`<span class="qc-required" aria-hidden="true">*</span>`), Checkbox[FILENAME], [[57, 4]]);
79135
+ var root$6 = add_locations(from_html(`<div><!> <!> <!></div>`), Checkbox[FILENAME], [[65, 4]]);
79091
79136
 
79092
79137
  function Checkbox($$anchor, $$props) {
79093
79138
  check_target(new.target);
@@ -79113,7 +79158,7 @@
79113
79158
  }),
79114
79159
  'if',
79115
79160
  Checkbox,
79116
- 55,
79161
+ 56,
79117
79162
  4
79118
79163
  );
79119
79164
  }
@@ -79159,10 +79204,11 @@
79159
79204
  user_effect((_) => updateChoiceInput(input(), required(), invalid(), compact(), false, false));
79160
79205
 
79161
79206
  user_effect(() => {
79162
- if (!required()) return;
79163
- if (!labelElement()) return;
79207
+ if (required() && get(label) && requiredSpan()) {
79208
+ const textSpan = labelElement().querySelector('span');
79164
79209
 
79165
- labelElement().appendChild(requiredSpan());
79210
+ textSpan.appendChild(requiredSpan());
79211
+ }
79166
79212
  });
79167
79213
 
79168
79214
  var $$exports = {
@@ -79298,11 +79344,11 @@
79298
79344
  var div = root$6();
79299
79345
  var node_1 = child(div);
79300
79346
 
79301
- add_svelte_meta(() => requiredSpanSnippet(node_1), 'render', Checkbox, 71, 8);
79347
+ add_svelte_meta(() => requiredSpanSnippet(node_1), 'render', Checkbox, 72, 8);
79302
79348
 
79303
79349
  var node_2 = sibling(node_1, 2);
79304
79350
 
79305
- add_svelte_meta(() => snippet(node_2, () => children() ?? noop), 'render', Checkbox, 72, 8);
79351
+ add_svelte_meta(() => snippet(node_2, () => children() ?? noop), 'render', Checkbox, 73, 8);
79306
79352
 
79307
79353
  var node_3 = sibling(node_2, 2);
79308
79354
 
@@ -79322,7 +79368,7 @@
79322
79368
  }),
79323
79369
  'component',
79324
79370
  Checkbox,
79325
- 73,
79371
+ 74,
79326
79372
  8,
79327
79373
  { componentTag: 'FormError' }
79328
79374
  );
@@ -79747,9 +79793,9 @@
79747
79793
 
79748
79794
  DropdownListItemsSingle[FILENAME] = 'src/sdg/components/DropdownList/DropdownListItems/DropdownListItemsSingle/DropdownListItemsSingle.svelte';
79749
79795
 
79750
- var root_3$1 = add_locations(from_html(`<span class="qc-sr-only"><!></span>`), DropdownListItemsSingle[FILENAME], [[129, 20]]);
79751
- var root_2$5 = add_locations(from_html(`<li tabindex="0" role="option"><!></li>`), DropdownListItemsSingle[FILENAME], [[113, 12]]);
79752
- var root_1$3 = add_locations(from_html(`<ul></ul>`), DropdownListItemsSingle[FILENAME], [[111, 4]]);
79796
+ var root_3$1 = add_locations(from_html(`<span class="qc-sr-only"><!></span>`), DropdownListItemsSingle[FILENAME], [[130, 20]]);
79797
+ var root_2$5 = add_locations(from_html(`<li tabindex="0" role="option"><!></li>`), DropdownListItemsSingle[FILENAME], [[114, 12]]);
79798
+ var root_1$3 = add_locations(from_html(`<ul></ul>`), DropdownListItemsSingle[FILENAME], [[112, 4]]);
79753
79799
 
79754
79800
  function DropdownListItemsSingle($$anchor, $$props) {
79755
79801
  check_target(new.target);
@@ -79793,7 +79839,7 @@
79793
79839
  event.preventDefault();
79794
79840
 
79795
79841
  if (!item.disabled) {
79796
- items().forEach((item) => assign(item, 'checked', false, 'src/​sdg/​components/​DropdownList/​DropdownListItems/​DropdownListItemsSingle/​DropdownListItemsSingle.svelte:45:34'));
79842
+ items().forEach((item) => assign(item, 'checked', false, 'src/​sdg/​components/​DropdownList/​DropdownListItems/​DropdownListItemsSingle/​DropdownListItemsSingle.svelte:46:34'));
79797
79843
  items().find((option) => strict_equals(option.value, item.value)).checked = true;
79798
79844
  selectionCallback()();
79799
79845
  }
@@ -79828,7 +79874,7 @@
79828
79874
  handleSelection(event, item);
79829
79875
  }
79830
79876
 
79831
- Utils.sleep(5).then(() => {
79877
+ tick().then(() => {
79832
79878
  if (canExit(event, index)) {
79833
79879
  handleExit()(event.key);
79834
79880
  }
@@ -79980,13 +80026,13 @@
79980
80026
  }),
79981
80027
  'if',
79982
80028
  DropdownListItemsSingle,
79983
- 128,
80029
+ 129,
79984
80030
  16
79985
80031
  );
79986
80032
  }
79987
80033
 
79988
80034
  reset(li);
79989
- validate_binding('bind:this={displayedItemsElements[index]}', [], () => get(displayedItemsElements), () => get(index), 114, 16);
80035
+ validate_binding('bind:this={displayedItemsElements[index]}', [], () => get(displayedItemsElements), () => get(index), 115, 16);
79990
80036
  bind_this(li, ($$value, index) => get(displayedItemsElements)[index] = $$value, (index) => get(displayedItemsElements)?.[index], () => [get(index)]);
79991
80037
 
79992
80038
  template_effect(() => {
@@ -80006,7 +80052,7 @@
80006
80052
  }),
80007
80053
  'each',
80008
80054
  DropdownListItemsSingle,
80009
- 112,
80055
+ 113,
80010
80056
  8
80011
80057
  );
80012
80058
 
@@ -80020,7 +80066,7 @@
80020
80066
  }),
80021
80067
  'if',
80022
80068
  DropdownListItemsSingle,
80023
- 110,
80069
+ 111,
80024
80070
  0
80025
80071
  );
80026
80072
  }
@@ -80054,8 +80100,8 @@
80054
80100
 
80055
80101
  DropdownListItemsMultiple[FILENAME] = 'src/sdg/components/DropdownList/DropdownListItems/DropdownListItemsMultiple/DropdownListItemsMultiple.svelte';
80056
80102
 
80057
- var root_2$4 = add_locations(from_html(`<li><label class="qc-choicefield-label" compact=""><input type="checkbox" class="qc-choicefield qc-compact"/> <span> </span></label></li>`), DropdownListItemsMultiple[FILENAME], [[153, 12, [[163, 16, [[168, 20], [180, 20]]]]]]);
80058
- var root_1$2 = add_locations(from_html(`<ul></ul>`), DropdownListItemsMultiple[FILENAME], [[147, 4]]);
80103
+ var root_2$4 = add_locations(from_html(`<li><label class="qc-choicefield-label" compact=""><input type="checkbox" class="qc-choicefield qc-compact"/> <span> </span></label></li>`), DropdownListItemsMultiple[FILENAME], [[154, 12, [[164, 16, [[169, 20], [181, 20]]]]]]);
80104
+ var root_1$2 = add_locations(from_html(`<ul></ul>`), DropdownListItemsMultiple[FILENAME], [[148, 4]]);
80059
80105
 
80060
80106
  function DropdownListItemsMultiple($$anchor, $$props) {
80061
80107
  check_target(new.target);
@@ -80141,11 +80187,11 @@
80141
80187
 
80142
80188
  if (displayedItems().length > 0 && !displayedItems()[index].disabled) {
80143
80189
  event.target.checked = !event.target.checked;
80144
- $$ownership_validator.mutation('displayedItems', ['displayedItems', index, 'checked'], displayedItems()[index].checked = event.target.checked, 86, 16);
80190
+ $$ownership_validator.mutation('displayedItems', ['displayedItems', index, 'checked'], displayedItems()[index].checked = event.target.checked, 87, 16);
80145
80191
  }
80146
80192
  }
80147
80193
 
80148
- Utils.sleep(5).then(() => {
80194
+ tick().then(() => {
80149
80195
  if (canExit(event, index)) {
80150
80196
  handleExit()(event.key);
80151
80197
  }
@@ -80285,8 +80331,8 @@
80285
80331
  remove_input_defaults(input);
80286
80332
  input.__change = handleChange;
80287
80333
  input.__keydown = (e) => handleKeyDown(e, get(index));
80288
- validate_binding('bind:checked={item.checked}', [], () => get(item), () => 'checked', 175, 28);
80289
- validate_binding('bind:this={displayedItemsElements[index]}', [], () => get(displayedItemsElements), () => get(index), 176, 28);
80334
+ validate_binding('bind:checked={item.checked}', [], () => get(item), () => 'checked', 176, 28);
80335
+ validate_binding('bind:this={displayedItemsElements[index]}', [], () => get(displayedItemsElements), () => get(index), 177, 28);
80290
80336
  bind_this(input, ($$value, index) => get(displayedItemsElements)[index] = $$value, (index) => get(displayedItemsElements)?.[index], () => [get(index)]);
80291
80337
 
80292
80338
  var input_value;
@@ -80321,7 +80367,7 @@
80321
80367
  }),
80322
80368
  'each',
80323
80369
  DropdownListItemsMultiple,
80324
- 148,
80370
+ 149,
80325
80371
  8
80326
80372
  );
80327
80373
 
@@ -80335,7 +80381,7 @@
80335
80381
  }),
80336
80382
  'if',
80337
80383
  DropdownListItemsMultiple,
80338
- 146,
80384
+ 147,
80339
80385
  0
80340
80386
  );
80341
80387
  }
@@ -80367,15 +80413,14 @@
80367
80413
 
80368
80414
  DropdownListItems[FILENAME] = 'src/sdg/components/DropdownList/DropdownListItems/DropdownListItems.svelte';
80369
80415
 
80370
- var root_4$2 = add_locations(from_html(`<span class="qc-dropdown-list-no-options"><!></span>`), DropdownListItems[FILENAME], [[100, 16]]);
80371
- var root$3 = add_locations(from_html(`<div class="qc-dropdown-list-items" tabindex="-1"><!> <div class="qc-dropdown-list-no-options-container" role="status"><!></div></div>`), DropdownListItems[FILENAME], [[62, 0, [[97, 4]]]]);
80416
+ var root_4$2 = add_locations(from_html(`<span class="qc-dropdown-list-no-options"><!></span>`), DropdownListItems[FILENAME], [[82, 16]]);
80417
+ var root$3 = add_locations(from_html(`<div class="qc-dropdown-list-items" tabindex="-1"><!> <div class="qc-dropdown-list-no-options-container" role="status"><!></div></div>`), DropdownListItems[FILENAME], [[45, 0, [[79, 4]]]]);
80372
80418
 
80373
80419
  function DropdownListItems($$anchor, $$props) {
80374
80420
  check_target(new.target);
80375
80421
  push($$props, true);
80376
80422
 
80377
80423
  let id = prop($$props, 'id', 7),
80378
- enableSearch = prop($$props, 'enableSearch', 7),
80379
80424
  multiple = prop($$props, 'multiple', 7),
80380
80425
  items = prop($$props, 'items', 7),
80381
80426
  displayedItems = prop($$props, 'displayedItems', 7),
@@ -80390,43 +80435,21 @@
80390
80435
 
80391
80436
  let itemsComponent = tag(state(void 0), 'itemsComponent');
80392
80437
 
80393
- let usedHeight = tag(
80394
- user_derived(() => {
80395
- const maxItemsHeight = 336;
80396
- const searchInputTotalHeight = 56;
80397
-
80398
- if (enableSearch()) {
80399
- if (displayedItems().length > 7) {
80400
- return maxItemsHeight - searchInputTotalHeight - 17;
80401
- }
80402
-
80403
- return maxItemsHeight - searchInputTotalHeight;
80404
- } else {
80405
- if (displayedItems().length > 8) {
80406
- return maxItemsHeight - 33;
80407
- }
80408
-
80409
- return maxItemsHeight;
80410
- }
80411
- }),
80412
- 'usedHeight'
80413
- );
80414
-
80415
80438
  function focus() {
80416
- Utils.sleep(5).then(() => {
80439
+ tick().then(() => {
80417
80440
  get(itemsComponent)?.focusOnFirstElement();
80418
80441
  }).catch(console.error);
80419
80442
  }
80420
80443
 
80421
80444
  function focusOnLastElement() {
80422
- Utils.sleep(5).then(() => {
80445
+ tick().then(() => {
80423
80446
  get(itemsComponent)?.focusOnLastElement();
80424
80447
  }).catch(console.error);
80425
80448
  }
80426
80449
 
80427
80450
  function focusOnFirstMatchingElement(value) {
80428
80451
  if (get(itemsComponent) && value && value.length > 0) {
80429
- Utils.sleep(5).then(() => {
80452
+ tick().then(() => {
80430
80453
  get(itemsComponent)?.focusOnFirstMatchingElement(value);
80431
80454
  }).catch(console.error);
80432
80455
  }
@@ -80454,15 +80477,6 @@
80454
80477
  flushSync();
80455
80478
  },
80456
80479
 
80457
- get enableSearch() {
80458
- return enableSearch();
80459
- },
80460
-
80461
- set enableSearch($$value) {
80462
- enableSearch($$value);
80463
- flushSync();
80464
- },
80465
-
80466
80480
  get multiple() {
80467
80481
  return multiple();
80468
80482
  },
@@ -80604,7 +80618,7 @@
80604
80618
  ),
80605
80619
  'component',
80606
80620
  DropdownListItems,
80607
- 69,
80621
+ 51,
80608
80622
  8,
80609
80623
  { componentTag: 'DropdownListItemsMultiple' }
80610
80624
  );
@@ -80649,7 +80663,7 @@
80649
80663
  ),
80650
80664
  'component',
80651
80665
  DropdownListItems,
80652
- 82,
80666
+ 64,
80653
80667
  8,
80654
80668
  { componentTag: 'DropdownListItemsSingle' }
80655
80669
  );
@@ -80661,7 +80675,7 @@
80661
80675
  }),
80662
80676
  'if',
80663
80677
  DropdownListItems,
80664
- 68,
80678
+ 50,
80665
80679
  4
80666
80680
  );
80667
80681
  }
@@ -80685,7 +80699,7 @@
80685
80699
  }),
80686
80700
  'await',
80687
80701
  DropdownListItems,
80688
- 99,
80702
+ 81,
80689
80703
  12
80690
80704
  );
80691
80705
 
@@ -80698,19 +80712,14 @@
80698
80712
  }),
80699
80713
  'if',
80700
80714
  DropdownListItems,
80701
- 98,
80715
+ 80,
80702
80716
  8
80703
80717
  );
80704
80718
  }
80705
80719
 
80706
80720
  reset(div_1);
80707
80721
  reset(div);
80708
-
80709
- template_effect(() => {
80710
- set_attribute(div, 'id', id());
80711
- set_style(div, `--dropdown-items-height: ${get(usedHeight) ?? ''};`);
80712
- });
80713
-
80722
+ template_effect(() => set_attribute(div, 'id', id()));
80714
80723
  append($$anchor, div);
80715
80724
 
80716
80725
  return pop($$exports);
@@ -80720,7 +80729,6 @@
80720
80729
  DropdownListItems,
80721
80730
  {
80722
80731
  id: {},
80723
- enableSearch: {},
80724
80732
  multiple: {},
80725
80733
  items: {},
80726
80734
  displayedItems: {},
@@ -80740,9 +80748,9 @@
80740
80748
 
80741
80749
  DropdownListButton[FILENAME] = 'src/sdg/components/DropdownList/DropdownListButton/DropdownListButton.svelte';
80742
80750
 
80743
- var root_1$1 = add_locations(from_html(`<span class="qc-dropdown-choice"><!></span>`), DropdownListButton[FILENAME], [[29, 8]]);
80744
- var root_2$3 = add_locations(from_html(`<span class="qc-dropdown-placeholder"><!></span>`), DropdownListButton[FILENAME], [[31, 8]]);
80745
- var root$2 = add_locations(from_html(`<button><!> <span><!></span></button>`), DropdownListButton[FILENAME], [[19, 0, [[34, 4]]]]);
80751
+ var root_1$1 = add_locations(from_html(`<span class="qc-dropdown-choice"><!></span>`), DropdownListButton[FILENAME], [[25, 8]]);
80752
+ var root_2$3 = add_locations(from_html(`<span class="qc-dropdown-placeholder"><!></span>`), DropdownListButton[FILENAME], [[27, 8]]);
80753
+ var root$2 = add_locations(from_html(`<button><!> <span><!></span></button>`), DropdownListButton[FILENAME], [[15, 0, [[30, 4]]]]);
80746
80754
 
80747
80755
  function DropdownListButton($$anchor, $$props) {
80748
80756
  check_target(new.target);
@@ -80753,6 +80761,7 @@
80753
80761
  disabled = prop($$props, 'disabled', 7),
80754
80762
  selectedOptionsText = prop($$props, 'selectedOptionsText', 7, ""),
80755
80763
  placeholder = prop($$props, 'placeholder', 7),
80764
+ buttonElement = prop($$props, 'buttonElement', 15),
80756
80765
  rest = rest_props(
80757
80766
  $$props,
80758
80767
  [
@@ -80764,20 +80773,11 @@
80764
80773
  'expanded',
80765
80774
  'disabled',
80766
80775
  'selectedOptionsText',
80767
- 'placeholder'
80776
+ 'placeholder',
80777
+ 'buttonElement'
80768
80778
  ]);
80769
80779
 
80770
- let button;
80771
-
80772
- function focus() {
80773
- button?.focus();
80774
- }
80775
-
80776
80780
  var $$exports = {
80777
- get focus() {
80778
- return focus;
80779
- },
80780
-
80781
80781
  get inputId() {
80782
80782
  return inputId();
80783
80783
  },
@@ -80823,12 +80823,21 @@
80823
80823
  flushSync();
80824
80824
  },
80825
80825
 
80826
+ get buttonElement() {
80827
+ return buttonElement();
80828
+ },
80829
+
80830
+ set buttonElement($$value) {
80831
+ buttonElement($$value);
80832
+ flushSync();
80833
+ },
80834
+
80826
80835
  ...legacy_api()
80827
80836
  };
80828
80837
 
80829
- var button_1 = root$2();
80838
+ var button = root$2();
80830
80839
 
80831
- attribute_effect(button_1, () => ({
80840
+ attribute_effect(button, () => ({
80832
80841
  type: 'button',
80833
80842
  id: inputId(),
80834
80843
  disabled: disabled(),
@@ -80837,7 +80846,7 @@
80837
80846
  ...rest
80838
80847
  }));
80839
80848
 
80840
- var node = child(button_1);
80849
+ var node = child(button);
80841
80850
 
80842
80851
  {
80843
80852
  var consequent = ($$anchor) => {
@@ -80864,7 +80873,7 @@
80864
80873
  }),
80865
80874
  'if',
80866
80875
  DropdownListButton,
80867
- 28,
80876
+ 24,
80868
80877
  4
80869
80878
  );
80870
80879
  }
@@ -80895,16 +80904,16 @@
80895
80904
  }),
80896
80905
  'component',
80897
80906
  DropdownListButton,
80898
- 35,
80907
+ 31,
80899
80908
  8,
80900
80909
  { componentTag: 'Icon' }
80901
80910
  );
80902
80911
  }
80903
80912
 
80904
80913
  reset(span_2);
80905
- reset(button_1);
80906
- bind_this(button_1, ($$value) => button = $$value, () => button);
80907
- append($$anchor, button_1);
80914
+ reset(button);
80915
+ bind_this(button, ($$value) => buttonElement($$value), () => buttonElement());
80916
+ append($$anchor, button);
80908
80917
 
80909
80918
  return pop($$exports);
80910
80919
  }
@@ -80916,18 +80925,19 @@
80916
80925
  expanded: {},
80917
80926
  disabled: {},
80918
80927
  selectedOptionsText: {},
80919
- placeholder: {}
80928
+ placeholder: {},
80929
+ buttonElement: {}
80920
80930
  },
80921
80931
  [],
80922
- ['focus'],
80932
+ [],
80923
80933
  true
80924
80934
  );
80925
80935
 
80926
80936
  DropdownList[FILENAME] = 'src/sdg/components/DropdownList/DropdownList.svelte';
80927
80937
 
80928
- var root_2$2 = add_locations(from_html(`<div class="qc-dropdown-list-search"><!></div>`), DropdownList[FILENAME], [[334, 20]]);
80929
- var root_3 = add_locations(from_html(`<span> </span>`), DropdownList[FILENAME], [[376, 24]]);
80930
- var root$1 = add_locations(from_html(`<div><div><!> <div tabindex="-1"><!> <div class="qc-dropdown-list-expanded" tabindex="-1" role="listbox"><!> <!> <div role="status" class="qc-sr-only"><!></div></div></div></div> <!></div>`), DropdownList[FILENAME], [[273, 0, [[278, 4, [[297, 8, [[325, 12, [[374, 16]]]]]]]]]]);
80938
+ var root_2$2 = add_locations(from_html(`<div class="qc-dropdown-list-search"><!></div>`), DropdownList[FILENAME], [[386, 20]]);
80939
+ var root_3 = add_locations(from_html(`<span> </span>`), DropdownList[FILENAME], [[427, 24]]);
80940
+ var root$1 = add_locations(from_html(`<div><div><!> <div tabindex="-1"><!> <div class="qc-dropdown-list-expanded" tabindex="-1" role="listbox"><!> <!> <div role="status" class="qc-sr-only"><!></div></div></div></div> <!></div>`), DropdownList[FILENAME], [[316, 0, [[321, 4, [[340, 8, [[369, 12, [[425, 16]]]]]]]]]]);
80931
80941
 
80932
80942
  function DropdownList($$anchor, $$props) {
80933
80943
  check_target(new.target);
@@ -80953,7 +80963,8 @@
80953
80963
  multiple = prop($$props, 'multiple', 7, false),
80954
80964
  rootElement = prop($$props, 'rootElement', 15),
80955
80965
  errorElement = prop($$props, 'errorElement', 15),
80956
- webComponentMode = prop($$props, 'webComponentMode', 7, false);
80966
+ webComponentMode = prop($$props, 'webComponentMode', 7, false),
80967
+ expanded = prop($$props, 'expanded', 15, false);
80957
80968
 
80958
80969
  const defaultPlaceholder = strict_equals(lang, "fr") ? "Faire une sélection" : "Select an option",
80959
80970
  inputId = `${id()}-input`,
@@ -80961,12 +80972,14 @@
80961
80972
  itemsId = `${id()}-items`,
80962
80973
  labelId = `${id()}-label`,
80963
80974
  errorId = `${id()}-error`,
80964
- availableWidths = ["xs", "sm", "md", "lg", "xl"];
80975
+ availableWidths = ["xs", "sm", "md", "lg", "xl"],
80976
+ buttonHeight = 40;
80965
80977
 
80966
80978
  let instance = tag(state(void 0), 'instance'),
80967
80979
  parentRow = tag(user_derived(() => get(instance)?.closest(".qc-formfield-row")), 'parentRow'),
80968
80980
  button = tag(state(void 0), 'button'),
80969
80981
  searchInput = tag(state(void 0), 'searchInput'),
80982
+ popup = tag(state(void 0), 'popup'),
80970
80983
  dropdownItems = tag(state(void 0), 'dropdownItems'),
80971
80984
  selectedItems = tag(user_derived(() => items().filter((item) => item.checked) ?? []), 'selectedItems'),
80972
80985
  selectedOptionsText = tag(
@@ -80992,7 +81005,6 @@
80992
81005
  'selectedOptionsText'
80993
81006
  ),
80994
81007
  previousValue = tag(state(proxy(value())), 'previousValue'),
80995
- expanded = tag(state(false), 'expanded'),
80996
81008
  searchText = tag(state(""), 'searchText'),
80997
81009
  hiddenSearchText = tag(state(""), 'hiddenSearchText'),
80998
81010
  displayedItems = tag(state(proxy(items())), 'displayedItems'),
@@ -81009,8 +81021,6 @@
81009
81021
  ),
81010
81022
  widthClass = tag(
81011
81023
  user_derived(() => {
81012
- webComponentMode() ? "container" : "root";
81013
-
81014
81024
  if (availableWidths.includes(width())) {
81015
81025
  return `qc-dropdown-list-${width()}`;
81016
81026
  }
@@ -81032,7 +81042,32 @@
81032
81042
  return "";
81033
81043
  }),
81034
81044
  'srItemsCountText'
81035
- );
81045
+ ),
81046
+ buttonElementYPosition = tag(state(0), 'buttonElementYPosition'),
81047
+ usedHeight = tag(
81048
+ user_derived(() => {
81049
+ const maxItemsHeight = 336;
81050
+ const searchInputTotalHeight = 56;
81051
+
81052
+ if (enableSearch()) {
81053
+ if (get(displayedItems).length > 7) {
81054
+ return maxItemsHeight - searchInputTotalHeight - 17;
81055
+ }
81056
+
81057
+ return maxItemsHeight - searchInputTotalHeight;
81058
+ } else {
81059
+ if (get(displayedItems).length > 8) {
81060
+ return maxItemsHeight - 33;
81061
+ }
81062
+
81063
+ return maxItemsHeight;
81064
+ }
81065
+ }),
81066
+ 'usedHeight'
81067
+ ),
81068
+ topOffset = tag(state(0), 'topOffset'),
81069
+ popupTopBorderThickness = tag(user_derived(() => get(topOffset) && get(topOffset) < 0 ? 1 : 0), 'popupTopBorderThickness'),
81070
+ popupBottomBorderThickness = tag(user_derived(() => get(topOffset) && get(topOffset) >= 0 ? 1 : 0), 'popupBottomBorderThickness');
81036
81071
 
81037
81072
  function focusOnSelectedOption(value) {
81038
81073
  if (get(displayedItems).length > 0) {
@@ -81046,28 +81081,28 @@
81046
81081
 
81047
81082
  function handleDropdownButtonClick(event) {
81048
81083
  event.preventDefault();
81049
- set(expanded, !get(expanded));
81084
+ expanded(!expanded());
81050
81085
  }
81051
81086
 
81052
81087
  function handleOuterEvent() {
81053
81088
  if (!Utils.componentIsActive(get(instance))) {
81054
- set(expanded, false);
81089
+ expanded(false);
81055
81090
  }
81056
81091
  }
81057
81092
 
81058
81093
  function handleTab(event) {
81059
81094
  // Le changement de focus a lieu après le lancement de l'événement clavier.
81060
81095
  // Il faut donc faire un court sleep pour avoir le nouvel élément en focus.
81061
- Utils.sleep(5).then(() => {
81096
+ tick().then(() => {
81062
81097
  if (strict_equals(event.key, "Tab") && !Utils.componentIsActive(get(instance))) {
81063
- set(expanded, false);
81098
+ expanded(false);
81064
81099
  }
81065
81100
  }).catch(console.error);
81066
81101
  }
81067
81102
 
81068
81103
  function handleEscape(event) {
81069
81104
  if (strict_equals(event.key, "Escape")) {
81070
- set(expanded, false);
81105
+ expanded(false);
81071
81106
  }
81072
81107
  }
81073
81108
 
@@ -81081,7 +81116,7 @@
81081
81116
  function handleArrowDown(event, targetComponent) {
81082
81117
  if (strict_equals(event.key, "ArrowDown") && targetComponent) {
81083
81118
  event.preventDefault();
81084
- set(expanded, true);
81119
+ expanded(true);
81085
81120
  targetComponent.focus();
81086
81121
  }
81087
81122
  }
@@ -81093,10 +81128,10 @@
81093
81128
  if (strict_equals(event.key, "ArrowDown")) {
81094
81129
  event.preventDefault();
81095
81130
 
81096
- if (get(expanded)) {
81131
+ if (expanded()) {
81097
81132
  targetComponent.focus();
81098
81133
  } else {
81099
- set(expanded, true);
81134
+ expanded(true);
81100
81135
  focusOnSelectedOption(value());
81101
81136
  }
81102
81137
  }
@@ -81104,7 +81139,7 @@
81104
81139
  if (strict_equals(event.key, "ArrowUp")) {
81105
81140
  event.preventDefault();
81106
81141
 
81107
- if (get(expanded)) {
81142
+ if (expanded()) {
81108
81143
  get(dropdownItems)?.focusOnLastElement();
81109
81144
  }
81110
81145
  }
@@ -81116,7 +81151,7 @@
81116
81151
  } else {
81117
81152
  set(hiddenSearchText, get(hiddenSearchText) + event.key);
81118
81153
 
81119
- if (get(hiddenSearchText).length > 0 && get(expanded)) {
81154
+ if (get(hiddenSearchText).length > 0 && expanded()) {
81120
81155
  get(dropdownItems)?.focusOnFirstMatchingElement(get(hiddenSearchText));
81121
81156
  }
81122
81157
  }
@@ -81131,7 +81166,7 @@
81131
81166
  }
81132
81167
 
81133
81168
  function closeDropdown(key) {
81134
- set(expanded, false);
81169
+ expanded(false);
81135
81170
  set(hiddenSearchText, "");
81136
81171
 
81137
81172
  if (strict_equals(key, "Escape") && get(button)) {
@@ -81157,12 +81192,13 @@
81157
81192
 
81158
81193
  user_effect(() => {
81159
81194
  if (strict_equals(get(previousValue)?.toString(), value()?.toString(), false)) {
81195
+ set(previousValue, value(), true);
81160
81196
  invalid(false);
81161
81197
  }
81162
81198
  });
81163
81199
 
81164
81200
  user_effect(() => {
81165
- if (!get(expanded)) {
81201
+ if (!expanded()) {
81166
81202
  set(hiddenSearchText, "");
81167
81203
  set(searchText, "");
81168
81204
  }
@@ -81202,10 +81238,34 @@
81202
81238
  placeholder(strict_equals(optionWithEmptyValue.label, "", false) ? optionWithEmptyValue.label : defaultPlaceholder);
81203
81239
  });
81204
81240
 
81241
+ user_effect(() => {
81242
+ if (expanded()) {
81243
+ const borderThickness = 2 * (invalid() ? 2 : 1);
81244
+
81245
+ const popupHeight = get(popup)
81246
+ ? get(popup).getBoundingClientRect().height
81247
+ : get(usedHeight);
81248
+
81249
+ set(topOffset, get(buttonElementYPosition) + buttonHeight > innerHeight - popupHeight ? -popupHeight : buttonHeight - borderThickness, true);
81250
+ }
81251
+ });
81252
+
81205
81253
  function findOptionWithEmptyValue() {
81206
81254
  return items()?.find((item) => strict_equals(item.value, "") || strict_equals(item.value, null) || strict_equals(item.value, undefined));
81207
81255
  }
81208
81256
 
81257
+ function setRemainingBottomHeight() {
81258
+ if (!get(button)) {
81259
+ return;
81260
+ }
81261
+
81262
+ set(buttonElementYPosition, get(button).getBoundingClientRect().y, true);
81263
+ }
81264
+
81265
+ onMount(() => {
81266
+ setRemainingBottomHeight();
81267
+ });
81268
+
81209
81269
  var $$exports = {
81210
81270
  get id() {
81211
81271
  return id();
@@ -81369,6 +81429,15 @@
81369
81429
  flushSync();
81370
81430
  },
81371
81431
 
81432
+ get expanded() {
81433
+ return expanded();
81434
+ },
81435
+
81436
+ set expanded($$value = false) {
81437
+ expanded($$value);
81438
+ flushSync();
81439
+ },
81440
+
81372
81441
  ...legacy_api()
81373
81442
  };
81374
81443
 
@@ -81376,6 +81445,7 @@
81376
81445
 
81377
81446
  event('click', $document.body, handleOuterEvent);
81378
81447
  event('keydown', $document.body, handleTab);
81448
+ event('scroll', $window, setRemainingBottomHeight);
81379
81449
 
81380
81450
  var div_1 = child(div);
81381
81451
 
@@ -81416,7 +81486,7 @@
81416
81486
  }),
81417
81487
  'component',
81418
81488
  DropdownList,
81419
- 284,
81489
+ 327,
81420
81490
  12,
81421
81491
  { componentTag: 'Label' }
81422
81492
  );
@@ -81428,7 +81498,7 @@
81428
81498
  }),
81429
81499
  'if',
81430
81500
  DropdownList,
81431
- 283,
81501
+ 326,
81432
81502
  8
81433
81503
  );
81434
81504
  }
@@ -81437,62 +81507,70 @@
81437
81507
  var node_1 = child(div_2);
81438
81508
 
81439
81509
  add_svelte_meta(
81440
- () => bind_this(
81441
- DropdownListButton(node_1, {
81442
- get inputId() {
81443
- return inputId;
81444
- },
81510
+ () => DropdownListButton(node_1, {
81511
+ get inputId() {
81512
+ return inputId;
81513
+ },
81445
81514
 
81446
- get disabled() {
81447
- return disabled();
81448
- },
81515
+ get disabled() {
81516
+ return disabled();
81517
+ },
81449
81518
 
81450
- get expanded() {
81451
- return get(expanded);
81452
- },
81519
+ get expanded() {
81520
+ return expanded();
81521
+ },
81453
81522
 
81454
- get 'aria-labelledby'() {
81455
- return labelId;
81456
- },
81523
+ get 'aria-labelledby'() {
81524
+ return labelId;
81525
+ },
81457
81526
 
81458
- get 'aria-required'() {
81459
- return required();
81460
- },
81527
+ get 'aria-required'() {
81528
+ return required();
81529
+ },
81461
81530
 
81462
- get 'aria-expanded'() {
81463
- return get(expanded);
81464
- },
81531
+ get 'aria-expanded'() {
81532
+ return expanded();
81533
+ },
81465
81534
 
81466
- 'aria-haspopup': 'listbox',
81535
+ 'aria-haspopup': 'listbox',
81467
81536
 
81468
- get 'aria-controls'() {
81469
- return itemsId;
81470
- },
81537
+ get 'aria-controls'() {
81538
+ return itemsId;
81539
+ },
81471
81540
 
81472
- get 'aria-invalid'() {
81473
- return invalid();
81474
- },
81541
+ get 'aria-invalid'() {
81542
+ return invalid();
81543
+ },
81475
81544
 
81476
- get selectedOptionsText() {
81477
- return get(selectedOptionsText);
81478
- },
81545
+ get selectedOptionsText() {
81546
+ return get(selectedOptionsText);
81547
+ },
81479
81548
 
81480
- get placeholder() {
81481
- return placeholder();
81482
- },
81549
+ get placeholder() {
81550
+ return placeholder();
81551
+ },
81483
81552
 
81484
- onclick: handleDropdownButtonClick,
81553
+ get usedHeight() {
81554
+ return get(usedHeight);
81555
+ },
81485
81556
 
81486
- onkeydown: (e) => {
81487
- handleButtonKeyDown(e, enableSearch() ? get(searchInput) : get(dropdownItems));
81488
- }
81489
- }),
81490
- ($$value) => set(button, $$value, true),
81491
- () => get(button)
81492
- ),
81557
+ onclick: handleDropdownButtonClick,
81558
+
81559
+ onkeydown: (e) => {
81560
+ handleButtonKeyDown(e, enableSearch() ? get(searchInput) : get(dropdownItems));
81561
+ },
81562
+
81563
+ get buttonElement() {
81564
+ return get(button);
81565
+ },
81566
+
81567
+ set buttonElement($$value) {
81568
+ set(button, $$value, true);
81569
+ }
81570
+ }),
81493
81571
  'component',
81494
81572
  DropdownList,
81495
- 306,
81573
+ 349,
81496
81574
  12,
81497
81575
  { componentTag: 'DropdownListButton' }
81498
81576
  );
@@ -81547,7 +81625,7 @@
81547
81625
  ),
81548
81626
  'component',
81549
81627
  DropdownList,
81550
- 335,
81628
+ 387,
81551
81629
  24,
81552
81630
  { componentTag: 'SearchInput' }
81553
81631
  );
@@ -81563,7 +81641,7 @@
81563
81641
  }),
81564
81642
  'if',
81565
81643
  DropdownList,
81566
- 333,
81644
+ 385,
81567
81645
  16
81568
81646
  );
81569
81647
  }
@@ -81580,10 +81658,6 @@
81580
81658
  return itemsId;
81581
81659
  },
81582
81660
 
81583
- get enableSearch() {
81584
- return enableSearch();
81585
- },
81586
-
81587
81661
  get placeholder() {
81588
81662
  return placeholder();
81589
81663
  },
@@ -81627,7 +81701,7 @@
81627
81701
  ),
81628
81702
  'component',
81629
81703
  DropdownList,
81630
- 353,
81704
+ 405,
81631
81705
  16,
81632
81706
  { componentTag: 'DropdownListItems' }
81633
81707
  );
@@ -81647,12 +81721,13 @@
81647
81721
  }),
81648
81722
  'key',
81649
81723
  DropdownList,
81650
- 375,
81724
+ 426,
81651
81725
  20
81652
81726
  );
81653
81727
 
81654
81728
  reset(div_5);
81655
81729
  reset(div_3);
81730
+ bind_this(div_3, ($$value) => set(popup, $$value), () => get(popup));
81656
81731
  reset(div_2);
81657
81732
  bind_this(div_2, ($$value) => set(instance, $$value), () => get(instance));
81658
81733
  reset(div_1);
@@ -81694,7 +81769,7 @@
81694
81769
  }),
81695
81770
  'component',
81696
81771
  DropdownList,
81697
- 384,
81772
+ 435,
81698
81773
  4,
81699
81774
  { componentTag: 'FormError' }
81700
81775
  );
@@ -81713,7 +81788,16 @@
81713
81788
  ]));
81714
81789
 
81715
81790
  set_attribute(div_3, 'id', popupId);
81716
- set_attribute(div_3, 'hidden', !get(expanded));
81791
+
81792
+ set_style(div_3, `
81793
+ --dropdown-items-top-offset: ${get(topOffset)};
81794
+ --dropdown-items-height: ${get(usedHeight)};
81795
+ --dropdown-items-bottom-border: ${get(popupBottomBorderThickness)};
81796
+ --dropdown-items-top-border: ${get(popupTopBorderThickness)};
81797
+ --dropdown-button-border: ${invalid() ? 2 : 1};
81798
+ `);
81799
+
81800
+ set_attribute(div_3, 'hidden', !expanded());
81717
81801
  });
81718
81802
 
81719
81803
  append($$anchor, div);
@@ -81741,7 +81825,8 @@
81741
81825
  multiple: {},
81742
81826
  rootElement: {},
81743
81827
  errorElement: {},
81744
- webComponentMode: {}
81828
+ webComponentMode: {},
81829
+ expanded: {}
81745
81830
  },
81746
81831
  [],
81747
81832
  [],
@@ -82849,7 +82934,7 @@
82849
82934
  ));
82850
82935
 
82851
82936
  if (document.getElementById("version")) {
82852
- document.getElementById("version").textContent = `v1.4.6`;
82937
+ document.getElementById("version").textContent = `v1.4.7`;
82853
82938
  }
82854
82939
 
82855
82940
  // Show maskable "general alert" component
@@ -82858,7 +82943,8 @@
82858
82943
  if (displayAlertLink) {
82859
82944
  displayAlertLink.addEventListener(
82860
82945
  'click',
82861
- () => {
82946
+ (evt) => {
82947
+ evt.preventDefault();
82862
82948
  maskableAlert.setAttribute('hide', 'false');
82863
82949
  displayAlertLink.hidden = true;
82864
82950
  }
@@ -82871,6 +82957,10 @@
82871
82957
  }
82872
82958
  );
82873
82959
  }
82960
+
82961
+ if (maskableAlert && displayAlertLink && !maskableAlert.querySelector('.qc-general-alert')) {
82962
+ displayAlertLink.removeAttribute('hidden');
82963
+ }
82874
82964
  // add version
82875
82965
 
82876
82966
  })();