|
23 | 23 | <div class="modal-dialog" :class="modalDialogClasses">
|
24 | 24 | <div v-if="lazyShowing" class="modal-content" :class="contentClass">
|
25 | 25 | <div v-if="!hideHeaderBoolean" class="modal-header" :class="headerClasses">
|
26 |
| - <slot name="header"> |
| 26 | + <slot |
| 27 | + name="header" |
| 28 | + :cancel="() => hide('cancel')" |
| 29 | + :close="() => hide('close')" |
| 30 | + :hide="hide" |
| 31 | + :ok="() => hide('ok')" |
| 32 | + :visible="modelValueBoolean" |
| 33 | + > |
27 | 34 | <component
|
28 | 35 | :is="titleTag"
|
29 | 36 | :id="`${computedId}-label`"
|
30 | 37 | class="modal-title"
|
31 | 38 | :class="titleClasses"
|
32 | 39 | >
|
33 |
| - <slot name="title"> |
| 40 | + <slot |
| 41 | + name="title" |
| 42 | + :cancel="() => hide('cancel')" |
| 43 | + :close="() => hide('close')" |
| 44 | + :hide="hide" |
| 45 | + :ok="() => hide('ok')" |
| 46 | + :visible="modelValueBoolean" |
| 47 | + > |
34 | 48 | {{ title }}
|
35 | 49 | </slot>
|
36 | 50 | </component>
|
|
52 | 66 | </slot>
|
53 | 67 | </div>
|
54 | 68 | <div :id="`${computedId}-body`" class="modal-body" :class="bodyClasses">
|
55 |
| - <slot /> |
| 69 | + <slot |
| 70 | + :cancel="() => hide('cancel')" |
| 71 | + :close="() => hide('close')" |
| 72 | + :hide="hide" |
| 73 | + :ok="() => hide('ok')" |
| 74 | + :visible="modelValueBoolean" |
| 75 | + /> |
56 | 76 | </div>
|
57 | 77 | <div v-if="!hideFooterBoolean" class="modal-footer" :class="footerClasses">
|
58 |
| - <slot name="footer"> |
59 |
| - <slot name="cancel"> |
| 78 | + <slot |
| 79 | + name="footer" |
| 80 | + :cancel="() => hide('cancel')" |
| 81 | + :close="() => hide('close')" |
| 82 | + :hide="hide" |
| 83 | + :ok="() => hide('ok')" |
| 84 | + :visible="modelValueBoolean" |
| 85 | + > |
| 86 | + <slot |
| 87 | + name="cancel" |
| 88 | + :cancel="() => hide('cancel')" |
| 89 | + :close="() => hide('close')" |
| 90 | + :hide="hide" |
| 91 | + :ok="() => hide('ok')" |
| 92 | + :visible="modelValueBoolean" |
| 93 | + > |
60 | 94 | <BButton
|
61 | 95 | v-if="!okOnlyBoolean"
|
62 | 96 | ref="cancelButton"
|
|
68 | 102 | {{ cancelTitle }}
|
69 | 103 | </BButton>
|
70 | 104 | </slot>
|
71 |
| - <slot name="ok"> |
| 105 | + <slot |
| 106 | + name="ok" |
| 107 | + :cancel="() => hide('cancel')" |
| 108 | + :close="() => hide('close')" |
| 109 | + :hide="hide" |
| 110 | + :ok="() => hide('ok')" |
| 111 | + :visible="modelValueBoolean" |
| 112 | + > |
72 | 113 | <BButton
|
73 | 114 | ref="okButton"
|
74 | 115 | :disabled="disableOk"
|
@@ -244,20 +285,56 @@ const emit = defineEmits<{
|
244 | 285 | }>()
|
245 | 286 |
|
246 | 287 | defineSlots<{
|
247 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
248 |
| - 'header'?: (props: Record<string, never>) => any |
249 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
250 |
| - 'title'?: (props: Record<string, never>) => any |
| 288 | + 'header'?: (props: { |
| 289 | + cancel: () => void |
| 290 | + close: () => void |
| 291 | + hide: () => void |
| 292 | + ok: () => void |
| 293 | + visible: boolean |
| 294 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 295 | + }) => any |
| 296 | + 'title'?: (props: { |
| 297 | + cancel: () => void |
| 298 | + close: () => void |
| 299 | + hide: () => void |
| 300 | + ok: () => void |
| 301 | + visible: boolean |
| 302 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 303 | + }) => any |
251 | 304 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
252 | 305 | 'header-close'?: (props: Record<string, never>) => any
|
253 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
254 |
| - 'default'?: (props: Record<string, never>) => any |
255 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
256 |
| - 'footer'?: (props: Record<string, never>) => any |
257 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
258 |
| - 'cancel'?: (props: Record<string, never>) => any |
259 |
| - // eslint-disable-next-line @typescript-eslint/no-explicit-any |
260 |
| - 'ok'?: (props: Record<string, never>) => any |
| 306 | + 'default'?: (props: { |
| 307 | + cancel: () => void |
| 308 | + close: () => void |
| 309 | + hide: () => void |
| 310 | + ok: () => void |
| 311 | + visible: boolean |
| 312 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 313 | + }) => any |
| 314 | + 'footer'?: (props: { |
| 315 | + cancel: () => void |
| 316 | + close: () => void |
| 317 | + hide: () => void |
| 318 | + ok: () => void |
| 319 | + visible: boolean |
| 320 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 321 | + }) => any |
| 322 | + 'cancel'?: (props: { |
| 323 | + cancel: () => void |
| 324 | + close: () => void |
| 325 | + hide: () => void |
| 326 | + ok: () => void |
| 327 | + visible: boolean |
| 328 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 329 | + }) => any |
| 330 | + 'ok'?: (props: { |
| 331 | + cancel: () => void |
| 332 | + close: () => void |
| 333 | + hide: () => void |
| 334 | + ok: () => void |
| 335 | + visible: boolean |
| 336 | + // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 337 | + }) => any |
261 | 338 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
262 | 339 | 'backdrop'?: (props: Record<string, never>) => any
|
263 | 340 | }>()
|
|
0 commit comments