Skip to content

Commit 24e67df

Browse files
authoredOct 10, 2024··
feat(ui): support enable word wrap in live and desired manifest panel (#20299)
Signed-off-by: linghaoSu <linghao.su@daocloud.io>
1 parent 951f749 commit 24e67df

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed
 

‎ui/src/app/applications/components/application-node-info/application-node-info.tsx

+38-1
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,25 @@ export const ApplicationNodeInfo = (props: {
233233
}
234234
/>
235235
<label htmlFor='hideManagedFields'>Hide Managed Fields</label>
236+
<Checkbox
237+
id='enableWordWrap'
238+
checked={!!pref.appDetails.enableWordWrap}
239+
onChange={() =>
240+
services.viewPreferences.updatePreferences({
241+
appDetails: {
242+
...pref.appDetails,
243+
enableWordWrap: !pref.appDetails.enableWordWrap
244+
}
245+
})
246+
}
247+
/>
248+
<label htmlFor='enableWordWrap'>Enable Word Wrap</label>
236249
</div>
237250
<YamlEditor
238251
input={live}
239252
hideModeButtons={!live}
240253
vScrollbar={live}
254+
enableWordWrap={pref.appDetails.enableWordWrap}
241255
onSave={(patch, patchType) =>
242256
services.applications.patchResource(
243257
props.application.metadata.name,
@@ -280,7 +294,30 @@ export const ApplicationNodeInfo = (props: {
280294
tabs.push({
281295
key: 'desiredManifest',
282296
title: 'Desired Manifest',
283-
content: <YamlEditor input={props.controlled.state.targetState} hideModeButtons={true} />
297+
content: (
298+
<DataLoader load={() => services.viewPreferences.getPreferences()}>
299+
{pref => (
300+
<React.Fragment>
301+
<div className='application-node-info__checkboxes'>
302+
<Checkbox
303+
id='enableWordWrap'
304+
checked={!!pref.appDetails.enableWordWrap}
305+
onChange={() =>
306+
services.viewPreferences.updatePreferences({
307+
appDetails: {
308+
...pref.appDetails,
309+
enableWordWrap: !pref.appDetails.enableWordWrap
310+
}
311+
})
312+
}
313+
/>
314+
<label htmlFor='enableWordWrap'>Enable Word Wrap</label>
315+
</div>
316+
<YamlEditor enableWordWrap={pref.appDetails.enableWordWrap} input={props.controlled.state.targetState} hideModeButtons={true} />
317+
</React.Fragment>
318+
)}
319+
</DataLoader>
320+
)
284321
});
285322
}
286323

‎ui/src/app/shared/components/yaml-editor/yaml-editor.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export class YamlEditor<T> extends React.Component<
1515
hideModeButtons?: boolean;
1616
initialEditMode?: boolean;
1717
vScrollbar?: boolean;
18+
enableWordWrap?: boolean;
1819
onSave?: (patch: string, patchType: string) => Promise<any>;
1920
onCancel?: () => any;
2021
minHeight?: number;
@@ -98,7 +99,11 @@ export class YamlEditor<T> extends React.Component<
9899
vScrollBar={props.vScrollbar}
99100
editor={{
100101
input: {text: yaml, language: 'yaml'},
101-
options: {readOnly: !this.state.editing, minimap: {enabled: false}},
102+
options: {
103+
readOnly: !this.state.editing,
104+
minimap: {enabled: false},
105+
wordWrap: props.enableWordWrap ? 'on' : 'off'
106+
},
102107
getApi: api => {
103108
this.model = api.getModel() as monacoEditor.editor.ITextModel;
104109
}

‎ui/src/app/shared/services/view-preferences-service.ts

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export interface AppDetailsPreferences {
2020
inlineDiff: boolean;
2121
compactDiff: boolean;
2222
hideManagedFields?: boolean;
23+
enableWordWrap?: boolean;
2324
orphanedResources: boolean;
2425
podView: PodViewPreferences;
2526
darkMode: boolean;

0 commit comments

Comments
 (0)
Please sign in to comment.