@@ -47,8 +47,8 @@ export default function AxisLinearComp<TDatum>(axis: Axis<TDatum>) {
47
47
return anyAxis . outerScale . domain ( )
48
48
}
49
49
50
- const resolvedHeight = isOuter ? height : gridDimensions . gridHeight
51
- const resolvedWidth = isOuter ? width : gridDimensions . gridWidth
50
+ const resolvedHeight = isOuter ? height : gridDimensions . height
51
+ const resolvedWidth = isOuter ? width : gridDimensions . width
52
52
53
53
const [ lineFrom , lineTo ] =
54
54
axis . position === 'left'
@@ -71,14 +71,50 @@ export default function AxisLinearComp<TDatum>(axis: Axis<TDatum>) {
71
71
{ x : rangeEnd , y : resolvedHeight } ,
72
72
]
73
73
74
+ const ticks = getTicks ( ) . map ( tick => {
75
+ const px = getTickPx ( scale , tick )
76
+
77
+ const [ from , to , gridTo ] =
78
+ axis . position === 'left'
79
+ ? [
80
+ { x : 0 , y : px } ,
81
+ { x : - 8 , y : px } ,
82
+ { x : resolvedWidth , y : px } ,
83
+ ]
84
+ : axis . position === 'right'
85
+ ? [
86
+ { x : resolvedWidth , y : px } ,
87
+ { x : resolvedWidth + 8 , y : px } ,
88
+ { x : 0 , y : px } ,
89
+ ]
90
+ : axis . position === 'top'
91
+ ? [
92
+ { x : px , y : 0 } ,
93
+ { x : px , y : - 8 } ,
94
+ { x : px , y : resolvedHeight } ,
95
+ ]
96
+ : [
97
+ { x : px , y : resolvedHeight } ,
98
+ { x : px , y : resolvedHeight + 8 } ,
99
+ { x : px , y : 0 } ,
100
+ ]
101
+
102
+ return {
103
+ value : tick ,
104
+ from,
105
+ to,
106
+ gridTo,
107
+ }
108
+ } )
109
+
74
110
return (
75
111
< g
76
112
key = { `Axis-Group ${ isOuter ? 'outer' : 'inner' } ` }
77
113
className = { `Axis-Group ${ isOuter ? 'outer' : 'inner' } ` }
78
114
style = { {
79
115
transform : isOuter
80
116
? undefined
81
- : translate ( gridDimensions . gridX , gridDimensions . gridY ) ,
117
+ : translate ( gridDimensions . left , gridDimensions . top ) ,
82
118
} }
83
119
>
84
120
< g
@@ -95,105 +131,92 @@ export default function AxisLinearComp<TDatum>(axis: Axis<TDatum>) {
95
131
} ) ,
96
132
} }
97
133
>
98
- < line
99
- className = "domain"
100
- x1 = { lineFrom . x }
101
- y1 = { lineFrom . y }
102
- x2 = { lineTo . x }
103
- y2 = { lineTo . y }
104
- stroke = { dark ? 'rgba(255,255,255, .2)' : 'rgba(0,0,0, .2)' }
105
- />
106
- { getTicks ( ) . map ( ( tick , i ) => {
107
- const px = getTickPx ( scale , tick )
108
-
109
- const [ tickFrom , tickTo , gridTo ] =
110
- axis . position === 'left'
111
- ? [
112
- { x : 0 , y : px } ,
113
- { x : - 8 , y : px } ,
114
- { x : resolvedWidth , y : px } ,
115
- ]
116
- : axis . position === 'right'
117
- ? [
118
- { x : resolvedWidth , y : px } ,
119
- { x : resolvedWidth + 8 , y : px } ,
120
- { x : 0 , y : px } ,
121
- ]
122
- : axis . position === 'top'
123
- ? [
124
- { x : px , y : 0 } ,
125
- { x : px , y : - 8 } ,
126
- { x : px , y : resolvedHeight } ,
127
- ]
128
- : [
129
- { x : px , y : resolvedHeight } ,
130
- { x : px , y : resolvedHeight + 8 } ,
131
- { x : px , y : 0 } ,
132
- ]
133
-
134
- let { x : tickLabelX , y : tickLabelY } = tickTo
135
-
136
- if ( axis . position === 'top' ) {
137
- tickLabelY -= 5
138
- } else if ( axis . position === 'bottom' ) {
139
- tickLabelY += 5
140
- } else if ( axis . position === 'left' ) {
141
- tickLabelX -= 5
142
- } else if ( axis . position === 'right' ) {
143
- tickLabelX += 5
144
- }
145
-
146
- return (
147
- < g key = { `vx-tick-${ tick } -${ i } ` } className = { 'tick' } >
148
- { ( axis . showGrid ?? true ) && ! isOuter ? (
149
- < line
150
- x1 = { tickFrom . x }
151
- y1 = { tickFrom . y }
152
- x2 = { gridTo . x }
153
- y2 = { gridTo . y }
154
- stroke = {
155
- dark ? 'rgba(255,255,255, .05)' : 'rgba(0,0,0, .05)'
156
- }
157
- />
158
- ) : null }
159
- { ! isOuter ? (
160
- < line
161
- x1 = { tickFrom . x }
162
- y1 = { tickFrom . y }
163
- x2 = { tickTo . x }
164
- y2 = { tickTo . y }
165
- stroke = { dark ? 'rgba(255,255,255, .2)' : 'rgba(0,0,0, .2)' }
166
- />
167
- ) : null }
168
- < text
169
- className = "tickLabel"
170
- style = { {
171
- fontSize : 10 ,
172
- fill : dark ? 'rgba(255,255,255, .7)' : 'rgba(0,0,0, .7)' ,
173
- dominantBaseline : isRotated
174
- ? 'central'
175
- : axis . position === 'bottom'
176
- ? 'hanging'
177
- : axis . position === 'top'
178
- ? 'alphabetic'
179
- : 'central' ,
180
- textAnchor : isRotated
181
- ? 'end'
182
- : axis . position === 'right'
183
- ? 'start'
184
- : axis . position === 'left'
185
- ? 'end'
186
- : 'middle' ,
187
- } }
188
- transform = { `translate(${ tickLabelX } , ${ tickLabelY } ) rotate(${
189
- isRotated ? ( axis . position === 'top' ? 60 : - 60 ) : 0
190
- } )`}
191
- >
192
- { ( axis as AxisLinear < any > ) . formatters . scale ( tick as number ) }
193
- </ text >
194
- </ g >
195
- )
196
- } ) }
134
+ < g className = "domainAndTicks" >
135
+ < line
136
+ className = "domain"
137
+ x1 = { lineFrom . x }
138
+ y1 = { lineFrom . y }
139
+ x2 = { lineTo . x }
140
+ y2 = { lineTo . y }
141
+ stroke = { dark ? 'rgba(255,255,255, .2)' : 'rgba(0,0,0, .2)' }
142
+ />
143
+ { ticks . map ( ( tick , i ) => {
144
+ let { x : tickLabelX , y : tickLabelY } = tick . to
145
+
146
+ if ( axis . position === 'top' ) {
147
+ tickLabelY -= 5
148
+ } else if ( axis . position === 'bottom' ) {
149
+ tickLabelY += 5
150
+ } else if ( axis . position === 'left' ) {
151
+ tickLabelX -= 5
152
+ } else if ( axis . position === 'right' ) {
153
+ tickLabelX += 5
154
+ }
155
+
156
+ return (
157
+ < g key = { `vx-tick-${ tick } -${ i } ` } className = { 'tick' } >
158
+ { ! isOuter ? (
159
+ < line
160
+ x1 = { tick . from . x }
161
+ y1 = { tick . from . y }
162
+ x2 = { tick . to . x }
163
+ y2 = { tick . to . y }
164
+ stroke = {
165
+ dark ? 'rgba(255,255,255, .2)' : 'rgba(0,0,0, .2)'
166
+ }
167
+ />
168
+ ) : null }
169
+ < text
170
+ className = "tickLabel"
171
+ style = { {
172
+ fontSize : 10 ,
173
+ fill : dark ? 'rgba(255,255,255, .7)' : 'rgba(0,0,0, .7)' ,
174
+ dominantBaseline : isRotated
175
+ ? 'central'
176
+ : axis . position === 'bottom'
177
+ ? 'hanging'
178
+ : axis . position === 'top'
179
+ ? 'alphabetic'
180
+ : 'central' ,
181
+ textAnchor : isRotated
182
+ ? 'end'
183
+ : axis . position === 'right'
184
+ ? 'start'
185
+ : axis . position === 'left'
186
+ ? 'end'
187
+ : 'middle' ,
188
+ } }
189
+ transform = { `translate(${ tickLabelX } , ${ tickLabelY } ) rotate(${
190
+ isRotated ? ( axis . position === 'top' ? 60 : - 60 ) : 0
191
+ } )`}
192
+ >
193
+ { ( axis as AxisLinear < any > ) . formatters . scale (
194
+ tick . value as number
195
+ ) }
196
+ </ text >
197
+ </ g >
198
+ )
199
+ } ) }
200
+ </ g >
201
+ < g className = "grid" >
202
+ { ticks . map ( ( tick , i ) => {
203
+ return (
204
+ < g key = { `vx-tick-${ tick } -${ i } ` } className = { 'tick' } >
205
+ { ( axis . showGrid ?? true ) && ! isOuter ? (
206
+ < line
207
+ x1 = { tick . from . x }
208
+ y1 = { tick . from . y }
209
+ x2 = { tick . gridTo . x }
210
+ y2 = { tick . gridTo . y }
211
+ stroke = {
212
+ dark ? 'rgba(255,255,255, .05)' : 'rgba(0,0,0, .05)'
213
+ }
214
+ />
215
+ ) : null }
216
+ </ g >
217
+ )
218
+ } ) }
219
+ </ g >
197
220
</ g >
198
221
</ g >
199
222
)
0 commit comments