🐛 Fix measures inputs' alignment

This commit is contained in:
Belén Albeza 2025-05-21 16:26:52 +02:00
parent a2ac2bc6c6
commit 2ad2af2aea
6 changed files with 56 additions and 65 deletions

View file

@ -1,6 +1,7 @@
(ns app.main.ui.workspace.sidebar.options.menus.border-radius (ns app.main.ui.workspace.sidebar.options.menus.border-radius
(:require-macros [app.main.style :as stl]) (:require-macros [app.main.style :as stl])
(:require (:require
[app.common.data.macros :as dm]
[app.common.types.shape.radius :as ctsr] [app.common.types.shape.radius :as ctsr]
[app.main.data.workspace.shapes :as dwsh] [app.main.data.workspace.shapes :as dwsh]
[app.main.store :as st] [app.main.store :as st]
@ -17,10 +18,10 @@
[shape] [shape]
(= (:r1 shape) (:r2 shape) (:r3 shape) (:r4 shape))) (= (:r1 shape) (:r2 shape) (:r3 shape) (:r4 shape)))
(mf/defc border-radius-menu (mf/defc border-radius-menu*
{::mf/wrap-props false {::mf/props :obj
::mf/wrap [mf/memo]} ::mf/wrap [mf/memo]}
[{:keys [ids ids-with-children values]}] [{:keys [class ids ids-with-children values]}]
(let [all-equal? (all-equal? values) (let [all-equal? (all-equal? values)
radius-expanded* (mf/use-state false) radius-expanded* (mf/use-state false)
radius-expanded (deref radius-expanded*) radius-expanded (deref radius-expanded*)
@ -75,7 +76,7 @@
(mf/with-effect [ids] (mf/with-effect [ids]
(reset! radius-expanded* false)) (reset! radius-expanded* false))
[:div {:class (stl/css :radius)} [:div {:class (dm/str class " " (stl/css :radius))}
(if (not radius-expanded) (if (not radius-expanded)
[:div {:class (stl/css :radius-1) [:div {:class (stl/css :radius-1)
:title (tr "workspace.options.radius")} :title (tr "workspace.options.radius")}

View file

@ -7,30 +7,25 @@
@import "refactor/common-refactor.scss"; @import "refactor/common-refactor.scss";
.radius { .radius {
display: flex; display: grid;
align-items: flex-start; grid-template-columns: subgrid;
justify-content: flex-start; gap: var(--sp-xs);
gap: $s-4;
} }
.radius-1 { .radius-1 {
@extend .input-element; @extend .input-element;
@include bodySmallTypography; @include bodySmallTypography;
width: $s-108;
position: relative;
} }
.radius-4 { .radius-4 {
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
gap: $s-4; gap: var(--sp-xs);
} }
.small-input { .small-input {
@extend .input-element; @extend .input-element;
@include bodySmallTypography; @include bodySmallTypography;
width: $s-52;
margin-block-end: 0;
} }
.selected { .selected {

View file

@ -26,7 +26,7 @@
[app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]]
[app.main.ui.hooks :as hooks] [app.main.ui.hooks :as hooks]
[app.main.ui.icons :as i] [app.main.ui.icons :as i]
[app.main.ui.workspace.sidebar.options.menus.border-radius :refer [border-radius-menu]] [app.main.ui.workspace.sidebar.options.menus.border-radius :refer [border-radius-menu*]]
[app.util.dom :as dom] [app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]] [app.util.i18n :as i18n :refer [tr]]
[clojure.set :as set] [clojure.set :as set]
@ -68,8 +68,6 @@
(def ^:private clip-content-icon (i/icon-xref :clip-content (stl/css :checkbox-button))) (def ^:private clip-content-icon (i/icon-xref :clip-content (stl/css :checkbox-button)))
(def ^:private play-icon (i/icon-xref :play (stl/css :checkbox-button))) (def ^:private play-icon (i/icon-xref :play (stl/css :checkbox-button)))
(def ^:private locked-icon (i/icon-xref :detach (stl/css :lock-ratio-icon)))
(def ^:private unlocked-icon (i/icon-xref :detached (stl/css :lock-ratio-icon)))
(defn select-measure-keys (defn select-measure-keys
"Consider some shapes can be drawn from bottom to top or from left to right" "Consider some shapes can be drawn from bottom to top or from left to right"
@ -365,14 +363,13 @@
:disabled disabled-height-sizing? :disabled disabled-height-sizing?
:class (stl/css :numeric-input) :class (stl/css :numeric-input)
:value (:height values)}]] :value (:height values)}]]
[:button {:class (stl/css-case
:lock-size-btn true [:> icon-button* {:variant "ghost"
:selected (true? proportion-lock) :icon (if proportion-lock "lock" "unlock")
:disabled (= proportion-lock :multiple)) :class (stl/css-case :selected (true? proportion-lock))
:on-click on-proportion-lock-change} :disabled (= proportion-lock :multiple)
(if proportion-lock :aria-label (if proportion-lock (tr "workspace.options.size.unlock") (tr "workspace.options.size.lock"))
locked-icon :on-click on-proportion-lock-change}]])
unlocked-icon)]])
(when (options :position) (when (options :position)
[:div {:class (stl/css :position)} [:div {:class (stl/css :position)}
[:div {:class (stl/css-case :x-position true [:div {:class (stl/css-case :x-position true
@ -412,7 +409,7 @@
:class (stl/css :numeric-input) :class (stl/css :numeric-input)
:value (:rotation values)}]]) :value (:rotation values)}]])
(when (options :radius) (when (options :radius)
[:& border-radius-menu {:ids ids :ids-with-children ids-with-children :values values :shape shape}])]) [:> border-radius-menu* {:class (stl/css :border-radius) :ids ids :ids-with-children ids-with-children :values values :shape shape}])])
(when (or (options :clip-content) (options :show-in-viewer)) (when (or (options :clip-content) (options :show-in-viewer))
[:div {:class (stl/css :clip-show)} [:div {:class (stl/css :clip-show)}
(when (options :clip-content) (when (options :clip-content)

View file

@ -7,8 +7,14 @@
@import "refactor/common-refactor.scss"; @import "refactor/common-refactor.scss";
.element-set { .element-set {
@include flexColumn; display: grid;
margin-bottom: $s-8; row-gap: var(--sp-xs);
margin-bottom: var(--sp-s);
// NOTE: this does not follow the 8-column grid and the size is not normalized,
// so we need to hardcode this width :(
--input-width: calc(var(--sp-xxxl) * 3.5);
grid-template-columns: var(--input-width) var(--input-width) var(--sp-xxxl);
column-gap: var(--sp-xs);
} }
.presets { .presets {
@ -108,16 +114,21 @@
} }
} }
.size { .size,
@include flexRow; .position,
position: relative; .rotation-radius {
display: grid;
grid-template-columns: subgrid;
grid-column: 1/-1;
} }
.height, .height,
.width { .width,
.x-position,
.y-position,
.rotation {
@extend .input-element; @extend .input-element;
@include bodySmallTypography; @include bodySmallTypography;
width: $s-108;
.icon-text { .icon-text {
padding-top: $s-1; padding-top: $s-1;
} }
@ -126,6 +137,10 @@
} }
} }
.border-radius {
grid-column: 2/-1;
}
.lock-size-btn { .lock-size-btn {
@extend .button-tertiary; @extend .button-tertiary;
border-radius: $br-8; border-radius: $br-8;
@ -141,39 +156,6 @@
stroke: var(--icon-foreground); stroke: var(--icon-foreground);
} }
.position {
@include flexRow;
}
.x-position,
.y-position {
@extend .input-element;
@include bodySmallTypography;
width: $s-108;
.icon-text {
padding-top: $s-1;
}
&.disabled {
@extend .disabled-input;
}
}
.rotation-radius {
display: flex;
align-items: flex-start;
justify-content: flex-start;
gap: $s-4;
}
.rotation {
@extend .input-element;
@include bodySmallTypography;
width: $s-108;
.icon-text {
padding-top: $s-1;
}
}
.clip-show { .clip-show {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;

View file

@ -6066,6 +6066,14 @@ msgstr "Collapse independent radius"
msgid "workspace.options.radius.show-single-corners" msgid "workspace.options.radius.show-single-corners"
msgstr "Show independent radius" msgstr "Show independent radius"
#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:371
msgid "workspace.options.size.lock"
msgstr "Lock ratio"
#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:371
msgid "workspace.options.size.unlock"
msgstr "Unlock ratio"
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:190 #: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:190
msgid "workspace.options.recent-fonts" msgid "workspace.options.recent-fonts"
msgstr "Recent" msgstr "Recent"

View file

@ -6093,6 +6093,14 @@ msgstr "Colapsar radios individuales"
msgid "workspace.options.radius.show-single-corners" msgid "workspace.options.radius.show-single-corners"
msgstr "Mostrar radios individuales" msgstr "Mostrar radios individuales"
#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:371
msgid "workspace.options.size.lock"
msgstr "Bloquear proporción"
#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:371
msgid "workspace.options.size.unlock"
msgstr "Desbloquear proporción"
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:190 #: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:190
msgid "workspace.options.recent-fonts" msgid "workspace.options.recent-fonts"
msgstr "Recientes" msgstr "Recientes"