x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<select-panel data-interaction-subject="dc1ce5cdb41c3816acb3f14dd4c6bc4e" data-select-variant="multiple" data-fetch-strategy="remote" data-open-on-load="false" id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325" anchor-align="start" anchor-side="outside-bottom" data-view-component="true"> <dialog-helper> <button id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-button" aria-controls="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-dialog" aria-haspopup="dialog" aria-expanded="false" type="button" data-view-component="true" class="Button--secondary Button--medium Button"> <span class="Button-content"> <span class="Button-label">Sci-fi equipment</span> </span> </button> <dialog id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-dialog" aria-labelledby="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-dialog-title" data-target="select-panel.dialog" style="position: absolute;" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-small-portrait"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-dialog-title"> Menu </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> <div data-view-component="true" class="Overlay-headerFilter"> <div data-target="select-panel.bannerErrorElement" hidden> <x-banner data-dismiss-scheme="none" data-view-component="true"> <div data-view-component="true" class="Banner flash Banner--error flash-error mb-2"> <div class="Banner-visual"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-stop"> <path d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </div> <div data-view-component="true" class="Banner-message"> <p class="Banner-title" data-target="x-banner.titleText"> <h2 class="f6 text-normal">Sorry, something went wrong.</h2> </p> </div> </div> </x-banner> </div> <remote-input aria-owns="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-body" src="/view-components/rails-app/select_panel_items?select_variant=multiple&selected_items=Phaser&experimental=1" data-target="select-panel.remoteInput" data-view-component="true"> <primer-text-field class="FormControl width-full FormControl--fullWidth"> <label for="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-filter" class="sr-only FormControl-label position-absolute sr-only FormControl-label"> Filter </label> <div class="FormControl-input-wrap FormControl-input-wrap--leadingVisual"> <span class="FormControl-input-leadingVisualWrap"> <svg data-target="primer-text-field.leadingVisual" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> <span hidden="hidden" data-target="primer-text-field.leadingSpinner" data-view-component="true"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> <span class="sr-only">Loading</span> </span> </span> <input id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-filter" type="search" autofocus="autofocus" data-target="primer-text-field.inputElement select-panel.filterInputTextField" aria-describedby="validation-1101c9fe-d89f-4e28-beea-53727cb970d1" class="FormControl-input FormControl-medium" name="filter" /> </div> <div class="FormControl-inlineValidation" id="validation-1101c9fe-d89f-4e28-beea-53727cb970d1" hidden="hidden"> <span class="FormControl-inlineValidation--visual" data-target="primer-text-field.validationSuccessIcon" hidden><svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-check-circle-fill"> <path d="M6 0a6 6 0 1 1 0 12A6 6 0 0 1 6 0Zm-.705 8.737L9.63 4.403 8.392 3.166 5.295 6.263l-1.7-1.702L2.356 5.8l2.938 2.938Z"></path> </svg></span> <span class=" FormControl-inlineValidation--visual" data-target="primer-text-field.validationErrorIcon"><svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg></span> <span></span> </div> </primer-text-field> </remote-input></div> </div> <div data-view-component="true" class="Overlay-body mt-0 p-0"> <focus-group direction="vertical" mnemonics retain> <div class="sr-only" aria-live="polite" aria-atomic="true" data-target="select-panel.ariaLiveContainer"></div> <div data-fetch-strategy="remote" data-target="select-panel.list" data-view-component="true"> <div id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-body"> <div id="select-panel-c8219162-6587-4ed3-8a15-b5d9cfdac325-list" aria-disabled="true" aria-busy="true" data-view-component="true" class="SelectPanel-loadingPanel mt-2 mb-2 d-flex flex-items-start flex-justify-center text-center"> <div data-hide-on-error class="pt-2"> <span data-target="select-panel.bodySpinner" data-view-component="true"> <svg aria-label="Loading content..." style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" role="img" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" fill="none" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg></span> </div> <div data-show-on-error hidden data-target="select-panel.fragmentErrorElement"> <div class="pt-2 pb-2"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert color-fg-danger"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <h2 class="f5 mt-2">Sorry, something went wrong.</h2> </div> </div> </div> </div> <div data-target="select-panel.noResults" class="pt-2 color-border-muted text-center d-flex flex-items-start flex-justify-center SelectPanel-emptyPanel" hidden> <h2 class="v-align-middle m-3 f5">No results found</h2> </div> </div> </focus-group> </div> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> I'm a footer! </div> </dialog> </dialog-helper></select-panel><script> function ready(fn) { if (document.readyState !== 'loading') { fn() } else { document.addEventListener('DOMContentLoaded', fn) } } ready(() => { const subject = document.querySelector("[data-interaction-subject='dc1ce5cdb41c3816acb3f14dd4c6bc4e']") if (!subject) return const fetchStrategy = subject.getAttribute('data-fetch-strategy') if (fetchStrategy === 'local') { subject.setAttribute('data-ready', 'true') return } subject.addEventListener('loadend', (event) => { event.target.setAttribute('data-ready', 'true') }) })</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<% subject_id = SecureRandom.hex %><%= render(Primer::Alpha::SelectPanel.new( data: { interaction_subject: subject_id }, src: select_panel_items_path( select_variant: :multiple, selected_items: selected_items, ), select_variant: :multiple, fetch_strategy: :remote, open_on_load: open_on_load)) do |panel| %> <% panel.with_show_button { "Sci-fi equipment" } %> <% panel.with_footer(show_divider: true) do %> I'm a footer! <% end %><% end %><%= render partial: "primer/alpha/select_panel_preview/interaction_subject_js", locals: { subject_id: subject_id } %>
No notes provided.
Param | Description | Input |
---|---|---|
— |
|
|
— |
|
app/components/primer/alpha/select_panel.css
1
2
3
4
5
6
7
.SelectPanel-loadingPanel { min-height: min(var(--overlay-height) - 10rem, 100vh - 2rem);}.SelectPanel-emptyPanel { min-height: min(var(--overlay-height) - 10rem, 100vh - 2rem);}