Skip to content

Commit 6aeccf0

Browse files
committed
Improve Options Overlay
Introduces an `Accordion` to make the overlay panel for the advanced options easier to work with.
1 parent 1220615 commit 6aeccf0

3 files changed

Lines changed: 253 additions & 168 deletions

File tree

media/options-widget.css

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,51 @@
9898
color: var(--vscode-descriptionForeground);
9999
}
100100

101-
.advanced-options-content {
102-
color: var(--vscode-settings-headerForeground);
101+
.advanced-options-panel .p-overlaypanel-content {
102+
padding: 0.8rem;
103+
}
104+
105+
.advanced-options-panel .advanced-options-header {
106+
font-size: 11px;
107+
text-transform: uppercase;
108+
line-height: 22px;
109+
margin:0;
110+
font-weight: normal;
111+
}
112+
113+
.advanced-options-accordion a:focus {
114+
outline-color: var(--vscode-focusBorder);
115+
}
116+
117+
.advanced-options-accordion .p-accordion-tab {
118+
width: 180px;
103119
}
104120

105-
.advanced-options-content h2 {
106-
font-size: 110%;
107-
margin: 1.2rem 0 0 0;
121+
.advanced-options-accordion .p-accordion-header {
122+
border-top: 1px solid var(--vscode-widget-border);
123+
color: var(--vscode-sideBarSectionHeader-foreground);
124+
}
125+
126+
.advanced-options-accordion .p-accordion-header-link {
127+
overflow: hidden;
128+
text-overflow: ellipsis;
129+
color: var(--vscode-sideBarSectionHeader-foreground);
130+
}
131+
132+
.advanced-options-accordion .p-accordion-header-text {
133+
font-size: 11px;
134+
text-transform: uppercase;
135+
font-weight: bold;
136+
line-height: 22px;
137+
}
138+
139+
.advanced-options-accordion .p-accordion-toggle-icon {
140+
margin-right: 3px;
141+
}
142+
143+
.advanced-options-content {
144+
color: var(--vscode-settings-headerForeground);
145+
padding-bottom: 0.5rem;
108146
}
109147

110148
.advanced-options-toggle {
@@ -113,6 +151,10 @@
113151
margin-top: 1.1rem
114152
}
115153

154+
.p-accordion-content .advanced-options-content {
155+
padding-left: 0.5rem;
156+
}
157+
116158
.advanced-options-content {
117159
width: 180px;
118160
text-align: left;
@@ -143,6 +185,7 @@
143185
overflow-y: scroll;
144186
max-height: 100%;
145187
margin-top: 0px;
188+
width: 210px;
146189
}
147190
.advanced-options-panel::-webkit-scrollbar-track {
148191
background-color: var(--vscode-dropdown-listBackground);

src/webview/components/multi-select.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ export interface SingleSelectItemProps {
2525

2626
interface MultiSelectProps {
2727
items: SingleSelectItemProps[];
28-
label: string;
28+
label?: string;
2929
id?: string;
30+
classNames?: string;
3031
onSelectionChanged: (labelSelected: string, newSelectionState: boolean) => unknown;
3132
}
3233

33-
const MultiSelectBar: React.FC<MultiSelectProps> = ({ items, onSelectionChanged, id }) => {
34+
export const MultiSelectBar: React.FC<MultiSelectProps> = ({ items, onSelectionChanged, id }) => {
3435
const changeHandler: ((e: CheckboxChangeEvent) => unknown) = React.useCallback(e => {
3536
const target = e.target as HTMLInputElement;
3637
if (target) {
@@ -54,10 +55,3 @@ const MultiSelectBar: React.FC<MultiSelectProps> = ({ items, onSelectionChanged,
5455
</div>
5556
);
5657
};
57-
58-
export const MultiSelectWithLabel: React.FC<MultiSelectProps> = ({ id, label, items, onSelectionChanged }) => (
59-
<div className='flex flex-column'>
60-
<h2 className='multi-select-label mb-2 mt-0'>{label}</h2>
61-
<MultiSelectBar id={id} items={items} onSelectionChanged={onSelectionChanged} label={label} />
62-
</div>
63-
);

0 commit comments

Comments
 (0)