diff --git a/frontend/src/components/base/Expandable.vue b/frontend/src/components/base/Expandable.vue index 0cae6e499..dd1e2a77c 100644 --- a/frontend/src/components/base/Expandable.vue +++ b/frontend/src/components/base/Expandable.vue @@ -168,14 +168,14 @@ $ease-in-out-quint: cubic-bezier(0.83, 0, 0.17, 1); v-bind(computedBackgroundColor) ); position: absolute; - height: 40px; - width: 100%; + block-size: 40px; + inline-size: 100%; inset-block-end: 0; } } .expandable-initial-height--expanded { - height: 100% !important; + block-size: 100% !important; &::after { display: none; diff --git a/frontend/src/components/date/DatepickerWithRange.vue b/frontend/src/components/date/DatepickerWithRange.vue index 461997362..05a7878ee 100644 --- a/frontend/src/components/date/DatepickerWithRange.vue +++ b/frontend/src/components/date/DatepickerWithRange.vue @@ -234,15 +234,15 @@ const buttonText = computed(() => { box-shadow: $shadow; &.is-open { - width: 500px; - height: 320px; + inline-size: 500px; + block-size: 320px; } } .datepicker-with-range { display: flex; - width: 100%; - height: 100%; + inline-size: 100%; + block-size: 100%; position: absolute; } @@ -252,21 +252,21 @@ const buttonText = computed(() => { } .flatpickr-container { - width: 70%; + inline-size: 70%; border-inline-start: 1px solid var(--grey-200); padding: 1rem; font-size: .9rem; // Flatpickr has no option to use it without an input field so we're hiding it instead :deep(input.form-control.input) { - height: 0; + block-size: 0; padding: 0; border: 0; } .field .control :deep(.button) { border: 1px solid var(--input-border-color); - height: 2.25rem; + block-size: 2.25rem; &:hover { border: 1px solid var(--input-hover-border-color); @@ -279,7 +279,7 @@ const buttonText = computed(() => { } .selections { - width: 30%; + inline-size: 30%; display: flex; flex-direction: column; padding-block-start: .5rem; @@ -287,7 +287,7 @@ const buttonText = computed(() => { button { display: block; - width: 100%; + inline-size: 100%; text-align: start; padding: .5rem 1rem; transition: $transition; diff --git a/frontend/src/components/date/DatepickerWithValues.vue b/frontend/src/components/date/DatepickerWithValues.vue index fe2cb732e..62b030de2 100644 --- a/frontend/src/components/date/DatepickerWithValues.vue +++ b/frontend/src/components/date/DatepickerWithValues.vue @@ -180,15 +180,15 @@ const customRangeActive = computed(() => { box-shadow: $shadow; &.is-open { - width: 500px; - height: 320px; + inline-size: 500px; + block-size: 320px; } } .datepicker-with-range { display: flex; - width: 100%; - height: 100%; + inline-size: 100%; + block-size: 100%; position: absolute; } @@ -198,21 +198,21 @@ const customRangeActive = computed(() => { } .flatpickr-container { - width: 70%; + inline-size: 70%; border-inline-start: 1px solid var(--grey-200); padding: 1rem; font-size: .9rem; // Flatpickr has no option to use it without an input field so we're hiding it instead :deep(input.form-control.input) { - height: 0; + block-size: 0; padding: 0; border: 0; } .field .control :deep(.button) { border: 1px solid var(--input-border-color); - height: 2.25rem; + block-size: 2.25rem; &:hover { border: 1px solid var(--input-hover-border-color); @@ -225,7 +225,7 @@ const customRangeActive = computed(() => { } .selections { - width: 30%; + inline-size: 30%; display: flex; flex-direction: column; padding-block-start: .5rem; @@ -233,7 +233,7 @@ const customRangeActive = computed(() => { button { display: block; - width: 100%; + inline-size: 100%; text-align: start; padding: .5rem 1rem; transition: $transition; diff --git a/frontend/src/components/home/AddToHomeScreen.vue b/frontend/src/components/home/AddToHomeScreen.vue index c73cb6b3a..337bd8276 100644 --- a/frontend/src/components/home/AddToHomeScreen.vue +++ b/frontend/src/components/home/AddToHomeScreen.vue @@ -53,7 +53,7 @@ const shouldShowMessage = computed(() => { z-index: 5000; inset-block-end: 1rem; inset-inline: 1rem; - max-width: max-content; + max-inline-size: max-content; margin-inline: auto; display: flex; diff --git a/frontend/src/components/home/AppHeader.vue b/frontend/src/components/home/AppHeader.vue index 4b81d49b4..e5dd2aa9b 100644 --- a/frontend/src/components/home/AppHeader.vue +++ b/frontend/src/components/home/AppHeader.vue @@ -214,7 +214,7 @@ $user-dropdown-width-mobile: 5rem; // this makes the truncated text of the project title work // inside the flexbox parent - min-width: 0; + min-inline-size: 0; @media screen and (min-width: $tablet) { padding-inline: var(--navbar-gap-width); @@ -243,7 +243,7 @@ $user-dropdown-width-mobile: 5rem; .project-title-button { align-self: stretch; - min-width: var(--navbar-button-min-width); + min-inline-size: var(--navbar-button-min-width); display: flex; place-items: center; justify-content: center; @@ -252,14 +252,14 @@ $user-dropdown-width-mobile: 5rem; } .navbar-end { - margin-left: 0; // overrides bulma core styles + margin-inline-start: 0; // overrides bulma core styles margin-inline-start: auto; flex: 0 0 auto; display: flex; align-items: stretch; >* { - min-width: var(--navbar-button-min-width); + min-inline-size: var(--navbar-button-min-width); } } @@ -303,7 +303,7 @@ $user-dropdown-width-mobile: 5rem; .avatar { border-radius: 100%; vertical-align: middle; - height: 40px; + block-size: 40px; margin-inline-end: .5rem; } diff --git a/frontend/src/components/home/ContentAuth.vue b/frontend/src/components/home/ContentAuth.vue index 5469d5e91..a77749b65 100644 --- a/frontend/src/components/home/ContentAuth.vue +++ b/frontend/src/components/home/ContentAuth.vue @@ -135,8 +135,8 @@ projectStore.loadAllProjects() inset-block-start: 0.5rem; inset-inline-end: 0.5rem; z-index: 31; - width: 3rem; - height: 3rem; + inline-size: 3rem; + block-size: 3rem; display: flex; justify-content: center; align-items: center; @@ -156,7 +156,7 @@ projectStore.loadAllProjects() } .app-container { - min-height: calc(100vh - 65px); + min-block-size: calc(100vh - 65px); @media screen and (max-width: $tablet) { padding-block-start: $navbar-height; @@ -174,7 +174,7 @@ projectStore.loadAllProjects() @media screen and (max-width: $tablet) { margin-inline-start: 0; margin-inline-end: 0; - min-height: calc(100vh - 4rem); + min-block-size: calc(100vh - 4rem); } @media screen and (min-width: $tablet) { @@ -189,7 +189,7 @@ projectStore.loadAllProjects() // Used to make sure the spinner is always in the middle while loading > .loader-container { - min-height: calc(100vh - #{$navbar-height + 1.5rem + 1rem}); + min-block-size: calc(100vh - #{$navbar-height + 1.5rem + 1rem}); } // FIXME: This should be somehow defined inside Card.vue @@ -205,8 +205,8 @@ projectStore.loadAllProjects() inset-block-end: 0; inset-inline-start: 0; inset-inline-end: 0; - height: 100vh; - width: 100vw; + block-size: 100vh; + inline-size: 100vw; background: hsla(var(--grey-100-hsl), 0.8); z-index: 5; opacity: 0; diff --git a/frontend/src/components/home/ContentLinkShare.vue b/frontend/src/components/home/ContentLinkShare.vue index 9bf75cc82..47ed0a1bb 100644 --- a/frontend/src/components/home/ContentLinkShare.vue +++ b/frontend/src/components/home/ContentLinkShare.vue @@ -72,10 +72,10 @@ const isFullWidth = computed(() => { } .logo { - max-width: 300px; - width: 90%; + max-inline-size: 300px; + inline-size: 90%; margin: 1rem auto 2rem; - height: 100px; + block-size: 100px; } .title { @@ -83,14 +83,14 @@ const isFullWidth = computed(() => { } .link-share-view { - width: 100%; - max-width: $desktop; + inline-size: 100%; + max-inline-size: $desktop; margin: 0 auto; } .link-share-container.link-share-is-fullwidth { .link-share-view { - max-width: 100vw; + max-inline-size: 100vw; } } diff --git a/frontend/src/components/home/Logo.vue b/frontend/src/components/home/Logo.vue index 9b82388f1..d0b28f42d 100644 --- a/frontend/src/components/home/Logo.vue +++ b/frontend/src/components/home/Logo.vue @@ -39,7 +39,7 @@ const CustomLogo = computed(() => window.CUSTOM_LOGO_URL) diff --git a/frontend/src/components/home/MenuButton.vue b/frontend/src/components/home/MenuButton.vue index 069c423c7..1ab8dab83 100644 --- a/frontend/src/components/home/MenuButton.vue +++ b/frontend/src/components/home/MenuButton.vue @@ -20,26 +20,26 @@ const menuActive = computed(() => baseStore.menuActive) diff --git a/frontend/src/components/input/AutocompleteDropdown.vue b/frontend/src/components/input/AutocompleteDropdown.vue index 60902c701..b3a91b652 100644 --- a/frontend/src/components/input/AutocompleteDropdown.vue +++ b/frontend/src/components/input/AutocompleteDropdown.vue @@ -192,20 +192,18 @@ function onUpdateField(e) { border: 1px solid var(--primary); border-block-start: none; - max-height: 50vh; + max-block-size: 50vh; overflow-x: auto; z-index: 100; - max-width: 100%; - min-width: 100%; + max-inline-size: 100%; + min-inline-size: 100%; margin-block-start: -2px; button { - width: 100%; background: transparent; - border: 0; font-size: .9rem; - width: 100%; + inline-size: 100%; color: var(--grey-800); text-align: start; box-shadow: none; diff --git a/frontend/src/components/input/Button.vue b/frontend/src/components/input/Button.vue index 721b95507..fc1f449ff 100644 --- a/frontend/src/components/input/Button.vue +++ b/frontend/src/components/input/Button.vue @@ -80,15 +80,13 @@ const variantClass = computed(() => VARIANT_CLASS_MAP[props.variant]) text-transform: uppercase; font-size: 0.85rem; font-weight: bold; - height: auto; - min-height: $button-height; + block-size: auto; + min-block-size: $button-height; box-shadow: var(--shadow-sm); - display: inline-flex; white-space: var(--button-white-space); line-height: 1; display: inline-flex; - padding-left: 0; // override bulma style - padding-right: 0; // override bulma style + padding-inline: 0; // override bulma style // override bulma style padding-inline: .5rem; gap: .25rem; @@ -102,7 +100,7 @@ const variantClass = computed(() => VARIANT_CLASS_MAP[props.variant]) &.fullheight { padding-inline-end: 7px; - height: 100%; + block-size: 100%; } &.is-active, diff --git a/frontend/src/components/input/ColorPicker.vue b/frontend/src/components/input/ColorPicker.vue index f63e595eb..80b3fd072 100644 --- a/frontend/src/components/input/ColorPicker.vue +++ b/frontend/src/components/input/ColorPicker.vue @@ -147,15 +147,15 @@ function reset() { border: none; } - $PICKER_SIZE: 24px; - $BORDER_WIDTH: 1px; + $picker-size: 24px; + $border-width: 1px; .picker { display: grid; - width: $PICKER_SIZE; - height: $PICKER_SIZE; + inline-size: $picker-size; + block-size: $picker-size; overflow: hidden; border-radius: 100%; - border: $BORDER_WIDTH solid var(--grey-300); + border: $border-width solid var(--grey-300); box-shadow: $shadow; & > * { @@ -166,8 +166,8 @@ function reset() { input.picker__input { padding: 0; - width: $PICKER_SIZE - 2 * $BORDER_WIDTH; - height: $PICKER_SIZE - 2 * $BORDER_WIDTH; + inline-size: $picker-size - 2 * $border-width; + block-size: $picker-size - 2 * $border-width; } .picker__input.is-empty { diff --git a/frontend/src/components/input/Datepicker.vue b/frontend/src/components/input/Datepicker.vue index 7ea252261..d7a2af655 100644 --- a/frontend/src/components/input/Datepicker.vue +++ b/frontend/src/components/input/Datepicker.vue @@ -128,19 +128,19 @@ function close() { .datepicker-popup { position: absolute; z-index: 99; - width: 320px; + inline-size: 320px; background: var(--white); border-radius: $radius; box-shadow: $shadow; @media screen and (max-width: ($tablet)) { - width: calc(100vw - 5rem); + inline-size: calc(100vw - 5rem); } } .datepicker__close-button { margin: 1rem; - width: calc(100% - 2rem); + inline-size: calc(100% - 2rem); } :deep(.flatpickr-calendar) { diff --git a/frontend/src/components/input/DatepickerInline.vue b/frontend/src/components/input/DatepickerInline.vue index fbe975cd2..5f2d517d6 100644 --- a/frontend/src/components/input/DatepickerInline.vue +++ b/frontend/src/components/input/DatepickerInline.vue @@ -222,8 +222,8 @@ function getWeekdayFromStringInterval(dateString: string) { display: flex; align-items: center; padding: 0 .5rem; - width: 100%; - height: 2.25rem; + inline-size: 100%; + block-size: 2.25rem; color: var(--text); transition: all $transition; @@ -236,7 +236,7 @@ function getWeekdayFromStringInterval(dateString: string) { } .text { - width: 100%; + inline-size: 100%; font-size: .85rem; display: flex; justify-content: space-between; @@ -249,7 +249,7 @@ function getWeekdayFromStringInterval(dateString: string) { } .icon { - width: 2rem; + inline-size: 2rem; text-align: center; } } diff --git a/frontend/src/components/input/Multiselect.vue b/frontend/src/components/input/Multiselect.vue index 95b626876..bbb8a67f8 100644 --- a/frontend/src/components/input/Multiselect.vue +++ b/frontend/src/components/input/Multiselect.vue @@ -435,7 +435,7 @@ function focus() { diff --git a/frontend/src/components/input/editor/TipTap.vue b/frontend/src/components/input/editor/TipTap.vue index 2c3f0e774..b80072524 100644 --- a/frontend/src/components/input/editor/TipTap.vue +++ b/frontend/src/components/input/editor/TipTap.vue @@ -747,7 +747,7 @@ watch( border-radius: $radius; &.tiptap__editor-is-edit-enabled { - min-height: 10rem; + min-block-size: 10rem; .ProseMirror { padding: .5rem; @@ -767,8 +767,8 @@ watch( content: attr(data-placeholder); color: var(--grey-400); pointer-events: none; - height: 0; - float: left; + block-size: 0; + float: inline-start; } // Basic editor styles @@ -806,7 +806,7 @@ watch( pre { background: var(--grey-200); color: var(--grey-700); - font-family: 'JetBrainsMono', monospace; + font-family: JetBrainsMono, monospace; padding: 0.75rem 1rem; border-radius: $radius; @@ -829,7 +829,6 @@ watch( .hljs-name, .hljs-regexp, .hljs-link, - .hljs-name, .hljs-selector-id, .hljs-selector-class { color: var(--code-variable); @@ -871,8 +870,8 @@ watch( } img { - max-width: 100%; - height: auto; + max-inline-size: 100%; + block-size: auto; &.ProseMirror-selectednode { outline: 3px solid var(--primary); @@ -889,21 +888,18 @@ watch( border-block-start: 2px solid rgba(#0d0d0d, 0.1); margin: 2rem 0; } -} - -.ProseMirror { - /* Table-specific styling */ - + + // Table-specific styling table { border-collapse: collapse; table-layout: fixed; - width: 100%; + inline-size: 100%; margin: 0; overflow: hidden; td, th { - min-width: 1em; + min-inline-size: 1em; border: 2px solid var(--grey-300) !important; padding: 3px 5px; vertical-align: top; @@ -938,8 +934,8 @@ watch( inset-inline-end: -2px; inset-block-start: 0; inset-block-end: -2px; - width: 4px; - background-color: #adf; + inline-size: 4px; + background-color: #aaddff; pointer-events: none; } @@ -1022,8 +1018,8 @@ ul[data-type='taskList'] { svg { box-sizing: border-box; display: block; - width: 2rem; - height: 2rem; + inline-size: 2rem; + block-size: 2rem; padding: .5rem; margin: 0; } diff --git a/frontend/src/components/misc/ColorBubble.vue b/frontend/src/components/misc/ColorBubble.vue index dfa6302b5..894bbc9ec 100644 --- a/frontend/src/components/misc/ColorBubble.vue +++ b/frontend/src/components/misc/ColorBubble.vue @@ -17,8 +17,8 @@ defineProps< { .color-bubble { display: inline-block; border-radius: 100%; - height: 10px; - width: 10px; + block-size: 10px; + inline-size: 10px; flex-shrink: 0; } diff --git a/frontend/src/components/misc/CustomTransition.vue b/frontend/src/components/misc/CustomTransition.vue index 63eb73987..23f406a20 100644 --- a/frontend/src/components/misc/CustomTransition.vue +++ b/frontend/src/components/misc/CustomTransition.vue @@ -55,7 +55,7 @@ $flash-background-duration: 750ms; .width-enter-from, .width-leave-to { - width: 0; + inline-size: 0; } .modal-enter, diff --git a/frontend/src/components/misc/Dropdown.vue b/frontend/src/components/misc/Dropdown.vue index 55c982462..36871bb89 100644 --- a/frontend/src/components/misc/Dropdown.vue +++ b/frontend/src/components/misc/Dropdown.vue @@ -92,7 +92,7 @@ onClickOutside(dropdown, (e) => { } .dropdown-menu { - min-width: 12rem; + min-inline-size: 12rem; padding-block-start: 4px; position: absolute; inset-block-start: 100%; @@ -114,7 +114,7 @@ onClickOutside(dropdown, (e) => { background-color: var(--border-light); border: none; display: block; - height: 1px; + block-size: 1px; margin: 0.5rem 0; } diff --git a/frontend/src/components/misc/DropdownItem.vue b/frontend/src/components/misc/DropdownItem.vue index 1a58d4d90..0084e6196 100644 --- a/frontend/src/components/misc/DropdownItem.vue +++ b/frontend/src/components/misc/DropdownItem.vue @@ -40,7 +40,7 @@ defineProps() position: relative; text-align: inherit; white-space: nowrap; - width: 100%; + inline-size: 100%; display: flex; align-items: center; justify-content: left !important; diff --git a/frontend/src/components/misc/Loading.vue b/frontend/src/components/misc/Loading.vue index 43f6c6b01..b4de8c0c6 100644 --- a/frontend/src/components/misc/Loading.vue +++ b/frontend/src/components/misc/Loading.vue @@ -15,24 +15,24 @@ withDefaults(defineProps<{ diff --git a/frontend/src/components/misc/ProgressBar.vue b/frontend/src/components/misc/ProgressBar.vue index b8fbc362a..fad67d92c 100644 --- a/frontend/src/components/misc/ProgressBar.vue +++ b/frontend/src/components/misc/ProgressBar.vue @@ -34,12 +34,12 @@ withDefaults(defineProps<{ appearance: none; border: none; border-radius: var(--progress-border-radius); - height: var(--progress-height); + block-size: var(--progress-height); overflow: hidden; padding: 0; - min-width: 6vw; + min-inline-size: 6vw; - width: 50px; + inline-size: 50px; margin: 0 .5rem 0 0; flex: 3 1 auto; @@ -49,9 +49,9 @@ withDefaults(defineProps<{ } @media screen and (max-width: $tablet) { - margin: 0.5rem 0 0 0; + margin: 0.5rem 0 0; order: 1; - width: 100%; + inline-size: 100%; } &::-webkit-progress-bar { @@ -73,6 +73,7 @@ withDefaults(defineProps<{ // Colors @each $name, $pair in $colors { + // stylelint-disable-next-line function-no-unknown $color: nth($pair, 1); &.is-#{$name} { --progress-value-background-color: var(--#{$name}, #{$color}); @@ -90,7 +91,7 @@ withDefaults(defineProps<{ &:indeterminate { animation-duration: var(--progress-indeterminate-duration); animation-iteration-count: infinite; - animation-name: moveIndeterminate; + animation-name: move-indeterminate; animation-timing-function: linear; background-color: var(--progress-bar-background-color); background-image: linear-gradient( @@ -120,7 +121,7 @@ withDefaults(defineProps<{ } } -@keyframes moveIndeterminate { +@keyframes move-indeterminate { from { background-position: 200% 0; } diff --git a/frontend/src/components/misc/Ready.vue b/frontend/src/components/misc/Ready.vue index 252ce5ff7..7906bae66 100644 --- a/frontend/src/components/misc/Ready.vue +++ b/frontend/src/components/misc/Ready.vue @@ -73,12 +73,14 @@ const baseStore = useBaseStore() diff --git a/frontend/src/components/quick-actions/QuickActions.vue b/frontend/src/components/quick-actions/QuickActions.vue index ab135617f..8cec745c2 100644 --- a/frontend/src/components/quick-actions/QuickActions.vue +++ b/frontend/src/components/quick-actions/QuickActions.vue @@ -640,7 +640,7 @@ function reset() { .results { text-align: start; - width: 100%; + inline-size: 100%; color: var(--grey-800); } @@ -653,7 +653,7 @@ function reset() { .result-item-button { font-size: .9rem; - width: 100%; + inline-size: 100%; background: transparent; color: var(--grey-800); text-align: start; @@ -678,7 +678,7 @@ function reset() { .saved-filter-icon { font-size: .75rem; - width: .75rem; + inline-size: .75rem; margin-inline-end: .25rem; color: var(--grey-400) } diff --git a/frontend/src/components/tasks/AddTask.vue b/frontend/src/components/tasks/AddTask.vue index 93b6f13b4..0a293906f 100644 --- a/frontend/src/components/tasks/AddTask.vue +++ b/frontend/src/components/tasks/AddTask.vue @@ -297,7 +297,7 @@ defineExpose({ .control { flex-shrink: 0; - margin-bottom: 0; + margin-block-end: 0; } } @@ -330,7 +330,7 @@ defineExpose({ } .add-task-button { - height: 100% !important; + block-size: 100% !important; @media screen and (max-width: $tablet) { .button-text { diff --git a/frontend/src/components/tasks/GanttChart.vue b/frontend/src/components/tasks/GanttChart.vue index 5e418f273..535bf6c23 100644 --- a/frontend/src/components/tasks/GanttChart.vue +++ b/frontend/src/components/tasks/GanttChart.vue @@ -219,7 +219,7 @@ const dateIsToday = computed(() => (date: Date) => { diff --git a/frontend/src/components/tasks/partials/Attachments.vue b/frontend/src/components/tasks/partials/Attachments.vue index 28dc2679c..ebb38491d 100644 --- a/frontend/src/components/tasks/partials/Attachments.vue +++ b/frontend/src/components/tasks/partials/Attachments.vue @@ -289,13 +289,13 @@ async function setCoverImage(attachment: IAttachment | null) { diff --git a/frontend/src/components/tasks/partials/PriorityLabel.vue b/frontend/src/components/tasks/partials/PriorityLabel.vue index 314c07d47..e5a7c106f 100644 --- a/frontend/src/components/tasks/partials/PriorityLabel.vue +++ b/frontend/src/components/tasks/partials/PriorityLabel.vue @@ -53,7 +53,7 @@ const minimumPriority = computed(() => { diff --git a/frontend/src/components/tasks/partials/RelatedTasks.vue b/frontend/src/components/tasks/partials/RelatedTasks.vue index 0dd7774e9..efd7b58a5 100644 --- a/frontend/src/components/tasks/partials/RelatedTasks.vue +++ b/frontend/src/components/tasks/partials/RelatedTasks.vue @@ -401,7 +401,7 @@ async function toggleTaskDone(task: ITask) { .different-project { color: var(--grey-500); - width: auto; + inline-size: auto; } .title { @@ -461,7 +461,7 @@ async function toggleTaskDone(task: ITask) { // of the component. .task-done-checkbox { padding: 0; - height: 18px; // The exact height of the checkbox in the container + block-size: 18px; // The exact height of the checkbox in the container margin-inline-end: .75rem; } diff --git a/frontend/src/components/tasks/partials/ReminderDetail.vue b/frontend/src/components/tasks/partials/ReminderDetail.vue index c784e3984..ec3c9dcf9 100644 --- a/frontend/src/components/tasks/partials/ReminderDetail.vue +++ b/frontend/src/components/tasks/partials/ReminderDetail.vue @@ -265,11 +265,11 @@ function translateUnit(amount: number, unit: PeriodUnit): string { } .reminder-options-popup { - width: 310px; + inline-size: 310px; z-index: 99; @media screen and (max-width: ($tablet)) { - width: calc(100vw - 5rem); + inline-size: calc(100vw - 5rem); } .option-button { @@ -286,7 +286,7 @@ function translateUnit(amount: number, unit: PeriodUnit): string { .reminder__close-button { margin: .5rem; - width: calc(100% - 1rem); + inline-size: calc(100% - 1rem); } .currently-active { diff --git a/frontend/src/components/tasks/partials/ReminderPeriod.vue b/frontend/src/components/tasks/partials/ReminderPeriod.vue index 5da6780cb..59d411acb 100644 --- a/frontend/src/components/tasks/partials/ReminderPeriod.vue +++ b/frontend/src/components/tasks/partials/ReminderPeriod.vue @@ -137,8 +137,8 @@ function updateData() { padding: .5rem .5rem 0; .input, .select select { - width: 100% !important; - height: auto; + inline-size: 100% !important; + block-size: auto; } } diff --git a/frontend/src/components/tasks/partials/Reminders.vue b/frontend/src/components/tasks/partials/Reminders.vue index 10dca5399..93cdbf077 100644 --- a/frontend/src/components/tasks/partials/Reminders.vue +++ b/frontend/src/components/tasks/partials/Reminders.vue @@ -115,13 +115,13 @@ function removeReminderByIndex(index: number) { color: var(--danger); } - &::last-child { + &:last-child { margin-block-end: 0.75rem; } } .reminder-detail { - width: 100%; + inline-size: 100%; } .remove { diff --git a/frontend/src/components/tasks/partials/RepeatAfter.vue b/frontend/src/components/tasks/partials/RepeatAfter.vue index ec6065dea..3e2854f86 100644 --- a/frontend/src/components/tasks/partials/RepeatAfter.vue +++ b/frontend/src/components/tasks/partials/RepeatAfter.vue @@ -166,6 +166,6 @@ p { } .input { - min-width: 2rem; + min-inline-size: 2rem; } diff --git a/frontend/src/components/tasks/partials/SingleTaskInProject.vue b/frontend/src/components/tasks/partials/SingleTaskInProject.vue index 9eae5b6cf..11c2e6da7 100644 --- a/frontend/src/components/tasks/partials/SingleTaskInProject.vue +++ b/frontend/src/components/tasks/partials/SingleTaskInProject.vue @@ -438,7 +438,7 @@ defineExpose({ } .task-project { - width: auto; + inline-size: auto; color: var(--grey-400); font-size: .9rem; white-space: nowrap; @@ -448,8 +448,8 @@ defineExpose({ border-radius: 50%; vertical-align: bottom; margin-inline-start: 5px; - height: 27px; - width: 27px; + block-size: 27px; + inline-size: 27px; } .project-task-icon { @@ -473,7 +473,7 @@ defineExpose({ .favorite { opacity: 1; text-align: center; - width: 27px; + inline-size: 27px; transition: opacity $transition, color $transition; border-radius: $radius; @@ -502,7 +502,7 @@ defineExpose({ } :deep(.fancy-checkbox) { - height: 18px; + block-size: 18px; padding-block-start: 0; padding-inline-end: .5rem; @@ -518,7 +518,7 @@ defineExpose({ span.parent-tasks { color: var(--grey-500); - width: auto; + inline-size: auto; } .show-project .parent-tasks { @@ -534,16 +534,16 @@ defineExpose({ } .settings { - float: right; - width: 24px; + float: inline-end; + inline-size: 24px; cursor: pointer; } &.loader-container.is-loading:after { inset-block-start: calc(50% - 1rem); inset-inline-start: calc(50% - 1rem); - width: 2rem; - height: 2rem; + inline-size: 2rem; + block-size: 2rem; border-inline-start-color: var(--grey-300); border-block-end-color: var(--grey-300); } diff --git a/frontend/src/components/tasks/partials/SingleTaskInlineReadonly.vue b/frontend/src/components/tasks/partials/SingleTaskInlineReadonly.vue index 8c89393cf..9df5a4652 100644 --- a/frontend/src/components/tasks/partials/SingleTaskInlineReadonly.vue +++ b/frontend/src/components/tasks/partials/SingleTaskInlineReadonly.vue @@ -156,7 +156,7 @@ const project = computed(() => projectStore.projects[props.task.projectId]) } .task-project { - width: auto; + inline-size: auto; color: var(--grey-400); font-size: .9rem; white-space: nowrap; @@ -166,8 +166,8 @@ const project = computed(() => projectStore.projects[props.task.projectId]) border-radius: 50%; vertical-align: bottom; margin-inline-start: .5rem; - height: 21px; - width: 21px; + block-size: 21px; + inline-size: 21px; } .project-task-icon { @@ -195,7 +195,7 @@ const project = computed(() => projectStore.projects[props.task.projectId]) span.parent-tasks { color: var(--grey-500); - width: auto; + inline-size: auto; margin-inline-start: .25rem; } } diff --git a/frontend/src/views/migrate/Migration.vue b/frontend/src/views/migrate/Migration.vue index c63188624..da392e1a9 100644 --- a/frontend/src/views/migrate/Migration.vue +++ b/frontend/src/views/migrate/Migration.vue @@ -46,7 +46,7 @@ const availableMigrators = computed(() => configStore.availableMigrators .migration-service-link { display: inline-block; - width: 100px; + inline-size: 100px; text-transform: capitalize; margin-inline-end: 1rem; } diff --git a/frontend/src/views/migrate/MigrationHandler.vue b/frontend/src/views/migrate/MigrationHandler.vue index a6104e235..953407a40 100644 --- a/frontend/src/views/migrate/MigrationHandler.vue +++ b/frontend/src/views/migrate/MigrationHandler.vue @@ -238,7 +238,7 @@ async function migrate() { diff --git a/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue b/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue index de5a1fe8f..4244b0cad 100644 --- a/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue +++ b/frontend/src/views/project/settings/ProjectSettingsWebhooks.vue @@ -273,6 +273,6 @@ function validateSelectedEvents() { diff --git a/frontend/src/views/tasks/TaskDetailView.vue b/frontend/src/views/tasks/TaskDetailView.vue index d1984dfd8..e5c80dff3 100644 --- a/frontend/src/views/tasks/TaskDetailView.vue +++ b/frontend/src/views/tasks/TaskDetailView.vue @@ -984,7 +984,7 @@ function setRelatedTasksActive() { color: var(--text); background-color: var(--site-background) !important; - @media screen and (max-width: calc(#{$desktop} + 1px)) { + @media screen and (width <= calc(#{$desktop} + 1px)) { border-radius: 0; } } @@ -1028,7 +1028,7 @@ h3 .button { } :deep(.datepicker) { - width: 100%; + inline-size: 100%; .show { color: var(--text); @@ -1037,7 +1037,7 @@ h3 .button { border-radius: $radius; display: block; margin: .1rem 0; - width: 100%; + inline-size: 100%; text-align: start; &:hover { @@ -1076,7 +1076,7 @@ h3 .button { .assignees { :deep(.multiselect) { .input-wrapper { - &:not(:focus-within):not(:hover) { + &:not(:focus-within, :hover) { background: transparent; border-color: transparent; } @@ -1140,7 +1140,7 @@ h3 .button { } .button { - width: 100%; + inline-size: 100%; margin-block-end: .5rem; justify-content: left; @@ -1157,7 +1157,7 @@ h3 .button { } // this is the moment when the fixed close button is outside the modal // => we can fill up the space again - @media screen and (min-width: calc(#{$desktop} + 84px)) { + @media screen and (width >= calc(#{$desktop} + 84px)) { inset-block-start: 0; } } @@ -1168,7 +1168,7 @@ h3 .button { .detail-content { @media print { - width: 100% !important; + inline-size: 100% !important; } } diff --git a/frontend/src/views/user/Settings.vue b/frontend/src/views/user/Settings.vue index efc6674f3..7f6870aaf 100644 --- a/frontend/src/views/user/Settings.vue +++ b/frontend/src/views/user/Settings.vue @@ -131,11 +131,11 @@ const extraSettingsLinks = computed(() => authStore.settings.extraSettingsLinks) } .navigation { - width: 25%; + inline-size: 25%; padding-inline-end: 1rem; @media screen and (max-width: $tablet) { - width: 100%; + inline-size: 100%; padding-inline-start: 0; } } @@ -144,7 +144,7 @@ const extraSettingsLinks = computed(() => authStore.settings.extraSettingsLinks) display: block; padding: .5rem; color: var(--text); - width: 100%; + inline-size: 100%; border-inline-start: 3px solid transparent; &:hover, @@ -155,10 +155,10 @@ const extraSettingsLinks = computed(() => authStore.settings.extraSettingsLinks) } .view { - width: 75%; + inline-size: 75%; @media screen and (max-width: $tablet) { - width: 100%; + inline-size: 100%; padding-inline-start: 0; padding-block-start: 1rem; } diff --git a/frontend/src/views/user/settings/Avatar.vue b/frontend/src/views/user/settings/Avatar.vue index 27aff4927..ce446daf3 100644 --- a/frontend/src/views/user/settings/Avatar.vue +++ b/frontend/src/views/user/settings/Avatar.vue @@ -171,7 +171,7 @@ function cropAvatar() {