Skip to content
Snippets Groups Projects
Verified Commit e2f9ad3f authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3151534 by Darren Oh, mathilde_dumond, komalk, lauriii,...

Issue #3151534 by Darren Oh, mathilde_dumond, komalk, lauriii, ranjith_kumar_k_u, DanielVeza, idebr, dorianwinterfeld, elgandoz, amykhailova, scotwith1t, FiNeX, jimmynash, janmejaig: "Add another item" field button is displayed as a modal action
parent aa3ecb2c
No related branches found
No related tags found
45 merge requests!12227Issue #3181946 by jonmcl, mglaman,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8323Fix source code editing and in place front page site studio editing.,!6278Issue #3187770 by godotislate, smustgrave, catch, quietone: Views Rendered...,!54479.5.x SF update,!5022Issue #3394406: FileUploadHandler::handleExtensionValidation does not have fallback for sites still using file_validate_extensions,!3878Removed unused condition head title for views,!38582585169-10.1.x,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3668Resolve #3347842 "Deprecate the trusted",!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3546refactored dialog.pcss file,!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3502Issue #3335308: Confusing behavior with FormState::setFormState and FormState::setMethod,!3478Issue #3337882: Deleted menus are not removed from content type config,!3452Issue #3332701: Refactor Claro's tablesort-indicator stylesheet,!3451Issue #2410579: Allows setting the current language programmatically.,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3147Issue #3328457: Replace most substr($a, $i) where $i is negative with str_ends_with(),!3146Issue #3328456: Replace substr($a, 0, $i) with str_starts_with(),!3133core/modules/system/css/components/hidden.module.css,!31312878513-10.1.x,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2614Issue #2981326: Replace non-test usages of \Drupal::logger() with IoC injection,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2062Issue #3246454: Add weekly granularity to views date sort,!1591Issue #3199697: Add JSON:API Translation experimental module,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!844Resolve #3036010 "Updaters",!673Issue #3214208: FinishResponseSubscriber could create duplicate headers,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.
Pipeline #33244 failed
Pipeline: drupal

#33253

    Pipeline: drupal

    #33252

      Pipeline: drupal

      #33251

        +1
        Showing
        with 142 additions and 23 deletions
        <?php
        namespace Drupal\FunctionalJavascriptTests\Theme;
        use Drupal\Core\Field\FieldStorageDefinitionInterface;
        use Drupal\field\Entity\FieldConfig;
        use Drupal\field\Entity\FieldStorageConfig;
        use Drupal\Tests\media_library\FunctionalJavascript\MediaLibraryTestBase;
        use Drupal\Tests\TestFileCreationTrait;
        /**
        * Tests that buttons in modals are not in their button pane.
        *
        * @group claro
        */
        class ClaroModalDisplayTest extends MediaLibraryTestBase {
        use TestFileCreationTrait;
        /**
        * {@inheritdoc}
        */
        protected $defaultTheme = 'claro';
        /**
        * Tests the position f "add another" button in dialogs.
        */
        public function testModalAddAnother() {
        // Add unlimited field to the media type four.
        $unlimited_field_storage = FieldStorageConfig::create([
        'entity_type' => 'media',
        'field_name' => 'unlimited',
        'type' => 'string',
        'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
        ]);
        $unlimited_field_storage->save();
        $unlimited_field = FieldConfig::create([
        'field_storage' => $unlimited_field_storage,
        'bundle' => 'type_four',
        'label' => 'Unlimited',
        ]);
        $unlimited_field->save();
        /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */
        $display_repository = \Drupal::service('entity_display.repository');
        $display_repository->getFormDisplay('media', 'type_four', 'media_library')
        ->setComponent('unlimited', [
        'type' => 'string_textfield',
        ])
        ->save();
        $assert_session = $this->assertSession();
        foreach ($this->getTestFiles('image') as $image) {
        $extension = pathinfo($image->filename, PATHINFO_EXTENSION);
        if ($extension === 'jpg') {
        $jpg_image = $image;
        }
        }
        if (!isset($jpg_image)) {
        $this->fail('Expected test files not present.');
        }
        // Create a user that can create media for all media types.
        $user = $this->drupalCreateUser([
        'access administration pages',
        'access content',
        'create basic_page content',
        'create media',
        'view media',
        ]);
        $this->drupalLogin($user);
        // Visit a node create page.
        $this->drupalGet('node/add/basic_page');
        // Add to the twin media field.
        $this->openMediaLibraryForField('field_twin_media');
        $this->switchToMediaType('Four');
        // A file needs to be added for the unlimited field to appear in the form.
        $this->addMediaFileToField('Add files', $this->container->get('file_system')->realpath($jpg_image->uri));
        // Wait for the file upload to be completed.
        // Copied from \Drupal\Tests\media_library\FunctionalJavascript\MediaLibraryTestBase::assertMediaAdded.
        $selector = '.js-media-library-add-form-added-media';
        $this->assertJsCondition('jQuery("' . $selector . '").is(":focus")');
        // Assert that the 'add another item' button is not in the dialog footer.
        $assert_session->elementNotExists('css', '.ui-dialog-buttonset .field-add-more-submit');
        $assert_session->elementExists('css', '.ui-dialog-content .field-add-more-submit');
        }
        }
        ......@@ -105,7 +105,8 @@
        * Add the same margin for action-link inside form-actions as button has.
        */
        .form-actions .action-link {
        .form-actions .action-link,
        .field-actions .action-link {
        margin-inline: 0 var(--space-s);
        }
        ......
        ......@@ -91,7 +91,8 @@
        *
        * Add the same margin for action-link inside form-actions as button has.
        */
        @nest .form-actions & {
        .form-actions &,
        .field-actions & {
        margin-inline: 0 var(--space-s);
        }
        }
        ......
        ......@@ -143,7 +143,8 @@
        /* Form action buttons are moved in dialogs. Remove empty space. */
        .ui-dialog .ui-dialog-content .form-actions {
        .ui-dialog .ui-dialog-content .form-actions,
        .ui-dialog .ui-dialog-content .field-actions {
        margin: 0;
        padding: 0;
        }
        ......
        ......@@ -129,7 +129,8 @@
        }
        /* Form action buttons are moved in dialogs. Remove empty space. */
        .ui-dialog .ui-dialog-content .form-actions {
        .ui-dialog .ui-dialog-content .form-actions,
        .ui-dialog .ui-dialog-content .field-actions {
        margin: 0;
        padding: 0;
        }
        ......
        ......@@ -44,11 +44,13 @@
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
        }
        .form-actions .dropbutton-wrapper {
        .form-actions .dropbutton-wrapper,
        .field-actions .dropbutton-wrapper {
        margin: var(--space-xs) var(--space-m) var(--space-xs) 0;
        }
        [dir="rtl"] .form-actions .dropbutton-wrapper {
        [dir="rtl"] .form-actions .dropbutton-wrapper,
        [dir="rtl"] .field-actions .dropbutton-wrapper {
        margin-right: 0;
        margin-left: var(--space-m);
        }
        ......
        ......@@ -37,10 +37,12 @@
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
        }
        .form-actions .dropbutton-wrapper {
        .form-actions .dropbutton-wrapper,
        .field-actions .dropbutton-wrapper {
        margin: var(--space-xs) var(--space-m) var(--space-xs) 0;
        }
        [dir="rtl"] .form-actions .dropbutton-wrapper {
        [dir="rtl"] .form-actions .dropbutton-wrapper,
        [dir="rtl"] .field-actions .dropbutton-wrapper {
        margin-right: 0;
        margin-left: var(--space-m);
        }
        ......
        ......@@ -133,7 +133,8 @@ tr .form-item,
        * Form actions.
        */
        .form-actions {
        .form-actions,
        .field-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        ......@@ -141,11 +142,14 @@ tr .form-item,
        }
        .form-actions .button,
        .form-actions .action-link {
        .field-actions .button,
        .form-actions .action-link,
        .field-actions .action-link {
        margin-block: var(--space-m);
        }
        .form-actions .ajax-progress--throbber {
        .form-actions .ajax-progress--throbber,
        .field-actions .ajax-progress--throbber {
        align-self: center;
        }
        ......
        ......@@ -116,7 +116,8 @@ tr .form-item,
        /**
        * Form actions.
        */
        .form-actions {
        .form-actions,
        .field-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        ......
        ......@@ -313,7 +313,8 @@
        flex-wrap: wrap;
        }
        .media-library-views-form > .form-actions {
        .media-library-views-form > .form-actions,
        .media-library-views-form > .field-actions {
        flex-basis: 100%;
        }
        ......@@ -500,7 +501,8 @@
        align-items: center;
        }
        .media-library-widget-modal .ui-dialog-buttonpane .form-actions {
        .media-library-widget-modal .ui-dialog-buttonpane .form-actions,
        .media-library-widget-modal .ui-dialog-buttonpane .field-actions {
        flex: 1;
        }
        ......
        ......@@ -282,7 +282,8 @@
        flex-wrap: wrap;
        }
        .media-library-views-form > .form-actions {
        .media-library-views-form > .form-actions,
        .media-library-views-form > .field-actions {
        flex-basis: 100%;
        }
        ......@@ -456,7 +457,8 @@
        align-items: center;
        }
        .media-library-widget-modal .ui-dialog-buttonpane .form-actions {
        .media-library-widget-modal .ui-dialog-buttonpane .form-actions,
        .media-library-widget-modal .ui-dialog-buttonpane .field-actions {
        flex: 1;
        }
        ......
        ......@@ -330,7 +330,8 @@ td.group-title {
        background-color: var(--color-gray-050);
        }
        .form-edit .form-actions {
        .form-edit .form-actions,
        .form-edit .field-actions {
        margin-top: 0;
        padding: var(--space-s) var(--space-m);
        border-right: 1px solid var(--color-gray-200-o-80);
        ......@@ -369,7 +370,8 @@ td.group-title {
        }
        .view-preview-form .form-item--view-args,
        .view-preview-form .form-actions {
        .view-preview-form .form-actions,
        .view-preview-form .field-actions {
        margin-top: 0.3125rem;
        }
        ......@@ -396,7 +398,8 @@ td.group-title {
        }
        .form-item--live-preview,
        .view-preview-form .form-actions {
        .view-preview-form .form-actions,
        .view-preview-form .field-actions {
        vertical-align: top;
        }
        ......
        ......@@ -263,7 +263,8 @@ td.group-title {
        border-bottom: 1px solid var(--color-gray-200-o-80);
        background-color: var(--color-gray-050);
        }
        .form-edit .form-actions {
        .form-edit .form-actions,
        .form-edit .field-actions {
        margin-top: 0;
        padding: var(--space-s) var(--space-m);
        border-right: 1px solid var(--color-gray-200-o-80);
        ......@@ -296,7 +297,8 @@ td.group-title {
        margin-top: 0;
        }
        .view-preview-form .form-item--view-args,
        .view-preview-form .form-actions {
        .view-preview-form .form-actions,
        .view-preview-form .field-actions {
        margin-top: 5px;
        }
        .view-preview-form .views-bulk-actions__item {
        ......@@ -317,7 +319,8 @@ td.group-title {
        display: inline-block;
        }
        .form-item--live-preview,
        .view-preview-form .form-actions {
        .view-preview-form .form-actions,
        .view-preview-form .field-actions {
        vertical-align: top;
        }
        ......
        ......@@ -42,7 +42,7 @@
        <div{{ description.attributes.addClass(description_classes) }} >{{ description.content }}</div>
        {% endif %}
        {% if button %}
        <div class="form-actions">{{ button }}</div>
        <div class="field-actions">{{ button }}</div>
        {% endif %}
        </div>
        {% else %}
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Please register or to comment