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 | ||||