buefy 3.0.3 → 3.0.5

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 (188) hide show
  1. package/dist/buefy.d.ts +212 -133
  2. package/dist/buefy.esm.js +138 -122
  3. package/dist/buefy.esm.min.js +2 -2
  4. package/dist/buefy.js +137 -121
  5. package/dist/buefy.min.js +2 -2
  6. package/dist/cjs/{Datepicker-B-9ReBe6.js → Datepicker-DhsJpauU.js} +2 -2
  7. package/dist/cjs/{Dropdown-DtpKU9qf.js → Dropdown-BAXMPUCZ.js} +1 -0
  8. package/dist/cjs/{DropdownItem-IMOKyRGV.js → DropdownItem-BOAAPdrW.js} +1 -1
  9. package/dist/cjs/{Timepicker-CDZ3V-2J.js → Timepicker-DDYkLeNV.js} +2 -2
  10. package/dist/cjs/carousel.js +1 -1
  11. package/dist/cjs/clockpicker.js +1 -1
  12. package/dist/cjs/colorpicker.js +3 -3
  13. package/dist/cjs/datepicker.js +3 -3
  14. package/dist/cjs/datetimepicker.js +4 -4
  15. package/dist/cjs/dialog.js +131 -116
  16. package/dist/cjs/dropdown.js +2 -2
  17. package/dist/cjs/{index-SLOXD6k3.js → index-BkFyTNWp.js} +3 -3
  18. package/dist/cjs/index.js +5 -5
  19. package/dist/cjs/timepicker.js +3 -3
  20. package/dist/components/autocomplete/index.js +1 -1
  21. package/dist/components/autocomplete/index.min.js +1 -1
  22. package/dist/components/breadcrumb/index.js +1 -1
  23. package/dist/components/breadcrumb/index.min.js +1 -1
  24. package/dist/components/button/index.js +1 -1
  25. package/dist/components/button/index.min.js +1 -1
  26. package/dist/components/carousel/index.js +2 -2
  27. package/dist/components/carousel/index.min.js +2 -2
  28. package/dist/components/checkbox/index.js +1 -1
  29. package/dist/components/checkbox/index.min.js +1 -1
  30. package/dist/components/clockpicker/index.js +2 -1
  31. package/dist/components/clockpicker/index.min.js +2 -2
  32. package/dist/components/collapse/index.js +1 -1
  33. package/dist/components/collapse/index.min.js +1 -1
  34. package/dist/components/colorpicker/index.js +3 -2
  35. package/dist/components/colorpicker/index.min.js +2 -2
  36. package/dist/components/datepicker/index.js +2 -1
  37. package/dist/components/datepicker/index.min.js +2 -2
  38. package/dist/components/datetimepicker/index.js +2 -1
  39. package/dist/components/datetimepicker/index.min.js +2 -2
  40. package/dist/components/dialog/index.js +132 -117
  41. package/dist/components/dialog/index.min.js +2 -2
  42. package/dist/components/dropdown/index.js +2 -1
  43. package/dist/components/dropdown/index.min.js +2 -2
  44. package/dist/components/field/index.js +1 -1
  45. package/dist/components/field/index.min.js +1 -1
  46. package/dist/components/icon/index.js +1 -1
  47. package/dist/components/icon/index.min.js +1 -1
  48. package/dist/components/image/index.js +1 -1
  49. package/dist/components/image/index.min.js +1 -1
  50. package/dist/components/input/index.js +1 -1
  51. package/dist/components/input/index.min.js +1 -1
  52. package/dist/components/loading/index.js +1 -1
  53. package/dist/components/loading/index.min.js +1 -1
  54. package/dist/components/menu/index.js +1 -1
  55. package/dist/components/menu/index.min.js +1 -1
  56. package/dist/components/message/index.js +1 -1
  57. package/dist/components/message/index.min.js +1 -1
  58. package/dist/components/modal/index.js +1 -1
  59. package/dist/components/modal/index.min.js +1 -1
  60. package/dist/components/navbar/index.js +1 -1
  61. package/dist/components/navbar/index.min.js +1 -1
  62. package/dist/components/notification/index.js +1 -1
  63. package/dist/components/notification/index.min.js +1 -1
  64. package/dist/components/numberinput/index.js +1 -1
  65. package/dist/components/numberinput/index.min.js +1 -1
  66. package/dist/components/pagination/index.js +1 -1
  67. package/dist/components/pagination/index.min.js +1 -1
  68. package/dist/components/progress/index.js +1 -1
  69. package/dist/components/progress/index.min.js +1 -1
  70. package/dist/components/radio/index.js +1 -1
  71. package/dist/components/radio/index.min.js +1 -1
  72. package/dist/components/rate/index.js +1 -1
  73. package/dist/components/rate/index.min.js +1 -1
  74. package/dist/components/select/index.js +1 -1
  75. package/dist/components/select/index.min.js +1 -1
  76. package/dist/components/sidebar/index.js +1 -1
  77. package/dist/components/sidebar/index.min.js +1 -1
  78. package/dist/components/skeleton/index.js +1 -1
  79. package/dist/components/skeleton/index.min.js +1 -1
  80. package/dist/components/slider/index.js +1 -1
  81. package/dist/components/slider/index.min.js +1 -1
  82. package/dist/components/snackbar/index.js +1 -1
  83. package/dist/components/snackbar/index.min.js +1 -1
  84. package/dist/components/steps/index.js +1 -1
  85. package/dist/components/steps/index.min.js +1 -1
  86. package/dist/components/switch/index.js +1 -1
  87. package/dist/components/switch/index.min.js +1 -1
  88. package/dist/components/table/index.js +1 -1
  89. package/dist/components/table/index.min.js +1 -1
  90. package/dist/components/tabs/index.js +1 -1
  91. package/dist/components/tabs/index.min.js +1 -1
  92. package/dist/components/tag/index.js +1 -1
  93. package/dist/components/tag/index.min.js +1 -1
  94. package/dist/components/taginput/index.js +1 -1
  95. package/dist/components/taginput/index.min.js +1 -1
  96. package/dist/components/timepicker/index.js +2 -1
  97. package/dist/components/timepicker/index.min.js +2 -2
  98. package/dist/components/toast/index.js +1 -1
  99. package/dist/components/toast/index.min.js +1 -1
  100. package/dist/components/tooltip/index.js +1 -1
  101. package/dist/components/tooltip/index.min.js +1 -1
  102. package/dist/components/upload/index.js +1 -1
  103. package/dist/components/upload/index.min.js +1 -1
  104. package/dist/css/buefy.css +69 -59
  105. package/dist/css/buefy.css.map +1 -1
  106. package/dist/css/buefy.min.css +1 -1
  107. package/dist/css/versions/buefy-no-reset.css +69 -59
  108. package/dist/css/versions/buefy-no-reset.css.map +1 -1
  109. package/dist/css/versions/buefy-no-reset.min.css +1 -1
  110. package/dist/css/versions/buefy-standalone.css +170 -54
  111. package/dist/css/versions/buefy-standalone.css.map +1 -1
  112. package/dist/css/versions/buefy-standalone.min.css +1 -1
  113. package/dist/esm/{Autocomplete-CZ8DmXsB.js → Autocomplete-HsHD-6pc.js} +2 -2
  114. package/dist/esm/{Button-DyUYShTZ.js → Button-Bvib75up.js} +2 -2
  115. package/dist/esm/{Checkbox-KUMz0sfA.js → Checkbox-u861Rije.js} +1 -1
  116. package/dist/esm/{Datepicker-Bl8Wfdkn.js → Datepicker-BZ5ORu0F.js} +7 -7
  117. package/dist/esm/{Dropdown-CGTYVyoL.js → Dropdown-BLadix4L.js} +2 -1
  118. package/dist/esm/{DropdownItem-Cn3nM0A3.js → DropdownItem-Crhb4RQp.js} +2 -2
  119. package/dist/esm/{Field-B7bX_uUg.js → Field-DZCOQuRO.js} +1 -1
  120. package/dist/esm/{Icon-DPyGDeRK.js → Icon-iqPKMem5.js} +1 -1
  121. package/dist/esm/{Image-DhX-4hlV.js → Image-By9o7ryD.js} +1 -1
  122. package/dist/esm/{Input-C4L520az.js → Input-JL4LWKyL.js} +2 -2
  123. package/dist/esm/{Loading-tuQoo6TU.js → Loading-BSqhV1Gi.js} +1 -1
  124. package/dist/esm/{Modal-EiR_KNGZ.js → Modal-BF2kchNd.js} +1 -1
  125. package/dist/esm/{Pagination-B-LAJQay.js → Pagination-BWFVCGiz.js} +2 -2
  126. package/dist/esm/{Progress-BPGTVZgr.js → Progress-BxT2PFEw.js} +1 -1
  127. package/dist/esm/{Select-bl4qUzij.js → Select-dYTVc9W4.js} +2 -2
  128. package/dist/esm/{TabbedChildMixin-C4i6WP9j.js → TabbedChildMixin-BsuDQmWE.js} +1 -1
  129. package/dist/esm/{Tag-jS5Bcj6N.js → Tag-BFgiw0Ac.js} +2 -2
  130. package/dist/esm/{Timepicker-DnkqnOBT.js → Timepicker-CYqyLHE9.js} +6 -6
  131. package/dist/esm/{Tooltip-CtDSXAqa.js → Tooltip-Ds5fe3ZP.js} +1 -1
  132. package/dist/esm/autocomplete.js +3 -3
  133. package/dist/esm/breadcrumb.js +1 -1
  134. package/dist/esm/button.js +2 -2
  135. package/dist/esm/carousel.js +4 -4
  136. package/dist/esm/checkbox.js +2 -2
  137. package/dist/esm/clockpicker.js +4 -4
  138. package/dist/esm/colorpicker.js +8 -8
  139. package/dist/esm/datepicker.js +7 -7
  140. package/dist/esm/datetimepicker.js +9 -9
  141. package/dist/esm/dialog.js +135 -120
  142. package/dist/esm/dropdown.js +2 -2
  143. package/dist/esm/field.js +1 -1
  144. package/dist/esm/icon.js +1 -1
  145. package/dist/esm/image.js +1 -1
  146. package/dist/esm/{index-BE58-KfV.js → index-mnzTDKh9.js} +9 -9
  147. package/dist/esm/index.js +21 -21
  148. package/dist/esm/input.js +2 -2
  149. package/dist/esm/loading.js +1 -1
  150. package/dist/esm/menu.js +2 -2
  151. package/dist/esm/message.js +3 -3
  152. package/dist/esm/modal.js +1 -1
  153. package/dist/esm/navbar.js +1 -1
  154. package/dist/esm/notification.js +3 -3
  155. package/dist/esm/numberinput.js +3 -3
  156. package/dist/esm/pagination.js +2 -2
  157. package/dist/esm/progress.js +2 -2
  158. package/dist/esm/radio.js +1 -1
  159. package/dist/esm/rate.js +2 -2
  160. package/dist/esm/select.js +2 -2
  161. package/dist/esm/sidebar.js +1 -1
  162. package/dist/esm/slider.js +2 -2
  163. package/dist/esm/snackbar.js +1 -1
  164. package/dist/esm/steps.js +3 -3
  165. package/dist/esm/switch.js +1 -1
  166. package/dist/esm/table.js +7 -7
  167. package/dist/esm/tabs.js +3 -3
  168. package/dist/esm/tag.js +3 -3
  169. package/dist/esm/taginput.js +5 -5
  170. package/dist/esm/timepicker.js +7 -7
  171. package/dist/esm/toast.js +1 -1
  172. package/dist/esm/tooltip.js +1 -1
  173. package/dist/esm/upload.js +1 -1
  174. package/dist/tsdoc-metadata.json +1 -1
  175. package/package.json +3 -3
  176. package/src/components/carousel/CarouselList.vue +1 -1
  177. package/src/components/carousel/__snapshots__/CarouselList.spec.ts.snap +1 -1
  178. package/src/components/checkbox/Checkbox.spec.ts +36 -2
  179. package/src/components/dialog/Dialog.vue +10 -2
  180. package/src/components/dropdown/Dropdown.spec.ts +15 -0
  181. package/src/components/dropdown/Dropdown.vue +5 -0
  182. package/src/scss/components/_checkbox.scss +10 -11
  183. package/src/scss/components/_datepicker.scss +1 -1
  184. package/src/scss/components/_dropdown.scss +1 -0
  185. package/src/scss/components/_form.scss +31 -31
  186. package/src/scss/components/_radio.scss +9 -9
  187. package/src/scss/components/_switch.scss +28 -5
  188. package/src/scss/components/_table.scss +2 -1
package/dist/esm/table.js CHANGED
@@ -1,13 +1,13 @@
1
- import { defineComponent, resolveComponent, createElementBlock, openBlock, createElementVNode, createBlock, withCtx, Fragment, renderList, createTextVNode, createCommentVNode, toDisplayString, withDirectives, vShow, createVNode, normalizeClass, renderSlot, h, toHandlerKey, camelize, toRaw, mergeProps, normalizeStyle, withKeys, withModifiers, Transition } from 'vue';
1
+ import { defineComponent, resolveComponent, openBlock, createElementBlock, createElementVNode, createBlock, withCtx, Fragment, renderList, createTextVNode, toDisplayString, createCommentVNode, withDirectives, vShow, createVNode, normalizeClass, renderSlot, h, toHandlerKey, camelize, toRaw, mergeProps, normalizeStyle, withKeys, withModifiers, Transition } from 'vue';
2
2
  import { getValueByPath, toCssWidth, removeElement, translateTouchAsDragEvent, isFragment, escapeRegExpChars, removeDiacriticsFromString, indexOf, multiColumnSort, isNil, createAbsoluteElement } from './helpers.js';
3
- import { B as BPagination, d as debounce } from './Pagination-B-LAJQay.js';
3
+ import { B as BPagination, d as debounce } from './Pagination-BWFVCGiz.js';
4
4
  import { C as CompatFallthroughMixin } from './CompatFallthroughMixin-C8LPuwDr.js';
5
- import { B as BCheckbox } from './Checkbox-KUMz0sfA.js';
6
- import { B as BIcon } from './Icon-DPyGDeRK.js';
7
- import { B as BInput } from './Input-C4L520az.js';
8
- import { B as BLoading } from './Loading-tuQoo6TU.js';
5
+ import { B as BCheckbox } from './Checkbox-u861Rije.js';
6
+ import { B as BIcon } from './Icon-iqPKMem5.js';
7
+ import { B as BInput } from './Input-JL4LWKyL.js';
8
+ import { B as BLoading } from './Loading-BSqhV1Gi.js';
9
9
  import { B as BSlotComponent } from './SlotComponent-BwNpVnfH.js';
10
- import { B as BSelect } from './Select-bl4qUzij.js';
10
+ import { B as BSelect } from './Select-dYTVc9W4.js';
11
11
  import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
12
12
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
13
13
  import './config-CKuo-p6e.js';
package/dist/esm/tabs.js CHANGED
@@ -1,7 +1,7 @@
1
- import { defineComponent, resolveComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, renderSlot, Fragment, renderList, withDirectives, createBlock, createCommentVNode, toDisplayString, vShow } from 'vue';
2
- import { B as BIcon } from './Icon-DPyGDeRK.js';
1
+ import { defineComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, Fragment, renderList, withDirectives, createBlock, createCommentVNode, toDisplayString, vShow } from 'vue';
2
+ import { B as BIcon } from './Icon-iqPKMem5.js';
3
3
  import { c as config } from './config-CKuo-p6e.js';
4
- import { T as TabbedMixin, a as TabbedChildMixin } from './TabbedChildMixin-C4i6WP9j.js';
4
+ import { T as TabbedMixin, a as TabbedChildMixin } from './TabbedChildMixin-BsuDQmWE.js';
5
5
  import { B as BSlotComponent } from './SlotComponent-BwNpVnfH.js';
6
6
  import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
7
7
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
package/dist/esm/tag.js CHANGED
@@ -1,8 +1,8 @@
1
- import { B as BTag } from './Tag-jS5Bcj6N.js';
2
- import { defineComponent, createElementBlock, openBlock, normalizeClass, renderSlot } from 'vue';
1
+ import { B as BTag } from './Tag-BFgiw0Ac.js';
2
+ import { defineComponent, openBlock, createElementBlock, normalizeClass, renderSlot } from 'vue';
3
3
  import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
4
4
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
5
- import './Icon-DPyGDeRK.js';
5
+ import './Icon-iqPKMem5.js';
6
6
  import './config-CKuo-p6e.js';
7
7
  import './helpers.js';
8
8
 
@@ -1,14 +1,14 @@
1
- import { defineComponent, resolveComponent, createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, normalizeClass, renderSlot, createBlock, Fragment, renderList, withCtx, createTextVNode, toDisplayString, createSlots } from 'vue';
1
+ import { defineComponent, resolveComponent, openBlock, createElementBlock, mergeProps, createElementVNode, normalizeClass, renderSlot, Fragment, renderList, createBlock, withCtx, createTextVNode, toDisplayString, createSlots, createCommentVNode } from 'vue';
2
2
  import { getValueByPath } from './helpers.js';
3
- import { B as BTag } from './Tag-jS5Bcj6N.js';
4
- import { B as BAutocomplete } from './Autocomplete-CZ8DmXsB.js';
3
+ import { B as BTag } from './Tag-BFgiw0Ac.js';
4
+ import { B as BAutocomplete } from './Autocomplete-HsHD-6pc.js';
5
5
  import { c as config } from './config-CKuo-p6e.js';
6
6
  import { C as CompatFallthroughMixin } from './CompatFallthroughMixin-C8LPuwDr.js';
7
7
  import { F as FormElementMixin } from './FormElementMixin-Dd_wkBN5.js';
8
8
  import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
9
9
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
10
- import './Icon-DPyGDeRK.js';
11
- import './Input-C4L520az.js';
10
+ import './Icon-iqPKMem5.js';
11
+ import './Input-JL4LWKyL.js';
12
12
 
13
13
  var _sfc_main = defineComponent({
14
14
  name: "BTaginput",
@@ -1,4 +1,4 @@
1
- import { T as Timepicker } from './Timepicker-DnkqnOBT.js';
1
+ import { T as Timepicker } from './Timepicker-CYqyLHE9.js';
2
2
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
3
3
  import 'vue';
4
4
  import './TimepickerMixin-Bikh6_Fg.js';
@@ -6,14 +6,14 @@ import './CompatFallthroughMixin-C8LPuwDr.js';
6
6
  import './config-CKuo-p6e.js';
7
7
  import './FormElementMixin-Dd_wkBN5.js';
8
8
  import './helpers.js';
9
- import './Dropdown-CGTYVyoL.js';
9
+ import './Dropdown-BLadix4L.js';
10
10
  import './trapFocus-KHP_kCNE.js';
11
11
  import './_plugin-vue_export-helper-OJRSZE6i.js';
12
- import './DropdownItem-Cn3nM0A3.js';
13
- import './Input-C4L520az.js';
14
- import './Icon-DPyGDeRK.js';
15
- import './Field-B7bX_uUg.js';
16
- import './Select-bl4qUzij.js';
12
+ import './DropdownItem-Crhb4RQp.js';
13
+ import './Input-JL4LWKyL.js';
14
+ import './Icon-iqPKMem5.js';
15
+ import './Field-DZCOQuRO.js';
16
+ import './Select-dYTVc9W4.js';
17
17
 
18
18
  const Plugin = {
19
19
  install(Vue) {
package/dist/esm/toast.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defineComponent, createBlock, openBlock, Transition, withCtx, withDirectives, createElementVNode, normalizeClass, renderSlot, createElementBlock, Fragment, createCommentVNode, vShow, createApp, h, inject } from 'vue';
1
+ import { defineComponent, openBlock, createBlock, Transition, withCtx, withDirectives, createElementVNode, normalizeClass, renderSlot, createElementBlock, Fragment, createCommentVNode, vShow, createApp, h, inject } from 'vue';
2
2
  import { c as config } from './config-CKuo-p6e.js';
3
3
  import { N as NoticeMixin } from './NoticeMixin-ByNlva3T.js';
4
4
  import { _ as _export_sfc } from './_plugin-vue_export-helper-OJRSZE6i.js';
@@ -1,4 +1,4 @@
1
- import { T as Tooltip } from './Tooltip-CtDSXAqa.js';
1
+ import { T as Tooltip } from './Tooltip-Ds5fe3ZP.js';
2
2
  import { a as registerComponent } from './plugins-1tLsuIZF.js';
3
3
  import 'vue';
4
4
  import './config-CKuo-p6e.js';
@@ -1,4 +1,4 @@
1
- import { defineComponent, createElementBlock, openBlock, mergeProps, renderSlot, createElementVNode, withModifiers, normalizeClass } from 'vue';
1
+ import { defineComponent, openBlock, createElementBlock, mergeProps, renderSlot, withModifiers, normalizeClass, createElementVNode } from 'vue';
2
2
  import { C as CompatFallthroughMixin } from './CompatFallthroughMixin-C8LPuwDr.js';
3
3
  import { F as FormElementMixin } from './FormElementMixin-Dd_wkBN5.js';
4
4
  import { F as File } from './ssr-C7yEpGLm.js';
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.52.8"
8
+ "packageVersion": "7.58.2"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buefy",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "Lightweight UI components for Vue.js (v3) based on Bulma",
5
5
  "keywords": [
6
6
  "vuejs",
@@ -68,7 +68,7 @@
68
68
  "@rollup/plugin-babel": "^6.0.4",
69
69
  "@rollup/plugin-commonjs": "^28.0.2",
70
70
  "@rollup/plugin-node-resolve": "^16.0.0",
71
- "@rollup/plugin-terser": "^0.4.4",
71
+ "@rollup/plugin-terser": "^1.0.0",
72
72
  "@testing-library/jest-dom": "^6.6.3",
73
73
  "@types/jsdom": "^21.1.7",
74
74
  "@vue/test-utils": "^2.4.6",
@@ -80,4 +80,4 @@
80
80
  "rollup-plugin-esbuild": "^6.1.0",
81
81
  "vitest": "^3.0.6"
82
82
  }
83
- }
83
+ }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- class="carousel-list"
3
+ class="carousel carousel-list"
4
4
  :class="{'has-shadow': scrollIndex > 0}"
5
5
  @mousedown.prevent="dragStart"
6
6
  @touchstart="dragStart"
@@ -1,7 +1,7 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`BCarouselList > render correctly 1`] = `
4
- "<div class="carousel-list">
4
+ "<div class="carousel carousel-list">
5
5
  <div class="carousel-slides" style="transform: translateX(0px);">
6
6
  <div class="carousel-slide is-active" style="width: 0px;">
7
7
  <b-image-stub src="https://picsum.photos/id/0/1230/500" lazy="true" responsive="true" srcsetformatter="[Function]" rounded="false" captionfirst="false" title="Slide 1" image="https://picsum.photos/id/0/1230/500"></b-image-stub>
@@ -1,3 +1,5 @@
1
+ import { existsSync, readFileSync } from 'node:fs'
2
+ import { join } from 'node:path'
1
3
  import { shallowMount } from '@vue/test-utils'
2
4
  import type { VueWrapper } from '@vue/test-utils'
3
5
  import { beforeEach, describe, expect, it, vi } from 'vitest'
@@ -20,7 +22,9 @@ describe('BCheckbox', () => {
20
22
  })
21
23
 
22
24
  it('has an input checkbox', () => {
23
- expect(wrapper.find('label input[type=checkbox]').exists()).toBeTruthy()
25
+ expect(
26
+ wrapper.find('label input[type=checkbox]').exists()
27
+ ).toBeTruthy()
24
28
  })
25
29
 
26
30
  it('emit input event with value when value change', async () => {
@@ -35,6 +39,36 @@ describe('BCheckbox', () => {
35
39
  (wrapper.vm.$refs.input as HTMLElement).focus = vi.fn()
36
40
  wrapper.vm.focus()
37
41
  await wrapper.vm.$nextTick()
38
- expect((wrapper.vm.$refs.input as HTMLElement).focus).toHaveBeenCalled()
42
+ expect(
43
+ (wrapper.vm.$refs.input as HTMLElement).focus
44
+ ).toHaveBeenCalled()
45
+ })
46
+
47
+ it('generates svg checkmark images from concrete colors in checkbox styles', () => {
48
+ const scssPathCandidates = [
49
+ join(process.cwd(), 'src/scss/components/_checkbox.scss'),
50
+ join(process.cwd(), 'buefy/src/scss/components/_checkbox.scss')
51
+ ]
52
+ const scssPath = scssPathCandidates.find((candidate) =>
53
+ existsSync(candidate)
54
+ )
55
+
56
+ expect(scssPath).toBeTruthy()
57
+ if (!scssPath) {
58
+ throw new Error(
59
+ 'Unable to locate _checkbox.scss for regression assertion'
60
+ )
61
+ }
62
+ const source = readFileSync(scssPath, 'utf8')
63
+
64
+ // Regression: CSS variables inside data-uri SVG are not resolved by browsers.
65
+ expect(source).toContain('fn.checkmark($checkbox-checkmark-color)')
66
+ expect(source).toContain('fn.indeterminate($checkbox-checkmark-color)')
67
+ expect(source).not.toContain(
68
+ 'fn.checkmark(cv.getVar("checkbox-checkmark-color"))'
69
+ )
70
+ expect(source).not.toContain(
71
+ 'fn.indeterminate(cv.getVar("checkbox-checkmark-color"))'
72
+ )
39
73
  })
40
74
  })
@@ -3,13 +3,13 @@
3
3
  <div
4
4
  v-if="isActive"
5
5
  class="dialog modal is-active"
6
- :class="dialogClass"
6
+ :class="[dialogClass, customClass]"
7
7
  v-trap-focus="trapFocus"
8
8
  :role="ariaRole"
9
9
  :aria-modal="ariaModal"
10
10
  >
11
11
  <div class="modal-background" @click="cancel('outside')" />
12
- <div class="modal-card animation-content">
12
+ <div class="modal-card animation-content" :class="customContentClass">
13
13
  <header class="modal-card-head" v-if="title">
14
14
  <p class="modal-card-title">
15
15
  {{ title }}
@@ -115,6 +115,14 @@ const Dialog = defineComponent({
115
115
  },
116
116
  extends: Modal,
117
117
  props: {
118
+ customClass: {
119
+ type: String,
120
+ default: ''
121
+ },
122
+ customContentClass: {
123
+ type: String,
124
+ default: ''
125
+ },
118
126
  title: String,
119
127
  message: [String, Array],
120
128
  icon: String,
@@ -226,4 +226,19 @@ describe('BDropdown', () => {
226
226
  expect(document.removeEventListener).toBeCalledWith('click', expect.any(Function))
227
227
  expect(document.removeEventListener).toBeCalledWith('keyup', expect.any(Function))
228
228
  })
229
+
230
+ it('removes is-clipped-touch on unmount while dropdown is open', async () => {
231
+ // Simulate dropdown open in mobile-modal mode (mobileModal defaults to
232
+ // true) so the isActive watcher calls handleScroll(), which adds
233
+ // is-clipped-touch to the html element. Then destroy the component
234
+ // (e.g. route navigation) without closing it first. The class must be
235
+ // removed so that scrolling is not permanently locked.
236
+ await wrapper.setData({ isActive: true })
237
+ // The isActive watcher triggers handleScroll() which adds the class.
238
+ expect(document.documentElement.classList.contains('is-clipped-touch')).toBe(true)
239
+
240
+ wrapper.unmount()
241
+
242
+ expect(document.documentElement.classList.contains('is-clipped-touch')).toBe(false)
243
+ })
229
244
  })
@@ -480,6 +480,11 @@ export default defineComponent({
480
480
  if (typeof window !== 'undefined') {
481
481
  document.removeEventListener('click', this.clickedOutside)
482
482
  document.removeEventListener('keyup', this.keyPress)
483
+ // Clean up scroll lock in case the component is destroyed while the
484
+ // dropdown is open (e.g., route navigation in a SPA). Without this,
485
+ // is-clipped-touch persists on the html element and permanently
486
+ // prevents scrolling on desktop browsers at mobile viewport widths.
487
+ document.documentElement.classList.remove('is-clipped-touch')
483
488
  }
484
489
  if (this.appendToBody) {
485
490
  removeElement(this.$data._bodyEl!)
@@ -31,25 +31,24 @@ $checkbox-colors: shared.$form-colors !default;
31
31
  "checkbox-border-width": #{$checkbox-border-width},
32
32
  "checkbox-checkmark-color": #{$checkbox-checkmark-color},
33
33
  "checkbox-size": #{$checkbox-size},
34
- "checkbox-checkmark-image": #{url(fn.checkmark(cv.getVar("checkbox-checkmark-color")))},
35
- "checkbox-indeterminate-image": #{url(fn.indeterminate(cv.getVar("checkbox-checkmark-color")))}
36
-
34
+ "checkbox-checkmark-image": #{url(fn.checkmark($checkbox-checkmark-color))},
35
+ "checkbox-indeterminate-image": #{url(fn.indeterminate($checkbox-checkmark-color))}
37
36
  )
38
37
  );
39
38
 
40
39
  &.checkbox input[type=checkbox] + .check {
41
40
 
42
41
  @each $name, $pair in $checkbox-colors {
43
- $color: list.nth($pair, 1);
42
+ $color-invert: cv.getVar($name, "", "-invert");
44
43
 
45
44
  &.#{iv.$class-prefix}is-#{$name} {
46
45
  @include cv.register-vars(
47
46
  (
48
47
  "checkbox-active-background-color": #{cv.getVar($name)},
49
48
  "checkbox-border-color": #{cv.getVar($name)},
50
- "checkbox-checkmark-color": #{cv.getVar($name, "", "-invert")},
51
- "checkbox-checkmark-image": #{url(fn.checkmark(cv.getVar($name, "", "-invert")))},
52
- "checkbox-indeterminate-image": #{url(fn.indeterminate(cv.getVar($name, "", "-invert")))}
49
+ "checkbox-checkmark-color": #{$color-invert},
50
+ "checkbox-checkmark-image": #{url(fn.checkmark($color-invert))},
51
+ "checkbox-indeterminate-image": #{url(fn.indeterminate($color-invert))}
53
52
  )
54
53
  );
55
54
  }
@@ -69,15 +68,15 @@ $checkbox-colors: shared.$form-colors !default;
69
68
  align-items: center;
70
69
 
71
70
  &:not(.button) {
72
- margin-right: 0.5em;
71
+ margin-inline-end: 0.5em;
73
72
  & + .checkbox:last-child {
74
- margin-right: 0;
73
+ margin-inline-end: 0;
75
74
  }
76
75
  }
77
76
 
78
77
  input[type=checkbox] {
79
78
  position: absolute;
80
- left: 0;
79
+ inset-inline-start: 0;
81
80
  opacity: 0;
82
81
  outline: none;
83
82
  z-index: -1;
@@ -116,7 +115,7 @@ $checkbox-colors: shared.$form-colors !default;
116
115
  }
117
116
  }
118
117
  .control-label {
119
- padding-left: cv.getVar('control-padding-horizontal');
118
+ padding-inline-start: cv.getVar('control-padding-horizontal');
120
119
  }
121
120
  &.button {
122
121
  display: flex;
@@ -156,7 +156,7 @@ $datepicker-item-selected-background-color: cv.getVar("primary") !default;
156
156
  border-top-right-radius: 0;
157
157
  }
158
158
  &.is-within-selected {
159
- background-color: cv.getRgbaVar("datepicker-item-selected-background-color", 0.5);
159
+ background-color: rgb(from $datepicker-item-selected-background-color r g b / 0.5);
160
160
  border-radius: 0;
161
161
  }
162
162
  &.is-last-selected {
@@ -4,6 +4,7 @@
4
4
  @use "bulma/sass/utilities/initial-variables" as iv;
5
5
  @use "bulma/sass/utilities/derived-variables.scss" as dv;
6
6
  @use "bulma/sass/utilities/mixins" as mixins;
7
+ @use "bulma/sass/components/dropdown" as dropdown;
7
8
 
8
9
  $dropdown-mobile-breakpoint: calc(iv.$desktop - 1px) !default;
9
10
  $dropdown-background-color: rgba(dv.$scheme-invert, 0.86) !default;
@@ -18,7 +18,7 @@ $floating-in-height: 3.25em !default;
18
18
  .field {
19
19
  flex-shrink: 0;
20
20
  &:not(:last-child) {
21
- margin-right: 0.75rem;
21
+ margin-inline-end: 0.75rem;
22
22
  }
23
23
  &.is-expanded {
24
24
  flex-grow: 1;
@@ -32,16 +32,16 @@ $floating-in-height: 3.25em !default;
32
32
  .button,
33
33
  .input,
34
34
  .select select {
35
- border-bottom-left-radius: cv.getVar('input-radius');
36
- border-top-left-radius: cv.getVar('input-radius');
35
+ border-start-start-radius: cv.getVar('input-radius');
36
+ border-end-start-radius: cv.getVar('input-radius');
37
37
  }
38
38
  }
39
39
  &:last-child .control {
40
40
  .button,
41
41
  .input,
42
42
  .select select {
43
- border-bottom-right-radius: cv.getVar('input-radius');
44
- border-top-right-radius: cv.getVar('input-radius');
43
+ border-start-end-radius: cv.getVar('input-radius');
44
+ border-end-end-radius: cv.getVar('input-radius');
45
45
  }
46
46
  }
47
47
  .control {
@@ -60,8 +60,8 @@ $floating-in-height: 3.25em !default;
60
60
  .button,
61
61
  .input,
62
62
  .select select {
63
- border-bottom-left-radius: 0;
64
- border-top-left-radius: 0;
63
+ border-start-start-radius: 0;
64
+ border-end-start-radius: 0;
65
65
  }
66
66
  }
67
67
  }
@@ -70,15 +70,15 @@ $floating-in-height: 3.25em !default;
70
70
  .button,
71
71
  .input,
72
72
  .select select {
73
- border-bottom-right-radius: 0;
74
- border-top-right-radius: 0;
73
+ border-start-end-radius: 0;
74
+ border-end-end-radius: 0;
75
75
  }
76
76
  }
77
77
  }
78
78
  }
79
79
  &.b-numberinput {
80
80
  .control {
81
- margin-right: unset;
81
+ margin-inline-end: unset;
82
82
  }
83
83
  }
84
84
  }
@@ -91,7 +91,7 @@ $floating-in-height: 3.25em !default;
91
91
 
92
92
  .label {
93
93
  position: absolute;
94
- left: 1em;
94
+ inset-inline-start: 1em;
95
95
  font-size: calc(#{cv.getVar('size-normal')} * 0.75);
96
96
  background-color: transparent;
97
97
  z-index: 5;
@@ -112,7 +112,7 @@ $floating-in-height: 3.25em !default;
112
112
  }
113
113
  .taginput .counter {
114
114
  float: none;
115
- text-align: right;
115
+ text-align: end;
116
116
  }
117
117
 
118
118
  &.has-addons {
@@ -121,8 +121,8 @@ $floating-in-height: 3.25em !default;
121
121
  .button,
122
122
  .input,
123
123
  .select select {
124
- border-bottom-left-radius: cv.getVar('input-radius');
125
- border-top-left-radius: cv.getVar('input-radius');
124
+ border-start-start-radius: cv.getVar('input-radius');
125
+ border-end-start-radius: cv.getVar('input-radius');
126
126
  }
127
127
  }
128
128
  }
@@ -132,15 +132,15 @@ $floating-in-height: 3.25em !default;
132
132
  &.is-floating-label {
133
133
  .label {
134
134
  top: -0.775em;
135
- padding-left: 0.125em;
136
- padding-right: 0.125em;
135
+ padding-inline-start: 0.125em;
136
+ padding-inline-end: 0.125em;
137
137
  &:before {
138
138
  content: '';
139
139
  display: block;
140
140
  position: absolute;
141
141
  top: 0.775em;
142
- left: 0;
143
- right: 0;
142
+ inset-inline-start: 0;
143
+ inset-inline-end: 0;
144
144
  height: 0.375em;
145
145
  background-color: cv.getVar('input-background-color');
146
146
  z-index: -1;
@@ -237,41 +237,41 @@ $floating-in-height: 3.25em !default;
237
237
  &.is-floating-label, &.is-floating-in-label {
238
238
  &.has-numberinput {
239
239
  .label {
240
- margin-left: calc(#{cv.getVar('size-normal')} * 3);
240
+ margin-inline-start: calc(#{cv.getVar('size-normal')} * 3);
241
241
  }
242
242
  &.has-numberinput-is-small {
243
243
  .label {
244
- margin-left: calc(#{cv.getVar('size-small')} * 3);
244
+ margin-inline-start: calc(#{cv.getVar('size-small')} * 3);
245
245
  }
246
246
  }
247
247
  &.has-numberinput-is-medium {
248
248
  .label {
249
- margin-left: calc(#{cv.getVar('size-medium')} * 3);
249
+ margin-inline-start: calc(#{cv.getVar('size-medium')} * 3);
250
250
  }
251
251
  }
252
252
  &.has-numberinput-is-large {
253
253
  .label {
254
- margin-left: calc(#{cv.getVar('size-large')} * 3);
254
+ margin-inline-start: calc(#{cv.getVar('size-large')} * 3);
255
255
  }
256
256
  }
257
257
  }
258
258
  &.has-numberinput-compact {
259
259
  .label {
260
- margin-left: calc(#{cv.getVar('size-normal')} * 2.25);
260
+ margin-inline-start: calc(#{cv.getVar('size-normal')} * 2.25);
261
261
  }
262
262
  &.has-numberinput-is-small {
263
263
  .label {
264
- margin-left: calc(#{cv.getVar('size-small')} * 2.25);
264
+ margin-inline-start: calc(#{cv.getVar('size-small')} * 2.25);
265
265
  }
266
266
  }
267
267
  &.has-numberinput-is-medium {
268
268
  .label {
269
- margin-left: calc(#{cv.getVar('size-medium')} * 2.25);
269
+ margin-inline-start: calc(#{cv.getVar('size-medium')} * 2.25);
270
270
  }
271
271
  }
272
272
  &.has-numberinput-is-large {
273
273
  .label {
274
- margin-left: calc(#{cv.getVar('size-large')} * 2.25);
274
+ margin-inline-start: calc(#{cv.getVar('size-large')} * 2.25);
275
275
  }
276
276
  }
277
277
  }
@@ -280,13 +280,13 @@ $floating-in-height: 3.25em !default;
280
280
  &.is-floating-in-label {
281
281
  .label {
282
282
  position: relative;
283
- left: calc(3.25em + 2em);
283
+ inset-inline-start: calc(3.25em + 2em);
284
284
  }
285
285
  }
286
286
  &.is-floating-label {
287
287
  .label {
288
288
  position: relative;
289
- left: calc(3.25em + 2em);
289
+ inset-inline-start: calc(3.25em + 2em);
290
290
  }
291
291
  }
292
292
  }
@@ -294,8 +294,8 @@ $floating-in-height: 3.25em !default;
294
294
 
295
295
  .#{iv.$class-prefix}control {
296
296
  .help.counter {
297
- float: right;
298
- margin-left: 0.5em;
297
+ float: inline-end;
298
+ margin-inline-start: 0.5em;
299
299
  }
300
300
  .icon {
301
301
  &.is-clickable {
@@ -306,6 +306,6 @@ $floating-in-height: 3.25em !default;
306
306
  // fix Bulma 0.8.2
307
307
  &.is-loading::after {
308
308
  top: calc(50% - (1em * 0.5));
309
- right: calc((2.5em * 0.5) - .5em);
309
+ inset-inline-end: calc((2.5em * 0.5) - .5em);
310
310
  }
311
311
  }
@@ -42,18 +42,18 @@ $radio-shadow: cv.getVar('shadow') !default;
42
42
  display: inline-flex;
43
43
  align-items: center;
44
44
  &:not(.button) {
45
- margin-right: 0.5em;
45
+ margin-inline-end: 0.5em;
46
46
  & + .radio:last-child {
47
- margin-right: 0;
47
+ margin-inline-end: 0;
48
48
  }
49
49
  }
50
50
  // reset Bulma
51
51
  & + .radio {
52
- margin-left: 0;
52
+ margin-inline-start: 0;
53
53
  }
54
54
  input[type=radio] {
55
55
  position: absolute;
56
- left: 0;
56
+ inset-inline-start: 0;
57
57
  opacity: 0;
58
58
  outline: none;
59
59
  z-index: -1;
@@ -71,10 +71,10 @@ $radio-shadow: cv.getVar('shadow') !default;
71
71
  content: "";
72
72
  display: flex;
73
73
  position: absolute;
74
- left: 50%;
75
- margin-left: calc(#{cv.getVar('radio-size')} * -0.5);
76
- bottom: 50%;
77
- margin-bottom: calc(#{ cv.getVar('radio-size')} * -0.5);
74
+ inset-inline-start: 50%;
75
+ margin-inline-start: calc(#{cv.getVar('radio-size')} * -0.5);
76
+ inset-block-end: 50%;
77
+ margin-block-end: calc(#{ cv.getVar('radio-size')} * -0.5);
78
78
  width: cv.getVar('radio-size');
79
79
  height: cv.getVar('radio-size');
80
80
  transition: transform cv.getVar('speed-slow') cv.getVar('easing');
@@ -102,7 +102,7 @@ $radio-shadow: cv.getVar('shadow') !default;
102
102
  }
103
103
  }
104
104
  .control-label {
105
- padding-left: cv.getVar('control-padding-horizontal');
105
+ padding-inline-start: cv.getVar('control-padding-horizontal');
106
106
  }
107
107
  &.button {
108
108
  display: flex;