@coreui/vue-pro 4.3.0-beta.1 → 4.3.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 (52) hide show
  1. package/README.md +1 -1
  2. package/dist/components/calendar/CCalendar.d.ts +15 -2
  3. package/dist/components/carousel/CCarousel.d.ts +1 -1
  4. package/dist/components/date-picker/CDatePicker.d.ts +10 -2
  5. package/dist/components/date-range-picker/CDateRangePicker.d.ts +86 -3
  6. package/dist/components/form/CFormCheck.d.ts +88 -39
  7. package/dist/components/form/CFormControlValidation.d.ts +98 -0
  8. package/dist/components/form/CFormControlWrapper.d.ts +6 -0
  9. package/dist/components/form/CFormFeedback.d.ts +2 -2
  10. package/dist/components/form/CFormInput.d.ts +125 -25
  11. package/dist/components/form/CFormRange.d.ts +18 -16
  12. package/dist/components/form/CFormSelect.d.ts +125 -16
  13. package/dist/components/form/CFormSwitch.d.ts +0 -23
  14. package/dist/components/form/CFormTextarea.d.ts +125 -24
  15. package/dist/components/modal/CModal.d.ts +1 -1
  16. package/dist/components/offcanvas/COffcanvas.d.ts +1 -1
  17. package/dist/components/time-picker/CTimePicker.d.ts +1 -1
  18. package/dist/components/toast/CToast.d.ts +7 -1
  19. package/dist/index.es.js +3583 -577
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/index.js +3582 -576
  22. package/dist/index.js.map +1 -1
  23. package/dist/utils/calendar.d.ts +3 -1
  24. package/dist/utils/time.d.ts +6 -2
  25. package/dist/utils/transition.d.ts +3 -0
  26. package/package.json +11 -10
  27. package/src/components/backdrop/CBackdrop.ts +8 -6
  28. package/src/components/button/CButton.ts +2 -2
  29. package/src/components/calendar/CCalendar.ts +132 -62
  30. package/src/components/collapse/CCollapse.ts +5 -6
  31. package/src/components/date-picker/CDatePicker.ts +7 -10
  32. package/src/components/date-range-picker/CDateRangePicker.ts +198 -100
  33. package/src/components/form/CFormCheck.ts +119 -94
  34. package/src/components/form/CFormControlValidation.ts +97 -0
  35. package/src/components/form/CFormControlWrapper.ts +106 -0
  36. package/src/components/form/CFormInput.ts +113 -29
  37. package/src/components/form/CFormRange.ts +25 -11
  38. package/src/components/form/CFormSelect.ts +126 -41
  39. package/src/components/form/CFormSwitch.ts +2 -21
  40. package/src/components/form/CFormTextarea.ts +105 -25
  41. package/src/components/modal/CModal.ts +14 -6
  42. package/src/components/nav/CNavGroup.ts +4 -6
  43. package/src/components/offcanvas/COffcanvas.ts +5 -7
  44. package/src/components/picker/CPicker.ts +1 -0
  45. package/src/components/popover/CPopover.ts +5 -5
  46. package/src/components/tabs/CTabPane.ts +4 -6
  47. package/src/components/time-picker/CTimePicker.ts +12 -17
  48. package/src/components/toast/CToast.ts +17 -12
  49. package/src/components/tooltip/CTooltip.ts +5 -5
  50. package/src/utils/calendar.ts +86 -9
  51. package/src/utils/time.ts +29 -3
  52. package/src/utils/transition.ts +65 -0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, h } from 'vue'
2
- import { shape } from 'vue-types'
3
2
 
4
- import { Color, Shape } from '../props'
3
+ import { CButton } from '../button'
4
+ import { CFormControlValidation } from './CFormControlValidation'
5
5
  import { CFormLabel } from './CFormLabel'
6
6
 
7
7
  const CFormCheck = defineComponent({
@@ -10,52 +10,51 @@ const CFormCheck = defineComponent({
10
10
  props: {
11
11
  /**
12
12
  * Create button-like checkboxes and radio buttons.
13
+ *
14
+ * @see http://coreui.io/vue/docs/components/button.html
13
15
  */
14
- button: shape({
15
- /**
16
- * Sets the color context of the component to one of CoreUI’s themed colors.
17
- *
18
- * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light'
19
- */
20
- color: Color,
21
- /**
22
- * Select the shape of the component.
23
- *
24
- * @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3'
25
- */
26
- shape: Shape,
27
- /**
28
- * Size the component small or large.
29
- *
30
- * @values 'sm' | 'lg'
31
- */
32
- size: {
33
- type: String,
34
- default: undefined,
35
- required: false,
36
- validator: (value: string) => {
37
- return ['sm', 'lg'].includes(value)
38
- },
39
- },
40
- /**
41
- * Set the button variant to an outlined button or a ghost button.
42
- */
43
- variant: {
44
- type: String,
45
- default: undefined,
46
- required: false,
47
- validator: (value: string) => {
48
- return ['outline', 'ghost'].includes(value)
49
- },
16
+ button: {
17
+ type: Object,
18
+ },
19
+ /**
20
+ * Provide valuable, actionable feedback.
21
+ *
22
+ * @since 4.3.0
23
+ */
24
+ feedback: {
25
+ type: String,
26
+ },
27
+ /**
28
+ * Provide valuable, actionable feedback.
29
+ *
30
+ * @since 4.3.0
31
+ */
32
+ feedbackInvalid: {
33
+ type: String,
34
+ },
35
+ /**
36
+ * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`.
37
+ *
38
+ * @since 4.3.0
39
+ */
40
+ feedbackValid: {
41
+ type: String,
42
+ },
43
+ /**
44
+ * Sets hit area to the full area of the component.
45
+ */
46
+ hitArea: {
47
+ type: String,
48
+ validator: (value: string): boolean => {
49
+ // The value must match one of these strings
50
+ return ['full'].includes(value)
50
51
  },
51
- }),
52
+ },
52
53
  /**
53
54
  * The id global attribute defines an identifier (ID) that must be unique in the whole document.
54
55
  */
55
56
  id: {
56
57
  type: String,
57
- default: undefined,
58
- required: false,
59
58
  },
60
59
  /**
61
60
  * Input Checkbox indeterminate Property
@@ -66,22 +65,16 @@ const CFormCheck = defineComponent({
66
65
  */
67
66
  inline: {
68
67
  type: Boolean,
69
- required: false,
70
68
  },
71
69
  /**
72
70
  * Set component validation state to invalid.
73
71
  */
74
- invalid: {
75
- type: Boolean,
76
- required: false,
77
- },
72
+ invalid: Boolean,
78
73
  /**
79
74
  * The element represents a caption for a component.
80
75
  */
81
76
  label: {
82
77
  type: String,
83
- default: undefined,
84
- required: false,
85
78
  },
86
79
  /**
87
80
  * The default name for a value passed using v-model.
@@ -89,8 +82,13 @@ const CFormCheck = defineComponent({
89
82
  modelValue: {
90
83
  type: [Boolean, String],
91
84
  value: undefined,
92
- required: false,
93
85
  },
86
+ /**
87
+ * Display validation feedback in a styled tooltip.
88
+ *
89
+ * @since 4.3.0
90
+ */
91
+ tooltipFeedback: Boolean,
94
92
  /**
95
93
  * Specifies the type of component.
96
94
  *
@@ -99,14 +97,12 @@ const CFormCheck = defineComponent({
99
97
  type: {
100
98
  type: String,
101
99
  default: 'checkbox',
102
- required: false,
103
100
  },
104
101
  /**
105
102
  * Set component validation state to valid.
106
103
  */
107
104
  valid: {
108
105
  type: Boolean,
109
- required: false,
110
106
  },
111
107
  },
112
108
  emits: [
@@ -126,66 +122,95 @@ const CFormCheck = defineComponent({
126
122
  emit('update:modelValue', target.checked)
127
123
  }
128
124
 
129
- const formControl = () => {
130
- return h('input', {
131
- ...attrs,
132
- checked: props.modelValue,
133
- class: [
134
- props.button ? 'btn-check' : 'form-check-input',
125
+ const className = [
126
+ 'form-check',
127
+ {
128
+ 'form-check-inline': props.inline,
129
+ 'is-invalid': props.invalid,
130
+ 'is-valid': props.valid,
131
+ },
132
+ attrs.class,
133
+ ]
134
+
135
+ const inputClassName = props.button
136
+ ? 'btn-check'
137
+ : [
138
+ 'form-check-input',
135
139
  {
136
140
  'is-invalid': props.invalid,
137
141
  'is-valid': props.valid,
142
+ 'me-2': props.hitArea,
138
143
  },
139
- ],
144
+ ]
145
+
146
+ const formControl = () => {
147
+ return h('input', {
148
+ ...attrs,
149
+ ...(props.modelValue && { checked: props.modelValue }),
150
+ class: inputClassName,
140
151
  id: props.id,
141
152
  indeterminate: props.indeterminate,
142
153
  onChange: (event: InputEvent) => handleChange(event),
143
154
  type: props.type,
144
155
  })
145
156
  }
146
- const formLabel = () => {
147
- return h(
148
- CFormLabel,
149
- {
150
- customClassName: props.button
151
- ? [
152
- 'btn',
153
- props.button.variant
154
- ? `btn-${props.button.variant}-${props.button.color}`
155
- : `btn-${props.button.color}`,
156
- {
157
- [`btn-${props.button.size}`]: props.button.size,
158
- },
159
- `${props.button.shape}`,
160
- ]
161
- : 'form-check-label',
162
- ...(props.id && { for: props.id }),
163
- },
164
- {
165
- default: () => (slots.label && slots.label()) || props.label,
166
- },
167
- )
157
+
158
+ const formLabel = () =>
159
+ props.button
160
+ ? h(
161
+ CButton,
162
+ {
163
+ component: 'label',
164
+ ...props.button,
165
+ ...(props.id && { for: props.id }),
166
+ },
167
+ {
168
+ default: () => (slots.label && slots.label()) || props.label,
169
+ },
170
+ )
171
+ : h(
172
+ CFormLabel,
173
+ { class: 'form-check-label', ...(props.id && { for: props.id }) },
174
+ {
175
+ default: () => (slots.label && slots.label()) || props.label,
176
+ },
177
+ )
178
+
179
+ const formValidation = () => {
180
+ return h(CFormControlValidation, {
181
+ describedby: attrs['aria-describedby'] as string,
182
+ feedback: props.feedback,
183
+ feedbackInvalid: props.feedbackInvalid,
184
+ feedbackValid: props.feedbackValid,
185
+ invalid: props.invalid,
186
+ tooltipFeedback: props.tooltipFeedback,
187
+ valid: props.valid,
188
+ })
168
189
  }
169
190
 
170
191
  return () =>
171
192
  props.button
172
- ? [formControl(), (slots.label || props.label) && formLabel()]
193
+ ? [formControl(), (slots.label || props.label) && formLabel(), formValidation()]
173
194
  : props.label
174
- ? h(
175
- 'div',
176
- {
177
- class: [
178
- 'form-check',
195
+ ? props.hitArea
196
+ ? [
197
+ h(
198
+ CFormLabel,
179
199
  {
180
- 'form-check-inline': props.inline,
181
- 'is-invalid': props.invalid,
182
- 'is-valid': props.valid,
200
+ customClassName: className,
201
+ ...(props.id && { for: props.id }),
183
202
  },
184
- attrs.class,
185
- ],
186
- },
187
- [formControl(), props.label && formLabel()],
188
- )
203
+ [formControl(), props.label],
204
+ ),
205
+ formValidation(),
206
+ ]
207
+ : h(
208
+ 'div',
209
+ {
210
+ class: className,
211
+ },
212
+ [formControl(), props.label && formLabel(), formValidation()],
213
+ )
189
214
  : formControl()
190
215
  },
191
216
  })
@@ -0,0 +1,97 @@
1
+ import { defineComponent, h } from 'vue'
2
+ import { CFormFeedback } from './CFormFeedback'
3
+
4
+ const CFormControlValidation = defineComponent({
5
+ name: 'CFormControlValidation',
6
+ inheritAttrs: false,
7
+ props: {
8
+ /**
9
+ * @ignore
10
+ */
11
+ describedby: {
12
+ type: String,
13
+ },
14
+ /**
15
+ * Provide valuable, actionable feedback.
16
+ *
17
+ * @since 4.3.0
18
+ */
19
+ feedback: {
20
+ type: String,
21
+ },
22
+ /**
23
+ * Provide valuable, actionable feedback.
24
+ *
25
+ * @since 4.3.0
26
+ */
27
+ feedbackInvalid: {
28
+ type: String,
29
+ },
30
+ /**
31
+ * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`.
32
+ *
33
+ * @since 4.3.0
34
+ */
35
+ feedbackValid: {
36
+ type: String,
37
+ },
38
+ /**
39
+ * Set component validation state to invalid.
40
+ */
41
+ invalid: Boolean,
42
+ /**
43
+ * Display validation feedback in a styled tooltip.
44
+ *
45
+ * @since 4.3.0
46
+ */
47
+ tooltipFeedback: Boolean,
48
+ /**
49
+ * Set component validation state to valid.
50
+ */
51
+ valid: Boolean,
52
+ },
53
+ setup(props, { slots }) {
54
+ return () => [
55
+ props.feedback &&
56
+ (props.valid || props.invalid) &&
57
+ h(
58
+ CFormFeedback,
59
+ {
60
+ ...(props.invalid && { id: props.describedby }),
61
+ invalid: props.invalid,
62
+ tooltip: props.tooltipFeedback,
63
+ valid: props.valid,
64
+ },
65
+ {
66
+ default: () => (slots.feedback && slots.feedback()) || props.feedback,
67
+ },
68
+ ),
69
+ (props.feedbackInvalid || slots.feedbackInvalid) &&
70
+ h(
71
+ CFormFeedback,
72
+ {
73
+ id: props.describedby,
74
+ invalid: true,
75
+ tooltip: props.tooltipFeedback,
76
+ },
77
+ {
78
+ default: () =>
79
+ (slots.feedbackInvalid && slots.feedbackInvalid()) || props.feedbackInvalid,
80
+ },
81
+ ),
82
+ (props.feedbackValid || slots.feedbackValid) &&
83
+ h(
84
+ CFormFeedback,
85
+ {
86
+ tooltip: props.tooltipFeedback,
87
+ valid: true,
88
+ },
89
+ {
90
+ default: () => (slots.feedbackValid && slots.feedbackValid()) || props.feedbackValid,
91
+ },
92
+ ),
93
+ ]
94
+ },
95
+ })
96
+
97
+ export { CFormControlValidation }
@@ -0,0 +1,106 @@
1
+ import { defineComponent, h } from 'vue'
2
+ import { CFormControlValidation } from './CFormControlValidation'
3
+ import { CFormFloating } from './CFormFloating'
4
+ import { CFormLabel } from './CFormLabel'
5
+ import { CFormText } from './CFormText'
6
+
7
+ const CFormControlWrapper = defineComponent({
8
+ name: 'CFormControlWrapper',
9
+ inheritAttrs: false,
10
+ props: {
11
+ ...CFormControlValidation.props,
12
+ /**
13
+ * Provide valuable, actionable valid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`.
14
+ *
15
+ * @since 4.3.0
16
+ */
17
+ floatingLabel: {
18
+ type: String,
19
+ },
20
+ /**
21
+ * @ignore
22
+ */
23
+ id: {
24
+ type: String,
25
+ },
26
+ /**
27
+ * Add a caption for a component.
28
+ *
29
+ * @since 4.3.0
30
+ */
31
+ label: {
32
+ type: String,
33
+ },
34
+ /**
35
+ * Add helper text to the component.
36
+ *
37
+ * @since 4.3.0
38
+ */
39
+ text: {
40
+ type: String,
41
+ },
42
+ },
43
+ setup(props, { slots }) {
44
+ return () =>
45
+ props.floatingLabel
46
+ ? h(CFormFloating, [
47
+ slots.default && slots.default(),
48
+ h(
49
+ CFormLabel,
50
+ {
51
+ for: props.id,
52
+ },
53
+ {
54
+ default: () => (slots.label && slots.label()) || props.label || props.floatingLabel,
55
+ },
56
+ ),
57
+ ])
58
+ : [
59
+ (props.label || slots.label) &&
60
+ h(
61
+ CFormLabel,
62
+ {
63
+ for: props.id,
64
+ },
65
+ {
66
+ default: () => (slots.label && slots.label()) || props.label,
67
+ },
68
+ ),
69
+ slots.default && slots.default(),
70
+ (props.text || slots.text) &&
71
+ h(
72
+ CFormText,
73
+ {
74
+ id: props.describedby,
75
+ },
76
+ {
77
+ default: () => (slots.text && slots.text()) || props.text,
78
+ },
79
+ ),
80
+ h(
81
+ CFormControlValidation,
82
+ {
83
+ describedby: props.describedby,
84
+ feedback: props.feedback,
85
+ feedbackInvalid: props.feedbackInvalid,
86
+ feedbackValid: props.feedbackValid,
87
+ floatingLabel: props.floatingLabel,
88
+ invalid: props.invalid,
89
+ tooltipFeedback: props.tooltipFeedback,
90
+ valid: props.valid,
91
+ },
92
+ {
93
+ ...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }),
94
+ ...(slots.feedbackInvalid && {
95
+ feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
96
+ }),
97
+ ...(slots.feedbackValid && {
98
+ feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
99
+ }),
100
+ },
101
+ ),
102
+ ]
103
+ },
104
+ })
105
+
106
+ export { CFormControlWrapper }
@@ -1,4 +1,5 @@
1
1
  import { defineComponent, h } from 'vue'
2
+ import { CFormControlWrapper } from './CFormControlWrapper'
2
3
 
3
4
  const CFormInput = defineComponent({
4
5
  name: 'CFormInput',
@@ -10,12 +11,57 @@ const CFormInput = defineComponent({
10
11
  type: Boolean,
11
12
  required: false,
12
13
  },
14
+
15
+ // Inherited Props from CFormControlWrapper
16
+ /**
17
+ * Provide valuable, actionable feedback.
18
+ *
19
+ * @since 4.3.0
20
+ */
21
+ feedback: {
22
+ type: String,
23
+ },
24
+ /**
25
+ * Provide valuable, actionable feedback.
26
+ *
27
+ * @since 4.3.0
28
+ */
29
+ feedbackInvalid: {
30
+ type: String,
31
+ },
32
+ /**
33
+ * Provide valuable, actionable invalid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`.
34
+ *
35
+ * @since 4.3.0
36
+ */
37
+ feedbackValid: {
38
+ type: String,
39
+ },
40
+ /**
41
+ * Provide valuable, actionable valid feedback when using standard HTML form validation which applied two CSS pseudo-classes, `:invalid` and `:valid`.
42
+ *
43
+ * @since 4.3.0
44
+ */
45
+ floatingLabel: {
46
+ type: String,
47
+ },
48
+ /**
49
+ * The id global attribute defines an identifier (ID) that must be unique in the whole document.
50
+ */
51
+ id: {
52
+ type: String,
53
+ },
13
54
  /**
14
55
  * Set component validation state to invalid.
15
56
  */
16
- invalid: {
17
- type: Boolean,
18
- required: false,
57
+ invalid: Boolean,
58
+ /**
59
+ * Add a caption for a component.
60
+ *
61
+ * @since 4.3.0
62
+ */
63
+ label: {
64
+ type: String,
19
65
  },
20
66
  /**
21
67
  * The default name for a value passed using v-model.
@@ -23,7 +69,6 @@ const CFormInput = defineComponent({
23
69
  modelValue: {
24
70
  type: String,
25
71
  default: undefined,
26
- require: false,
27
72
  },
28
73
  /**
29
74
  * Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use only along side `readonly`.
@@ -46,12 +91,24 @@ const CFormInput = defineComponent({
46
91
  */
47
92
  size: {
48
93
  type: String,
49
- default: undefined,
50
- require: false,
51
94
  validator: (value: string) => {
52
95
  return ['sm', 'lg'].includes(value)
53
96
  },
54
97
  },
98
+ /**
99
+ * Add helper text to the component.
100
+ *
101
+ * @since 4.3.0
102
+ */
103
+ text: {
104
+ type: String,
105
+ },
106
+ /**
107
+ * Display validation feedback in a styled tooltip.
108
+ *
109
+ * @since 4.3.0
110
+ */
111
+ tooltipFeedback: Boolean,
55
112
  /**
56
113
  * Specifies the type of component.
57
114
  *
@@ -60,15 +117,11 @@ const CFormInput = defineComponent({
60
117
  type: {
61
118
  type: String,
62
119
  default: 'text',
63
- require: false,
64
120
  },
65
121
  /**
66
122
  * Set component validation state to valid.
67
123
  */
68
- valid: {
69
- type: Boolean,
70
- required: false,
71
- },
124
+ valid: Boolean,
72
125
  },
73
126
  emits: [
74
127
  /**
@@ -84,12 +137,13 @@ const CFormInput = defineComponent({
84
137
  */
85
138
  'update:modelValue',
86
139
  ],
87
- setup(props, { emit, slots }) {
140
+ setup(props, { attrs, emit, slots }) {
88
141
  const handleChange = (event: InputEvent) => {
89
142
  const target = event.target as HTMLInputElement
90
143
  emit('change', event)
91
144
  emit('update:modelValue', target.value)
92
145
  }
146
+
93
147
  const handleInput = (event: InputEvent) => {
94
148
  const target = event.target as HTMLInputElement
95
149
  emit('input', event)
@@ -98,25 +152,55 @@ const CFormInput = defineComponent({
98
152
 
99
153
  return () =>
100
154
  h(
101
- 'input',
155
+ CFormControlWrapper,
156
+ {
157
+ describedby: attrs['aria-describedby'],
158
+ feedback: props.feedback,
159
+ feedbackInvalid: props.feedbackInvalid,
160
+ feedbackValid: props.feedbackValid,
161
+ floatingLabel: props.floatingLabel,
162
+ id: props.id,
163
+ invalid: props.invalid,
164
+ label: props.label,
165
+ text: props.text,
166
+ tooltipFeedback: props.tooltipFeedback,
167
+ valid: props.valid,
168
+ },
102
169
  {
103
- class: [
104
- props.plainText ? 'form-control-plaintext' : 'form-control',
105
- {
106
- 'form-control-color': props.type === 'color',
107
- [`form-control-${props.size}`]: props.size,
108
- 'is-invalid': props.invalid,
109
- 'is-valid': props.valid,
110
- },
111
- ],
112
- disabled: props.disabled,
113
- onChange: (event: InputEvent) => handleChange(event),
114
- onInput: (event: InputEvent) => handleInput(event),
115
- readonly: props.readonly,
116
- type: props.type,
117
- value: props.modelValue,
170
+ default: () =>
171
+ h(
172
+ 'input',
173
+ {
174
+ ...attrs,
175
+ class: [
176
+ props.plainText ? 'form-control-plaintext' : 'form-control',
177
+ {
178
+ 'form-control-color': props.type === 'color',
179
+ [`form-control-${props.size}`]: props.size,
180
+ 'is-invalid': props.invalid,
181
+ 'is-valid': props.valid,
182
+ },
183
+ attrs.class,
184
+ ],
185
+ disabled: props.disabled,
186
+ onChange: (event: InputEvent) => handleChange(event),
187
+ onInput: (event: InputEvent) => handleInput(event),
188
+ readonly: props.readonly,
189
+ type: props.type,
190
+ ...(props.modelValue && { value: props.modelValue }),
191
+ },
192
+ slots.default && slots.default(),
193
+ ),
194
+ ...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }),
195
+ ...(slots.feedbackInvalid && {
196
+ feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
197
+ }),
198
+ ...(slots.feedbackValid && {
199
+ feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
200
+ }),
201
+ ...(slots.label && { label: () => slots.label && slots.label() }),
202
+ ...(slots.text && { text: () => slots.text && slots.text() }),
118
203
  },
119
- slots.default && slots.default(),
120
204
  )
121
205
  },
122
206
  })