@coreui/vue-pro 4.9.0-rc.0 → 4.9.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.
- package/README.md +1 -1
- package/dist/components/dropdown/CDropdown.d.ts +2 -2
- package/dist/components/form/CFormCheck.d.ts +1 -1
- package/dist/components/form/CFormControl.d.ts +1 -1
- package/dist/components/form/CFormInput.d.ts +2 -2
- package/dist/components/form/CFormTextarea.d.ts +2 -2
- package/dist/components/multi-select/CMultiSelect.d.ts +7 -7
- package/dist/components/multi-select/CMultiSelectNativeSelect.d.ts +1 -1
- package/dist/components/multi-select/CMultiSelectSelection.d.ts +1 -1
- package/dist/components/picker/CPicker.d.ts +3 -3
- package/dist/components/popover/CPopover.d.ts +6 -6
- package/dist/components/tooltip/CTooltip.d.ts +6 -6
- package/dist/index.es.js +2882 -2864
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +2881 -2863
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/src/components/date-range-picker/CDateRangePicker.ts +86 -73
- package/src/components/dropdown/CDropdown.ts +1 -1
- package/src/components/multi-select/CMultiSelect.ts +3 -3
- package/src/components/popover/CPopover.ts +3 -3
- package/src/components/time-picker/CTimePicker.ts +63 -52
- package/src/components/tooltip/CTooltip.ts +3 -3
- package/src/utils/getRTLPlacement.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coreui/vue-pro",
|
|
3
|
-
"version": "4.9.0
|
|
3
|
+
"version": "4.9.0",
|
|
4
4
|
"description": "UI Components Library for Vue.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -38,21 +38,21 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@popperjs/core": "^2.11.8",
|
|
41
|
-
"@rollup/plugin-commonjs": "^25.0.
|
|
41
|
+
"@rollup/plugin-commonjs": "^25.0.2",
|
|
42
42
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
43
|
-
"@rollup/plugin-typescript": "^11.1.
|
|
43
|
+
"@rollup/plugin-typescript": "^11.1.2",
|
|
44
44
|
"@types/jest": "^29.5.2",
|
|
45
|
-
"@vue/test-utils": "^2.
|
|
45
|
+
"@vue/test-utils": "^2.4.0",
|
|
46
46
|
"@vue/vue3-jest": "29.2.4",
|
|
47
47
|
"date-fns": "^2.29.3",
|
|
48
|
-
"jest": "^29.
|
|
49
|
-
"jest-environment-jsdom": "^29.
|
|
50
|
-
"rollup": "^3.
|
|
48
|
+
"jest": "^29.6.1",
|
|
49
|
+
"jest-environment-jsdom": "^29.6.1",
|
|
50
|
+
"rollup": "^3.26.2",
|
|
51
51
|
"rollup-plugin-vue": "^6.0.0",
|
|
52
|
-
"ts-jest": "^29.1.
|
|
52
|
+
"ts-jest": "^29.1.1",
|
|
53
53
|
"typescript": "^4.9.5",
|
|
54
54
|
"vue": "^3.3.4",
|
|
55
|
-
"vue-types": "^5.0
|
|
55
|
+
"vue-types": "^5.1.0"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"@coreui/coreui-pro": "^4.5.0",
|
|
@@ -4,7 +4,6 @@ import { format as dateFormat } from 'date-fns'
|
|
|
4
4
|
|
|
5
5
|
import { CButton } from '../button'
|
|
6
6
|
import { CCalendar } from '../calendar'
|
|
7
|
-
import { CInputGroup } from '../form'
|
|
8
7
|
import { CFormControlWrapper } from './../form/CFormControlWrapper'
|
|
9
8
|
import { CPicker } from '../picker'
|
|
10
9
|
import { CTimePicker } from '../time-picker'
|
|
@@ -645,61 +644,30 @@ const CDateRangePicker = defineComponent({
|
|
|
645
644
|
}
|
|
646
645
|
|
|
647
646
|
const InputGroup = () =>
|
|
648
|
-
h(
|
|
649
|
-
|
|
650
|
-
|
|
647
|
+
h(
|
|
648
|
+
'div',
|
|
649
|
+
{
|
|
651
650
|
class: [
|
|
652
|
-
'
|
|
651
|
+
'input-group',
|
|
652
|
+
'picker-input-group',
|
|
653
653
|
{
|
|
654
|
-
|
|
654
|
+
[`input-group-${props.size}`]: props.size,
|
|
655
655
|
},
|
|
656
656
|
],
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
onClick: () => {
|
|
660
|
-
selectEndDate.value = false
|
|
661
|
-
},
|
|
662
|
-
onInput: (event: Event) => {
|
|
663
|
-
const date = getLocalDateFromString(
|
|
664
|
-
(event.target as HTMLInputElement).value,
|
|
665
|
-
props.locale,
|
|
666
|
-
props.timepicker,
|
|
667
|
-
)
|
|
668
|
-
if (date instanceof Date && date.getTime()) {
|
|
669
|
-
calendarDate.value = date
|
|
670
|
-
startDate.value = date
|
|
671
|
-
}
|
|
672
|
-
},
|
|
673
|
-
placeholder: Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder,
|
|
674
|
-
readonly: props.inputReadOnly || typeof props.format === 'string',
|
|
675
|
-
required: props.required,
|
|
676
|
-
ref: inputStartRef,
|
|
677
|
-
value: inputStartHoverValue.value
|
|
678
|
-
? setInputValue(inputStartHoverValue.value)
|
|
679
|
-
: setInputValue(startDate.value),
|
|
680
|
-
}),
|
|
681
|
-
props.range &&
|
|
682
|
-
props.separator !== false &&
|
|
683
|
-
h(
|
|
684
|
-
'span',
|
|
685
|
-
{ class: 'input-group-text' },
|
|
686
|
-
slots.separator
|
|
687
|
-
? slots.separator()
|
|
688
|
-
: h('span', { class: 'picker-input-group-icon date-picker-arrow-icon' }),
|
|
689
|
-
),
|
|
690
|
-
props.range &&
|
|
657
|
+
},
|
|
658
|
+
[
|
|
691
659
|
h('input', {
|
|
692
660
|
autocomplete: 'off',
|
|
693
661
|
class: [
|
|
694
662
|
'form-control date-picker-input',
|
|
695
663
|
{
|
|
696
|
-
hover:
|
|
664
|
+
hover: inputStartHoverValue.value,
|
|
697
665
|
},
|
|
698
666
|
],
|
|
699
667
|
disabled: props.disabled,
|
|
700
|
-
...(props.id && { name: `${props.id}-
|
|
668
|
+
...(props.id && { name: props.range ? `${props.id}-start-date` : `${props.id}-date` }),
|
|
701
669
|
onClick: () => {
|
|
702
|
-
selectEndDate.value =
|
|
670
|
+
selectEndDate.value = false
|
|
703
671
|
},
|
|
704
672
|
onInput: (event: Event) => {
|
|
705
673
|
const date = getLocalDateFromString(
|
|
@@ -709,43 +677,88 @@ const CDateRangePicker = defineComponent({
|
|
|
709
677
|
)
|
|
710
678
|
if (date instanceof Date && date.getTime()) {
|
|
711
679
|
calendarDate.value = date
|
|
712
|
-
|
|
680
|
+
startDate.value = date
|
|
713
681
|
}
|
|
714
682
|
},
|
|
715
|
-
placeholder: props.placeholder
|
|
683
|
+
placeholder: Array.isArray(props.placeholder)
|
|
684
|
+
? props.placeholder[0]
|
|
685
|
+
: props.placeholder,
|
|
716
686
|
readonly: props.inputReadOnly || typeof props.format === 'string',
|
|
717
687
|
required: props.required,
|
|
718
|
-
ref:
|
|
719
|
-
value:
|
|
720
|
-
? setInputValue(
|
|
721
|
-
: setInputValue(
|
|
688
|
+
ref: inputStartRef,
|
|
689
|
+
value: inputStartHoverValue.value
|
|
690
|
+
? setInputValue(inputStartHoverValue.value)
|
|
691
|
+
: setInputValue(startDate.value),
|
|
722
692
|
}),
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
},
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
'span',
|
|
693
|
+
props.range &&
|
|
694
|
+
props.separator !== false &&
|
|
695
|
+
h(
|
|
696
|
+
'span',
|
|
697
|
+
{ class: 'input-group-text' },
|
|
698
|
+
slots.separator
|
|
699
|
+
? slots.separator()
|
|
700
|
+
: h('span', { class: 'picker-input-group-icon date-picker-arrow-icon' }),
|
|
701
|
+
),
|
|
702
|
+
props.range &&
|
|
703
|
+
h('input', {
|
|
704
|
+
autocomplete: 'off',
|
|
705
|
+
class: [
|
|
706
|
+
'form-control date-picker-input',
|
|
738
707
|
{
|
|
739
|
-
|
|
740
|
-
onClick: (event: Event) => handleClear(event),
|
|
741
|
-
role: 'button',
|
|
708
|
+
hover: inputEndHoverValue.value,
|
|
742
709
|
},
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
)
|
|
747
|
-
|
|
748
|
-
|
|
710
|
+
],
|
|
711
|
+
disabled: props.disabled,
|
|
712
|
+
...(props.id && { name: `${props.id}-end-date` }),
|
|
713
|
+
onClick: () => {
|
|
714
|
+
selectEndDate.value = true
|
|
715
|
+
},
|
|
716
|
+
onInput: (event: Event) => {
|
|
717
|
+
const date = getLocalDateFromString(
|
|
718
|
+
(event.target as HTMLInputElement).value,
|
|
719
|
+
props.locale,
|
|
720
|
+
props.timepicker,
|
|
721
|
+
)
|
|
722
|
+
if (date instanceof Date && date.getTime()) {
|
|
723
|
+
calendarDate.value = date
|
|
724
|
+
endDate.value = date
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
placeholder: props.placeholder[1],
|
|
728
|
+
readonly: props.inputReadOnly || typeof props.format === 'string',
|
|
729
|
+
required: props.required,
|
|
730
|
+
ref: inputEndRef,
|
|
731
|
+
value: inputEndHoverValue.value
|
|
732
|
+
? setInputValue(inputEndHoverValue.value)
|
|
733
|
+
: setInputValue(endDate.value),
|
|
734
|
+
}),
|
|
735
|
+
(props.indicator || props.cleaner) &&
|
|
736
|
+
h('span', { class: 'input-group-text' }, [
|
|
737
|
+
props.indicator &&
|
|
738
|
+
h(
|
|
739
|
+
'span',
|
|
740
|
+
{
|
|
741
|
+
class: 'picker-input-group-indicator',
|
|
742
|
+
},
|
|
743
|
+
slots.indicator
|
|
744
|
+
? slots.indicator()
|
|
745
|
+
: h('span', { class: 'picker-input-group-icon date-picker-input-icon' }),
|
|
746
|
+
),
|
|
747
|
+
props.cleaner &&
|
|
748
|
+
h(
|
|
749
|
+
'span',
|
|
750
|
+
{
|
|
751
|
+
class: 'picker-input-group-cleaner',
|
|
752
|
+
onClick: (event: Event) => handleClear(event),
|
|
753
|
+
role: 'button',
|
|
754
|
+
},
|
|
755
|
+
slots.cleaner
|
|
756
|
+
? slots.cleaner()
|
|
757
|
+
: h('span', { class: 'picker-input-group-icon date-picker-cleaner-icon' }),
|
|
758
|
+
),
|
|
759
|
+
]),
|
|
760
|
+
],
|
|
761
|
+
)
|
|
749
762
|
|
|
750
763
|
return () =>
|
|
751
764
|
h(
|
|
@@ -19,7 +19,7 @@ const CMultiSelect = defineComponent({
|
|
|
19
19
|
/**
|
|
20
20
|
* Allow users to create options if they are not in the list of options.
|
|
21
21
|
*
|
|
22
|
-
* @since 4.9.0
|
|
22
|
+
* @since 4.9.0
|
|
23
23
|
*/
|
|
24
24
|
allowCreateOptions: Boolean,
|
|
25
25
|
/**
|
|
@@ -34,7 +34,7 @@ const CMultiSelect = defineComponent({
|
|
|
34
34
|
/**
|
|
35
35
|
* Clear current search on selecting an item.
|
|
36
36
|
*
|
|
37
|
-
* @since 4.9.0
|
|
37
|
+
* @since 4.9.0
|
|
38
38
|
*/
|
|
39
39
|
clearSearchOnSelect: Boolean,
|
|
40
40
|
/**
|
|
@@ -78,7 +78,7 @@ const CMultiSelect = defineComponent({
|
|
|
78
78
|
/**
|
|
79
79
|
* When set, the options list will have a loading style: loading spinner and reduced opacity.
|
|
80
80
|
*
|
|
81
|
-
* @since 4.9.0
|
|
81
|
+
* @since 4.9.0
|
|
82
82
|
*/
|
|
83
83
|
loading: Boolean,
|
|
84
84
|
/**
|
|
@@ -12,7 +12,7 @@ const CPopover = defineComponent({
|
|
|
12
12
|
/**
|
|
13
13
|
* Apply a CSS fade transition to the popover.
|
|
14
14
|
*
|
|
15
|
-
* @since 4.9.0
|
|
15
|
+
* @since 4.9.0
|
|
16
16
|
*/
|
|
17
17
|
animation: {
|
|
18
18
|
type: Boolean,
|
|
@@ -25,7 +25,7 @@ const CPopover = defineComponent({
|
|
|
25
25
|
/**
|
|
26
26
|
* The delay for displaying and hiding the popover (in milliseconds). When a numerical value is provided, the delay applies to both the hide and show actions. The object structure for specifying the delay is as follows: delay: `{ 'show': 500, 'hide': 100 }`.
|
|
27
27
|
*
|
|
28
|
-
* @since 4.9.0
|
|
28
|
+
* @since 4.9.0
|
|
29
29
|
*/
|
|
30
30
|
delay: {
|
|
31
31
|
type: [Number, Object] as PropType<number | { show: number; hide: number }>,
|
|
@@ -34,7 +34,7 @@ const CPopover = defineComponent({
|
|
|
34
34
|
/**
|
|
35
35
|
* Specify the desired order of fallback placements by providing a list of placements as an array. The placements should be prioritized based on preference.
|
|
36
36
|
*
|
|
37
|
-
* @since 4.9.0
|
|
37
|
+
* @since 4.9.0
|
|
38
38
|
*/
|
|
39
39
|
fallbackPlacements: {
|
|
40
40
|
type: [String, Array] as PropType<Placements | Placements[]>,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { defineComponent, h, ref, watch } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { CButton } from '../button'
|
|
4
|
-
import { CInputGroup } from '../form'
|
|
5
4
|
import { CFormControlWrapper } from '../form/CFormControlWrapper'
|
|
6
5
|
import { CPicker } from '../picker'
|
|
7
6
|
|
|
@@ -392,60 +391,72 @@ const CTimePicker = defineComponent({
|
|
|
392
391
|
}
|
|
393
392
|
|
|
394
393
|
const InputGroup = () =>
|
|
395
|
-
h(
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
class:
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
394
|
+
h(
|
|
395
|
+
'div',
|
|
396
|
+
{
|
|
397
|
+
class: [
|
|
398
|
+
'input-group',
|
|
399
|
+
'picker-input-group',
|
|
400
|
+
{
|
|
401
|
+
[`input-group-${props.size}`]: props.size,
|
|
402
|
+
},
|
|
403
|
+
],
|
|
404
|
+
},
|
|
405
|
+
[
|
|
406
|
+
h('input', {
|
|
407
|
+
autocomplete: 'off',
|
|
408
|
+
class: 'form-control',
|
|
409
|
+
disabled: props.disabled,
|
|
410
|
+
onInput: (event: Event) => {
|
|
411
|
+
if (isValidTime((event.target as HTMLInputElement).value)) {
|
|
412
|
+
date.value = convertTimeToDate((event.target as HTMLInputElement).value)
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
placeholder: props.placeholder,
|
|
416
|
+
readonly: props.inputReadOnly,
|
|
417
|
+
ref: inputRef,
|
|
418
|
+
required: props.required,
|
|
419
|
+
value: date.value
|
|
420
|
+
? date.value.toLocaleTimeString(props.locale, {
|
|
421
|
+
hour12: localizedTimePartials.value && localizedTimePartials.value.hour12,
|
|
422
|
+
...(!props.seconds && { timeStyle: 'short' }),
|
|
423
|
+
})
|
|
424
|
+
: '',
|
|
425
|
+
}),
|
|
426
|
+
(props.indicator || props.cleaner) &&
|
|
427
|
+
h('div', { class: 'input-group-text' }, [
|
|
428
|
+
props.indicator &&
|
|
429
|
+
h(
|
|
430
|
+
'span',
|
|
431
|
+
{
|
|
432
|
+
class: 'picker-input-group-indicator',
|
|
433
|
+
},
|
|
434
|
+
slots.indicator
|
|
435
|
+
? slots.indicator()
|
|
436
|
+
: h('span', { class: 'picker-input-group-icon time-picker-input-icon' }),
|
|
437
|
+
),
|
|
438
|
+
props.cleaner &&
|
|
439
|
+
h(
|
|
440
|
+
'span',
|
|
441
|
+
{
|
|
442
|
+
class: 'picker-input-group-cleaner',
|
|
443
|
+
onClick: (event: Event) => handleClear(event),
|
|
444
|
+
role: 'button',
|
|
445
|
+
},
|
|
446
|
+
slots.cleaner
|
|
447
|
+
? slots.cleaner()
|
|
448
|
+
: h('span', { class: 'picker-input-group-icon time-picker-cleaner-icon' }),
|
|
449
|
+
),
|
|
450
|
+
]),
|
|
451
|
+
],
|
|
452
|
+
)
|
|
442
453
|
|
|
443
454
|
const TimePickerSelect = () => [
|
|
444
455
|
h('span', { class: 'time-picker-inline-icon' }),
|
|
445
456
|
h(
|
|
446
457
|
'select',
|
|
447
458
|
{
|
|
448
|
-
class: '
|
|
459
|
+
class: 'form-select',
|
|
449
460
|
disabled: props.disabled,
|
|
450
461
|
onChange: (event: Event) =>
|
|
451
462
|
handleTimeChange('hours', (event.target as HTMLSelectElement).value),
|
|
@@ -466,7 +477,7 @@ const CTimePicker = defineComponent({
|
|
|
466
477
|
h(
|
|
467
478
|
'select',
|
|
468
479
|
{
|
|
469
|
-
class: '
|
|
480
|
+
class: 'form-select',
|
|
470
481
|
disabled: props.disabled,
|
|
471
482
|
onChange: (event: Event) =>
|
|
472
483
|
handleTimeChange('minutes', (event.target as HTMLSelectElement).value),
|
|
@@ -488,7 +499,7 @@ const CTimePicker = defineComponent({
|
|
|
488
499
|
h(
|
|
489
500
|
'select',
|
|
490
501
|
{
|
|
491
|
-
class: '
|
|
502
|
+
class: 'form-select',
|
|
492
503
|
disabled: props.disabled,
|
|
493
504
|
onChange: (event: Event) =>
|
|
494
505
|
handleTimeChange('seconds', (event.target as HTMLSelectElement).value),
|
|
@@ -510,7 +521,7 @@ const CTimePicker = defineComponent({
|
|
|
510
521
|
h(
|
|
511
522
|
'select',
|
|
512
523
|
{
|
|
513
|
-
class: '
|
|
524
|
+
class: 'form-select',
|
|
514
525
|
disabled: props.disabled,
|
|
515
526
|
onChange: (event: Event) =>
|
|
516
527
|
handleTimeChange('toggle', (event.target as HTMLSelectElement).value),
|
|
@@ -12,7 +12,7 @@ const CTooltip = defineComponent({
|
|
|
12
12
|
/**
|
|
13
13
|
* Apply a CSS fade transition to the tooltip.
|
|
14
14
|
*
|
|
15
|
-
* @since 4.9.0
|
|
15
|
+
* @since 4.9.0
|
|
16
16
|
*/
|
|
17
17
|
animation: {
|
|
18
18
|
type: Boolean,
|
|
@@ -25,7 +25,7 @@ const CTooltip = defineComponent({
|
|
|
25
25
|
/**
|
|
26
26
|
* The delay for displaying and hiding the popover (in milliseconds). When a numerical value is provided, the delay applies to both the hide and show actions. The object structure for specifying the delay is as follows: delay: `{ 'show': 500, 'hide': 100 }`.
|
|
27
27
|
*
|
|
28
|
-
* @since 4.9.0
|
|
28
|
+
* @since 4.9.0
|
|
29
29
|
*/
|
|
30
30
|
delay: {
|
|
31
31
|
type: [Number, Object] as PropType<number | { show: number; hide: number }>,
|
|
@@ -34,7 +34,7 @@ const CTooltip = defineComponent({
|
|
|
34
34
|
/**
|
|
35
35
|
* Specify the desired order of fallback placements by providing a list of placements as an array. The placements should be prioritized based on preference.
|
|
36
36
|
*
|
|
37
|
-
* @since 4.9.0
|
|
37
|
+
* @since 4.9.0
|
|
38
38
|
*/
|
|
39
39
|
fallbackPlacements: {
|
|
40
40
|
type: [String, Array] as PropType<Placements | Placements[]>,
|