primevue 3.11.1 → 3.12.0

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 (141) hide show
  1. package/README.md +256 -2
  2. package/calendar/Calendar.d.ts +15 -0
  3. package/calendar/Calendar.vue +15 -10
  4. package/calendar/calendar.cjs.js +15 -10
  5. package/calendar/calendar.cjs.min.js +1 -1
  6. package/calendar/calendar.esm.js +15 -10
  7. package/calendar/calendar.esm.min.js +1 -1
  8. package/calendar/calendar.js +15 -10
  9. package/calendar/calendar.min.js +1 -1
  10. package/column/Column.d.ts +4 -0
  11. package/column/Column.vue +6 -2
  12. package/column/column.cjs.js +6 -2
  13. package/column/column.cjs.min.js +1 -1
  14. package/column/column.esm.js +6 -2
  15. package/column/column.esm.min.js +1 -1
  16. package/column/column.js +6 -2
  17. package/column/column.min.js +1 -1
  18. package/confirmationoptions/ConfirmationOptions.d.ts +4 -0
  19. package/core/core.js +37 -22
  20. package/core/core.min.js +2 -2
  21. package/datatable/DataTable.vue +1 -1
  22. package/datatable/datatable.cjs.js +1 -1
  23. package/datatable/datatable.cjs.min.js +1 -1
  24. package/datatable/datatable.esm.js +1 -1
  25. package/datatable/datatable.esm.min.js +1 -1
  26. package/datatable/datatable.js +1 -1
  27. package/datatable/datatable.min.js +1 -1
  28. package/dropdown/Dropdown.vue +13 -9
  29. package/dropdown/dropdown.cjs.js +14 -9
  30. package/dropdown/dropdown.cjs.min.js +1 -1
  31. package/dropdown/dropdown.esm.js +14 -9
  32. package/dropdown/dropdown.esm.min.js +1 -1
  33. package/dropdown/dropdown.js +14 -9
  34. package/dropdown/dropdown.min.js +1 -1
  35. package/knob/Knob.vue +1 -1
  36. package/knob/knob.cjs.js +1 -1
  37. package/knob/knob.cjs.min.js +1 -1
  38. package/knob/knob.esm.js +1 -1
  39. package/knob/knob.esm.min.js +1 -1
  40. package/knob/knob.js +1 -1
  41. package/knob/knob.min.js +1 -1
  42. package/multiselect/MultiSelect.vue +13 -9
  43. package/multiselect/multiselect.cjs.js +14 -8
  44. package/multiselect/multiselect.cjs.min.js +1 -1
  45. package/multiselect/multiselect.esm.js +14 -8
  46. package/multiselect/multiselect.esm.min.js +1 -1
  47. package/multiselect/multiselect.js +14 -8
  48. package/multiselect/multiselect.min.js +1 -1
  49. package/orderlist/OrderList.d.ts +4 -0
  50. package/orderlist/OrderList.vue +10 -1
  51. package/orderlist/orderlist.cjs.js +17 -9
  52. package/orderlist/orderlist.cjs.min.js +1 -1
  53. package/orderlist/orderlist.esm.js +17 -9
  54. package/orderlist/orderlist.esm.min.js +1 -1
  55. package/orderlist/orderlist.js +17 -9
  56. package/orderlist/orderlist.min.js +1 -1
  57. package/organizationchart/OrganizationChart.d.ts +1 -1
  58. package/package.json +1 -1
  59. package/picklist/PickList.d.ts +5 -1
  60. package/picklist/PickList.vue +10 -1
  61. package/picklist/picklist.cjs.js +25 -17
  62. package/picklist/picklist.cjs.min.js +1 -1
  63. package/picklist/picklist.esm.js +25 -17
  64. package/picklist/picklist.esm.min.js +1 -1
  65. package/picklist/picklist.js +25 -17
  66. package/picklist/picklist.min.js +1 -1
  67. package/resources/themes/arya-blue/theme.css +12 -0
  68. package/resources/themes/arya-green/theme.css +12 -0
  69. package/resources/themes/arya-orange/theme.css +12 -0
  70. package/resources/themes/arya-purple/theme.css +12 -0
  71. package/resources/themes/bootstrap4-dark-blue/theme.css +16 -0
  72. package/resources/themes/bootstrap4-dark-purple/theme.css +16 -0
  73. package/resources/themes/bootstrap4-light-blue/theme.css +16 -0
  74. package/resources/themes/bootstrap4-light-purple/theme.css +16 -0
  75. package/resources/themes/fluent-light/theme.css +12 -0
  76. package/resources/themes/lara-dark-blue/theme.css +12 -9
  77. package/resources/themes/lara-dark-indigo/theme.css +12 -9
  78. package/resources/themes/lara-dark-purple/theme.css +12 -9
  79. package/resources/themes/lara-dark-teal/theme.css +12 -9
  80. package/resources/themes/lara-light-blue/theme.css +12 -9
  81. package/resources/themes/lara-light-indigo/theme.css +12 -9
  82. package/resources/themes/lara-light-purple/theme.css +12 -9
  83. package/resources/themes/lara-light-teal/theme.css +12 -9
  84. package/resources/themes/luna-amber/theme.css +12 -0
  85. package/resources/themes/luna-blue/theme.css +12 -0
  86. package/resources/themes/luna-green/theme.css +12 -0
  87. package/resources/themes/luna-pink/theme.css +12 -0
  88. package/resources/themes/md-dark-deeppurple/theme.css +12 -0
  89. package/resources/themes/md-dark-indigo/theme.css +12 -0
  90. package/resources/themes/md-light-deeppurple/theme.css +12 -0
  91. package/resources/themes/md-light-indigo/theme.css +12 -0
  92. package/resources/themes/mdc-dark-deeppurple/theme.css +12 -0
  93. package/resources/themes/mdc-dark-indigo/theme.css +12 -0
  94. package/resources/themes/mdc-light-deeppurple/theme.css +12 -0
  95. package/resources/themes/mdc-light-indigo/theme.css +12 -0
  96. package/resources/themes/nova/theme.css +12 -0
  97. package/resources/themes/nova-accent/theme.css +12 -0
  98. package/resources/themes/nova-alt/theme.css +12 -0
  99. package/resources/themes/nova-vue/theme.css +12 -0
  100. package/resources/themes/rhea/theme.css +12 -0
  101. package/resources/themes/saga-blue/theme.css +12 -0
  102. package/resources/themes/saga-green/theme.css +12 -0
  103. package/resources/themes/saga-orange/theme.css +12 -0
  104. package/resources/themes/saga-purple/theme.css +12 -0
  105. package/resources/themes/tailwind-light/theme.css +12 -0
  106. package/resources/themes/vela-blue/theme.css +12 -0
  107. package/resources/themes/vela-green/theme.css +12 -0
  108. package/resources/themes/vela-orange/theme.css +12 -0
  109. package/resources/themes/vela-purple/theme.css +12 -0
  110. package/splitter/Splitter.vue +1 -1
  111. package/splitter/splitter.cjs.js +1 -1
  112. package/splitter/splitter.cjs.min.js +1 -1
  113. package/splitter/splitter.esm.js +1 -1
  114. package/splitter/splitter.esm.min.js +1 -1
  115. package/splitter/splitter.js +1 -1
  116. package/splitter/splitter.min.js +1 -1
  117. package/tabview/TabView.vue +1 -1
  118. package/tabview/tabview.cjs.js +1 -1
  119. package/tabview/tabview.cjs.min.js +1 -1
  120. package/tabview/tabview.esm.js +1 -1
  121. package/tabview/tabview.esm.min.js +1 -1
  122. package/tabview/tabview.js +1 -1
  123. package/tabview/tabview.min.js +1 -1
  124. package/treetable/FooterCell.vue +1 -1
  125. package/treetable/TreeTable.d.ts +1 -1
  126. package/treetable/treetable.cjs.js +1 -1
  127. package/treetable/treetable.cjs.min.js +1 -1
  128. package/treetable/treetable.esm.js +1 -1
  129. package/treetable/treetable.esm.min.js +1 -1
  130. package/treetable/treetable.js +1 -1
  131. package/treetable/treetable.min.js +1 -1
  132. package/vetur-attributes.json +12 -0
  133. package/vetur-tags.json +5 -2
  134. package/virtualscroller/VirtualScroller.vue +23 -13
  135. package/virtualscroller/virtualscroller.cjs.js +23 -13
  136. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  137. package/virtualscroller/virtualscroller.esm.js +23 -13
  138. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  139. package/virtualscroller/virtualscroller.js +23 -13
  140. package/virtualscroller/virtualscroller.min.js +1 -1
  141. package/web-types.json +76 -7
package/README.md CHANGED
@@ -5,6 +5,260 @@
5
5
 
6
6
  [![PrimeVue Hero](https://user-images.githubusercontent.com/686247/138925407-2a7e916d-c674-4fb5-b721-1dd41a8eeebc.jpg)](https://www.primefaces.org/primevue)
7
7
 
8
- ### Website
8
+ # PrimeVue
9
9
 
10
- Visit the [PrimeVue Website](https://www.primefaces.org/primevue/) for general information, demos and documentation.
10
+ PrimeVue is a rich set of open source UI Components for Vue. See [PrimeVue homepage](https://www.primefaces.org/primevue/) for live showcase and documentation.
11
+
12
+ ## Download
13
+
14
+ PrimeVue is available at npm, if you have an existing application run the following command to download it to your project.
15
+
16
+ ````
17
+ npm install primevue@^3 --save
18
+ npm install primeicons --save
19
+ ````
20
+
21
+ or
22
+
23
+ ```
24
+ yarn add primevue
25
+ yarn add primeicons
26
+ ```
27
+
28
+ Next step is setting up PrimeVue configuration.
29
+
30
+ ```javascript
31
+ import {createApp} from 'vue';
32
+ import App from './App.vue';
33
+ import PrimeVue from 'primevue/config';
34
+ const app = createApp(App);
35
+
36
+ app.use(PrimeVue);
37
+ ```
38
+
39
+ ## Import
40
+
41
+ ### Module
42
+
43
+ ```javascript
44
+ import {createApp} from 'vue';
45
+ import App from './App.vue';
46
+ import PrimeVue from 'primevue/config';
47
+ import Dialog from 'primevue/dialog';
48
+ const app = createApp(App);
49
+
50
+ app.use(PrimeVue);
51
+
52
+ app.component('Dialog', Dialog);
53
+ ```
54
+
55
+ Finally you'll be able to utilize the component in your application. See the Styles section to apply styling.
56
+
57
+ ```
58
+ <Dialog></Dialog>
59
+ ```
60
+
61
+ ### CDN
62
+
63
+ ```javascript
64
+ <script src="https://unpkg.com/primevue@^3/core/core.min.js"></script>/script>
65
+ <script src="https://unpkg.com/primevue@^3/multiselect/multiselect.min.js"></script>
66
+ ```
67
+
68
+ ## Single File Components
69
+
70
+ SFC files are available in the npm distribution and if you'd like to use SFCs directly, add ***/sfc*** as a suffix when referencing an import path. This will instruct your bundler to process the *.vue files in your local build instead of using the compiled output. One use case for this approach is optimizing for SSR by removing whitespaces.
71
+
72
+ ```javascript
73
+ import Dialog from 'primevue/dialog/sfc';
74
+ ```
75
+
76
+ ## Script Tag
77
+
78
+ Other alternative is utilizing the components directly within the browser with the ***iife*** build. Note that PrimeVue does not provide a ***umd*** build.
79
+
80
+ ```javascript
81
+ <html>
82
+ <head>
83
+ <meta charset="utf-8">
84
+ <title>PrimeVue Demo</title>
85
+ <link href="https://unpkg.com/primevue/resources/themes/lara-light-indigo/theme.css" rel="stylesheet">
86
+ <link href="https://unpkg.com/primevue/resources/primevue.min.css" rel="stylesheet">
87
+ <link href="https://unpkg.com/primeicons/primeicons.css" rel="stylesheet">
88
+
89
+ <script src="https://unpkg.com/vue@next"></script>
90
+ <script src="https://unpkg.com/primevue^3/core/core.min.js"></script>
91
+ <script src="https://unpkg.com/primevue^3/slider/slider.min.js"></script>
92
+ </head>
93
+
94
+ <body>
95
+ <div id="app">
96
+ <p-slider v-model="val"></p-slider>
97
+ <h6>{{val}}</h6>
98
+ </div>
99
+
100
+ <script>
101
+ const {createApp, ref} = Vue;
102
+
103
+ const App = {
104
+ setup() {
105
+ const val = ref(null);
106
+
107
+ return {
108
+ val
109
+ };
110
+ },
111
+ components: {
112
+ 'p-slider': primevue.slider
113
+ }
114
+ };
115
+
116
+ createApp(App).use(primevue.config.default).mount("#app");
117
+ </script>
118
+ </body>
119
+ </html>
120
+ ```
121
+
122
+ ## Styles
123
+
124
+ The css dependencies are as follows, note that you may change the theme with another one of your choice.
125
+
126
+ ```
127
+ primevue/resources/themes/saga-blue/theme.css //theme
128
+ primevue/resources/primevue.min.css //core css
129
+ primeicons/primeicons.css //icons
130
+ ```
131
+
132
+ If you are using a bundler such as webpack with a css loader you may also import them to your main application component.
133
+
134
+ ```javascript
135
+ import 'primevue/resources/themes/lara-light-indigo/theme.css';
136
+ import 'primevue/resources/primevue.min.css';
137
+ import 'primeicons/primeicons.css';
138
+ ```
139
+
140
+ ## Nuxt Integration
141
+
142
+ Nuxt 3 is currently in beta and an official module is planned after the final release. At the moment, PrimeVue can easily be used with Nuxt 3 using a custom plugin.
143
+
144
+ **nuxt.config.js**
145
+
146
+ Open the nuxt configuration file and add the css dependencies.
147
+
148
+ ```javascript
149
+ import { defineNuxtConfig } from 'nuxt3';
150
+
151
+ export default defineNuxtConfig({
152
+ css: [
153
+ 'primevue/resources/themes/saga-blue/theme.css',
154
+ 'primevue/resources/primevue.css',
155
+ 'primeicons/primeicons.css'
156
+ ]
157
+ })
158
+ ```
159
+
160
+ **primevue.js**
161
+
162
+ Create a file like **primevue.js** under the plugins directory for the configuration.
163
+
164
+ ```javascript
165
+ import { defineNuxtPlugin } from "#app";
166
+ import PrimeVue from "primevue/config";
167
+ import Button from "primevue/button";
168
+
169
+ export default defineNuxtPlugin((nuxtApp) => {
170
+ nuxtApp.vueApp.use(PrimeVue, {ripple: true});
171
+ nuxtApp.vueApp.component('Button', Button);
172
+ //other components that you need
173
+ });
174
+ ```
175
+
176
+ ## Configuration
177
+
178
+ ### Dependencies
179
+
180
+ PrimeVue components are not wrappers and implemented natively with the Vue APIs. There are some exceptions having 3rd party dependencies such as Quill for Editor.
181
+
182
+ In addition, components require PrimeIcons library for icons.
183
+
184
+ ```javascript
185
+ dependencies: {
186
+ "vue": "^3.0.0",
187
+ "primeicons": "^5.0.0"
188
+ }
189
+ ```
190
+
191
+ ## Prop Cases
192
+
193
+ Component prop names are described as camel case throughout the documentation however camel-case is also fully supported. Events on the other hand should always be camel-case.
194
+
195
+ ```
196
+ <Dialog :showHeader="false"></Dialog>
197
+
198
+ <!-- can be written as -->
199
+
200
+ <Dialog :show-header="false"></Dialog>
201
+ ```
202
+
203
+ ## Ripple
204
+
205
+ Ripple is an optional animation for the supported components such as buttons. It is disabled by default and needs to be enabled at your app's entry file (e.g. main.js) during the PrimeVue setup.
206
+
207
+ ```
208
+ import {createApp} from 'vue';
209
+ import PrimeVue from 'primevue/config';
210
+ const app = createApp(App);
211
+
212
+ app.use(PrimeVue, {ripple: true});
213
+ ```
214
+
215
+ ## Outlined vs Filled Input Styles
216
+
217
+ Input fields come in two styles, default is ***outlined*** with borders around the field whereas ***filled*** alternative adds a background color to the field. Applying *p-input-filled* to an ancestor of an input enables the filled style. If you prefer to use filled inputs in the entire application, use a global container such as the document body or the application element to apply the style class. Note that in case you add it to the application element, components that are teleported to the document body such as Dialog will not be able to display filled inputs as they are not a descendant of the application root element in the DOM tree, to resolve this case set inputStyle to 'filled' at PrimeVue configuration as well.
218
+
219
+ ```javascript
220
+ import {createApp} from 'vue';
221
+ import PrimeVue from 'primevue/config';
222
+ const app = createApp(App);
223
+
224
+ app.use(PrimeVue, {inputStyle: 'filled'});
225
+ ```
226
+
227
+ ## ZIndex Layering
228
+
229
+ ZIndexes are managed automatically to make sure layering of overlay components work seamlessly when combining multiple components. Still there may be cases where you'd like to configure the configure default values such as a custom layout where header section is fixed. In a case like this, dropdown needs to be displayed below the application header but a modal dialog should be displayed above. PrimeVue configuration offers the ***zIndex*** property to customize the default values for components categories. Default values are described below and can be customized when setting up PrimeVue.
230
+
231
+ ```javascript
232
+ import {createApp} from 'vue';
233
+ import PrimeVue from 'primevue/config';
234
+ const app = createApp(App);
235
+
236
+ app.use(PrimeVue, {
237
+ zIndex: {
238
+ modal: 1100, //dialog, sidebar
239
+ overlay: 1000, //dropdown, overlaypanel
240
+ menu: 1000, //overlay menus
241
+ tooltip: 1100 //tooltip
242
+ }
243
+ });
244
+ ```
245
+
246
+ ## Locale
247
+
248
+ PrimeVue provides a Locale API to support i18n and l7n, visit the [Locale](https://www.primefaces.org/primevue/showcase/#/locale) documentation for more information.
249
+
250
+ ## Quickstart with Vue CLI
251
+
252
+ An [example application](https://github.com/primefaces/primevue-quickstart) based on Vue CLI is available at github.
253
+
254
+ ## Quickstart with Vite
255
+
256
+ A [starter application](https://github.com/primefaces/primevue-quickstart-vite) is also provided for Vite users.
257
+
258
+ ## Quickstart with Nuxt
259
+
260
+ A [sample application](https://github.com/primefaces/primevue-quickstart-nuxt3) is created for Nuxt 3 users.
261
+
262
+ ## Quickstart with TypeScript
263
+
264
+ Typescript is fully supported as type definition files are provided in the npm package of PrimeVue. A sample [typescript-primevue](https://github.com/primefaces/primevue-typescript-quickstart) application with Vue CLI is available as at github.
@@ -276,6 +276,11 @@ export declare type CalendarEmits = {
276
276
  * @param {CalendarValueType} value - New value.
277
277
  */
278
278
  'update:modelValue': (value: CalendarValueType) => void;
279
+ /**
280
+ * Callback to invoke when input field is being typed.
281
+ * @param {Event} event - Browser event
282
+ */
283
+ 'input': (event: Event) => void;
279
284
  /**
280
285
  * Callback to invoke when a date is selected.
281
286
  * @param {Date} value - Selected value.
@@ -309,6 +314,16 @@ export declare type CalendarEmits = {
309
314
  * @param {CalendarYearChangeEvent} event - Custom year change event.
310
315
  */
311
316
  'year-change': (event: CalendarYearChangeEvent) => void;
317
+ /**
318
+ * Callback to invoke on focus of input field.
319
+ * @param {Event} event - Focus event
320
+ */
321
+ 'focus': (event: Event) => void;
322
+ /**
323
+ * Callback to invoke on blur of input field.
324
+ * @param {Event} event - Blur event
325
+ */
326
+ 'blur': (event: Event) => void;
312
327
  }
313
328
 
314
329
  declare class Calendar extends ClassComponent<CalendarProps, CalendarSlots, CalendarEmits> { }
@@ -77,7 +77,7 @@
77
77
  </span>
78
78
  </div>
79
79
  </template>
80
- <div class="p-timepicker" v-if="showTime||timeOnly">
80
+ <div class="p-timepicker" v-if="(showTime||timeOnly) && currentView === 'date'">
81
81
  <div class="p-hour-picker">
82
82
  <button class="p-link" @mousedown="onTimePickerElementMouseDown($event, 0, 1)" @mouseup="onTimePickerElementMouseUp($event)" @keydown="onContainerButtonKeydown" v-ripple
83
83
  @mouseleave="onTimePickerElementMouseLeave()" @keydown.enter="onTimePickerElementMouseDown($event, 0, 1)" @keydown.space="onTimePickerElementMouseDown($event, 0, 1)" @keyup.enter="onTimePickerElementMouseUp($event)" @keyup.space="onTimePickerElementMouseUp($event)" type="button">
@@ -150,7 +150,7 @@ import Ripple from 'primevue/ripple';
150
150
  export default {
151
151
  name: 'Calendar',
152
152
  inheritAttrs: false,
153
- emits: ['show', 'hide', 'month-change', 'year-change', 'date-select', 'update:modelValue', 'today-click', 'clear-click'],
153
+ emits: ['show', 'hide', 'input', 'month-change', 'year-change', 'date-select', 'update:modelValue', 'today-click', 'clear-click', 'focus', 'blur'],
154
154
  props: {
155
155
  modelValue: null,
156
156
  selectionMode: {
@@ -355,7 +355,7 @@ export default {
355
355
  }
356
356
 
357
357
  if (this.mask) {
358
- this.destroyMask();
358
+ this.destroyMask();
359
359
  }
360
360
  this.destroyResponsiveStyleElement();
361
361
 
@@ -1237,9 +1237,9 @@ export default {
1237
1237
  return false;
1238
1238
  }
1239
1239
  if (this.maxDate.getMinutes() === minute) {
1240
- if (this.maxDate.getSeconds() < second) {
1241
- return false;
1242
- }
1240
+ if (this.maxDate.getSeconds() < second) {
1241
+ return false;
1242
+ }
1243
1243
  }
1244
1244
  }
1245
1245
  }
@@ -2140,7 +2140,7 @@ export default {
2140
2140
  }
2141
2141
  },
2142
2142
  onContainerButtonKeydown(event) {
2143
- switch (event.which) {
2143
+ switch (event.which) {
2144
2144
  //tab
2145
2145
  case 9:
2146
2146
  this.trapFocus(event);
@@ -2155,7 +2155,7 @@ export default {
2155
2155
  default:
2156
2156
  //Noop
2157
2157
  break;
2158
- }
2158
+ }
2159
2159
  },
2160
2160
  onInput(event) {
2161
2161
  try {
@@ -2171,16 +2171,21 @@ export default {
2171
2171
  catch(err) {
2172
2172
  /* NoOp */
2173
2173
  }
2174
+
2175
+ this.$emit('input', event);
2174
2176
  },
2175
- onFocus() {
2177
+ onFocus(event) {
2176
2178
  if (this.showOnFocus && this.isEnabled()) {
2177
2179
  this.overlayVisible = true;
2178
2180
  }
2179
2181
  this.focused = true;
2182
+ this.$emit('focus', event);
2180
2183
  },
2181
- onBlur() {
2184
+ onBlur(event) {
2182
2185
  this.focused = false;
2183
2186
  this.input.value = this.formatValue(this.modelValue);
2187
+
2188
+ this.$emit('blur', event);
2184
2189
  },
2185
2190
  onKeyDown() {
2186
2191
  if (event.keyCode === 40 && this.overlay) {
@@ -15,7 +15,7 @@ var Ripple__default = /*#__PURE__*/_interopDefaultLegacy(Ripple);
15
15
  var script = {
16
16
  name: 'Calendar',
17
17
  inheritAttrs: false,
18
- emits: ['show', 'hide', 'month-change', 'year-change', 'date-select', 'update:modelValue', 'today-click', 'clear-click'],
18
+ emits: ['show', 'hide', 'input', 'month-change', 'year-change', 'date-select', 'update:modelValue', 'today-click', 'clear-click', 'focus', 'blur'],
19
19
  props: {
20
20
  modelValue: null,
21
21
  selectionMode: {
@@ -220,7 +220,7 @@ var script = {
220
220
  }
221
221
 
222
222
  if (this.mask) {
223
- this.destroyMask();
223
+ this.destroyMask();
224
224
  }
225
225
  this.destroyResponsiveStyleElement();
226
226
 
@@ -1102,9 +1102,9 @@ var script = {
1102
1102
  return false;
1103
1103
  }
1104
1104
  if (this.maxDate.getMinutes() === minute) {
1105
- if (this.maxDate.getSeconds() < second) {
1106
- return false;
1107
- }
1105
+ if (this.maxDate.getSeconds() < second) {
1106
+ return false;
1107
+ }
1108
1108
  }
1109
1109
  }
1110
1110
  }
@@ -1993,7 +1993,7 @@ var script = {
1993
1993
  }
1994
1994
  },
1995
1995
  onContainerButtonKeydown(event) {
1996
- switch (event.which) {
1996
+ switch (event.which) {
1997
1997
  //tab
1998
1998
  case 9:
1999
1999
  this.trapFocus(event);
@@ -2004,7 +2004,7 @@ var script = {
2004
2004
  this.overlayVisible = false;
2005
2005
  event.preventDefault();
2006
2006
  break;
2007
- }
2007
+ }
2008
2008
  },
2009
2009
  onInput(event) {
2010
2010
  try {
@@ -2020,16 +2020,21 @@ var script = {
2020
2020
  catch(err) {
2021
2021
  /* NoOp */
2022
2022
  }
2023
+
2024
+ this.$emit('input', event);
2023
2025
  },
2024
- onFocus() {
2026
+ onFocus(event) {
2025
2027
  if (this.showOnFocus && this.isEnabled()) {
2026
2028
  this.overlayVisible = true;
2027
2029
  }
2028
2030
  this.focused = true;
2031
+ this.$emit('focus', event);
2029
2032
  },
2030
- onBlur() {
2033
+ onBlur(event) {
2031
2034
  this.focused = false;
2032
2035
  this.input.value = this.formatValue(this.modelValue);
2036
+
2037
+ this.$emit('blur', event);
2033
2038
  },
2034
2039
  onKeyDown() {
2035
2040
  if (event.keyCode === 40 && this.overlay) {
@@ -2634,7 +2639,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
2634
2639
  : vue.createCommentVNode("", true)
2635
2640
  ], 64))
2636
2641
  : vue.createCommentVNode("", true),
2637
- ($props.showTime||$props.timeOnly)
2642
+ (($props.showTime||$props.timeOnly) && $data.currentView === 'date')
2638
2643
  ? (vue.openBlock(), vue.createBlock("div", _hoisted_15, [
2639
2644
  vue.createVNode("div", _hoisted_16, [
2640
2645
  vue.withDirectives(vue.createVNode("button", {