File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,6 +9,12 @@ interface RenderProps {
99 center : [ number , number ] ;
1010 color ?: string ;
1111 className ?: string ;
12+
13+ /**
14+ * Id of the active tick.
15+ *
16+ * Can be `-1` if there is no active tick in this state.
17+ */
1218 active : number ;
1319 activeColor ?: string ;
1420 activeClassName ?: string ;
@@ -81,7 +87,7 @@ export interface RenderCustomProps extends RenderProps {
8187 tickWidth : number ;
8288 tickHeight : number ;
8389 steps : number ;
84- percentage : number ;
90+ percentage : number | null ;
8591}
8692
8793function renderCustom ( {
@@ -92,7 +98,7 @@ function renderCustom({
9298 tickWidth : number ;
9399 tickHeight : number ;
94100 steps : number ;
95- percentage : number ;
101+ percentage : number | null ;
96102} & RenderProps ) {
97103 return ( _ : unknown , i : number ) => fn ( { ...props , i } ) ;
98104}
@@ -139,11 +145,9 @@ export function Scale(props: Props) {
139145 const length = steps + ( angleRange === 360 ? 0 : 1 ) ;
140146 const translateX = center [ 0 ] - tickWidth / 2 ;
141147 const translateY = center [ 1 ] - radius ;
142- if ( percentage === null ) {
143- return < > </ > ;
144- }
145148
146- const active = Math . round ( ( length - 1 ) * percentage ) ;
149+ const active =
150+ percentage === null ? - 1 : Math . round ( ( length - 1 ) * percentage ) ;
147151
148152 function getRenderFn ( ) {
149153 if ( steps === undefined ) {
@@ -181,9 +185,6 @@ export function Scale(props: Props) {
181185 } ) ;
182186 }
183187 if ( fn ) {
184- if ( percentage === null ) {
185- return < > </ > ;
186- }
187188 return renderCustom ( {
188189 fn,
189190 tickWidth,
Original file line number Diff line number Diff line change @@ -111,4 +111,27 @@ describe('Scale', () => {
111111 ) ;
112112 expect ( container . children [ 0 ] . children [ 0 ] . children [ 0 ] ) . toMatchSnapshot ( ) ;
113113 } ) ;
114+ it ( 'renders when value is null' , ( ) => {
115+ const { container } = render (
116+ < Knob
117+ min = { 0 }
118+ max = { 100 }
119+ value = { null }
120+ size = { 100 }
121+ angleOffset = { 90 }
122+ angleRange = { 200 }
123+ >
124+ < Scale
125+ type = "circle"
126+ steps = { 3 }
127+ radius = { 40 }
128+ tickWidth = { 2 }
129+ tickHeight = { 10 }
130+ className = "someClassName"
131+ activeClassName = "someActiveClassName"
132+ />
133+ </ Knob > ,
134+ ) ;
135+ expect ( container . children [ 0 ] . children [ 0 ] . children [ 0 ] ) . toMatchSnapshot ( ) ;
136+ } ) ;
114137} ) ;
Original file line number Diff line number Diff line change @@ -241,3 +241,44 @@ exports[`Scale > renders correct with custom render function for ticks 1`] = `
241241 />
242242</g >
243243` ;
244+
245+ exports [` Scale > renders when value is null 1` ] = `
246+ <g >
247+ <circle
248+ class = " someClassName"
249+ r = " 2"
250+ stroke = " none"
251+ transform = "
252+ rotate(90 50 50)
253+ translate(49 10)
254+ "
255+ />
256+ <circle
257+ class = " someClassName"
258+ r = " 2"
259+ stroke = " none"
260+ transform = "
261+ rotate(156.66666666666669 50 50)
262+ translate(49 10)
263+ "
264+ />
265+ <circle
266+ class = " someClassName"
267+ r = " 2"
268+ stroke = " none"
269+ transform = "
270+ rotate(223.33333333333334 50 50)
271+ translate(49 10)
272+ "
273+ />
274+ <circle
275+ class = " someClassName"
276+ r = " 2"
277+ stroke = " none"
278+ transform = "
279+ rotate(290 50 50)
280+ translate(49 10)
281+ "
282+ />
283+ </g >
284+ ` ;
You can’t perform that action at this time.
0 commit comments