Earnings Per Share - Reconciliation of Basic and Diluted Weighted Average Shares Outstanding (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
3 Months Ended 9 Months Ended
Sep. 27, 2019
Jun. 28, 2019
Mar. 29, 2019
Sep. 28, 2018
Jun. 29, 2018
Mar. 30, 2018
Sep. 27, 2019
Sep. 28, 2018
Earnings Per Share [Abstract]                
Net income $ 9,382 $ 7,617 $ 7,091 $ 9,866 $ 9,195 $ 6,111 $ 24,090 $ 25,173
Weighted average common shares outstanding (in shares) 11,506     11,248     11,420 11,210
Add: Dilutive impact of stock options (in shares) 37     68     45 75
Add: Dilutive impact of restricted stock units (in shares) 135     90     101 95
Diluted weighted average common shares outstanding (in shares) 11,678     11,406     11,566 11,380
Earnings per share                
Basic (in dollars per share) $ 0.82     $ 0.88     $ 2.11 $ 2.25
Diluted (in dollars per share) $ 0.80     $ 0.86     $ 2.08 $ 2.21