Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-23 01:40:29 +01:00
af3e61fe75
* Add custom field improvements This PR does a few things to improve our support of custom fields 1. Adds custom fields added by other plugins to the list in admin/wizards/custom-fields and the custom field list in the mapper selector 2. Adds support for json custom fields in the wizard actions * Make eslint happy * Make prettier happy * Make rubocop happy * Make ember template lint happy * Don't assume we have the context in the selector * Ensure custom fields don't require optional attributes (with tests)
713 Zeilen
10 KiB
SCSS
713 Zeilen
10 KiB
SCSS
@import "wizard-mapper";
|
|
@import "wizard-manager";
|
|
@import "wizard-api";
|
|
@import "common/components/buttons";
|
|
|
|
.admin-wizard-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 20px;
|
|
|
|
& + .wizard-message + div {
|
|
margin-top: 20px;
|
|
}
|
|
}
|
|
|
|
.wizard-message {
|
|
background-color: $primary-low;
|
|
width: 100%;
|
|
padding: 10px;
|
|
box-sizing: border-box;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
|
|
.message-block {
|
|
.d-icon {
|
|
margin-right: 4px;
|
|
}
|
|
|
|
.d-icon-check-circle {
|
|
color: var(--success);
|
|
}
|
|
|
|
.d-icon-times-circle {
|
|
color: var(--danger);
|
|
}
|
|
|
|
a + a {
|
|
border-left: 1px solid $primary-medium;
|
|
padding-left: 5px;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.message {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.list-colon {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
ul {
|
|
list-style: none;
|
|
margin: 0;
|
|
|
|
span.action {
|
|
margin-left: 5px;
|
|
}
|
|
}
|
|
}
|
|
|
|
& + div {
|
|
margin-top: 30px;
|
|
}
|
|
}
|
|
|
|
.wizard-submissions {
|
|
overflow: scroll;
|
|
|
|
table td {
|
|
min-width: 150px;
|
|
}
|
|
}
|
|
|
|
.admin-wizards-logs {
|
|
.admin-wizard-controls {
|
|
h3 {
|
|
margin: 0 7px;
|
|
}
|
|
}
|
|
|
|
.wizard-logs {
|
|
.date {
|
|
width: 100px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.wizard-settings-parent {
|
|
padding: 20px;
|
|
border: 1px solid $primary-low;
|
|
}
|
|
|
|
.wizard-settings-group {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
flex-flow: wrap;
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.wizard-settings,
|
|
.wizard-custom-step,
|
|
.wizard-custom-action {
|
|
@extend .wizard-settings-parent;
|
|
@extend .wizard-settings-group;
|
|
}
|
|
|
|
.wizard-basic-details,
|
|
.wizard-custom-field,
|
|
.advanced-settings {
|
|
@extend .wizard-settings-group;
|
|
}
|
|
|
|
.wizard-custom-field {
|
|
background: transparent;
|
|
background-color: dark-light-diff($primary, $secondary, 96%, -65%);
|
|
padding: 20px;
|
|
}
|
|
|
|
.wizard-custom-field,
|
|
.wizard-custom-action {
|
|
position: relative;
|
|
display: none;
|
|
|
|
&.visible {
|
|
display: flex;
|
|
}
|
|
|
|
.undo-changes {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
}
|
|
}
|
|
|
|
.admin-wizard-container.settings .wizard-basic-details {
|
|
justify-content: initial;
|
|
|
|
.setting {
|
|
width: auto;
|
|
margin-right: 20px;
|
|
|
|
.setting-label {
|
|
width: initial;
|
|
min-width: initial;
|
|
}
|
|
}
|
|
}
|
|
|
|
.wizard-header {
|
|
margin-bottom: 20px;
|
|
|
|
&.large {
|
|
font-size: 1.5em;
|
|
min-height: 31px;
|
|
margin-bottom: 20px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
|
|
input {
|
|
margin-bottom: 0;
|
|
width: 400px;
|
|
}
|
|
|
|
label {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.download-link {
|
|
font-size: 1rem;
|
|
line-height: 20px;
|
|
}
|
|
|
|
.wizard-url {
|
|
display: inline-flex;
|
|
margin-left: 20px;
|
|
max-width: 50%;
|
|
|
|
a {
|
|
padding: 6px 12px;
|
|
font-size: 1rem;
|
|
background-color: $primary-low;
|
|
}
|
|
|
|
button {
|
|
font-size: 1rem;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.medium {
|
|
font-size: 1.3em;
|
|
}
|
|
|
|
&.small {
|
|
font-size: 1em;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
&.underline {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
|
|
.admin-wizard-buttons {
|
|
margin-top: 20px;
|
|
display: flex;
|
|
|
|
.btn {
|
|
margin-right: 1em;
|
|
}
|
|
}
|
|
|
|
.admin-wizard-container.settings {
|
|
[class~="setting"] {
|
|
display: inline-flex;
|
|
align-items: flex-start;
|
|
width: 48%;
|
|
margin-bottom: 30px;
|
|
padding-bottom: 0;
|
|
position: relative;
|
|
|
|
&:last-of-type {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.setting-label {
|
|
width: 80px;
|
|
min-width: 80px;
|
|
}
|
|
|
|
.setting-value {
|
|
flex: 1;
|
|
overflow: initial;
|
|
float: initial;
|
|
width: initial;
|
|
padding: 0;
|
|
|
|
label {
|
|
font-size: 0.85em;
|
|
}
|
|
|
|
span {
|
|
font-size: 0.929em;
|
|
}
|
|
|
|
button {
|
|
display: block;
|
|
}
|
|
|
|
input[type="text"],
|
|
textarea {
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
input[type="number"] {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
input[disabled] {
|
|
background-color: $primary-low;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
input.medium {
|
|
width: 200px;
|
|
}
|
|
|
|
input.small {
|
|
width: 100px;
|
|
}
|
|
|
|
.uploaded-image-preview {
|
|
width: 100%;
|
|
max-height: 100px;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.image-upload-controls {
|
|
label {
|
|
font-size: 1em;
|
|
margin: 0 5px 0 0;
|
|
}
|
|
}
|
|
|
|
> textarea {
|
|
min-height: 100px;
|
|
resize: vertical;
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
float: left;
|
|
margin: 5px 7px 0 0;
|
|
}
|
|
|
|
.input .select-kit,
|
|
> .select-kit {
|
|
max-width: 250px !important;
|
|
min-width: 250px !important;
|
|
}
|
|
|
|
&.force-final {
|
|
padding: 1em;
|
|
background-color: var(--primary-very-low);
|
|
|
|
label,
|
|
span {
|
|
font-size: 1em;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.full,
|
|
&.full-inline {
|
|
width: 100%;
|
|
|
|
.setting-value {
|
|
width: initial;
|
|
float: none;
|
|
|
|
&.editor {
|
|
.d-editor {
|
|
margin-bottom: 5px;
|
|
}
|
|
}
|
|
|
|
.uploaded-image-preview {
|
|
max-height: 200px;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.full-inline {
|
|
.setting-value {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
input {
|
|
margin: 0 7px 0 0;
|
|
}
|
|
|
|
button {
|
|
margin: 0 0 0 20px;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.field-mapper-setting {
|
|
.setting-value {
|
|
max-width: calc(100% - 80px);
|
|
|
|
.mapper-input {
|
|
max-width: 100%;
|
|
box-sizing: border-box;
|
|
}
|
|
}
|
|
}
|
|
|
|
label {
|
|
margin: 3px 0;
|
|
}
|
|
|
|
.setting-gutter {
|
|
margin-top: 5px;
|
|
}
|
|
}
|
|
|
|
.advanced-settings {
|
|
width: 100%;
|
|
margin-top: 30px;
|
|
|
|
[class~="setting"]:first-of-type {
|
|
border-top: none;
|
|
}
|
|
}
|
|
|
|
.wizard-custom-action > [class~="setting"]:first-of-type {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.select-box-kit-header {
|
|
height: initial;
|
|
}
|
|
|
|
.buttons .error {
|
|
color: var(--danger);
|
|
|
|
.fa {
|
|
margin-right: 5px;
|
|
}
|
|
}
|
|
|
|
.buttons .remove {
|
|
float: right;
|
|
}
|
|
|
|
.custom-category {
|
|
margin-top: 5px;
|
|
padding: 5px;
|
|
}
|
|
}
|
|
|
|
.btn-after-time {
|
|
margin-top: 7px;
|
|
}
|
|
|
|
.wizard-text-editor {
|
|
.d-editor {
|
|
width: 100%;
|
|
|
|
.d-editor-input {
|
|
min-height: 150px;
|
|
}
|
|
|
|
.d-editor-container {
|
|
display: block;
|
|
}
|
|
|
|
.d-editor-textarea-wrapper {
|
|
display: grid;
|
|
margin-bottom: 10px;
|
|
|
|
textarea {
|
|
resize: vertical;
|
|
}
|
|
}
|
|
|
|
.d-editor-preview-wrapper {
|
|
display: none;
|
|
margin: 0 0 10px 0;
|
|
padding: 10px;
|
|
background-color: $secondary;
|
|
border: 1px solid $primary-medium;
|
|
max-width: 100%;
|
|
|
|
&.force-preview {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
button {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
.wizard-editor-gutter {
|
|
position: relative;
|
|
display: flex;
|
|
|
|
.btn {
|
|
margin-right: 10px;
|
|
color: $primary;
|
|
|
|
&:hover {
|
|
color: $secondary;
|
|
}
|
|
}
|
|
|
|
.wizard-editor-gutter-popover {
|
|
position: absolute;
|
|
padding: 10px;
|
|
background-color: $secondary;
|
|
box-shadow: shadow("card");
|
|
z-index: 200;
|
|
top: 40px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.wizard-links {
|
|
margin: 40px 0 20px 0;
|
|
display: inline-block;
|
|
width: 100%;
|
|
|
|
.link-list {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
display: inline-flex;
|
|
align-items: flex-start;
|
|
flex-flow: wrap;
|
|
|
|
> div {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.btn {
|
|
height: 32px;
|
|
}
|
|
}
|
|
|
|
.sortable-placeholder {
|
|
height: 30px;
|
|
width: 100px;
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
background-color: $primary-low;
|
|
margin-right: 10px;
|
|
margin-left: 3px;
|
|
}
|
|
}
|
|
|
|
.wizard-column-contents {
|
|
position: relative;
|
|
}
|
|
|
|
.required-data-message {
|
|
display: inline-block;
|
|
margin-top: 20px;
|
|
|
|
.label {
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
input {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.wizard-field-composer textarea {
|
|
width: 100%;
|
|
min-height: 150px;
|
|
}
|
|
|
|
.modal .modal-body.next-session-time-modal {
|
|
overflow: visible;
|
|
|
|
.picker-container {
|
|
position: absolute;
|
|
top: 30px;
|
|
}
|
|
}
|
|
|
|
.post-builder-editor {
|
|
min-height: 220px;
|
|
}
|
|
|
|
.text-divider {
|
|
display: block;
|
|
text-align: center;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
margin: 5px 0;
|
|
|
|
> span {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
> span:before,
|
|
> span:after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
width: 9999px;
|
|
height: 1px;
|
|
background: var(--tertiary);
|
|
}
|
|
|
|
> span:before {
|
|
right: 100%;
|
|
margin-right: 15px;
|
|
}
|
|
|
|
> span:after {
|
|
left: 100%;
|
|
margin-left: 15px;
|
|
}
|
|
}
|
|
|
|
.wizard-step-contents {
|
|
height: unset !important;
|
|
}
|
|
|
|
.wizard-advanced-toggle {
|
|
width: 100%;
|
|
}
|
|
|
|
.add-mapper-input .btn,
|
|
.btn-after-time,
|
|
.wizard-editor-gutter .btn {
|
|
background-color: $secondary;
|
|
border: 1px solid $primary-medium;
|
|
}
|
|
|
|
.admin-wizards-custom-fields {
|
|
.admin-wizard-controls {
|
|
.buttons {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
button.btn {
|
|
margin-left: 10px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn.save:enabled {
|
|
@extend .btn-primary;
|
|
}
|
|
|
|
.btn.destroy {
|
|
@extend .btn-danger;
|
|
}
|
|
|
|
h3 {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.select-kit {
|
|
width: 150px;
|
|
}
|
|
|
|
.select-kit.multi-select {
|
|
width: 300px;
|
|
|
|
.choices .choice,
|
|
.select-kit-filter .filter-input {
|
|
height: 25px;
|
|
min-height: 25px;
|
|
}
|
|
}
|
|
|
|
input[type="text"] {
|
|
margin: 0;
|
|
}
|
|
|
|
table {
|
|
td {
|
|
vertical-align: top;
|
|
|
|
label {
|
|
margin: 0;
|
|
line-height: 30px;
|
|
display: inline-block;
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
|
|
td {
|
|
min-width: 170px;
|
|
width: 170px;
|
|
}
|
|
|
|
td.multi-select {
|
|
min-width: 300px;
|
|
}
|
|
|
|
td.input {
|
|
min-width: 210px;
|
|
width: 210px;
|
|
}
|
|
|
|
td.actions {
|
|
min-width: 100px;
|
|
text-align: right;
|
|
|
|
button.btn {
|
|
margin-left: 5px !important;
|
|
}
|
|
}
|
|
|
|
td.external {
|
|
font-style: italic;
|
|
}
|
|
}
|
|
}
|
|
|
|
.realtime-validations > ul {
|
|
list-style: none;
|
|
margin: 0;
|
|
|
|
> li {
|
|
background-color: var(--primary-low);
|
|
padding: 1em;
|
|
margin: 0 0 1em 0;
|
|
|
|
input {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.validation-container {
|
|
display: flex;
|
|
padding: 1em 0;
|
|
|
|
.validation-section {
|
|
width: 250px;
|
|
}
|
|
}
|
|
|
|
.wizard.category-selector {
|
|
width: 200px !important;
|
|
}
|
|
|
|
.time-n-value {
|
|
width: 70px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.select-kit.time-unit-selector {
|
|
width: 80px;
|
|
vertical-align: middle;
|
|
}
|