diff --git a/src/Plugin/Field/FieldType/OfficeHoursItemList.php b/src/Plugin/Field/FieldType/OfficeHoursItemList.php
index fb8585d..ce046a0 100644
--- a/src/Plugin/Field/FieldType/OfficeHoursItemList.php
+++ b/src/Plugin/Field/FieldType/OfficeHoursItemList.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\office_hours\Plugin\Field\FieldType;
 
+use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Field\FieldItemList;
 use Drupal\office_hours\OfficeHoursDateHelper;
 
@@ -145,6 +146,11 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn
 
     // Reorder weekdays to match the first day of the week, using formatter settings;
     $office_hours = OfficeHoursDateHelper::weekDaysOrdered($office_hours, $settings['office_hours_first_day']);
+
+    if ($settings['show_closed'] == 'next') {
+      $office_hours = $this->handleClosedDates($office_hours);
+    }
+
     // Compress all slots of the same day into one item.
     if ($settings['compress']) {
       $office_hours = $this->compressSlots($office_hours);
@@ -176,6 +182,60 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn
     }
   }
 
+  /**
+   * @param array $office_hours
+   * @return array
+   */
+  protected function handleClosedDates($office_hours) {
+    $time = \Drupal::time()->getRequestTime();
+    $today = (int) idate('w', $time);
+    $closed_dates = $this->getClosedDatesFromField();
+    foreach ($office_hours as $key => $item) {
+      $day = (int) $item['startday'];
+      if($day == 0) {
+        $day = 7;
+      }
+      if($day >= $today) {
+        $week = 'this';
+      }
+      else {
+        $week = 'next';
+      }
+      $datetime = new DrupalDateTime($day - 1 . ' day ' . $week . ' week');
+      $date = $datetime->format('Y-m-d');
+      if (in_array($date, $closed_dates)) {
+        $office_hours[$key]['closed'] = TRUE;
+        $office_hours[$key]['next'] = FALSE;
+        $office_hours[$key]['slots'] = [];
+
+        if($day == 7) {
+          foreach ($office_hours as $next_key => $next_item) {
+            if(!$next_item['closed']) {
+              $office_hours[$next_key]['next'] = TRUE;
+              break;
+            }
+          }
+        }
+        else {
+          $office_hours[$key + 1]['next'] = TRUE;
+        }
+      }
+    }
+    return $office_hours;
+  }
+
+  /**
+   * @return array
+   */
+  protected function getClosedDatesFromField() {
+    $field_list = $this->parent->get('field_closed_dates');
+    $closed_dates = [];
+    foreach ($field_list as $item) {
+      $closed_dates[] = $item->value;
+    }
+    return $closed_dates;
+  }
+
   protected function compressSlots(array $office_hours) {
     foreach ($office_hours as &$info) {
       if (is_array($info['slots']) && !empty($info['slots'])) {
