Commit a28374c5 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3321320 by nod_, DamienMcKenna: Use a library to bring in widget CSS

parent 2d5f61d9
Loading
Loading
Loading
Loading
+62 −112
Original line number Diff line number Diff line
{
  "jquery_ui": {
    "internal.widget-css": {
      "version": "1.13.2",
      "license": {
        "name": "Public Domain",
        "url": "https://raw.githubusercontent.com/jquery/jquery-ui/1.13.2/LICENSE.txt",
        "gpl-compatible": true
      },
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    },
    "core": {
      "version": "1.13.2",
      "license": {
@@ -24,7 +40,8 @@
        "jquery_ui/internal.scroll-parent",
        "jquery_ui/internal.tabbable",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version"
        "jquery_ui/internal.version",
        "jquery_ui/internal.widget-css"
      ]
    },
    "internal.data": {
@@ -384,7 +401,8 @@
      },
      "dependencies": [
        "core/jquery",
        "jquery_ui/internal.version"
        "jquery_ui/internal.version",
        "jquery_ui/internal.widget-css"
      ]
    },
    "mouse": {
@@ -404,16 +422,9 @@
        "core/jquery",
        "jquery_ui/internal.ie",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ]
    }
  },
  "jquery_ui_effects": {
@@ -729,15 +740,12 @@
        "jquery_ui/internal.version",
        "jquery_ui/internal.keycode",
        "jquery_ui/internal.unique-id",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/accordion.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -763,15 +771,12 @@
        "jquery_ui/position",
        "jquery_ui/internal.safe-active-element",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/autocomplete.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -795,15 +800,12 @@
        "jquery_ui_controlgroup/controlgroup",
        "jquery_ui_checkboxradio/checkboxradio",
        "jquery_ui/internal.keycode",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/button.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -826,15 +828,12 @@
        "core/jquery",
        "jquery_ui/internal.form-reset-mixin",
        "jquery_ui/internal.labels",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/checkboxradio.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -855,15 +854,12 @@
      },
      "dependencies": [
        "core/jquery",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/controlgroup.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -885,15 +881,12 @@
      "dependencies": [
        "core/jquery",
        "jquery_ui/internal.version",
        "jquery_ui/internal.keycode"
        "jquery_ui/internal.keycode",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/datepicker.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -926,15 +919,12 @@
        "jquery_ui/internal.tabbable",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/dialog.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -962,15 +952,12 @@
        "jquery_ui/internal.safe-blur",
        "jquery_ui/internal.scroll-parent",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/draggable.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -994,16 +981,9 @@
        "jquery_ui_draggable/draggable",
        "jquery_ui/mouse",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ]
    }
  },
  "jquery_ui_menu": {
@@ -1027,15 +1007,12 @@
        "jquery_ui/internal.safe-active-element",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/menu.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1057,15 +1034,12 @@
      "dependencies": [
        "core/jquery",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/progressbar.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1090,15 +1064,12 @@
        "jquery_ui/internal.disable-selection",
        "jquery_ui/internal.plugin",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/resizable.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1121,15 +1092,12 @@
        "core/jquery",
        "jquery_ui/mouse",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/selectable.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1157,15 +1125,12 @@
        "jquery_ui/position",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/selectmenu.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1189,15 +1154,12 @@
        "jquery_ui/mouse",
        "jquery_ui/internal.keycode",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/slider.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1223,15 +1185,12 @@
        "jquery_ui/internal.ie",
        "jquery_ui/internal.scroll-parent",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/sortable.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1256,15 +1215,12 @@
        "jquery_ui/internal.version",
        "jquery_ui/internal.keycode",
        "jquery_ui/internal.safe-active-element",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/spinner.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1289,15 +1245,12 @@
        "jquery_ui/internal.safe-active-element",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/tabs.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
@@ -1322,15 +1275,12 @@
        "jquery_ui/position",
        "jquery_ui/internal.unique-id",
        "jquery_ui/internal.version",
        "jquery_ui/widget"
        "jquery_ui/widget",
        "jquery_ui/internal.widget-css"
      ],
      "css": {
        "component": {
          "assets/vendor/jquery.ui/themes/base/core.css": {},
          "assets/vendor/jquery.ui/themes/base/tooltip.css": {}
        },
        "theme": {
          "assets/vendor/jquery.ui/themes/base/theme.css": {}
        }
      }
    }
+7 −7
Original line number Diff line number Diff line
@@ -36,14 +36,14 @@ function jquery_ui_library_info_alter(array &$libraries, string $module): void {

  if (array_key_exists($module, $data['libraries'])) {
    $module_libraries = $data['libraries'][$module];
    foreach ($module_libraries as $name => &$definition) {
      if (isset($definition['css'])) {
    foreach ($module_libraries as &$definition) {
      // Set some defaults.
      $definition += ['css' => [], 'js' => []];
      foreach ($definition['css'] as $bem => $files) {
        $definition['css'][$bem] = array_combine(array_map(function ($path) use ($data) {
          return "/$data[path]/$path";
        }, array_keys($files)), $files);
      }
      }
      $definition['js'] = array_combine(array_map(function ($path) use ($data) {
        return "/$data[path]/$path";
      }, array_keys($definition['js'])), $definition['js']);
+24 −11
Original line number Diff line number Diff line
@@ -151,6 +151,20 @@ const { moduleFolder, packageFolder, sourceFolder, filesToCopy } = require('./fi
    return acc;
  }, {});

  // For widgets the CSS dependency is implicit, make it explicit for Drupal
  // libraries.
  libraries.jquery_ui['internal.widget-css'] = {
    ...libraryMetadata,
    css: {
      component: {
        'assets/vendor/jquery.ui/themes/base/core.css': {},
      },
      theme: {
        'assets/vendor/jquery.ui/themes/base/theme.css': {},
      },
    }
  }

  for (const file of jsFiles) {
    const asset = {
      ...libraryMetadata,
@@ -166,22 +180,21 @@ const { moduleFolder, packageFolder, sourceFolder, filesToCopy } = require('./fi
      asset.js = {};
    }

    if (file.startsWith('widgets/')) {
    // All widgets have an implicit dependency on those css files.
      asset.css = {
        component: {
          'assets/vendor/jquery.ui/themes/base/core.css': {},
        },
        theme: {
          'assets/vendor/jquery.ui/themes/base/theme.css': {},
        },
      };
    if (file.startsWith('widgets/') || ['widget', 'core'].includes(file)) {
      asset.dependencies.push('jquery_ui/internal.widget-css');
    }

    // Check if a CSS file specific to the widget exists.
    if (file.startsWith('widgets/')) {
      const basename = path.basename(file);
      if (cssFiles.includes(basename)) {
        asset.css.component[`assets/vendor/jquery.ui/themes/base/${basename}.css`] = {};
        asset.css = Object.assign(asset.css || {}, {
          component: {[`assets/vendor/jquery.ui/themes/base/${basename}.css`]: {} }
        });
      }
    }

    libraries[assetModule(file)][libraryName(file)] = asset;
  }