View | Details | Raw Unified | Return to bug 32925
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ButtonSubmit.vue (-30 / +2 lines)
Lines 1-8 Link Here
1
<template>
1
<template>
2
    <input type="submit" variant="primary" :value="text" @click="submitting = true" />
2
    <input type="submit" variant="primary" :value="text" />
3
    <div v-if="submitting" class="modal">
4
        <div class="spinner dialog alert">Submitting...</div>
5
    </div>
6
</template>
3
</template>
7
4
8
<script>
5
<script>
Lines 14-44 export default { Link Here
14
            default: __("Submit"),
11
            default: __("Submit"),
15
            required: false,
12
            required: false,
16
        },
13
        },
17
        submitting: {
18
            type: Boolean,
19
            default: false,
20
            required: false,
21
        },
22
    },
14
    },
23
};
24
</script>
25
26
<style scoped>
27
.modal {
28
    position: fixed;
29
    z-index: 9998;
30
    display: table;
31
    transition: opacity 0.3s ease;
32
    left: 0px;
33
    top: 0px;
34
    width: 100%;
35
    height: 100%;
36
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33);
37
}
38
.spinner {
39
    position: absolute;
40
    top: 50%;
41
    left: 40%;
42
    width: 10%
43
}
15
}
44
</style>
16
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue (-1 / +9 lines)
Lines 190-196 import AgreementLicenses from "./AgreementLicenses.vue" Link Here
190
import AgreementRelationships from "./AgreementRelationships.vue"
190
import AgreementRelationships from "./AgreementRelationships.vue"
191
import Documents from "./Documents.vue"
191
import Documents from "./Documents.vue"
192
import ButtonSubmit from "../ButtonSubmit.vue"
192
import ButtonSubmit from "../ButtonSubmit.vue"
193
import { setMessage, setError, setWarning } from "../../messages"
193
import {
194
    setMessage,
195
    setError,
196
    setWarning,
197
    isSubmitting,
198
    submitted,
199
} from "../../messages"
194
import { fetchAgreement } from "../../fetch"
200
import { fetchAgreement } from "../../fetch"
195
import { storeToRefs } from "pinia"
201
import { storeToRefs } from "pinia"
196
202
Lines 384-389 export default { Link Here
384
                },
390
                },
385
            }
391
            }
386
392
393
            isSubmitting()
387
            fetch(apiUrl, options)
394
            fetch(apiUrl, options)
388
                .then(response => {
395
                .then(response => {
389
                    if (response.status == 200) {
396
                    if (response.status == 200) {
Lines 399-404 export default { Link Here
399
                .catch(error => {
406
                .catch(error => {
400
                    setError(error)
407
                    setError(error)
401
                })
408
                })
409
                .then(() => submitted())
402
        },
410
        },
403
        onStatusChanged(e) {
411
        onStatusChanged(e) {
404
            if (e.authorised_value != "closed") {
412
            if (e.authorised_value != "closed") {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormConfirmDelete.vue (-2 / +4 lines)
Lines 18-24 Link Here
18
                    </ol>
18
                    </ol>
19
                </fieldset>
19
                </fieldset>
20
                <fieldset class="action">
20
                <fieldset class="action">
21
                    <ButtonSubmit :text="$__('Yes, delete')"/>
21
                    <ButtonSubmit :text="$__('Yes, delete')" />
22
                    <router-link
22
                    <router-link
23
                        to="/cgi-bin/koha/erm/agreements"
23
                        to="/cgi-bin/koha/erm/agreements"
24
                        role="button"
24
                        role="button"
Lines 33-39 Link Here
33
33
34
<script>
34
<script>
35
import { fetchAgreement } from "../../fetch"
35
import { fetchAgreement } from "../../fetch"
36
import { setMessage, setError } from "../../messages"
36
import { setMessage, setError, isSubmitting, submitted } from "../../messages"
37
import ButtonSubmit from "../ButtonSubmit.vue"
37
import ButtonSubmit from "../ButtonSubmit.vue"
38
38
39
export default {
39
export default {
Lines 66-71 export default { Link Here
66
                },
66
                },
67
            }
67
            }
68
68
69
            isSubmitting()
69
            fetch(apiUrl, options)
70
            fetch(apiUrl, options)
70
                .then(response => {
71
                .then(response => {
71
                    if (response.status == 204) {
72
                    if (response.status == 204) {
Lines 75-80 export default { Link Here
75
                        setError(response.message || response.statusText)
76
                        setError(response.message || response.statusText)
76
                    }
77
                    }
77
                })
78
                })
79
                .then(() => submitted())
78
                .catch(error => {
80
                .catch(error => {
79
                    setError(error)
81
                    setError(error)
80
                })
82
                })
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Dialog.vue (-2 / +25 lines)
Lines 12-17 Link Here
12
        >
12
        >
13
    </div>
13
    </div>
14
    <!-- Must be styled differently -->
14
    <!-- Must be styled differently -->
15
16
    <div class="modal_centered" v-if="is_submitting">
17
        <div class="spinner dialog alert">{{ $__("Submitting...") }}</div>
18
    </div>
15
</template>
19
</template>
16
20
17
<script>
21
<script>
Lines 20-28 import { storeToRefs } from "pinia" Link Here
20
export default {
24
export default {
21
    setup() {
25
    setup() {
22
        const mainStore = inject("mainStore")
26
        const mainStore = inject("mainStore")
23
        const { message, error, warning } = storeToRefs(mainStore)
27
        const { message, error, warning, is_submitting } =
28
            storeToRefs(mainStore)
24
        const { removeMessages } = mainStore
29
        const { removeMessages } = mainStore
25
        return { message, error, warning, removeMessages }
30
        return { message, error, warning, is_submitting, removeMessages }
26
    },
31
    },
27
}
32
}
28
</script>
33
</script>
Lines 42-45 export default { Link Here
42
    float: right;
47
    float: right;
43
    cursor: pointer;
48
    cursor: pointer;
44
}
49
}
50
51
.modal_centered {
52
    position: fixed;
53
    z-index: 9998;
54
    display: table;
55
    transition: opacity 0.3s ease;
56
    left: 0px;
57
    top: 0px;
58
    width: 100%;
59
    height: 100%;
60
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33);
61
}
62
.spinner {
63
    position: absolute;
64
    top: 50%;
65
    left: 40%;
66
    width: 10%;
67
}
45
</style>
68
</style>
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/messages.js (+10 lines)
Lines 22-24 export const removeMessages = function () { Link Here
22
    const { removeMessages } = mainStore;
22
    const { removeMessages } = mainStore;
23
    removeMessages();
23
    removeMessages();
24
};
24
};
25
export const isSubmitting = function () {
26
    const mainStore = useMainStore();
27
    const { isSubmitting } = mainStore;
28
    isSubmitting();
29
};
30
export const submitted = function () {
31
    const mainStore = useMainStore();
32
    const { submitted } = mainStore;
33
    submitted();
34
};
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/main.js (-1 / +7 lines)
Lines 8-13 export const useMainStore = defineStore("main", { Link Here
8
        previousMessage: null,
8
        previousMessage: null,
9
        previousError: null,
9
        previousError: null,
10
        displayed_already: false,
10
        displayed_already: false,
11
        is_submitting: false,
11
    }),
12
    }),
12
    actions: {
13
    actions: {
13
        setMessage(message) {
14
        setMessage(message) {
Lines 34-38 export const useMainStore = defineStore("main", { Link Here
34
            }
35
            }
35
            this.displayed_already = true;
36
            this.displayed_already = true;
36
        },
37
        },
38
        isSubmitting(){
39
            this.is_submitting = true;
40
        },
41
        submitted(){
42
            this.is_submitting = false;
43
        },
37
    },
44
    },
38
});
45
});
39
- 

Return to bug 32925