primevue 4.3.2 → 4.3.4

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 (168) hide show
  1. package/accordionheader/AccordionHeader.vue +1 -1
  2. package/accordionheader/index.d.ts +6 -1
  3. package/accordionheader/index.mjs +1 -1
  4. package/accordionheader/index.mjs.map +1 -1
  5. package/autocomplete/AutoComplete.vue +60 -11
  6. package/autocomplete/index.d.ts +4 -0
  7. package/autocomplete/index.mjs +96 -59
  8. package/autocomplete/index.mjs.map +1 -1
  9. package/cascadeselect/CascadeSelect.vue +4 -1
  10. package/cascadeselect/CascadeSelectSub.vue +1 -1
  11. package/cascadeselect/index.mjs +22 -20
  12. package/cascadeselect/index.mjs.map +1 -1
  13. package/checkbox/Checkbox.vue +1 -1
  14. package/checkbox/index.mjs +2 -1
  15. package/checkbox/index.mjs.map +1 -1
  16. package/chip/BaseChip.vue +1 -1
  17. package/chip/index.d.ts +1 -1
  18. package/chip/index.mjs +1 -1
  19. package/chip/index.mjs.map +1 -1
  20. package/colorpicker/ColorPicker.vue +5 -1
  21. package/colorpicker/index.mjs +5 -1
  22. package/colorpicker/index.mjs.map +1 -1
  23. package/confirmationoptions/index.d.ts +1 -1
  24. package/confirmdialog/index.d.ts +4 -0
  25. package/contextmenu/index.mjs +12 -12
  26. package/contextmenu/index.mjs.map +1 -1
  27. package/datatable/BodyCell.vue +1 -0
  28. package/datatable/ColumnFilter.vue +3 -3
  29. package/datatable/DataTable.vue +103 -44
  30. package/datatable/HeaderCheckbox.vue +2 -2
  31. package/datatable/RowCheckbox.vue +1 -1
  32. package/datatable/TableBody.vue +12 -1
  33. package/datatable/TableFooter.vue +9 -1
  34. package/datatable/TableHeader.vue +9 -2
  35. package/datatable/index.d.ts +37 -29
  36. package/datatable/index.mjs +175 -111
  37. package/datatable/index.mjs.map +1 -1
  38. package/datatable/style/index.mjs +4 -4
  39. package/datatable/style/index.mjs.map +1 -1
  40. package/dataview/DataView.vue +4 -0
  41. package/dataview/index.d.ts +63 -6
  42. package/dataview/index.mjs +6 -2
  43. package/dataview/index.mjs.map +1 -1
  44. package/datepicker/DatePicker.vue +379 -236
  45. package/datepicker/index.d.ts +156 -0
  46. package/datepicker/index.mjs +676 -406
  47. package/datepicker/index.mjs.map +1 -1
  48. package/drawer/Drawer.vue +30 -20
  49. package/drawer/index.d.ts +10 -0
  50. package/drawer/index.mjs +42 -25
  51. package/drawer/index.mjs.map +1 -1
  52. package/fileupload/FileUpload.vue +3 -4
  53. package/fileupload/index.mjs +8 -10
  54. package/fileupload/index.mjs.map +1 -1
  55. package/galleria/Galleria.vue +39 -3
  56. package/galleria/index.mjs +40 -3
  57. package/galleria/index.mjs.map +1 -1
  58. package/image/Image.vue +1 -1
  59. package/image/index.mjs +1 -1
  60. package/image/index.mjs.map +1 -1
  61. package/inplace/Inplace.vue +1 -1
  62. package/inplace/index.mjs +3 -2
  63. package/inplace/index.mjs.map +1 -1
  64. package/inputmask/InputMask.vue +3 -3
  65. package/inputmask/index.d.ts +3 -3
  66. package/inputmask/index.mjs +3 -3
  67. package/inputmask/index.mjs.map +1 -1
  68. package/inputnumber/BaseInputNumber.vue +4 -0
  69. package/inputnumber/InputNumber.vue +3 -10
  70. package/inputnumber/index.mjs +8 -9
  71. package/inputnumber/index.mjs.map +1 -1
  72. package/keyfilter/index.mjs +12 -19
  73. package/keyfilter/index.mjs.map +1 -1
  74. package/listbox/Listbox.vue +10 -2
  75. package/listbox/index.mjs +38 -29
  76. package/listbox/index.mjs.map +1 -1
  77. package/megamenu/index.d.ts +1 -1
  78. package/megamenu/index.mjs +11 -11
  79. package/megamenu/index.mjs.map +1 -1
  80. package/menu/Menu.vue +12 -6
  81. package/menu/Menuitem.vue +14 -4
  82. package/menu/index.d.ts +3 -12
  83. package/menu/index.mjs +40 -20
  84. package/menu/index.mjs.map +1 -1
  85. package/menubar/index.mjs +16 -16
  86. package/menubar/index.mjs.map +1 -1
  87. package/metergroup/MeterGroup.vue +9 -3
  88. package/metergroup/MeterGroupLabel.vue +10 -1
  89. package/metergroup/index.d.ts +1 -1
  90. package/metergroup/index.mjs +32 -7
  91. package/metergroup/index.mjs.map +1 -1
  92. package/multiselect/MultiSelect.vue +40 -6
  93. package/multiselect/index.d.ts +1 -1
  94. package/multiselect/index.mjs +100 -68
  95. package/multiselect/index.mjs.map +1 -1
  96. package/organizationchart/OrganizationChartNode.vue +1 -1
  97. package/organizationchart/index.mjs.map +1 -1
  98. package/organizationchart/style/index.mjs +11 -6
  99. package/organizationchart/style/index.mjs.map +1 -1
  100. package/package.json +6 -6
  101. package/paginator/Paginator.vue +2 -0
  102. package/paginator/index.d.ts +8 -0
  103. package/paginator/index.mjs +3 -1
  104. package/paginator/index.mjs.map +1 -1
  105. package/panel/Panel.vue +2 -2
  106. package/panel/index.mjs +2 -2
  107. package/panel/index.mjs.map +1 -1
  108. package/panelmenu/PanelMenuList.vue +1 -1
  109. package/panelmenu/index.mjs +4 -4
  110. package/panelmenu/index.mjs.map +1 -1
  111. package/password/Password.vue +28 -6
  112. package/password/index.mjs +44 -16
  113. package/password/index.mjs.map +1 -1
  114. package/popover/Popover.vue +1 -1
  115. package/popover/index.mjs +1 -2
  116. package/popover/index.mjs.map +1 -1
  117. package/progressbar/ProgressBar.vue +4 -4
  118. package/progressbar/index.mjs +8 -12
  119. package/progressbar/index.mjs.map +1 -1
  120. package/scrolltop/ScrollTop.vue +2 -2
  121. package/scrolltop/index.mjs +4 -2
  122. package/scrolltop/index.mjs.map +1 -1
  123. package/select/Select.vue +68 -13
  124. package/select/index.mjs +128 -77
  125. package/select/index.mjs.map +1 -1
  126. package/selectbutton/index.d.ts +0 -24
  127. package/splitter/Splitter.vue +10 -2
  128. package/splitter/index.d.ts +1 -1
  129. package/splitter/index.mjs +19 -7
  130. package/splitter/index.mjs.map +1 -1
  131. package/splitter/style/index.mjs +1 -13
  132. package/splitter/style/index.mjs.map +1 -1
  133. package/step/Step.vue +27 -9
  134. package/step/index.mjs +46 -16
  135. package/step/index.mjs.map +1 -1
  136. package/steppanel/StepPanel.vue +11 -5
  137. package/steppanel/index.d.ts +8 -0
  138. package/steppanel/index.mjs +25 -10
  139. package/steppanel/index.mjs.map +1 -1
  140. package/stepper/StepperSeparator.vue +5 -2
  141. package/tab/Tab.vue +4 -4
  142. package/tab/index.mjs +4 -4
  143. package/tab/index.mjs.map +1 -1
  144. package/tablist/TabList.vue +3 -0
  145. package/tablist/index.mjs +1 -0
  146. package/tablist/index.mjs.map +1 -1
  147. package/tabpanel/TabPanel.vue +2 -2
  148. package/tabpanel/index.mjs +2 -2
  149. package/tabpanel/index.mjs.map +1 -1
  150. package/tieredmenu/TieredMenu.vue +1 -1
  151. package/tieredmenu/index.mjs +13 -14
  152. package/tieredmenu/index.mjs.map +1 -1
  153. package/tooltip/index.mjs +47 -30
  154. package/tooltip/index.mjs.map +1 -1
  155. package/tree/Tree.vue +14 -2
  156. package/tree/TreeNode.vue +2 -2
  157. package/tree/index.mjs +28 -10
  158. package/tree/index.mjs.map +1 -1
  159. package/treeselect/TreeSelect.vue +4 -1
  160. package/treeselect/index.mjs +4 -2
  161. package/treeselect/index.mjs.map +1 -1
  162. package/umd/primevue.min.js +12213 -1
  163. package/virtualscroller/VirtualScroller.vue +13 -2
  164. package/virtualscroller/index.mjs +28 -18
  165. package/virtualscroller/index.mjs.map +1 -1
  166. package/virtualscroller/style/index.mjs +1 -1
  167. package/virtualscroller/style/index.mjs.map +1 -1
  168. 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,7 +31,10 @@
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')"
37
+ :formControl="{ novalidate: true }"
35
38
  />
36
39
  <slot v-if="showIcon && iconDisplay === 'button' && !inline" name="dropdownbutton" :toggleCallback="onButtonClick">
37
40
  <button
@@ -51,7 +54,7 @@
51
54
  </button>
52
55
  </slot>
53
56
  <template v-else-if="showIcon && iconDisplay === 'input' && !inline">
54
- <span v-if="$slots.inputicon || showIcon" :class="cx('inputIconContainer')" v-bind="ptm('inputIconContainer')">
57
+ <span v-if="$slots.inputicon || showIcon" :class="cx('inputIconContainer')" :data-p="inputIconDataP" v-bind="ptm('inputIconContainer')">
55
58
  <slot name="inputicon" :class="cx('inputIcon')" :clickCallback="onButtonClick">
56
59
  <component :is="icon ? 'i' : 'CalendarIcon'" :class="[icon, cx('inputIcon')]" @click="onButtonClick" v-bind="ptm('inputicon')" />
57
60
  </slot>
@@ -71,6 +74,7 @@
71
74
  @click="onOverlayClick"
72
75
  @keydown="onOverlayKeyDown"
73
76
  @mouseup="onOverlayMouseUp"
77
+ :data-p="panelDataP"
74
78
  v-bind="ptm('panel')"
75
79
  >
76
80
  <template v-if="!timeOnly">
@@ -78,25 +82,27 @@
78
82
  <div v-for="(month, groupIndex) of months" :key="month.month + month.year" :class="cx('calendar')" v-bind="ptm('calendar')">
79
83
  <div :class="cx('header')" v-bind="ptm('header')">
80
84
  <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>
85
+ <slot name="prevbutton" :actionCallback="(event) => onPrevButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
86
+ <Button
87
+ v-show="groupIndex === 0"
88
+ :ref="previousButtonRef"
89
+ :class="cx('pcPrevButton')"
90
+ :disabled="disabled"
91
+ :aria-label="currentView === 'year' ? $primevue.config.locale.prevDecade : currentView === 'month' ? $primevue.config.locale.prevYear : $primevue.config.locale.prevMonth"
92
+ :unstyled="unstyled"
93
+ @click="onPrevButtonClick"
94
+ @keydown="onContainerButtonKeydown"
95
+ v-bind="navigatorButtonProps"
96
+ :pt="ptm('pcPrevButton')"
97
+ data-pc-group-section="navigator"
98
+ >
99
+ <template #icon="slotProps">
100
+ <slot name="previcon">
101
+ <component :is="prevIcon ? 'span' : 'ChevronLeftIcon'" :class="[prevIcon, slotProps.class]" v-bind="ptm('pcPrevButton')['icon']" />
102
+ </slot>
103
+ </template>
104
+ </Button>
105
+ </slot>
100
106
  <div :class="cx('title')" v-bind="ptm('title')">
101
107
  <template v-if="$primevue.config.locale.showMonthAfterYear">
102
108
  <button
@@ -158,25 +164,27 @@
158
164
  <slot name="decade" :years="yearPickerValues"> {{ yearPickerValues[0].value }} - {{ yearPickerValues[yearPickerValues.length - 1].value }} </slot>
159
165
  </span>
160
166
  </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>
167
+ <slot name="nextbutton" :actionCallback="(event) => onNextButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
168
+ <Button
169
+ v-show="numberOfMonths === 1 ? true : groupIndex === numberOfMonths - 1"
170
+ :ref="nextButtonRef"
171
+ :class="cx('pcNextButton')"
172
+ :disabled="disabled"
173
+ :aria-label="currentView === 'year' ? $primevue.config.locale.nextDecade : currentView === 'month' ? $primevue.config.locale.nextYear : $primevue.config.locale.nextMonth"
174
+ :unstyled="unstyled"
175
+ @click="onNextButtonClick"
176
+ @keydown="onContainerButtonKeydown"
177
+ v-bind="navigatorButtonProps"
178
+ :pt="ptm('pcNextButton')"
179
+ data-pc-group-section="navigator"
180
+ >
181
+ <template #icon="slotProps">
182
+ <slot name="nexticon">
183
+ <component :is="nextIcon ? 'span' : 'ChevronRightIcon'" :class="[nextIcon, slotProps.class]" v-bind="ptm('pcNextButton')['icon']" />
184
+ </slot>
185
+ </template>
186
+ </Button>
187
+ </slot>
180
188
  </div>
181
189
  <table v-if="currentView === 'date'" :class="cx('dayView')" role="grid" v-bind="ptm('dayView')">
182
190
  <thead v-bind="ptm('tableHeader')">
@@ -243,8 +251,7 @@
243
251
  }
244
252
  })
245
253
  "
246
- :data-p-disabled="!date.selectable"
247
- :data-p-selected="isSelected(date)"
254
+ :data-p="dayDataP(date)"
248
255
  data-pc-group-section="tablebodycelllabel"
249
256
  >
250
257
  <slot name="date" :date="date">{{ date.day }}</slot>
@@ -312,219 +319,239 @@
312
319
  </span>
313
320
  </div>
314
321
  </template>
315
- <div v-if="(showTime || timeOnly) && currentView === 'date'" :class="cx('timePicker')" v-bind="ptm('timePicker')">
322
+ <div v-if="(showTime || timeOnly) && currentView === 'date'" :class="cx('timePicker')" :data-p="timePickerDataP" v-bind="ptm('timePicker')">
316
323
  <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>
324
+ <slot name="hourincrementbutton" :callbacks="hourIncrementCallbacks">
325
+ <Button
326
+ :class="cx('pcIncrementButton')"
327
+ :aria-label="$primevue.config.locale.nextHour"
328
+ :unstyled="unstyled"
329
+ @mousedown="onTimePickerElementMouseDown($event, 0, 1)"
330
+ @mouseup="onTimePickerElementMouseUp($event)"
331
+ @keydown="onContainerButtonKeydown"
332
+ @mouseleave="onTimePickerElementMouseLeave()"
333
+ @keydown.enter="onTimePickerElementMouseDown($event, 0, 1)"
334
+ @keydown.space="onTimePickerElementMouseDown($event, 0, 1)"
335
+ @keyup.enter="onTimePickerElementMouseUp($event)"
336
+ @keyup.space="onTimePickerElementMouseUp($event)"
337
+ v-bind="timepickerButtonProps"
338
+ :pt="ptm('pcIncrementButton')"
339
+ data-pc-group-section="timepickerbutton"
340
+ >
341
+ <template #icon="slotProps">
342
+ <slot name="incrementicon">
343
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
344
+ </slot>
345
+ </template>
346
+ </Button>
347
+ </slot>
339
348
  <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>
349
+ <slot name="hourdecrementbutton" :callbacks="hourDecrementCallbacks">
350
+ <Button
351
+ :class="cx('pcDecrementButton')"
352
+ :aria-label="$primevue.config.locale.prevHour"
353
+ :unstyled="unstyled"
354
+ @mousedown="onTimePickerElementMouseDown($event, 0, -1)"
355
+ @mouseup="onTimePickerElementMouseUp($event)"
356
+ @keydown="onContainerButtonKeydown"
357
+ @mouseleave="onTimePickerElementMouseLeave()"
358
+ @keydown.enter="onTimePickerElementMouseDown($event, 0, -1)"
359
+ @keydown.space="onTimePickerElementMouseDown($event, 0, -1)"
360
+ @keyup.enter="onTimePickerElementMouseUp($event)"
361
+ @keyup.space="onTimePickerElementMouseUp($event)"
362
+ v-bind="timepickerButtonProps"
363
+ :pt="ptm('pcDecrementButton')"
364
+ data-pc-group-section="timepickerbutton"
365
+ >
366
+ <template #icon="slotProps">
367
+ <slot name="decrementicon">
368
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
369
+ </slot>
370
+ </template>
371
+ </Button>
372
+ </slot>
362
373
  </div>
363
374
  <div v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
364
375
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
365
376
  </div>
366
377
  <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>
378
+ <slot name="minuteincrementbutton" :callbacks="minuteIncrementCallbacks">
379
+ <Button
380
+ :class="cx('pcIncrementButton')"
381
+ :aria-label="$primevue.config.locale.nextMinute"
382
+ :disabled="disabled"
383
+ :unstyled="unstyled"
384
+ @mousedown="onTimePickerElementMouseDown($event, 1, 1)"
385
+ @mouseup="onTimePickerElementMouseUp($event)"
386
+ @keydown="onContainerButtonKeydown"
387
+ @mouseleave="onTimePickerElementMouseLeave()"
388
+ @keydown.enter="onTimePickerElementMouseDown($event, 1, 1)"
389
+ @keydown.space="onTimePickerElementMouseDown($event, 1, 1)"
390
+ @keyup.enter="onTimePickerElementMouseUp($event)"
391
+ @keyup.space="onTimePickerElementMouseUp($event)"
392
+ v-bind="timepickerButtonProps"
393
+ :pt="ptm('pcIncrementButton')"
394
+ data-pc-group-section="timepickerbutton"
395
+ >
396
+ <template #icon="slotProps">
397
+ <slot name="incrementicon">
398
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
399
+ </slot>
400
+ </template>
401
+ </Button>
402
+ </slot>
390
403
  <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>
404
+ <slot name="minutedecrementbutton" :callbacks="minuteDecrementCallbacks">
405
+ <Button
406
+ :class="cx('pcDecrementButton')"
407
+ :aria-label="$primevue.config.locale.prevMinute"
408
+ :disabled="disabled"
409
+ :unstyled="unstyled"
410
+ @mousedown="onTimePickerElementMouseDown($event, 1, -1)"
411
+ @mouseup="onTimePickerElementMouseUp($event)"
412
+ @keydown="onContainerButtonKeydown"
413
+ @mouseleave="onTimePickerElementMouseLeave()"
414
+ @keydown.enter="onTimePickerElementMouseDown($event, 1, -1)"
415
+ @keydown.space="onTimePickerElementMouseDown($event, 1, -1)"
416
+ @keyup.enter="onTimePickerElementMouseUp($event)"
417
+ @keyup.space="onTimePickerElementMouseUp($event)"
418
+ v-bind="timepickerButtonProps"
419
+ :pt="ptm('pcDecrementButton')"
420
+ data-pc-group-section="timepickerbutton"
421
+ >
422
+ <template #icon="slotProps">
423
+ <slot name="decrementicon">
424
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
425
+ </slot>
426
+ </template>
427
+ </Button>
428
+ </slot>
414
429
  </div>
415
430
  <div v-if="showSeconds" :class="cx('separatorContainer')" v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
416
431
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
417
432
  </div>
418
433
  <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>
434
+ <slot name="secondincrementbutton" :callbacks="secondIncrementCallbacks">
435
+ <Button
436
+ :class="cx('pcIncrementButton')"
437
+ :aria-label="$primevue.config.locale.nextSecond"
438
+ :disabled="disabled"
439
+ :unstyled="unstyled"
440
+ @mousedown="onTimePickerElementMouseDown($event, 2, 1)"
441
+ @mouseup="onTimePickerElementMouseUp($event)"
442
+ @keydown="onContainerButtonKeydown"
443
+ @mouseleave="onTimePickerElementMouseLeave()"
444
+ @keydown.enter="onTimePickerElementMouseDown($event, 2, 1)"
445
+ @keydown.space="onTimePickerElementMouseDown($event, 2, 1)"
446
+ @keyup.enter="onTimePickerElementMouseUp($event)"
447
+ @keyup.space="onTimePickerElementMouseUp($event)"
448
+ v-bind="timepickerButtonProps"
449
+ :pt="ptm('pcIncrementButton')"
450
+ data-pc-group-section="timepickerbutton"
451
+ >
452
+ <template #icon="slotProps">
453
+ <slot name="incrementicon">
454
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[incrementIcon, slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
455
+ </slot>
456
+ </template>
457
+ </Button>
458
+ </slot>
442
459
  <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>
460
+ <slot name="seconddecrementbutton" :callbacks="secondDecrementCallbacks">
461
+ <Button
462
+ :class="cx('pcDecrementButton')"
463
+ :aria-label="$primevue.config.locale.prevSecond"
464
+ :disabled="disabled"
465
+ :unstyled="unstyled"
466
+ @mousedown="onTimePickerElementMouseDown($event, 2, -1)"
467
+ @mouseup="onTimePickerElementMouseUp($event)"
468
+ @keydown="onContainerButtonKeydown"
469
+ @mouseleave="onTimePickerElementMouseLeave()"
470
+ @keydown.enter="onTimePickerElementMouseDown($event, 2, -1)"
471
+ @keydown.space="onTimePickerElementMouseDown($event, 2, -1)"
472
+ @keyup.enter="onTimePickerElementMouseUp($event)"
473
+ @keyup.space="onTimePickerElementMouseUp($event)"
474
+ v-bind="timepickerButtonProps"
475
+ :pt="ptm('pcDecrementButton')"
476
+ data-pc-group-section="timepickerbutton"
477
+ >
478
+ <template #icon="slotProps">
479
+ <slot name="decrementicon">
480
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[decrementIcon, slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
481
+ </slot>
482
+ </template>
483
+ </Button>
484
+ </slot>
466
485
  </div>
467
486
  <div v-if="hourFormat == '12'" :class="cx('separatorContainer')" v-bind="ptm('separatorContainer')" data-pc-group-section="timepickerContainer">
468
487
  <span v-bind="ptm('separator')" data-pc-group-section="timepickerlabel">{{ timeSeparator }}</span>
469
488
  </div>
470
489
  <div v-if="hourFormat == '12'" :class="cx('ampmPicker')" v-bind="ptm('ampmPicker')">
490
+ <slot name="ampmincrementbutton" :toggleCallback="(event) => toggleAMPM(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
491
+ <Button
492
+ :class="cx('pcIncrementButton')"
493
+ :aria-label="$primevue.config.locale.am"
494
+ :disabled="disabled"
495
+ :unstyled="unstyled"
496
+ @click="toggleAMPM($event)"
497
+ @keydown="onContainerButtonKeydown"
498
+ v-bind="timepickerButtonProps"
499
+ :pt="ptm('pcIncrementButton')"
500
+ data-pc-group-section="timepickerbutton"
501
+ >
502
+ <template #icon="slotProps">
503
+ <slot name="incrementicon" :class="cx('incrementIcon')">
504
+ <component :is="incrementIcon ? 'span' : 'ChevronUpIcon'" :class="[cx('incrementIcon'), slotProps.class]" v-bind="ptm('pcIncrementButton')['icon']" data-pc-group-section="timepickerlabel" />
505
+ </slot>
506
+ </template>
507
+ </Button>
508
+ </slot>
509
+ <span v-bind="ptm('ampm')" data-pc-group-section="timepickerlabel">{{ pm ? $primevue.config.locale.pm : $primevue.config.locale.am }}</span>
510
+ <slot name="ampmdecrementbutton" :toggleCallback="(event) => toggleAMPM(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
511
+ <Button
512
+ :class="cx('pcDecrementButton')"
513
+ :aria-label="$primevue.config.locale.pm"
514
+ :disabled="disabled"
515
+ @click="toggleAMPM($event)"
516
+ @keydown="onContainerButtonKeydown"
517
+ v-bind="timepickerButtonProps"
518
+ :pt="ptm('pcDecrementButton')"
519
+ data-pc-group-section="timepickerbutton"
520
+ >
521
+ <template #icon="slotProps">
522
+ <slot name="decrementicon" :class="cx('decrementIcon')">
523
+ <component :is="decrementIcon ? 'span' : 'ChevronDownIcon'" :class="[cx('decrementIcon'), slotProps.class]" v-bind="ptm('pcDecrementButton')['icon']" data-pc-group-section="timepickerlabel" />
524
+ </slot>
525
+ </template>
526
+ </Button>
527
+ </slot>
528
+ </div>
529
+ </div>
530
+ <div v-if="showButtonBar" :class="cx('buttonbar')" v-bind="ptm('buttonbar')">
531
+ <slot name="todaybutton" :actionCallback="(event) => onTodayButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
471
532
  <Button
472
- :class="cx('pcIncrementButton')"
473
- :aria-label="$primevue.config.locale.am"
474
- :disabled="disabled"
533
+ :label="todayLabel"
534
+ @click="onTodayButtonClick($event)"
535
+ :class="cx('pcTodayButton')"
475
536
  :unstyled="unstyled"
476
- @click="toggleAMPM($event)"
477
537
  @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>
538
+ v-bind="todayButtonProps"
539
+ :pt="ptm('pcTodayButton')"
540
+ data-pc-group-section="button"
541
+ />
542
+ </slot>
543
+ <slot name="clearbutton" :actionCallback="(event) => onClearButtonClick(event)" :keydownCallback="(event) => onContainerButtonKeydown(event)">
489
544
  <Button
490
- :class="cx('pcDecrementButton')"
491
- :aria-label="$primevue.config.locale.pm"
492
- :disabled="disabled"
493
- @click="toggleAMPM($event)"
545
+ :label="clearLabel"
546
+ @click="onClearButtonClick($event)"
547
+ :class="cx('pcClearButton')"
548
+ :unstyled="unstyled"
494
549
  @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
- />
550
+ v-bind="clearButtonProps"
551
+ :pt="ptm('pcClearButton')"
552
+ data-pc-group-section="button"
553
+ />
554
+ </slot>
528
555
  </div>
529
556
  <slot name="footer"></slot>
530
557
  </div>
@@ -534,6 +561,7 @@
534
561
  </template>
535
562
 
536
563
  <script>
564
+ import { cn } from '@primeuix/utils';
537
565
  import { absolutePosition, addStyle, find, findSingle, getAttribute, getFocusableElements, getIndex, getOuterWidth, isTouchDevice, relativePosition, setAttribute } from '@primeuix/utils/dom';
538
566
  import { localeComparator } from '@primeuix/utils/object';
539
567
  import { ZIndex } from '@primeuix/utils/zindex';
@@ -874,7 +902,7 @@ export default {
874
902
  return validMin && validMax && validDate && validDay;
875
903
  },
876
904
  onOverlayEnter(el) {
877
- const styles = !this.inline ? { position: 'absolute', top: '0', left: '0' } : undefined;
905
+ const styles = !this.inline ? { position: 'absolute', top: '0' } : undefined;
878
906
 
879
907
  addStyle(el, styles);
880
908
 
@@ -882,6 +910,9 @@ export default {
882
910
  ZIndex.set('overlay', el, this.baseZIndex || this.$primevue.config.zIndex.overlay);
883
911
  }
884
912
 
913
+ // Issue: #7508
914
+ this.$attrSelector && el.setAttribute(this.$attrSelector, '');
915
+
885
916
  this.alignOverlay();
886
917
  this.$emit('show');
887
918
  },
@@ -1096,7 +1127,8 @@ export default {
1096
1127
  }
1097
1128
  },
1098
1129
  isOutsideClicked(event) {
1099
- return !(this.$el.isSameNode(event.target) || this.isNavIconClicked(event) || this.$el.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
1130
+ const composedPath = event.composedPath();
1131
+ return !(this.$el.isSameNode(event.target) || this.isNavIconClicked(event) || composedPath.includes(this.$el) || composedPath.includes(this.overlay));
1100
1132
  },
1101
1133
  isNavIconClicked(event) {
1102
1134
  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)));
@@ -1461,7 +1493,7 @@ export default {
1461
1493
  event.preventDefault();
1462
1494
  },
1463
1495
  onClearButtonClick(event) {
1464
- this.updateModel(null);
1496
+ this.updateModel(this.$formDefaultValue || null);
1465
1497
  this.overlayVisible = false;
1466
1498
  this.$emit('clear-click', event);
1467
1499
  event.preventDefault();
@@ -1482,6 +1514,31 @@ export default {
1482
1514
  onTimePickerElementMouseLeave() {
1483
1515
  this.clearTimePickerTimer();
1484
1516
  },
1517
+ onTimePickerElementKeyDown(event, type, direction) {
1518
+ switch (event.code) {
1519
+ case 'Enter':
1520
+ case 'NumpadEnter':
1521
+ case 'Space':
1522
+ if (this.isEnabled()) {
1523
+ this.repeat(event, null, type, direction);
1524
+ event.preventDefault();
1525
+ }
1526
+ break;
1527
+ }
1528
+ },
1529
+ onTimePickerElementKeyUp(event) {
1530
+ switch (event.code) {
1531
+ case 'Enter':
1532
+ case 'NumpadEnter':
1533
+ case 'Space':
1534
+ if (this.isEnabled()) {
1535
+ this.clearTimePickerTimer();
1536
+ this.updateModelTime();
1537
+ event.preventDefault();
1538
+ }
1539
+ break;
1540
+ }
1541
+ },
1485
1542
  repeat(event, interval, type, direction) {
1486
1543
  let i = interval || 500;
1487
1544
 
@@ -2478,8 +2535,11 @@ export default {
2478
2535
  if (this.navigationState.button) {
2479
2536
  this.initFocusableCell();
2480
2537
 
2481
- if (this.navigationState.backward) this.previousButton.focus();
2482
- else this.nextButton.focus();
2538
+ if (this.navigationState.backward) {
2539
+ this.previousButton && this.previousButton.focus();
2540
+ } else {
2541
+ this.nextButton && this.nextButton.focus();
2542
+ }
2483
2543
  } else {
2484
2544
  if (this.navigationState.backward) {
2485
2545
  let cells;
@@ -2769,6 +2829,14 @@ export default {
2769
2829
  this.responsiveStyleElement.remove();
2770
2830
  this.responsiveStyleElement = null;
2771
2831
  }
2832
+ },
2833
+ dayDataP(date) {
2834
+ return cn({
2835
+ today: date.today,
2836
+ 'other-month': date.otherMonth,
2837
+ selected: this.isSelected(date),
2838
+ disabled: !date.selectable
2839
+ });
2772
2840
  }
2773
2841
  },
2774
2842
  computed: {
@@ -2980,6 +3048,81 @@ export default {
2980
3048
  },
2981
3049
  panelId() {
2982
3050
  return this.$id + '_panel';
3051
+ },
3052
+ containerDataP() {
3053
+ return cn({
3054
+ fluid: this.$fluid
3055
+ });
3056
+ },
3057
+ panelDataP() {
3058
+ return cn({
3059
+ inline: this.inline,
3060
+ ['portal-' + this.appendTo]: 'portal-' + this.appendTo
3061
+ });
3062
+ },
3063
+ inputIconDataP() {
3064
+ return cn({
3065
+ [this.size]: this.size
3066
+ });
3067
+ },
3068
+ timePickerDataP() {
3069
+ return cn({
3070
+ 'time-only': this.timeOnly
3071
+ });
3072
+ },
3073
+ hourIncrementCallbacks() {
3074
+ return {
3075
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 0, 1),
3076
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3077
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3078
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 0, 1),
3079
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3080
+ };
3081
+ },
3082
+ hourDecrementCallbacks() {
3083
+ return {
3084
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 0, -1),
3085
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3086
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3087
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 0, -1),
3088
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3089
+ };
3090
+ },
3091
+ minuteIncrementCallbacks() {
3092
+ return {
3093
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 1, 1),
3094
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3095
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3096
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 1, 1),
3097
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3098
+ };
3099
+ },
3100
+ minuteDecrementCallbacks() {
3101
+ return {
3102
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 1, -1),
3103
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3104
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3105
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 1, -1),
3106
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3107
+ };
3108
+ },
3109
+ secondIncrementCallbacks() {
3110
+ return {
3111
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 2, 1),
3112
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3113
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3114
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 2, 1),
3115
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3116
+ };
3117
+ },
3118
+ secondDecrementCallbacks() {
3119
+ return {
3120
+ mousedown: (event) => this.onTimePickerElementMouseDown(event, 2, -1),
3121
+ mouseup: (event) => this.onTimePickerElementMouseUp(event),
3122
+ mouseleave: () => this.onTimePickerElementMouseLeave(),
3123
+ keydown: (event) => this.onTimePickerElementKeyDown(event, 2, -1),
3124
+ keyup: (event) => this.onTimePickerElementKeyUp(event)
3125
+ };
2983
3126
  }
2984
3127
  },
2985
3128
  components: {