primer_view_components 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/action_list/divider.rb +1 -1
- data/app/components/primer/alpha/action_list/item.html.erb +1 -1
- data/app/components/primer/alpha/action_list/item.rb +2 -2
- data/app/components/primer/alpha/action_list.css +1 -1
- data/app/components/primer/alpha/action_list.css.json +3 -0
- data/app/components/primer/alpha/action_list.css.map +1 -1
- data/app/components/primer/alpha/action_list.pcss +7 -1
- data/app/components/primer/alpha/dialog/header.html.erb +3 -1
- data/app/components/primer/alpha/dialog.rb +20 -15
- data/app/components/primer/beta/icon_button.rb +1 -1
- data/app/components/primer/component.rb +59 -3
- data/app/components/primer/layout_component.rb +2 -0
- data/lib/primer/deprecations.yml +5 -0
- data/lib/primer/forms/dsl/text_field_input.rb +1 -1
- data/lib/primer/view_components/version.rb +1 -1
- data/previews/primer/alpha/text_field_preview.rb +7 -0
- data/static/arguments.json +3 -3
- data/static/previews.json +5 -16
- data/static/statuses.json +1 -1
- metadata +2 -3
- data/previews/primer/layout_component_preview.rb +0 -30
@@ -12,7 +12,7 @@
|
|
12
12
|
<% end %>
|
13
13
|
<%= render(Primer::ConditionalWrapper.new(condition: description?, tag: :span, **@description_wrapper_arguments)) do %>
|
14
14
|
<%= render(Primer::BaseComponent.new(tag: :span, **@label_arguments)) do %>
|
15
|
-
<%= @label %>
|
15
|
+
<%= @label || content %>
|
16
16
|
<% end %>
|
17
17
|
<% if description? %>
|
18
18
|
<span class="ActionListItem-description">
|
@@ -130,7 +130,7 @@ module Primer
|
|
130
130
|
|
131
131
|
# @param list [Primer::Alpha::ActionList] The list that contains this item. Used internally.
|
132
132
|
# @param parent [Primer::Alpha::ActionList::Item] This item's parent item. `nil` if this item is at the root. Used internally.
|
133
|
-
# @param label [String] Item label.
|
133
|
+
# @param label [String] Item label. If no label is provided, content is used.
|
134
134
|
# @param label_classes [String] CSS classes that will be added to the label.
|
135
135
|
# @param label_arguments [Hash] <%= link_to_system_arguments_docs %> used to construct the label.
|
136
136
|
# @param content_arguments [Hash] <%= link_to_system_arguments_docs %> used to construct the item's anchor or button tag.
|
@@ -147,7 +147,7 @@ module Primer
|
|
147
147
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
148
148
|
def initialize(
|
149
149
|
list:,
|
150
|
-
label
|
150
|
+
label: nil,
|
151
151
|
label_classes: nil,
|
152
152
|
label_arguments: {},
|
153
153
|
content_arguments: {},
|
@@ -1 +1 @@
|
|
1
|
-
:root{--primer-actionListContent-paddingBlock:var(--primer-control-medium-paddingBlock,6px)}.ActionListWrap{list-style:none}.ActionListWrap--inset{padding:var(--base-size-8,8px)}.ActionListWrap--divided .ActionListItem-label:before{height:1px}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline:before,.ActionListWrap--divided .ActionListItem-label:before{background:var(--color-action-list-item-inline-divider);content:"";display:block;position:absolute;top:calc(var(--primer-actionListContent-paddingBlock)*-1);width:100%}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline:before{height:var(--primer-borderWidth-thin,1px)}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline .ActionListItem-label:before{content:unset}.ActionList-sectionDivider+.ActionListItem .ActionListItem-descriptionWrap--inline:before,.ActionList-sectionDivider+.ActionListItem .ActionListItem-label:before,.ActionListItem:first-of-type .ActionListItem-descriptionWrap--inline:before,.ActionListItem:first-of-type .ActionListItem-label:before,.ActionListWrap--divided .ActionListItem--navActive .ActionListItem-label:before,.ActionListWrap--divided .ActionListItem--navActive+.ActionListItem .ActionListItem-label:before{visibility:hidden}.ActionListItem{background-color:initial;border-radius:var(--primer-borderRadius-medium,6px);list-style:none;position:relative}.ActionListItem:active,.ActionListItem:hover{cursor:pointer}@media (hover:hover){.ActionListItem:hover .ActionListItem-descriptionWrap--inline:before,.ActionListItem:hover .ActionListItem-label:before,.ActionListItem:hover+.ActionListItem .ActionListItem-descriptionWrap--inline:before,.ActionListItem:hover+.ActionListItem .ActionListItem-label:before{visibility:hidden}}.ActionListItem[hidden]+.ActionList-sectionDivider{display:none}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent{z-index:1}@media (hover:hover){.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active{background-color:var(--color-action-list-item-default-active-bg)}@media (hover:hover){.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover,.ActionListItem:not(.ActionListItem--hasSubItem):hover{background-color:var(--color-action-list-item-default-hover-bg);cursor:pointer}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover:not(.ActionListItem--navActive,:focus-visible),.ActionListItem:not(.ActionListItem--hasSubItem):hover:not(.ActionListItem--navActive,:focus-visible){box-shadow:var(--primer-borderInset-thin,1px) var(--color-action-list-item-default-active-border);outline:solid var(--primer-borderWidth-thin,1px) #0000;outline-offset:calc(var(--primer-borderWidth-thin, 1px)*-1)}}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active,.ActionListItem:not(.ActionListItem--hasSubItem):active{background:var(--color-action-list-item-default-active-bg)}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active:not(.ActionListItem--navActive),.ActionListItem:not(.ActionListItem--hasSubItem):active:not(.ActionListItem--navActive){box-shadow:var(--primer-borderInset-thin,1px) var(--color-action-list-item-default-active-border);outline:solid var(--primer-borderWidth-thin,1px) #0000;outline-offset:calc(var(--primer-borderWidth-thin, 1px)*-1)}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active .ActionListItem-label:before,.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active+.ActionListItem .ActionListItem-label:before,.ActionListItem:not(.ActionListItem--hasSubItem):active .ActionListItem-label:before,.ActionListItem:not(.ActionListItem--hasSubItem):active+.ActionListItem .ActionListItem-label:before{visibility:hidden}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectCheckmark{opacity:1;transition:visibility 0 linear 0,opacity 50ms;visibility:visible}.ActionListItem[aria-checked=true] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-singleSelectCheckmark{visibility:visible}@media screen and (prefers-reduced-motion:no-preference){.ActionListItem[aria-checked=true] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-singleSelectCheckmark{animation:checkmarkIn .2s cubic-bezier(.11,0,.5,0) forwards}}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect{fill:var(--color-accent-fg);stroke:var(--color-accent-fg);stroke-width:var(--primer-borderWidth-thin,1px)}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectCheckmark{fill:var(--color-fg-on-emphasis)}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectCheckmark{opacity:0;transition:visibility 0 linear 50ms,opacity 50ms;visibility:hidden}.ActionListItem[aria-checked=false] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-singleSelectCheckmark{clip-path:inset(16px 0 0 0);transition:visibility 0s linear .2s;visibility:hidden}@media screen and (prefers-reduced-motion:no-preference){.ActionListItem[aria-checked=false] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-singleSelectCheckmark{animation:checkmarkOut .2s cubic-bezier(.11,0,.5,0) forwards}}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect{fill:var(--color-canvas-default);stroke:var(--color-border-default);stroke-width:var(--primer-borderWidth-thin,1px)}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectIconRect{fill:var(--color-canvas-default);border:var(--primer-borderWidth-thin,1px) solid var(--color-border-default)}.ActionListItem{@keyframes checkmarkIn{0%{clip-path:inset(16px 0 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes checkmarkOut{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(16px 0 0 0)}}}.ActionListItem[aria-selected=true]{background:var(--color-action-list-item-default-selected-bg);font-weight:var(--base-text-weight-normal,400)}@media (hover:hover){.ActionListItem[aria-selected=true]:hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem[aria-selected=true]+.ActionListItem:before,.ActionListItem[aria-selected=true]:before{visibility:hidden}.ActionListItem[aria-selected=true]:after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-4, 4px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--subItem) .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger){background:var(--color-action-list-item-default-selected-bg)}@media (hover:hover){.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger)+.ActionListItem:before,.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):before{visibility:hidden}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-8, 8px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-description,.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-label{color:var(--color-primer-fg-disabled)}.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-visual{fill:var(--color-primer-fg-disabled)}@media (hover:hover){.ActionListItem[aria-disabled=true]:hover{background-color:initial;cursor:not-allowed}}.ActionListItem.ActionListItem--danger .ActionListItem-label,.ActionListItem.ActionListItem--danger .ActionListItem-visual{color:var(--color-danger-fg)}@media (hover:hover){.ActionListItem.ActionListItem--danger:hover{background:var(--color-action-list-item-danger-hover-bg)}.ActionListItem.ActionListItem--danger:hover .ActionListItem-label{color:var(--color-action-list-item-danger-hover-text)}}.ActionListItem.ActionListItem--danger .ActionListContent:active{background:var(--color-action-list-item-danger-active-bg)}.ActionListContent{-webkit-tap-highlight-color:transparent;align-items:start;background-color:initial;border:none;border-radius:var(--primer-borderRadius-medium,6px);color:var(--color-fg-default);display:grid;grid-template-areas:"leadingAction leadingVisual label trailingVisual trailingAction";grid-template-columns:min-content min-content minmax(0,auto) min-content min-content;grid-template-rows:min-content;padding-block:var(--primer-actionListContent-paddingBlock);padding-inline:var(--primer-control-medium-paddingInline-condensed,8px);position:relative;text-align:left;touch-action:manipulation;transition:background 33.333ms linear;-webkit-user-select:none;user-select:none;width:100%}.ActionListContent>:not(:last-child){margin-right:var(--primer-control-medium-gap,8px)}.ActionListContent:hover{text-decoration:none}.ActionListContent[aria-disabled=true] .ActionListItem-description,.ActionListContent[aria-disabled=true] .ActionListItem-label{color:var(--color-primer-fg-disabled)}.ActionListContent[aria-disabled=true] .ActionListItem-visual{fill:var(--color-primer-fg-disabled)}@media (hover:hover){.ActionListContent[aria-disabled=true]:hover{background-color:initial;cursor:not-allowed}}@media screen and (prefers-reduced-motion:no-preference){.ActionListContent[aria-expanded]+.ActionList--subGroup{transition:opacity .16s cubic-bezier(.25,1,.5,1),transform .16s cubic-bezier(.25,1,.5,1)}}.ActionListContent[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-24,24px)}.ActionListContent.ActionListContent--visual16[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-32,32px)}.ActionListContent.ActionListContent--visual20[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-36,36px)}.ActionListContent.ActionListContent--visual24[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-40,40px)}.ActionListContent[aria-expanded=true] .ActionListItem-collapseIcon{transform:scaleY(-1);transition:transform .12s linear}.ActionListContent[aria-expanded=true]+.ActionList--subGroup{height:auto;opacity:1;overflow:visible;transform:translateY(0);visibility:visible}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=true]>.ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListContent[aria-expanded=false] .ActionListItem-collapseIcon{transform:scaleY(1);transition:transform .12s linear}.ActionListContent[aria-expanded=false]+.ActionList--subGroup{height:0;opacity:0;overflow:hidden;transform:translateY(calc(var(--base-size-16, 16px)*-1));visibility:hidden}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]{background:var(--color-action-list-item-default-selected-bg)}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false] .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]+.ActionListItem:before,.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]:before{visibility:hidden}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]:after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-8, 8px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListContent.ActionListContent--sizeLarge{--primer-actionListContent-paddingBlock:var(--primer-control-large-paddingBlock,0.625rem)}.ActionListContent.ActionListContent--sizeXLarge{--primer-actionListContent-paddingBlock:var(--primer-control-xlarge-paddingBlock,0.875rem)}@media (pointer:coarse){.ActionListContent{--primer-actionListContent-paddingBlock:var(--primer-control-large-paddingBlock,0.625rem)}}.ActionListContent.ActionListContent--blockDescription .ActionListItem-visual{place-self:start}.ActionListItem-action--leading{grid-area:leadingAction}.ActionListItem-visual--leading{grid-area:leadingVisual}.ActionListItem-visual--trailing{grid-area:trailingVisual}.ActionListItem-action--trailing{grid-area:trailingAction}.ActionListItem-descriptionWrap{display:flex;flex-direction:column;gap:var(--base-size-4,4px);grid-area:label}.ActionListItem-descriptionWrap .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListItem-descriptionWrap--inline{align-items:baseline;flex-direction:row;gap:var(--base-size-8,8px);position:relative}.ActionListItem-description{color:var(--color-fg-muted);font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-normal,400);line-height:var(--primer-text-body-lineHeight-small,1.66667)}.ActionListItem-action,.ActionListItem-visual{fill:var(--color-fg-muted);align-items:center;color:var(--color-fg-muted);display:flex;min-height:var(--primer-control-medium-lineBoxHeight,20px);pointer-events:none}.ActionListItem-label{color:var(--color-fg-default);font-size:var(--primer-text-body-size-medium,14px);font-weight:var(--base-text-weight-normal,400);grid-area:label;line-height:var(--primer-text-body-lineHeight-medium,1.42857);position:relative}.ActionListItem-label--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ActionListItem--subItem>.ActionListContent>.ActionListItem-label{font-size:var(--primer-text-body-size-small,12px);line-height:var(--primer-text-body-lineHeight-small,1.66667)}.ActionListItem--withActions{align-items:center;display:flex;flex-wrap:nowrap}.ActionListItem-trailingAction{border-bottom-left-radius:0;border-top-left-radius:0}.ActionListItem--trailingActionHover .ActionListItem-trailingAction{visibility:hidden}.ActionListItem--trailingActionHover:focus-within .ActionListItem-trailingAction,.ActionListItem--trailingActionHover:hover .ActionListItem-trailingAction{visibility:visible}.ActionList-sectionDivider:not(:empty){color:var(--color-fg-muted);display:flex;flex-direction:column;font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-semibold,600);line-height:var(--primer-text-body-lineHeight-small,1.66667);padding-block:var(--base-size-8,8px);padding-inline:var(--primer-actionListContent-paddingBlock)}.ActionList-sectionDivider:empty{background:var(--color-action-list-item-inline-divider);border:0;display:block;height:var(--primer-borderWidth-thin,1px);list-style:none;margin-block-end:var(--base-size-8,8px);margin-block-start:calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));margin-inline:calc(var(--base-size-8, 8px)*-1);padding:0}.ActionList-sectionDivider .ActionList-sectionDivider-title{color:var(--color-fg-muted);font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-semibold,600)}.ActionList-sectionDivider--filled{background:var(--color-canvas-subtle);border-bottom:solid var(--primer-borderWidth-thin,1px) var(--color-action-list-item-inline-divider);border-top:solid var(--primer-borderWidth-thin,1px) var(--color-action-list-item-inline-divider);margin-block-end:var(--base-size-8,8px);margin-block-start:calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));margin-inline:calc(var(--base-size-8, 8px)*-1)}.ActionList-sectionDivider--filled:empty{box-sizing:border-box;height:var(--base-size-8,8px)}.ActionList-sectionDivider--filled:first-child{margin-block-start:0}
|
1
|
+
:root{--primer-actionListContent-paddingBlock:var(--primer-control-medium-paddingBlock,6px)}.ActionListWrap{list-style:none}.ActionListWrap--inset{padding:var(--base-size-8,8px)}.ActionListWrap--divided .ActionListItem-label:before{height:1px}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline:before,.ActionListWrap--divided .ActionListItem-label:before{background:var(--color-action-list-item-inline-divider);content:"";display:block;position:absolute;top:calc(var(--primer-actionListContent-paddingBlock)*-1);width:100%}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline:before{height:var(--primer-borderWidth-thin,1px)}.ActionListWrap--divided .ActionListItem-descriptionWrap--inline .ActionListItem-label:before{content:unset}.ActionList-sectionDivider+.ActionListItem .ActionListItem-descriptionWrap--inline:before,.ActionList-sectionDivider+.ActionListItem .ActionListItem-label:before,.ActionListItem:first-of-type .ActionListItem-descriptionWrap--inline:before,.ActionListItem:first-of-type .ActionListItem-label:before,.ActionListWrap--divided .ActionListItem--navActive .ActionListItem-label:before,.ActionListWrap--divided .ActionListItem--navActive+.ActionListItem .ActionListItem-label:before{visibility:hidden}.ActionListItem{background-color:initial;border-radius:var(--primer-borderRadius-medium,6px);list-style:none;position:relative}.ActionListItem:active,.ActionListItem:hover{cursor:pointer}@media (hover:hover){.ActionListItem:hover .ActionListItem-descriptionWrap--inline:before,.ActionListItem:hover .ActionListItem-label:before,.ActionListItem:hover+.ActionListItem .ActionListItem-descriptionWrap--inline:before,.ActionListItem:hover+.ActionListItem .ActionListItem-label:before{visibility:hidden}}.ActionListItem[hidden]+.ActionList-sectionDivider{display:none}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent{z-index:1}@media (hover:hover){.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active{background-color:var(--color-action-list-item-default-active-bg)}@media (hover:hover){.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover,.ActionListItem:not(.ActionListItem--hasSubItem):hover{background-color:var(--color-action-list-item-default-hover-bg);cursor:pointer}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:hover:not(.ActionListItem--navActive,:focus-visible),.ActionListItem:not(.ActionListItem--hasSubItem):hover:not(.ActionListItem--navActive,:focus-visible){box-shadow:var(--primer-borderInset-thin,1px) var(--color-action-list-item-default-active-border);outline:solid var(--primer-borderWidth-thin,1px) #0000;outline-offset:calc(var(--primer-borderWidth-thin, 1px)*-1)}}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active,.ActionListItem:not(.ActionListItem--hasSubItem):active{background:var(--color-action-list-item-default-active-bg)}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active:not(.ActionListItem--navActive),.ActionListItem:not(.ActionListItem--hasSubItem):active:not(.ActionListItem--navActive){box-shadow:var(--primer-borderInset-thin,1px) var(--color-action-list-item-default-active-border);outline:solid var(--primer-borderWidth-thin,1px) #0000;outline-offset:calc(var(--primer-borderWidth-thin, 1px)*-1)}.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active .ActionListItem-label:before,.ActionListItem.ActionListItem--hasSubItem>.ActionListContent:active+.ActionListItem .ActionListItem-label:before,.ActionListItem:not(.ActionListItem--hasSubItem):active .ActionListItem-label:before,.ActionListItem:not(.ActionListItem--hasSubItem):active+.ActionListItem .ActionListItem-label:before{visibility:hidden}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectCheckmark{opacity:1;transition:visibility 0 linear 0,opacity 50ms;visibility:visible}.ActionListItem[aria-checked=true] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-singleSelectCheckmark{visibility:visible}@media screen and (prefers-reduced-motion:no-preference){.ActionListItem[aria-checked=true] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-singleSelectCheckmark{animation:checkmarkIn .2s cubic-bezier(.11,0,.5,0) forwards}}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect{fill:var(--color-accent-fg);stroke:var(--color-accent-fg);stroke-width:var(--primer-borderWidth-thin,1px)}.ActionListItem[aria-checked=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=true] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectCheckmark{fill:var(--color-fg-on-emphasis)}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectCheckmark{opacity:0;transition:visibility 0 linear 50ms,opacity 50ms;visibility:hidden}.ActionListItem[aria-checked=false] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-singleSelectCheckmark{clip-path:inset(16px 0 0 0);transition:visibility 0s linear .2s;visibility:hidden}@media screen and (prefers-reduced-motion:no-preference){.ActionListItem[aria-checked=false] .ActionListItem-singleSelectCheckmark,.ActionListItem[aria-selected=false] .ActionListItem-singleSelectCheckmark{animation:checkmarkOut .2s cubic-bezier(.11,0,.5,0) forwards}}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectIcon .ActionListItem-multiSelectIconRect{fill:var(--color-canvas-default);stroke:var(--color-border-default);stroke-width:var(--primer-borderWidth-thin,1px)}.ActionListItem[aria-checked=false] .ActionListItem-multiSelectIconRect,.ActionListItem[aria-selected=false] .ActionListItem-multiSelectIconRect{fill:var(--color-canvas-default);border:var(--primer-borderWidth-thin,1px) solid var(--color-border-default)}.ActionListItem{@keyframes checkmarkIn{0%{clip-path:inset(16px 0 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes checkmarkOut{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(16px 0 0 0)}}}.ActionListItem[aria-selected=true]{background:var(--color-action-list-item-default-selected-bg);font-weight:var(--base-text-weight-normal,400)}@media (hover:hover){.ActionListItem[aria-selected=true]:hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem[aria-selected=true]+.ActionListItem:before,.ActionListItem[aria-selected=true]:before{visibility:hidden}.ActionListItem[aria-selected=true]:after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-4, 4px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--subItem) .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger){background:var(--color-action-list-item-default-selected-bg)}@media (hover:hover){.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):hover{background-color:var(--color-action-list-item-default-hover-bg)}}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger)+.ActionListItem:before,.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):before{visibility:hidden}.ActionListItem.ActionListItem--navActive:not(.ActionListItem--danger):after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-8, 8px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-description,.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-label{color:var(--color-primer-fg-disabled)}.ActionListItem[aria-disabled=true] .ActionListContent .ActionListItem-visual{fill:var(--color-primer-fg-disabled)}@media (hover:hover){.ActionListItem[aria-disabled=true]:hover{background-color:initial;cursor:not-allowed}}.ActionListItem.ActionListItem--danger .ActionListItem-label,.ActionListItem.ActionListItem--danger .ActionListItem-visual{color:var(--color-danger-fg)}@media (hover:hover){.ActionListItem.ActionListItem--danger:hover{background:var(--color-action-list-item-danger-hover-bg)}.ActionListItem.ActionListItem--danger:hover .ActionListItem-label,.ActionListItem.ActionListItem--danger:hover .ActionListItem-visual{color:var(--color-action-list-item-danger-hover-text)}}.ActionListItem.ActionListItem--danger .ActionListContent:active{background:var(--color-action-list-item-danger-active-bg)}.ActionListItem.ActionListItem--danger .ActionListContent:active .ActionListItem-label,.ActionListItem.ActionListItem--danger .ActionListContent:active .ActionListItem-visual{color:var(--color-action-list-item-danger-hover-text)}.ActionListContent{-webkit-tap-highlight-color:transparent;align-items:start;background-color:initial;border:none;border-radius:var(--primer-borderRadius-medium,6px);color:var(--color-fg-default);display:grid;grid-template-areas:"leadingAction leadingVisual label trailingVisual trailingAction";grid-template-columns:min-content min-content minmax(0,auto) min-content min-content;grid-template-rows:min-content;padding-block:var(--primer-actionListContent-paddingBlock);padding-inline:var(--primer-control-medium-paddingInline-condensed,8px);position:relative;text-align:left;touch-action:manipulation;transition:background 33.333ms linear;-webkit-user-select:none;user-select:none;width:100%}.ActionListContent>:not(:last-child){margin-right:var(--primer-control-medium-gap,8px)}.ActionListContent:hover{text-decoration:none}.ActionListContent[aria-disabled=true] .ActionListItem-description,.ActionListContent[aria-disabled=true] .ActionListItem-label{color:var(--color-primer-fg-disabled)}.ActionListContent[aria-disabled=true] .ActionListItem-visual{fill:var(--color-primer-fg-disabled)}@media (hover:hover){.ActionListContent[aria-disabled=true]:hover{background-color:initial;cursor:not-allowed}}@media screen and (prefers-reduced-motion:no-preference){.ActionListContent[aria-expanded]+.ActionList--subGroup{transition:opacity .16s cubic-bezier(.25,1,.5,1),transform .16s cubic-bezier(.25,1,.5,1)}}.ActionListContent[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-24,24px)}.ActionListContent.ActionListContent--visual16[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-32,32px)}.ActionListContent.ActionListContent--visual20[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-36,36px)}.ActionListContent.ActionListContent--visual24[aria-expanded]+.ActionList--subGroup .ActionListContent{padding-left:var(--base-size-40,40px)}.ActionListContent[aria-expanded=true] .ActionListItem-collapseIcon{transform:scaleY(-1);transition:transform .12s linear}.ActionListContent[aria-expanded=true]+.ActionList--subGroup{height:auto;opacity:1;overflow:visible;transform:translateY(0);visibility:visible}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=true]>.ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListContent[aria-expanded=false] .ActionListItem-collapseIcon{transform:scaleY(1);transition:transform .12s linear}.ActionListContent[aria-expanded=false]+.ActionList--subGroup{height:0;opacity:0;overflow:hidden;transform:translateY(calc(var(--base-size-16, 16px)*-1));visibility:hidden}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]{background:var(--color-action-list-item-default-selected-bg)}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false] .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]+.ActionListItem:before,.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]:before{visibility:hidden}.ActionListContent.ActionListContent--hasActiveSubItem[aria-expanded=false]:after{background:var(--color-accent-fg);border-radius:var(--primer-borderRadius-medium,6px);content:"";height:var(--base-size-24,24px);left:calc(var(--base-size-8, 8px)*-1);position:absolute;top:calc(50% - 12px);width:var(--base-size-4,4px)}.ActionListContent.ActionListContent--sizeLarge{--primer-actionListContent-paddingBlock:var(--primer-control-large-paddingBlock,0.625rem)}.ActionListContent.ActionListContent--sizeXLarge{--primer-actionListContent-paddingBlock:var(--primer-control-xlarge-paddingBlock,0.875rem)}@media (pointer:coarse){.ActionListContent{--primer-actionListContent-paddingBlock:var(--primer-control-large-paddingBlock,0.625rem)}}.ActionListContent.ActionListContent--blockDescription .ActionListItem-visual{place-self:start}.ActionListItem-action--leading{grid-area:leadingAction}.ActionListItem-visual--leading{grid-area:leadingVisual}.ActionListItem-visual--trailing{grid-area:trailingVisual}.ActionListItem-action--trailing{grid-area:trailingAction}.ActionListItem-descriptionWrap{display:flex;flex-direction:column;gap:var(--base-size-4,4px);grid-area:label}.ActionListItem-descriptionWrap .ActionListItem-label{font-weight:var(--base-text-weight-semibold,600)}.ActionListItem-descriptionWrap--inline{align-items:baseline;flex-direction:row;gap:var(--base-size-8,8px);position:relative}.ActionListItem-description{color:var(--color-fg-muted);font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-normal,400);line-height:var(--primer-text-body-lineHeight-small,1.66667)}.ActionListItem-action,.ActionListItem-visual{fill:var(--color-fg-muted);align-items:center;color:var(--color-fg-muted);display:flex;min-height:var(--primer-control-medium-lineBoxHeight,20px);pointer-events:none}.ActionListItem-label{color:var(--color-fg-default);font-size:var(--primer-text-body-size-medium,14px);font-weight:var(--base-text-weight-normal,400);grid-area:label;line-height:var(--primer-text-body-lineHeight-medium,1.42857);position:relative}.ActionListItem-label--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ActionListItem--subItem>.ActionListContent>.ActionListItem-label{font-size:var(--primer-text-body-size-small,12px);line-height:var(--primer-text-body-lineHeight-small,1.66667)}.ActionListItem--withActions{align-items:center;display:flex;flex-wrap:nowrap}.ActionListItem-trailingAction{border-bottom-left-radius:0;border-top-left-radius:0}.ActionListItem--trailingActionHover .ActionListItem-trailingAction{visibility:hidden}.ActionListItem--trailingActionHover:focus-within .ActionListItem-trailingAction,.ActionListItem--trailingActionHover:hover .ActionListItem-trailingAction{visibility:visible}.ActionList-sectionDivider:not(:empty){color:var(--color-fg-muted);display:flex;flex-direction:column;font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-semibold,600);line-height:var(--primer-text-body-lineHeight-small,1.66667);padding-block:var(--base-size-8,8px);padding-inline:var(--primer-actionListContent-paddingBlock)}.ActionList-sectionDivider:empty{background:var(--color-action-list-item-inline-divider);border:0;display:block;height:var(--primer-borderWidth-thin,1px);list-style:none;margin-block-end:var(--base-size-8,8px);margin-block-start:calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));margin-inline:calc(var(--base-size-8, 8px)*-1);padding:0}.ActionList-sectionDivider .ActionList-sectionDivider-title{color:var(--color-fg-muted);font-size:var(--primer-text-body-size-small,12px);font-weight:var(--base-text-weight-semibold,600)}.ActionList-sectionDivider--filled{background:var(--color-canvas-subtle);border-bottom:solid var(--primer-borderWidth-thin,1px) var(--color-action-list-item-inline-divider);border-top:solid var(--primer-borderWidth-thin,1px) var(--color-action-list-item-inline-divider);margin-block-end:var(--base-size-8,8px);margin-block-start:calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));margin-inline:calc(var(--base-size-8, 8px)*-1)}.ActionList-sectionDivider--filled:empty{box-sizing:border-box;height:var(--base-size-8,8px)}.ActionList-sectionDivider--filled:first-child{margin-block-start:0}
|
@@ -69,7 +69,10 @@
|
|
69
69
|
".ActionListItem.ActionListItem--danger .ActionListItem-visual",
|
70
70
|
".ActionListItem.ActionListItem--danger:hover",
|
71
71
|
".ActionListItem.ActionListItem--danger:hover .ActionListItem-label",
|
72
|
+
".ActionListItem.ActionListItem--danger:hover .ActionListItem-visual",
|
72
73
|
".ActionListItem.ActionListItem--danger .ActionListContent:active",
|
74
|
+
".ActionListItem.ActionListItem--danger .ActionListContent:active .ActionListItem-label",
|
75
|
+
".ActionListItem.ActionListItem--danger .ActionListContent:active .ActionListItem-visual",
|
73
76
|
".ActionListContent",
|
74
77
|
".ActionListContent>:not(:last-child)",
|
75
78
|
".ActionListContent:hover",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["action_list.pcss","../../../../lib/postcss_mixins/activeIndicatorLine.pcss"],"names":[],"mappings":"AAAA,MACE,qFACF,CAKA,gBACE,eACF,CAEA,uBACE,8BACF,CAKE,sDAKE,UAGF,CAIE,8HALA,uDAAwD,CADxD,UAAW,CAHX,aAAc,CAFd,iBAAkB,CAClB,yDAA4D,CAE5D,UAgBA,CARA,wEAKE,yCAGF,CAGA,8FACE,aACF,CAmBJ,4dAEE,iBACF,CAIA,gBAGE,wBAA6B,CAC7B,mDAAqD,CAFrD,eAAgB,CADhB,iBAwRF,CAjRE,6CAEE,cACF,CAGA,qBAOI,gRAEE,iBACF,CAEJ,CAGA,mDACE,YACF,CAKE,8DACE,SAWF,CATE,qBACE,oEACE,+DACF,CACF,CAEA,qEACE,gEACF,CAQF,qBACE,2HAEE,+DAAgE,CADhE,cASF,CANE,yNAIE,iGAAmG,CAFnG,sDAA8D,CAC9D,2DAEF,CAEJ,CAEA,6HACE,0DAaF,CAXE,6LAIE,iGAAmG,CAFnG,sDAA8D,CAC9D,2DAEF,CAEA,8YAEE,iBACF,CAWF,iJAEE,SAAU,CACV,6CAA+C,CAF/C,kBAGF,CAGA,mJACE,kBAKF,CAHE,yDAHF,mJAII,2DAEJ,CADE,CAKA,+MACE,2BAA4B,CAC5B,6BAA8B,CAC9B,+CACF,CAEA,iNACE,gCACF,CAOF,mJAEE,SAAU,CACV,gDAAkD,CAFlD,iBAGF,CAGA,qJAGE,2BAA4B,CAD5B,mCAAsC,CADtC,iBAOF,CAHE,yDALF,qJAMI,4DAEJ,CADE,CAKA,iNACE,gCAAiC,CACjC,kCAAmC,CACnC,+CACF,CAGF,iJACE,gCAAiC,CACjC,2EACF,CA1JJ,gBA6JE,uBACE,GACE,2BACF,CAEA,GACE,wBACF,CACF,CAEA,wBACE,GACE,wBACF,CAEA,GACE,2BACF,CACF,CA0GF,CAtGE,oCAEE,4DAA6D,CAD7D,8CAmBF,CAhBE,qBACE,0CACE,+DACF,CACF,CAEA,sGAEE,iBACF,CAIA,0CCjQF,iCAAkC,CAClC,mDAAqD,CAFrD,UAAW,CADX,+BAAiC,CAFjC,qCAAmB,CAFnB,iBAAkB,CAClB,oBAAqB,CAErB,4BDsQE,CAOE,8FACE,gDACF,CAGF,uEACE,4DAiBF,CAfE,qBACE,6EACE,+DACF,CACF,CAEA,4KAEE,iBACF,CAGA,6EC9RJ,iCAAkC,CAClC,mDAAqD,CAFrD,UAAW,CADX,+BAAiC,CAFjC,qCAAmB,CAFnB,iBAAkB,CAClB,oBAAqB,CAErB,4BDmSI,CAQA,gKAEE,qCACF,CAEA,8EACE,oCACF,CAGF,qBACE,0CAEE,wBAA6B,CAD7B,kBAEF,CACF,CAWA,2HACE,4BACF,CAEA,qBACE,6CACE,wDAKF,CAHE,mEACE,qDACF,CAEJ,CAGE,iEACE,yDACF,CAMN,mBAcE,uCAAwC,CAIxC,iBAAkB,CATlB,wBAA6B,CAC7B,WAAY,CACZ,mDAAqD,CALrD,6BAA8B,CAJ9B,YAAa,CAcb,qFAAsF,CACtF,oFAAsF,CAFtF,8BAA+B,CAX/B,0DAA2D,CAC3D,uEAAyE,CAJzE,iBAAkB,CAMlB,eAAgB,CAMhB,yBAA0B,CAD1B,qCAAsC,CAJtC,wBAAiB,CAAjB,gBAAiB,CALjB,UAgKF,CA9IE,qCACE,iDACF,CAIA,yBACE,oBACF,CAIE,gIAEE,qCACF,CAEA,8DACE,oCACF,CAEA,qBACE,6CAEE,wBAA6B,CAD7B,kBAEF,CACF,CASE,yDADF,wDAEI,wFAMJ,CALE,CAEA,2EACE,qCACF,CAKA,uGACE,qCACF,CAKA,uGACE,qCACF,CAKA,uGACE,qCACF,CAKF,oEAEE,oBAAqB,CADrB,gCAEF,CAEA,6DACE,WAAY,CAGZ,SAAU,CAFV,gBAAiB,CAGjB,uBAAwB,CAFxB,kBAGF,CAGE,iGACE,gDACF,CAKF,qEAEE,mBAAoB,CADpB,gCAEF,CAEA,8DACE,QAAS,CAGT,SAAU,CAFV,eAAgB,CAGhB,wDAA2D,CAF3D,iBAGF,CAGA,4EACE,4DAeF,CAbE,kGACE,gDACF,CAEA,sLAEE,iBACF,CAGA,kFCjeJ,iCAAkC,CAClC,mDAAqD,CAFrD,UAAW,CADX,+BAAiC,CAFjC,qCAAmB,CAFnB,iBAAkB,CAClB,oBAAqB,CAErB,4BDseI,CAMJ,gDACE,yFACF,CAEA,iDACE,0FACF,CAGA,wBAzJF,mBA0JI,yFASJ,CARE,CAIE,8EACE,gBACF,CAMJ,gCACE,uBACF,CAEA,gCACE,uBACF,CAEA,iCACE,wBACF,CAEA,iCACE,wBACF,CAIA,gCAEE,YAAa,CACb,qBAAsB,CACtB,0BAA4B,CAH5B,eAQF,CAHE,sDACE,gDACF,CAIF,wCAGE,oBAAqB,CADrB,kBAAmB,CAEnB,0BAA4B,CAH5B,iBAIF,CAGA,4BAIE,2BAA4B,CAH5B,iDAAmD,CACnD,8CAAgD,CAChD,4DAEF,CAIA,8CAME,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAF5B,YAAa,CACb,0DAA4D,CAE5D,mBAGF,CAGA,sBAKE,6BAA8B,CAH9B,kDAAoD,CACpD,8CAAgD,CAGhD,eAAgB,CAFhB,6DAAqE,CAHrE,iBAMF,CAEA,gCACE,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAKA,kEACE,iDAAmD,CACnD,4DACF,CAIA,6BAGE,kBAAmB,CAFnB,YAAa,CACb,gBAEF,CAEA,+BAEE,2BAA4B,CAD5B,wBAEF,CAKE,oEACE,iBACF,CAIE,2JACE,kBACF,CAQF,uCAOE,2BAA4B,CAN5B,YAAa,CAOb,qBAAsB,CAJtB,iDAAmD,CAEnD,gDAAkD,CADlD,4DAAoE,CAFpE,oCAAsC,CADtC,2DAOF,CAGA,iCAQE,uDAAwD,CACxD,QAAS,CART,aAAc,CACd,yCAA2C,CAK3C,eAAgB,CAFhB,uCAAyC,CADzC,sFAAuF,CAEvF,8CAAiD,CAHjD,SAOF,CAEA,4DAGE,2BAA4B,CAF5B,iDAAmD,CACnD,gDAEF,CAGF,mCAIE,qCAAsC,CAEtC,mGAAqG,CADrG,gGAAkG,CAHlG,uCAAyC,CADzC,sFAAuF,CAEvF,8CAcF,CARE,yCAEE,qBAAsB,CADtB,6BAEF,CAEA,+CACE,oBACF","file":"action_list.css","sourcesContent":[":root {\n --primer-actionListContent-paddingBlock: var(--primer-control-medium-paddingBlock, 6px);\n}\n\n/* ActionList */\n\n/* <ul> */\n.ActionListWrap {\n list-style: none;\n}\n\n.ActionListWrap--inset {\n padding: var(--base-size-8, 8px);\n}\n\n/* list dividers */\n\n.ActionListWrap--divided {\n & .ActionListItem-label::before {\n position: absolute;\n top: calc(-1 * var(--primer-actionListContent-paddingBlock));\n display: block;\n width: 100%;\n height: 1px;\n content: '';\n background: var(--color-action-list-item-inline-divider);\n }\n\n /* if descriptionWrap--inline exists, move pseudo divider to wrapper */\n & .ActionListItem-descriptionWrap--inline {\n &::before {\n position: absolute;\n top: calc(-1 * var(--primer-actionListContent-paddingBlock));\n display: block;\n width: 100%;\n height: var(--primer-borderWidth-thin, 1px);\n content: '';\n background: var(--color-action-list-item-inline-divider);\n }\n\n /* unset the default label pseudo */\n & .ActionListItem-label::before {\n content: unset;\n }\n }\n\n /* hide divider if item is active */\n & .ActionListItem--navActive {\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n }\n}\n\n/* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n.ActionListItem:first-of-type .ActionListItem-label::before,\n.ActionList-sectionDivider + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n}\n\n/* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n.ActionListItem:first-of-type .ActionListItem-descriptionWrap--inline::before,\n.ActionList-sectionDivider + .ActionListItem .ActionListItem-descriptionWrap--inline::before {\n visibility: hidden;\n}\n\n/* ActionList::Item */\n\n.ActionListItem {\n position: relative;\n list-style: none;\n background-color: transparent;\n border-radius: var(--primer-borderRadius-medium, 6px);\n\n /* state */\n\n &:hover,\n &:active {\n cursor: pointer;\n }\n\n /* hide dividers */\n @media (hover: hover) {\n &:hover {\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n\n & .ActionListItem-descriptionWrap--inline::before,\n & + .ActionListItem .ActionListItem-descriptionWrap--inline::before {\n visibility: hidden;\n }\n }\n }\n\n /* Make sure that the first visible item isn't a divider */\n &[hidden] + .ActionList-sectionDivider {\n display: none;\n }\n\n /* collapse styles here */\n &.ActionListItem--hasSubItem {\n /* first child */\n & > .ActionListContent {\n z-index: 1;\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &:active {\n background-color: var(--color-action-list-item-default-active-bg);\n }\n }\n }\n\n /* only hover li without list as children */\n &:not(.ActionListItem--hasSubItem),\n /* target contents of first child li if sub-item (li wraps item label + nested ul) */\n &.ActionListItem--hasSubItem > .ActionListContent {\n @media (hover: hover) {\n &:hover {\n cursor: pointer;\n background-color: var(--color-action-list-item-default-hover-bg);\n\n &:not(.ActionListItem--navActive, :focus-visible) {\n /* Support for \"Windows high contrast mode\" */\n outline: solid var(--primer-borderWidth-thin, 1px) transparent;\n outline-offset: calc(-1 * var(--primer-borderWidth-thin, 1px));\n box-shadow: var(--primer-borderInset-thin, 1px) var(--color-action-list-item-default-active-border);\n }\n }\n }\n\n &:active {\n background: var(--color-action-list-item-default-active-bg);\n\n &:not(.ActionListItem--navActive) {\n /* Support for \"Windows high contrast mode\" https:sarahmhigley.com/writing/whcm-quick-tips/ */\n outline: solid var(--primer-borderWidth-thin, 1px) transparent;\n outline-offset: calc(-1 * var(--primer-borderWidth-thin, 1px));\n box-shadow: var(--primer-borderInset-thin, 1px) var(--color-action-list-item-default-active-border);\n }\n\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n }\n }\n\n /*\n * checkbox item [aria-checked]\n * listbox [aria-selected]\n */\n &[aria-checked='true'],\n &[aria-selected='true'] {\n /* multiselect checkmark */\n & .ActionListItem-multiSelectCheckmark {\n visibility: visible;\n opacity: 1;\n transition: visibility 0 linear 0, opacity 50ms;\n }\n\n /* singleselect checkmark */\n & .ActionListItem-singleSelectCheckmark {\n visibility: visible;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: checkmarkIn 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;\n }\n }\n\n /* checkbox */\n & .ActionListItem-multiSelectIcon {\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-accent-fg);\n stroke: var(--color-accent-fg);\n stroke-width: var(--primer-borderWidth-thin, 1px);\n }\n\n & .ActionListItem-multiSelectCheckmark {\n fill: var(--color-fg-on-emphasis);\n }\n }\n }\n\n &[aria-checked='false'],\n &[aria-selected='false'] {\n /* multiselect checkmark */\n & .ActionListItem-multiSelectCheckmark {\n visibility: hidden;\n opacity: 0;\n transition: visibility 0 linear 50ms, opacity 50ms;\n }\n\n /* singleselect checkmark */\n & .ActionListItem-singleSelectCheckmark {\n visibility: hidden;\n transition: visibility 0s linear 200ms;\n clip-path: inset(16px 0 0 0);\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: checkmarkOut 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;\n }\n }\n\n /* checkbox */\n & .ActionListItem-multiSelectIcon {\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-canvas-default);\n stroke: var(--color-border-default);\n stroke-width: var(--primer-borderWidth-thin, 1px);\n }\n }\n\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-canvas-default);\n border: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n }\n }\n\n @keyframes checkmarkIn {\n from {\n clip-path: inset(16px 0 0 0);\n }\n\n to {\n clip-path: inset(0 0 0 0);\n }\n }\n\n @keyframes checkmarkOut {\n from {\n clip-path: inset(0 0 0 0);\n }\n\n to {\n clip-path: inset(16px 0 0 0);\n }\n }\n\n /* Autocomplete [aria-selected] items */\n\n &[aria-selected='true'] {\n font-weight: var(--base-text-weight-normal, 400);\n background: var(--color-action-list-item-default-selected-bg);\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n\n &::after {\n @mixin activeIndicatorLine calc(-1 * var(--base-size-4, 4px));\n }\n }\n\n /* active state [aria-current] */\n\n &.ActionListItem--navActive {\n &:not(.ActionListItem--subItem) {\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n }\n\n &:not(.ActionListItem--danger) {\n background: var(--color-action-list-item-default-selected-bg);\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n }\n\n /* disabled */\n\n &[aria-disabled='true'] {\n & .ActionListContent {\n & .ActionListItem-label,\n & .ActionListItem-description {\n color: var(--color-primer-fg-disabled);\n }\n\n & .ActionListItem-visual {\n fill: var(--color-primer-fg-disabled);\n }\n }\n\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n\n /* variants */\n\n /* danger */\n &.ActionListItem--danger {\n & .ActionListItem-label {\n color: var(--color-danger-fg);\n }\n\n & .ActionListItem-visual {\n color: var(--color-danger-fg);\n }\n\n @media (hover: hover) {\n &:hover {\n background: var(--color-action-list-item-danger-hover-bg);\n\n & .ActionListItem-label {\n color: var(--color-action-list-item-danger-hover-text);\n }\n }\n }\n\n & .ActionListContent {\n &:active {\n background: var(--color-action-list-item-danger-active-bg);\n }\n }\n }\n}\n\n/* button or a href */\n.ActionListContent {\n position: relative;\n display: grid;\n width: 100%;\n padding-block: var(--primer-actionListContent-paddingBlock);\n padding-inline: var(--primer-control-medium-paddingInline-condensed, 8px);\n color: var(--color-fg-default);\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n border-radius: var(--primer-borderRadius-medium, 6px);\n transition: background 33.333ms linear;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n grid-template-rows: min-content;\n grid-template-areas: 'leadingAction leadingVisual label trailingVisual trailingAction';\n grid-template-columns: min-content min-content minmax(0, auto) min-content min-content;\n align-items: start;\n\n /* column-gap persists with empty grid-areas, margin applies only when children exist */\n & > :not(:last-child) {\n margin-right: var(--primer-control-medium-gap, 8px);\n }\n\n /* state */\n\n &:hover {\n text-decoration: none;\n }\n\n /* disabled */\n &[aria-disabled='true'] {\n & .ActionListItem-label,\n & .ActionListItem-description {\n color: var(--color-primer-fg-disabled);\n }\n\n & .ActionListItem-visual {\n fill: var(--color-primer-fg-disabled);\n }\n\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n\n /* collapsible item [aria-expanded] */\n\n /* nesting (single level)\n target items inside expanded subgroups */\n &[aria-expanded] {\n & + .ActionList--subGroup {\n @media screen and (prefers-reduced-motion: no-preference) {\n transition: opacity 160ms cubic-bezier(0.25, 1, 0.5, 1), transform 160ms cubic-bezier(0.25, 1, 0.5, 1);\n }\n\n & .ActionListContent {\n padding-left: var(--base-size-24, 24px);\n }\n }\n\n /* has 16px leading visual */\n &.ActionListContent--visual16 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-32, 32px);\n }\n }\n\n /* has 20px leading visual */\n &.ActionListContent--visual20 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-36, 36px);\n }\n }\n\n /* has 24px leading visual */\n &.ActionListContent--visual24 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-40, 40px);\n }\n }\n }\n\n &[aria-expanded='true'] {\n & .ActionListItem-collapseIcon {\n transition: transform 120ms linear;\n transform: scaleY(-1);\n }\n\n & + .ActionList--subGroup {\n height: auto;\n overflow: visible;\n visibility: visible;\n opacity: 1;\n transform: translateY(0);\n }\n\n &.ActionListContent--hasActiveSubItem {\n & > .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n }\n }\n\n &[aria-expanded='false'] {\n & .ActionListItem-collapseIcon {\n transition: transform 120ms linear;\n transform: scaleY(1);\n }\n\n & + .ActionList--subGroup {\n height: 0;\n overflow: hidden;\n visibility: hidden;\n opacity: 0;\n transform: translateY(calc(-1 * var(--base-size-16, 16px)));\n }\n\n /* show active indicator on parent collapse if child is active */\n &.ActionListContent--hasActiveSubItem {\n background: var(--color-action-list-item-default-selected-bg);\n\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n }\n\n /* sizes */\n\n &.ActionListContent--sizeLarge {\n --primer-actionListContent-paddingBlock: var(--primer-control-large-paddingBlock, calc((2.5rem - 1.25rem) / 2));\n }\n\n &.ActionListContent--sizeXLarge {\n --primer-actionListContent-paddingBlock: var(--primer-control-xlarge-paddingBlock, calc((3rem - 1.25rem) / 2));\n }\n\n /* On pointer:coarse (mobile), all list items are large */\n @media (pointer: coarse) {\n --primer-actionListContent-paddingBlock: var(--primer-control-large-paddingBlock, calc((2.5rem - 1.25rem) / 2));\n }\n\n &.ActionListContent--blockDescription {\n /* if leading/trailing visual, align with first line of content */\n & .ActionListItem-visual {\n place-self: start;\n }\n }\n}\n\n/* place children on grid */\n\n.ActionListItem-action--leading {\n grid-area: leadingAction;\n}\n\n.ActionListItem-visual--leading {\n grid-area: leadingVisual;\n}\n\n.ActionListItem-visual--trailing {\n grid-area: trailingVisual;\n}\n\n.ActionListItem-action--trailing {\n grid-area: trailingAction;\n}\n\n/* wrapper span\n default block */\n.ActionListItem-descriptionWrap {\n grid-area: label;\n display: flex;\n flex-direction: column;\n gap: var(--base-size-4, 4px);\n\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n}\n\n/* inline */\n.ActionListItem-descriptionWrap--inline {\n position: relative;\n flex-direction: row;\n align-items: baseline;\n gap: var(--base-size-8, 8px);\n}\n\n/* description */\n.ActionListItem-description {\n font-size: var(--primer-text-body-size-small, 12px);\n font-weight: var(--base-text-weight-normal, 400);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n color: var(--color-fg-muted);\n}\n\n/* helper for grid alignment with multi-line content\n span wrapping svg or text */\n.ActionListItem-visual,\n.ActionListItem-action {\n display: flex;\n min-height: var(--primer-control-medium-lineBoxHeight, 20px);\n color: var(--color-fg-muted);\n pointer-events: none;\n fill: var(--color-fg-muted);\n align-items: center;\n}\n\n/* text */\n.ActionListItem-label {\n position: relative;\n font-size: var(--primer-text-body-size-medium, 14px);\n font-weight: var(--base-text-weight-normal, 400);\n line-height: var(--primer-text-body-lineHeight-medium, calc(20 / 14));\n color: var(--color-fg-default);\n grid-area: label;\n}\n\n.ActionListItem-label--truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* nested lists (only supports 1 level currently)\n target ActionListItem--subItem for padding-left to maintain :active :after state */\n\n.ActionListItem--subItem > .ActionListContent > .ActionListItem-label {\n font-size: var(--primer-text-body-size-small, 12px);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n}\n\n/* trailing action icon button */\n\n.ActionListItem--withActions {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.ActionListItem-trailingAction {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n/* show trailing action button on hover */\n\n.ActionListItem--trailingActionHover {\n & .ActionListItem-trailingAction {\n visibility: hidden;\n }\n\n &:hover,\n &:focus-within {\n & .ActionListItem-trailingAction {\n visibility: visible;\n }\n }\n}\n\n/* ActionList::Divider */\n\n.ActionList-sectionDivider {\n /* with children */\n &:not(:empty) {\n display: flex;\n padding-inline: var(--primer-actionListContent-paddingBlock);\n padding-block: var(--base-size-8, 8px);\n font-size: var(--primer-text-body-size-small, 12px);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n font-weight: var(--base-text-weight-semibold, 600);\n color: var(--color-fg-muted);\n flex-direction: column;\n }\n\n /* no children */\n &:empty {\n display: block;\n height: var(--primer-borderWidth-thin, 1px);\n padding: 0;\n margin-block-start: calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));\n margin-block-end: var(--base-size-8, 8px);\n margin-inline: calc(-1 * var(--base-size-8, 8px));\n list-style: none;\n background: var(--color-action-list-item-inline-divider);\n border: 0;\n }\n\n & .ActionList-sectionDivider-title {\n font-size: var(--primer-text-body-size-small, 12px);\n font-weight: var(--base-text-weight-semibold, 600);\n color: var(--color-fg-muted);\n }\n}\n\n.ActionList-sectionDivider--filled {\n margin-block-start: calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));\n margin-block-end: var(--base-size-8, 8px);\n margin-inline: calc(-1 * var(--base-size-8, 8px));\n background: var(--color-canvas-subtle);\n border-top: solid var(--primer-borderWidth-thin, 1px) var(--color-action-list-item-inline-divider);\n border-bottom: solid var(--primer-borderWidth-thin, 1px) var(--color-action-list-item-inline-divider);\n\n /* if no children, treat as divider */\n &:empty {\n height: var(--base-size-8, 8px);\n box-sizing: border-box;\n }\n\n &:first-child {\n margin-block-start: 0;\n }\n}\n","/* active indicator line for navlist items */\n@define-mixin activeIndicatorLine $padding-left: calc(-1 * var(--base-size-8, 8px)) {\n position: absolute;\n top: calc(50% - 12px);\n left: $padding-left;\n width: var(--base-size-4, 4px);\n height: var(--base-size-24, 24px);\n content: '';\n background: var(--color-accent-fg);\n border-radius: var(--primer-borderRadius-medium, 6px);\n}\n"]}
|
1
|
+
{"version":3,"sources":["action_list.pcss","../../../../lib/postcss_mixins/activeIndicatorLine.pcss"],"names":[],"mappings":"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","file":"action_list.css","sourcesContent":[":root {\n --primer-actionListContent-paddingBlock: var(--primer-control-medium-paddingBlock, 6px);\n}\n\n/* ActionList */\n\n/* <ul> */\n.ActionListWrap {\n list-style: none;\n}\n\n.ActionListWrap--inset {\n padding: var(--base-size-8, 8px);\n}\n\n/* list dividers */\n\n.ActionListWrap--divided {\n & .ActionListItem-label::before {\n position: absolute;\n top: calc(-1 * var(--primer-actionListContent-paddingBlock));\n display: block;\n width: 100%;\n height: 1px;\n content: '';\n background: var(--color-action-list-item-inline-divider);\n }\n\n /* if descriptionWrap--inline exists, move pseudo divider to wrapper */\n & .ActionListItem-descriptionWrap--inline {\n &::before {\n position: absolute;\n top: calc(-1 * var(--primer-actionListContent-paddingBlock));\n display: block;\n width: 100%;\n height: var(--primer-borderWidth-thin, 1px);\n content: '';\n background: var(--color-action-list-item-inline-divider);\n }\n\n /* unset the default label pseudo */\n & .ActionListItem-label::before {\n content: unset;\n }\n }\n\n /* hide divider if item is active */\n & .ActionListItem--navActive {\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n }\n}\n\n/* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n.ActionListItem:first-of-type .ActionListItem-label::before,\n.ActionList-sectionDivider + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n}\n\n/* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n.ActionListItem:first-of-type .ActionListItem-descriptionWrap--inline::before,\n.ActionList-sectionDivider + .ActionListItem .ActionListItem-descriptionWrap--inline::before {\n visibility: hidden;\n}\n\n/* ActionList::Item */\n\n.ActionListItem {\n position: relative;\n list-style: none;\n background-color: transparent;\n border-radius: var(--primer-borderRadius-medium, 6px);\n\n /* state */\n\n &:hover,\n &:active {\n cursor: pointer;\n }\n\n /* hide dividers */\n @media (hover: hover) {\n &:hover {\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n\n & .ActionListItem-descriptionWrap--inline::before,\n & + .ActionListItem .ActionListItem-descriptionWrap--inline::before {\n visibility: hidden;\n }\n }\n }\n\n /* Make sure that the first visible item isn't a divider */\n &[hidden] + .ActionList-sectionDivider {\n display: none;\n }\n\n /* collapse styles here */\n &.ActionListItem--hasSubItem {\n /* first child */\n & > .ActionListContent {\n z-index: 1;\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &:active {\n background-color: var(--color-action-list-item-default-active-bg);\n }\n }\n }\n\n /* only hover li without list as children */\n &:not(.ActionListItem--hasSubItem),\n /* target contents of first child li if sub-item (li wraps item label + nested ul) */\n &.ActionListItem--hasSubItem > .ActionListContent {\n @media (hover: hover) {\n &:hover {\n cursor: pointer;\n background-color: var(--color-action-list-item-default-hover-bg);\n\n &:not(.ActionListItem--navActive, :focus-visible) {\n /* Support for \"Windows high contrast mode\" */\n outline: solid var(--primer-borderWidth-thin, 1px) transparent;\n outline-offset: calc(-1 * var(--primer-borderWidth-thin, 1px));\n box-shadow: var(--primer-borderInset-thin, 1px) var(--color-action-list-item-default-active-border);\n }\n }\n }\n\n &:active {\n background: var(--color-action-list-item-default-active-bg);\n\n &:not(.ActionListItem--navActive) {\n /* Support for \"Windows high contrast mode\" https:sarahmhigley.com/writing/whcm-quick-tips/ */\n outline: solid var(--primer-borderWidth-thin, 1px) transparent;\n outline-offset: calc(-1 * var(--primer-borderWidth-thin, 1px));\n box-shadow: var(--primer-borderInset-thin, 1px) var(--color-action-list-item-default-active-border);\n }\n\n & .ActionListItem-label::before,\n & + .ActionListItem .ActionListItem-label::before {\n visibility: hidden;\n }\n }\n }\n\n /*\n * checkbox item [aria-checked]\n * listbox [aria-selected]\n */\n &[aria-checked='true'],\n &[aria-selected='true'] {\n /* multiselect checkmark */\n & .ActionListItem-multiSelectCheckmark {\n visibility: visible;\n opacity: 1;\n transition: visibility 0 linear 0, opacity 50ms;\n }\n\n /* singleselect checkmark */\n & .ActionListItem-singleSelectCheckmark {\n visibility: visible;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: checkmarkIn 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;\n }\n }\n\n /* checkbox */\n & .ActionListItem-multiSelectIcon {\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-accent-fg);\n stroke: var(--color-accent-fg);\n stroke-width: var(--primer-borderWidth-thin, 1px);\n }\n\n & .ActionListItem-multiSelectCheckmark {\n fill: var(--color-fg-on-emphasis);\n }\n }\n }\n\n &[aria-checked='false'],\n &[aria-selected='false'] {\n /* multiselect checkmark */\n & .ActionListItem-multiSelectCheckmark {\n visibility: hidden;\n opacity: 0;\n transition: visibility 0 linear 50ms, opacity 50ms;\n }\n\n /* singleselect checkmark */\n & .ActionListItem-singleSelectCheckmark {\n visibility: hidden;\n transition: visibility 0s linear 200ms;\n clip-path: inset(16px 0 0 0);\n\n @media screen and (prefers-reduced-motion: no-preference) {\n animation: checkmarkOut 200ms cubic-bezier(0.11, 0, 0.5, 0) forwards;\n }\n }\n\n /* checkbox */\n & .ActionListItem-multiSelectIcon {\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-canvas-default);\n stroke: var(--color-border-default);\n stroke-width: var(--primer-borderWidth-thin, 1px);\n }\n }\n\n & .ActionListItem-multiSelectIconRect {\n fill: var(--color-canvas-default);\n border: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);\n }\n }\n\n @keyframes checkmarkIn {\n from {\n clip-path: inset(16px 0 0 0);\n }\n\n to {\n clip-path: inset(0 0 0 0);\n }\n }\n\n @keyframes checkmarkOut {\n from {\n clip-path: inset(0 0 0 0);\n }\n\n to {\n clip-path: inset(16px 0 0 0);\n }\n }\n\n /* Autocomplete [aria-selected] items */\n\n &[aria-selected='true'] {\n font-weight: var(--base-text-weight-normal, 400);\n background: var(--color-action-list-item-default-selected-bg);\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n\n &::after {\n @mixin activeIndicatorLine calc(-1 * var(--base-size-4, 4px));\n }\n }\n\n /* active state [aria-current] */\n\n &.ActionListItem--navActive {\n &:not(.ActionListItem--subItem) {\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n }\n\n &:not(.ActionListItem--danger) {\n background: var(--color-action-list-item-default-selected-bg);\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--color-action-list-item-default-hover-bg);\n }\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n }\n\n /* disabled */\n\n &[aria-disabled='true'] {\n & .ActionListContent {\n & .ActionListItem-label,\n & .ActionListItem-description {\n color: var(--color-primer-fg-disabled);\n }\n\n & .ActionListItem-visual {\n fill: var(--color-primer-fg-disabled);\n }\n }\n\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n\n /* variants */\n\n /* danger */\n &.ActionListItem--danger {\n & .ActionListItem-label {\n color: var(--color-danger-fg);\n }\n\n & .ActionListItem-visual {\n color: var(--color-danger-fg);\n }\n\n @media (hover: hover) {\n &:hover {\n background: var(--color-action-list-item-danger-hover-bg);\n\n & .ActionListItem-label,\n & .ActionListItem-visual {\n color: var(--color-action-list-item-danger-hover-text);\n }\n }\n }\n\n & .ActionListContent {\n &:active {\n background: var(--color-action-list-item-danger-active-bg);\n\n & .ActionListItem-label,\n & .ActionListItem-visual {\n color: var(--color-action-list-item-danger-hover-text);\n }\n }\n }\n }\n}\n\n/* button or a href */\n.ActionListContent {\n position: relative;\n display: grid;\n width: 100%;\n padding-block: var(--primer-actionListContent-paddingBlock);\n padding-inline: var(--primer-control-medium-paddingInline-condensed, 8px);\n color: var(--color-fg-default);\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n border-radius: var(--primer-borderRadius-medium, 6px);\n transition: background 33.333ms linear;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n grid-template-rows: min-content;\n grid-template-areas: 'leadingAction leadingVisual label trailingVisual trailingAction';\n grid-template-columns: min-content min-content minmax(0, auto) min-content min-content;\n align-items: start;\n\n /* column-gap persists with empty grid-areas, margin applies only when children exist */\n & > :not(:last-child) {\n margin-right: var(--primer-control-medium-gap, 8px);\n }\n\n /* state */\n\n &:hover {\n text-decoration: none;\n }\n\n /* disabled */\n &[aria-disabled='true'] {\n & .ActionListItem-label,\n & .ActionListItem-description {\n color: var(--color-primer-fg-disabled);\n }\n\n & .ActionListItem-visual {\n fill: var(--color-primer-fg-disabled);\n }\n\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n\n /* collapsible item [aria-expanded] */\n\n /* nesting (single level)\n target items inside expanded subgroups */\n &[aria-expanded] {\n & + .ActionList--subGroup {\n @media screen and (prefers-reduced-motion: no-preference) {\n transition: opacity 160ms cubic-bezier(0.25, 1, 0.5, 1), transform 160ms cubic-bezier(0.25, 1, 0.5, 1);\n }\n\n & .ActionListContent {\n padding-left: var(--base-size-24, 24px);\n }\n }\n\n /* has 16px leading visual */\n &.ActionListContent--visual16 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-32, 32px);\n }\n }\n\n /* has 20px leading visual */\n &.ActionListContent--visual20 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-36, 36px);\n }\n }\n\n /* has 24px leading visual */\n &.ActionListContent--visual24 + .ActionList--subGroup {\n & .ActionListContent {\n padding-left: var(--base-size-40, 40px);\n }\n }\n }\n\n &[aria-expanded='true'] {\n & .ActionListItem-collapseIcon {\n transition: transform 120ms linear;\n transform: scaleY(-1);\n }\n\n & + .ActionList--subGroup {\n height: auto;\n overflow: visible;\n visibility: visible;\n opacity: 1;\n transform: translateY(0);\n }\n\n &.ActionListContent--hasActiveSubItem {\n & > .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n }\n }\n\n &[aria-expanded='false'] {\n & .ActionListItem-collapseIcon {\n transition: transform 120ms linear;\n transform: scaleY(1);\n }\n\n & + .ActionList--subGroup {\n height: 0;\n overflow: hidden;\n visibility: hidden;\n opacity: 0;\n transform: translateY(calc(-1 * var(--base-size-16, 16px)));\n }\n\n /* show active indicator on parent collapse if child is active */\n &.ActionListContent--hasActiveSubItem {\n background: var(--color-action-list-item-default-selected-bg);\n\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n\n &::before,\n & + .ActionListItem::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n }\n\n /* sizes */\n\n &.ActionListContent--sizeLarge {\n --primer-actionListContent-paddingBlock: var(--primer-control-large-paddingBlock, calc((2.5rem - 1.25rem) / 2));\n }\n\n &.ActionListContent--sizeXLarge {\n --primer-actionListContent-paddingBlock: var(--primer-control-xlarge-paddingBlock, calc((3rem - 1.25rem) / 2));\n }\n\n /* On pointer:coarse (mobile), all list items are large */\n @media (pointer: coarse) {\n --primer-actionListContent-paddingBlock: var(--primer-control-large-paddingBlock, calc((2.5rem - 1.25rem) / 2));\n }\n\n &.ActionListContent--blockDescription {\n /* if leading/trailing visual, align with first line of content */\n & .ActionListItem-visual {\n place-self: start;\n }\n }\n}\n\n/* place children on grid */\n\n.ActionListItem-action--leading {\n grid-area: leadingAction;\n}\n\n.ActionListItem-visual--leading {\n grid-area: leadingVisual;\n}\n\n.ActionListItem-visual--trailing {\n grid-area: trailingVisual;\n}\n\n.ActionListItem-action--trailing {\n grid-area: trailingAction;\n}\n\n/* wrapper span\n default block */\n.ActionListItem-descriptionWrap {\n grid-area: label;\n display: flex;\n flex-direction: column;\n gap: var(--base-size-4, 4px);\n\n & .ActionListItem-label {\n font-weight: var(--base-text-weight-semibold, 600);\n }\n}\n\n/* inline */\n.ActionListItem-descriptionWrap--inline {\n position: relative;\n flex-direction: row;\n align-items: baseline;\n gap: var(--base-size-8, 8px);\n}\n\n/* description */\n.ActionListItem-description {\n font-size: var(--primer-text-body-size-small, 12px);\n font-weight: var(--base-text-weight-normal, 400);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n color: var(--color-fg-muted);\n}\n\n/* helper for grid alignment with multi-line content\n span wrapping svg or text */\n.ActionListItem-visual,\n.ActionListItem-action {\n display: flex;\n min-height: var(--primer-control-medium-lineBoxHeight, 20px);\n color: var(--color-fg-muted);\n pointer-events: none;\n fill: var(--color-fg-muted);\n align-items: center;\n}\n\n/* text */\n.ActionListItem-label {\n position: relative;\n font-size: var(--primer-text-body-size-medium, 14px);\n font-weight: var(--base-text-weight-normal, 400);\n line-height: var(--primer-text-body-lineHeight-medium, calc(20 / 14));\n color: var(--color-fg-default);\n grid-area: label;\n}\n\n.ActionListItem-label--truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* nested lists (only supports 1 level currently)\n target ActionListItem--subItem for padding-left to maintain :active :after state */\n\n.ActionListItem--subItem > .ActionListContent > .ActionListItem-label {\n font-size: var(--primer-text-body-size-small, 12px);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n}\n\n/* trailing action icon button */\n\n.ActionListItem--withActions {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.ActionListItem-trailingAction {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n/* show trailing action button on hover */\n\n.ActionListItem--trailingActionHover {\n & .ActionListItem-trailingAction {\n visibility: hidden;\n }\n\n &:hover,\n &:focus-within {\n & .ActionListItem-trailingAction {\n visibility: visible;\n }\n }\n}\n\n/* ActionList::Divider */\n\n.ActionList-sectionDivider {\n /* with children */\n &:not(:empty) {\n display: flex;\n padding-inline: var(--primer-actionListContent-paddingBlock);\n padding-block: var(--base-size-8, 8px);\n font-size: var(--primer-text-body-size-small, 12px);\n line-height: var(--primer-text-body-lineHeight-small, calc(20 / 12));\n font-weight: var(--base-text-weight-semibold, 600);\n color: var(--color-fg-muted);\n flex-direction: column;\n }\n\n /* no children */\n &:empty {\n display: block;\n height: var(--primer-borderWidth-thin, 1px);\n padding: 0;\n margin-block-start: calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));\n margin-block-end: var(--base-size-8, 8px);\n margin-inline: calc(-1 * var(--base-size-8, 8px));\n list-style: none;\n background: var(--color-action-list-item-inline-divider);\n border: 0;\n }\n\n & .ActionList-sectionDivider-title {\n font-size: var(--primer-text-body-size-small, 12px);\n font-weight: var(--base-text-weight-semibold, 600);\n color: var(--color-fg-muted);\n }\n}\n\n.ActionList-sectionDivider--filled {\n margin-block-start: calc(var(--base-size-8, 8px) - var(--primer-borderWidth-thin, 1px));\n margin-block-end: var(--base-size-8, 8px);\n margin-inline: calc(-1 * var(--base-size-8, 8px));\n background: var(--color-canvas-subtle);\n border-top: solid var(--primer-borderWidth-thin, 1px) var(--color-action-list-item-inline-divider);\n border-bottom: solid var(--primer-borderWidth-thin, 1px) var(--color-action-list-item-inline-divider);\n\n /* if no children, treat as divider */\n &:empty {\n height: var(--base-size-8, 8px);\n box-sizing: border-box;\n }\n\n &:first-child {\n margin-block-start: 0;\n }\n}\n","/* active indicator line for navlist items */\n@define-mixin activeIndicatorLine $padding-left: calc(-1 * var(--base-size-8, 8px)) {\n position: absolute;\n top: calc(50% - 12px);\n left: $padding-left;\n width: var(--base-size-4, 4px);\n height: var(--base-size-24, 24px);\n content: '';\n background: var(--color-accent-fg);\n border-radius: var(--primer-borderRadius-medium, 6px);\n}\n"]}
|
@@ -336,7 +336,8 @@
|
|
336
336
|
&:hover {
|
337
337
|
background: var(--color-action-list-item-danger-hover-bg);
|
338
338
|
|
339
|
-
& .ActionListItem-label
|
339
|
+
& .ActionListItem-label,
|
340
|
+
& .ActionListItem-visual {
|
340
341
|
color: var(--color-action-list-item-danger-hover-text);
|
341
342
|
}
|
342
343
|
}
|
@@ -345,6 +346,11 @@
|
|
345
346
|
& .ActionListContent {
|
346
347
|
&:active {
|
347
348
|
background: var(--color-action-list-item-danger-active-bg);
|
349
|
+
|
350
|
+
& .ActionListItem-label,
|
351
|
+
& .ActionListItem-visual {
|
352
|
+
color: var(--color-action-list-item-danger-hover-text);
|
353
|
+
}
|
348
354
|
}
|
349
355
|
}
|
350
356
|
}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
|
2
2
|
<div class="Overlay-headerContentWrap">
|
3
3
|
<div class="Overlay-titleWrap">
|
4
|
-
<h1 class="Overlay-title <% if @visually_hide_title || content.present? %>sr-only<% end %>"
|
4
|
+
<h1 class="Overlay-title <% if @visually_hide_title || content.present? %>sr-only<% end %>" id="<%= @id %>-title">
|
5
|
+
<%= @title %>
|
6
|
+
</h1>
|
5
7
|
<% if content.present? %>
|
6
8
|
<%= content %>
|
7
9
|
<% elsif @subtitle.present? %>
|
@@ -126,32 +126,37 @@ module Primer
|
|
126
126
|
)
|
127
127
|
@system_arguments = deny_tag_argument(**system_arguments)
|
128
128
|
|
129
|
+
@id = id.to_s
|
130
|
+
@title = title
|
131
|
+
@subtitle = subtitle
|
132
|
+
@size = size
|
133
|
+
@position = position
|
134
|
+
@position_narrow = position_narrow
|
135
|
+
@visually_hide_title = visually_hide_title
|
136
|
+
|
129
137
|
@system_arguments[:tag] = "modal-dialog"
|
130
138
|
@system_arguments[:role] = "dialog"
|
131
|
-
@system_arguments[:id] = id
|
139
|
+
@system_arguments[:id] = @id
|
132
140
|
@system_arguments[:aria] = { modal: true }
|
141
|
+
@system_arguments[:aria] = merge_aria(
|
142
|
+
@system_arguments, {
|
143
|
+
aria: {
|
144
|
+
disabled: true,
|
145
|
+
describedby: "#{@id}-title #{@id}-description"
|
146
|
+
}
|
147
|
+
}
|
148
|
+
)
|
133
149
|
@system_arguments[:classes] = class_names(
|
134
150
|
"Overlay",
|
135
151
|
"Overlay-whenNarrow",
|
136
|
-
SIZE_MAPPINGS[fetch_or_fallback(SIZE_OPTIONS, size, DEFAULT_SIZE)],
|
152
|
+
SIZE_MAPPINGS[fetch_or_fallback(SIZE_OPTIONS, @size, DEFAULT_SIZE)],
|
137
153
|
"Overlay--motion-scaleFade",
|
138
154
|
system_arguments[:classes]
|
139
155
|
)
|
140
156
|
@backdrop_classes = class_names(
|
141
|
-
POSITION_MAPPINGS[fetch_or_fallback(POSITION_OPTIONS, position, DEFAULT_POSITION)],
|
142
|
-
POSITION_NARROW_MAPPINGS[fetch_or_fallback(POSITION_NARROW_MAPPINGS, position_narrow, DEFAULT_POSITION_NARROW)]
|
157
|
+
POSITION_MAPPINGS[fetch_or_fallback(POSITION_OPTIONS, @position, DEFAULT_POSITION)],
|
158
|
+
POSITION_NARROW_MAPPINGS[fetch_or_fallback(POSITION_NARROW_MAPPINGS, @position_narrow, DEFAULT_POSITION_NARROW)]
|
143
159
|
)
|
144
|
-
|
145
|
-
@id = id.to_s
|
146
|
-
@title = title
|
147
|
-
@position = position
|
148
|
-
@position_narrow = position_narrow
|
149
|
-
@visually_hide_title = visually_hide_title
|
150
|
-
|
151
|
-
@subtitle = subtitle
|
152
|
-
|
153
|
-
@system_arguments[:aria] ||= {}
|
154
|
-
@system_arguments[:aria][:describedby] ||= "#{@id}-description"
|
155
160
|
end
|
156
161
|
|
157
162
|
def before_render
|
@@ -27,7 +27,7 @@ module Primer
|
|
27
27
|
|
28
28
|
# @example Default
|
29
29
|
#
|
30
|
-
# <%= render(Primer::Beta::IconButton.new(icon: :search, "aria-label": "Search", id: "search-button"
|
30
|
+
# <%= render(Primer::Beta::IconButton.new(icon: :search, "aria-label": "Search", id: "search-button")) %>
|
31
31
|
#
|
32
32
|
# @example Schemes
|
33
33
|
#
|
@@ -25,6 +25,8 @@ module Primer
|
|
25
25
|
include Audited::Dsl
|
26
26
|
|
27
27
|
INVALID_ARIA_LABEL_TAGS = [:div, :span, :p].freeze
|
28
|
+
PLURAL_ARIA_ATTRIBUTES = %i[describedby labelledby].freeze
|
29
|
+
PLURAL_DATA_ATTRIBUTES = %i[target targets].freeze
|
28
30
|
|
29
31
|
def self.deprecated?
|
30
32
|
status == :deprecated
|
@@ -64,6 +66,12 @@ module Primer
|
|
64
66
|
# Eg. merge_aria({ "aria-disabled": "true" }, { aria: { invalid: "true" } })
|
65
67
|
# => { disabled: "true", invalid: "true" }
|
66
68
|
#
|
69
|
+
# Certain aria attributes can contain multiple values separated by spaces. merge_aria
|
70
|
+
# will combine these plural attributes into a composite string.
|
71
|
+
#
|
72
|
+
# Eg. merge_aria({ "aria-labelledby": "foo" }, { aria: { labelledby: "bar" } })
|
73
|
+
# => { labelledby: "foo bar" }
|
74
|
+
#
|
67
75
|
# It's designed to be used to normalize and merge aria information from system_arguments
|
68
76
|
# hashes. Consider using this pattern in component initializers:
|
69
77
|
#
|
@@ -72,17 +80,65 @@ module Primer
|
|
72
80
|
# { aria: { labelled_by: id } }
|
73
81
|
# )
|
74
82
|
def merge_aria(*hashes)
|
83
|
+
merge_prefixed_attribute_hashes(
|
84
|
+
*hashes, prefix: :aria, plural_keys: PLURAL_ARIA_ATTRIBUTES
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Merges hashes that contain "data-*" keys and nested data: hashes. Removes keys from
|
89
|
+
# each hash and returns them in the new hash.
|
90
|
+
#
|
91
|
+
# Eg. merge_data({ "data-foo": "true" }, { data: { bar: "true" } })
|
92
|
+
# => { foo: "true", bar: "true" }
|
93
|
+
#
|
94
|
+
# Certain data attributes can contain multiple values separated by spaces. merge_data
|
95
|
+
# will combine these plural attributes into a composite string.
|
96
|
+
#
|
97
|
+
# Eg. merge_data({ "data-target": "foo" }, { data: { target: "bar" } })
|
98
|
+
# => { target: "foo bar" }
|
99
|
+
#
|
100
|
+
# It's designed to be used to normalize and merge data information from system_arguments
|
101
|
+
# hashes. Consider using this pattern in component initializers:
|
102
|
+
#
|
103
|
+
# @system_arguments[:data] = merge_aria(
|
104
|
+
# @system_arguments,
|
105
|
+
# { data: { foo: "bar" } }
|
106
|
+
# )
|
107
|
+
def merge_data(*hashes)
|
108
|
+
merge_prefixed_attribute_hashes(
|
109
|
+
*hashes, prefix: :data, plural_keys: PLURAL_DATA_ATTRIBUTES
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
def merge_prefixed_attribute_hashes(*hashes, prefix:, plural_keys:)
|
75
114
|
{}.tap do |result|
|
76
115
|
hashes.each do |hash|
|
77
116
|
next unless hash
|
78
117
|
|
79
|
-
|
118
|
+
prefix_hash = hash.delete(prefix) || {}
|
119
|
+
|
120
|
+
prefix_hash.each_pair do |key, val|
|
121
|
+
result[key] =
|
122
|
+
if plural_keys.include?(key)
|
123
|
+
[*(result[key] || "").split, val].join(" ").strip
|
124
|
+
else
|
125
|
+
val
|
126
|
+
end
|
127
|
+
end
|
80
128
|
|
81
129
|
hash.delete_if do |key, val|
|
82
130
|
key_s = key.to_s
|
83
131
|
|
84
|
-
if key.start_with?("
|
85
|
-
|
132
|
+
if key.start_with?("#{prefix}-")
|
133
|
+
bare_key = key_s.sub("#{prefix}-", "").to_sym
|
134
|
+
|
135
|
+
result[bare_key] =
|
136
|
+
if plural_keys.include?(bare_key)
|
137
|
+
[*(result[bare_key] || "").split, val].join(" ").strip
|
138
|
+
else
|
139
|
+
val
|
140
|
+
end
|
141
|
+
|
86
142
|
true
|
87
143
|
else
|
88
144
|
false
|
data/lib/primer/deprecations.yml
CHANGED
@@ -26,6 +26,11 @@ deprecations:
|
|
26
26
|
autocorrect: true
|
27
27
|
replacement: "Primer::Beta::IconButton"
|
28
28
|
|
29
|
+
- component: "Primer::LayoutComponent"
|
30
|
+
autocorrect: false
|
31
|
+
replacement: "Primer::Alpha::Layout"
|
32
|
+
guide: "https://primer.style/view-components/guides/primer_layout_component"
|
33
|
+
|
29
34
|
- component: "Primer::Navigation::TabComponent"
|
30
35
|
autocorrect: true
|
31
36
|
replacement: "Primer::Alpha::Navigation::Tab"
|
@@ -32,7 +32,7 @@ module Primer
|
|
32
32
|
|
33
33
|
super(**system_arguments)
|
34
34
|
|
35
|
-
add_input_data(:target, "primer-text-field.inputElement")
|
35
|
+
add_input_data(:target, "primer-text-field.inputElement #{system_arguments.dig(:data, :target) || ''}")
|
36
36
|
add_input_classes("FormControl-inset") if inset?
|
37
37
|
add_input_classes("FormControl-monospace") if monospace?
|
38
38
|
end
|
@@ -167,6 +167,13 @@ module Primer
|
|
167
167
|
end
|
168
168
|
#
|
169
169
|
# @!endgroup
|
170
|
+
|
171
|
+
# @label With data target attribute
|
172
|
+
def with_data_target
|
173
|
+
render(Primer::Alpha::TextField.new(name: "my-text-field", label: "My text field", data: { target: "custom-component.inputElement" }))
|
174
|
+
end
|
175
|
+
#
|
176
|
+
# @!endgroup
|
170
177
|
end
|
171
178
|
end
|
172
179
|
end
|
data/static/arguments.json
CHANGED
@@ -1335,7 +1335,7 @@
|
|
1335
1335
|
},
|
1336
1336
|
{
|
1337
1337
|
"component": "Layout",
|
1338
|
-
"status": "
|
1338
|
+
"status": "deprecated",
|
1339
1339
|
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/layout_component.rb",
|
1340
1340
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/layout/default/",
|
1341
1341
|
"parameters": [
|
@@ -2394,8 +2394,8 @@
|
|
2394
2394
|
{
|
2395
2395
|
"name": "label",
|
2396
2396
|
"type": "String",
|
2397
|
-
"default": "
|
2398
|
-
"description": "Item label."
|
2397
|
+
"default": "`nil`",
|
2398
|
+
"description": "Item label. If no label is provided, content is used."
|
2399
2399
|
},
|
2400
2400
|
{
|
2401
2401
|
"name": "label_classes",
|
data/static/previews.json
CHANGED
@@ -1116,22 +1116,6 @@
|
|
1116
1116
|
}
|
1117
1117
|
]
|
1118
1118
|
},
|
1119
|
-
{
|
1120
|
-
"name": "layout",
|
1121
|
-
"lookup_path": "primer/layout",
|
1122
|
-
"examples": [
|
1123
|
-
{
|
1124
|
-
"inspect_path": "/lookbook/inspect/primer/layout/playground",
|
1125
|
-
"preview_path": "/lookbook/preview/primer/layout/playground",
|
1126
|
-
"name": "playground"
|
1127
|
-
},
|
1128
|
-
{
|
1129
|
-
"inspect_path": "/lookbook/inspect/primer/layout/default",
|
1130
|
-
"preview_path": "/lookbook/preview/primer/layout/default",
|
1131
|
-
"name": "default"
|
1132
|
-
}
|
1133
|
-
]
|
1134
|
-
},
|
1135
1119
|
{
|
1136
1120
|
"name": "link",
|
1137
1121
|
"lookup_path": "primer/beta/link",
|
@@ -1642,6 +1626,11 @@
|
|
1642
1626
|
"preview_path": "/lookbook/preview/primer/alpha/text_field/default",
|
1643
1627
|
"name": "default"
|
1644
1628
|
},
|
1629
|
+
{
|
1630
|
+
"inspect_path": "/lookbook/inspect/primer/alpha/text_field/with_data_target",
|
1631
|
+
"preview_path": "/lookbook/preview/primer/alpha/text_field/with_data_target",
|
1632
|
+
"name": "with_data_target"
|
1633
|
+
},
|
1645
1634
|
{
|
1646
1635
|
"inspect_path": "/lookbook/inspect/primer/alpha/text_field/auto_check",
|
1647
1636
|
"preview_path": "/lookbook/preview/primer/alpha/text_field/auto_check",
|
data/static/statuses.json
CHANGED
@@ -92,7 +92,7 @@
|
|
92
92
|
"Primer::ConditionalWrapper": "alpha",
|
93
93
|
"Primer::Content": "stable",
|
94
94
|
"Primer::IconButton": "deprecated",
|
95
|
-
"Primer::LayoutComponent": "
|
95
|
+
"Primer::LayoutComponent": "deprecated",
|
96
96
|
"Primer::Navigation::TabComponent": "deprecated",
|
97
97
|
"Primer::Tooltip": "deprecated",
|
98
98
|
"Primer::Truncate": "deprecated"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: primer_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -1034,7 +1034,6 @@ files:
|
|
1034
1034
|
- previews/primer/forms/forms_preview/single_text_field_form.html.erb
|
1035
1035
|
- previews/primer/forms/forms_preview/submit_button_form.html.erb
|
1036
1036
|
- previews/primer/forms/forms_preview/text_field_and_checkbox_form.html.erb
|
1037
|
-
- previews/primer/layout_component_preview.rb
|
1038
1037
|
- previews/primer/url_helpers.rb
|
1039
1038
|
- static/arguments.json
|
1040
1039
|
- static/assets/view-components.svg
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Primer
|
4
|
-
# @label LayoutComponent
|
5
|
-
class LayoutComponentPreview < ViewComponent::Preview
|
6
|
-
# @label Playground
|
7
|
-
#
|
8
|
-
# @param responsive [Boolean]
|
9
|
-
# @param side [Symbol] select [left, right]
|
10
|
-
# @param sidebar_col [Integer] select [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
11
|
-
def playground(responsive: false, side: :right, sidebar_col: 3)
|
12
|
-
render(Primer::LayoutComponent.new(responsive: responsive, side: side, sidebar_col: sidebar_col)) do |component|
|
13
|
-
component.with_main { "Main" }
|
14
|
-
component.with_sidebar { "Sidebar" }
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# @label Default
|
19
|
-
#
|
20
|
-
# @param responsive [Boolean]
|
21
|
-
# @param side [Symbol] select [left, right]
|
22
|
-
# @param sidebar_col [Integer] select [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
23
|
-
def default(responsive: false, side: :right, sidebar_col: 3)
|
24
|
-
render(Primer::LayoutComponent.new(responsive: responsive, side: side, sidebar_col: sidebar_col)) do |component|
|
25
|
-
component.with_main { "Main" }
|
26
|
-
component.with_sidebar { "Sidebar" }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|