diff --git a/packages/theme/styles/button.scss b/packages/theme/styles/button.scss index 53820dbcfa..df341e369a 100644 --- a/packages/theme/styles/button.scss +++ b/packages/theme/styles/button.scss @@ -1,3 +1,177 @@ +.hulyButton { + display: inline-flex; + justify-content: center; + align-items: center; + flex-shrink: 0; + gap: var(--spacing-1); + border: 1px solid transparent; + + &:not(:disabled, .disabled, .loading) { cursor: pointer; } + &.inheritFont { font: inherit; } + + .icon { + display: flex; + align-items: center; + justify-content: center; + width: var(--spacing-2_5); + height: var(--spacing-2_5); + } + span { white-space: nowrap; } + + &:focus { + outline: 2px solid var(--global-focus-BorderColor); + outline-offset: 2px; + } + &.type-button-icon { padding: 0; } + &.large { + height: var(--global-large-Size); + border-radius: var(--medium-BorderRadius); + + &.round { border-radius: var(--large-BorderRadius); } + + &.type-button:not(.iconOnly) { padding: 0 var(--spacing-2); } + &.iconOnly, + &.type-button-icon { width: var(--global-large-Size); } + } + &.medium { + height: var(--global-medium-Size); + border-radius: var(--medium-BorderRadius); + + &.round { border-radius: var(--large-BorderRadius); } + &.type-button:not(.iconOnly) { padding: 0 var(--spacing-2); } + &.iconOnly, + &.type-button-icon { width: var(--global-medium-Size); } + } + &.small { + height: var(--global-small-Size); + gap: var(--spacing-0_5); + border-radius: var(--small-BorderRadius); + + &.round { border-radius: var(--large-BorderRadius); } + &.type-button:not(.iconOnly) { padding: 0 var(--spacing-1); } + &.iconOnly, + &.type-button-icon { width: var(--global-small-Size); } + } + &.extra-small { + height: var(--global-extra-small-Size); + border-radius: var(--extra-small-BorderRadius); + + &.round { border-radius: var(--large-BorderRadius); } + &.type-button:not(.iconOnly) { padding: 0 var(--spacing-1); } + &.iconOnly, + &.type-button-icon { width: var(--global-extra-small-Size); } + } + &.min { + height: var(--global-min-Size); + border: 0; + border-radius: var(--min-BorderRadius); + } + &.type-button-icon .icon, + &.menu .icon { + width: var(--spacing-2); + height: var(--spacing-2); + } + + &:disabled:not(.loading), + &.disabled:not(.loading) { + border-color: transparent; + cursor: not-allowed; + + .icon { color: var(--button-disabled-IconColor); } + span { color: var(--button-disabled-LabelColor); } + } + + &.primary { + border-color: var(--button-primary-BorderColor); + background-color: var(--button-primary-BackgroundColor); + + .icon { color: var(--button-accent-IconColor); } + span { color: var(--button-accent-LabelColor); } + + &:not(.disabled, :disabled):hover { background-color: var(--button-primary-hover-BackgroundColor); } + &:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { background-color: var(--button-primary-active-BackgroundColor); } + &.menu:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { border-color: var(--button-menu-active-BorderColor); } + &:disabled:not(.loading), + &.disabled:not(.loading) { background-color: var(--button-disabled-BackgroundColor); } + &.loading { + background-color: var(--button-primary-active-BackgroundColor); + + span { color: var(--button-primary-loading-LabelColor); } + } + } + + &.secondary { + border-color: var(--button-secondary-BorderColor); + background-color: var(--button-secondary-BackgroundColor); + + .icon { color: var(--button-subtle-IconColor); } + span { color: var(--button-subtle-LabelColor); } + + &:not(.disabled, :disabled):hover { background-color: var(--button-secondary-hover-BackgroundColor); } + &:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { background-color: var(--button-secondary-active-BackgroundColor); } + &.menu:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { border-color: var(--button-menu-active-BorderColor); } + &:disabled:not(.loading), + &.disabled:not(.loading) { background-color: var(--button-disabled-BackgroundColor); } + &.loading { + background-color: var(--button-secondary-active-BackgroundColor); + + span { color: var(--button-disabled-LabelColor); } + } + } + + &.tertiary { + border-color: transparent; + background-color: transparent; + + &:not(.inheritColor) .icon { color: var(--button-subtle-IconColor); } + &.inheritColor { + color: inherit; + + .icon { color: currentColor; } + } + span { color: var(--button-subtle-LabelColor); } + + &:not(.disabled, :disabled):hover { background-color: var(--button-tertiary-hover-BackgroundColor); } + &:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { background-color: var(--button-tertiary-active-BackgroundColor); } + &.menu:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { border-color: var(--button-menu-active-BorderColor); } + &.loading { + background-color: var(--button-tertiary-active-BackgroundColor); + + span { color: var(--button-disabled-LabelColor); } + } + } + + &.negative { + border-color: var(--button-negative-BorderColor); + background-color: var(--button-negative-BackgroundColor); + + .icon { color: var(--button-accent-IconColor); } + span { color: var(--button-accent-LabelColor); } + + &:not(.disabled, :disabled):hover { background-color: var(--button-negative-hover-BackgroundColor); } + &:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { background-color: var(--button-negative-active-BackgroundColor); } + &.menu:not(.disabled, :disabled):active, + &.pressed:not(.disabled, :disabled) { border-color: var(--button-menu-active-BorderColor); } + &:disabled:not(.loading), + &.disabled:not(.loading) { background-color: var(--button-disabled-BackgroundColor); } + &.loading { + background-color: var(--button-negative-active-BackgroundColor); + + span { color: var(--button-negative-loading-LabelColor); } + } + } + + & > * { pointer-events: none; } +} + +// Old style Button .antiButton { display: flex; align-items: center; diff --git a/packages/ui/src/components/ButtonBase.svelte b/packages/ui/src/components/ButtonBase.svelte index 487cd96623..1acf7c107b 100644 --- a/packages/ui/src/components/ButtonBase.svelte +++ b/packages/ui/src/components/ButtonBase.svelte @@ -92,7 +92,7 @@ - - diff --git a/packages/ui/src/components/calendar/TimeInputBox.svelte b/packages/ui/src/components/calendar/TimeInputBox.svelte index f3b19b3e8e..dc3cb5466b 100644 --- a/packages/ui/src/components/calendar/TimeInputBox.svelte +++ b/packages/ui/src/components/calendar/TimeInputBox.svelte @@ -153,7 +153,7 @@ } } } - const focused = (ed: TEdits): void => { + export const focused = (ed: TEdits): void => { selected = ed startTyping = true } diff --git a/plugins/calendar-resources/src/components/DateEditor.svelte b/plugins/calendar-resources/src/components/DateEditor.svelte index 1795edd5bf..2ab809b2c4 100644 --- a/plugins/calendar-resources/src/components/DateEditor.svelte +++ b/plugins/calendar-resources/src/components/DateEditor.svelte @@ -31,7 +31,7 @@ export let date: number export let difference: number = 0 - export let direction: 'vertical' | 'horizontal' = 'vertical' + export let direction: 'vertical' | 'horizontal' | 'auto' = 'vertical' export let showDate: boolean = true export let withoutTime: boolean export let kind: ButtonBaseKind = 'tertiary' @@ -44,8 +44,9 @@ const dispatch = createEventDispatcher() $: currentDate = new Date(date) + let tib: TimeInputBox - function timeClick (e: MouseEvent) { + function timeClick (e: MouseEvent & { currentTarget: EventTarget & HTMLElement }) { if (!showDate) { showPopup( DatePopup, @@ -58,7 +59,7 @@ } } ) - } + } else if (!disabled) tib.focused(e.offsetX <= e.currentTarget.clientWidth / 2 ? 'hour' : 'min') } function dateClick (e: MouseEvent) { @@ -85,13 +86,17 @@ {#if fixed === undefined}