/* 富文本编辑器:工具栏、可编辑正文、空内容占位及禁用态。 */ /* 导入方:app/components/RichTextEditor.vue、app/pages/tickets/[id].vue、app/pages/tickets/create.vue、app/pages/tickets/ticket.vue。 */ .rich-editor[data-v-858a2ddd] { border: 1px solid var(--p-form-field-border-color); background: var(--p-form-field-background); border-radius: var(--radius-sm); overflow: hidden; } .rich-editor[data-v-858a2ddd]:focus-within { border-color: var(--p-primary-color); } .editor-toolbar[data-v-858a2ddd] { border-bottom: 1px solid var(--console-panel-border); flex-wrap: wrap; gap: 3.5px; padding: 4px 7px; display: flex; } .editor-toolbar button[data-v-858a2ddd] { width: 24px; height: 28px; color: var(--p-text-muted-color); cursor: pointer; background: 0 0; border: 0; border-radius: 3px; } .editor-toolbar button[data-v-858a2ddd]:hover { background: var(--p-content-hover-background); } .editor-toolbar i[data-v-858a2ddd] { font-size: 0.875rem; } /* 正文区域保留长文本换行;空态伪元素只是提示,不作为实际编辑内容提交。 */ /* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .editor-content[data-v-858a2ddd] { overflow-wrap: anywhere; outline: none; padding: 14px; line-height: 1.5; } .editor-content[data-v-858a2ddd]:empty:before { content: attr(data-placeholder); color: var(--p-text-muted-color); pointer-events: none; } .editor-content[data-v-858a2ddd] p { margin: 0 0 7px; } .disabled[data-v-858a2ddd] { opacity: 0.6; }