@coreui/vue-pro 4.3.0 → 4.4.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 +113 -5
- package/dist/components/accordion/CAccordion.d.ts +1 -1
- package/dist/components/accordion/CAccordionBody.d.ts +1 -1
- package/dist/components/accordion/CAccordionButton.d.ts +1 -1
- package/dist/components/accordion/CAccordionHeader.d.ts +1 -1
- package/dist/components/accordion/CAccordionItem.d.ts +1 -1
- package/dist/components/accordion/index.d.ts +1 -2
- package/dist/components/alert/CAlertHeading.d.ts +1 -1
- package/dist/components/alert/CAlertLink.d.ts +1 -1
- package/dist/components/avatar/CAvatar.d.ts +1 -1
- package/dist/components/backdrop/CBackdrop.d.ts +1 -1
- package/dist/components/badge/CBadge.d.ts +1 -1
- package/dist/components/breadcrumb/CBreadcrumb.d.ts +1 -1
- package/dist/components/breadcrumb/CBreadcrumbItem.d.ts +1 -1
- package/dist/components/button-group/CButtonGroup.d.ts +1 -1
- package/dist/components/button-group/CButtonToolbar.d.ts +1 -1
- package/dist/components/callout/CCallout.d.ts +1 -1
- package/dist/components/card/CCard.d.ts +1 -1
- package/dist/components/card/CCardBody.d.ts +1 -1
- package/dist/components/card/CCardFooter.d.ts +1 -1
- package/dist/components/card/CCardGroup.d.ts +1 -1
- package/dist/components/card/CCardHeader.d.ts +1 -1
- package/dist/components/card/CCardImage.d.ts +1 -1
- package/dist/components/card/CCardImageOverlay.d.ts +1 -1
- package/dist/components/card/CCardLink.d.ts +1 -1
- package/dist/components/card/CCardSubtitle.d.ts +1 -1
- package/dist/components/card/CCardText.d.ts +1 -1
- package/dist/components/card/CCardTitle.d.ts +1 -1
- package/dist/components/carousel/CCarousel.d.ts +1 -1
- package/dist/components/carousel/CCarouselCaption.d.ts +1 -1
- package/dist/components/carousel/CCarouselItem.d.ts +1 -1
- package/dist/components/date-picker/CDatePicker.d.ts +18 -2
- package/dist/components/date-range-picker/CDateRangePicker.d.ts +23 -2
- package/dist/components/dropdown/CDropdown.d.ts +2 -2
- package/dist/components/dropdown/CDropdownDivider.d.ts +1 -1
- package/dist/components/dropdown/CDropdownHeader.d.ts +1 -1
- package/dist/components/dropdown/CDropdownItem.d.ts +1 -1
- package/dist/components/dropdown/CDropdownMenu.d.ts +1 -1
- package/dist/components/dropdown/CDropdownToggle.d.ts +1 -1
- package/dist/components/element-cover/CElementCover.d.ts +1 -1
- package/dist/components/footer/CFooter.d.ts +1 -1
- package/dist/components/form/CForm.d.ts +1 -1
- package/dist/components/form/CFormControl.d.ts +1 -1
- package/dist/components/form/CFormControlValidation.d.ts +1 -1
- package/dist/components/form/CFormControlWrapper.d.ts +1 -1
- package/dist/components/form/CFormFeedback.d.ts +1 -1
- package/dist/components/form/CFormFloating.d.ts +1 -1
- package/dist/components/form/CFormInput.d.ts +9 -3
- package/dist/components/form/CFormLabel.d.ts +1 -1
- package/dist/components/form/CFormText.d.ts +1 -1
- package/dist/components/form/CInputGroup.d.ts +1 -1
- package/dist/components/form/CInputGroupText.d.ts +1 -1
- package/dist/components/grid/CCol.d.ts +1 -1
- package/dist/components/grid/CContainer.d.ts +1 -1
- package/dist/components/grid/CRow.d.ts +1 -1
- package/dist/components/header/CHeader.d.ts +1 -1
- package/dist/components/header/CHeaderBrand.d.ts +1 -1
- package/dist/components/header/CHeaderDivider.d.ts +1 -1
- package/dist/components/header/CHeaderNav.d.ts +1 -1
- package/dist/components/header/CHeaderText.d.ts +1 -1
- package/dist/components/header/CHeaderToggler.d.ts +1 -1
- package/dist/components/image/CImage.d.ts +1 -1
- package/dist/components/list-group/CListGroup.d.ts +1 -1
- package/dist/components/list-group/CListGroupItem.d.ts +1 -1
- package/dist/components/modal/CModalBody.d.ts +1 -1
- package/dist/components/modal/CModalFooter.d.ts +1 -1
- package/dist/components/modal/CModalHeader.d.ts +1 -1
- package/dist/components/modal/CModalTitle.d.ts +1 -1
- package/dist/components/nav/CNav.d.ts +1 -1
- package/dist/components/nav/CNavGroupItems.d.ts +1 -1
- package/dist/components/nav/CNavItem.d.ts +1 -1
- package/dist/components/nav/CNavLink.d.ts +1 -1
- package/dist/components/nav/CNavTitle.d.ts +1 -1
- package/dist/components/navbar/CNavbar.d.ts +1 -1
- package/dist/components/navbar/CNavbarBrand.d.ts +1 -1
- package/dist/components/navbar/CNavbarNav.d.ts +1 -1
- package/dist/components/navbar/CNavbarText.d.ts +1 -1
- package/dist/components/navbar/CNavbarToggler.d.ts +1 -1
- package/dist/components/offcanvas/COffcanvasBody.d.ts +1 -1
- package/dist/components/offcanvas/COffcanvasHeader.d.ts +1 -1
- package/dist/components/offcanvas/COffcanvasTitle.d.ts +1 -1
- package/dist/components/pagination/CPagination.d.ts +1 -1
- package/dist/components/pagination/CPaginationItem.d.ts +1 -1
- package/dist/components/placeholder/CPlaceholder.d.ts +1 -1
- package/dist/components/progress/CProgress.d.ts +1 -1
- package/dist/components/progress/CProgressBar.d.ts +1 -1
- package/dist/components/sidebar/CSidebarBrand.d.ts +1 -1
- package/dist/components/sidebar/CSidebarFooter.d.ts +1 -1
- package/dist/components/sidebar/CSidebarHeader.d.ts +1 -1
- package/dist/components/sidebar/CSidebarNav.d.ts +1 -1
- package/dist/components/sidebar/CSidebarToggler.d.ts +1 -1
- package/dist/components/spinner/CSpinner.d.ts +1 -1
- package/dist/components/table/CTable.d.ts +20 -1
- package/dist/components/table/CTableBody.d.ts +1 -1
- package/dist/components/table/CTableCaption.d.ts +1 -1
- package/dist/components/table/CTableDataCell.d.ts +1 -1
- package/dist/components/table/CTableFoot.d.ts +1 -1
- package/dist/components/table/CTableHead.d.ts +1 -1
- package/dist/components/table/CTableHeaderCell.d.ts +1 -1
- package/dist/components/table/CTableRow.d.ts +1 -1
- package/dist/components/tabs/CTabContent.d.ts +1 -1
- package/dist/components/toast/CToastBody.d.ts +1 -1
- package/dist/components/toast/CToaster.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsA.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsB.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsC.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsD.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsE.d.ts +1 -1
- package/dist/components/widgets/CWidgetStatsF.d.ts +1 -1
- package/dist/directives/v-c-popover.d.ts +1 -1
- package/dist/directives/v-c-tooltip.d.ts +1 -1
- package/dist/index.es.js +4952 -1662
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +4951 -1662
- package/dist/index.js.map +1 -1
- package/dist/utils/calendar.d.ts +3 -3
- package/package.json +13 -13
- package/src/components/accordion/index.ts +0 -3
- package/src/components/close-button/CCloseButton.ts +1 -0
- package/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.ts.snap +2 -2
- package/src/components/date-picker/CDatePicker.ts +11 -1
- package/src/components/date-range-picker/CDateRangePicker.ts +20 -1
- package/src/components/dropdown/CDropdown.ts +18 -3
- package/src/components/form/CFormCheck.ts +8 -10
- package/src/components/form/CFormControlWrapper.ts +1 -1
- package/src/components/form/CFormInput.ts +2 -1
- package/src/components/form/CFormSelect.ts +1 -0
- package/src/components/form/CFormTextarea.ts +8 -0
- package/src/components/form/__tests__/CFormInput.spec.ts +11 -11
- package/src/components/form/__tests__/CFormRange.spec.ts +9 -9
- package/src/components/form/__tests__/CFormSelect.spec.ts +4 -4
- package/src/components/form/__tests__/CFormTextarea.spec.ts +4 -4
- package/src/components/form/__tests__/__snapshots__/CFormCheck.spec.ts.snap +8 -2
- package/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap +1 -1
- package/src/components/modal/CModal.ts +4 -0
- package/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap +1 -2
- package/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.ts.snap +2 -2
- package/src/components/sidebar/CSidebar.ts +2 -3
- package/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.ts.snap +2 -8
- package/src/components/table/CTable.ts +10 -0
- package/src/components/time-picker/CTimePicker.ts +1 -0
- package/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap +1 -1
- package/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.ts.snap +1 -1
- package/src/directives/v-c-popover.ts +1 -1
- package/src/directives/v-c-tooltip.ts +1 -1
- package/src/components/accordion/CAccordionCollapse.ts +0 -28
package/dist/utils/calendar.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const convertToLocalTime: (d: Date, locale: string, options?: {})
|
|
|
3
3
|
export declare const createGroupsInArray: (arr: any[], numberOfGroups: number) => any[][];
|
|
4
4
|
export declare const getCurrentYear: () => number;
|
|
5
5
|
export declare const getCurrentMonth: () => number;
|
|
6
|
-
export declare const getLocalDateFromString: (string: string, locale: string, time?: boolean
|
|
6
|
+
export declare const getLocalDateFromString: (string: string, locale: string, time?: boolean) => Date | undefined;
|
|
7
7
|
export declare const getMonthName: (month: number, locale: string) => string;
|
|
8
8
|
export declare const getMonthsNames: (locale: string) => string[];
|
|
9
9
|
export declare const getYears: (year: number) => number[];
|
|
@@ -11,8 +11,8 @@ export declare const getMonthDetails: (year: number, month: number, firstDayOfWe
|
|
|
11
11
|
date: Date;
|
|
12
12
|
month: string;
|
|
13
13
|
}[][];
|
|
14
|
-
export declare const isDisableDateInRange: (startDate?: Date | null
|
|
15
|
-
export declare const isDateDisabled: (date: Date, min?: Date | null
|
|
14
|
+
export declare const isDisableDateInRange: (startDate?: Date | null, endDate?: Date | null, dates?: Date[] | Date[][]) => boolean;
|
|
15
|
+
export declare const isDateDisabled: (date: Date, min?: Date | null, max?: Date | null, dates?: Date[] | Date[][]) => boolean | undefined;
|
|
16
16
|
export declare const isDateInRange: (date: Date, start: Date | null, end: Date | null) => boolean | null;
|
|
17
17
|
export declare const isDateSelected: (date: Date, start: Date | null, end: Date | null) => boolean | null;
|
|
18
18
|
export declare const isEndDate: (date: Date, start: Date | null, end: Date | null) => boolean | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coreui/vue-pro",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "UI Components Library for Vue.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -35,23 +35,23 @@
|
|
|
35
35
|
"watch": "rollup -c -w"
|
|
36
36
|
},
|
|
37
37
|
"config": {
|
|
38
|
-
"version_short": "4.
|
|
38
|
+
"version_short": "4.4"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@popperjs/core": "^2.11.
|
|
42
|
-
"@rollup/plugin-commonjs": "^
|
|
43
|
-
"@rollup/plugin-node-resolve": "^13.
|
|
44
|
-
"@rollup/plugin-typescript": "^8.
|
|
45
|
-
"@vue/test-utils": "^2.0.
|
|
46
|
-
"date-fns": "^2.
|
|
47
|
-
"rollup": "^2.
|
|
41
|
+
"@popperjs/core": "^2.11.6",
|
|
42
|
+
"@rollup/plugin-commonjs": "^22.0.2",
|
|
43
|
+
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
44
|
+
"@rollup/plugin-typescript": "^8.5.0",
|
|
45
|
+
"@vue/test-utils": "^2.0.2",
|
|
46
|
+
"date-fns": "^2.29.3",
|
|
47
|
+
"rollup": "^2.79.0",
|
|
48
48
|
"rollup-plugin-vue": "^6.0.0",
|
|
49
|
-
"typescript": "^4.
|
|
50
|
-
"vue": "^3.2.
|
|
51
|
-
"vue-types": "^4.
|
|
49
|
+
"typescript": "^4.8.3",
|
|
50
|
+
"vue": "^3.2.39",
|
|
51
|
+
"vue-types": "^4.2.1"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@coreui/coreui-pro": "^4.
|
|
54
|
+
"@coreui/coreui-pro": "^4.3.4",
|
|
55
55
|
"vue": "^3.2.21"
|
|
56
56
|
},
|
|
57
57
|
"standard": {
|
|
@@ -2,7 +2,6 @@ import { App } from 'vue'
|
|
|
2
2
|
import { CAccordion } from './CAccordion'
|
|
3
3
|
import { CAccordionBody } from './CAccordionBody'
|
|
4
4
|
import { CAccordionButton } from './CAccordionButton'
|
|
5
|
-
import { CAccordionCollapse } from './CAccordionCollapse'
|
|
6
5
|
import { CAccordionHeader } from './CAccordionHeader'
|
|
7
6
|
import { CAccordionItem } from './CAccordionItem'
|
|
8
7
|
|
|
@@ -11,7 +10,6 @@ const CAccordionPlugin = {
|
|
|
11
10
|
app.component(CAccordion.name, CAccordion)
|
|
12
11
|
app.component(CAccordionBody.name, CAccordionBody)
|
|
13
12
|
app.component(CAccordionButton.name, CAccordionButton)
|
|
14
|
-
app.component(CAccordionCollapse.name, CAccordionCollapse)
|
|
15
13
|
app.component(CAccordionHeader.name, CAccordionHeader)
|
|
16
14
|
app.component(CAccordionItem.name, CAccordionItem)
|
|
17
15
|
},
|
|
@@ -22,7 +20,6 @@ export {
|
|
|
22
20
|
CAccordion,
|
|
23
21
|
CAccordionBody,
|
|
24
22
|
CAccordionButton,
|
|
25
|
-
CAccordionCollapse,
|
|
26
23
|
CAccordionHeader,
|
|
27
24
|
CAccordionItem,
|
|
28
25
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize CCloseButton component renders correctly 1`] = `"<button class=\\"btn btn-close btn-close-white\\" aria-label=\\"Close\\" disabled=\\"\\"></button>"`;
|
|
3
|
+
exports[`Customize CCloseButton component renders correctly 1`] = `"<button type=\\"button\\" class=\\"btn btn-close btn-close-white\\" aria-label=\\"Close\\" disabled=\\"\\"></button>"`;
|
|
4
4
|
|
|
5
|
-
exports[`Loads and display CCloseButton component renders correctly 1`] = `"<button class=\\"btn btn-close\\" aria-label=\\"Close\\"></button>"`;
|
|
5
|
+
exports[`Loads and display CCloseButton component renders correctly 1`] = `"<button type=\\"button\\" class=\\"btn btn-close\\" aria-label=\\"Close\\"></button>"`;
|
|
@@ -139,6 +139,13 @@ const CDatePicker = defineComponent({
|
|
|
139
139
|
* Toggle visibility of footer element or set the content of footer.
|
|
140
140
|
*/
|
|
141
141
|
footer: Boolean,
|
|
142
|
+
/**
|
|
143
|
+
* The id global attribute defines an identifier (ID) that must be unique in the whole document.
|
|
144
|
+
*
|
|
145
|
+
* The name attribute for the input element is generated based on the `id` property:
|
|
146
|
+
* - {id}-date
|
|
147
|
+
*/
|
|
148
|
+
id: String,
|
|
142
149
|
/**
|
|
143
150
|
* Toggle visibility or set the content of the input indicator.
|
|
144
151
|
*/
|
|
@@ -218,9 +225,12 @@ const CDatePicker = defineComponent({
|
|
|
218
225
|
},
|
|
219
226
|
},
|
|
220
227
|
},
|
|
221
|
-
|
|
228
|
+
emits: [
|
|
222
229
|
/**
|
|
223
230
|
* Callback fired when the date changed.
|
|
231
|
+
*
|
|
232
|
+
* @property {Date} date - date object
|
|
233
|
+
* @property {string} formatedDate - formated date
|
|
224
234
|
*/
|
|
225
235
|
'date-change',
|
|
226
236
|
],
|
|
@@ -154,6 +154,14 @@ const CDateRangePicker = defineComponent({
|
|
|
154
154
|
* Toggle visibility of footer element or set the content of footer.
|
|
155
155
|
*/
|
|
156
156
|
footer: Boolean,
|
|
157
|
+
/**
|
|
158
|
+
* The id global attribute defines an identifier (ID) that must be unique in the whole document.
|
|
159
|
+
*
|
|
160
|
+
* The name attributes for input elements are generated based on the `id` property:
|
|
161
|
+
* - {id}-start-date
|
|
162
|
+
* - {id}-end-date
|
|
163
|
+
*/
|
|
164
|
+
id: String,
|
|
157
165
|
/**
|
|
158
166
|
* Toggle visibility or set the content of the input indicator.
|
|
159
167
|
*/
|
|
@@ -300,9 +308,12 @@ const CDateRangePicker = defineComponent({
|
|
|
300
308
|
},
|
|
301
309
|
},
|
|
302
310
|
},
|
|
303
|
-
|
|
311
|
+
emits: [
|
|
304
312
|
/**
|
|
305
313
|
* Callback fired when the end date changed.
|
|
314
|
+
*
|
|
315
|
+
* @property {Date} date - date object
|
|
316
|
+
* @property {string} formatedDate - formated date
|
|
306
317
|
*/
|
|
307
318
|
'end-date-change',
|
|
308
319
|
/**
|
|
@@ -315,6 +326,9 @@ const CDateRangePicker = defineComponent({
|
|
|
315
326
|
'show',
|
|
316
327
|
/**
|
|
317
328
|
* Callback fired when the start date changed.
|
|
329
|
+
*
|
|
330
|
+
* @property {Date} date - date object
|
|
331
|
+
* @property {string} formatedDate - formated date
|
|
318
332
|
*/
|
|
319
333
|
'start-date-change',
|
|
320
334
|
],
|
|
@@ -450,10 +464,12 @@ const CDateRangePicker = defineComponent({
|
|
|
450
464
|
},
|
|
451
465
|
() => [
|
|
452
466
|
h(CFormInput, {
|
|
467
|
+
autocomplete: 'off',
|
|
453
468
|
class: {
|
|
454
469
|
hover: inputStartHoverValue.value,
|
|
455
470
|
},
|
|
456
471
|
disabled: props.disabled,
|
|
472
|
+
...(props.id && { name: props.range ? `${props.id}-start-date` : `${props.id}-date` }),
|
|
457
473
|
onClick: () => {
|
|
458
474
|
selectEndDate.value = false
|
|
459
475
|
},
|
|
@@ -485,10 +501,12 @@ const CDateRangePicker = defineComponent({
|
|
|
485
501
|
),
|
|
486
502
|
props.range &&
|
|
487
503
|
h(CFormInput, {
|
|
504
|
+
autocomplete: 'off',
|
|
488
505
|
class: {
|
|
489
506
|
hover: inputEndHoverValue.value,
|
|
490
507
|
},
|
|
491
508
|
disabled: props.disabled,
|
|
509
|
+
...(props.id && { name: `${props.id}-end-date` }),
|
|
492
510
|
onClick: () => {
|
|
493
511
|
selectEndDate.value = true
|
|
494
512
|
},
|
|
@@ -552,6 +570,7 @@ const CDateRangePicker = defineComponent({
|
|
|
552
570
|
confirmButtonVariant: props.confirmButtonVariant,
|
|
553
571
|
disabled: props.disabled,
|
|
554
572
|
footer: props.footer || props.timepicker,
|
|
573
|
+
id: props.id,
|
|
555
574
|
onCancel: () => {
|
|
556
575
|
startDate.value = initialStartDate.value
|
|
557
576
|
endDate.value = initialEndDate.value
|
|
@@ -64,14 +64,14 @@ const CDropdown = defineComponent({
|
|
|
64
64
|
/**
|
|
65
65
|
* Sets a specified direction and location of the dropdown menu.
|
|
66
66
|
*
|
|
67
|
-
* @values 'dropup', 'dropend', 'dropstart'
|
|
67
|
+
* @values 'center', 'dropup', 'dropup-center', 'dropend', 'dropstart'
|
|
68
68
|
*/
|
|
69
69
|
direction: {
|
|
70
70
|
type: String,
|
|
71
71
|
default: undefined,
|
|
72
72
|
required: false,
|
|
73
73
|
validator: (value: string) => {
|
|
74
|
-
return ['dropup', 'dropend', 'dropstart'].includes(value)
|
|
74
|
+
return ['center', 'dropup', 'dropup-center', 'dropend', 'dropstart'].includes(value)
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
77
|
/**
|
|
@@ -164,15 +164,26 @@ const CDropdown = defineComponent({
|
|
|
164
164
|
provide('dropdownToggleRef', dropdownToggleRef)
|
|
165
165
|
provide('dropdownMenuRef', dropdownMenuRef)
|
|
166
166
|
|
|
167
|
+
if (props.direction === 'center') {
|
|
168
|
+
placement.value = 'bottom'
|
|
169
|
+
}
|
|
170
|
+
|
|
167
171
|
if (props.direction === 'dropup') {
|
|
168
172
|
placement.value = 'top-start'
|
|
169
173
|
}
|
|
174
|
+
|
|
175
|
+
if (props.direction === 'dropup-center') {
|
|
176
|
+
placement.value = 'top'
|
|
177
|
+
}
|
|
178
|
+
|
|
170
179
|
if (props.direction === 'dropend') {
|
|
171
180
|
placement.value = 'right-start'
|
|
172
181
|
}
|
|
182
|
+
|
|
173
183
|
if (props.direction === 'dropstart') {
|
|
174
184
|
placement.value = 'left-start'
|
|
175
185
|
}
|
|
186
|
+
|
|
176
187
|
if (props.alignment === 'end') {
|
|
177
188
|
placement.value = 'bottom-end'
|
|
178
189
|
}
|
|
@@ -240,7 +251,11 @@ const CDropdown = defineComponent({
|
|
|
240
251
|
{
|
|
241
252
|
class: [
|
|
242
253
|
props.variant === 'nav-item' ? 'nav-item dropdown' : props.variant,
|
|
243
|
-
props.direction
|
|
254
|
+
props.direction === 'center'
|
|
255
|
+
? 'dropdown-center'
|
|
256
|
+
: props.direction === 'dropup-center'
|
|
257
|
+
? 'dropup dropup-center'
|
|
258
|
+
: props.direction,
|
|
244
259
|
],
|
|
245
260
|
},
|
|
246
261
|
slots.default && slots.default(),
|
|
@@ -132,16 +132,14 @@ const CFormCheck = defineComponent({
|
|
|
132
132
|
attrs.class,
|
|
133
133
|
]
|
|
134
134
|
|
|
135
|
-
const inputClassName =
|
|
136
|
-
? 'btn-check'
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
},
|
|
144
|
-
]
|
|
135
|
+
const inputClassName = [
|
|
136
|
+
props.button ? 'btn-check' : 'form-check-input',
|
|
137
|
+
{
|
|
138
|
+
'is-invalid': props.invalid,
|
|
139
|
+
'is-valid': props.valid,
|
|
140
|
+
'me-2': props.hitArea,
|
|
141
|
+
},
|
|
142
|
+
]
|
|
145
143
|
|
|
146
144
|
const formControl = () => {
|
|
147
145
|
return h('input', {
|
|
@@ -67,7 +67,7 @@ const CFormInput = defineComponent({
|
|
|
67
67
|
* The default name for a value passed using v-model.
|
|
68
68
|
*/
|
|
69
69
|
modelValue: {
|
|
70
|
-
type: String,
|
|
70
|
+
type: [File, Number, String],
|
|
71
71
|
default: undefined,
|
|
72
72
|
},
|
|
73
73
|
/**
|
|
@@ -171,6 +171,7 @@ const CFormInput = defineComponent({
|
|
|
171
171
|
h(
|
|
172
172
|
'input',
|
|
173
173
|
{
|
|
174
|
+
id: props.id,
|
|
174
175
|
...attrs,
|
|
175
176
|
class: [
|
|
176
177
|
props.plainText ? 'form-control-plaintext' : 'form-control',
|
|
@@ -113,6 +113,12 @@ const CFormTextarea = defineComponent({
|
|
|
113
113
|
'update:modelValue',
|
|
114
114
|
],
|
|
115
115
|
setup(props, { attrs, emit, slots }) {
|
|
116
|
+
const handleChange = (event: InputEvent) => {
|
|
117
|
+
const target = event.target as HTMLInputElement
|
|
118
|
+
emit('change', event)
|
|
119
|
+
emit('update:modelValue', target.value)
|
|
120
|
+
}
|
|
121
|
+
|
|
116
122
|
const handleInput = (event: InputEvent) => {
|
|
117
123
|
const target = event.target as HTMLInputElement
|
|
118
124
|
emit('input', event)
|
|
@@ -140,6 +146,7 @@ const CFormTextarea = defineComponent({
|
|
|
140
146
|
h(
|
|
141
147
|
'textarea',
|
|
142
148
|
{
|
|
149
|
+
id: props.id,
|
|
143
150
|
...attrs,
|
|
144
151
|
disabled: props.disabled,
|
|
145
152
|
readonly: props.readonly,
|
|
@@ -150,6 +157,7 @@ const CFormTextarea = defineComponent({
|
|
|
150
157
|
'is-valid': props.valid,
|
|
151
158
|
},
|
|
152
159
|
],
|
|
160
|
+
onChange: (event: InputEvent) => handleChange(event),
|
|
153
161
|
onInput: (event: InputEvent) => handleInput(event),
|
|
154
162
|
...(props.modelValue && { value: props.modelValue }),
|
|
155
163
|
},
|
|
@@ -49,7 +49,7 @@ describe(`Loads and display ${ComponentName} component`, () => {
|
|
|
49
49
|
})
|
|
50
50
|
it('contain slots and classes', () => {
|
|
51
51
|
expect(defaultWrapper.text()).toContain('Default slot')
|
|
52
|
-
expect(defaultWrapper.classes('form-control')).toBe(true)
|
|
52
|
+
expect(defaultWrapper.find('input').classes('form-control')).toBe(true)
|
|
53
53
|
})
|
|
54
54
|
})
|
|
55
55
|
|
|
@@ -59,11 +59,11 @@ describe(`Customize ${ComponentName} component`, () => {
|
|
|
59
59
|
})
|
|
60
60
|
it('contain slots and classes', () => {
|
|
61
61
|
expect(customWrapper.text()).toContain('Default slot')
|
|
62
|
-
expect(customWrapper.classes('form-control-plaintext')).toBe(true)
|
|
63
|
-
expect(customWrapper.classes('form-control-color')).toBe(true)
|
|
64
|
-
expect(customWrapper.classes('form-control-lg')).toBe(true)
|
|
65
|
-
expect(customWrapper.classes('is-invalid')).toBe(true)
|
|
66
|
-
expect(customWrapper.classes('is-valid')).toBe(true)
|
|
62
|
+
expect(customWrapper.find('input').classes('form-control-plaintext')).toBe(true)
|
|
63
|
+
expect(customWrapper.find('input').classes('form-control-color')).toBe(true)
|
|
64
|
+
expect(customWrapper.find('input').classes('form-control-lg')).toBe(true)
|
|
65
|
+
expect(customWrapper.find('input').classes('is-invalid')).toBe(true)
|
|
66
|
+
expect(customWrapper.find('input').classes('is-valid')).toBe(true)
|
|
67
67
|
})
|
|
68
68
|
})
|
|
69
69
|
|
|
@@ -73,10 +73,10 @@ describe(`Customize (two) ${ComponentName} component`, () => {
|
|
|
73
73
|
})
|
|
74
74
|
it('contain slots and classes', () => {
|
|
75
75
|
expect(customWrapperTwo.text()).toContain('Default slot')
|
|
76
|
-
expect(customWrapperTwo.classes('form-control')).toBe(true)
|
|
77
|
-
expect(customWrapper.classes('form-control-color')).toBe(true)
|
|
78
|
-
expect(customWrapper.classes('form-control-lg')).toBe(true)
|
|
79
|
-
expect(customWrapper.classes('is-invalid')).toBe(true)
|
|
80
|
-
expect(customWrapper.classes('is-valid')).toBe(true)
|
|
76
|
+
expect(customWrapperTwo.find('input').classes('form-control')).toBe(true)
|
|
77
|
+
expect(customWrapper.find('input').classes('form-control-color')).toBe(true)
|
|
78
|
+
expect(customWrapper.find('input').classes('form-control-lg')).toBe(true)
|
|
79
|
+
expect(customWrapper.find('input').classes('is-invalid')).toBe(true)
|
|
80
|
+
expect(customWrapper.find('input').classes('is-valid')).toBe(true)
|
|
81
81
|
})
|
|
82
82
|
})
|
|
@@ -33,8 +33,8 @@ describe(`Loads and display ${ComponentName} component`, () => {
|
|
|
33
33
|
})
|
|
34
34
|
it('contain slots and classes', () => {
|
|
35
35
|
expect(defaultWrapper.text()).toContain('Default slot')
|
|
36
|
-
expect(defaultWrapper.classes('form-range')).toBe(true)
|
|
37
|
-
expect(defaultWrapper.attributes('type')).toBe('range')
|
|
36
|
+
expect(defaultWrapper.find('input').classes('form-range')).toBe(true)
|
|
37
|
+
expect(defaultWrapper.find('input').attributes('type')).toBe('range')
|
|
38
38
|
})
|
|
39
39
|
})
|
|
40
40
|
|
|
@@ -44,12 +44,12 @@ describe(`Customize ${ComponentName} component`, () => {
|
|
|
44
44
|
})
|
|
45
45
|
it('contain slots and classes', () => {
|
|
46
46
|
expect(customWrapper.text()).toContain('Default slot')
|
|
47
|
-
expect(customWrapper.classes('form-range')).toBe(true)
|
|
48
|
-
expect(customWrapper.attributes('type')).toBe('range')
|
|
49
|
-
expect(customWrapper.attributes('disabled')).toBe('')
|
|
50
|
-
expect(customWrapper.attributes('max')).toBe('400')
|
|
51
|
-
expect(customWrapper.attributes('min')).toBe('50')
|
|
52
|
-
expect(customWrapper.attributes('readonly')).toBe('')
|
|
53
|
-
expect(customWrapper.attributes('steps')).toBe('10')
|
|
47
|
+
expect(customWrapper.find('input').classes('form-range')).toBe(true)
|
|
48
|
+
expect(customWrapper.find('input').attributes('type')).toBe('range')
|
|
49
|
+
expect(customWrapper.find('input').attributes('disabled')).toBe('')
|
|
50
|
+
expect(customWrapper.find('input').attributes('max')).toBe('400')
|
|
51
|
+
expect(customWrapper.find('input').attributes('min')).toBe('50')
|
|
52
|
+
expect(customWrapper.find('input').attributes('readonly')).toBe('')
|
|
53
|
+
expect(customWrapper.find('input').attributes('steps')).toBe('10')
|
|
54
54
|
})
|
|
55
55
|
})
|
|
@@ -31,7 +31,7 @@ describe(`Loads and display ${ComponentName} component`, () => {
|
|
|
31
31
|
})
|
|
32
32
|
it('contain slots and classes', () => {
|
|
33
33
|
expect(defaultWrapper.text()).toContain('Default slot')
|
|
34
|
-
expect(defaultWrapper.classes('form-select')).toBe(true)
|
|
34
|
+
expect(defaultWrapper.find('select').classes('form-select')).toBe(true)
|
|
35
35
|
})
|
|
36
36
|
})
|
|
37
37
|
|
|
@@ -41,8 +41,8 @@ describe(`Customize ${ComponentName} component`, () => {
|
|
|
41
41
|
})
|
|
42
42
|
it('contain slots and classes', () => {
|
|
43
43
|
expect(customWrapper.text()).toContain('Default slot')
|
|
44
|
-
expect(customWrapper.classes('form-select')).toBe(true)
|
|
45
|
-
expect(customWrapper.classes('form-select-lg')).toBe(true)
|
|
46
|
-
expect(customWrapper.attributes('size')).toBe('200')
|
|
44
|
+
expect(customWrapper.find('select').classes('form-select')).toBe(true)
|
|
45
|
+
expect(customWrapper.find('select').classes('form-select-lg')).toBe(true)
|
|
46
|
+
expect(customWrapper.find('select').attributes('size')).toBe('200')
|
|
47
47
|
})
|
|
48
48
|
})
|
|
@@ -32,7 +32,7 @@ describe(`Loads and display ${ComponentName} component`, () => {
|
|
|
32
32
|
})
|
|
33
33
|
it('contain slots and classes', () => {
|
|
34
34
|
expect(defaultWrapper.text()).toContain('Default slot')
|
|
35
|
-
expect(defaultWrapper.classes('form-control')).toBe(true)
|
|
35
|
+
expect(defaultWrapper.find('textarea').classes('form-control')).toBe(true)
|
|
36
36
|
})
|
|
37
37
|
})
|
|
38
38
|
|
|
@@ -42,8 +42,8 @@ describe(`Customize ${ComponentName} component`, () => {
|
|
|
42
42
|
})
|
|
43
43
|
it('contain slots and classes', () => {
|
|
44
44
|
expect(customWrapper.text()).toContain('Default slot')
|
|
45
|
-
expect(customWrapper.classes('form-control-plaintext')).toBe(true)
|
|
46
|
-
expect(customWrapper.classes('is-invalid')).toBe(true)
|
|
47
|
-
expect(customWrapper.classes('is-valid')).toBe(true)
|
|
45
|
+
expect(customWrapper.find('textarea').classes('form-control-plaintext')).toBe(true)
|
|
46
|
+
expect(customWrapper.find('textarea').classes('is-invalid')).toBe(true)
|
|
47
|
+
expect(customWrapper.find('textarea').classes('is-valid')).toBe(true)
|
|
48
48
|
})
|
|
49
49
|
})
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize with label - CFormCheck component renders correctly 1`] = `
|
|
3
|
+
exports[`Customize with label - CFormCheck component renders correctly 1`] = `
|
|
4
|
+
"<input class=\\"btn-check is-invalid is-valid\\" id=\\"uniqueid\\" type=\\"checkbox\\">
|
|
5
|
+
<label class=\\"btn btn-outline-warning btn-lg rounded-circle\\" disabled=\\"false\\" for=\\"uniqueid\\">some label</label>"
|
|
6
|
+
`;
|
|
4
7
|
|
|
5
|
-
exports[`Customize with label in slot - CFormCheck component renders correctly 1`] = `
|
|
8
|
+
exports[`Customize with label in slot - CFormCheck component renders correctly 1`] = `
|
|
9
|
+
"<input class=\\"btn-check is-invalid is-valid\\" id=\\"uniqueid\\" type=\\"checkbox\\">
|
|
10
|
+
<label class=\\"btn btn-outline-warning btn-lg rounded-circle\\" disabled=\\"false\\" for=\\"uniqueid\\">some label</label>"
|
|
11
|
+
`;
|
|
6
12
|
|
|
7
13
|
exports[`Loads and display CFormCheck component renders correctly 1`] = `"<input class=\\"form-check-input\\" type=\\"checkbox\\">"`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize CFormRange component renders correctly 1`] = `"<input class=\\"form-range\\" disabled=\\"\\" max=\\"400\\" min=\\"50\\"
|
|
3
|
+
exports[`Customize CFormRange component renders correctly 1`] = `"<input class=\\"form-range\\" disabled=\\"\\" max=\\"400\\" min=\\"50\\" readonly=\\"\\" steps=\\"10\\" type=\\"range\\">"`;
|
|
4
4
|
|
|
5
5
|
exports[`Loads and display CFormRange component renders correctly 1`] = `"<input class=\\"form-range\\" type=\\"range\\">"`;
|
|
@@ -145,6 +145,8 @@ const CModal = defineComponent({
|
|
|
145
145
|
const handleEnter = (el: RendererElement, done: () => void) => {
|
|
146
146
|
executeAfterTransition(() => done(), el as HTMLElement)
|
|
147
147
|
document.body.classList.add('modal-open')
|
|
148
|
+
document.body.style.overflow = 'hidden'
|
|
149
|
+
document.body.style.paddingRight = '0px'
|
|
148
150
|
el.style.display = 'block'
|
|
149
151
|
setTimeout(() => {
|
|
150
152
|
el.classList.add('show')
|
|
@@ -160,6 +162,8 @@ const CModal = defineComponent({
|
|
|
160
162
|
const handleLeave = (el: RendererElement, done: () => void) => {
|
|
161
163
|
executeAfterTransition(() => done(), el as HTMLElement)
|
|
162
164
|
document.body.classList.remove('modal-open')
|
|
165
|
+
document.body.style.removeProperty('overflow')
|
|
166
|
+
document.body.style.removeProperty('padding-right')
|
|
163
167
|
if (document.body.className === '') {
|
|
164
168
|
document.body.removeAttribute('class')
|
|
165
169
|
}
|
|
@@ -7,8 +7,7 @@ exports[`Customize CModal component renders correctly 1`] = `
|
|
|
7
7
|
<div class=\\"modal-content bazinga\\">Default slot</div>
|
|
8
8
|
</div>
|
|
9
9
|
</div>
|
|
10
|
-
</transition-stub>
|
|
11
|
-
<!---->"
|
|
10
|
+
</transition-stub>"
|
|
12
11
|
`;
|
|
13
12
|
|
|
14
13
|
exports[`Loads and display CModal component renders correctly 1`] = `
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize CModalHeader component renders correctly 1`] = `"<span class=\\"modal-header\\">Default slot<button class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></span>"`;
|
|
3
|
+
exports[`Customize CModalHeader component renders correctly 1`] = `"<span class=\\"modal-header\\">Default slot<button type=\\"button\\" class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></span>"`;
|
|
4
4
|
|
|
5
|
-
exports[`Loads and display CModalHeader component renders correctly 1`] = `"<span class=\\"modal-header\\">Default slot<button class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></span>"`;
|
|
5
|
+
exports[`Loads and display CModalHeader component renders correctly 1`] = `"<span class=\\"modal-header\\">Default slot<button type=\\"button\\" class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></span>"`;
|
|
@@ -144,6 +144,7 @@ const CSidebar = defineComponent({
|
|
|
144
144
|
|
|
145
145
|
const handleHide = () => {
|
|
146
146
|
visible.value = false
|
|
147
|
+
emit('visible-change', false)
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
const handleResize = () => {
|
|
@@ -198,9 +199,7 @@ const CSidebar = defineComponent({
|
|
|
198
199
|
h(CBackdrop, {
|
|
199
200
|
class: 'sidebar-backdrop d-none',
|
|
200
201
|
visible: props.visible,
|
|
201
|
-
onClick: () =>
|
|
202
|
-
visible.value = false
|
|
203
|
-
},
|
|
202
|
+
onClick: () => handleHide(),
|
|
204
203
|
}),
|
|
205
204
|
]
|
|
206
205
|
},
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize CSidebar component renders correctly 1`] = `
|
|
4
|
-
"<div class=\\"sidebar sidebar-narrow sidebar-overlaid sidebar-fixed sidebar-xl sidebar-narrow-unfoldable\\">Default slot</div>
|
|
5
|
-
<!---->"
|
|
6
|
-
`;
|
|
3
|
+
exports[`Customize CSidebar component renders correctly 1`] = `"<div class=\\"sidebar sidebar-narrow sidebar-overlaid sidebar-fixed sidebar-xl sidebar-narrow-unfoldable\\">Default slot</div>"`;
|
|
7
4
|
|
|
8
|
-
exports[`Loads and display CSidebar component renders correctly 1`] = `
|
|
9
|
-
"<div class=\\"sidebar hide\\">Default slot</div>
|
|
10
|
-
<!---->"
|
|
11
|
-
`;
|
|
5
|
+
exports[`Loads and display CSidebar component renders correctly 1`] = `"<div class=\\"sidebar hide\\">Default slot</div>"`;
|
|
@@ -97,6 +97,15 @@ const CTable = defineComponent({
|
|
|
97
97
|
type: Boolean,
|
|
98
98
|
required: false,
|
|
99
99
|
},
|
|
100
|
+
/**
|
|
101
|
+
* Add zebra-striping to any table column.
|
|
102
|
+
*
|
|
103
|
+
* @since 4.4.0
|
|
104
|
+
*/
|
|
105
|
+
stripedColumns: {
|
|
106
|
+
type: Boolean,
|
|
107
|
+
required: false,
|
|
108
|
+
},
|
|
100
109
|
},
|
|
101
110
|
setup(props, { slots, attrs }) {
|
|
102
111
|
const table = () =>
|
|
@@ -115,6 +124,7 @@ const CTable = defineComponent({
|
|
|
115
124
|
'table-hover': props.hover,
|
|
116
125
|
'table-sm': props.small,
|
|
117
126
|
'table-striped': props.striped,
|
|
127
|
+
'table-striped-columns': props.stripedColumns,
|
|
118
128
|
},
|
|
119
129
|
attrs.class,
|
|
120
130
|
],
|
|
@@ -238,6 +238,7 @@ const CTimePicker = defineComponent({
|
|
|
238
238
|
const InputGroup = () =>
|
|
239
239
|
h(CInputGroup, { class: 'picker-input-group', size: props.size }, () => [
|
|
240
240
|
h(CFormInput, {
|
|
241
|
+
autocomplete: 'off',
|
|
241
242
|
disabled: props.disabled,
|
|
242
243
|
onInput: (event) => {
|
|
243
244
|
if (isValidTime(event.target.value)) {
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Customize CToastClose component renders correctly 1`] = `"<button class=\\"btn btn-undefined\\" type=\\"button\\">Default slot</button>"`;
|
|
4
4
|
|
|
5
|
-
exports[`Loads and display CToastClose component renders correctly 1`] = `"<button class=\\"btn btn-close\\" aria-label=\\"Close\\"></button>"`;
|
|
5
|
+
exports[`Loads and display CToastClose component renders correctly 1`] = `"<button type=\\"button\\" class=\\"btn btn-close\\" aria-label=\\"Close\\"></button>"`;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`Customize CToastHeader component renders correctly 1`] = `"<div class=\\"toast-header\\">Default slot<button class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></div>"`;
|
|
3
|
+
exports[`Customize CToastHeader component renders correctly 1`] = `"<div class=\\"toast-header\\">Default slot<button type=\\"button\\" class=\\"btn btn-close\\" aria-label=\\"Close\\"></button></div>"`;
|
|
4
4
|
|
|
5
5
|
exports[`Loads and display CToastHeader component renders correctly 1`] = `
|
|
6
6
|
"<div class=\\"toast-header\\">Default slot
|
|
@@ -96,7 +96,7 @@ export default {
|
|
|
96
96
|
})
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
unmounted(binding: DirectiveBinding): void {
|
|
99
|
+
unmounted(_el: HTMLElement, binding: DirectiveBinding): void {
|
|
100
100
|
const popover = binding.arg && document.getElementById(binding.arg)
|
|
101
101
|
popover && popover.remove()
|
|
102
102
|
},
|
|
@@ -92,7 +92,7 @@ export default {
|
|
|
92
92
|
})
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
|
-
beforeUnmount(binding: DirectiveBinding): void {
|
|
95
|
+
beforeUnmount(_el: HTMLElement, binding: DirectiveBinding): void {
|
|
96
96
|
const tooltip = binding.arg && document.getElementById(binding.arg)
|
|
97
97
|
tooltip && tooltip.remove()
|
|
98
98
|
},
|