XML 47 R33.htm IDEA: XBRL DOCUMENT v3.20.4
Note 10 - Stockholders' Equity (Tables)
12 Months Ended
Dec. 31, 2020
Notes Tables  
Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]
  

2020

  

2019

  

2018

 

Dividend yield

  1.02%  0.96%  1.20%

Volatility

  47.3%  42.8%  41.3%

Risk-free interest rate

  0.3%  1.7%  2.7%

Weighted average expected option term (in years)

  4.9   4.7   4.8 

Weighted average fair value per share of options granted

 $13.24  $12.51  $8.28 
Share-based Payment Arrangement, Option, Activity [Table Text Block]
      

Weighted

  

Weighted Average

  

Aggregate

 
  

Number

  

Average

  

Remaining

  

Intrinsic

 
  

of Shares

  

Exercise Price

  

Contractual Term

  

Value

 
          

(in years)

     

Balance outstanding at December 31, 2019 (1)

  1,047,094  $23.19  4.31  $13,366,595 
                

Granted

  222,110  $36.67        

Exercised (2)

  (331,958) $17.99     $5,413,197 

Canceled / Expired

  (5,406) $27.49        

Balance outstanding at December 31, 2020 (3)

  931,840  $28.22  4.49  $11,442,240 
                

Vested and exercisable at December 31, 2020 (4)

  274,411  $23.08  3.50  $4,780,656 

Expected to vest at December 31, 2020

  657,429  $30.37  4.93     

Total

  931,840            
Share-based Payment Arrangement, Restricted Stock Unit, Activity [Table Text Block]
      

Weighted

 
      

Average

 
      

Grant Date

 
  

Shares

  

Fair Value

 
         

Balance outstanding at December 31, 2019

  188,681  $26.14 
         

Granted

  46,146  $36.86 

Vested (1)

  (50,669) $22.76 

Canceled

  (37,143) $27.88 
         

Balance outstanding at December 31, 2020

  147,015  $30.24 
Accelerated Share Repurchases [Table Text Block]
  

2020

  

2019

 
         

Shares of common stock repurchased

  16,537   20,524 

Average per share repurchase price

 $34.47  $33.28 

Aggregage purchase price (in thousands)

 $570  $683 
Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]
  

2020

  

2019

  

2018

 
      

(in thousands)

     

Stock option awards

 $1,938  $1,580  $1,457 

Restricted stock units

  1,084   1,062   892 
             

Total stock-based compensation

 $3,022  $2,642  $2,349 
  

2020

  

2019

  

2018

 
      

(in thousands)

     

Cost of sales

 $333  $310  $272 

Sales and marketing

  516   544   529 

General and administrative

  1,883   1,509   1,293 

Research and development

  290   279   255 
             

Total stock-based compensation

 $3,022  $2,642  $2,349 
Schedule of Dividends Payable [Table Text Block]

Record Date

 

Payment Date

 

Per Share Amount

  

Dividend Payment

 
        

(in thousands)

 

Fiscal Year 2020

          

March 3, 2020

 

March 19, 2020

 $0.095  $1,917 

May 20, 2020

 

June 4, 2020

 $0.095  $1,917 

August 27, 2020

 

September 10, 2020

 $0.095  $1,925 

November 19, 2020

 

December 3, 2020

 $0.095  $1,936 
           

Fiscal Year 2019

          

March 22, 2019

 

April 5, 2019

 $0.085  $1,672 

May 22, 2019

 

June 6, 2019

 $0.085  $1,672 

August 21, 2019

 

September 5, 2019

 $0.085  $1,691 

November 20, 2019

 

December 5, 2019

 $0.085  $1,701