|
- <template>
- <div
- class="modal fade"
- id="showText"
- tabindex="-1"
- role="dialog"
- aria-labelledby="exampleModalLabel"
- aria-hidden="true"
- >
- <div class="modal-dialog modal-lg" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title" id="exampleModalLabel">
- <i class="fas fa-clipboard-list"></i> توضیح کامل
- </h5>
- <button
- type="button"
- class="btn-close"
- data-bs-dismiss="modal"
- aria-label="Close"
- ></button>
- </div>
- <div class="modal-body">
- <div class="subject-container">
- <textarea
- disabled
- class="subject-text"
- v-model="localDesc"
- ></textarea>
- </div>
- </div>
- <div class="modal-footer">
- <button
- type="button"
- class="btn btn-secondary"
- data-bs-dismiss="modal"
- >
- بستن
- </button>
- </div>
- </div>
- </div>
- </div>
- </template>
-
- <script>
- import "vue3-toastify/dist/index.css";
- import { watch, ref } from "vue";
-
- export default {
- props: {
- desc: {
- type: String,
- required: true,
- },
- },
- setup(props) {
- const localDesc = ref();
-
- watch(
- () => props.desc,
- (newVal) => (localDesc.value = newVal)
- );
- return {
- localDesc,
- };
- },
- };
- </script>
-
- <style scoped>
- .modal-dialog {
- max-width: 600px; /* Larger size for better content visibility */
- margin-top: 10vh; /* Center vertically */
- }
-
- .modal-content {
- border-radius: 16px; /* More rounded corners */
- box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1); /* Larger shadow for more depth */
- background: linear-gradient(
- to bottom right,
- #f5f7fb,
- #e0e8ed
- ); /* Soft gradient background */
- }
-
- .modal-header {
- border-bottom: none; /* Remove default border */
- }
-
- .modal-title {
- color: #007bff;
- font-weight: 600;
- font-size: 1.75rem;
- display: flex;
- align-items: center;
- }
-
- .modal-title i {
- margin-right: 12px;
- font-size: 1.75rem;
- }
-
- .btn-close {
- background: none;
- border: none;
- font-size: 1.75rem;
- color: #007bff;
- transition: color 0.3s ease;
- }
-
- .btn-close:hover {
- color: #0056b3;
- }
-
- .modal-body {
- padding: 25px;
- }
-
- .subject-container {
- display: flex;
- align-items: center;
- background: #ffffff;
- border-radius: 12px;
- padding: 15px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- margin-top: 10px;
- }
-
- .subject-container i {
- color: #007bff;
- margin-right: 15px;
- font-size: 1.75rem;
- }
-
- .subject-text {
- color: #333;
- font-weight: 500;
- border: 2px solid #007bff;
- width: 100%;
- height: 180px;
- padding: 12px;
- border-radius: 10px;
- font-size: 1rem;
- background-color: #f9f9f9;
- box-sizing: border-box;
- resize: none;
- transition: border-color 0.3s;
- }
-
- .subject-text:focus {
- border-color: #0056b3; /* Highlight border on focus */
- outline: none;
- }
-
- .modal-footer {
- display: flex;
- justify-content: flex-end;
- margin-top: 1.5rem;
- }
-
- .btn-secondary {
- background-color: #6c757d;
- color: #fff;
- padding: 10px 16px;
- border-radius: 8px;
- transition: background 0.3s;
- font-size: 1.1rem;
- }
-
- .btn-secondary:hover {
- background-color: #5a6268;
- }
- </style>
-
|