@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></svg>
|
||||
|
After Width: | Height: | Size: 193 B |
@@ -84,6 +84,10 @@
|
||||
.card {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:not(.cards--considering) {
|
||||
margin-block-start: var(--column-width-collapsed);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.is-collapsed) {
|
||||
@@ -107,6 +111,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.cards__new-column {
|
||||
margin-block-start: var(--column-width-collapsed);
|
||||
}
|
||||
|
||||
/* Used when filtering */
|
||||
.cards--grid {
|
||||
--cards-gap: 1rem;
|
||||
@@ -191,15 +199,46 @@
|
||||
inline-size: 100%;
|
||||
margin-block-end: calc(-0.5 * var(--cards-gap));
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:has(~ .cards__expander-menu:hover) {
|
||||
background-color: var(--column-color);
|
||||
filter: none;
|
||||
.cards:is(.cards--considering) &:hover {
|
||||
cursor: unset;
|
||||
filter: none;
|
||||
}
|
||||
|
||||
@media (any-hover: hover) {
|
||||
.btn--circle,
|
||||
~ .btn--circle,
|
||||
~ .cards__expander-menu .btn--circle {
|
||||
transition: opacity 300ms ease-in-out;
|
||||
opacity: 0;
|
||||
|
||||
.cards:hover & {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn.cards__expander-button {
|
||||
--btn-background: transparent;
|
||||
|
||||
block-size: var(--column-width-collapsed);
|
||||
inline-size: var(--column-width-collapsed);
|
||||
inset: 0 0 auto auto;
|
||||
position: absolute;
|
||||
translate: calc(var(--column-gap) * -2);
|
||||
z-index: var(--z-popup);
|
||||
|
||||
.cards--considering & {
|
||||
translate: none;
|
||||
}
|
||||
|
||||
.cards.is-collapsed & {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.cards__expander-count {
|
||||
line-height: var(--column-width-collapsed);
|
||||
inline-size: var(--column-width-collapsed);
|
||||
@@ -226,9 +265,9 @@
|
||||
}
|
||||
|
||||
.cards__expander-menu {
|
||||
inset: 0 0 auto auto;
|
||||
inset: 0 auto auto 0;
|
||||
position: absolute;
|
||||
translate: calc(var(--column-gap) * -2);
|
||||
translate: calc(var(--column-gap) * 2);
|
||||
z-index: var(--z-popup);
|
||||
|
||||
.btn--circle {
|
||||
@@ -249,14 +288,25 @@
|
||||
|
||||
.blank-slate--card {
|
||||
box-shadow: none !important;
|
||||
border: 2px dashed color-mix(in srgb, var(--card-color) 40%, var(--color-canvas));;
|
||||
font-weight: 600;
|
||||
rotate: 2deg;
|
||||
color: color-mix(in srgb, var(--card-color) 70%, var(--color-canvas));
|
||||
|
||||
p {
|
||||
font-size: var(--text-small);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
&.blank-slate-for-grid {
|
||||
display: none;
|
||||
|
||||
.cards--grid & {
|
||||
display: initial;
|
||||
}
|
||||
}
|
||||
|
||||
.cards--grid &:not(.blank-slate-for-grid) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,23 +433,32 @@
|
||||
|
||||
.cards--considering {
|
||||
--gradient-opacity: 25%;
|
||||
--bottom-gradient-size: 4em;
|
||||
|
||||
background-color: var(--color-canvas);
|
||||
background-image: linear-gradient(90deg,
|
||||
transparent 0%,
|
||||
color-mix(in srgb, var(--color-considering) var(--gradient-opacity), transparent) 33%,
|
||||
color-mix(in srgb, var(--color-considering) var(--gradient-opacity), transparent) 66%,
|
||||
transparent 100%);
|
||||
padding-bottom: var(--bottom-gradient-size);
|
||||
position: relative;
|
||||
|
||||
@supports(mask: radial-gradient(black)) {
|
||||
@supports(mask: linear-gradient(black)) {
|
||||
&:before {
|
||||
background-image: linear-gradient(90deg,
|
||||
transparent 0%,
|
||||
color-mix(in srgb, var(--color-considering) var(--gradient-opacity), transparent) 33%,
|
||||
color-mix(in srgb, var(--color-considering) var(--gradient-opacity), transparent) 66%,
|
||||
transparent 100%);
|
||||
content: "";
|
||||
inset: calc(var(--column-width-collapsed) + var(--block-space-half)) 0 0 0;
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
background: linear-gradient(90deg,
|
||||
color-mix(in oklch, var(--color-considering) 0%, transparent) 0%,
|
||||
color-mix(in oklch, var(--color-considering) 20%, transparent) 25%,
|
||||
color-mix(in oklch, var(--color-considering) 20%, transparent) 50%,
|
||||
color-mix(in oklch, var(--color-considering) 0%, transparent) 100%);
|
||||
content: "";
|
||||
inset: 0;
|
||||
inset: calc(var(--column-width-collapsed) + var(--block-space-half)) 0 0 0;
|
||||
mask: var(--wavy-background-mask);
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
@@ -416,7 +475,7 @@
|
||||
|
||||
.cards__decoration {
|
||||
--gradient-opacity: 30%;
|
||||
--size: 4.25em;
|
||||
--size: 2.2em;
|
||||
|
||||
background-color: var(--color-canvas);
|
||||
background-image: radial-gradient(ellipse at bottom,
|
||||
@@ -424,7 +483,7 @@
|
||||
transparent 70%);
|
||||
block-size: var(--size);
|
||||
inline-size: 100%;
|
||||
inset: calc(var(--size) * -1) 0 auto 0;
|
||||
inset: calc(var(--column-width-collapsed) + var(--block-space) - var(--size)) 0 auto 0;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
|
||||
@@ -433,23 +492,31 @@
|
||||
}
|
||||
|
||||
@supports(mask: radial-gradient(black)) {
|
||||
--gradient-opacity: 30%;
|
||||
|
||||
&:before {
|
||||
background: radial-gradient(ellipse at bottom,
|
||||
color-mix(in srgb, var(--color-considering) var(--gradient-opacity), transparent) 0%,
|
||||
transparent 70%);
|
||||
content: "";
|
||||
inset: 0;
|
||||
mask: radial-gradient(6px at 50% calc(100% + 3px), transparent calc(99% - 2px), black calc(101% - 2px) 99%, transparent 101%) calc(50% - 8px) calc(50% - 3px + .5px)/16px 6px,
|
||||
mask: radial-gradient(6px at 50% calc(100% + 3px),
|
||||
transparent calc(99% - 2px),
|
||||
black calc(101% - 2px) 99%, transparent 101%) calc(50% - 8px) calc(50% - 3px + .5px)/16px 6px,
|
||||
radial-gradient(6px at 50% -3px, transparent calc(99% - 2px), black calc(101% - 2px) 99%, transparent 101%) 50% calc(50% + 3px)/16px 6px;
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.cards__decoration--end {
|
||||
inset: auto 0 calc(var(--size) * -1);
|
||||
rotate: 180deg;
|
||||
}
|
||||
.cards__decoration-end {
|
||||
background: linear-gradient( transparent 0%, var(--color-canvas) 90%);
|
||||
block-size: var(--bottom-gradient-size);
|
||||
content: "";
|
||||
inset: auto 0 0;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.card {
|
||||
@@ -458,6 +525,7 @@
|
||||
|
||||
background-color: var(--color-canvas);
|
||||
line-height: 1.2;
|
||||
z-index: 2;
|
||||
|
||||
@media (min-width: 640px) {
|
||||
--text-xx-large: 1.6em;
|
||||
@@ -532,18 +600,12 @@
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
.cards--on-deck {
|
||||
--column-color: var(--color-ink-lighter);
|
||||
--card-color: var(--color-ink-light) !important;
|
||||
|
||||
.card {
|
||||
--card-color: var(--color-card-complete) !important;
|
||||
}
|
||||
|
||||
&.cards.is-collapsed {
|
||||
.cards__expander:after {
|
||||
background: var(--column-color);
|
||||
}
|
||||
}
|
||||
|
||||
.bubble {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -572,11 +634,4 @@
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Closed
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
.cards--closed {
|
||||
--column-color: var(--color-ink-lighter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,8 +323,14 @@
|
||||
}
|
||||
|
||||
.card:has(.card__closed),
|
||||
.card-perma:has(.card__closed) {
|
||||
.card:is(.card--postponed),
|
||||
.card-perma:has(.card__closed),
|
||||
.card-perma:has(.card--postponed) {
|
||||
--card-color: var(--color-card-complete) !important;
|
||||
|
||||
.bubble {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.card__closed-title {
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
.icon--crown { --svg: url("crown.svg "); }
|
||||
.icon--email { --svg: url("email.svg "); }
|
||||
.icon--everyone { --svg: url("everyone.svg "); }
|
||||
.icon--expand { --svg: url("expand.svg "); }
|
||||
.icon--gear { --svg: url("gear.svg "); }
|
||||
.icon--filter { --svg: url("filter.svg "); }
|
||||
.icon--globe { --svg: url("globe.svg "); }
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
class Account::SettingsController < ApplicationController
|
||||
include FilterScoped
|
||||
|
||||
def show
|
||||
@account = Account.sole
|
||||
@users = User.active.alphabetically
|
||||
|
||||
@@ -6,8 +6,6 @@ class CardsController < ApplicationController
|
||||
before_action :set_collection, only: %i[ create ]
|
||||
before_action :set_card, only: %i[ show edit update destroy ]
|
||||
|
||||
enable_collection_filtering only: :index
|
||||
|
||||
PAGE_SIZE = 25
|
||||
|
||||
def index
|
||||
|
||||
@@ -6,12 +6,6 @@ module FilterScoped
|
||||
before_action :set_user_filtering
|
||||
end
|
||||
|
||||
class_methods do
|
||||
def enable_collection_filtering(**options)
|
||||
before_action :enable_collection_filtering, **options
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def set_filter
|
||||
if params[:filter_id].present?
|
||||
@@ -32,24 +26,4 @@ module FilterScoped
|
||||
def expanded_param
|
||||
ActiveRecord::Type::Boolean.new.cast(params[:expand_all])
|
||||
end
|
||||
|
||||
def enable_collection_filtering
|
||||
# We pass a block so that we don't have to pass around the script_name and host
|
||||
# to the model to make +url_for+ invocable
|
||||
@user_filtering.enable_collection_filtering do |**options|
|
||||
url_for(options)
|
||||
end
|
||||
end
|
||||
|
||||
def enable_referral_collection_filtering
|
||||
@user_filtering.enable_collection_filtering do |**options|
|
||||
if request.referer.present?
|
||||
uri = URI.parse(request.referer)
|
||||
uri.query = Rack::Utils.build_query(options)
|
||||
uri.to_s
|
||||
else
|
||||
url_for(options)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
class EventsController < ApplicationController
|
||||
include DayTimelinesScoped
|
||||
|
||||
enable_collection_filtering only: :index
|
||||
|
||||
def index
|
||||
fresh_when @day_timeline
|
||||
end
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
class My::MenusController < ApplicationController
|
||||
include FilterScoped
|
||||
|
||||
before_action :enable_referral_collection_filtering, if: :collection_filtering_enabled?
|
||||
|
||||
def show
|
||||
fresh_when @user_filtering
|
||||
end
|
||||
|
||||
private
|
||||
def collection_filtering_enabled?
|
||||
params[:enable_collection_filtering].present?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class Notifications::SettingsController < ApplicationController
|
||||
include FilterScoped
|
||||
before_action :set_settings
|
||||
|
||||
def show
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
class NotificationsController < ApplicationController
|
||||
include FilterScoped
|
||||
|
||||
def index
|
||||
@unread = Current.user.notifications.unread.ordered unless current_page_param
|
||||
set_page_and_extract_portion_from Current.user.notifications.read.ordered
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
class WebhooksController < ApplicationController
|
||||
include FilterScoped
|
||||
|
||||
before_action :ensure_can_administer
|
||||
before_action :set_collection
|
||||
before_action :set_webhook, except: %i[ index new create ]
|
||||
|
||||
@@ -71,28 +71,12 @@ class User::Filtering
|
||||
filter.collections.any?
|
||||
end
|
||||
|
||||
def enable_collection_filtering(&block)
|
||||
@collection_filtering_route_resolver = block
|
||||
end
|
||||
|
||||
def self_filter_path(...)
|
||||
if supports_collection_filtering?
|
||||
@collection_filtering_route_resolver.call(...)
|
||||
else
|
||||
cards_path(...)
|
||||
end
|
||||
end
|
||||
|
||||
def single_collection_or_first
|
||||
# Default to the first selected or, when no selection, to the first one
|
||||
filter.collections.first || collections.first
|
||||
end
|
||||
|
||||
def cache_key
|
||||
ActiveSupport::Cache.expand_cache_key([ user, filter, expanded?, collections, tags, users, filters, supports_collection_filtering? ], "user-filtering")
|
||||
end
|
||||
|
||||
def supports_collection_filtering?
|
||||
@collection_filtering_route_resolver.present?
|
||||
ActiveSupport::Cache.expand_cache_key([ user, filter, expanded?, collections, tags, users, filters ], "user-filtering")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Account Settings" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<h1 class="header__title"><%= @page_title %></h1>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<% end %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
<span class="overflow-ellipsis"><%= @user_filtering.selected_collections_label %></span>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<% end %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<%= link_to collection_url(@card.collection), class: "header__title btn borderless txt-large",
|
||||
style: "--btn-padding: 0.25ch 1ch 0.25ch 0.75ch; view-transistion-name: card-collection-title;",
|
||||
|
||||
@@ -1,11 +1,33 @@
|
||||
<%= turbo_frame_tag :closed_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :closed_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% @page_title = "Column: Closed" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
←
|
||||
<strong><%= @collection.name %></strong>
|
||||
</span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center txt-normal">Drag cards here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
<span class="overflow-ellipsis"><%= @page_title %></span>
|
||||
</h1>
|
||||
<% end %>
|
||||
|
||||
<section class="cards cards--grid">
|
||||
<%= turbo_frame_tag :closed_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :closed_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center">Drag cards here</p>
|
||||
<p class="txt-align-center blank-slate-for-grid">Nothing here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</section>
|
||||
|
||||
@@ -1,11 +1,33 @@
|
||||
<%= turbo_frame_tag :not_now_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :not_now_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% @page_title = "Column: Now now" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
←
|
||||
<strong><%= @collection.name %></strong>
|
||||
</span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center txt-normal">Drag cards here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
<span class="overflow-ellipsis"><%= @page_title %></span>
|
||||
</h1>
|
||||
<% end %>
|
||||
|
||||
<section class="cards cards--grid">
|
||||
<%= turbo_frame_tag :not_now_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :not_now_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center">Drag cards here</p>
|
||||
<p class="txt-align-center blank-slate-for-grid">Nothing here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</section>
|
||||
|
||||
@@ -1,11 +1,33 @@
|
||||
<%= turbo_frame_tag dom_id(@column, :cards) do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination dom_id(@column, :cards), @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% @page_title = "Column: #{ @column.name }" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @column.collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
←
|
||||
<strong><%= @column.collection.name %></strong>
|
||||
</span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center txt-normal">Drag cards here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
<span class="overflow-ellipsis"><%= @page_title %></span>
|
||||
</h1>
|
||||
<% end %>
|
||||
|
||||
<section class="cards cards--grid">
|
||||
<%= turbo_frame_tag dom_id(@column, :cards) do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination dom_id(@column, :cards), @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center">Drag cards here</p>
|
||||
<p class="txt-align-center blank-slate-for-grid">Nothing here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</section>
|
||||
|
||||
@@ -1,11 +1,32 @@
|
||||
<%= turbo_frame_tag :stream_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :stream_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% @page_title = "Column: The Stream" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
←
|
||||
<strong><%= @collection.name %></strong>
|
||||
</span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center txt-normal">Drag cards here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
<span class="overflow-ellipsis"><%= @page_title %></span>
|
||||
</h1>
|
||||
<% end %>
|
||||
|
||||
<section class="cards cards--grid">
|
||||
<%= turbo_frame_tag :stream_column do %>
|
||||
<% if @page.used? %>
|
||||
<%= with_manual_pagination :stream_column, @page do %>
|
||||
<%= render "collections/columns/list", cards: @page.records, draggable: true %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="card blank-slate blank-slate--card">
|
||||
<p class="txt-align-center blank-slate-for-grid">Nothing here</p>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</section>
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Collection Settings" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @collection, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Create a new collection" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<% end %>
|
||||
|
||||
<div class="panel shadow center" style="--panel-size: 55ch; view-transition-name: new-collection">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<% end %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= render "cards/webhooks", collection: @collection if Current.user.admin? %>
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
data-drag-and-drop-url="<%= columns_card_drops_closure_path("__id__") %>"
|
||||
>
|
||||
|
||||
<%= render "collections/show/expander", title: "Done", count: collection.cards.closed.count, column_id: "closed-cards" %>
|
||||
<%= render "collections/show/expander", title: "Done", count: collection.cards.closed.count, column_id: "closed-cards" do %>
|
||||
<%= render "collections/show/menu/expand", column_path: collection_columns_closed_path(collection) %>
|
||||
<% end %>
|
||||
|
||||
<%= column_frame_tag :closed_column, src: collection_columns_closed_path(collection) %>
|
||||
</section>
|
||||
|
||||
@@ -11,5 +11,10 @@
|
||||
<%= render "collections/show/menu/column", column: column %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to collection_column_path(column.collection, column), class: "btn btn--circle txt-x-small borderless cards__expander-button", data: { turbo_frame: "_top" } do %>
|
||||
<%= icon_tag "expand", class: "translucent" %>
|
||||
<span class="for-screen-reader">Expand column</span>
|
||||
<% end %>
|
||||
|
||||
<%= column_frame_tag dom_id(column, :cards), src: collection_column_path(column.collection, column) %>
|
||||
</section>
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
data-drag-and-drop-url="<%= columns_card_drops_not_now_path("__id__") %>"
|
||||
>
|
||||
|
||||
<%= render "collections/show/expander", title: "Not Now", count: collection.cards.postponed.count, column_id: "not-now" %>
|
||||
<%= render "collections/show/expander", title: "Not Now", count: collection.cards.postponed.count, column_id: "not-now" do %>
|
||||
<%= render "collections/show/menu/expand", column_path: collection_columns_not_now_path(collection) %>
|
||||
<% end %>
|
||||
|
||||
<%= column_frame_tag :not_now_column, src: collection_columns_not_now_path(collection) %>
|
||||
</section>
|
||||
|
||||
@@ -5,6 +5,13 @@
|
||||
data-drag-and-drop-url="<%= columns_card_drops_stream_path("__id__") %>">
|
||||
<div class="cards__decoration"></div>
|
||||
|
||||
<header class="cards__expander">
|
||||
<h2 class="cards__expander-title">The Stream</h2>
|
||||
<%= link_to collection_columns_stream_path(collection), class: "btn btn--circle txt-x-small borderless cards__expander-button", data: { turbo_frame: "_top" } do %>
|
||||
<%= icon_tag "expand", class: "translucent" %>
|
||||
<span class="for-screen-reader">Expand column</span>
|
||||
<% end %>
|
||||
</header>
|
||||
<%= render "columns/show/add_card_button", collection: collection %>
|
||||
|
||||
<% if page.used? %>
|
||||
@@ -13,6 +20,7 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<div class="cards__decoration cards__decoration--end"></div>
|
||||
<div class="cards__decoration-end"></div>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -6,14 +6,20 @@
|
||||
<dialog class="popup panel flex-column gap fill-white shadow txt-small margin-block-double" data-dialog-target="dialog">
|
||||
<ul class="popup__list">
|
||||
<li class="popup__item">
|
||||
<button class="popup__btn btn" data-action="click->clicker#click">Rename column</button>
|
||||
<button class="popup__btn btn" data-action="click->clicker#click">
|
||||
<%= icon_tag "rename" %>
|
||||
<span>Rename column</span>
|
||||
</button>
|
||||
</li>
|
||||
<li class="popup__item">
|
||||
<%= button_to "Delete column", collection_column_path(column.collection, column),
|
||||
<%= button_to collection_column_path(column.collection, column),
|
||||
method: :delete,
|
||||
class: "popup__btn btn",
|
||||
class: "popup__btn btn txt-negative",
|
||||
form_class: "display-contents",
|
||||
form: { data: { turbo_confirm: "Are you sure you want to delete this column? This will move the cards back to the stream." } } %>
|
||||
form: { data: { turbo_confirm: "Are you sure you want to delete this column? This will move the cards back to The Stream." } } do %>
|
||||
<%= icon_tag "trash" %>
|
||||
<span>Delete column</span>
|
||||
<% end %>
|
||||
</li>
|
||||
</ul>
|
||||
</dialog>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" data-turbo-permanent>
|
||||
<div class="position-relative cards__new-column" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" data-turbo-permanent>
|
||||
<button class="btn btn--circle txt-x-small borderless" data-action="click->dialog#open:stop" aria-label="Add a new column, etc.">
|
||||
<%= icon_tag "add", class: "translucent", "aria-hidden": true %>
|
||||
</button>
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<%= link_to column_path, class: "btn btn--circle txt-x-small borderless cards__expander-button", data: { turbo_frame: "_top" } do %>
|
||||
<%= icon_tag "expand", class: "translucent" %>
|
||||
<span class="for-screen-reader">Expand column</span>
|
||||
<% end %>
|
||||
@@ -4,7 +4,7 @@
|
||||
<%= render "filters/broadcasts", filter: @filter %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<%= render "events/index/add_card_button", user_filtering: @user_filtering %>
|
||||
|
||||
<h1 class="header__title">
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
dialog_target: "dialog",
|
||||
navigable_list_focus_on_selection_value: false,
|
||||
navigable_list_actionable_items_value: true } do %>
|
||||
<%= turbo_frame_tag "my_menu", src: my_menu_path(enable_collection_filtering: user_filtering.supports_collection_filtering?, **user_filtering.filter.as_params), target: "_top" %>
|
||||
<%= turbo_frame_tag "my_menu", src: my_menu_path, target: "_top" %>
|
||||
<% end %>
|
||||
</nav>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
<% # Using method: :get inside Turbo frame triggers some special Turbo handling where the script_name is lost %>
|
||||
<%= form_with url: user_filtering.self_filter_path(script_name: Account.sole.slug), method: :get, class: "display-contents",
|
||||
data: { controller: "form" } do |form| %>
|
||||
<% if user_filtering.collections.any? %>
|
||||
<%= collapsible_nav_section "Collections" do %>
|
||||
<%= render "filters/menu/collections/all_option", form: form, user_filtering: user_filtering %>
|
||||
<%= render partial: "filters/menu/collections/collection", collection: user_filtering.collections, as: :collection, locals: { form: form, user_filtering: user_filtering } %>
|
||||
<% end %>
|
||||
<% if user_filtering.collections.any? %>
|
||||
<%= collapsible_nav_section "Collections" do %>
|
||||
<%= render "filters/menu/collections/all_option", user_filtering: user_filtering %>
|
||||
<%= render partial: "filters/menu/collections/collection", collection: user_filtering.collections, as: :collection %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
<% clear_url_path = user_filtering.self_filter_path(user_filtering.as_params.except(:collection_ids), script_name: request.script_name) %>
|
||||
|
||||
<% if Current.user.collections.many? %>
|
||||
<li class="popup__item" data-filter-target="item" data-navigable-list-target="item" id="filter-collection-all">
|
||||
<%= icon_tag "collection", class: "popup__icon" %>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<% @hide_footer_frames = true %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
|
||||
<h1 class="header__title"><%= @page_title %></h1>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Notifications settings" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<h1 class="header__title"><%= @page_title %></h1>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -11,5 +11,5 @@
|
||||
<% else %>
|
||||
<p class="txt-medium translucent">Nothing here</p>
|
||||
<% end %>
|
||||
<div class="cards__decoration cards__decoration--end"></div>
|
||||
<div class="cards__decoration-end"></div>
|
||||
</section>
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<div class="cards__decoration cards__decoration--end"></div>
|
||||
</section>
|
||||
<div class="cards__decoration-end"></div>
|
||||
</section>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Edit your profile" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<% end %>
|
||||
|
||||
<div class="panel shadow center">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = @user.name %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<% end %>
|
||||
|
||||
<div class="panel shadow center txt-align-center margin-block-end-double">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = @webhook.name %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to @webhook, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Webhooks" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to cards_path(collection_ids: [ @collection ]), class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Set up a Webhook" %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to collection_webhooks_path, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = @webhook.name %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "filters/menu", user_filtering: @user_filtering %>
|
||||
<%= render "filters/menu" %>
|
||||
<div class="header__actions header__actions--start">
|
||||
<%= link_to collection_webhooks_path, class: "btn borderless txt-medium", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
|
||||
<span class="overflow-ellipsis">
|
||||
|
||||
Reference in New Issue
Block a user