xref: /openbmc/webui-vue/src/components/Global/ConfirmModal.vue (revision d36ac8a8be8636ddd0e64ce005d507b21bcdeb00)
1*d36ac8a8Sjason westover<template>
2*d36ac8a8Sjason westover  <!-- Simplified ConfirmModal using native Window.confirm() -->
3*d36ac8a8Sjason westover  <!-- This component preserves the API for future proper modal implementation -->
4*d36ac8a8Sjason westover  <div style="display: none"></div>
5*d36ac8a8Sjason westover</template>
6*d36ac8a8Sjason westover
7*d36ac8a8Sjason westover<script>
8*d36ac8a8Sjason westoverexport default {
9*d36ac8a8Sjason westover  name: 'ConfirmModal',
10*d36ac8a8Sjason westover  data() {
11*d36ac8a8Sjason westover    return {
12*d36ac8a8Sjason westover      resolve: null,
13*d36ac8a8Sjason westover    };
14*d36ac8a8Sjason westover  },
15*d36ac8a8Sjason westover  created() {
16*d36ac8a8Sjason westover    const bus = require('@/eventBus').default;
17*d36ac8a8Sjason westover    bus.$on('confirm:open', this.handleConfirm);
18*d36ac8a8Sjason westover  },
19*d36ac8a8Sjason westover  beforeUnmount() {
20*d36ac8a8Sjason westover    require('@/eventBus').default.$off('confirm:open', this.handleConfirm);
21*d36ac8a8Sjason westover  },
22*d36ac8a8Sjason westover  methods: {
23*d36ac8a8Sjason westover    handleConfirm(options) {
24*d36ac8a8Sjason westover      // Extract message from options (could be string or object)
25*d36ac8a8Sjason westover      const message =
26*d36ac8a8Sjason westover        typeof options === 'string'
27*d36ac8a8Sjason westover          ? options
28*d36ac8a8Sjason westover          : options.message || 'Are you sure?';
29*d36ac8a8Sjason westover
30*d36ac8a8Sjason westover      // Use native browser confirm for now
31*d36ac8a8Sjason westover      // The following parameters are accepted but not used by the window.confirm() shim.
32*d36ac8a8Sjason westover      // They will be used when the proper Bootstrap 5 modal is implemented:
33*d36ac8a8Sjason westover      // - title: Modal title text
34*d36ac8a8Sjason westover      // - okTitle: OK/Confirm button text
35*d36ac8a8Sjason westover      // - cancelTitle: Cancel button text
36*d36ac8a8Sjason westover      // - okVariant: OK button Bootstrap variant (e.g., 'danger', 'primary')
37*d36ac8a8Sjason westover      // - cancelVariant: Cancel button Bootstrap variant (e.g., 'secondary')
38*d36ac8a8Sjason westover      // - autoFocusButton: Which button to focus ('ok' or 'cancel')
39*d36ac8a8Sjason westover      // - processing: Show processing state with progress bar
40*d36ac8a8Sjason westover      // - processingText: Processing state message
41*d36ac8a8Sjason westover      // - processingMax: Processing progress bar maximum value
42*d36ac8a8Sjason westover      //
43*d36ac8a8Sjason westover      // Code can safely pass these parameters now and they will work when the
44*d36ac8a8Sjason westover      // proper modal implementation is added.
45*d36ac8a8Sjason westover      const result = window.confirm(message);
46*d36ac8a8Sjason westover
47*d36ac8a8Sjason westover      // Resolve the promise with result
48*d36ac8a8Sjason westover      if (options.resolve) {
49*d36ac8a8Sjason westover        options.resolve(result);
50*d36ac8a8Sjason westover      }
51*d36ac8a8Sjason westover    },
52*d36ac8a8Sjason westover  },
53*d36ac8a8Sjason westover};
54*d36ac8a8Sjason westover</script>
55