VStepperActions.mjs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { createVNode as _createVNode } from "vue";
  2. // Components
  3. import { VBtn } from "../VBtn/VBtn.mjs";
  4. import { VDefaultsProvider } from "../VDefaultsProvider/VDefaultsProvider.mjs"; // Composables
  5. import { useLocale } from "../../composables/locale.mjs"; // Utilities
  6. import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
  7. export const makeVStepperActionsProps = propsFactory({
  8. color: String,
  9. disabled: {
  10. type: [Boolean, String],
  11. default: false
  12. },
  13. prevText: {
  14. type: String,
  15. default: '$vuetify.stepper.prev'
  16. },
  17. nextText: {
  18. type: String,
  19. default: '$vuetify.stepper.next'
  20. }
  21. }, 'VStepperActions');
  22. export const VStepperActions = genericComponent()({
  23. name: 'VStepperActions',
  24. props: makeVStepperActionsProps(),
  25. emits: {
  26. 'click:prev': () => true,
  27. 'click:next': () => true
  28. },
  29. setup(props, _ref) {
  30. let {
  31. emit,
  32. slots
  33. } = _ref;
  34. const {
  35. t
  36. } = useLocale();
  37. function onClickPrev() {
  38. emit('click:prev');
  39. }
  40. function onClickNext() {
  41. emit('click:next');
  42. }
  43. useRender(() => {
  44. const prevSlotProps = {
  45. onClick: onClickPrev
  46. };
  47. const nextSlotProps = {
  48. onClick: onClickNext
  49. };
  50. return _createVNode("div", {
  51. "class": "v-stepper-actions"
  52. }, [_createVNode(VDefaultsProvider, {
  53. "defaults": {
  54. VBtn: {
  55. disabled: ['prev', true].includes(props.disabled),
  56. text: t(props.prevText),
  57. variant: 'text'
  58. }
  59. }
  60. }, {
  61. default: () => [slots.prev?.({
  62. props: prevSlotProps
  63. }) ?? _createVNode(VBtn, prevSlotProps, null)]
  64. }), _createVNode(VDefaultsProvider, {
  65. "defaults": {
  66. VBtn: {
  67. color: props.color,
  68. disabled: ['next', true].includes(props.disabled),
  69. text: t(props.nextText),
  70. variant: 'tonal'
  71. }
  72. }
  73. }, {
  74. default: () => [slots.next?.({
  75. props: nextSlotProps
  76. }) ?? _createVNode(VBtn, nextSlotProps, null)]
  77. })]);
  78. });
  79. return {};
  80. }
  81. });
  82. //# sourceMappingURL=VStepperActions.mjs.map