Controlling Neopixels with a Button

Here is your problem...

      do {
      colorWipe2(strip.Color(255, 255, 255), 50); // Display all Neopixels as white
      clearStrip();
      } while (val == HIGH && time >= 10000);

In the loop there is no code to change val or time, so it loops forever. Suggest you add

val = digitalRead(BUTTON);

to the loop. You probably don't need to check time.