buefy 0.9.9 → 0.9.13

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 (278) hide show
  1. package/CHANGELOG.md +1639 -1609
  2. package/dist/buefy.css +20 -2
  3. package/dist/buefy.esm.js +2227 -1869
  4. package/dist/buefy.esm.min.js +2 -2
  5. package/dist/buefy.js +2266 -1907
  6. package/dist/buefy.min.css +1 -1
  7. package/dist/buefy.min.js +2 -2
  8. package/dist/cjs/autocomplete.js +6 -6
  9. package/dist/cjs/breadcrumb.js +127 -0
  10. package/dist/cjs/button.js +6 -107
  11. package/dist/cjs/carousel.js +9 -7
  12. package/dist/cjs/checkbox.js +5 -5
  13. package/dist/cjs/{chunk-d33a8a78.js → chunk-114191ae.js} +3 -3
  14. package/dist/cjs/{chunk-dafdb70c.js → chunk-2062216d.js} +39 -3
  15. package/dist/cjs/{chunk-64efc596.js → chunk-2911aa4b.js} +20 -16
  16. package/dist/cjs/{chunk-96ab31c1.js → chunk-2ae50815.js} +7 -7
  17. package/dist/cjs/{chunk-c3032504.js → chunk-2c7de785.js} +3 -3
  18. package/dist/cjs/{chunk-50ff3a78.js → chunk-30670fac.js} +96 -15
  19. package/dist/cjs/{chunk-e57b3891.js → chunk-34949503.js} +2 -2
  20. package/dist/cjs/{chunk-0abd2223.js → chunk-3b43d77a.js} +2 -2
  21. package/dist/cjs/{chunk-dcdbe2e8.js → chunk-3cc5d9a6.js} +1 -1
  22. package/dist/cjs/{chunk-0b57168e.js → chunk-61023b09.js} +3 -3
  23. package/dist/cjs/chunk-6cb902f8.js +314 -0
  24. package/dist/cjs/{chunk-adb01a93.js → chunk-7da0c017.js} +26 -24
  25. package/dist/cjs/{chunk-60255743.js → chunk-9103eeda.js} +4 -0
  26. package/dist/cjs/{chunk-14c82365.js → chunk-92621ff7.js} +37 -0
  27. package/dist/cjs/{chunk-816cba7a.js → chunk-9e4cf4c5.js} +1 -1
  28. package/dist/cjs/{chunk-33b9d1cf.js → chunk-a11294f9.js} +27 -26
  29. package/dist/cjs/{chunk-430b5370.js → chunk-bfcad370.js} +25 -2
  30. package/dist/cjs/{chunk-cc470e7c.js → chunk-c6fbc7b4.js} +7 -7
  31. package/dist/cjs/{chunk-993f89de.js → chunk-c7b2aa4b.js} +5 -4
  32. package/dist/cjs/{chunk-6474e963.js → chunk-d0f8ea39.js} +9 -9
  33. package/dist/cjs/{chunk-3acb500b.js → chunk-d120e215.js} +2 -2
  34. package/dist/cjs/{chunk-f5baaa70.js → chunk-d54e40f6.js} +2 -1
  35. package/dist/cjs/{chunk-916a2858.js → chunk-f5106717.js} +4 -4
  36. package/dist/cjs/chunk-fe2f57ee.js +110 -0
  37. package/dist/cjs/{chunk-2571dc7c.js → chunk-fefd7b77.js} +0 -0
  38. package/dist/cjs/clockpicker.js +11 -11
  39. package/dist/cjs/config.js +2 -2
  40. package/dist/cjs/datepicker.js +12 -12
  41. package/dist/cjs/datetimepicker.js +22 -15
  42. package/dist/cjs/dialog.js +13 -11
  43. package/dist/cjs/dropdown.js +8 -8
  44. package/dist/cjs/field.js +5 -5
  45. package/dist/cjs/helpers.js +2 -3
  46. package/dist/cjs/icon.js +3 -3
  47. package/dist/cjs/image.js +6 -311
  48. package/dist/cjs/index.js +29 -23
  49. package/dist/cjs/input.js +5 -5
  50. package/dist/cjs/loading.js +6 -6
  51. package/dist/cjs/menu.js +3 -3
  52. package/dist/cjs/message.js +6 -6
  53. package/dist/cjs/modal.js +6 -6
  54. package/dist/cjs/navbar.js +16 -4
  55. package/dist/cjs/notification.js +23 -11
  56. package/dist/cjs/numberinput.js +9 -7
  57. package/dist/cjs/pagination.js +8 -8
  58. package/dist/cjs/progress.js +10 -6
  59. package/dist/cjs/radio.js +3 -3
  60. package/dist/cjs/rate.js +3 -3
  61. package/dist/cjs/select.js +7 -7
  62. package/dist/cjs/sidebar.js +2 -2
  63. package/dist/cjs/slider.js +4 -4
  64. package/dist/cjs/snackbar.js +5 -5
  65. package/dist/cjs/steps.js +8 -8
  66. package/dist/cjs/switch.js +1 -1
  67. package/dist/cjs/table.js +13 -13
  68. package/dist/cjs/tabs.js +8 -8
  69. package/dist/cjs/tag.js +3 -3
  70. package/dist/cjs/taginput.js +34 -22
  71. package/dist/cjs/timepicker.js +13 -13
  72. package/dist/cjs/toast.js +5 -5
  73. package/dist/cjs/tooltip.js +5 -5
  74. package/dist/cjs/upload.js +5 -5
  75. package/dist/components/autocomplete/index.js +98 -13
  76. package/dist/components/autocomplete/index.min.js +2 -2
  77. package/dist/components/breadcrumb/index.js +293 -0
  78. package/dist/components/breadcrumb/index.min.js +2 -0
  79. package/dist/components/button/index.js +5 -1
  80. package/dist/components/button/index.min.js +2 -2
  81. package/dist/components/carousel/index.js +348 -15
  82. package/dist/components/carousel/index.min.js +2 -2
  83. package/dist/components/checkbox/index.js +1 -1
  84. package/dist/components/checkbox/index.min.js +1 -1
  85. package/dist/components/clockpicker/index.js +54 -47
  86. package/dist/components/clockpicker/index.min.js +2 -2
  87. package/dist/components/collapse/index.js +1 -1
  88. package/dist/components/collapse/index.min.js +1 -1
  89. package/dist/components/datepicker/index.js +41 -32
  90. package/dist/components/datepicker/index.min.js +2 -2
  91. package/dist/components/datetimepicker/index.js +75 -58
  92. package/dist/components/datetimepicker/index.min.js +2 -2
  93. package/dist/components/dialog/index.js +126 -18
  94. package/dist/components/dialog/index.min.js +2 -2
  95. package/dist/components/dropdown/index.js +5 -1
  96. package/dist/components/dropdown/index.min.js +1 -1
  97. package/dist/components/field/index.js +29 -23
  98. package/dist/components/field/index.min.js +2 -2
  99. package/dist/components/icon/index.js +5 -1
  100. package/dist/components/icon/index.min.js +2 -2
  101. package/dist/components/image/index.js +463 -444
  102. package/dist/components/image/index.min.js +2 -2
  103. package/dist/components/input/index.js +5 -1
  104. package/dist/components/input/index.min.js +2 -2
  105. package/dist/components/loading/index.js +2 -2
  106. package/dist/components/loading/index.min.js +2 -2
  107. package/dist/components/menu/index.js +5 -1
  108. package/dist/components/menu/index.min.js +2 -2
  109. package/dist/components/message/index.js +43 -3
  110. package/dist/components/message/index.min.js +2 -2
  111. package/dist/components/modal/index.js +7 -2
  112. package/dist/components/modal/index.min.js +2 -2
  113. package/dist/components/navbar/index.js +16 -4
  114. package/dist/components/navbar/index.min.js +2 -2
  115. package/dist/components/notification/index.js +59 -6
  116. package/dist/components/notification/index.min.js +2 -2
  117. package/dist/components/numberinput/index.js +9 -3
  118. package/dist/components/numberinput/index.min.js +2 -2
  119. package/dist/components/pagination/index.js +5 -1
  120. package/dist/components/pagination/index.min.js +2 -2
  121. package/dist/components/progress/index.js +10 -2
  122. package/dist/components/progress/index.min.js +2 -2
  123. package/dist/components/radio/index.js +1 -1
  124. package/dist/components/radio/index.min.js +1 -1
  125. package/dist/components/rate/index.js +5 -1
  126. package/dist/components/rate/index.min.js +2 -2
  127. package/dist/components/select/index.js +5 -1
  128. package/dist/components/select/index.min.js +2 -2
  129. package/dist/components/sidebar/index.js +5 -1
  130. package/dist/components/sidebar/index.min.js +1 -1
  131. package/dist/components/skeleton/index.js +1 -1
  132. package/dist/components/skeleton/index.min.js +1 -1
  133. package/dist/components/slider/index.js +5 -1
  134. package/dist/components/slider/index.min.js +2 -2
  135. package/dist/components/snackbar/index.js +7 -2
  136. package/dist/components/snackbar/index.min.js +2 -2
  137. package/dist/components/steps/index.js +5 -1
  138. package/dist/components/steps/index.min.js +2 -2
  139. package/dist/components/switch/index.js +5 -1
  140. package/dist/components/switch/index.min.js +1 -1
  141. package/dist/components/table/index.js +6 -2
  142. package/dist/components/table/index.min.js +2 -2
  143. package/dist/components/tabs/index.js +5 -1
  144. package/dist/components/tabs/index.min.js +2 -2
  145. package/dist/components/tag/index.js +26 -3
  146. package/dist/components/tag/index.min.js +2 -2
  147. package/dist/components/taginput/index.js +185 -29
  148. package/dist/components/taginput/index.min.js +2 -2
  149. package/dist/components/timepicker/index.js +54 -47
  150. package/dist/components/timepicker/index.min.js +2 -2
  151. package/dist/components/toast/index.js +7 -2
  152. package/dist/components/toast/index.min.js +2 -2
  153. package/dist/components/tooltip/index.js +5 -1
  154. package/dist/components/tooltip/index.min.js +1 -1
  155. package/dist/components/upload/index.js +5 -1
  156. package/dist/components/upload/index.min.js +2 -2
  157. package/dist/esm/autocomplete.js +7 -7
  158. package/dist/esm/breadcrumb.js +122 -0
  159. package/dist/esm/button.js +6 -107
  160. package/dist/esm/carousel.js +7 -5
  161. package/dist/esm/{chunk-56040896.js → chunk-18e8b067.js} +3 -3
  162. package/dist/esm/{chunk-fa404a2c.js → chunk-21fc0948.js} +7 -7
  163. package/dist/esm/{chunk-f9299099.js → chunk-22e9f916.js} +19 -15
  164. package/dist/esm/{chunk-1fafdf15.js → chunk-2452e3d3.js} +37 -1
  165. package/dist/esm/{chunk-1297c2c9.js → chunk-29ca0df8.js} +1 -1
  166. package/dist/esm/{chunk-3c2169d7.js → chunk-2f2f0a74.js} +25 -2
  167. package/dist/esm/{chunk-cf72ce36.js → chunk-3773c62d.js} +2 -2
  168. package/dist/esm/{chunk-2c957994.js → chunk-4b67a181.js} +3 -3
  169. package/dist/esm/{chunk-45740cdc.js → chunk-6019fd7a.js} +96 -15
  170. package/dist/esm/chunk-71a547bc.js +312 -0
  171. package/dist/esm/{chunk-516e4877.js → chunk-75a5af93.js} +1 -1
  172. package/dist/esm/{chunk-4e380ee2.js → chunk-799e084d.js} +2 -1
  173. package/dist/esm/{chunk-37678809.js → chunk-83eb0d37.js} +3 -3
  174. package/dist/esm/{chunk-34c74085.js → chunk-8d0f95b8.js} +4 -4
  175. package/dist/esm/{chunk-652f2dad.js → chunk-8ed29c41.js} +4 -0
  176. package/dist/esm/{chunk-742a9694.js → chunk-9f7f7441.js} +3 -2
  177. package/dist/esm/{chunk-f160efb9.js → chunk-ae8ab23a.js} +4 -4
  178. package/dist/esm/{chunk-c3b09672.js → chunk-b07e3182.js} +26 -24
  179. package/dist/esm/{chunk-e36a4f2c.js → chunk-b0c0c6b0.js} +0 -0
  180. package/dist/esm/{chunk-ee935ae6.js → chunk-c9c58d0c.js} +1 -1
  181. package/dist/esm/{chunk-1d62828e.js → chunk-d7f92d97.js} +39 -3
  182. package/dist/esm/{chunk-7fd02ffe.js → chunk-d92f0cd9.js} +2 -2
  183. package/dist/esm/chunk-e7c9b2cb.js +108 -0
  184. package/dist/esm/{chunk-0e22ae0a.js → chunk-ece062a7.js} +27 -26
  185. package/dist/esm/clockpicker.js +9 -9
  186. package/dist/esm/config.js +2 -2
  187. package/dist/esm/datepicker.js +11 -11
  188. package/dist/esm/datetimepicker.js +21 -14
  189. package/dist/esm/dialog.js +10 -8
  190. package/dist/esm/dropdown.js +5 -5
  191. package/dist/esm/field.js +4 -4
  192. package/dist/esm/helpers.js +2 -3
  193. package/dist/esm/icon.js +4 -4
  194. package/dist/esm/image.js +6 -311
  195. package/dist/esm/index.js +106 -100
  196. package/dist/esm/input.js +6 -6
  197. package/dist/esm/loading.js +4 -4
  198. package/dist/esm/menu.js +3 -3
  199. package/dist/esm/message.js +5 -5
  200. package/dist/esm/modal.js +4 -4
  201. package/dist/esm/navbar.js +16 -4
  202. package/dist/esm/notification.js +22 -10
  203. package/dist/esm/numberinput.js +9 -7
  204. package/dist/esm/pagination.js +5 -5
  205. package/dist/esm/progress.js +8 -4
  206. package/dist/esm/rate.js +3 -3
  207. package/dist/esm/select.js +6 -6
  208. package/dist/esm/sidebar.js +2 -2
  209. package/dist/esm/slider.js +3 -3
  210. package/dist/esm/snackbar.js +4 -4
  211. package/dist/esm/steps.js +6 -6
  212. package/dist/esm/switch.js +1 -1
  213. package/dist/esm/table.js +9 -9
  214. package/dist/esm/tabs.js +6 -6
  215. package/dist/esm/tag.js +2 -2
  216. package/dist/esm/taginput.js +33 -21
  217. package/dist/esm/timepicker.js +12 -12
  218. package/dist/esm/toast.js +4 -4
  219. package/dist/esm/tooltip.js +4 -4
  220. package/dist/esm/upload.js +3 -3
  221. package/dist/vetur/attributes.json +95 -19
  222. package/dist/vetur/tags.json +37 -4
  223. package/package.json +2 -2
  224. package/src/components/autocomplete/Autocomplete.spec.js +70 -0
  225. package/src/components/autocomplete/Autocomplete.vue +93 -18
  226. package/src/components/breadcrumb/Breadcrumb.spec.js +63 -0
  227. package/src/components/breadcrumb/Breadcrumb.vue +43 -0
  228. package/src/components/breadcrumb/BreadcrumbItem.spec.js +25 -0
  229. package/src/components/breadcrumb/BreadcrumbItem.vue +33 -0
  230. package/src/components/breadcrumb/__snapshots__/Breadcrumb.spec.js.snap +7 -0
  231. package/src/components/breadcrumb/__snapshots__/BreadcrumbItem.spec.js.snap +7 -0
  232. package/src/components/breadcrumb/index.js +20 -0
  233. package/src/components/carousel/CarouselList.vue +3 -1
  234. package/src/components/carousel/__snapshots__/CarouselList.spec.js.snap +128 -8
  235. package/src/components/clockpicker/Clockpicker.vue +259 -259
  236. package/src/components/datepicker/Datepicker.vue +10 -6
  237. package/src/components/datetimepicker/Datetimepicker.vue +8 -1
  238. package/src/components/dialog/Dialog.vue +10 -10
  239. package/src/components/field/Field.vue +271 -270
  240. package/src/components/image/Image.spec.js +197 -183
  241. package/src/components/image/Image.vue +4 -2
  242. package/src/components/index.js +2 -0
  243. package/src/components/loading/Loading.vue +1 -1
  244. package/src/components/loading/__snapshots__/Loading.spec.js.snap +1 -1
  245. package/src/components/message/Message.vue +7 -1
  246. package/src/components/message/__snapshots__/Message.spec.js.snap +1 -0
  247. package/src/components/modal/Modal.vue +2 -0
  248. package/src/components/navbar/Navbar.vue +5 -1
  249. package/src/components/navbar/NavbarBurger.vue +1 -0
  250. package/src/components/navbar/NavbarDropdown.vue +8 -2
  251. package/src/components/navbar/__snapshots__/NavBar.spec.js.snap +11 -11
  252. package/src/components/navbar/__snapshots__/NavBarBurger.spec.js.snap +3 -0
  253. package/src/components/navbar/__snapshots__/NavbarDropdown.spec.js.snap +1 -1
  254. package/src/components/notification/Notification.vue +6 -0
  255. package/src/components/notification/NotificationNotice.vue +16 -3
  256. package/src/components/notification/__snapshots__/Notification.spec.js.snap +1 -0
  257. package/src/components/numberinput/Numberinput.spec.js +10 -0
  258. package/src/components/numberinput/Numberinput.vue +4 -2
  259. package/src/components/progress/Progress.vue +6 -2
  260. package/src/components/snackbar/Snackbar.vue +2 -0
  261. package/src/components/tag/Tag.vue +25 -2
  262. package/src/components/tag/__snapshots__/Tag.spec.js.snap +1 -1
  263. package/src/components/taginput/Taginput.spec.js +57 -1
  264. package/src/components/taginput/Taginput.vue +373 -364
  265. package/src/components/toast/Toast.vue +1 -1
  266. package/src/index.js +2 -0
  267. package/src/scss/buefy.scss +1 -0
  268. package/src/scss/components/_loading.scss +2 -1
  269. package/src/scss/components/_message.scss +3 -0
  270. package/src/scss/components/_notification.scss +8 -0
  271. package/src/scss/components/_progress.scss +8 -0
  272. package/src/utils/MessageMixin.js +32 -1
  273. package/src/utils/NoticeMixin.js +1 -0
  274. package/src/utils/TimepickerMixin.js +718 -716
  275. package/src/utils/config.js +4 -0
  276. package/src/utils/helpers.js +1 -2
  277. package/types/components.d.ts +5 -0
  278. package/src/components/navbar/__snapshots__/NavbarBurger.spec.js.snap +0 -3
@@ -1,259 +1,259 @@
1
- <template>
2
- <div class="b-clockpicker control" :class="[size, type, {'is-expanded': expanded}]">
3
- <b-dropdown
4
- v-if="!isMobile || inline"
5
- ref="dropdown"
6
- :position="position"
7
- :disabled="disabled"
8
- :inline="inline"
9
- :append-to-body="appendToBody"
10
- append-to-body-copy-parent
11
- @active-change="onActiveChange">
12
- <template #trigger v-if="!inline">
13
- <slot name="trigger">
14
- <b-input
15
- ref="input"
16
- slot="trigger"
17
- autocomplete="off"
18
- :value="formatValue(computedValue)"
19
- :placeholder="placeholder"
20
- :size="size"
21
- :icon="icon"
22
- :icon-pack="iconPack"
23
- :loading="loading"
24
- :disabled="disabled"
25
- :readonly="!editable"
26
- :rounded="rounded"
27
- v-bind="$attrs"
28
- :use-html5-validation="useHtml5Validation"
29
- @click.native.stop="toggle(true)"
30
- @keyup.native.enter="toggle(true)"
31
- @change.native="onChange($event.target.value)"
32
- @focus="handleOnFocus"
33
- @blur="checkHtml5Validity()"/>
34
- </slot>
35
- </template>
36
- <div
37
- class="card"
38
- :disabled="disabled"
39
- custom>
40
- <header v-if="inline" class="card-header">
41
- <div class="b-clockpicker-header card-header-title">
42
- <div class="b-clockpicker-time">
43
- <span
44
- class="b-clockpicker-btn"
45
- :class="{ active: isSelectingHour }"
46
- @click="isSelectingHour = true">{{ hoursDisplay }}</span>
47
- <span>{{ hourLiteral }}</span>
48
- <span
49
- class="b-clockpicker-btn"
50
- :class="{ active: !isSelectingHour }"
51
- @click="isSelectingHour = false">{{ minutesDisplay }}</span>
52
- </div>
53
- <div v-if="!isHourFormat24" class="b-clockpicker-period">
54
- <div
55
- class="b-clockpicker-btn"
56
- :class="{
57
- active: meridienSelected === amString || meridienSelected === AM
58
- }"
59
- @click="onMeridienClick(amString)">{{ amString }}</div>
60
- <div
61
- class="b-clockpicker-btn"
62
- :class="{
63
- active: meridienSelected === pmString || meridienSelected === PM
64
- }"
65
- @click="onMeridienClick(pmString)">{{ pmString }}</div>
66
- </div>
67
- </div>
68
- </header>
69
- <div class="card-content">
70
- <div
71
- class="b-clockpicker-body"
72
- :style="{ width: faceSize + 'px', height: faceSize + 'px' }">
73
- <div v-if="!inline" class="b-clockpicker-time">
74
- <div
75
- class="b-clockpicker-btn"
76
- :class="{ active: isSelectingHour }"
77
- @click="isSelectingHour = true">{{ hoursLabel }}</div>
78
- <span
79
- class="b-clockpicker-btn"
80
- :class="{ active: !isSelectingHour }"
81
- @click="isSelectingHour = false">{{ minutesLabel }}</span>
82
- </div>
83
- <div v-if="!isHourFormat24 && !inline" class="b-clockpicker-period">
84
- <div
85
- class="b-clockpicker-btn"
86
- :class="{
87
- active: meridienSelected === amString || meridienSelected === AM
88
- }"
89
- @click="onMeridienClick(amString)">{{ amString }}</div>
90
- <div
91
- class="b-clockpicker-btn"
92
- :class="{
93
- active: meridienSelected === pmString || meridienSelected === PM
94
- }"
95
- @click="onMeridienClick(pmString)">{{ pmString }}</div>
96
- </div>
97
- <b-clockpicker-face
98
- :picker-size="faceSize"
99
- :min="minFaceValue"
100
- :max="maxFaceValue"
101
- :face-numbers="isSelectingHour ? hours : minutes"
102
- :disabled-values="faceDisabledValues"
103
- :double="isSelectingHour && isHourFormat24"
104
- :value="isSelectingHour ? hoursSelected : minutesSelected"
105
- @input="onClockInput"
106
- @change="onClockChange" />
107
- </div>
108
- </div>
109
- <footer
110
- v-if="$slots.default !== undefined && $slots.default.length"
111
- class="b-clockpicker-footer card-footer">
112
- <slot/>
113
- </footer>
114
- </div>
115
- </b-dropdown>
116
- <b-input
117
- v-else
118
- ref="input"
119
- type="time"
120
- autocomplete="off"
121
- :value="formatHHMMSS(computedValue)"
122
- :placeholder="placeholder"
123
- :size="size"
124
- :icon="icon"
125
- :icon-pack="iconPack"
126
- :loading="loading"
127
- :max="formatHHMMSS(maxTime)"
128
- :min="formatHHMMSS(minTime)"
129
- :disabled="disabled"
130
- :readonly="false"
131
- v-bind="$attrs"
132
- :use-html5-validation="useHtml5Validation"
133
- @click.native.stop="toggle(true)"
134
- @keyup.native.enter="toggle(true)"
135
- @change.native="onChangeNativePicker"
136
- @focus="handleOnFocus"
137
- @blur="onBlur() && checkHtml5Validity()"/>
138
- </div>
139
- </template>
140
-
141
- <script>
142
- import TimepickerMixin from '../../utils/TimepickerMixin'
143
- import config from '../../utils/config'
144
-
145
- import Dropdown from '../dropdown/Dropdown'
146
- import DropdownItem from '../dropdown/DropdownItem'
147
- import Input from '../input/Input'
148
- import Field from '../field/Field'
149
- import Icon from '../icon/Icon'
150
-
151
- import ClockpickerFace from './ClockpickerFace'
152
-
153
- const outerPadding = 12
154
-
155
- export default {
156
- name: 'BClockpicker',
157
- components: {
158
- [ClockpickerFace.name]: ClockpickerFace,
159
- [Input.name]: Input,
160
- [Field.name]: Field,
161
- [Icon.name]: Icon,
162
- [Dropdown.name]: Dropdown,
163
- [DropdownItem.name]: DropdownItem
164
- },
165
- mixins: [TimepickerMixin],
166
- props: {
167
- pickerSize: {
168
- type: Number,
169
- default: 290
170
- },
171
- incrementMinutes: {
172
- type: Number,
173
- default: 5
174
- },
175
- autoSwitch: {
176
- type: Boolean,
177
- default: true
178
- },
179
- type: {
180
- type: String,
181
- default: 'is-primary'
182
- },
183
- hoursLabel: {
184
- type: String,
185
- default: () => config.defaultClockpickerHoursLabel || 'Hours'
186
- },
187
- minutesLabel: {
188
- type: String,
189
- default: () => config.defaultClockpickerMinutesLabel || 'Min'
190
- }
191
- },
192
- data() {
193
- return {
194
- isSelectingHour: true,
195
- isDragging: false,
196
- _isClockpicker: true
197
- }
198
- },
199
- computed: {
200
- hoursDisplay() {
201
- if (this.hoursSelected == null) return '--'
202
- if (this.isHourFormat24) return this.pad(this.hoursSelected)
203
-
204
- let display = this.hoursSelected
205
- if (this.meridienSelected === this.pmString) {
206
- display -= 12
207
- }
208
- if (display === 0) display = 12
209
- return display
210
- },
211
- minutesDisplay() {
212
- return this.minutesSelected == null ? '--' : this.pad(this.minutesSelected)
213
- },
214
- minFaceValue() {
215
- return this.isSelectingHour &&
216
- !this.isHourFormat24 &&
217
- this.meridienSelected === this.pmString ? 12 : 0
218
- },
219
- maxFaceValue() {
220
- return this.isSelectingHour
221
- ? (
222
- !this.isHourFormat24 &&
223
- this.meridienSelected === this.amString
224
- ? 11
225
- : 23
226
- )
227
- : 59
228
- },
229
- faceSize() {
230
- return this.pickerSize - (outerPadding * 2)
231
- },
232
- faceDisabledValues() {
233
- return this.isSelectingHour ? this.isHourDisabled : this.isMinuteDisabled
234
- }
235
- },
236
- methods: {
237
- onClockInput(value) {
238
- if (this.isSelectingHour) {
239
- this.hoursSelected = value
240
- this.onHoursChange(value)
241
- } else {
242
- this.minutesSelected = value
243
- this.onMinutesChange(value)
244
- }
245
- },
246
- onClockChange(value) {
247
- if (this.autoSwitch && this.isSelectingHour) {
248
- this.isSelectingHour = !this.isSelectingHour
249
- }
250
- },
251
- onMeridienClick(value) {
252
- if (this.meridienSelected !== value) {
253
- this.meridienSelected = value
254
- this.onMeridienChange(value)
255
- }
256
- }
257
- }
258
- }
259
- </script>
1
+ <template>
2
+ <div class="b-clockpicker control" :class="[size, type, {'is-expanded': expanded}]">
3
+ <b-dropdown
4
+ v-if="!isMobile || inline"
5
+ ref="dropdown"
6
+ :position="position"
7
+ :disabled="disabled"
8
+ :inline="inline"
9
+ :append-to-body="appendToBody"
10
+ append-to-body-copy-parent
11
+ @active-change="onActiveChange">
12
+ <template #trigger v-if="!inline">
13
+ <slot name="trigger">
14
+ <b-input
15
+ ref="input"
16
+ slot="trigger"
17
+ autocomplete="off"
18
+ :value="formatValue(computedValue)"
19
+ :placeholder="placeholder"
20
+ :size="size"
21
+ :icon="icon"
22
+ :icon-pack="iconPack"
23
+ :loading="loading"
24
+ :disabled="disabled"
25
+ :readonly="!editable"
26
+ :rounded="rounded"
27
+ v-bind="$attrs"
28
+ :use-html5-validation="useHtml5Validation"
29
+ @click.native.stop="toggle(true)"
30
+ @keyup.native.enter="toggle(true)"
31
+ @change.native="onChange($event.target.value)"
32
+ @focus="handleOnFocus"
33
+ @blur="checkHtml5Validity()"/>
34
+ </slot>
35
+ </template>
36
+ <div
37
+ class="card"
38
+ :disabled="disabled"
39
+ custom>
40
+ <header v-if="inline" class="card-header">
41
+ <div class="b-clockpicker-header card-header-title">
42
+ <div class="b-clockpicker-time">
43
+ <span
44
+ class="b-clockpicker-btn"
45
+ :class="{ active: isSelectingHour }"
46
+ @click="isSelectingHour = true">{{ hoursDisplay }}</span>
47
+ <span>{{ hourLiteral }}</span>
48
+ <span
49
+ class="b-clockpicker-btn"
50
+ :class="{ active: !isSelectingHour }"
51
+ @click="isSelectingHour = false">{{ minutesDisplay }}</span>
52
+ </div>
53
+ <div v-if="!isHourFormat24" class="b-clockpicker-period">
54
+ <div
55
+ class="b-clockpicker-btn"
56
+ :class="{
57
+ active: meridienSelected === amString || meridienSelected === AM
58
+ }"
59
+ @click="onMeridienClick(amString)">{{ amString }}</div>
60
+ <div
61
+ class="b-clockpicker-btn"
62
+ :class="{
63
+ active: meridienSelected === pmString || meridienSelected === PM
64
+ }"
65
+ @click="onMeridienClick(pmString)">{{ pmString }}</div>
66
+ </div>
67
+ </div>
68
+ </header>
69
+ <div class="card-content">
70
+ <div
71
+ class="b-clockpicker-body"
72
+ :style="{ width: faceSize + 'px', height: faceSize + 'px' }">
73
+ <div v-if="!inline" class="b-clockpicker-time">
74
+ <div
75
+ class="b-clockpicker-btn"
76
+ :class="{ active: isSelectingHour }"
77
+ @click="isSelectingHour = true">{{ hoursLabel }}</div>
78
+ <span
79
+ class="b-clockpicker-btn"
80
+ :class="{ active: !isSelectingHour }"
81
+ @click="isSelectingHour = false">{{ minutesLabel }}</span>
82
+ </div>
83
+ <div v-if="!isHourFormat24 && !inline" class="b-clockpicker-period">
84
+ <div
85
+ class="b-clockpicker-btn"
86
+ :class="{
87
+ active: meridienSelected === amString || meridienSelected === AM
88
+ }"
89
+ @click="onMeridienClick(amString)">{{ amString }}</div>
90
+ <div
91
+ class="b-clockpicker-btn"
92
+ :class="{
93
+ active: meridienSelected === pmString || meridienSelected === PM
94
+ }"
95
+ @click="onMeridienClick(pmString)">{{ pmString }}</div>
96
+ </div>
97
+ <b-clockpicker-face
98
+ :picker-size="faceSize"
99
+ :min="minFaceValue"
100
+ :max="maxFaceValue"
101
+ :face-numbers="isSelectingHour ? hours : minutes"
102
+ :disabled-values="faceDisabledValues"
103
+ :double="isSelectingHour && isHourFormat24"
104
+ :value="isSelectingHour ? hoursSelected : minutesSelected"
105
+ @input="onClockInput"
106
+ @change="onClockChange" />
107
+ </div>
108
+ </div>
109
+ <footer
110
+ v-if="$slots.default !== undefined && $slots.default.length"
111
+ class="b-clockpicker-footer card-footer">
112
+ <slot/>
113
+ </footer>
114
+ </div>
115
+ </b-dropdown>
116
+ <b-input
117
+ v-else
118
+ ref="input"
119
+ type="time"
120
+ autocomplete="off"
121
+ :value="formatHHMMSS(computedValue)"
122
+ :placeholder="placeholder"
123
+ :size="size"
124
+ :icon="icon"
125
+ :icon-pack="iconPack"
126
+ :loading="loading"
127
+ :max="formatHHMMSS(maxTime)"
128
+ :min="formatHHMMSS(minTime)"
129
+ :disabled="disabled"
130
+ :readonly="false"
131
+ v-bind="$attrs"
132
+ :use-html5-validation="useHtml5Validation"
133
+ @click.native.stop="toggle(true)"
134
+ @keyup.native.enter="toggle(true)"
135
+ @change.native="onChangeNativePicker"
136
+ @focus="handleOnFocus"
137
+ @blur="onBlur() && checkHtml5Validity()"/>
138
+ </div>
139
+ </template>
140
+
141
+ <script>
142
+ import TimepickerMixin from '../../utils/TimepickerMixin'
143
+ import config from '../../utils/config'
144
+
145
+ import Dropdown from '../dropdown/Dropdown'
146
+ import DropdownItem from '../dropdown/DropdownItem'
147
+ import Input from '../input/Input'
148
+ import Field from '../field/Field'
149
+ import Icon from '../icon/Icon'
150
+
151
+ import ClockpickerFace from './ClockpickerFace'
152
+
153
+ const outerPadding = 12
154
+
155
+ export default {
156
+ name: 'BClockpicker',
157
+ components: {
158
+ [ClockpickerFace.name]: ClockpickerFace,
159
+ [Input.name]: Input,
160
+ [Field.name]: Field,
161
+ [Icon.name]: Icon,
162
+ [Dropdown.name]: Dropdown,
163
+ [DropdownItem.name]: DropdownItem
164
+ },
165
+ mixins: [TimepickerMixin],
166
+ props: {
167
+ pickerSize: {
168
+ type: Number,
169
+ default: 290
170
+ },
171
+ incrementMinutes: {
172
+ type: Number,
173
+ default: 5
174
+ },
175
+ autoSwitch: {
176
+ type: Boolean,
177
+ default: true
178
+ },
179
+ type: {
180
+ type: String,
181
+ default: 'is-primary'
182
+ },
183
+ hoursLabel: {
184
+ type: String,
185
+ default: () => config.defaultClockpickerHoursLabel || 'Hours'
186
+ },
187
+ minutesLabel: {
188
+ type: String,
189
+ default: () => config.defaultClockpickerMinutesLabel || 'Min'
190
+ }
191
+ },
192
+ data() {
193
+ return {
194
+ isSelectingHour: true,
195
+ isDragging: false,
196
+ _isClockpicker: true
197
+ }
198
+ },
199
+ computed: {
200
+ hoursDisplay() {
201
+ if (this.hoursSelected == null) return '--'
202
+ if (this.isHourFormat24) return this.pad(this.hoursSelected)
203
+
204
+ let display = this.hoursSelected
205
+ if (this.meridienSelected === this.pmString) {
206
+ display -= 12
207
+ }
208
+ if (display === 0) display = 12
209
+ return display
210
+ },
211
+ minutesDisplay() {
212
+ return this.minutesSelected == null ? '--' : this.pad(this.minutesSelected)
213
+ },
214
+ minFaceValue() {
215
+ return this.isSelectingHour &&
216
+ !this.isHourFormat24 &&
217
+ this.meridienSelected === this.pmString ? 12 : 0
218
+ },
219
+ maxFaceValue() {
220
+ return this.isSelectingHour
221
+ ? (
222
+ !this.isHourFormat24 &&
223
+ this.meridienSelected === this.amString
224
+ ? 11
225
+ : 23
226
+ )
227
+ : 59
228
+ },
229
+ faceSize() {
230
+ return this.pickerSize - (outerPadding * 2)
231
+ },
232
+ faceDisabledValues() {
233
+ return this.isSelectingHour ? this.isHourDisabled : this.isMinuteDisabled
234
+ }
235
+ },
236
+ methods: {
237
+ onClockInput(value) {
238
+ if (this.isSelectingHour) {
239
+ this.hoursSelected = value
240
+ this.onHoursChange(value)
241
+ } else {
242
+ this.minutesSelected = value
243
+ this.onMinutesChange(value)
244
+ }
245
+ },
246
+ onClockChange(value) {
247
+ if (this.autoSwitch && this.isSelectingHour) {
248
+ this.isSelectingHour = !this.isSelectingHour
249
+ }
250
+ },
251
+ onMeridienClick(value) {
252
+ if (this.meridienSelected !== value) {
253
+ this.meridienSelected = value
254
+ this.onMeridienChange(value)
255
+ }
256
+ }
257
+ }
258
+ }
259
+ </script>
@@ -492,13 +492,12 @@ export default {
492
492
  }).resolvedOptions()
493
493
  },
494
494
  dtf() {
495
- return new Intl.DateTimeFormat(this.locale, { timeZone: 'UTC' })
495
+ return new Intl.DateTimeFormat(this.locale)
496
496
  },
497
497
  dtfMonth() {
498
498
  return new Intl.DateTimeFormat(this.locale, {
499
499
  year: this.localeOptions.year || 'numeric',
500
- month: this.localeOptions.month || '2-digit',
501
- timeZone: 'UTC'
500
+ month: this.localeOptions.month || '2-digit'
502
501
  })
503
502
  },
504
503
  newMonthNames() {
@@ -737,11 +736,12 @@ export default {
737
736
  },
738
737
  updateInternalState(value) {
739
738
  if (this.dateSelected === value) return
740
- const currentDate = Array.isArray(value)
739
+ const isArray = Array.isArray(value)
740
+ const currentDate = isArray
741
741
  ? (!value.length ? this.dateCreator() : value[value.length - 1])
742
742
  : (!value ? this.dateCreator() : value)
743
- if (Array.isArray(value) &&
744
- this.dateSelected && value.length > this.dateSelected.length) {
743
+ if (!isArray ||
744
+ (isArray && this.dateSelected && value.length > this.dateSelected.length)) {
745
745
  this.focusedDateData = {
746
746
  day: currentDate.getDate(),
747
747
  month: currentDate.getMonth(),
@@ -815,6 +815,10 @@ export default {
815
815
  if (!value) {
816
816
  this.onBlur()
817
817
  }
818
+ /*
819
+ * Emit 'active-change' when on dropdown active state change
820
+ */
821
+ this.$emit('active-change', value)
818
822
  },
819
823
 
820
824
  changeFocus(day) {
@@ -31,6 +31,7 @@
31
31
  :append-to-body="appendToBody"
32
32
  @focus="onFocus"
33
33
  @blur="onBlur"
34
+ @active-change="onActiveChange"
34
35
  @icon-right-click="$emit('icon-right-click')"
35
36
  @change-month="$emit('change-month', $event)"
36
37
  @change-year="$emit('change-year', $event)">
@@ -216,7 +217,7 @@ export default {
216
217
  hour: this.localeOptions.hour || 'numeric',
217
218
  minute: this.localeOptions.minute || 'numeric',
218
219
  second: this.enableSeconds() ? this.localeOptions.second || 'numeric' : undefined,
219
- hour12: !this.isHourFormat24()
220
+ hourCycle: !this.isHourFormat24() ? 'h12' : 'h23'
220
221
  })
221
222
  },
222
223
  isMobileNative() {
@@ -391,6 +392,12 @@ export default {
391
392
  this.computedValue = null
392
393
  }
393
394
  },
395
+ /*
396
+ * Emit 'active-change' on datepicker active state change
397
+ */
398
+ onActiveChange(value) {
399
+ this.$emit('active-change', value)
400
+ },
394
401
  formatNative(value) {
395
402
  const date = new Date(value)
396
403
  if (value && !isNaN(date)) {
@@ -56,16 +56,14 @@
56
56
  </section>
57
57
 
58
58
  <footer class="modal-card-foot">
59
- <button
59
+ <b-button
60
60
  v-if="showCancel"
61
- class="button"
62
61
  ref="cancelButton"
63
- @click="cancel('button')">{{ cancelText }}</button>
64
- <button
65
- class="button"
66
- :class="type"
62
+ @click="cancel('button')">{{ cancelText }}</b-button>
63
+ <b-button
64
+ :type="type"
67
65
  ref="confirmButton"
68
- @click="confirm">{{ confirmText }}</button>
66
+ @click="confirm">{{ confirmText }}</b-button>
69
67
  </footer>
70
68
  </div>
71
69
  </div>
@@ -76,13 +74,15 @@
76
74
  import trapFocus from '../../directives/trapFocus'
77
75
  import Icon from '../icon/Icon'
78
76
  import Modal from '../modal/Modal'
77
+ import Button from '../button/Button'
79
78
  import config from '../../utils/config'
80
79
  import { removeElement } from '../../utils/helpers'
81
80
 
82
81
  export default {
83
82
  name: 'BDialog',
84
83
  components: {
85
- [Icon.name]: Icon
84
+ [Icon.name]: Icon,
85
+ [Button.name]: Button
86
86
  },
87
87
  directives: {
88
88
  trapFocus
@@ -246,9 +246,9 @@ export default {
246
246
  if (this.hasInput) {
247
247
  this.$refs.input.focus()
248
248
  } else if (this.focusOn === 'cancel' && this.showCancel) {
249
- this.$refs.cancelButton.focus()
249
+ this.$refs.cancelButton.$el.focus()
250
250
  } else {
251
- this.$refs.confirmButton.focus()
251
+ this.$refs.confirmButton.$el.focus()
252
252
  }
253
253
  })
254
254
  }