discourse/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss
Penar Musaraj c43068720f
FIX: Better UX for timezones selector in date modal (#20047)
When expanding the "Advanced mode" of the date modal, the Timezones
picker was at the bottom of the modal, and expanding it would often
overflow the viewport. This PR moves the elment higher up, therefore
avoiding the overflow.

There's a small width change as well, for better consistency.
2023-01-27 16:26:32 -05:00

335 lines
6.0 KiB
SCSS

.discourse-local-date {
> * {
pointer-events: none;
}
&.cooked-date {
color: var(--primary);
cursor: pointer;
border-bottom: 1px dashed var(--primary-medium);
white-space: nowrap;
.d-icon {
color: var(--primary);
}
&.past {
border-bottom-color: var(--primary-low-mid);
}
&.past[data-countdown] {
color: var(--primary-medium);
}
}
}
div[data-tippy-root] {
.locale-dates-previews {
max-width: 360px;
.preview {
display: flex;
flex-direction: column;
padding: 5px;
.timezone {
font-weight: 700;
}
&.current {
background: var(--tertiary-low);
}
}
}
.download-calendar {
text-align: right;
cursor: pointer;
margin-top: 0.5em;
}
}
.discourse-local-dates-create-modal-footer {
display: flex;
align-items: center;
justify-content: flex-start;
&:before,
&:after {
content: none;
}
.advanced-mode-btn {
margin-left: auto;
}
}
.discourse-local-dates-create-modal {
box-sizing: border-box;
min-height: 320px;
display: flex;
flex-direction: row;
padding: 0.5em;
.picker-panel {
padding: 5px;
border: 1px solid var(--primary-low);
}
.date-picker {
display: flex;
flex-direction: column;
width: auto;
box-sizing: border-box;
.pika-single {
position: relative !important;
flex: 1;
display: flex;
border: 0;
}
}
.form {
flex: 1 0 0px;
label {
font-weight: 700;
}
.date-time-configuration {
display: flex;
.fake-input {
display: none;
}
.timezone-input {
width: 100%;
&.is-expanded {
.select-kit-header {
border: 1px solid var(--primary-medium);
}
}
.select-kit-header {
padding: 0.5em 0.5em;
border: 1px solid var(--primary-low);
.d-icon {
margin-right: 1em;
}
.caret-icon {
margin-right: 0;
}
}
}
.date-time-control {
position: relative;
display: flex;
border: 1px solid var(--primary-low);
&.is-filled,
&.is-selected {
.date-time {
color: var(--primary);
background: var(--secondary);
}
.d-icon {
color: var(--primary-high);
}
}
&.from {
border-radius: 5px 5px 0 0;
.date-time {
border-radius: 5px 5px 0 0;
}
&.is-selected {
border-color: var(--tertiary);
}
}
&.to {
border-radius: 0 0 5px 5px;
margin-bottom: 1em;
.date-time {
border-radius: 0 0 5px 5px;
padding-right: 3em;
}
&.is-selected {
border-color: var(--tertiary);
}
}
.date-time {
color: var(--primary-medium);
background: var(--primary-very-low);
padding: 1em 0.5em 1em 2em;
border: 0;
outline: none;
flex: 1;
@include ellipsis;
width: 100%;
justify-content: flex-start;
&:focus {
background-color: var(--tertiary-50);
}
}
.d-icon {
position: absolute;
margin-top: auto;
margin-bottom: auto;
left: 0.5em;
top: 0;
bottom: 0;
color: var(--primary-medium);
}
.delete-to-date {
position: absolute;
margin-top: auto;
margin-bottom: auto;
right: 0;
width: 30px;
top: 0;
bottom: 0;
color: var(--primary-high);
border-radius: 0 0 5px 0;
}
}
.inputs-panel {
flex: 1;
}
.picker-panel {
z-index: 1;
background: var(--secondary);
width: 200px;
box-sizing: border-box;
margin-left: 1em;
}
.time-pickers {
display: flex;
justify-content: center;
flex: 1;
margin-top: 1em;
align-items: center;
padding: 0.25em;
border-top: 1px solid var(--primary-low-mid);
box-sizing: border-box;
.d-icon {
color: var(--primary-medium);
margin-right: 0.5em;
}
.time-picker {
box-shadow: none;
margin: 0;
box-sizing: border-box;
width: 100%;
}
}
}
.preview {
text-align: center;
margin-top: 0;
margin-bottom: 0.5em;
display: flex;
align-items: center;
padding: 0.5em;
flex-wrap: wrap;
b {
margin-right: 0.5em;
margin-left: 0.5em;
}
b + p {
margin: 0;
display: inline-block;
}
}
.recurrence {
.recurrence-input {
width: 350px;
}
}
}
.validation-error {
margin-bottom: 0.5em;
}
.format {
.format-input {
width: 280px;
}
}
.formats {
list-style: none;
padding: 0;
margin: 0;
.format {
.previewed-format {
color: var(--primary-medium);
}
}
}
.control-group.recurrence,
.control-group.format,
.control-group.timezones {
margin-top: 1em;
}
.timezones-input {
width: 350px;
}
}
html:not(.mobile-view) {
.fixed-modal .discourse-local-dates-create-modal.modal-body {
width: 40em; // using ems to scale with user font size
max-width: 100vw; // avoids overflow if someone has extreme font-sizes impacting width
max-height: 400px !important;
}
}
html.mobile-view {
.fixed-modal .discourse-local-dates-create-modal.modal-body {
max-height: 400px !important;
.date-time-configuration {
flex-direction: column;
}
.picker-panel {
width: 100%;
margin: 0 0 1em 0;
.pika-single {
justify-content: center;
}
}
.time-picker {
padding-top: 6px;
}
}
}