2018-05-31 01:05:41 +08:00
|
|
|
.discourse-local-date {
|
2021-08-04 22:28:07 +08:00
|
|
|
> * {
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
|
2018-10-09 15:04:42 +08:00
|
|
|
&.cooked-date {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary);
|
2018-05-31 01:05:41 +08:00
|
|
|
cursor: pointer;
|
2020-08-04 23:14:33 +08:00
|
|
|
border-bottom: 1px dashed var(--primary-medium);
|
2019-07-30 14:04:30 +08:00
|
|
|
white-space: nowrap;
|
2018-10-12 05:02:44 +08:00
|
|
|
|
2018-11-27 05:49:57 +08:00
|
|
|
.d-icon {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary);
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
2018-10-09 22:45:32 +08:00
|
|
|
|
|
|
|
&.past {
|
2020-08-04 23:14:33 +08:00
|
|
|
border-bottom-color: var(--primary-low-mid);
|
2018-10-09 22:45:32 +08:00
|
|
|
}
|
2019-08-25 00:39:20 +08:00
|
|
|
|
|
|
|
&.past[data-countdown] {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-medium);
|
2019-08-25 00:39:20 +08:00
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-13 01:55:12 +08:00
|
|
|
div[data-tippy-root] {
|
|
|
|
.locale-dates-previews {
|
|
|
|
max-width: 360px;
|
|
|
|
.preview {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
padding: 5px;
|
2018-11-26 21:20:32 +08:00
|
|
|
|
2023-09-13 01:55:12 +08:00
|
|
|
.timezone {
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
2018-11-26 21:20:32 +08:00
|
|
|
|
2023-09-13 01:55:12 +08:00
|
|
|
&.current {
|
|
|
|
background: var(--tertiary-low);
|
|
|
|
}
|
DEV: FloatKit (#23541)
Second iteration of https://github.com/discourse/discourse/pull/23312 with a fix for embroider not resolving an export file using .gjs extension.
---
This PR introduces three new concepts to Discourse codebase through an addon called "FloatKit":
- menu
- tooltip
- toast
## Tooltips
### Component
Simple cases can be express with an API similar to DButton:
```hbs
<DTooltip
@label={{i18n "foo.bar"}}
@icon="check"
@content="Something"
/>
```
More complex cases can use blocks:
```hbs
<DTooltip>
<:trigger>
{{d-icon "check"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
Something
</:content>
</DTooltip>
```
### Service
You can manually show a tooltip using the `tooltip` service:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
options
)
// and later manual close or destroy it
tooltipInstance.close();
tooltipInstance.destroy();
// you can also just close any open tooltip through the service
this.tooltip.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const tooltipInstance = this.tooltip.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
tooltipInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
## Menus
Menus are very similar to tooltips and provide the same kind of APIs:
### Component
```hbs
<DMenu @icon="plus" @label={{i18n "foo.bar"}}>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</DMenu>
```
They also support blocks:
```hbs
<DMenu>
<:trigger>
{{d-icon "plus"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</:content>
</DMenu>
```
### Service
You can manually show a menu using the `menu` service:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
options
)
// and later manual close or destroy it
menuInstance.close();
menuInstance.destroy();
// you can also just close any open tooltip through the service
this.menu.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const menuInstance = this.menu.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
menuInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
## Toasts
Interacting with toasts is made only through the `toasts` service.
A default component is provided (DDefaultToast) and can be used through dedicated service methods:
- this.toasts.success({ ... });
- this.toasts.warning({ ... });
- this.toasts.info({ ... });
- this.toasts.error({ ... });
- this.toasts.default({ ... });
```javascript
this.toasts.success({
data: {
title: "Foo",
message: "Bar",
actions: [
{
label: "Ok",
class: "btn-primary",
action: (componentArgs) => {
// eslint-disable-next-line no-alert
alert("Closing toast:" + componentArgs.data.title);
componentArgs.close();
},
}
]
},
});
```
You can also provide your own component:
```javascript
this.toasts.show(MyComponent, {
autoClose: false,
class: "foo",
data: { baz: 1 },
})
```
Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
Co-authored-by: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com>
Co-authored-by: David Taylor <david@taylorhq.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-09-12 21:50:26 +08:00
|
|
|
}
|
2023-09-12 21:37:16 +08:00
|
|
|
}
|
DEV: FloatKit (#23312)
This PR introduces three new UI elements to Discourse codebase through an addon called "FloatKit":
- menu
- tooltip
- toast
Simple cases can be express with an API similar to DButton:
```hbs
<DTooltip
@label={{i18n "foo.bar"}}
@icon="check"
@content="Something"
/>
```
More complex cases can use blocks:
```hbs
<DTooltip>
<:trigger>
{{d-icon "check"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
Something
</:content>
</DTooltip>
```
You can manually show a tooltip using the `tooltip` service:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
options
)
// and later manually close or destroy it
tooltipInstance.close();
tooltipInstance.destroy();
// you can also just close any open tooltip through the service
this.tooltip.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const tooltipInstance = this.tooltip.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
tooltipInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
Menus are very similar to tooltips and provide the same kind of APIs:
```hbs
<DMenu @icon="plus" @label={{i18n "foo.bar"}}>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</DMenu>
```
They also support blocks:
```hbs
<DMenu>
<:trigger>
{{d-icon "plus"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</:content>
</DMenu>
```
You can manually show a menu using the `menu` service:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
options
)
// and later manually close or destroy it
menuInstance.close();
menuInstance.destroy();
// you can also just close any open tooltip through the service
this.menu.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const menuInstance = this.menu.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
menuInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
Interacting with toasts is made only through the `toasts` service.
A default component is provided (DDefaultToast) and can be used through dedicated service methods:
- this.toasts.success({ ... });
- this.toasts.warning({ ... });
- this.toasts.info({ ... });
- this.toasts.error({ ... });
- this.toasts.default({ ... });
```javascript
this.toasts.success({
data: {
title: "Foo",
message: "Bar",
actions: [
{
label: "Ok",
class: "btn-primary",
action: (componentArgs) => {
// eslint-disable-next-line no-alert
alert("Closing toast:" + componentArgs.data.title);
componentArgs.close();
},
}
]
},
});
```
You can also provide your own component:
```javascript
this.toasts.show(MyComponent, {
autoClose: false,
class: "foo",
data: { baz: 1 },
})
```
Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
Co-authored-by: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com>
Co-authored-by: David Taylor <david@taylorhq.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-09-12 21:06:51 +08:00
|
|
|
|
2023-09-13 01:55:12 +08:00
|
|
|
.download-calendar {
|
|
|
|
text-align: right;
|
|
|
|
cursor: pointer;
|
|
|
|
margin-top: 0.5em;
|
|
|
|
}
|
DEV: FloatKit (#23541)
Second iteration of https://github.com/discourse/discourse/pull/23312 with a fix for embroider not resolving an export file using .gjs extension.
---
This PR introduces three new concepts to Discourse codebase through an addon called "FloatKit":
- menu
- tooltip
- toast
## Tooltips
### Component
Simple cases can be express with an API similar to DButton:
```hbs
<DTooltip
@label={{i18n "foo.bar"}}
@icon="check"
@content="Something"
/>
```
More complex cases can use blocks:
```hbs
<DTooltip>
<:trigger>
{{d-icon "check"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
Something
</:content>
</DTooltip>
```
### Service
You can manually show a tooltip using the `tooltip` service:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
options
)
// and later manual close or destroy it
tooltipInstance.close();
tooltipInstance.destroy();
// you can also just close any open tooltip through the service
this.tooltip.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const tooltipInstance = this.tooltip.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
tooltipInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const tooltipInstance = await this.tooltip.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
## Menus
Menus are very similar to tooltips and provide the same kind of APIs:
### Component
```hbs
<DMenu @icon="plus" @label={{i18n "foo.bar"}}>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</DMenu>
```
They also support blocks:
```hbs
<DMenu>
<:trigger>
{{d-icon "plus"}}
<span>{{i18n "foo.bar"}}</span>
</:trigger>
<:content>
<ul>
<li>Foo</li>
<li>Bat</li>
<li>Baz</li>
</ul>
</:content>
</DMenu>
```
### Service
You can manually show a menu using the `menu` service:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
options
)
// and later manual close or destroy it
menuInstance.close();
menuInstance.destroy();
// you can also just close any open tooltip through the service
this.menu.close();
```
The service also allows you to register event listeners on a trigger, it removes the need for you to manage open/close of a tooltip started through the service:
```javascript
const menuInstance = this.menu.register(
document.querySelector(".my-span"),
options
)
// when done you can destroy the instance to remove the listeners
menuInstance.destroy();
```
Note that the service also allows you to use a custom component as content which will receive `@data` and `@close` as args:
```javascript
const menuInstance = await this.menu.show(
document.querySelector(".my-span"),
{
component: MyComponent,
data: { foo: 1 }
}
)
```
## Toasts
Interacting with toasts is made only through the `toasts` service.
A default component is provided (DDefaultToast) and can be used through dedicated service methods:
- this.toasts.success({ ... });
- this.toasts.warning({ ... });
- this.toasts.info({ ... });
- this.toasts.error({ ... });
- this.toasts.default({ ... });
```javascript
this.toasts.success({
data: {
title: "Foo",
message: "Bar",
actions: [
{
label: "Ok",
class: "btn-primary",
action: (componentArgs) => {
// eslint-disable-next-line no-alert
alert("Closing toast:" + componentArgs.data.title);
componentArgs.close();
},
}
]
},
});
```
You can also provide your own component:
```javascript
this.toasts.show(MyComponent, {
autoClose: false,
class: "foo",
data: { baz: 1 },
})
```
Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
Co-authored-by: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com>
Co-authored-by: David Taylor <david@taylorhq.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2023-09-12 21:50:26 +08:00
|
|
|
}
|
|
|
|
|
2023-09-13 22:00:38 +08:00
|
|
|
.discourse-local-dates-create-modal .modal-footer {
|
2018-05-31 01:05:41 +08:00
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
2018-06-08 17:49:31 +08:00
|
|
|
&:before,
|
|
|
|
&:after {
|
2018-05-31 01:05:41 +08:00
|
|
|
content: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.advanced-mode-btn {
|
|
|
|
margin-left: auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.discourse-local-dates-create-modal {
|
2020-02-20 00:08:15 +08:00
|
|
|
box-sizing: border-box;
|
2019-04-11 17:14:34 +08:00
|
|
|
min-height: 320px;
|
2018-05-31 01:05:41 +08:00
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
2019-04-02 20:39:20 +08:00
|
|
|
padding: 0.5em;
|
2023-09-13 22:00:38 +08:00
|
|
|
overflow: auto;
|
2018-05-31 01:05:41 +08:00
|
|
|
|
|
|
|
.form {
|
2019-01-22 02:40:55 +08:00
|
|
|
flex: 1 0 0px;
|
2018-05-31 01:05:41 +08:00
|
|
|
|
|
|
|
label {
|
|
|
|
font-weight: 700;
|
|
|
|
}
|
|
|
|
|
|
|
|
.date-time-configuration {
|
|
|
|
display: flex;
|
2018-06-11 19:16:03 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.fake-input {
|
|
|
|
display: none;
|
|
|
|
}
|
2019-03-28 23:34:56 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.timezone-input {
|
|
|
|
width: 100%;
|
2018-06-11 19:16:03 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
&.is-expanded {
|
|
|
|
.select-kit-header {
|
2020-08-04 23:14:33 +08:00
|
|
|
border: 1px solid var(--primary-medium);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
2018-06-11 19:16:03 +08:00
|
|
|
}
|
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.select-kit-header {
|
|
|
|
padding: 0.5em 0.5em;
|
2020-08-04 23:14:33 +08:00
|
|
|
border: 1px solid var(--primary-low);
|
2019-04-11 17:14:34 +08:00
|
|
|
|
|
|
|
.d-icon {
|
|
|
|
margin-right: 1em;
|
|
|
|
}
|
|
|
|
|
|
|
|
.caret-icon {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
2018-06-11 19:16:03 +08:00
|
|
|
}
|
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.date-time-control {
|
|
|
|
position: relative;
|
|
|
|
display: flex;
|
2020-08-04 23:14:33 +08:00
|
|
|
border: 1px solid var(--primary-low);
|
2019-04-11 17:14:34 +08:00
|
|
|
|
|
|
|
&.is-filled,
|
|
|
|
&.is-selected {
|
|
|
|
.date-time {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary);
|
|
|
|
background: var(--secondary);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.d-icon {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-high);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.from {
|
|
|
|
border-radius: 5px 5px 0 0;
|
|
|
|
|
|
|
|
.date-time {
|
|
|
|
border-radius: 5px 5px 0 0;
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
2019-04-11 17:14:34 +08:00
|
|
|
|
|
|
|
&.is-selected {
|
2020-08-04 23:14:33 +08:00
|
|
|
border-color: var(--tertiary);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.to {
|
|
|
|
border-radius: 0 0 5px 5px;
|
|
|
|
margin-bottom: 1em;
|
|
|
|
|
|
|
|
.date-time {
|
|
|
|
border-radius: 0 0 5px 5px;
|
|
|
|
padding-right: 3em;
|
|
|
|
}
|
|
|
|
|
|
|
|
&.is-selected {
|
2020-08-04 23:14:33 +08:00
|
|
|
border-color: var(--tertiary);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.date-time {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-medium);
|
|
|
|
background: var(--primary-very-low);
|
2022-08-16 02:50:07 +08:00
|
|
|
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);
|
|
|
|
}
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.d-icon {
|
|
|
|
position: absolute;
|
|
|
|
margin-top: auto;
|
|
|
|
margin-bottom: auto;
|
|
|
|
left: 0.5em;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-medium);
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.delete-to-date {
|
|
|
|
position: absolute;
|
|
|
|
margin-top: auto;
|
|
|
|
margin-bottom: auto;
|
|
|
|
right: 0;
|
|
|
|
width: 30px;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-high);
|
2019-04-11 17:14:34 +08:00
|
|
|
border-radius: 0 0 5px 0;
|
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.inputs-panel {
|
|
|
|
flex: 1;
|
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
|
2019-03-28 23:34:56 +08:00
|
|
|
.preview {
|
|
|
|
text-align: center;
|
|
|
|
margin-top: 0;
|
2019-04-02 20:39:20 +08:00
|
|
|
margin-bottom: 0.5em;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 0.5em;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
|
|
b {
|
|
|
|
margin-right: 0.5em;
|
2022-02-03 06:41:42 +08:00
|
|
|
margin-left: 0.5em;
|
2019-04-02 20:39:20 +08:00
|
|
|
}
|
2019-03-28 23:34:56 +08:00
|
|
|
|
2019-04-02 20:39:20 +08:00
|
|
|
b + p {
|
|
|
|
margin: 0;
|
|
|
|
display: inline-block;
|
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.recurrence {
|
|
|
|
.recurrence-input {
|
2023-01-28 05:26:32 +08:00
|
|
|
width: 350px;
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
}
|
2018-06-08 17:49:31 +08:00
|
|
|
}
|
|
|
|
|
2019-04-02 20:39:20 +08:00
|
|
|
.validation-error {
|
|
|
|
margin-bottom: 0.5em;
|
|
|
|
}
|
|
|
|
|
2018-06-08 17:49:31 +08:00
|
|
|
.format {
|
|
|
|
.format-input {
|
|
|
|
width: 280px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.formats {
|
|
|
|
list-style: none;
|
|
|
|
padding: 0;
|
|
|
|
margin: 0;
|
|
|
|
.format {
|
|
|
|
.previewed-format {
|
2020-08-04 23:14:33 +08:00
|
|
|
color: var(--primary-medium);
|
2018-06-08 17:49:31 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.control-group.recurrence,
|
|
|
|
.control-group.format,
|
|
|
|
.control-group.timezones {
|
|
|
|
margin-top: 1em;
|
|
|
|
}
|
2018-05-31 01:05:41 +08:00
|
|
|
|
|
|
|
.timezones-input {
|
2023-01-28 05:26:32 +08:00
|
|
|
width: 350px;
|
2018-05-31 01:05:41 +08:00
|
|
|
}
|
|
|
|
}
|
2019-03-28 23:34:56 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
html:not(.mobile-view) {
|
2023-09-13 23:24:28 +08:00
|
|
|
.discourse-local-dates-create-modal .modal-body {
|
2021-11-10 03:56:05 +08:00
|
|
|
width: 40em; // using ems to scale with user font size
|
|
|
|
max-width: 100vw; // avoids overflow if someone has extreme font-sizes impacting width
|
2019-06-16 14:48:07 +08:00
|
|
|
max-height: 400px !important;
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
|
|
|
}
|
2019-04-02 20:39:20 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
html.mobile-view {
|
2023-09-13 23:24:28 +08:00
|
|
|
.discourse-local-dates-create-modal .modal-body {
|
2019-06-16 14:48:07 +08:00
|
|
|
max-height: 400px !important;
|
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.date-time-configuration {
|
|
|
|
flex-direction: column;
|
|
|
|
}
|
2019-03-28 23:34:56 +08:00
|
|
|
|
2023-08-11 11:05:44 +08:00
|
|
|
.calendar-date-time-input {
|
2019-04-11 17:14:34 +08:00
|
|
|
width: 100%;
|
|
|
|
margin: 0 0 1em 0;
|
2019-03-28 23:34:56 +08:00
|
|
|
|
2019-04-11 17:14:34 +08:00
|
|
|
.pika-single {
|
|
|
|
justify-content: center;
|
2019-03-28 23:34:56 +08:00
|
|
|
}
|
2019-04-11 17:14:34 +08:00
|
|
|
|
2023-08-11 11:05:44 +08:00
|
|
|
.time-picker {
|
|
|
|
padding-top: 6px;
|
|
|
|
}
|
2019-04-11 17:14:34 +08:00
|
|
|
}
|
2019-03-28 23:34:56 +08:00
|
|
|
}
|
|
|
|
}
|