Skip to content

Commit f89781e

Browse files
authored
fix: code editor resize and cursor alignment (#582)
1 parent 4b1eb61 commit f89781e

File tree

5 files changed

+193
-10
lines changed

5 files changed

+193
-10
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"@storybook/addon-essentials": "7.6.5",
8080
"@storybook/addon-interactions": "7.6.5",
8181
"@storybook/addon-links": "7.6.5",
82+
"@storybook/addons": "7.6.17",
8283
"@storybook/builder-vite": "7.6.5",
8384
"@storybook/node-logger": "7.6.5",
8485
"@storybook/react": "7.6.5",

src/components/CodeEditor.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ const defaultOptions = {
3535
verticalScrollbarSize: 5,
3636
},
3737
scrollBeyondLastLine: false,
38+
// Fixes cursor alignment issues when using custom font
39+
fontLigatures: '',
3840
}
3941

4042
export default function CodeEditor({
@@ -87,16 +89,25 @@ export default function CodeEditor({
8789
height={height}
8890
{...props}
8991
>
90-
<Editor
91-
language={language}
92-
value={value}
93-
onChange={(v) => {
94-
setCurrent(v)
95-
if (onChange) onChange(v)
92+
<div
93+
css={{
94+
display: 'flex',
95+
flexDirection: 'column',
96+
flexGrow: 1,
97+
overflow: 'hidden',
9698
}}
97-
options={merge(defaultOptions, options)}
98-
theme={theme.mode === 'light' ? 'plural-light' : 'plural-dark'}
99-
/>
99+
>
100+
<Editor
101+
language={language}
102+
value={value}
103+
onChange={(v) => {
104+
setCurrent(v)
105+
if (onChange) onChange(v)
106+
}}
107+
options={merge(defaultOptions, options)}
108+
theme={theme.mode === 'light' ? 'plural-light' : 'plural-dark'}
109+
/>
110+
</div>
100111
{save && (
101112
<Flex
102113
align="center"

src/stories/CodeEditor.stories.tsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,49 @@ function Template({ onFillLevel, ...args }: any) {
7272
)
7373
}
7474

75+
function StretchedTemplate({ onFillLevel, ...args }: any) {
76+
return (
77+
<div
78+
css={{
79+
position: 'absolute',
80+
height: '100vh',
81+
padding: 32,
82+
top: 0,
83+
}}
84+
>
85+
<WrapWithIf
86+
condition={onFillLevel > 0}
87+
wrapper={
88+
<Card
89+
fillLevel={onFillLevel}
90+
padding="medium"
91+
/>
92+
}
93+
>
94+
<Flex
95+
direction="column"
96+
gap="medium"
97+
height="100%"
98+
>
99+
<CodeEditor
100+
language="hcl"
101+
value={tfCode}
102+
width="1100px"
103+
height="100%"
104+
save
105+
saveLabel="Commit"
106+
{...args}
107+
/>
108+
</Flex>
109+
</WrapWithIf>
110+
</div>
111+
)
112+
}
113+
75114
export const Default = Template.bind({})
76115
Default.args = {
77116
options: { lineNumbers: true },
78117
}
118+
119+
export const Stretched = StretchedTemplate.bind({})
120+
Stretched.args = {}

tsconfig.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
"noImplicitAny": true,
1111
"sourceMap": true,
1212
"outDir": "dist",
13-
"rootDir": "src",
13+
"rootDirs": [
14+
"src",
15+
".storybook"
16+
],
1417
"moduleResolution": "node",
1518
"resolveJsonModule": true
1619
},

yarn.lock

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2907,6 +2907,7 @@ __metadata:
29072907
"@storybook/addon-essentials": 7.6.5
29082908
"@storybook/addon-interactions": 7.6.5
29092909
"@storybook/addon-links": 7.6.5
2910+
"@storybook/addons": 7.6.17
29102911
"@storybook/builder-vite": 7.6.5
29112912
"@storybook/node-logger": 7.6.5
29122913
"@storybook/react": 7.6.5
@@ -5421,6 +5422,17 @@ __metadata:
54215422
languageName: node
54225423
linkType: hard
54235424

5425+
"@storybook/addons@npm:7.6.17":
5426+
version: 7.6.17
5427+
resolution: "@storybook/addons@npm:7.6.17"
5428+
dependencies:
5429+
"@storybook/manager-api": 7.6.17
5430+
"@storybook/preview-api": 7.6.17
5431+
"@storybook/types": 7.6.17
5432+
checksum: d93befc3af9fc6de12ef2088d5d78dfcba40253bec9fb3294a4f597ae5d1149156646f45e2dae354ac8c4723e2f9bbb555e6c82936d6deee7e7dffbdc4d54289
5433+
languageName: node
5434+
linkType: hard
5435+
54245436
"@storybook/blocks@npm:7.6.5":
54255437
version: 7.6.5
54265438
resolution: "@storybook/blocks@npm:7.6.5"
@@ -5515,6 +5527,20 @@ __metadata:
55155527
languageName: node
55165528
linkType: hard
55175529

5530+
"@storybook/channels@npm:7.6.17":
5531+
version: 7.6.17
5532+
resolution: "@storybook/channels@npm:7.6.17"
5533+
dependencies:
5534+
"@storybook/client-logger": 7.6.17
5535+
"@storybook/core-events": 7.6.17
5536+
"@storybook/global": ^5.0.0
5537+
qs: ^6.10.0
5538+
telejson: ^7.2.0
5539+
tiny-invariant: ^1.3.1
5540+
checksum: b1c1a9ce0bcca16659eb8372394a2f0965ebae26e2add44c7db5f869a00141ab59763917761c7fa1feb81bd1244225e8bcd6f8144f7432ade16e2c868b300926
5541+
languageName: node
5542+
linkType: hard
5543+
55185544
"@storybook/channels@npm:7.6.5":
55195545
version: 7.6.5
55205546
resolution: "@storybook/channels@npm:7.6.5"
@@ -5581,6 +5607,15 @@ __metadata:
55815607
languageName: node
55825608
linkType: hard
55835609

5610+
"@storybook/client-logger@npm:7.6.17":
5611+
version: 7.6.17
5612+
resolution: "@storybook/client-logger@npm:7.6.17"
5613+
dependencies:
5614+
"@storybook/global": ^5.0.0
5615+
checksum: 216feb7dcc5778d9b39c9deba1eeda0f7253cd0fe2515a7e99a49d2abd6ca6d697a70162c8b34b92ab14531910dd8671200725fd016c09d769893023031c6080
5616+
languageName: node
5617+
linkType: hard
5618+
55845619
"@storybook/client-logger@npm:7.6.5":
55855620
version: 7.6.5
55865621
resolution: "@storybook/client-logger@npm:7.6.5"
@@ -5674,6 +5709,15 @@ __metadata:
56745709
languageName: node
56755710
linkType: hard
56765711

5712+
"@storybook/core-events@npm:7.6.17":
5713+
version: 7.6.17
5714+
resolution: "@storybook/core-events@npm:7.6.17"
5715+
dependencies:
5716+
ts-dedent: ^2.0.0
5717+
checksum: 7463d8349211f23e9a25e08d85b04b9f6b24ee8747c775a8ec41ac4ff208e06f5183487d0f92af1e820f9c5044393a28e2065e5183a43b758f65deaab3ac3b61
5718+
languageName: node
5719+
linkType: hard
5720+
56775721
"@storybook/core-events@npm:7.6.5":
56785722
version: 7.6.5
56795723
resolution: "@storybook/core-events@npm:7.6.5"
@@ -5806,6 +5850,28 @@ __metadata:
58065850
languageName: node
58075851
linkType: hard
58085852

5853+
"@storybook/manager-api@npm:7.6.17":
5854+
version: 7.6.17
5855+
resolution: "@storybook/manager-api@npm:7.6.17"
5856+
dependencies:
5857+
"@storybook/channels": 7.6.17
5858+
"@storybook/client-logger": 7.6.17
5859+
"@storybook/core-events": 7.6.17
5860+
"@storybook/csf": ^0.1.2
5861+
"@storybook/global": ^5.0.0
5862+
"@storybook/router": 7.6.17
5863+
"@storybook/theming": 7.6.17
5864+
"@storybook/types": 7.6.17
5865+
dequal: ^2.0.2
5866+
lodash: ^4.17.21
5867+
memoizerific: ^1.11.3
5868+
store2: ^2.14.2
5869+
telejson: ^7.2.0
5870+
ts-dedent: ^2.0.0
5871+
checksum: 54c0b7a703fe928c93cbe4230b2d7e30317c064f4c34339bcf41c1d638892c47b33dc6b7fd5aaf4c559a4170e9eb442b49cb6144f2f9085bc4a999b6cc1b2028
5872+
languageName: node
5873+
linkType: hard
5874+
58095875
"@storybook/manager-api@npm:7.6.5":
58105876
version: 7.6.5
58115877
resolution: "@storybook/manager-api@npm:7.6.5"
@@ -5859,6 +5925,28 @@ __metadata:
58595925
languageName: node
58605926
linkType: hard
58615927

5928+
"@storybook/preview-api@npm:7.6.17":
5929+
version: 7.6.17
5930+
resolution: "@storybook/preview-api@npm:7.6.17"
5931+
dependencies:
5932+
"@storybook/channels": 7.6.17
5933+
"@storybook/client-logger": 7.6.17
5934+
"@storybook/core-events": 7.6.17
5935+
"@storybook/csf": ^0.1.2
5936+
"@storybook/global": ^5.0.0
5937+
"@storybook/types": 7.6.17
5938+
"@types/qs": ^6.9.5
5939+
dequal: ^2.0.2
5940+
lodash: ^4.17.21
5941+
memoizerific: ^1.11.3
5942+
qs: ^6.10.0
5943+
synchronous-promise: ^2.0.15
5944+
ts-dedent: ^2.0.0
5945+
util-deprecate: ^1.0.2
5946+
checksum: f448058f6f8b9d5a88083454d8296df79effc2f6500f4cb3406d18914ca2f972623a77fafc7f7c35bba077fe8ea4fa73965007bd130484dfa6be95a7c7a0e863
5947+
languageName: node
5948+
linkType: hard
5949+
58625950
"@storybook/preview-api@npm:7.6.5":
58635951
version: 7.6.5
58645952
resolution: "@storybook/preview-api@npm:7.6.5"
@@ -5953,6 +6041,17 @@ __metadata:
59536041
languageName: node
59546042
linkType: hard
59556043

6044+
"@storybook/router@npm:7.6.17":
6045+
version: 7.6.17
6046+
resolution: "@storybook/router@npm:7.6.17"
6047+
dependencies:
6048+
"@storybook/client-logger": 7.6.17
6049+
memoizerific: ^1.11.3
6050+
qs: ^6.10.0
6051+
checksum: a4baaaaf5c04d6d2c9d3e3675c3c00356fc1e48089fc398c1a65922a53607ddcd278cc555caa30e96dfa8296262fc9618dc20c06825dea86884ce02df30420c4
6052+
languageName: node
6053+
linkType: hard
6054+
59566055
"@storybook/router@npm:7.6.5":
59576056
version: 7.6.5
59586057
resolution: "@storybook/router@npm:7.6.5"
@@ -5991,6 +6090,21 @@ __metadata:
59916090
languageName: node
59926091
linkType: hard
59936092

6093+
"@storybook/theming@npm:7.6.17":
6094+
version: 7.6.17
6095+
resolution: "@storybook/theming@npm:7.6.17"
6096+
dependencies:
6097+
"@emotion/use-insertion-effect-with-fallbacks": ^1.0.0
6098+
"@storybook/client-logger": 7.6.17
6099+
"@storybook/global": ^5.0.0
6100+
memoizerific: ^1.11.3
6101+
peerDependencies:
6102+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
6103+
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
6104+
checksum: 0b0e910678166ee720db3c257558b7f787e883032e23d25e0cf35ce00e8eea390b4cc5471e6b247e02cddc8263de780ec7ba7ddee6b64a3c36ae54087128668b
6105+
languageName: node
6106+
linkType: hard
6107+
59946108
"@storybook/theming@npm:7.6.5":
59956109
version: 7.6.5
59966110
resolution: "@storybook/theming@npm:7.6.5"
@@ -6006,6 +6120,18 @@ __metadata:
60066120
languageName: node
60076121
linkType: hard
60086122

6123+
"@storybook/types@npm:7.6.17":
6124+
version: 7.6.17
6125+
resolution: "@storybook/types@npm:7.6.17"
6126+
dependencies:
6127+
"@storybook/channels": 7.6.17
6128+
"@types/babel__core": ^7.0.0
6129+
"@types/express": ^4.7.0
6130+
file-system-cache: 2.3.0
6131+
checksum: 7ba71e3a8a15078a098cec35d78f37293fb01dba9d37dd9d040584531100c34811ba80b72b7b192d1e41f197ffb1bc20818ce72e9f348602f104d972def6ac51
6132+
languageName: node
6133+
linkType: hard
6134+
60096135
"@storybook/types@npm:7.6.5":
60106136
version: 7.6.5
60116137
resolution: "@storybook/types@npm:7.6.5"

0 commit comments

Comments
 (0)