primevue 4.3.1 → 4.3.3

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 (254) hide show
  1. package/accordionheader/AccordionHeader.vue +8 -2
  2. package/accordionheader/index.mjs +8 -1
  3. package/accordionheader/index.mjs.map +1 -1
  4. package/autocomplete/AutoComplete.vue +72 -16
  5. package/autocomplete/index.d.ts +3 -3
  6. package/autocomplete/index.mjs +84 -37
  7. package/autocomplete/index.mjs.map +1 -1
  8. package/avatar/Avatar.vue +13 -4
  9. package/avatar/index.d.ts +3 -3
  10. package/avatar/index.mjs +26 -6
  11. package/avatar/index.mjs.map +1 -1
  12. package/badge/Badge.vue +13 -2
  13. package/badge/index.d.ts +1 -1
  14. package/badge/index.mjs +18 -3
  15. package/badge/index.mjs.map +1 -1
  16. package/blockui/BlockUI.vue +15 -4
  17. package/blockui/index.mjs +13 -4
  18. package/blockui/index.mjs.map +1 -1
  19. package/button/Button.vue +30 -3
  20. package/button/index.d.ts +3 -7
  21. package/button/index.mjs +28 -9
  22. package/button/index.mjs.map +1 -1
  23. package/cascadeselect/CascadeSelect.vue +1 -1
  24. package/cascadeselect/index.d.ts +2 -2
  25. package/cascadeselect/index.mjs +1 -2
  26. package/cascadeselect/index.mjs.map +1 -1
  27. package/checkbox/Checkbox.vue +15 -5
  28. package/checkbox/index.d.ts +2 -2
  29. package/checkbox/index.mjs +29 -7
  30. package/checkbox/index.mjs.map +1 -1
  31. package/chip/BaseChip.vue +1 -1
  32. package/chip/Chip.vue +9 -1
  33. package/chip/index.d.ts +1 -1
  34. package/chip/index.mjs +13 -3
  35. package/chip/index.mjs.map +1 -1
  36. package/colorpicker/ColorPicker.vue +10 -2
  37. package/colorpicker/index.d.ts +1 -1
  38. package/colorpicker/index.mjs +9 -2
  39. package/colorpicker/index.mjs.map +1 -1
  40. package/column/index.d.ts +3 -3
  41. package/columngroup/index.d.ts +2 -2
  42. package/confirmationoptions/index.d.ts +1 -1
  43. package/datatable/BodyCell.vue +4 -1
  44. package/datatable/BodyRow.vue +2 -0
  45. package/datatable/ColumnFilter.vue +1 -1
  46. package/datatable/DataTable.vue +103 -44
  47. package/datatable/HeaderCheckbox.vue +2 -2
  48. package/datatable/RowCheckbox.vue +1 -1
  49. package/datatable/TableBody.vue +12 -1
  50. package/datatable/TableFooter.vue +9 -1
  51. package/datatable/TableHeader.vue +9 -2
  52. package/datatable/index.d.ts +45 -37
  53. package/datatable/index.mjs +170 -101
  54. package/datatable/index.mjs.map +1 -1
  55. package/dataview/DataView.vue +4 -0
  56. package/dataview/index.d.ts +61 -4
  57. package/dataview/index.mjs +6 -2
  58. package/dataview/index.mjs.map +1 -1
  59. package/datepicker/DatePicker.vue +370 -234
  60. package/datepicker/index.d.ts +162 -6
  61. package/datepicker/index.mjs +644 -384
  62. package/datepicker/index.mjs.map +1 -1
  63. package/dialog/Dialog.vue +48 -39
  64. package/dialog/index.d.ts +26 -1
  65. package/dialog/index.mjs +73 -50
  66. package/dialog/index.mjs.map +1 -1
  67. package/divider/Divider.vue +13 -3
  68. package/divider/index.d.ts +4 -4
  69. package/divider/index.mjs +18 -5
  70. package/divider/index.mjs.map +1 -1
  71. package/dock/index.d.ts +4 -4
  72. package/drawer/Drawer.vue +30 -20
  73. package/drawer/index.d.ts +12 -2
  74. package/drawer/index.mjs +42 -25
  75. package/drawer/index.mjs.map +1 -1
  76. package/fieldset/Fieldset.vue +8 -2
  77. package/fieldset/index.mjs +20 -10
  78. package/fieldset/index.mjs.map +1 -1
  79. package/fileupload/FileUpload.vue +1 -1
  80. package/fileupload/index.d.ts +2 -2
  81. package/fileupload/index.mjs +2 -2
  82. package/fileupload/index.mjs.map +1 -1
  83. package/floatlabel/index.d.ts +2 -2
  84. package/galleria/Galleria.vue +39 -3
  85. package/galleria/GalleriaItem.vue +8 -9
  86. package/galleria/index.d.ts +3 -3
  87. package/galleria/index.mjs +48 -11
  88. package/galleria/index.mjs.map +1 -1
  89. package/inplace/Inplace.vue +1 -1
  90. package/inplace/index.mjs +3 -2
  91. package/inplace/index.mjs.map +1 -1
  92. package/inputchips/index.d.ts +2 -2
  93. package/inputmask/InputMask.vue +15 -1
  94. package/inputmask/index.d.ts +3 -3
  95. package/inputmask/index.mjs +12 -1
  96. package/inputmask/index.mjs.map +1 -1
  97. package/inputnumber/BaseInputNumber.vue +4 -0
  98. package/inputnumber/InputNumber.vue +29 -14
  99. package/inputnumber/index.d.ts +6 -6
  100. package/inputnumber/index.mjs +47 -25
  101. package/inputnumber/index.mjs.map +1 -1
  102. package/inputotp/index.d.ts +3 -3
  103. package/inputtext/InputText.vue +10 -1
  104. package/inputtext/index.d.ts +4 -5
  105. package/inputtext/index.mjs +14 -1
  106. package/inputtext/index.mjs.map +1 -1
  107. package/keyfilter/index.mjs +12 -19
  108. package/keyfilter/index.mjs.map +1 -1
  109. package/knob/Knob.vue +1 -1
  110. package/knob/index.mjs +1 -1
  111. package/knob/index.mjs.map +1 -1
  112. package/listbox/Listbox.vue +9 -2
  113. package/listbox/index.mjs +11 -3
  114. package/listbox/index.mjs.map +1 -1
  115. package/megamenu/index.d.ts +2 -2
  116. package/menu/Menu.vue +8 -2
  117. package/menu/Menuitem.vue +14 -4
  118. package/menu/index.mjs +36 -16
  119. package/menu/index.mjs.map +1 -1
  120. package/message/Message.vue +16 -7
  121. package/message/index.d.ts +2 -2
  122. package/message/index.mjs +35 -13
  123. package/message/index.mjs.map +1 -1
  124. package/metergroup/MeterGroup.vue +9 -3
  125. package/metergroup/MeterGroupLabel.vue +10 -1
  126. package/metergroup/index.mjs +32 -7
  127. package/metergroup/index.mjs.map +1 -1
  128. package/multiselect/MultiSelect.vue +41 -6
  129. package/multiselect/index.d.ts +3 -3
  130. package/multiselect/index.mjs +53 -21
  131. package/multiselect/index.mjs.map +1 -1
  132. package/organizationchart/index.d.ts +2 -2
  133. package/overlaybadge/index.d.ts +1 -1
  134. package/package.json +3 -3
  135. package/paginator/Paginator.vue +2 -0
  136. package/paginator/index.d.ts +8 -0
  137. package/paginator/index.mjs +3 -1
  138. package/paginator/index.mjs.map +1 -1
  139. package/panel/Panel.vue +29 -22
  140. package/panel/index.d.ts +22 -2
  141. package/panel/index.mjs +55 -31
  142. package/panel/index.mjs.map +1 -1
  143. package/panelmenu/PanelMenuList.vue +1 -1
  144. package/panelmenu/index.mjs +1 -1
  145. package/panelmenu/index.mjs.map +1 -1
  146. package/password/Password.vue +21 -3
  147. package/password/index.d.ts +3 -3
  148. package/password/index.mjs +32 -10
  149. package/password/index.mjs.map +1 -1
  150. package/popover/Popover.vue +3 -3
  151. package/popover/index.mjs +3 -4
  152. package/popover/index.mjs.map +1 -1
  153. package/progressbar/ProgressBar.vue +11 -4
  154. package/progressbar/index.mjs +21 -7
  155. package/progressbar/index.mjs.map +1 -1
  156. package/radiobutton/RadioButton.vue +13 -3
  157. package/radiobutton/index.d.ts +3 -3
  158. package/radiobutton/index.mjs +24 -4
  159. package/radiobutton/index.mjs.map +1 -1
  160. package/rating/Rating.vue +19 -2
  161. package/rating/index.mjs +28 -7
  162. package/rating/index.mjs.map +1 -1
  163. package/scrolltop/ScrollTop.vue +2 -2
  164. package/scrolltop/index.d.ts +2 -2
  165. package/scrolltop/index.mjs +4 -2
  166. package/scrolltop/index.mjs.map +1 -1
  167. package/select/Select.vue +56 -16
  168. package/select/index.d.ts +2 -2
  169. package/select/index.mjs +111 -74
  170. package/select/index.mjs.map +1 -1
  171. package/selectbutton/SelectButton.vue +26 -9
  172. package/selectbutton/index.d.ts +2 -2
  173. package/selectbutton/index.mjs +30 -10
  174. package/selectbutton/index.mjs.map +1 -1
  175. package/skeleton/Skeleton.vue +7 -1
  176. package/skeleton/index.d.ts +3 -3
  177. package/skeleton/index.mjs +12 -1
  178. package/skeleton/index.mjs.map +1 -1
  179. package/slider/Slider.vue +11 -2
  180. package/slider/index.d.ts +2 -2
  181. package/slider/index.mjs +27 -8
  182. package/slider/index.mjs.map +1 -1
  183. package/speeddial/index.d.ts +5 -5
  184. package/splitbutton/index.d.ts +1 -1
  185. package/splitter/Splitter.vue +10 -2
  186. package/splitter/index.d.ts +3 -3
  187. package/splitter/index.mjs +19 -6
  188. package/splitter/index.mjs.map +1 -1
  189. package/step/Step.vue +25 -7
  190. package/step/index.mjs +44 -14
  191. package/step/index.mjs.map +1 -1
  192. package/steppanel/StepPanel.vue +9 -3
  193. package/steppanel/index.d.ts +8 -0
  194. package/steppanel/index.mjs +23 -8
  195. package/steppanel/index.mjs.map +1 -1
  196. package/stepper/StepperSeparator.vue +5 -2
  197. package/stepper/index.d.ts +4 -0
  198. package/tab/Tab.vue +12 -6
  199. package/tab/index.mjs +13 -5
  200. package/tab/index.mjs.map +1 -1
  201. package/tablist/TabList.vue +13 -2
  202. package/tablist/index.mjs +21 -8
  203. package/tablist/index.mjs.map +1 -1
  204. package/tabpanel/TabPanel.vue +2 -2
  205. package/tabpanel/index.mjs +2 -2
  206. package/tabpanel/index.mjs.map +1 -1
  207. package/tag/Tag.vue +11 -2
  208. package/tag/index.mjs +17 -3
  209. package/tag/index.mjs.map +1 -1
  210. package/textarea/Textarea.vue +10 -1
  211. package/textarea/index.d.ts +4 -5
  212. package/textarea/index.mjs +14 -1
  213. package/textarea/index.mjs.map +1 -1
  214. package/tieredmenu/TieredMenu.vue +1 -1
  215. package/tieredmenu/index.mjs +1 -2
  216. package/tieredmenu/index.mjs.map +1 -1
  217. package/timeline/Timeline.vue +16 -7
  218. package/timeline/index.d.ts +3 -3
  219. package/timeline/index.mjs +42 -11
  220. package/timeline/index.mjs.map +1 -1
  221. package/toast/Toast.vue +10 -1
  222. package/toast/ToastMessage.vue +29 -19
  223. package/toast/index.d.ts +2 -2
  224. package/toast/index.mjs +77 -38
  225. package/toast/index.mjs.map +1 -1
  226. package/togglebutton/ToggleButton.vue +10 -1
  227. package/togglebutton/index.d.ts +3 -3
  228. package/togglebutton/index.mjs +19 -4
  229. package/togglebutton/index.mjs.map +1 -1
  230. package/toggleswitch/ToggleSwitch.vue +11 -3
  231. package/toggleswitch/index.mjs +20 -5
  232. package/toggleswitch/index.mjs.map +1 -1
  233. package/tooltip/index.mjs +22 -22
  234. package/tooltip/index.mjs.map +1 -1
  235. package/tree/Tree.vue +14 -2
  236. package/tree/TreeNode.vue +2 -2
  237. package/tree/index.d.ts +3 -3
  238. package/tree/index.mjs +28 -10
  239. package/tree/index.mjs.map +1 -1
  240. package/treeselect/TreeSelect.vue +1 -1
  241. package/treeselect/index.d.ts +6 -6
  242. package/treeselect/index.mjs +1 -2
  243. package/treeselect/index.mjs.map +1 -1
  244. package/treetable/index.d.ts +7 -7
  245. package/treetable/style/index.mjs +2 -3
  246. package/treetable/style/index.mjs.map +1 -1
  247. package/umd/primevue.min.js +1 -1
  248. package/virtualscroller/VirtualScroller.vue +13 -2
  249. package/virtualscroller/index.d.ts +2 -2
  250. package/virtualscroller/index.mjs +14 -4
  251. package/virtualscroller/index.mjs.map +1 -1
  252. package/virtualscroller/style/index.mjs +1 -1
  253. package/virtualscroller/style/index.mjs.map +1 -1
  254. package/web-types.json +1 -1
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <span ref="container" :id="$id" :class="cx('root')" :style="sx('root')" v-bind="ptmi('root')">
2
+ <span ref="container" :id="$id" :class="cx('root')" :style="sx('root')" :data-p="containerDataP" v-bind="ptmi('root')">
3
3
  <InputText
4
4
  v-if="!inline"
5
5
  :ref="inputRef"
@@ -31,6 +31,8 @@
31
31
  @focus="onFocus"
32
32
  @blur="onBlur"
33
33
  @keydown="onKeyDown"
34
+ :data-p-has-dropdown="showIcon && iconDisplay === 'button' && !inline"
35
+ :data-p-has-e-icon="showIcon && iconDisplay === 'input' && !inline"
34
36
  :pt="ptm('pcInputText')"
35
37
  />
36
38
  <slot v-if="showIcon && iconDisplay === 'button' && !inline" name="dropdownbutton" :toggleCallback="onButtonClick">
@@ -51,7 +53,7 @@
51
53
  </button>
52
54
  </slot>
53
55
  <template v-else-if="showIcon && iconDisplay === 'input' && !inline">
54
- <span v-if="$slots.inputicon || showIcon" :class="cx('inputIconContainer')" v-bind="ptm('inputIconContainer')">
56
+ <span v-if="$slots.inputicon || showIcon" :class="cx('inputIconContainer')" :data-p="inputIconDataP" v-bind="ptm('inputIconContainer')">
55
57
  <slot name="inputicon" :class="cx('inputIcon')" :clickCallback="onButtonClick">
56
58
  <component :is="icon ? 'i' : 'CalendarIcon'" :class="[icon, cx('inputIcon')]" @click="onButtonClick" v-bind="ptm('inputicon')" />
57
59
  </slot>
@@ -71,6 +73,7 @@
71
73
  @click="onOverlayClick"
72
74
  @keydown="onOverlayKeyDown"
73
75
  @mouseup="onOverlayMouseUp"
76
+ :data-p="panelDataP"
74
77
  v-bind="ptm('panel')"
75
78
  >
76
79
  <template v-if="!timeOnly">
@@ -78,25 +81,27 @@
78
81
  <div v-for="(month, groupIndex) of months" :key="month.month + month.year" :class="cx('calendar')" v-bind="ptm('calendar')">
79
82
  <div :class="cx('header')" v-bind="ptm('header')">
80
83
  <slot name="header"></slot>
81
- <Button
82
- v-show="groupIndex === 0"
83
- :ref="previousButtonRef"
84
- :class="cx('pcPrevButton')"
85
- :disabled="disabled"
86
- :aria-label="currentView === 'year' ? $primevue.config.locale.prevDecade : currentView === 'month' ? $primevue.config.locale.prevYear : $primevue.config.locale.prevMonth"
87
- :unstyled="unstyled"
88
- @click="onPrevButtonClick"
89
- @keydown="onContainerButtonKeydown"
90
- v-bind="navigatorButtonProps"
91
- :pt="ptm('pcPrevButton')"
92
- data-pc-group-section="navigator"
93
- >
94
- <template #icon="slotProps">
95
- <slot name="previcon">
96
- <component :is="prevIcon ? 'span' : 'ChevronLeftIcon'" :class="[prevIcon, slotProps.class]" v-bind="ptm('pcPrevButton')['icon']" />
97
- </slot>
98
- </template>
99
- </Button>
84
+ <slot name="prevbutton" :actionCallback="(event) => onPrevButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
85
+ <Button
86
+ v-show="groupIndex === 0"
87
+ :ref="previousButtonRef"
88
+ :class="cx('pcPrevButton')"
89
+ :disabled="disabled"
90
+ :aria-label="currentView === 'year' ? $primevue.config.locale.prevDecade : currentView === 'month' ? $primevue.config.locale.prevYear : $primevue.config.locale.prevMonth"
91
+ :unstyled="unstyled"
92
+ @click="onPrevButtonClick"
93
+ @keydown="onContainerButtonKeydown"
94
+ v-bind="navigatorButtonProps"
95
+ :pt="ptm('pcPrevButton')"
96
+ data-pc-group-section="navigator"
97
+ >
98
+ <template #icon="slotProps">
99
+ <slot name="previcon">
100
+ <component :is="prevIcon ? 'span' : 'ChevronLeftIcon'" :class="[prevIcon, slotProps.class]" v-bind="ptm('pcPrevButton')['icon']" />
101
+ </slot>
102
+ </template>
103
+ </Button>
104
+ </slot>
100
105
  <div :class="cx('title')" v-bind="ptm('title')">
101
106
  <template v-if="$primevue.config.locale.showMonthAfterYear">
102
107
  <button
@@ -158,25 +163,27 @@
158
163
  <slot name="decade" :years="yearPickerValues"> {{ yearPickerValues[0].value }} - {{ yearPickerValues[yearPickerValues.length - 1].value }} </slot>
159
164
  </span>
160
165
  </div>
161
- <Button
162
- v-show="numberOfMonths === 1 ? true : groupIndex === numberOfMonths - 1"
163
- :ref="nextButtonRef"
164
- :class="cx('pcNextButton')"
165
- :disabled="disabled"
166
- :aria-label="currentView === 'year' ? $primevue.config.locale.nextDecade : currentView === 'month' ? $primevue.config.locale.nextYear : $primevue.config.locale.nextMonth"
167
- :unstyled="unstyled"
168
- @click="onNextButtonClick"
169
- @keydown="onContainerButtonKeydown"
170
- v-bind="navigatorButtonProps"
171
- :pt="ptm('pcNextButton')"
172
- data-pc-group-section="navigator"
173
- >
174
- <template #icon="slotProps">
175
- <slot name="nexticon">
176
- <component :is="nextIcon ? 'span' : 'ChevronRightIcon'" :class="[nextIcon, slotProps.class]" v-bind="ptm('pcNextButton')['icon']" />
177
- </slot>
178
- </template>
179
- </Button>
166
+ <slot name="nextbutton" :actionCallback="(event) => onNextButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
167
+ <Button
168
+ v-show="numberOfMonths === 1 ? true : groupIndex === numberOfMonths - 1"
169
+ :ref="nextButtonRef"
170
+ :class="cx('pcNextButton')"
171
+ :disabled="disabled"
172
+ :aria-label="currentView === 'year' ? $primevue.config.locale.nextDecade : currentView === 'month' ? $primevue.config.locale.nextYear : $primevue.config.locale.nextMonth"
173
+ :unstyled="unstyled"
174
+ @click="onNextButtonClick"
175
+ @keydown="onContainerButtonKeydown"
176
+ v-bind="navigatorButtonProps"
177
+ :pt="ptm('pcNextButton')"
178
+ data-pc-group-section="navigator"
179
+ >
180
+ <template #icon="slotProps">
181
+ <slot name="nexticon">
182
+ <component :is="nextIcon ? 'span' : 'ChevronRightIcon'" :class="[nextIcon, slotProps.class]" v-bind="ptm('pcNextButton')['icon']" />
183
+ </slot>
184
+ </template>
185
+ </Button>
186
+ </slot>
180
187
  </div>
181
188
  <table v-if="currentView === 'date'" :class="cx('dayView')" role="grid" v-bind="ptm('dayView')">
182
189
  <thead v-bind="ptm('tableHeader')">
@@ -243,8 +250,7 @@
243
250
  }
244
251
  })
245
252
  "
246
- :data-p-disabled="!date.selectable"
247
- :data-p-selected="isSelected(date)"
253
+ :data-p="dayDataP(date)"
248
254
  data-pc-group-section="tablebodycelllabel"
249
255
  >
250
256
  <slot name="date" :date="date">{{ date.day }}</slot>
@@ -312,219 +318,239 @@
312
318
  </span>
313
319
  </div>
314
320
  </template>
315
- <div v-if="(showTime || timeOnly) && currentView === 'date'" :class="cx('timePicker')" v-bind="ptm('timePicker')">
321
+ <div v-if="(showTime || timeOnly) && currentView === 'date'" :class="cx('timePicker')" :data-p="timePickerDataP" v-bind="ptm('timePicker')">
316
322
  <div :class="cx('hourPicker')" v-bind="ptm('hourPicker')" data-pc-group-section="timepickerContainer">
317
- <Button
318
- :class="cx('pcIncrementButton')"
319
- :aria-label="$primevue.config.locale.nextHour"
320
- :unstyled="unstyled"
321
- @mousedown="onTimePickerElementMouseDown($event, 0, 1)"
322
- @mouseup="onTimePickerElementMouseUp($event)"
323
- @keydown="onContainerButtonKeydown"
324
- @mouseleave="onTimePickerElementMouseLeave()"
325
- @keydown.enter="onTimePickerElementMouseDown($event, 0, 1)"
326
- @keydown.space="onTimePickerElementMouseDown($event, 0, 1)"
327
- @keyup.enter="onTimePickerElementMouseUp($event)"
328
- @keyup.space="onTimePickerElementMouseUp($event)"
329
- v-bind="timepickerButtonProps"
330
- :pt="ptm('pcIncrementButton')"
331
- data-pc-group-section="timepickerbutton"
332
- >
333
- <template #icon="slotProps">
334
- <slot name="incrementicon">
335
- <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
336
- </slot>
337
- </template>
338
- </Button>
323
+ <slot name="hourincrementbutton" :callbacks="hourIncrementCallbacks">
324
+ <Button
325
+ :class="cx('pcIncrementButton')"
326
+ :aria-label="$primevue.config.locale.nextHour"
327
+ :unstyled="unstyled"
328
+ @mousedown="onTimePickerElementMouseDown($event, 0, 1)"
329
+ @mouseup="onTimePickerElementMouseUp($event)"
330
+ @keydown="onContainerButtonKeydown"
331
+ @mouseleave="onTimePickerElementMouseLeave()"
332
+ @keydown.enter="onTimePickerElementMouseDown($event, 0, 1)"
333
+ @keydown.space="onTimePickerElementMouseDown($event, 0, 1)"
334
+ @keyup.enter="onTimePickerElementMouseUp($event)"
335
+ @keyup.space="onTimePickerElementMouseUp($event)"
336
+ v-bind="timepickerButtonProps"
337
+ :pt="ptm('pcIncrementButton')"
338
+ data-pc-group-section="timepickerbutton"
339
+ >
340
+ <template #icon="slotProps">
341
+ <slot name="incrementicon">
342
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
343
+ </slot>
344
+ </template>
345
+ </Button>
346
+ </slot>
339
347
  <span v-bind="ptm('hour')" data-pc-group-section="timepickerlabel">{{ formattedCurrentHour }}</span>
340
- <Button
341
- :class="cx('pcDecrementButton')"
342
- :aria-label="$primevue.config.locale.prevHour"
343
- :unstyled="unstyled"
344
- @mousedown="onTimePickerElementMouseDown($event, 0, -1)"
345
- @mouseup="onTimePickerElementMouseUp($event)"
346
- @keydown="onContainerButtonKeydown"
347
- @mouseleave="onTimePickerElementMouseLeave()"
348
- @keydown.enter="onTimePickerElementMouseDown($event, 0, -1)"
349
- @keydown.space="onTimePickerElementMouseDown($event, 0, -1)"
350
- @keyup.enter="onTimePickerElementMouseUp($event)"
351
- @keyup.space="onTimePickerElementMouseUp($event)"
352
- v-bind="timepickerButtonProps"
353
- :pt="ptm('pcDecrementButton')"
354
- data-pc-group-section="timepickerbutton"
355
- >
356
- <template #icon="slotProps">
357
- <slot name="decrementicon">
358
- <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
359
- </slot>
360
- </template>
361
- </Button>
348
+ <slot name="hourdecrementbutton" :callbacks="hourDecrementCallbacks">
349
+ <Button
350
+ :class="cx('pcDecrementButton')"
351
+ :aria-label="$primevue.config.locale.prevHour"
352
+ :unstyled="unstyled"
353
+ @mousedown="onTimePickerElementMouseDown($event, 0, -1)"
354
+ @mouseup="onTimePickerElementMouseUp($event)"
355
+ @keydown="onContainerButtonKeydown"
356
+ @mouseleave="onTimePickerElementMouseLeave()"
357
+ @keydown.enter="onTimePickerElementMouseDown($event, 0, -1)"
358
+ @keydown.space="onTimePickerElementMouseDown($event, 0, -1)"
359
+ @keyup.enter="onTimePickerElementMouseUp($event)"
360
+ @keyup.space="onTimePickerElementMouseUp($event)"
361
+ v-bind="timepickerButtonProps"
362
+ :pt="ptm('pcDecrementButton')"
363
+ data-pc-group-section="timepickerbutton"
364
+ >
365
+ <template #icon="slotProps">
366
+ <slot name="decrementicon">
367
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
368
+ </slot>
369
+ </template>
370
+ </Button>
371
+ </slot>
362
372
  </div>
363
373
  <div v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
364
374
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
365
375
  </div>
366
376
  <div :class="cx('minutePicker')" v-bind="ptm('minutePicker')" data-pc-group-section="timepickerContainer">
367
- <Button
368
- :class="cx('pcIncrementButton')"
369
- :aria-label="$primevue.config.locale.nextMinute"
370
- :disabled="disabled"
371
- :unstyled="unstyled"
372
- @mousedown="onTimePickerElementMouseDown($event, 1, 1)"
373
- @mouseup="onTimePickerElementMouseUp($event)"
374
- @keydown="onContainerButtonKeydown"
375
- @mouseleave="onTimePickerElementMouseLeave()"
376
- @keydown.enter="onTimePickerElementMouseDown($event, 1, 1)"
377
- @keydown.space="onTimePickerElementMouseDown($event, 1, 1)"
378
- @keyup.enter="onTimePickerElementMouseUp($event)"
379
- @keyup.space="onTimePickerElementMouseUp($event)"
380
- v-bind="timepickerButtonProps"
381
- :pt="ptm('pcIncrementButton')"
382
- data-pc-group-section="timepickerbutton"
383
- >
384
- <template #icon="slotProps">
385
- <slot name="incrementicon">
386
- <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
387
- </slot>
388
- </template>
389
- </Button>
377
+ <slot name="minuteincrementbutton" :callbacks="minuteIncrementCallbacks">
378
+ <Button
379
+ :class="cx('pcIncrementButton')"
380
+ :aria-label="$primevue.config.locale.nextMinute"
381
+ :disabled="disabled"
382
+ :unstyled="unstyled"
383
+ @mousedown="onTimePickerElementMouseDown($event, 1, 1)"
384
+ @mouseup="onTimePickerElementMouseUp($event)"
385
+ @keydown="onContainerButtonKeydown"
386
+ @mouseleave="onTimePickerElementMouseLeave()"
387
+ @keydown.enter="onTimePickerElementMouseDown($event, 1, 1)"
388
+ @keydown.space="onTimePickerElementMouseDown($event, 1, 1)"
389
+ @keyup.enter="onTimePickerElementMouseUp($event)"
390
+ @keyup.space="onTimePickerElementMouseUp($event)"
391
+ v-bind="timepickerButtonProps"
392
+ :pt="ptm('pcIncrementButton')"
393
+ data-pc-group-section="timepickerbutton"
394
+ >
395
+ <template #icon="slotProps">
396
+ <slot name="incrementicon">
397
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
398
+ </slot>
399
+ </template>
400
+ </Button>
401
+ </slot>
390
402
  <span v-bind="ptm('minute')" data-pc-group-section="timepickerlabel">{{ formattedCurrentMinute }}</span>
391
- <Button
392
- :class="cx('pcDecrementButton')"
393
- :aria-label="$primevue.config.locale.prevMinute"
394
- :disabled="disabled"
395
- :unstyled="unstyled"
396
- @mousedown="onTimePickerElementMouseDown($event, 1, -1)"
397
- @mouseup="onTimePickerElementMouseUp($event)"
398
- @keydown="onContainerButtonKeydown"
399
- @mouseleave="onTimePickerElementMouseLeave()"
400
- @keydown.enter="onTimePickerElementMouseDown($event, 1, -1)"
401
- @keydown.space="onTimePickerElementMouseDown($event, 1, -1)"
402
- @keyup.enter="onTimePickerElementMouseUp($event)"
403
- @keyup.space="onTimePickerElementMouseUp($event)"
404
- v-bind="timepickerButtonProps"
405
- :pt="ptm('pcDecrementButton')"
406
- data-pc-group-section="timepickerbutton"
407
- >
408
- <template #icon="slotProps">
409
- <slot name="decrementicon">
410
- <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
411
- </slot>
412
- </template>
413
- </Button>
403
+ <slot name="minutedecrementbutton" :callbacks="minuteDecrementCallbacks">
404
+ <Button
405
+ :class="cx('pcDecrementButton')"
406
+ :aria-label="$primevue.config.locale.prevMinute"
407
+ :disabled="disabled"
408
+ :unstyled="unstyled"
409
+ @mousedown="onTimePickerElementMouseDown($event, 1, -1)"
410
+ @mouseup="onTimePickerElementMouseUp($event)"
411
+ @keydown="onContainerButtonKeydown"
412
+ @mouseleave="onTimePickerElementMouseLeave()"
413
+ @keydown.enter="onTimePickerElementMouseDown($event, 1, -1)"
414
+ @keydown.space="onTimePickerElementMouseDown($event, 1, -1)"
415
+ @keyup.enter="onTimePickerElementMouseUp($event)"
416
+ @keyup.space="onTimePickerElementMouseUp($event)"
417
+ v-bind="timepickerButtonProps"
418
+ :pt="ptm('pcDecrementButton')"
419
+ data-pc-group-section="timepickerbutton"
420
+ >
421
+ <template #icon="slotProps">
422
+ <slot name="decrementicon">
423
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
424
+ </slot>
425
+ </template>
426
+ </Button>
427
+ </slot>
414
428
  </div>
415
429
  <div v-if="showSeconds" :class="cx('separatorContainer')" v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
416
430
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
417
431
  </div>
418
432
  <div v-if="showSeconds" :class="cx('secondPicker')" v-bind="ptm('secondPicker')" data-pc-group-section="timepickerContainer">
419
- <Button
420
- :class="cx('pcIncrementButton')"
421
- :aria-label="$primevue.config.locale.nextSecond"
422
- :disabled="disabled"
423
- :unstyled="unstyled"
424
- @mousedown="onTimePickerElementMouseDown($event, 2, 1)"
425
- @mouseup="onTimePickerElementMouseUp($event)"
426
- @keydown="onContainerButtonKeydown"
427
- @mouseleave="onTimePickerElementMouseLeave()"
428
- @keydown.enter="onTimePickerElementMouseDown($event, 2, 1)"
429
- @keydown.space="onTimePickerElementMouseDown($event, 2, 1)"
430
- @keyup.enter="onTimePickerElementMouseUp($event)"
431
- @keyup.space="onTimePickerElementMouseUp($event)"
432
- v-bind="timepickerButtonProps"
433
- :pt="ptm('pcIncrementButton')"
434
- data-pc-group-section="timepickerbutton"
435
- >
436
- <template #icon="slotProps">
437
- <slot name="incrementicon">
438
- <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
439
- </slot>
440
- </template>
441
- </Button>
433
+ <slot name="secondincrementbutton" :callbacks="secondIncrementCallbacks">
434
+ <Button
435
+ :class="cx('pcIncrementButton')"
436
+ :aria-label="$primevue.config.locale.nextSecond"
437
+ :disabled="disabled"
438
+ :unstyled="unstyled"
439
+ @mousedown="onTimePickerElementMouseDown($event, 2, 1)"
440
+ @mouseup="onTimePickerElementMouseUp($event)"
441
+ @keydown="onContainerButtonKeydown"
442
+ @mouseleave="onTimePickerElementMouseLeave()"
443
+ @keydown.enter="onTimePickerElementMouseDown($event, 2, 1)"
444
+ @keydown.space="onTimePickerElementMouseDown($event, 2, 1)"
445
+ @keyup.enter="onTimePickerElementMouseUp($event)"
446
+ @keyup.space="onTimePickerElementMouseUp($event)"
447
+ v-bind="timepickerButtonProps"
448
+ :pt="ptm('pcIncrementButton')"
449
+ data-pc-group-section="timepickerbutton"
450
+ >
451
+ <template #icon="slotProps">
452
+ <slot name="incrementicon">
453
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
454
+ </slot>
455
+ </template>
456
+ </Button>
457
+ </slot>
442
458
  <span v-bind="ptm('second')" data-pc-group-section="timepickerlabel">{{ formattedCurrentSecond }}</span>
443
- <Button
444
- :class="cx('pcDecrementButton')"
445
- :aria-label="$primevue.config.locale.prevSecond"
446
- :disabled="disabled"
447
- :unstyled="unstyled"
448
- @mousedown="onTimePickerElementMouseDown($event, 2, -1)"
449
- @mouseup="onTimePickerElementMouseUp($event)"
450
- @keydown="onContainerButtonKeydown"
451
- @mouseleave="onTimePickerElementMouseLeave()"
452
- @keydown.enter="onTimePickerElementMouseDown($event, 2, -1)"
453
- @keydown.space="onTimePickerElementMouseDown($event, 2, -1)"
454
- @keyup.enter="onTimePickerElementMouseUp($event)"
455
- @keyup.space="onTimePickerElementMouseUp($event)"
456
- v-bind="timepickerButtonProps"
457
- :pt="ptm('pcDecrementButton')"
458
- data-pc-group-section="timepickerbutton"
459
- >
460
- <template #icon="slotProps">
461
- <slot name="decrementicon">
462
- <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
463
- </slot>
464
- </template>
465
- </Button>
459
+ <slot name="seconddecrementbutton" :callbacks="secondDecrementCallbacks">
460
+ <Button
461
+ :class="cx('pcDecrementButton')"
462
+ :aria-label="$primevue.config.locale.prevSecond"
463
+ :disabled="disabled"
464
+ :unstyled="unstyled"
465
+ @mousedown="onTimePickerElementMouseDown($event, 2, -1)"
466
+ @mouseup="onTimePickerElementMouseUp($event)"
467
+ @keydown="onContainerButtonKeydown"
468
+ @mouseleave="onTimePickerElementMouseLeave()"
469
+ @keydown.enter="onTimePickerElementMouseDown($event, 2, -1)"
470
+ @keydown.space="onTimePickerElementMouseDown($event, 2, -1)"
471
+ @keyup.enter="onTimePickerElementMouseUp($event)"
472
+ @keyup.space="onTimePickerElementMouseUp($event)"
473
+ v-bind="timepickerButtonProps"
474
+ :pt="ptm('pcDecrementButton')"
475
+ data-pc-group-section="timepickerbutton"
476
+ >
477
+ <template #icon="slotProps">
478
+ <slot name="decrementicon">
479
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
480
+ </slot>
481
+ </template>
482
+ </Button>
483
+ </slot>
466
484
  </div>
467
485
  <div v-if="hourFormat == '12'" :class="cx('separatorContainer')" v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
468
486
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
469
487
  </div>
470
488
  <div v-if="hourFormat == '12'" :class="cx('ampmPicker')" v-bind="ptm('ampmPicker')">
489
+ <slot name="ampmincrementbutton" :toggleCallback="(event) => toggleAMPM(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
490
+ <Button
491
+ :class="cx('pcIncrementButton')"
492
+ :aria-label="$primevue.config.locale.am"
493
+ :disabled="disabled"
494
+ :unstyled="unstyled"
495
+ @click="toggleAMPM($event)"
496
+ @keydown="onContainerButtonKeydown"
497
+ v-bind="timepickerButtonProps"
498
+ :pt="ptm('pcIncrementButton')"
499
+ data-pc-group-section="timepickerbutton"
500
+ >
501
+ <template #icon="slotProps">
502
+ <slot name="incrementicon" :class="cx('incrementIcon')">
503
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[cx('incrementIcon'), slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
504
+ </slot>
505
+ </template>
506
+ </Button>
507
+ </slot>
508
+ <span v-bind="ptm('ampm')" data-pc-group-section="timepickerlabel">{{ pm ? $primevue.config.locale.pm : $primevue.config.locale.am }}</span>
509
+ <slot name="ampmdecrementbutton" :toggleCallback="(event) => toggleAMPM(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
510
+ <Button
511
+ :class="cx('pcDecrementButton')"
512
+ :aria-label="$primevue.config.locale.pm"
513
+ :disabled="disabled"
514
+ @click="toggleAMPM($event)"
515
+ @keydown="onContainerButtonKeydown"
516
+ v-bind="timepickerButtonProps"
517
+ :pt="ptm('pcDecrementButton')"
518
+ data-pc-group-section="timepickerbutton"
519
+ >
520
+ <template #icon="slotProps">
521
+ <slot name="decrementicon" :class="cx('decrementIcon')">
522
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[cx('decrementIcon'), slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
523
+ </slot>
524
+ </template>
525
+ </Button>
526
+ </slot>
527
+ </div>
528
+ </div>
529
+ <div v-if="showButtonBar" :class="cx('buttonbar')" v-bind="ptm('buttonbar')">
530
+ <slot name="todaybutton" :actionCallback="(event) => onTodayButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
471
531
  <Button
472
- :class="cx('pcIncrementButton')"
473
- :aria-label="$primevue.config.locale.am"
474
- :disabled="disabled"
532
+ :label="todayLabel"
533
+ @click="onTodayButtonClick($event)"
534
+ :class="cx('pcTodayButton')"
475
535
  :unstyled="unstyled"
476
- @click="toggleAMPM($event)"
477
536
  @keydown="onContainerButtonKeydown"
478
- v-bind="timepickerButtonProps"
479
- :pt="ptm('pcIncrementButton')"
480
- data-pc-group-section="timepickerbutton"
481
- >
482
- <template #icon="slotProps">
483
- <slot name="incrementicon" :class="cx('incrementIcon')">
484
- <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[cx('incrementIcon'), slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
485
- </slot>
486
- </template>
487
- </Button>
488
- <span v-bind="ptm('ampm')" data-pc-group-section="timepickerlabel">{{ pm ? $primevue.config.locale.pm : $primevue.config.locale.am }}</span>
537
+ v-bind="todayButtonProps"
538
+ :pt="ptm('pcTodayButton')"
539
+ data-pc-group-section="button"
540
+ />
541
+ </slot>
542
+ <slot name="clearbutton" :actionCallback="(event) => onClearButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
489
543
  <Button
490
- :class="cx('pcDecrementButton')"
491
- :aria-label="$primevue.config.locale.pm"
492
- :disabled="disabled"
493
- @click="toggleAMPM($event)"
544
+ :label="clearLabel"
545
+ @click="onClearButtonClick($event)"
546
+ :class="cx('pcClearButton')"
547
+ :unstyled="unstyled"
494
548
  @keydown="onContainerButtonKeydown"
495
- v-bind="timepickerButtonProps"
496
- :pt="ptm('pcDecrementButton')"
497
- data-pc-group-section="timepickerbutton"
498
- >
499
- <template #icon="slotProps">
500
- <slot name="decrementicon" :class="cx('decrementIcon')">
501
- <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[cx('decrementIcon'), slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
502
- </slot>
503
- </template>
504
- </Button>
505
- </div>
506
- </div>
507
- <div v-if="showButtonBar" :class="cx('buttonbar')" v-bind="ptm('buttonbar')">
508
- <Button
509
- :label="todayLabel"
510
- @click="onTodayButtonClick($event)"
511
- :class="cx('pcTodayButton')"
512
- :unstyled="unstyled"
513
- @keydown="onContainerButtonKeydown"
514
- v-bind="todayButtonProps"
515
- :pt="ptm('pcTodayButton')"
516
- data-pc-group-section="button"
517
- />
518
- <Button
519
- :label="clearLabel"
520
- @click="onClearButtonClick($event)"
521
- :class="cx('pcClearButton')"
522
- :unstyled="unstyled"
523
- @keydown="onContainerButtonKeydown"
524
- v-bind="clearButtonProps"
525
- :pt="ptm('pcClearButton')"
526
- data-pc-group-section="button"
527
- />
549
+ v-bind="clearButtonProps"
550
+ :pt="ptm('pcClearButton')"
551
+ data-pc-group-section="button"
552
+ />
553
+ </slot>
528
554
  </div>
529
555
  <slot name="footer"></slot>
530
556
  </div>
@@ -534,6 +560,7 @@
534
560
  </template>
535
561
 
536
562
  <script>
563
+ import { cn } from '@primeuix/utils';
537
564
  import { absolutePosition, addStyle, find, findSingle, getAttribute, getFocusableElements, getIndex, getOuterWidth, isTouchDevice, relativePosition, setAttribute } from '@primeuix/utils/dom';
538
565
  import { localeComparator } from '@primeuix/utils/object';
539
566
  import { ZIndex } from '@primeuix/utils/zindex';
@@ -874,7 +901,7 @@ export default {
874
901
  return validMin && validMax && validDate && validDay;
875
902
  },
876
903
  onOverlayEnter(el) {
877
- const styles = !this.inline ? { position: 'absolute', top: '0', left: '0' } : undefined;
904
+ const styles = !this.inline ? { position: 'absolute', top: '0' } : undefined;
878
905
 
879
906
  addStyle(el, styles);
880
907
 
@@ -1096,7 +1123,8 @@ export default {
1096
1123
  }
1097
1124
  },
1098
1125
  isOutsideClicked(event) {
1099
- return !(this.$el.isSameNode(event.target) || this.isNavIconClicked(event) || this.$el.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
1126
+ const composedPath = event.composedPath();
1127
+ return !(this.$el.isSameNode(event.target) || this.isNavIconClicked(event) || composedPath.includes(this.$el) || composedPath.includes(this.overlay));
1100
1128
  },
1101
1129
  isNavIconClicked(event) {
1102
1130
  return (this.previousButton && (this.previousButton.isSameNode(event.target) || this.previousButton.contains(event.target))) || (this.nextButton && (this.nextButton.isSameNode(event.target) || this.nextButton.contains(event.target)));
@@ -1271,7 +1299,7 @@ export default {
1271
1299
  },
1272
1300
  formatValue(value) {
1273
1301
  if (typeof value === 'string') {
1274
- return value;
1302
+ return this.dateFormat ? (isNaN(new Date(value)) ? value : this.formatDate(new Date(value), this.dateFormat)) : value;
1275
1303
  }
1276
1304
 
1277
1305
  let formattedValue = '';
@@ -1482,6 +1510,31 @@ export default {
1482
1510
  onTimePickerElementMouseLeave() {
1483
1511
  this.clearTimePickerTimer();
1484
1512
  },
1513
+ onTimePickerElementKeyDown(event, type, direction) {
1514
+ switch (event.code) {
1515
+ case 'Enter':
1516
+ case 'NumpadEnter':
1517
+ case 'Space':
1518
+ if (this.isEnabled()) {
1519
+ this.repeat(event, null, type, direction);
1520
+ event.preventDefault();
1521
+ }
1522
+ break;
1523
+ }
1524
+ },
1525
+ onTimePickerElementKeyUp(event) {
1526
+ switch (event.code) {
1527
+ case 'Enter':
1528
+ case 'NumpadEnter':
1529
+ case 'Space':
1530
+ if (this.isEnabled()) {
1531
+ this.clearTimePickerTimer();
1532
+ this.updateModelTime();
1533
+ event.preventDefault();
1534
+ }
1535
+ break;
1536
+ }
1537
+ },
1485
1538
  repeat(event, interval, type, direction) {
1486
1539
  let i = interval || 500;
1487
1540
 
@@ -2769,6 +2822,14 @@ export default {
2769
2822
  this.responsiveStyleElement.remove();
2770
2823
  this.responsiveStyleElement = null;
2771
2824
  }
2825
+ },
2826
+ dayDataP(date) {
2827
+ return cn({
2828
+ today: date.today,
2829
+ 'other-month': date.otherMonth,
2830
+ selected: this.isSelected(date),
2831
+ disabled: !date.selectable
2832
+ });
2772
2833
  }
2773
2834
  },
2774
2835
  computed: {
@@ -2980,6 +3041,81 @@ export default {
2980
3041
  },
2981
3042
  panelId() {
2982
3043
  return this.$id + '_panel';
3044
+ },
3045
+ containerDataP() {
3046
+ return cn({
3047
+ fluid: this.$fluid
3048
+ });
3049
+ },
3050
+ panelDataP() {
3051
+ return cn({
3052
+ inline: this.inline,
3053
+ ['portal-' + this.appendTo]: 'portal-' + this.appendTo
3054
+ });
3055
+ },
3056
+ inputIconDataP() {
3057
+ return cn({
3058
+ [this.size]: this.size
3059
+ });
3060
+ },
3061
+ timePickerDataP() {
3062
+ return cn({
3063
+ 'time-only': this.timeOnly
3064
+ });
3065
+ },
3066
+ hourIncrementCallbacks() {
3067
+ return {
3068
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 0, 1),
3069
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3070
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3071
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 0, 1),
3072
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3073
+ };
3074
+ },
3075
+ hourDecrementCallbacks() {
3076
+ return {
3077
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 0, -1),
3078
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3079
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3080
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 0, -1),
3081
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3082
+ };
3083
+ },
3084
+ minuteIncrementCallbacks() {
3085
+ return {
3086
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 1, 1),
3087
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3088
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3089
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 1, 1),
3090
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3091
+ };
3092
+ },
3093
+ minuteDecrementCallbacks() {
3094
+ return {
3095
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 1, -1),
3096
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3097
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3098
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 1, -1),
3099
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3100
+ };
3101
+ },
3102
+ secondIncrementCallbacks() {
3103
+ return {
3104
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 2, 1),
3105
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3106
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3107
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 2, 1),
3108
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3109
+ };
3110
+ },
3111
+ secondDecrementCallbacks() {
3112
+ return {
3113
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 2, -1),
3114
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3115
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3116
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 2, -1),
3117
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3118
+ };
2983
3119
  }
2984
3120
  },
2985
3121
  components: {