@beeq/core 1.3.0 → 1.3.1

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 (194) hide show
  1. package/dist/beeq/beeq.esm.js +1 -1
  2. package/dist/beeq/{p-e730f8dc.entry.js → p-0595abce.entry.js} +2 -2
  3. package/dist/beeq/{p-a82da834.entry.js → p-10ed463d.entry.js} +2 -2
  4. package/dist/beeq/{p-0f4ba6f9.entry.js → p-126c2d19.entry.js} +2 -2
  5. package/dist/beeq/{p-fb77966e.entry.js → p-15ef27e9.entry.js} +2 -2
  6. package/dist/beeq/p-15ef27e9.entry.js.map +1 -0
  7. package/dist/beeq/{p-91c11876.entry.js → p-167c3774.entry.js} +2 -2
  8. package/dist/beeq/{p-46f7c4c1.entry.js → p-1dcff407.entry.js} +2 -2
  9. package/dist/beeq/{p-72a87f8b.entry.js → p-22a2bf4a.entry.js} +2 -2
  10. package/dist/beeq/{p-a0ac903c.entry.js → p-29717d60.entry.js} +2 -2
  11. package/dist/beeq/{p-fb1a243e.entry.js → p-2cc2ca42.entry.js} +2 -2
  12. package/dist/beeq/{p-b11bc216.entry.js → p-30db348f.entry.js} +2 -2
  13. package/dist/beeq/{p-98b445c2.entry.js → p-35dba65d.entry.js} +2 -2
  14. package/dist/beeq/{p-42215cd4.entry.js → p-3de3223c.entry.js} +2 -2
  15. package/dist/beeq/{p-bce94669.entry.js → p-3fe9aa19.entry.js} +2 -2
  16. package/dist/beeq/{p-533aaa93.entry.js → p-4b1d6824.entry.js} +2 -2
  17. package/dist/beeq/{p-963d0c4f.entry.js → p-4ea77b47.entry.js} +2 -2
  18. package/dist/beeq/{p-c4dcf2ed.entry.js → p-5666c9c1.entry.js} +2 -2
  19. package/dist/beeq/{p-63c1c8fc.entry.js → p-56a53f77.entry.js} +2 -2
  20. package/dist/beeq/{p-c751eaae.entry.js → p-58fdd13f.entry.js} +2 -2
  21. package/dist/beeq/{p-1b97db7b.entry.js → p-69c47479.entry.js} +2 -2
  22. package/dist/beeq/{p-f5c46b74.entry.js → p-69d93e10.entry.js} +2 -2
  23. package/dist/beeq/{p-ee80837c.entry.js → p-6b12a365.entry.js} +2 -2
  24. package/dist/beeq/{p-50709b47.js → p-704c7a0a.js} +3 -3
  25. package/dist/beeq/p-704c7a0a.js.map +1 -0
  26. package/dist/beeq/{p-7a2583e7.entry.js → p-8cc8ac11.entry.js} +2 -2
  27. package/dist/beeq/{p-ff5975d9.entry.js → p-94039fe7.entry.js} +2 -2
  28. package/dist/beeq/{p-ce4381eb.entry.js → p-a15f79c5.entry.js} +2 -2
  29. package/dist/beeq/{p-9d4cbf5d.entry.js → p-a35b19f0.entry.js} +2 -2
  30. package/dist/beeq/{p-2a599238.entry.js → p-a7c6f797.entry.js} +2 -2
  31. package/dist/beeq/{p-f0b04dd5.entry.js → p-a91e6eab.entry.js} +2 -2
  32. package/dist/beeq/{p-f0b04dd5.entry.js.map → p-a91e6eab.entry.js.map} +1 -1
  33. package/dist/beeq/{p-2f03d7b8.entry.js → p-aaa76f94.entry.js} +2 -2
  34. package/dist/beeq/{p-d9705a72.entry.js → p-adbd57e8.entry.js} +2 -2
  35. package/dist/beeq/{p-79ad9f38.entry.js → p-b0a999d6.entry.js} +2 -2
  36. package/dist/beeq/p-b7b80227.entry.js +6 -0
  37. package/dist/beeq/p-b7b80227.entry.js.map +1 -0
  38. package/dist/beeq/{p-39907ce1.entry.js → p-c3228970.entry.js} +2 -2
  39. package/dist/beeq/{p-3d9f8f4c.entry.js → p-c483c17e.entry.js} +2 -2
  40. package/dist/beeq/{p-71f52777.entry.js → p-c69c58b8.entry.js} +2 -2
  41. package/dist/beeq/{p-e058f266.entry.js → p-c9fb7a30.entry.js} +2 -2
  42. package/dist/beeq/{p-1d5b1c02.entry.js → p-cf565f6a.entry.js} +2 -2
  43. package/dist/beeq/{p-58402996.entry.js → p-dc08e1c5.entry.js} +2 -2
  44. package/dist/beeq/{p-a9d715ff.entry.js → p-ff6101a7.entry.js} +2 -2
  45. package/dist/cjs/beeq.cjs.js +1 -1
  46. package/dist/cjs/bq-accordion-group.cjs.entry.js +1 -1
  47. package/dist/cjs/bq-accordion.cjs.entry.js +1 -1
  48. package/dist/cjs/bq-alert.cjs.entry.js +1 -1
  49. package/dist/cjs/bq-avatar.cjs.entry.js +1 -1
  50. package/dist/cjs/bq-badge.cjs.entry.js +1 -1
  51. package/dist/cjs/bq-breadcrumb-item.cjs.entry.js +1 -1
  52. package/dist/cjs/bq-breadcrumb.cjs.entry.js +1 -1
  53. package/dist/cjs/bq-button.cjs.entry.js +1 -1
  54. package/dist/cjs/bq-card.cjs.entry.js +1 -1
  55. package/dist/cjs/bq-checkbox.cjs.entry.js +4 -4
  56. package/dist/cjs/bq-checkbox.cjs.entry.js.map +1 -1
  57. package/dist/cjs/bq-dialog.cjs.entry.js +1 -1
  58. package/dist/cjs/bq-divider.cjs.entry.js +1 -1
  59. package/dist/cjs/bq-drawer.cjs.entry.js +1 -1
  60. package/dist/cjs/bq-dropdown_3.cjs.entry.js +1 -1
  61. package/dist/cjs/bq-empty-state.cjs.entry.js +1 -1
  62. package/dist/cjs/bq-icon.cjs.entry.js +1 -1
  63. package/dist/cjs/bq-input.cjs.entry.js +1 -1
  64. package/dist/cjs/bq-notification.cjs.entry.js +1 -1
  65. package/dist/cjs/bq-option-group.cjs.entry.js +1 -1
  66. package/dist/cjs/bq-option.cjs.entry.js +1 -1
  67. package/dist/cjs/bq-panel.cjs.entry.js +1 -1
  68. package/dist/cjs/bq-progress.cjs.entry.js +1 -1
  69. package/dist/cjs/bq-radio-group.cjs.entry.js +1 -1
  70. package/dist/cjs/bq-radio.cjs.entry.js +1 -1
  71. package/dist/cjs/bq-select.cjs.entry.js +19 -10
  72. package/dist/cjs/bq-select.cjs.entry.js.map +1 -1
  73. package/dist/cjs/bq-side-menu-item.cjs.entry.js +1 -1
  74. package/dist/cjs/bq-side-menu.cjs.entry.js +1 -1
  75. package/dist/cjs/bq-slider.cjs.entry.js +2 -2
  76. package/dist/cjs/bq-slider.cjs.entry.js.map +1 -1
  77. package/dist/cjs/bq-spinner.cjs.entry.js +1 -1
  78. package/dist/cjs/bq-status.cjs.entry.js +1 -1
  79. package/dist/cjs/bq-step-item.cjs.entry.js +1 -1
  80. package/dist/cjs/bq-steps.cjs.entry.js +1 -1
  81. package/dist/cjs/bq-switch.cjs.entry.js +1 -1
  82. package/dist/cjs/bq-tab-group.cjs.entry.js +1 -1
  83. package/dist/cjs/bq-tab.cjs.entry.js +1 -1
  84. package/dist/cjs/bq-textarea.cjs.entry.js +1 -1
  85. package/dist/cjs/bq-toast.cjs.entry.js +1 -1
  86. package/dist/cjs/bq-tooltip.cjs.entry.js +1 -1
  87. package/dist/cjs/{index-48cab8dd.js → index-3e03656c.js} +1 -4
  88. package/dist/cjs/index-3e03656c.js.map +1 -0
  89. package/dist/cjs/loader.cjs.js +1 -1
  90. package/dist/collection/components/checkbox/bq-checkbox.js +7 -6
  91. package/dist/collection/components/checkbox/bq-checkbox.js.map +1 -1
  92. package/dist/collection/components/select/__tests__/bq-select.e2e.js +37 -0
  93. package/dist/collection/components/select/__tests__/bq-select.e2e.js.map +1 -1
  94. package/dist/collection/components/select/bq-select.js +18 -9
  95. package/dist/collection/components/select/bq-select.js.map +1 -1
  96. package/dist/collection/components/slider/bq-slider.js +1 -1
  97. package/dist/collection/components/slider/bq-slider.js.map +1 -1
  98. package/dist/components/bq-checkbox.js +3 -3
  99. package/dist/components/bq-checkbox.js.map +1 -1
  100. package/dist/components/bq-select.js +18 -8
  101. package/dist/components/bq-select.js.map +1 -1
  102. package/dist/components/bq-slider.js +1 -1
  103. package/dist/components/bq-slider.js.map +1 -1
  104. package/dist/esm/beeq.js +2 -2
  105. package/dist/esm/bq-accordion-group.entry.js +1 -1
  106. package/dist/esm/bq-accordion.entry.js +1 -1
  107. package/dist/esm/bq-alert.entry.js +1 -1
  108. package/dist/esm/bq-avatar.entry.js +1 -1
  109. package/dist/esm/bq-badge.entry.js +1 -1
  110. package/dist/esm/bq-breadcrumb-item.entry.js +1 -1
  111. package/dist/esm/bq-breadcrumb.entry.js +1 -1
  112. package/dist/esm/bq-button.entry.js +1 -1
  113. package/dist/esm/bq-card.entry.js +1 -1
  114. package/dist/esm/bq-checkbox.entry.js +4 -4
  115. package/dist/esm/bq-checkbox.entry.js.map +1 -1
  116. package/dist/esm/bq-dialog.entry.js +1 -1
  117. package/dist/esm/bq-divider.entry.js +1 -1
  118. package/dist/esm/bq-drawer.entry.js +1 -1
  119. package/dist/esm/bq-dropdown_3.entry.js +1 -1
  120. package/dist/esm/bq-empty-state.entry.js +1 -1
  121. package/dist/esm/bq-icon.entry.js +1 -1
  122. package/dist/esm/bq-input.entry.js +1 -1
  123. package/dist/esm/bq-notification.entry.js +1 -1
  124. package/dist/esm/bq-option-group.entry.js +1 -1
  125. package/dist/esm/bq-option.entry.js +1 -1
  126. package/dist/esm/bq-panel.entry.js +1 -1
  127. package/dist/esm/bq-progress.entry.js +1 -1
  128. package/dist/esm/bq-radio-group.entry.js +1 -1
  129. package/dist/esm/bq-radio.entry.js +1 -1
  130. package/dist/esm/bq-select.entry.js +19 -10
  131. package/dist/esm/bq-select.entry.js.map +1 -1
  132. package/dist/esm/bq-side-menu-item.entry.js +1 -1
  133. package/dist/esm/bq-side-menu.entry.js +1 -1
  134. package/dist/esm/bq-slider.entry.js +2 -2
  135. package/dist/esm/bq-slider.entry.js.map +1 -1
  136. package/dist/esm/bq-spinner.entry.js +1 -1
  137. package/dist/esm/bq-status.entry.js +1 -1
  138. package/dist/esm/bq-step-item.entry.js +1 -1
  139. package/dist/esm/bq-steps.entry.js +1 -1
  140. package/dist/esm/bq-switch.entry.js +1 -1
  141. package/dist/esm/bq-tab-group.entry.js +1 -1
  142. package/dist/esm/bq-tab.entry.js +1 -1
  143. package/dist/esm/bq-textarea.entry.js +1 -1
  144. package/dist/esm/bq-toast.entry.js +1 -1
  145. package/dist/esm/bq-tooltip.entry.js +1 -1
  146. package/dist/esm/{index-fe861cd3.js → index-8e584dd6.js} +1 -4
  147. package/dist/esm/index-8e584dd6.js.map +1 -0
  148. package/dist/esm/loader.js +2 -2
  149. package/dist/hydrate/index.js +23 -15
  150. package/dist/types/components/checkbox/bq-checkbox.d.ts +1 -1
  151. package/dist/types/components/select/bq-select.d.ts +0 -1
  152. package/dist/types/components.d.ts +2 -2
  153. package/package.json +1 -1
  154. package/dist/beeq/p-50709b47.js.map +0 -1
  155. package/dist/beeq/p-6a04c912.entry.js +0 -6
  156. package/dist/beeq/p-6a04c912.entry.js.map +0 -1
  157. package/dist/beeq/p-fb77966e.entry.js.map +0 -1
  158. package/dist/cjs/index-48cab8dd.js.map +0 -1
  159. package/dist/esm/index-fe861cd3.js.map +0 -1
  160. /package/dist/beeq/{p-e730f8dc.entry.js.map → p-0595abce.entry.js.map} +0 -0
  161. /package/dist/beeq/{p-a82da834.entry.js.map → p-10ed463d.entry.js.map} +0 -0
  162. /package/dist/beeq/{p-0f4ba6f9.entry.js.map → p-126c2d19.entry.js.map} +0 -0
  163. /package/dist/beeq/{p-91c11876.entry.js.map → p-167c3774.entry.js.map} +0 -0
  164. /package/dist/beeq/{p-46f7c4c1.entry.js.map → p-1dcff407.entry.js.map} +0 -0
  165. /package/dist/beeq/{p-72a87f8b.entry.js.map → p-22a2bf4a.entry.js.map} +0 -0
  166. /package/dist/beeq/{p-a0ac903c.entry.js.map → p-29717d60.entry.js.map} +0 -0
  167. /package/dist/beeq/{p-fb1a243e.entry.js.map → p-2cc2ca42.entry.js.map} +0 -0
  168. /package/dist/beeq/{p-b11bc216.entry.js.map → p-30db348f.entry.js.map} +0 -0
  169. /package/dist/beeq/{p-98b445c2.entry.js.map → p-35dba65d.entry.js.map} +0 -0
  170. /package/dist/beeq/{p-42215cd4.entry.js.map → p-3de3223c.entry.js.map} +0 -0
  171. /package/dist/beeq/{p-bce94669.entry.js.map → p-3fe9aa19.entry.js.map} +0 -0
  172. /package/dist/beeq/{p-533aaa93.entry.js.map → p-4b1d6824.entry.js.map} +0 -0
  173. /package/dist/beeq/{p-963d0c4f.entry.js.map → p-4ea77b47.entry.js.map} +0 -0
  174. /package/dist/beeq/{p-c4dcf2ed.entry.js.map → p-5666c9c1.entry.js.map} +0 -0
  175. /package/dist/beeq/{p-63c1c8fc.entry.js.map → p-56a53f77.entry.js.map} +0 -0
  176. /package/dist/beeq/{p-c751eaae.entry.js.map → p-58fdd13f.entry.js.map} +0 -0
  177. /package/dist/beeq/{p-1b97db7b.entry.js.map → p-69c47479.entry.js.map} +0 -0
  178. /package/dist/beeq/{p-f5c46b74.entry.js.map → p-69d93e10.entry.js.map} +0 -0
  179. /package/dist/beeq/{p-ee80837c.entry.js.map → p-6b12a365.entry.js.map} +0 -0
  180. /package/dist/beeq/{p-7a2583e7.entry.js.map → p-8cc8ac11.entry.js.map} +0 -0
  181. /package/dist/beeq/{p-ff5975d9.entry.js.map → p-94039fe7.entry.js.map} +0 -0
  182. /package/dist/beeq/{p-ce4381eb.entry.js.map → p-a15f79c5.entry.js.map} +0 -0
  183. /package/dist/beeq/{p-9d4cbf5d.entry.js.map → p-a35b19f0.entry.js.map} +0 -0
  184. /package/dist/beeq/{p-2a599238.entry.js.map → p-a7c6f797.entry.js.map} +0 -0
  185. /package/dist/beeq/{p-2f03d7b8.entry.js.map → p-aaa76f94.entry.js.map} +0 -0
  186. /package/dist/beeq/{p-d9705a72.entry.js.map → p-adbd57e8.entry.js.map} +0 -0
  187. /package/dist/beeq/{p-79ad9f38.entry.js.map → p-b0a999d6.entry.js.map} +0 -0
  188. /package/dist/beeq/{p-39907ce1.entry.js.map → p-c3228970.entry.js.map} +0 -0
  189. /package/dist/beeq/{p-3d9f8f4c.entry.js.map → p-c483c17e.entry.js.map} +0 -0
  190. /package/dist/beeq/{p-71f52777.entry.js.map → p-c69c58b8.entry.js.map} +0 -0
  191. /package/dist/beeq/{p-e058f266.entry.js.map → p-c9fb7a30.entry.js.map} +0 -0
  192. /package/dist/beeq/{p-1d5b1c02.entry.js.map → p-cf565f6a.entry.js.map} +0 -0
  193. /package/dist/beeq/{p-58402996.entry.js.map → p-dc08e1c5.entry.js.map} +0 -0
  194. /package/dist/beeq/{p-a9d715ff.entry.js.map → p-ff6101a7.entry.js.map} +0 -0
@@ -6,7 +6,7 @@
6
6
 
7
7
  Object.defineProperty(exports, '__esModule', { value: true });
8
8
 
9
- const index = require('./index-48cab8dd.js');
9
+ const index = require('./index-3e03656c.js');
10
10
  const appGlobals = require('./app-globals-42eaedec.js');
11
11
 
12
12
  const defineCustomElements = async (win, options) => {
@@ -32,7 +32,7 @@ export class BqCheckbox {
32
32
  this.formId = undefined;
33
33
  this.checked = undefined;
34
34
  this.disabled = false;
35
- this.indeterminate = undefined;
35
+ this.indeterminate = false;
36
36
  this.name = undefined;
37
37
  this.required = undefined;
38
38
  this.value = undefined;
@@ -102,13 +102,13 @@ export class BqCheckbox {
102
102
  // Always the last one in the class.
103
103
  // ===================================
104
104
  render() {
105
- return (h("label", { key: 'db05740c3df13d890ed60b9bb78d8beca4bede65', class: {
105
+ return (h("label", { key: '8ef3a181f272b54b530172f739093e2bd14359e2', class: {
106
106
  'bq-checkbox group': true,
107
107
  'is-checked': this.checked,
108
108
  'is-indeterminate': this.indeterminate,
109
109
  'is-disabled !cursor-not-allowed': this.disabled,
110
110
  'has-background': this.backgroundOnHover,
111
- }, part: "base" }, h("div", { key: '1eab4bef621573c2895bf7c0d422a886d9126a42', class: "bq-checkbox__control relative box-border flex h-[var(--bq-checkbox--size)] w-[var(--bq-checkbox--size)] items-center justify-center p-xs3", part: "control" }, h("input", { key: '3657ee84f07c0e1797217a215b4df288fcb7c0f2', type: "checkbox", class: "bq-checkbox__input pointer-events-none absolute m-0 p-0 opacity-0", name: !isNil(this.name) ? this.name : undefined, checked: this.checked, disabled: this.disabled, indeterminate: this.indeterminate, form: this.formId, required: this.required, value: this.value, "aria-checked": this.checked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', ref: (input) => (this.inputElem = input), onBlur: this.handleOnBlur, onChange: this.handleChange, onFocus: this.handleOnFocus, part: "input", tabindex: "0" }), h("span", { key: 'dd636e71229989ec0ef78cf4221ad14f51cdd05d', class: "bq-checkbox__checkbox relative box-border flex h-full w-[var(--bq-checkbox--size)] items-center justify-center", part: "checkbox" }, this.checked && (h("svg", { key: '2caa87406d6d5e9e6ffde515bae66a9c4c7e60fa', xmlns: "http://www.w3.org/2000/svg", class: "absolute h-full w-full text-neutral-white", viewBox: "0 0 256 256" }, h("path", { key: '9115640b31ea2c5d2e8028efd48202a1ad0ac75f', fill: "none", d: "M0 0h256v256H0z" }), h("path", { key: 'bc6c5b827c9d5c9056eedfa7401eccf5a96884b9', fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "32", d: "M216 72 104 184l-56-56" }))), !this.checked && this.indeterminate && (h("svg", { key: '01c44130974b13693d892714f9c0344791c59b38', xmlns: "http://www.w3.org/2000/svg", class: "absolute h-full w-full text-neutral-white", viewBox: "0 0 256 256", fill: "currentColor" }, h("path", { key: 'e79ddaf92e2a2548af26e6dd718dc09586c6172c', fill: "none", d: "M0 0h256v256H0z" }), h("path", { key: 'f3543a9386a92984b0f84cd07352a52caebcd6a3', fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "32", d: "M40 128h176" }))))), h("span", { key: '7b7990c41373b0513f1db75367929202606185db', class: "bq-checkbox__label ps-xs text-start font-medium leading-regular text-text-primary group-hover-[&:not(.is-disabled)]:text-hover-text-primary group-[.is-disabled]:opacity-60", part: "label" }, h("slot", { key: '04b91384b158b70488e8d3d9f09847e9a9e3eb02' }))));
111
+ }, part: "base" }, h("div", { key: '29125e80c318222cb660aec6273c666eed5a15ba', class: "bq-checkbox__control relative box-border flex h-[var(--bq-checkbox--size)] w-[var(--bq-checkbox--size)] items-center justify-center p-xs3", part: "control" }, h("input", { key: 'f665aec8d5aa528d63bce77826d0bfa77d9c32db', type: "checkbox", class: "bq-checkbox__input pointer-events-none absolute m-0 p-0 opacity-0", name: !isNil(this.name) ? this.name : undefined, checked: this.checked, disabled: this.disabled, indeterminate: this.indeterminate, form: this.formId, required: this.required, value: this.value, "aria-checked": this.checked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', ref: (input) => (this.inputElem = input), onBlur: this.handleOnBlur, onChange: this.handleChange, onFocus: this.handleOnFocus, part: "input", tabindex: "0" }), h("span", { key: '7773a7b4c155e88e6d05ee0665a993d2ad8f6499', class: "bq-checkbox__checkbox relative box-border flex h-full w-[var(--bq-checkbox--size)] items-center justify-center", part: "checkbox" }, this.checked && (h("svg", { key: '950869630444fe6883559ea99b1e27fa2bb8e6af', xmlns: "http://www.w3.org/2000/svg", class: "absolute h-full w-full text-neutral-white", viewBox: "0 0 256 256" }, h("path", { key: '93de424fc2ce483fbb85d8869f95651463776723', fill: "none", d: "M0 0h256v256H0z" }), h("path", { key: 'ea0c932a0596b50a58b020891e4a1b471aa3e642', fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "32", d: "M216 72 104 184l-56-56" }))), !this.checked && this.indeterminate && (h("svg", { key: '0ddac34f289e56e2e05b5d6ba301994be105848a', xmlns: "http://www.w3.org/2000/svg", class: "absolute h-full w-full text-neutral-white", viewBox: "0 0 256 256", fill: "currentColor" }, h("path", { key: '3a0b1514214f66edbb907a9e320af99f240f7134', fill: "none", d: "M0 0h256v256H0z" }), h("path", { key: 'ca859995a806f8520cf6ba6dfc6602ec26a9b1b8', fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "32", d: "M40 128h176" }))))), h("span", { key: '424777693df82fac825372ba4d6caed42b2f313d', class: "bq-checkbox__label ps-xs text-start font-medium leading-regular text-text-primary group-hover-[&:not(.is-disabled)]:text-hover-text-primary group-[.is-disabled]:opacity-60", part: "label" }, h("slot", { key: '822cd629f175d6aa90ecfac3497dd695c0d8c444' }))));
112
112
  }
113
113
  static get is() { return "bq-checkbox"; }
114
114
  static get encapsulation() { return "shadow"; }
@@ -198,18 +198,19 @@ export class BqCheckbox {
198
198
  "type": "boolean",
199
199
  "mutable": true,
200
200
  "complexType": {
201
- "original": "false",
201
+ "original": "boolean",
202
202
  "resolved": "boolean",
203
203
  "references": {}
204
204
  },
205
205
  "required": false,
206
- "optional": false,
206
+ "optional": true,
207
207
  "docs": {
208
208
  "tags": [],
209
209
  "text": "A state that is neither checked nor unchecked"
210
210
  },
211
211
  "attribute": "indeterminate",
212
- "reflect": true
212
+ "reflect": true,
213
+ "defaultValue": "false"
213
214
  },
214
215
  "name": {
215
216
  "type": "string",
@@ -1 +1 @@
1
- {"version":3,"file":"bq-checkbox.js","sourceRoot":"","sources":["../../../../../../src/components/checkbox/bq-checkbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, Watch } from '@stencil/core';\n\nimport { isNil } from '../../shared/utils';\n\n/**\n * @part base - The component's internal wrapper of the checkbox component.\n * @part control - The container `<div>` element that holds the custom checkbox.\n * @part input - The native HTML `<input type=\"checkbox\">` used under the hood.\n * @part checkbox - The `<span>` element that renders the custom checked/indeterminate state.\n * @part label - The `<span>` element that holds the text content.\n */\n@Component({\n tag: 'bq-checkbox',\n styleUrl: './scss/bq-checkbox.scss',\n shadow: true,\n})\nexport class BqCheckbox {\n // Own Properties\n // ====================\n\n private inputElem: HTMLInputElement;\n private prevCheckedValue: boolean;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqCheckboxElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true checkbox displays background on hover */\n @Prop({ reflect: true }) backgroundOnHover? = false;\n\n /** The form ID that the checkbox is associated with */\n @Prop({ reflect: true }) formId?: string;\n\n /** If true checkbox is checked */\n @Prop({ reflect: true, mutable: true }) checked?: boolean;\n\n /** If true checkbox is disabled */\n @Prop({ reflect: true }) disabled? = false;\n\n /** A state that is neither checked nor unchecked */\n @Prop({ reflect: true, mutable: true }) indeterminate: false;\n\n /** Name of the HTML input form control. Submitted with the form as part of a name/value pair. */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, it will indicate that the user must specify a value for the checkbox before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean;\n\n /** A string representing the value of the checkbox. Primarily used to differentiate a list of related checkboxes that have the same name. */\n @Prop({ reflect: true }) value!: string;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('indeterminate')\n handleIndeterminatePropChange() {\n if (!this.inputElem) return;\n\n this.inputElem.indeterminate = this.indeterminate;\n if (this.indeterminate) {\n this.checked = false;\n }\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the chebkbox state changes */\n @Event() bqChange: EventEmitter<{ checked: boolean }>;\n\n /** Handler to be called when the checkbox gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqCheckboxElement>;\n\n /** Handler to be called when the checkbox loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqCheckboxElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.prevCheckedValue = this.checked;\n }\n\n componentDidUpdate() {\n /**\n * We need to trigger the `bqChange` immediately after the first update happens\n * so the checked attribute get applied, otherwise, a delay will happen\n * between the event emits and when the checked attribute value gets reflected in the element host.\n */\n if (this.checked !== this.prevCheckedValue) {\n if (!this.indeterminate) {\n this.bqChange.emit({ checked: this.checked });\n }\n this.prevCheckedValue = this.checked;\n }\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Simulate a click event on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.click()`.\n */\n @Method()\n async vClick() {\n this.inputElem?.click();\n }\n\n /**\n * Sets focus on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.focus()`.\n */\n @Method()\n async vFocus() {\n this.inputElem?.focus();\n }\n\n /**\n * Remove focus from the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.blur()`.\n */\n @Method()\n async vBlur() {\n this.inputElem?.blur();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleChange = () => {\n this.checked = !this.checked;\n this.inputElem.setAttribute('checked', `${this.checked}`);\n this.indeterminate = false;\n };\n\n private handleOnFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleOnBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <label\n class={{\n 'bq-checkbox group': true,\n 'is-checked': this.checked,\n 'is-indeterminate': this.indeterminate,\n 'is-disabled !cursor-not-allowed': this.disabled,\n 'has-background': this.backgroundOnHover,\n }}\n part=\"base\"\n >\n <div\n class=\"bq-checkbox__control relative box-border flex h-[var(--bq-checkbox--size)] w-[var(--bq-checkbox--size)] items-center justify-center p-xs3\"\n part=\"control\"\n >\n <input\n type=\"checkbox\"\n class=\"bq-checkbox__input pointer-events-none absolute m-0 p-0 opacity-0\"\n name={!isNil(this.name) ? this.name : undefined}\n checked={this.checked}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n form={this.formId}\n required={this.required}\n value={this.value}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n ref={(input: HTMLInputElement) => (this.inputElem = input)}\n onBlur={this.handleOnBlur}\n onChange={this.handleChange}\n onFocus={this.handleOnFocus}\n part=\"input\"\n tabindex=\"0\"\n />\n <span\n class=\"bq-checkbox__checkbox relative box-border flex h-full w-[var(--bq-checkbox--size)] items-center justify-center\"\n part=\"checkbox\"\n >\n {/*\n We could move these SVGs to separated functional components, but it seems there's a weird issue with\n Stencil and pure SVG components: https://stencil-worldwide.slack.com/archives/C79EANFL7/p1663779385026389\n */}\n {this.checked && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute h-full w-full text-neutral-white\"\n viewBox=\"0 0 256 256\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M216 72 104 184l-56-56\"\n />\n </svg>\n )}\n {!this.checked && this.indeterminate && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute h-full w-full text-neutral-white\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M40 128h176\"\n />\n </svg>\n )}\n </span>\n </div>\n <span\n class=\"bq-checkbox__label ps-xs text-start font-medium leading-regular text-text-primary group-hover-[&:not(.is-disabled)]:text-hover-text-primary group-[.is-disabled]:opacity-60\"\n part=\"label\"\n >\n <slot />\n </span>\n </label>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"bq-checkbox.js","sourceRoot":"","sources":["../../../../../../src/components/checkbox/bq-checkbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, Watch } from '@stencil/core';\n\nimport { isNil } from '../../shared/utils';\n\n/**\n * @part base - The component's internal wrapper of the checkbox component.\n * @part control - The container `<div>` element that holds the custom checkbox.\n * @part input - The native HTML `<input type=\"checkbox\">` used under the hood.\n * @part checkbox - The `<span>` element that renders the custom checked/indeterminate state.\n * @part label - The `<span>` element that holds the text content.\n */\n@Component({\n tag: 'bq-checkbox',\n styleUrl: './scss/bq-checkbox.scss',\n shadow: true,\n})\nexport class BqCheckbox {\n // Own Properties\n // ====================\n\n private inputElem: HTMLInputElement;\n private prevCheckedValue: boolean;\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqCheckboxElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n // Public Property API\n // ========================\n\n /** If true checkbox displays background on hover */\n @Prop({ reflect: true }) backgroundOnHover? = false;\n\n /** The form ID that the checkbox is associated with */\n @Prop({ reflect: true }) formId?: string;\n\n /** If true checkbox is checked */\n @Prop({ reflect: true, mutable: true }) checked?: boolean;\n\n /** If true checkbox is disabled */\n @Prop({ reflect: true }) disabled? = false;\n\n /** A state that is neither checked nor unchecked */\n @Prop({ reflect: true, mutable: true }) indeterminate? = false;\n\n /** Name of the HTML input form control. Submitted with the form as part of a name/value pair. */\n @Prop({ reflect: true }) name!: string;\n\n /** If `true`, it will indicate that the user must specify a value for the checkbox before the owning form can be submitted */\n @Prop({ reflect: true }) required?: boolean;\n\n /** A string representing the value of the checkbox. Primarily used to differentiate a list of related checkboxes that have the same name. */\n @Prop({ reflect: true }) value!: string;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('indeterminate')\n handleIndeterminatePropChange() {\n if (!this.inputElem) return;\n\n this.inputElem.indeterminate = this.indeterminate;\n if (this.indeterminate) {\n this.checked = false;\n }\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Handler to be called when the chebkbox state changes */\n @Event() bqChange: EventEmitter<{ checked: boolean }>;\n\n /** Handler to be called when the checkbox gets focus */\n @Event() bqFocus: EventEmitter<HTMLBqCheckboxElement>;\n\n /** Handler to be called when the checkbox loses focus */\n @Event() bqBlur: EventEmitter<HTMLBqCheckboxElement>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n componentWillLoad() {\n this.prevCheckedValue = this.checked;\n }\n\n componentDidUpdate() {\n /**\n * We need to trigger the `bqChange` immediately after the first update happens\n * so the checked attribute get applied, otherwise, a delay will happen\n * between the event emits and when the checked attribute value gets reflected in the element host.\n */\n if (this.checked !== this.prevCheckedValue) {\n if (!this.indeterminate) {\n this.bqChange.emit({ checked: this.checked });\n }\n this.prevCheckedValue = this.checked;\n }\n }\n\n // Listeners\n // ==============\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Simulate a click event on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.click()`.\n */\n @Method()\n async vClick() {\n this.inputElem?.click();\n }\n\n /**\n * Sets focus on the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.focus()`.\n */\n @Method()\n async vFocus() {\n this.inputElem?.focus();\n }\n\n /**\n * Remove focus from the native `<input>` HTML element used under the hood.\n * Use this method instead of the global `element.blur()`.\n */\n @Method()\n async vBlur() {\n this.inputElem?.blur();\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleChange = () => {\n this.checked = !this.checked;\n this.inputElem.setAttribute('checked', `${this.checked}`);\n this.indeterminate = false;\n };\n\n private handleOnFocus = () => {\n this.bqFocus.emit(this.el);\n };\n\n private handleOnBlur = () => {\n this.bqBlur.emit(this.el);\n };\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n return (\n <label\n class={{\n 'bq-checkbox group': true,\n 'is-checked': this.checked,\n 'is-indeterminate': this.indeterminate,\n 'is-disabled !cursor-not-allowed': this.disabled,\n 'has-background': this.backgroundOnHover,\n }}\n part=\"base\"\n >\n <div\n class=\"bq-checkbox__control relative box-border flex h-[var(--bq-checkbox--size)] w-[var(--bq-checkbox--size)] items-center justify-center p-xs3\"\n part=\"control\"\n >\n <input\n type=\"checkbox\"\n class=\"bq-checkbox__input pointer-events-none absolute m-0 p-0 opacity-0\"\n name={!isNil(this.name) ? this.name : undefined}\n checked={this.checked}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n form={this.formId}\n required={this.required}\n value={this.value}\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n ref={(input: HTMLInputElement) => (this.inputElem = input)}\n onBlur={this.handleOnBlur}\n onChange={this.handleChange}\n onFocus={this.handleOnFocus}\n part=\"input\"\n tabindex=\"0\"\n />\n <span\n class=\"bq-checkbox__checkbox relative box-border flex h-full w-[var(--bq-checkbox--size)] items-center justify-center\"\n part=\"checkbox\"\n >\n {/*\n We could move these SVGs to separated functional components, but it seems there's a weird issue with\n Stencil and pure SVG components: https://stencil-worldwide.slack.com/archives/C79EANFL7/p1663779385026389\n */}\n {this.checked && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute h-full w-full text-neutral-white\"\n viewBox=\"0 0 256 256\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M216 72 104 184l-56-56\"\n />\n </svg>\n )}\n {!this.checked && this.indeterminate && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"absolute h-full w-full text-neutral-white\"\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n >\n <path fill=\"none\" d=\"M0 0h256v256H0z\" />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M40 128h176\"\n />\n </svg>\n )}\n </span>\n </div>\n <span\n class=\"bq-checkbox__label ps-xs text-start font-medium leading-regular text-text-primary group-hover-[&:not(.is-disabled)]:text-hover-text-primary group-[.is-disabled]:opacity-60\"\n part=\"label\"\n >\n <slot />\n </span>\n </label>\n );\n }\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  * © https://beeq.design - Apache 2 License.
4
4
  */
5
5
  import { newE2EPage } from "@stencil/core/testing";
6
+ import { setProperties } from "../../../shared/test-utils";
6
7
  describe('bq-select', () => {
7
8
  it('should render', async () => {
8
9
  const page = await newE2EPage({
@@ -126,5 +127,41 @@ describe('bq-select', () => {
126
127
  expect(await page.find(optionSelector)).toHaveAttribute('selected');
127
128
  expect(eventEmitter).toHaveReceivedEventTimes(1);
128
129
  });
130
+ it('should render with selected options', async () => {
131
+ const page = await newE2EPage({
132
+ html: `
133
+ <bq-select multiple>
134
+ <bq-option value="1">Option 1</bq-option>
135
+ <bq-option value="2">Option 2</bq-option>
136
+ <bq-option value="3">Option 3</bq-option>
137
+ </bq-select>
138
+ `,
139
+ });
140
+ await setProperties(page, 'bq-select', { value: JSON.stringify(['1', '2']) });
141
+ const selectedValueElements = await page.findAll(`bq-select bq-option[selected]`);
142
+ const displayTags = await page.findAll('bq-select >>> bq-tag');
143
+ expect(selectedValueElements).toHaveLength(2);
144
+ expect(displayTags).toHaveLength(2);
145
+ expect(displayTags[0]).toEqualText('Option 1');
146
+ expect(displayTags[1]).toEqualText('Option 2');
147
+ });
148
+ it('should rerender when value is change externally', async () => {
149
+ const page = await newE2EPage({
150
+ html: `
151
+ <bq-select multiple>
152
+ <bq-option value="1">Option 1</bq-option>
153
+ <bq-option value="2">Option 2</bq-option>
154
+ <bq-option value="3">Option 3</bq-option>
155
+ </bq-select>
156
+ `,
157
+ });
158
+ await setProperties(page, 'bq-select', { value: JSON.stringify(['1', '2']) });
159
+ expect(await page.findAll(`bq-select bq-option[selected]`)).toHaveLength(2);
160
+ await setProperties(page, 'bq-select', { value: JSON.stringify(['3']) });
161
+ const displayTags = await page.findAll('bq-select >>> bq-tag');
162
+ expect(await page.findAll(`bq-select bq-option[selected]`)).toHaveLength(1);
163
+ expect(displayTags).toHaveLength(1);
164
+ expect(displayTags[0]).toEqualText('Option 3');
165
+ });
129
166
  });
130
167
  //# sourceMappingURL=bq-select.e2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bq-select.e2e.js","sourceRoot":"","sources":["../../../../../../../src/components/select/__tests__/bq-select.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\n\ndescribe('bq-select', () => {\n it('should render', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const element = await page.find('bq-select');\n\n expect(element).toHaveClass('hydrated');\n });\n\n it('should have shadow root', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const element = await page.find('bq-select');\n\n expect(element.shadowRoot).not.toBeNull();\n });\n\n it('should render with default suffix icon', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const suffixIconElem = await page.find('bq-select >>> bq-icon[name=\"caret-down\"]');\n\n expect(suffixIconElem).not.toBeNull();\n });\n\n it('should render with prefix icon', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-icon name=\"user-circle\" slot=\"prefix\"></bq-icon>\n </bq-select>\n `,\n });\n const prefixContainerElem = await page.find('bq-select >>> .bq-select__control--prefix');\n expect(prefixContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with label content', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <label slot=\"label\">Select label</label>\n </bq-select>\n `,\n });\n const labelContainerElem = await page.find('bq-select >>> .bq-select__label');\n\n expect(labelContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with helper content', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <span slot=\"helper-text\">Helper text</span>\n </bq-select>\n `,\n });\n const helperContainerElem = await page.find('bq-select >>> .bq-select__helper-text');\n\n expect(helperContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with options', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const options = await page.findAll('bq-select > bq-option');\n\n expect(options.length).toEqual(3);\n });\n\n it('should render with panel options opened', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select open>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const selectPanelElem = await page.find('bq-select >>> .bq-select__dropdown >>> .bq-dropdown__panel');\n\n expect(selectPanelElem).toHaveAttribute('open');\n });\n\n it('should render with selected option', async () => {\n const selectedValue = 1;\n const page = await newE2EPage({\n html: `\n <bq-select value=\"${selectedValue}\">\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const selectValueElem = await page.find(`bq-select bq-option[value=\"${selectedValue}\"]`);\n\n expect(selectValueElem).toHaveAttribute('selected');\n });\n\n it('should select an option and emit Select event', async () => {\n const value = 2;\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const optionSelector = `bq-select > bq-option[value=\"${value}\"]`;\n const eventEmitter = await page.spyOnEvent('bqSelect');\n\n const selectElem = await page.find('bq-select');\n await selectElem.click();\n\n // Make sure the dropdown is open\n expect(await page.find('bq-select >>> bq-dropdown')).toHaveAttribute('open');\n\n // Make sure the option is not selected\n const optionElem = await page.find(optionSelector);\n expect(optionElem).not.toHaveAttribute('selected');\n\n await optionElem.click();\n await page.waitForChanges();\n\n // Make sure the dropdown is close\n expect(await page.find('bq-select >>> bq-dropdown')).not.toHaveAttribute('open');\n // Check that the option is selected\n expect(await page.find(optionSelector)).toHaveAttribute('selected');\n expect(eventEmitter).toHaveReceivedEventTimes(1);\n });\n});\n"]}
1
+ {"version":3,"file":"bq-select.e2e.js","sourceRoot":"","sources":["../../../../../../../src/components/select/__tests__/bq-select.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setProperties } from '../../../shared/test-utils';\n\ndescribe('bq-select', () => {\n it('should render', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const element = await page.find('bq-select');\n\n expect(element).toHaveClass('hydrated');\n });\n\n it('should have shadow root', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const element = await page.find('bq-select');\n\n expect(element.shadowRoot).not.toBeNull();\n });\n\n it('should render with default suffix icon', async () => {\n const page = await newE2EPage({\n html: `<bq-select></bq-select>`,\n });\n const suffixIconElem = await page.find('bq-select >>> bq-icon[name=\"caret-down\"]');\n\n expect(suffixIconElem).not.toBeNull();\n });\n\n it('should render with prefix icon', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-icon name=\"user-circle\" slot=\"prefix\"></bq-icon>\n </bq-select>\n `,\n });\n const prefixContainerElem = await page.find('bq-select >>> .bq-select__control--prefix');\n expect(prefixContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with label content', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <label slot=\"label\">Select label</label>\n </bq-select>\n `,\n });\n const labelContainerElem = await page.find('bq-select >>> .bq-select__label');\n\n expect(labelContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with helper content', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <span slot=\"helper-text\">Helper text</span>\n </bq-select>\n `,\n });\n const helperContainerElem = await page.find('bq-select >>> .bq-select__helper-text');\n\n expect(helperContainerElem).not.toHaveClass('hidden');\n });\n\n it('should render with options', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const options = await page.findAll('bq-select > bq-option');\n\n expect(options.length).toEqual(3);\n });\n\n it('should render with panel options opened', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select open>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const selectPanelElem = await page.find('bq-select >>> .bq-select__dropdown >>> .bq-dropdown__panel');\n\n expect(selectPanelElem).toHaveAttribute('open');\n });\n\n it('should render with selected option', async () => {\n const selectedValue = 1;\n const page = await newE2EPage({\n html: `\n <bq-select value=\"${selectedValue}\">\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const selectValueElem = await page.find(`bq-select bq-option[value=\"${selectedValue}\"]`);\n\n expect(selectValueElem).toHaveAttribute('selected');\n });\n\n it('should select an option and emit Select event', async () => {\n const value = 2;\n const page = await newE2EPage({\n html: `\n <bq-select>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n const optionSelector = `bq-select > bq-option[value=\"${value}\"]`;\n const eventEmitter = await page.spyOnEvent('bqSelect');\n\n const selectElem = await page.find('bq-select');\n await selectElem.click();\n\n // Make sure the dropdown is open\n expect(await page.find('bq-select >>> bq-dropdown')).toHaveAttribute('open');\n\n // Make sure the option is not selected\n const optionElem = await page.find(optionSelector);\n expect(optionElem).not.toHaveAttribute('selected');\n\n await optionElem.click();\n await page.waitForChanges();\n\n // Make sure the dropdown is close\n expect(await page.find('bq-select >>> bq-dropdown')).not.toHaveAttribute('open');\n // Check that the option is selected\n expect(await page.find(optionSelector)).toHaveAttribute('selected');\n expect(eventEmitter).toHaveReceivedEventTimes(1);\n });\n\n it('should render with selected options', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select multiple>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n\n await setProperties(page, 'bq-select', { value: JSON.stringify(['1', '2']) });\n\n const selectedValueElements = await page.findAll(`bq-select bq-option[selected]`);\n const displayTags = await page.findAll('bq-select >>> bq-tag');\n\n expect(selectedValueElements).toHaveLength(2);\n expect(displayTags).toHaveLength(2);\n expect(displayTags[0]).toEqualText('Option 1');\n expect(displayTags[1]).toEqualText('Option 2');\n });\n\n it('should rerender when value is change externally', async () => {\n const page = await newE2EPage({\n html: `\n <bq-select multiple>\n <bq-option value=\"1\">Option 1</bq-option>\n <bq-option value=\"2\">Option 2</bq-option>\n <bq-option value=\"3\">Option 3</bq-option>\n </bq-select>\n `,\n });\n\n await setProperties(page, 'bq-select', { value: JSON.stringify(['1', '2']) });\n\n expect(await page.findAll(`bq-select bq-option[selected]`)).toHaveLength(2);\n\n await setProperties(page, 'bq-select', { value: JSON.stringify(['3']) });\n\n const displayTags = await page.findAll('bq-select >>> bq-tag');\n\n expect(await page.findAll(`bq-select bq-option[selected]`)).toHaveLength(1);\n expect(displayTags).toHaveLength(1);\n expect(displayTags[0]).toEqualText('Option 3');\n });\n});\n"]}
@@ -3,7 +3,7 @@
3
3
  * © https://beeq.design - Apache 2 License.
4
4
  */
5
5
  import { h } from "@stencil/core";
6
- import { debounce, getTextContent, hasSlotContent, isDefined, isHTMLElement } from "../../shared/utils";
6
+ import { debounce, getTextContent, hasSlotContent, isDefined, isHTMLElement, isString, } from "../../shared/utils";
7
7
  /**
8
8
  * @part base - The component's base wrapper.
9
9
  * @part button - The native HTML button used under the hood in the clear button.
@@ -144,6 +144,9 @@ export class BqSelect {
144
144
  this.displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';
145
145
  this.inputElem.value = (_a = this.displayValue) !== null && _a !== void 0 ? _a : '';
146
146
  }
147
+ else {
148
+ this.selectedOptions = this.options.filter((item) => { var _a; return (_a = this.value) === null || _a === void 0 ? void 0 : _a.includes(item.value); });
149
+ }
147
150
  };
148
151
  this.getOptionLabel = (item) => {
149
152
  const slot = item.shadowRoot.querySelector('slot:not([name])');
@@ -184,6 +187,11 @@ export class BqSelect {
184
187
  // Prop lifecycle events
185
188
  // =======================
186
189
  handleValueChange() {
190
+ if (this.multiple && isString(this.value)) {
191
+ // NOTE: we ensure that value is an array, changing the value will trigger Watch to execute thus the return
192
+ this.value = Array.from(JSON.parse(String(this.value)));
193
+ return;
194
+ }
187
195
  this.syncItemsFromValue();
188
196
  }
189
197
  // Component lifecycle events
@@ -200,9 +208,6 @@ export class BqSelect {
200
208
  }
201
209
  this.handleValueChange();
202
210
  }
203
- componentDidRender() {
204
- this.syncItemsFromValue();
205
- }
206
211
  // Listeners
207
212
  // ==============
208
213
  handleOpenChange(ev) {
@@ -250,7 +255,11 @@ export class BqSelect {
250
255
  get displayTags() {
251
256
  return this.selectedOptions.map((item, index) => {
252
257
  if (index < this.maxTagsVisible || this.maxTagsVisible < 0) {
253
- return (h("bq-tag", { key: item.value, removable: true, size: "xsmall", variant: "filled", onBqClose: () => this.handleTagRemove(item),
258
+ return (h("bq-tag", { key: item.value, removable: true, size: "xsmall", variant: "filled", onBqClose: (event) => {
259
+ // NOTE: prevents triggering bqClose on parent
260
+ event.stopPropagation();
261
+ this.handleTagRemove(item);
262
+ },
254
263
  // Prevent the tag from closing the panel when clicked
255
264
  onClick: (ev) => ev.stopPropagation(), exportparts: "wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close", part: "tag" }, this.getOptionLabel(item)));
256
265
  }
@@ -274,19 +283,19 @@ export class BqSelect {
274
283
  // ===================================
275
284
  render() {
276
285
  const labelId = `bq-select__label-${this.name || this.fallbackInputId}`;
277
- return (h("div", { key: '02f9d50d197ecd012e03c270405457dbf14f9144', class: "bq-select", part: "base" }, h("label", { key: '7d57662924ea12872edaf0b769c42f680f16d2dd', id: labelId, class: { 'bq-select__label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: '95fd243c08024aa5ec821282b1a648e42b1ae4fc', name: "label", onSlotchange: this.handleLabelSlotChange })), h("bq-dropdown", { key: '93b96ada984d062715c4a1cee51c950d7655e710', class: "bq-select__dropdown w-full", disabled: this.disabled, distance: this.distance, keepOpenOnSelect: this.keepOpenOnSelect, open: this.open, panelHeight: this.panelHeight, placement: this.placement, sameWidth: this.sameWidth, skidding: this.skidding, strategy: this.strategy, exportparts: "panel" }, h("div", { key: '990ba26e0d8f88ecc2d4a789c5917bba6e4aa87d', class: {
286
+ return (h("div", { key: '93365bce60725fc80034b51de1e7ef751fe65c37', class: "bq-select", part: "base" }, h("label", { key: '0065e122f209644a1fa877fed37b96cdd43332c2', id: labelId, class: { 'bq-select__label': true, '!hidden': !this.hasLabel }, htmlFor: this.name || this.fallbackInputId, ref: (labelElem) => (this.labelElem = labelElem), part: "label" }, h("slot", { key: '377f747dacc7fdde8a131763d6f936643675606f', name: "label", onSlotchange: this.handleLabelSlotChange })), h("bq-dropdown", { key: '5e5a1cb415f5dca1cb5bd300a97551e619e8f7ec', class: "bq-select__dropdown w-full", disabled: this.disabled, distance: this.distance, keepOpenOnSelect: this.keepOpenOnSelect, open: this.open, panelHeight: this.panelHeight, placement: this.placement, sameWidth: this.sameWidth, skidding: this.skidding, strategy: this.strategy, exportparts: "panel" }, h("div", { key: 'e26f9abac85ac1aa4eef36866862eb9284a96aad', class: {
278
287
  'bq-select__control': true,
279
288
  [`validation-${this.validationStatus}`]: true,
280
289
  disabled: this.disabled,
281
- }, part: "control", slot: "trigger" }, h("span", { key: '26009add5f23f3b33e6912b804428e67da347fef', class: { 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: '03d70e1cd969c7c26b95b94af36958a84fb5c52d', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("div", { key: '5ac3eb995b5d5dc6fab0ac73962b260cd7834303', class: "flex flex-1 overflow-x-auto", part: "input-outline" }, this.multiple && (h("span", { key: '732309cc836b6363c1dd4e30014fe19d790489e4', class: "me-xs2 flex flex-1 gap-xs2 [&>bq-tag::part(text)]:text-nowrap [&>bq-tag::part(text)]:leading-small [&>bq-tag]:inline-flex", part: "tags" }, this.displayTags)), h("input", { key: '17461304fab0315baec7afaa053b80c54d234b68', id: this.name || this.fallbackInputId, class: "bq-select__control--input w-full flex-grow", autoComplete: "off", autoCapitalize: "off", autoFocus: this.autofocus, "aria-disabled": this.disabled ? 'true' : 'false', "aria-controls": `bq-options-${this.name}`, "aria-expanded": this.open ? 'true' : 'false', "aria-haspopup": "listbox", disabled: this.disabled, form: this.form, name: this.name, placeholder: this.displayPlaceholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, role: "combobox", spellcheck: false, type: "text", value: this.displayValue, part: "input",
290
+ }, part: "control", slot: "trigger" }, h("span", { key: '01ce8b1b75f83ab2cdec682ee2b68e1cd2cea2ab', class: { 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }, ref: (spanElem) => (this.prefixElem = spanElem), part: "prefix" }, h("slot", { key: '0a6404d02c4cf3ea68d76cda304627629172d505', name: "prefix", onSlotchange: this.handlePrefixSlotChange })), h("div", { key: '5d9f95e9371c8dc78cbc89b519f1d523efb56fbb', class: "flex flex-1 overflow-x-auto", part: "input-outline" }, this.multiple && (h("span", { key: 'e2a41a90ff515cb050cb50d562fd3456a0c5a971', class: "me-xs2 flex flex-1 gap-xs2 [&>bq-tag::part(text)]:text-nowrap [&>bq-tag::part(text)]:leading-small [&>bq-tag]:inline-flex", part: "tags" }, this.displayTags)), h("input", { key: '179962a0c3572cf267c5787f5258f3251d0865a9', id: this.name || this.fallbackInputId, class: "bq-select__control--input w-full flex-grow", autoComplete: "off", autoCapitalize: "off", autoFocus: this.autofocus, "aria-disabled": this.disabled ? 'true' : 'false', "aria-controls": `bq-options-${this.name}`, "aria-expanded": this.open ? 'true' : 'false', "aria-haspopup": "listbox", disabled: this.disabled, form: this.form, name: this.name, placeholder: this.displayPlaceholder, ref: (inputElem) => (this.inputElem = inputElem), readOnly: this.readonly, required: this.required, role: "combobox", spellcheck: false, type: "text", value: this.displayValue, part: "input",
282
291
  // Events
283
292
  onBlur: this.handleBlur, onFocus: this.handleFocus, onInput: this.handleSearchFilter })), this.hasClearIcon && (
284
293
  // The clear button will be visible as long as the input has a value
285
294
  // and the parent group is hovered or has focus-within
286
- h("bq-button", { key: 'bcb8c3f5fad488f98abcd0ce6d650309ae579ef9', class: "bq-select__control--clear ms-[--bq-select--gap]", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button", tabIndex: -1 }, h("slot", { key: '014f8b03b759e8834896d1ef3b97de5be36cff61', name: "clear-icon" }, h("bq-icon", { key: '09b481745b2c21fa3e7e025ab65d6ec65c6799ad', name: "x-circle", class: "flex" })))), h("span", { key: '3a472bb44053d4db6bd23a8903e3cf2302ba8175', class: { 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: '7ab67db44451d26e47025141562f4964a959cebd', name: "suffix", onSlotchange: this.handleSuffixSlotChange }, h("bq-icon", { key: 'a275bc3592809db0400d4997347215cfcbe1c7ea', name: "caret-down", class: "flex" })))), h("bq-option-list", { key: 'f35debbc5f66029cbb4e629f121cdd07d9f8d7d1', id: `bq-options-${this.name}`, onBqSelect: this.handleSelect, "aria-expanded": this.open ? 'true' : 'false', exportparts: "base:option-list", role: "listbox" }, h("slot", { key: 'd3f0221adf2f45de44c2ac8c5b015ff9db45ee87' }))), h("div", { key: 'acacde82dfed85687cfa8b443992f79cc3f2f145', class: {
295
+ h("bq-button", { key: '2f94a0813747b23caaeaab20f28bd687b7cb7d3b', class: "bq-select__control--clear ms-[--bq-select--gap]", appearance: "text", "aria-label": this.clearButtonLabel, size: "small", onBqClick: this.handleClearClick, part: "clear-btn", exportparts: "button", tabIndex: -1 }, h("slot", { key: '5b0168c7b8bce6ccc05080a8111216d098c987a7', name: "clear-icon" }, h("bq-icon", { key: 'ad6b5016896acb1226726599603465fb1b280b65', name: "x-circle", class: "flex" })))), h("span", { key: '505eebe64f8faed6b31a34b80429ea23a4517948', class: { 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }, ref: (spanElem) => (this.suffixElem = spanElem), part: "suffix" }, h("slot", { key: 'f4ae5ea77e67b54e32206e68735a8eb1afd4d0e1', name: "suffix", onSlotchange: this.handleSuffixSlotChange }, h("bq-icon", { key: '005e9c61ba8353db41f4aeb9ca0d5c47fae41bfe', name: "caret-down", class: "flex" })))), h("bq-option-list", { key: '206613838b1af99cbf41fe64bb9d5d008cd6fd92', id: `bq-options-${this.name}`, onBqSelect: this.handleSelect, "aria-expanded": this.open ? 'true' : 'false', exportparts: "base:option-list", role: "listbox" }, h("slot", { key: '57b47f994fccfea12105b8fb45ab8f72766134a5' }))), h("div", { key: '3702dbb3eebc9485fc6089068c8aa3f318527c86', class: {
287
296
  [`bq-select__helper-text validation-${this.validationStatus}`]: true,
288
297
  '!hidden': !this.hasHelperText,
289
- }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: 'b94d5f1dc8769ba3f06794c2648351695887152f', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
298
+ }, ref: (divElem) => (this.helperTextElem = divElem), part: "helper-text" }, h("slot", { key: '9464eeac52d5252be2e6d991688e4411a29bc148', name: "helper-text", onSlotchange: this.handleHelperTextSlotChange }))));
290
299
  }
291
300
  static get is() { return "bq-select"; }
292
301
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"bq-select.js","sourceRoot":"","sources":["../../../../../../src/components/select/bq-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { FloatingUIPlacement } from '../../services/interfaces';\nimport { debounce, getTextContent, hasSlotContent, isDefined, isHTMLElement, TDebounce } from '../../shared/utils';\nimport { TInputValidation } from '../input/bq-input.types';\n\nexport type TSelectValue = string | string[];\n\n/**\n * @part base - The component's base wrapper.\n * @part button - The native HTML button used under the hood in the clear button.\n * @part clear-btn - The clear button.\n * @part control - The input control wrapper.\n * @part input-outline - The input outline wrapper that holds the tags container and the native HTML input used under the hood.\n * @part helper-text - The helper text slot container.\n * @part input - The native HTML input element used under the hood.\n * @part label - The label slot container.\n * @part panel - The select panel container\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n * @part tags - The tags container of the BqTags for multiple selection.\n * @part tag - The tag container of the BqTag for multiple selection.\n * @part tag__base - The base wrapper of the BqTag for multiple selection.\n * @part tag__prefix - The prefix slot container of the BqTag for multiple selection.\n * @part tag__text - The text slot container of the BqTag for multiple selection.\n * @part tag__btn-close - The close button of the BqTag for multiple selection.\n * @part option-list - The option list container.\n */\n@Component({\n tag: 'bq-select',\n styleUrl: './scss/bq-select.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqSelect {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceQuery: TDebounce<void>;\n\n private fallbackInputId = 'select';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSelectElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() displayValue?: string;\n @State() hasHelperText = false;\n @State() selectedOptions: HTMLBqOptionElement[] = [];\n\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /** If true, the Select input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /**\n * Indicates whether the Select input is disabled or not.\n * If `true`, the Select is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** Represents the distance (gutter or margin) between the Select panel and the input element. */\n @Prop({ reflect: true }) distance?: number = 8;\n\n /** The ID of the form that the Select input belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /** If true, the Select panel will remain open after a selection is made. */\n @Prop({ reflect: true }) keepOpenOnSelect?: boolean = false;\n\n /** The Select input name. */\n @Prop({ reflect: true }) name!: string;\n\n /** The maximum number of tags to display when multiple selection is enabled */\n @Prop({ mutable: true }) maxTagsVisible: number = 2;\n\n /** If true, the Select input will allow multiple selections. */\n @Prop({ reflect: true }) multiple?: boolean = false;\n\n /** If true, the Select panel will be visible. */\n @Prop({ reflect: true, mutable: true }) open?: boolean = false;\n\n /** When set, it will override the height of the Select panel. */\n @Prop({ reflect: true }) panelHeight?: string;\n\n /** The Select input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** Position of the Select panel */\n @Prop({ reflect: true }) placement?: FloatingUIPlacement = 'bottom';\n\n /** If true, the list of options cannot be filtered (searching won't be available) */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the Select input is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /** Whether the panel should have the Select same width as the input element */\n @Prop({ reflect: true }) sameWidth?: boolean = true;\n\n /** Represents the skidding between the Select panel and the input element. */\n @Prop({ reflect: true }) skidding?: number = 0;\n\n /** Defines the strategy to position the Select panel */\n @Prop({ reflect: true }) strategy?: 'fixed' | 'absolute' = 'fixed';\n\n /**\n * The validation status of the Select input.\n *\n * @remarks\n * This property is used to indicate the validation status of the select input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The select input value, it can be used to reset the field to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TSelectValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n this.syncItemsFromValue();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the Select input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the Select input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has changed */\n @Event() bqSelect!: EventEmitter<{ value: string | number | string[]; item: HTMLBqOptionElement }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n if (this.multiple) {\n this.value = Array.isArray(this.value) ? this.value : Array.from(JSON.parse(String(this.value)));\n }\n }\n\n componentDidLoad() {\n if (this.multiple && Array.isArray(this.value)) {\n this.selectedOptions = this.options.filter((item) => this.value.includes(item.value));\n }\n\n this.handleValueChange();\n }\n\n componentDidRender() {\n this.syncItemsFromValue();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqOpen', { capture: true })\n handleOpenChange(ev: CustomEvent<{ open: boolean }>) {\n if (!ev.composedPath().includes(this.el)) return;\n\n this.open = ev.detail.open;\n }\n\n @Listen('bqFocus', { capture: true })\n @Listen('bqBlur', { capture: true })\n stopOptionFocusBlurPropagation(ev: CustomEvent) {\n // Stop propagation of focus and blur events coming from the `bq-option` elements\n if (isHTMLElement(ev.target, 'bq-select')) return;\n\n ev.stopPropagation();\n }\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Clears the selected value.\n *\n * @return {Promise<void>}\n * @memberof BqSelect\n */\n @Method()\n async clear(): Promise<void> {\n if (this.disabled) return;\n\n this.value = undefined;\n this.selectedOptions = [];\n if (!this.multiple) {\n this.displayValue = undefined;\n this.inputElem.value = undefined;\n }\n\n this.resetOptionsVisibility();\n this.bqClear.emit(this.el);\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleSelect = (ev: CustomEvent<{ value: TSelectValue; item: HTMLBqOptionElement }>) => {\n if (this.disabled) return;\n\n if (this.multiple) {\n ev.stopPropagation();\n }\n\n const { value, item } = ev.detail;\n\n if (this.multiple) {\n this.handleMultipleSelection(item);\n // Clear the input value after selecting an item\n this.inputElem.value = '';\n // If multiple selection is enabled, emit the selected items array instead of relying on\n // the option list to emit the value of the selected item\n this.bqSelect.emit({ value: this.value, item });\n } else {\n this.value = value;\n }\n\n this.resetOptionsVisibility();\n this.inputElem.focus();\n };\n\n private handleMultipleSelection = (item: HTMLBqOptionElement) => {\n // Set has O(1) complexity for insertion, deletion, and search operations, compared to an Array's O(n)\n const selectedOptionsSet = new Set(this.selectedOptions);\n\n if (selectedOptionsSet.has(item)) {\n selectedOptionsSet.delete(item);\n } else {\n selectedOptionsSet.add(item);\n }\n\n this.selectedOptions = Array.from(selectedOptionsSet);\n this.value = this.selectedOptions.map((item) => item.value);\n };\n\n private handleSearchFilter = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceQuery?.cancel();\n\n const query = (ev.target as HTMLInputElement).value?.toLowerCase().trim();\n\n if (!isDefined(query)) {\n this.clear();\n } else {\n this.debounceQuery = debounce(() => {\n this.options.forEach((item: HTMLBqOptionElement) => {\n const itemLabel = this.getOptionLabel(item).toLowerCase();\n item.hidden = !itemLabel.includes(query);\n });\n }, this.debounceTime);\n\n this.debounceQuery();\n }\n\n // The panel will close once a selection is made\n // so we need to make sure it's open when the user is typing and the query is not empty\n this.open = true;\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n (async () => {\n await this.clear();\n })();\n this.inputElem.focus();\n\n ev.stopPropagation();\n };\n\n private handleTagRemove = (item: HTMLBqOptionElement) => {\n if (this.disabled) return;\n\n this.handleMultipleSelection(item);\n this.bqSelect.emit({ value: this.value, item });\n };\n\n private handleLabelSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n };\n\n private handlePrefixSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem);\n };\n\n private handleSuffixSlotChange = () => {\n this.hasSuffix = hasSlotContent(this.suffixElem);\n };\n\n private handleHelperTextSlotChange = () => {\n this.hasHelperText = hasSlotContent(this.helperTextElem);\n };\n\n private resetOptionsVisibility = () => {\n this.options.forEach((item: HTMLBqOptionElement) => (item.hidden = false));\n };\n\n private syncItemsFromValue = () => {\n const items = this.options;\n if (!items.length) return;\n\n // Sync selected state of the BqOption elements\n this.options.forEach((option: HTMLBqOptionElement) => {\n if (this.multiple && Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = option.value.toLowerCase() === String(this.value).toLowerCase();\n }\n });\n\n if (!this.multiple) {\n // Sync display label\n const checkedItem = items.filter((item) => item.value === this.value)[0];\n this.displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';\n this.inputElem.value = this.displayValue ?? '';\n }\n };\n\n private getOptionLabel = (item: HTMLBqOptionElement) => {\n const slot = item.shadowRoot.querySelector('slot:not([name])');\n if (!slot) return;\n\n return getTextContent(slot as HTMLSlotElement);\n };\n\n private get options() {\n return Array.from(this.el.querySelectorAll('bq-option'));\n }\n\n private get displayPlaceholder() {\n // Hide the placeholder when multiple selection is enabled and there are selected items\n return this.multiple && this.selectedOptions.length !== 0 ? undefined : this.placeholder;\n }\n\n private get displayTags() {\n return this.selectedOptions.map((item, index) => {\n if (index < this.maxTagsVisible || this.maxTagsVisible < 0) {\n return (\n <bq-tag\n key={item.value}\n removable\n size=\"xsmall\"\n variant=\"filled\"\n onBqClose={() => this.handleTagRemove(item)}\n // Prevent the tag from closing the panel when clicked\n onClick={(ev: MouseEvent) => ev.stopPropagation()}\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n {this.getOptionLabel(item)}\n </bq-tag>\n );\n } else if (index === this.maxTagsVisible) {\n return (\n <bq-tag\n key=\"more\"\n size=\"xsmall\"\n variant=\"filled\"\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n +{this.selectedOptions.length - index}\n </bq-tag>\n );\n }\n\n return null;\n });\n }\n\n private get hasClearIcon() {\n if (this.disableClear || this.disabled) {\n return false;\n }\n\n if (this.multiple) {\n return this.selectedOptions.length > 0;\n }\n\n return isDefined(this.displayValue);\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const labelId = `bq-select__label-${this.name || this.fallbackInputId}`;\n\n return (\n <div class=\"bq-select\" part=\"base\">\n {/* Label */}\n <label\n id={labelId}\n class={{ 'bq-select__label': true, '!hidden': !this.hasLabel }}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem: HTMLSpanElement) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleLabelSlotChange} />\n </label>\n {/* Select dropdown */}\n <bq-dropdown\n class=\"bq-select__dropdown w-full\"\n disabled={this.disabled}\n distance={this.distance}\n keepOpenOnSelect={this.keepOpenOnSelect}\n open={this.open}\n panelHeight={this.panelHeight}\n placement={this.placement}\n sameWidth={this.sameWidth}\n skidding={this.skidding}\n strategy={this.strategy}\n exportparts=\"panel\"\n >\n {/* Input control group */}\n <div\n class={{\n 'bq-select__control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n slot=\"trigger\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem: HTMLSpanElement) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handlePrefixSlotChange} />\n </span>\n <div class=\"flex flex-1 overflow-x-auto\" part=\"input-outline\">\n {/* Display selected values using BqTags for multiple selection */}\n {this.multiple && (\n <span\n class=\"me-xs2 flex flex-1 gap-xs2 [&>bq-tag::part(text)]:text-nowrap [&>bq-tag::part(text)]:leading-small [&>bq-tag]:inline-flex\"\n part=\"tags\"\n >\n {this.displayTags}\n </span>\n )}\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-select__control--input w-full flex-grow\"\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n autoFocus={this.autofocus}\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-controls={`bq-options-${this.name}`}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n disabled={this.disabled}\n form={this.form}\n name={this.name}\n placeholder={this.displayPlaceholder}\n ref={(inputElem: HTMLInputElement) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n role=\"combobox\"\n spellcheck={false}\n type=\"text\"\n value={this.displayValue}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onInput={this.handleSearchFilter}\n />\n </div>\n {/* Clear Button */}\n {this.hasClearIcon && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-select__control--clear ms-[--bq-select--gap]\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n tabIndex={-1}\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }}\n ref={(spanElem: HTMLSpanElement) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSuffixSlotChange}>\n <bq-icon name=\"caret-down\" class=\"flex\" />\n </slot>\n </span>\n </div>\n <bq-option-list\n id={`bq-options-${this.name}`}\n onBqSelect={this.handleSelect}\n aria-expanded={this.open ? 'true' : 'false'}\n exportparts=\"base:option-list\"\n role=\"listbox\"\n >\n <slot />\n </bq-option-list>\n </bq-dropdown>\n {/* Helper text */}\n <div\n class={{\n [`bq-select__helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem: HTMLDivElement) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleHelperTextSlotChange} />\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"bq-select.js","sourceRoot":"","sources":["../../../../../../src/components/select/bq-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Listen, Method, Prop, State, Watch } from '@stencil/core';\n\nimport { FloatingUIPlacement } from '../../services/interfaces';\nimport {\n debounce,\n getTextContent,\n hasSlotContent,\n isDefined,\n isHTMLElement,\n isString,\n TDebounce,\n} from '../../shared/utils';\nimport { TInputValidation } from '../input/bq-input.types';\n\nexport type TSelectValue = string | string[];\n\n/**\n * @part base - The component's base wrapper.\n * @part button - The native HTML button used under the hood in the clear button.\n * @part clear-btn - The clear button.\n * @part control - The input control wrapper.\n * @part input-outline - The input outline wrapper that holds the tags container and the native HTML input used under the hood.\n * @part helper-text - The helper text slot container.\n * @part input - The native HTML input element used under the hood.\n * @part label - The label slot container.\n * @part panel - The select panel container\n * @part prefix - The prefix slot container.\n * @part suffix - The suffix slot container.\n * @part tags - The tags container of the BqTags for multiple selection.\n * @part tag - The tag container of the BqTag for multiple selection.\n * @part tag__base - The base wrapper of the BqTag for multiple selection.\n * @part tag__prefix - The prefix slot container of the BqTag for multiple selection.\n * @part tag__text - The text slot container of the BqTag for multiple selection.\n * @part tag__btn-close - The close button of the BqTag for multiple selection.\n * @part option-list - The option list container.\n */\n@Component({\n tag: 'bq-select',\n styleUrl: './scss/bq-select.scss',\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BqSelect {\n // Own Properties\n // ====================\n\n private helperTextElem?: HTMLElement;\n private inputElem?: HTMLInputElement;\n private labelElem?: HTMLElement;\n private prefixElem?: HTMLElement;\n private suffixElem?: HTMLElement;\n\n private debounceQuery: TDebounce<void>;\n\n private fallbackInputId = 'select';\n\n // Reference to host HTML element\n // ===================================\n\n @Element() el!: HTMLBqSelectElement;\n\n // State() variables\n // Inlined decorator, alphabetical order\n // =======================================\n\n @State() displayValue?: string;\n @State() hasHelperText = false;\n @State() selectedOptions: HTMLBqOptionElement[] = [];\n\n @State() hasLabel = false;\n @State() hasPrefix = false;\n @State() hasSuffix = false;\n @State() hasValue = false;\n\n // Public Property API\n // ========================\n\n /** If true, the Select input will be focused on component render */\n @Prop({ reflect: true }) autofocus: boolean;\n\n /** The clear button aria label */\n @Prop({ reflect: true }) clearButtonLabel? = 'Clear value';\n\n /**\n * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.\n * A value of 0 means no debouncing will occur.\n */\n @Prop({ reflect: true, mutable: true }) debounceTime? = 0;\n\n /**\n * Indicates whether the Select input is disabled or not.\n * If `true`, the Select is disabled and cannot be interacted with.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n\n /** If true, the clear button won't be displayed */\n @Prop({ reflect: true }) disableClear? = false;\n\n /** Represents the distance (gutter or margin) between the Select panel and the input element. */\n @Prop({ reflect: true }) distance?: number = 8;\n\n /** The ID of the form that the Select input belongs to. */\n @Prop({ reflect: true }) form?: string;\n\n /** If true, the Select panel will remain open after a selection is made. */\n @Prop({ reflect: true }) keepOpenOnSelect?: boolean = false;\n\n /** The Select input name. */\n @Prop({ reflect: true }) name!: string;\n\n /** The maximum number of tags to display when multiple selection is enabled */\n @Prop({ mutable: true }) maxTagsVisible: number = 2;\n\n /** If true, the Select input will allow multiple selections. */\n @Prop({ reflect: true }) multiple?: boolean = false;\n\n /** If true, the Select panel will be visible. */\n @Prop({ reflect: true, mutable: true }) open?: boolean = false;\n\n /** When set, it will override the height of the Select panel. */\n @Prop({ reflect: true }) panelHeight?: string;\n\n /** The Select input placeholder text value */\n @Prop({ reflect: true }) placeholder?: string;\n\n /** Position of the Select panel */\n @Prop({ reflect: true }) placement?: FloatingUIPlacement = 'bottom';\n\n /** If true, the list of options cannot be filtered (searching won't be available) */\n @Prop({ reflect: true }) readonly?: boolean;\n\n /** Indicates whether or not the Select input is required to be filled out before submitting the form. */\n @Prop({ reflect: true }) required?: boolean;\n\n /** Whether the panel should have the Select same width as the input element */\n @Prop({ reflect: true }) sameWidth?: boolean = true;\n\n /** Represents the skidding between the Select panel and the input element. */\n @Prop({ reflect: true }) skidding?: number = 0;\n\n /** Defines the strategy to position the Select panel */\n @Prop({ reflect: true }) strategy?: 'fixed' | 'absolute' = 'fixed';\n\n /**\n * The validation status of the Select input.\n *\n * @remarks\n * This property is used to indicate the validation status of the select input. It can be set to one of the following values:\n * - `'none'`: No validation status is set.\n * - `'error'`: The input has a validation error.\n * - `'warning'`: The input has a validation warning.\n * - `'success'`: The input has passed validation.\n */\n @Prop({ reflect: true }) validationStatus: TInputValidation = 'none';\n\n /** The select input value, it can be used to reset the field to a previous value */\n @Prop({ reflect: true, mutable: true }) value: TSelectValue;\n\n // Prop lifecycle events\n // =======================\n\n @Watch('value')\n handleValueChange() {\n if (this.multiple && isString(this.value)) {\n // NOTE: we ensure that value is an array, changing the value will trigger Watch to execute thus the return\n this.value = Array.from(JSON.parse(String(this.value)));\n return;\n }\n\n this.syncItemsFromValue();\n }\n\n // Events section\n // Requires JSDocs for public API documentation\n // ==============================================\n\n /** Callback handler emitted when the Select input loses focus */\n @Event() bqBlur!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has been cleared */\n @Event() bqClear!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the Select input has received focus */\n @Event() bqFocus!: EventEmitter<HTMLBqSelectElement>;\n\n /** Callback handler emitted when the selected value has changed */\n @Event() bqSelect!: EventEmitter<{ value: string | number | string[]; item: HTMLBqOptionElement }>;\n\n // Component lifecycle events\n // Ordered by their natural call order\n // =====================================\n\n connectedCallback() {\n if (this.multiple) {\n this.value = Array.isArray(this.value) ? this.value : Array.from(JSON.parse(String(this.value)));\n }\n }\n\n componentDidLoad() {\n if (this.multiple && Array.isArray(this.value)) {\n this.selectedOptions = this.options.filter((item) => this.value.includes(item.value));\n }\n\n this.handleValueChange();\n }\n\n // Listeners\n // ==============\n\n @Listen('bqOpen', { capture: true })\n handleOpenChange(ev: CustomEvent<{ open: boolean }>) {\n if (!ev.composedPath().includes(this.el)) return;\n\n this.open = ev.detail.open;\n }\n\n @Listen('bqFocus', { capture: true })\n @Listen('bqBlur', { capture: true })\n stopOptionFocusBlurPropagation(ev: CustomEvent) {\n // Stop propagation of focus and blur events coming from the `bq-option` elements\n if (isHTMLElement(ev.target, 'bq-select')) return;\n\n ev.stopPropagation();\n }\n\n // Public methods API\n // These methods are exposed on the host element.\n // Always use two lines.\n // Public Methods must be async.\n // Requires JSDocs for public API documentation.\n // ===============================================\n\n /**\n * Clears the selected value.\n *\n * @return {Promise<void>}\n * @memberof BqSelect\n */\n @Method()\n async clear(): Promise<void> {\n if (this.disabled) return;\n\n this.value = undefined;\n this.selectedOptions = [];\n if (!this.multiple) {\n this.displayValue = undefined;\n this.inputElem.value = undefined;\n }\n\n this.resetOptionsVisibility();\n this.bqClear.emit(this.el);\n }\n\n // Local methods\n // Internal business logic.\n // These methods cannot be called from the host element.\n // =======================================================\n\n private handleBlur = () => {\n if (this.disabled) return;\n\n this.bqBlur.emit(this.el);\n };\n\n private handleFocus = () => {\n if (this.disabled) return;\n\n this.bqFocus.emit(this.el);\n };\n\n private handleSelect = (ev: CustomEvent<{ value: TSelectValue; item: HTMLBqOptionElement }>) => {\n if (this.disabled) return;\n\n if (this.multiple) {\n ev.stopPropagation();\n }\n\n const { value, item } = ev.detail;\n\n if (this.multiple) {\n this.handleMultipleSelection(item);\n // Clear the input value after selecting an item\n this.inputElem.value = '';\n // If multiple selection is enabled, emit the selected items array instead of relying on\n // the option list to emit the value of the selected item\n this.bqSelect.emit({ value: this.value, item });\n } else {\n this.value = value;\n }\n\n this.resetOptionsVisibility();\n this.inputElem.focus();\n };\n\n private handleMultipleSelection = (item: HTMLBqOptionElement) => {\n // Set has O(1) complexity for insertion, deletion, and search operations, compared to an Array's O(n)\n const selectedOptionsSet = new Set(this.selectedOptions);\n\n if (selectedOptionsSet.has(item)) {\n selectedOptionsSet.delete(item);\n } else {\n selectedOptionsSet.add(item);\n }\n\n this.selectedOptions = Array.from(selectedOptionsSet);\n this.value = this.selectedOptions.map((item) => item.value);\n };\n\n private handleSearchFilter = (ev: Event) => {\n if (this.disabled) return;\n\n this.debounceQuery?.cancel();\n\n const query = (ev.target as HTMLInputElement).value?.toLowerCase().trim();\n\n if (!isDefined(query)) {\n this.clear();\n } else {\n this.debounceQuery = debounce(() => {\n this.options.forEach((item: HTMLBqOptionElement) => {\n const itemLabel = this.getOptionLabel(item).toLowerCase();\n item.hidden = !itemLabel.includes(query);\n });\n }, this.debounceTime);\n\n this.debounceQuery();\n }\n\n // The panel will close once a selection is made\n // so we need to make sure it's open when the user is typing and the query is not empty\n this.open = true;\n };\n\n private handleClearClick = (ev: CustomEvent) => {\n (async () => {\n await this.clear();\n })();\n this.inputElem.focus();\n\n ev.stopPropagation();\n };\n\n private handleTagRemove = (item: HTMLBqOptionElement) => {\n if (this.disabled) return;\n\n this.handleMultipleSelection(item);\n this.bqSelect.emit({ value: this.value, item });\n };\n\n private handleLabelSlotChange = () => {\n this.hasLabel = hasSlotContent(this.labelElem);\n };\n\n private handlePrefixSlotChange = () => {\n this.hasPrefix = hasSlotContent(this.prefixElem);\n };\n\n private handleSuffixSlotChange = () => {\n this.hasSuffix = hasSlotContent(this.suffixElem);\n };\n\n private handleHelperTextSlotChange = () => {\n this.hasHelperText = hasSlotContent(this.helperTextElem);\n };\n\n private resetOptionsVisibility = () => {\n this.options.forEach((item: HTMLBqOptionElement) => (item.hidden = false));\n };\n\n private syncItemsFromValue = () => {\n const items = this.options;\n if (!items.length) return;\n\n // Sync selected state of the BqOption elements\n this.options.forEach((option: HTMLBqOptionElement) => {\n if (this.multiple && Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = option.value.toLowerCase() === String(this.value).toLowerCase();\n }\n });\n\n if (!this.multiple) {\n // Sync display label\n const checkedItem = items.filter((item) => item.value === this.value)[0];\n this.displayValue = checkedItem ? this.getOptionLabel(checkedItem) : '';\n this.inputElem.value = this.displayValue ?? '';\n } else {\n this.selectedOptions = this.options.filter((item) => this.value?.includes(item.value));\n }\n };\n\n private getOptionLabel = (item: HTMLBqOptionElement) => {\n const slot = item.shadowRoot.querySelector('slot:not([name])');\n if (!slot) return;\n\n return getTextContent(slot as HTMLSlotElement);\n };\n\n private get options() {\n return Array.from(this.el.querySelectorAll('bq-option'));\n }\n\n private get displayPlaceholder() {\n // Hide the placeholder when multiple selection is enabled and there are selected items\n return this.multiple && this.selectedOptions.length !== 0 ? undefined : this.placeholder;\n }\n\n private get displayTags() {\n return this.selectedOptions.map((item, index) => {\n if (index < this.maxTagsVisible || this.maxTagsVisible < 0) {\n return (\n <bq-tag\n key={item.value}\n removable\n size=\"xsmall\"\n variant=\"filled\"\n onBqClose={(event) => {\n // NOTE: prevents triggering bqClose on parent\n event.stopPropagation();\n this.handleTagRemove(item);\n }}\n // Prevent the tag from closing the panel when clicked\n onClick={(ev: MouseEvent) => ev.stopPropagation()}\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n {this.getOptionLabel(item)}\n </bq-tag>\n );\n } else if (index === this.maxTagsVisible) {\n return (\n <bq-tag\n key=\"more\"\n size=\"xsmall\"\n variant=\"filled\"\n exportparts=\"wrapper:tag__base,prefix:tag__prefix,text:tag__text,btn-close:tag__btn-close\"\n part=\"tag\"\n >\n +{this.selectedOptions.length - index}\n </bq-tag>\n );\n }\n\n return null;\n });\n }\n\n private get hasClearIcon() {\n if (this.disableClear || this.disabled) {\n return false;\n }\n\n if (this.multiple) {\n return this.selectedOptions.length > 0;\n }\n\n return isDefined(this.displayValue);\n }\n\n // render() function\n // Always the last one in the class.\n // ===================================\n\n render() {\n const labelId = `bq-select__label-${this.name || this.fallbackInputId}`;\n\n return (\n <div class=\"bq-select\" part=\"base\">\n {/* Label */}\n <label\n id={labelId}\n class={{ 'bq-select__label': true, '!hidden': !this.hasLabel }}\n htmlFor={this.name || this.fallbackInputId}\n ref={(labelElem: HTMLSpanElement) => (this.labelElem = labelElem)}\n part=\"label\"\n >\n <slot name=\"label\" onSlotchange={this.handleLabelSlotChange} />\n </label>\n {/* Select dropdown */}\n <bq-dropdown\n class=\"bq-select__dropdown w-full\"\n disabled={this.disabled}\n distance={this.distance}\n keepOpenOnSelect={this.keepOpenOnSelect}\n open={this.open}\n panelHeight={this.panelHeight}\n placement={this.placement}\n sameWidth={this.sameWidth}\n skidding={this.skidding}\n strategy={this.strategy}\n exportparts=\"panel\"\n >\n {/* Input control group */}\n <div\n class={{\n 'bq-select__control': true,\n [`validation-${this.validationStatus}`]: true,\n disabled: this.disabled,\n }}\n part=\"control\"\n slot=\"trigger\"\n >\n {/* Prefix */}\n <span\n class={{ 'bq-select__control--prefix': true, '!hidden': !this.hasPrefix }}\n ref={(spanElem: HTMLSpanElement) => (this.prefixElem = spanElem)}\n part=\"prefix\"\n >\n <slot name=\"prefix\" onSlotchange={this.handlePrefixSlotChange} />\n </span>\n <div class=\"flex flex-1 overflow-x-auto\" part=\"input-outline\">\n {/* Display selected values using BqTags for multiple selection */}\n {this.multiple && (\n <span\n class=\"me-xs2 flex flex-1 gap-xs2 [&>bq-tag::part(text)]:text-nowrap [&>bq-tag::part(text)]:leading-small [&>bq-tag]:inline-flex\"\n part=\"tags\"\n >\n {this.displayTags}\n </span>\n )}\n {/* HTML Input */}\n <input\n id={this.name || this.fallbackInputId}\n class=\"bq-select__control--input w-full flex-grow\"\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n autoFocus={this.autofocus}\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-controls={`bq-options-${this.name}`}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n disabled={this.disabled}\n form={this.form}\n name={this.name}\n placeholder={this.displayPlaceholder}\n ref={(inputElem: HTMLInputElement) => (this.inputElem = inputElem)}\n readOnly={this.readonly}\n required={this.required}\n role=\"combobox\"\n spellcheck={false}\n type=\"text\"\n value={this.displayValue}\n part=\"input\"\n // Events\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onInput={this.handleSearchFilter}\n />\n </div>\n {/* Clear Button */}\n {this.hasClearIcon && (\n // The clear button will be visible as long as the input has a value\n // and the parent group is hovered or has focus-within\n <bq-button\n class=\"bq-select__control--clear ms-[--bq-select--gap]\"\n appearance=\"text\"\n aria-label={this.clearButtonLabel}\n size=\"small\"\n onBqClick={this.handleClearClick}\n part=\"clear-btn\"\n exportparts=\"button\"\n tabIndex={-1}\n >\n <slot name=\"clear-icon\">\n <bq-icon name=\"x-circle\" class=\"flex\" />\n </slot>\n </bq-button>\n )}\n {/* Suffix */}\n <span\n class={{ 'bq-select__control--suffix': true, 'rotate-180': this.open, 'rotate-0': !this.open }}\n ref={(spanElem: HTMLSpanElement) => (this.suffixElem = spanElem)}\n part=\"suffix\"\n >\n <slot name=\"suffix\" onSlotchange={this.handleSuffixSlotChange}>\n <bq-icon name=\"caret-down\" class=\"flex\" />\n </slot>\n </span>\n </div>\n <bq-option-list\n id={`bq-options-${this.name}`}\n onBqSelect={this.handleSelect}\n aria-expanded={this.open ? 'true' : 'false'}\n exportparts=\"base:option-list\"\n role=\"listbox\"\n >\n <slot />\n </bq-option-list>\n </bq-dropdown>\n {/* Helper text */}\n <div\n class={{\n [`bq-select__helper-text validation-${this.validationStatus}`]: true,\n '!hidden': !this.hasHelperText,\n }}\n ref={(divElem: HTMLDivElement) => (this.helperTextElem = divElem)}\n part=\"helper-text\"\n >\n <slot name=\"helper-text\" onSlotchange={this.handleHelperTextSlotChange} />\n </div>\n </div>\n );\n }\n}\n"]}
@@ -35,7 +35,7 @@ export class BqSlider {
35
35
  };
36
36
  this.calculateMinValue = (value) => {
37
37
  var _a;
38
- const isMaxValue = ((_a = this.maxValue) !== null && _a !== void 0 ? _a : value[1]) === this.max;
38
+ const isMaxValue = ((_a = this.minValue) !== null && _a !== void 0 ? _a : value[0]) === this.max;
39
39
  const isGapExceeded = value[0] + this.gap > this.max;
40
40
  // Make sure that the min value gets adjusted according to the gap value
41
41
  return isMaxValue || isGapExceeded ? this.max - this.gap : value[0];