diff --git a/app/assets/stylesheets/buttons.css b/app/assets/stylesheets/buttons.css index df48c288b..7e64c1c04 100644 --- a/app/assets/stylesheets/buttons.css +++ b/app/assets/stylesheets/buttons.css @@ -14,7 +14,7 @@ cursor: pointer; display: inline-flex; font-size: 1em; - font-weight: 600; + font-weight: var(--btn-font-weight, 600); gap: var(--btn-gap, 0.5em); justify-content: center; padding: var(--btn-padding, 0.5em 1.1em); diff --git a/app/assets/stylesheets/dialog.css b/app/assets/stylesheets/dialog.css new file mode 100644 index 000000000..53026af9b --- /dev/null +++ b/app/assets/stylesheets/dialog.css @@ -0,0 +1,45 @@ +:is(.dialog) { + --backdrop-speed: 150ms; + --panel-size: max-content; + --speed: 150ms; + + border: 0; + opacity: 0; + transform: scale(0.2); + transform-origin: top center; + transition: + display var(--speed) allow-discrete, + opacity var(--speed), + overlay var(--speed) allow-discrete, + transform var(--speed); + + &::backdrop { + background-color: var(--color-always-black); + opacity: 0; + transform: scale(1); + transition: + display var(--backdrop-speed) allow-discrete, + opacity var(--backdrop-speed), + overlay var(--backdrop-speed) allow-discrete; + } + + &[open] { + opacity: 1; + transform: scale(1); + + &::backdrop { + opacity: 0.5; + } + } + + @starting-style { + &[open] { + opacity: 0; + transform: scale(0.2); + } + + &[open]::backdrop { + opacity: 0; + } + } +} diff --git a/app/assets/stylesheets/filters.css b/app/assets/stylesheets/filters.css index f89c34039..745989b44 100644 --- a/app/assets/stylesheets/filters.css +++ b/app/assets/stylesheets/filters.css @@ -6,42 +6,84 @@ } .filter__button { - border-radius: 0.5em; - color: var(--color-ink); - display: block; - overflow: hidden; - padding: 0.3em 0.7em; - text-decoration: none; - text-overflow: ellipsis; - white-space: nowrap; + --btn-border-size: 0; + --btn-font-weight: 400; + --btn-icon-size: 0.7em; + --btn-padding: 0.3em 0.7em; - input:checked + & { - background-color: var(--color-selected); + inline-size: 100%; + justify-content: space-between; + + span { + overflow: hidden; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; } - @media (hover: hover) { - &:hover { - background-color: var(--color-selected); - } + img { + display: none; } + + &:has(input[type=checkbox]:checked) img { + display: block; + } +} + +.filter__columns { + display: grid; + grid-template-columns: repeat(5, 1fr); } .filter__label { + display: flex; + inline-size: 100%; padding: 0.3em 0.7em; + + strong { + overflow: hidden; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + } } -.filter__popup { - --panel-border-radius: 0.5em; - --panel-padding: 0.5em; - --panel-size: 30ch; +.filter__menu { + display: flex; + flex-direction: column; + inline-size: 100%; + list-style: none; + margin: 0; + min-inline-size: 0; + padding: 0 var(--inline-space); + position: relative; + row-gap: 0.2em; + + &::before { + block-size: 100%; + border-block: 0; + border-inline-end: 0; + border-inline-start: 1px solid var(--color-subtle); + content: ""; + display: inline-flex; + inline-size: 0; + position: absolute; + inset: 0 auto 0 0; + } + + &:first-child::before { + display: none; + } + + li { + text-align: start; + } +} + +.panel:is(.filter__popup) { + --panel-size: 100ch; + --panel-padding: var(--block-space); inline-size: auto !important; - inset: 0 auto auto 0; - margin-block-start: 1lh; - margin-inline-start: calc((var(--panel-padding) + 0.7em) * -1); - min-inline-size: 12ch; max-inline-size: var(--panel-size) !important; - position: absolute; - transform-origin: top left; - z-index: 1; } diff --git a/app/assets/stylesheets/workflows.css b/app/assets/stylesheets/workflows.css index 9d1832101..f13e1c460 100644 --- a/app/assets/stylesheets/workflows.css +++ b/app/assets/stylesheets/workflows.css @@ -20,3 +20,19 @@ } } } + +.workflow__popup { + --panel-border-radius: 0.5em; + --panel-padding: 0.5em; + --panel-size: 100%; + + inline-size: auto !important; + inset: 0 auto auto 0; + margin-block-start: 1lh; + margin-inline-start: calc((var(--panel-padding) + 0.7em) * -1); + min-inline-size: 12ch; + max-inline-size: var(--panel-size) !important; + position: absolute; + transform-origin: top left; + z-index: 1; +} diff --git a/app/helpers/workflows_helper.rb b/app/helpers/workflows_helper.rb index c7648f049..ef88e828b 100644 --- a/app/helpers/workflows_helper.rb +++ b/app/helpers/workflows_helper.rb @@ -1,6 +1,6 @@ module WorkflowsHelper def link_to_stage_picker(bubble, workflow) - link_to workflow.name, new_bucket_bubble_stage_picker_path(bubble.bucket, bubble, workflow_id: workflow) + link_to workflow.name, new_bucket_bubble_stage_picker_path(bubble.bucket, bubble, workflow_id: workflow), class: "filter__button" end def button_to_set_stage(bubble, stage) diff --git a/app/views/bubbles/_filters.html.erb b/app/views/bubbles/_filters.html.erb index 285f3a16a..e03c698bf 100644 --- a/app/views/bubbles/_filters.html.erb +++ b/app/views/bubbles/_filters.html.erb @@ -1,4 +1,5 @@ -