diff --git a/composer.json b/composer.json
index 997c43fd1c24a04b0cde6f0267b0fb8adf83186a..4e8e903e3843883784db8f8476a7291575a00fb5 100644
--- a/composer.json
+++ b/composer.json
@@ -107,7 +107,7 @@
         "drupal/core-recommended": "9.5.11",
         "drupal/crop": "2.3",
         "drupal/ctools": "3.14",
-        "drupal/decorative_image_widget": "1.0",
+        "drupal/decorative_image_widget": "^1.0",
         "drupal/dropzonejs": "2.8",
         "drupal/editor_advanced_link": "2.2.4",
         "drupal/embed": "1.6",
@@ -278,9 +278,6 @@
             "drupal/addtocalendar": {
                 "UTC Time Adjustment": "patches/utc-time-adjustment.patch"
             },
-            "drupal/decorative_image_widget": {
-                "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch"
-            },
             "drupal/entity_embed": {
                 "3077225": "https://www.drupal.org/files/issues/2019-12-11/3077225-10.reduce-invalid-config-logs.patch"
             },
diff --git a/composer.lock b/composer.lock
index 13686b244a677140bb0a2a2a6cb4d3722d059466..91f05b24059ebc4b8eed0d21f3dfc3e574a5c7cd 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "104ad135cd2c808452366057a8c99003",
+    "content-hash": "fa23752cf2e7b6427ecb75714646b0b3",
     "packages": [
         {
             "name": "asm89/stack-cors",
@@ -2749,17 +2749,17 @@
         },
         {
             "name": "drupal/decorative_image_widget",
-            "version": "1.0.0",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/decorative_image_widget.git",
-                "reference": "1.0.0"
+                "reference": "1.0.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip",
-                "reference": "1.0.0",
-                "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7"
+                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip",
+                "reference": "1.0.1",
+                "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47"
             },
             "require": {
                 "drupal/core": "^9.2 || ^10"
@@ -2767,8 +2767,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.0",
-                    "datestamp": "1691175827",
+                    "version": "1.0.1",
+                    "datestamp": "1696726436",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 4e8c17303389996c657721ba42e3144456ef07c2..4e25253531ff228d7cbfd47abfefe1dbe2de2ec5 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2867,18 +2867,18 @@
         },
         {
             "name": "drupal/decorative_image_widget",
-            "version": "1.0.0",
-            "version_normalized": "1.0.0.0",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/decorative_image_widget.git",
-                "reference": "1.0.0"
+                "reference": "1.0.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip",
-                "reference": "1.0.0",
-                "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7"
+                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip",
+                "reference": "1.0.1",
+                "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47"
             },
             "require": {
                 "drupal/core": "^9.2 || ^10"
@@ -2886,15 +2886,12 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.0",
-                    "datestamp": "1691175827",
+                    "version": "1.0.1",
+                    "datestamp": "1696726436",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
                     }
-                },
-                "patches_applied": {
-                    "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch"
                 }
             },
             "installation-source": "dist",
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index d744a9272466ba1a335998fd773535837bd120fb..12dacd85266d508b6b47269e01503ecab37d8259 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
         'name' => 'osu-asc-webservices/d8-upstream',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
-        'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab',
+        'reference' => 'c3c2c4898587953ab94a0ac39e0658dbaecc8751',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -563,9 +563,9 @@
             'dev_requirement' => false,
         ),
         'drupal/decorative_image_widget' => array(
-            'pretty_version' => '1.0.0',
-            'version' => '1.0.0.0',
-            'reference' => '1.0.0',
+            'pretty_version' => '1.0.1',
+            'version' => '1.0.1.0',
+            'reference' => '1.0.1',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/decorative_image_widget',
             'aliases' => array(),
@@ -1450,7 +1450,7 @@
         'osu-asc-webservices/d8-upstream' => array(
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
-            'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab',
+            'reference' => 'c3c2c4898587953ab94a0ac39e0658dbaecc8751',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
diff --git a/web/modules/decorative_image_widget/PATCHES.txt b/web/modules/decorative_image_widget/PATCHES.txt
deleted file mode 100644
index 96c127dca0a71456cfa52c86cd7513bc1959ad8d..0000000000000000000000000000000000000000
--- a/web/modules/decorative_image_widget/PATCHES.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches)
-Patches applied to this directory:
-
-3383305
-Source: https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch
-
-
diff --git a/web/modules/decorative_image_widget/decorative_image_widget.info.yml b/web/modules/decorative_image_widget/decorative_image_widget.info.yml
index db12e16c72a0510b9b6bf8edad3445c0312990e5..d9b241136b4bd3e80400f057854309548f3e8d36 100644
--- a/web/modules/decorative_image_widget/decorative_image_widget.info.yml
+++ b/web/modules/decorative_image_widget/decorative_image_widget.info.yml
@@ -6,7 +6,7 @@ package: Media
 dependencies:
   - drupal:image
 
-# Information added by Drupal.org packaging script on 2023-08-04
-version: '1.0.0'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '1.0.1'
 project: 'decorative_image_widget'
-datestamp: 1691175829
+datestamp: 1696726438
diff --git a/web/modules/decorative_image_widget/decorative_image_widget.module b/web/modules/decorative_image_widget/decorative_image_widget.module
index ad8a87739e65c7b09c8906e12a3a69dc1fe7a657..5a700449edc2c5e337c0fe311d78a8af51663c94 100644
--- a/web/modules/decorative_image_widget/decorative_image_widget.module
+++ b/web/modules/decorative_image_widget/decorative_image_widget.module
@@ -36,15 +36,17 @@ function decorative_image_widget_field_widget_settings_summary_alter(array &$sum
  * Implements hook_field_widget_form_alter().
  */
 function decorative_image_widget_field_widget_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+  // Note this hook is only executed for Drupal 9.
   if ($context['widget'] instanceof ImageWidget) {
     DecorativeImageWidgetHelper::alter($element, $context['widget']);
   }
 }
 
 /**
- * Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter().
+ * Implements hook_field_widget_single_element_form_alter().
  */
-function decorative_image_widget_field_widget_single_element_image_image_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+function decorative_image_widget_field_widget_single_element_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+  // Note this hook is only executed for Drupal 10+.
   if ($context['widget'] instanceof ImageWidget) {
     DecorativeImageWidgetHelper::alter($element, $context['widget']);
   }
diff --git a/web/modules/decorative_image_widget/js/decorative-image-widget.js b/web/modules/decorative_image_widget/js/decorative-image-widget.js
index 8ea643323797c3ecb060a9f963831ad724476ab9..81b271557f94b3d38995796d3f74e46f14345cfc 100644
--- a/web/modules/decorative_image_widget/js/decorative-image-widget.js
+++ b/web/modules/decorative_image_widget/js/decorative-image-widget.js
@@ -20,14 +20,30 @@
 
       function enableOrDisableAltTextField($altTextField, enable) {
         if (!enable) {
+          // Edit input field attributes.
           $altTextField
-            .prop('disabled', true)
-            .parent().addClass('form-disabled');
+            .prop("disabled", true)
+            .prop("required", false)
+            .removeClass("required");
+
+          // Edit parent element classes.
+          $altTextField.parent().addClass("form-disabled");
+
+          // Edit label element.
+          $altTextField.parent().find("label").removeClass("form-required");
         }
         else {
+          // Edit input field attributes.
           $altTextField
-            .prop('disabled', false)
-            .parent().removeClass('form-disabled');
+            .prop("disabled", false)
+            .prop("required", true)
+            .addClass("required");
+
+          // Edit parent element classes.
+          $altTextField.parent().removeClass("form-disabled");
+
+          // Edit label element.
+          $altTextField.parent().find("label").addClass("form-required");
         }
       }
     },
diff --git a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
index df0139c2caeea335b545090f8febed2160a1d69c..12c078fca206ba9e6a18cd0a5e224ef6ceca8b65 100644
--- a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
+++ b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
@@ -170,15 +170,20 @@ public static function validateAltText(array $element, FormStateInterface $formS
       return;
     }
 
-    // If the alt text is empty, then throw a validation error if the
-    // decorative checkbox was left unchecked.
-    if (empty($formState->getValue($element['#parents']))) {
-      $parents = $element['#parents'];
-      array_pop($parents);
-      $parents[] = 'decorative';
-      if (empty($formState->getValue($parents))) {
-        $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.'));
-      }
+    $parents = $element['#parents'];
+    array_pop($parents);
+
+    // Back out if no image was submitted.
+    $fid_form_element = array_merge($parents, ['fids']);
+    if (empty($formState->getValue($fid_form_element))) {
+      return;
+    }
+
+    $missing_alt_text = empty($formState->getValue($element['#parents']));
+    $decorative_form_element = array_merge($parents, ['decorative']);
+    $decorative_checked = (bool) $formState->getValue($decorative_form_element);
+    if ($missing_alt_text && !$decorative_checked) {
+      $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.'));
     }
   }