discourse/app/assets/stylesheets/common/admin/staff_logs.scss
Vinoth Kannan 143f06f2c6
FEATURE: Allow watched words to be created as a group (#26632)
At the moment, there is no way to create a group of related watched words together.  If a user needed a set of words to be created together, they'll have to create them individually one at a time.

This change attempts to allow related watched words to be created as a group. The idea here is to have a list of words be tied together via a common `WatchedWordGroup` record.  Given a list of words, a `WatchedWordGroup` record is created and assigned to each `WatchedWord` record. The existing WatchedWord creation behaviour remains largely unchanged.

Co-authored-by: Selase Krakani <skrakani@gmail.com>
Co-authored-by: Martin Brennan <martin@discourse.org>
2024-04-29 15:50:55 +05:30

393 lines
6.4 KiB
SCSS

// Styles for /admin/logs
.log-details-modal {
pre {
white-space: pre-wrap;
max-height: 250px;
}
.modal-tab {
width: 95%;
}
}
.staff-actions {
width: 100%;
word-wrap: break-word;
@media screen and (min-width: 550px) and (max-width: 767px) {
table.staff-logs tr {
display: grid;
grid-template-rows: auto auto;
grid-template-columns: repeat(4, 1fr);
td {
align-self: start;
padding: 2px 4px;
}
}
td.created-at {
grid-column-start: -1;
}
td.subject {
grid-row: 2;
grid-column-start: 2;
div.subject {
display: flex;
a {
word-wrap: break-word;
min-width: 25px;
}
}
}
td.details {
grid-row: 1;
grid-row-start: 1;
grid-row-end: 3;
grid-column-start: 3;
}
td.context {
grid-row-start: 1;
grid-row-end: 3;
grid-column-start: 4;
}
}
@include breakpoint(mobile-extra-large) {
table.staff-logs tr {
grid-template-columns: 1fr 1fr 0.5fr;
td.staff-users {
grid-column-start: 1;
grid-column-end: 3;
}
td.created-at {
grid-row: 1;
grid-column-start: -1;
text-align: right;
}
td.action {
grid-row: 2;
grid-column-start: 1;
}
td.subject {
grid-row: 2;
grid-column-start: 2;
grid-column-end: 5;
max-width: 60vw;
}
td.details,
td.context {
max-width: unset;
}
td.details {
grid-row: 3;
grid-column-start: 1;
grid-column-end: 5;
padding: 0.25em 0;
max-width: 90vw;
}
td.context {
grid-row: 4;
grid-column-start: 1;
grid-column-end: 5;
}
}
}
.staff-user {
font-weight: bold;
display: flex;
a:first-of-type {
margin-right: 0.25em;
}
.deleted-user {
font-size: var(--font-up-2);
}
}
.created_at {
text-align: center;
}
td.subject,
td.details {
max-width: 10vw;
> div {
max-height: 100px;
overflow-y: auto;
}
}
td.context {
word-break: break-all;
}
}
.staff-action-logs-controls {
display: flex;
align-items: center;
.select-kit {
margin: 0 0.5em;
}
button {
margin-left: auto;
}
margin: 0 0 1em 0;
a.filter {
.label {
font-weight: bold;
}
.d-icon {
margin-left: 0.5em;
}
}
}
.screened-email-export {
display: block;
}
.screened-ip-controls {
display: flex;
flex-wrap: wrap;
.screened-ip-address-form {
.combobox {
width: 140px;
}
@media screen and (min-width: 900px) {
margin-left: auto;
}
@media screen and (max-width: 899px) {
margin-top: 1em;
}
}
}
table.screened-ip-addresses {
td.ip_address {
min-width: 150px;
word-wrap: break-word;
input {
width: 80%;
}
}
td.actions {
text-align: right;
}
}
@media screen and (min-width: 550px) {
table.screened-ip-addresses tr {
grid-template-columns: repeat(5, 1fr) auto;
}
}
@media screen and (max-width: 549px) {
table.screened-ip-addresses tr {
td.actions {
grid-row: 3;
grid-column-start: -1;
grid-column-end: -4;
text-align: right;
margin-top: 0.5em;
}
td.created_at {
grid-row: 1;
grid-column-start: 3;
text-align: right;
}
td.last_match_at {
grid-row: 2;
grid-column-start: 3;
text-align: right;
}
td.match_count {
grid-row: 2;
grid-column-start: 2;
}
}
}
// Screened URLs
@include breakpoint(tablet) {
.screened-urls {
td.domain {
grid-column-start: 1;
grid-column-end: 3;
word-wrap: break-word;
}
}
}
// Screened emails
.screened-emails {
td.ip_address {
word-wrap: break-word;
@include breakpoint(tablet, min-width) {
max-width: 20vw;
}
}
@include breakpoint(tablet) {
td.email {
grid-column-start: 1;
grid-column-end: 3;
word-wrap: break-word;
}
td.ip_address {
grid-row: 2;
grid-column-start: 1;
grid-column-end: -1;
}
td.action {
margin-top: 0.25em;
}
}
}
// Watched words
.watched-word-box {
display: inline-block;
width: 250px;
margin-bottom: 1em;
vertical-align: top;
}
.watched-words-link {
.watched-word-box {
min-width: 100%;
}
}
.watched-words-replace,
.watched-words-tag {
.watched-word-box {
min-width: calc(50% - 5px);
}
}
.watched-word-box,
.watched-words-test-modal {
.replacement {
white-space: pre;
background: var(--tertiary-low);
}
.tag {
background: var(--primary-low);
font-size: var(--font-down-1);
margin-right: 0.1em;
padding: 0.5em;
}
}
.watched-words-uploader {
display: inline-block;
label {
font-weight: normal;
}
}
.watched-words-list {
margin-top: 20px;
display: inline-block;
width: 100%;
}
.watched-word {
display: inline-block;
cursor: pointer;
.d-icon {
margin-right: 0.25em;
color: var(--primary-medium);
&:hover {
color: var(--danger);
}
}
}
.watched-word-form {
.success-message {
margin-left: 1em;
}
}
.watched-words-detail {
.watched-word-controls,
.about,
.watched-word-form {
margin-bottom: 1em;
}
.about {
font-size: var(--font-up-1);
max-width: 30em;
}
.watched-word-controls .btn {
margin-bottom: 0.25em;
margin-right: 0.25em;
}
}
.watched-words-test-modal p {
margin-top: 0;
}
.watched-word-input {
label {
display: inline-block;
min-width: 150px;
padding-top: 4px;
vertical-align: top;
}
input.watched-word-input-field {
min-width: 300px;
}
.select-kit.multi-select.watched-word-input-field {
width: 300px;
margin-bottom: 9px;
}
+ .btn-primary {
margin-top: 1em;
}
}
// Search logs
table.search-logs-list {
td.term {
width: 60%;
word-wrap: break-word;
@media screen and (max-width: 767px) {
width: 100%;
}
}
th:not(.term),
td:not(.term) {
text-align: center;
}
@media screen and (min-width: 550px) {
tr {
td.term {
grid-column-start: 1;
grid-column: span 3;
}
}
}
@include breakpoint(mobile-extra-large) {
tr {
td.term {
grid-column-start: 1;
grid-column-end: 4;
}
th:not(.term),
td:not(.term) {
text-align: left;
}
}
}
}