jenkins-bot has submitted this change and it was merged.
Change subject: Split the library into four parts
......................................................................
Split the library into four parts
If the library has gotten too big for you, you can now load
only a part of it! (This is not a breaking change, as all the
existing distribution files are still here.)
The new distribution files are:
oojs-ui-core.js (93K minified + 40K minified of CSS)
The core JavaScript library. The other three depend on this.
oojs-ui-widgets.js (55K minified + 21K minified of CSS)
Additional widgets and layouts module.
oojs-ui-toolbars.js (19K minified + 13K minified of CSS)
Toolbar and tools module.
oojs-ui-windows.js (32K minified + 11K minified of CSS)
Windows and dialogs module.
Compared to the old one, now known as "omnibus build":
oojs-ui.js (198K minified + 82K minified of CSS)
Everything in one place!
There are some big changes to the build process here:
* We're building more files. modules.yaml now contains the definition
of what goes into each JavaScript one, which is sadly duplicated for
CSS in src/styles/{core,widgets,toolbars,windows}.less. (It was like
this before, though, it's just worse now.)
* Less build was turned inside-out. Previously, each theme contained
an entry point, that imported the core styles to build the whole
library. Since that would require four entry points now and would be
a major pain, I've changed it so that core styles import the theme
entry point (and are compiled multiple times, once for each theme).
Bug: T113681
Change-Id: I647e2b55cea5c37b4944683b1416bc60b7aa7eb3
---
M Gruntfile.js
M build/modules.yaml
M src/styles/common.less
M src/styles/core.less
R src/styles/empty-theme.less
A src/styles/toolbars.less
A src/styles/widgets.less
A src/styles/windows.less
M src/themes/apex/common.less
D src/themes/apex/core.less
A src/themes/apex/theme.less
M src/themes/blank/common.less
D src/themes/blank/core.less
A src/themes/blank/theme.less
M src/themes/mediawiki/common.less
D src/themes/mediawiki/core.less
A src/themes/mediawiki/theme.less
17 files changed, 320 insertions(+), 216 deletions(-)
Approvals:
Jforrester: Looks good to me, approved
jenkins-bot: Verified
diff --git a/Gruntfile.js b/Gruntfile.js
index 2a435d3..620008b 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -10,11 +10,15 @@
apex: 'Apex',
mediawiki: 'MediaWiki'
},
- lessFiles = {},
+ lessFiles = {
+ apex: {},
+ mediawiki: {}
+ },
colorizeSvgFiles = {},
requiredFiles = [],
concatCssFiles = {},
concatJsFiles = {},
+ concatOmnibus = {},
rtlFiles = {},
minBanner = '/*! OOjs UI v<%= pkg.version %> |
http://oojs.mit-license.org */';
@@ -49,6 +53,7 @@
if ( module.indexOf( '{theme}' ) !== -1 ||
module.indexOf( '{Theme}' ) !== -1 ) {
for ( theme in themes ) {
modules[ themify( module ) ] = {};
+ modules[ themify( module ) ].theme =
theme;
if ( modules[ module ].scripts ) {
modules[ themify( module )
].scripts = modules[ module ].scripts.map( themify );
}
@@ -71,11 +76,10 @@
// Generate all task targets required to process given file
into a pair of CSS files (for LTR
// and RTL), and return file name of LTR file.
function processFile( fileName ) {
- var lessFileName, cssFileName, theme, path;
+ var lessFileName, cssFileName, path;
path = require( 'path' );
if ( path.extname( fileName ) === '.json' ) {
lessFileName = fileName.replace( /\.json$/,
'.less' ).replace( /^src/, 'dist/tmp' );
- theme = path.basename( path.dirname( fileName )
);
colorizeSvgFiles[ fileName.replace(
/.+\/(\w+)\/([\w-]+)\.(?:json|less)$/, '$1-$2' ) ] = {
options: grunt.file.readJSON( fileName
),
@@ -89,12 +93,12 @@
}
};
- cssFileName = fileName.replace( /\.json$/,
'.css' ).replace( /^src/, 'dist/tmp' );
- lessFiles[ cssFileName ] = [ lessFileName ];
- lessFiles[ rtlPath( cssFileName ) ] = [
rtlPath( lessFileName ) ];
+ cssFileName = fileName.replace( /\.json$/,
'.css' ).replace( /^src/, 'dist/tmp/' + theme );
+ lessFiles[ theme ][ cssFileName ] = [
lessFileName ];
+ lessFiles[ theme ][ rtlPath( cssFileName ) ] =
[ rtlPath( lessFileName ) ];
} else {
- cssFileName = fileName.replace( /\.less$/,
'.css' ).replace( /^src/, 'dist/tmp' );
- lessFiles[ cssFileName ] = [ fileName ];
+ cssFileName = fileName.replace( /\.less$/,
'.css' ).replace( /^src/, 'dist/tmp/' + theme );
+ lessFiles[ theme ][ cssFileName ] = [ fileName
];
rtlFiles[ rtlPath( cssFileName ) ] =
cssFileName;
}
return cssFileName;
@@ -102,6 +106,7 @@
for ( module in modules ) {
if ( modules[ module ].styles ) {
moduleStyleFiles = modules[ module ].styles;
+ theme = modules[ module ].theme;
distFile = 'dist/' + module + '.css';
@@ -115,6 +120,34 @@
concatJsFiles[ distFile ].push(
'src/outro.js.txt' );
}
}
+
+ // Composite files
+ concatOmnibus[ 'dist/oojs-ui.js' ] = [
+ 'dist/oojs-ui-core.js',
+ 'dist/oojs-ui-widgets.js',
+ 'dist/oojs-ui-toolbars.js',
+ 'dist/oojs-ui-windows.js'
+ ];
+ for ( theme in themes ) {
+ concatOmnibus[ themify( 'dist/oojs-ui-{theme}.css' ) ]
= [
+ 'dist/oojs-ui-core-{theme}.css',
+ 'dist/oojs-ui-widgets-{theme}.css',
+ 'dist/oojs-ui-toolbars-{theme}.css',
+ 'dist/oojs-ui-windows-{theme}.css',
+ 'dist/oojs-ui-images-{theme}.css'
+ ].map( themify );
+ concatOmnibus[ rtlPath( themify(
'dist/oojs-ui-{theme}.css' ) ) ] =
+ concatOmnibus[ themify(
'dist/oojs-ui-{theme}.css' ) ].map( rtlPath );
+ concatOmnibus[ themify(
'dist/oojs-ui-{theme}-noimages.css' ) ] = [
+ 'dist/oojs-ui-core-{theme}.css',
+ 'dist/oojs-ui-widgets-{theme}.css',
+ 'dist/oojs-ui-toolbars-{theme}.css',
+ 'dist/oojs-ui-windows-{theme}.css'
+ ].map( themify );
+ concatOmnibus[ rtlPath( themify(
'dist/oojs-ui-{theme}-noimages.css' ) ) ] =
+ concatOmnibus[ themify(
'dist/oojs-ui-{theme}-noimages.css' ) ].map( rtlPath );
+ }
+
}() );
function strip( str ) {
@@ -157,6 +190,12 @@
css: {
files: concatCssFiles
},
+ omnibus: {
+ options: {
+ banner: ''
+ },
+ files: concatOmnibus
+ },
demoCss: {
options: {
banner: '/** This file is generated
automatically. Do not modify it. */\n\n'
@@ -192,8 +231,17 @@
'oo-ui-default-image-ext': 'png'
}
},
- all: {
- files: lessFiles
+ apex: {
+ options: {
+ paths: [ '.', 'src/themes/apex' ]
+ },
+ files: lessFiles.apex
+ },
+ mediawiki: {
+ options: {
+ paths: [ '.', 'src/themes/mediawiki' ]
+ },
+ files: lessFiles.mediawiki
}
},
cssjanus: {
@@ -440,6 +488,7 @@
grunt.registerTask( 'build-tests', [ 'exec:rubyTestSuiteGenerator',
'exec:phpGenerateJSPHPForKarma' ] );
grunt.registerTask( 'build', [
'clean:build', 'fileExists', 'tyops', 'build-code',
'build-styling', 'build-i18n',
+ 'concat:omnibus',
'clean:tmp', 'demos'
] );
@@ -451,7 +500,7 @@
'concat:js',
'colorizeSvg', 'set-graphics:vector', 'less', 'concat:css',
'copy:imagesCommon', 'copy:imagesApex', 'copy:imagesMediaWiki',
- 'build-i18n', 'copy:demos', 'copy:fastcomposerdemos',
+ 'build-i18n', 'concat:omnibus', 'copy:demos',
'copy:fastcomposerdemos',
'note-quick-build'
] );
diff --git a/build/modules.yaml b/build/modules.yaml
index aee1728..982bec0 100644
--- a/build/modules.yaml
+++ b/build/modules.yaml
@@ -1,120 +1,149 @@
# NOTE: We're trying to stick to just the JSON-with-comments subset of YAML in
this file.
{
- # The JavaScript library.
- "oojs-ui": {
+ # The core JavaScript library. This contains the widgets you're most
likely to need in your
+ # interfaces, including everything required to infuse any PHP widgets.
+ "oojs-ui-core": {
"scripts": [
+ # Core of the core. The basic building block of
Element, facilities to connect PHP and JS
+ # widgets (infuse), some abstract classes, a bunch of
convenience methods.
"src/core.js",
"src/mixin.js",
-
- "src/mixins/PendingElement.js",
-
- "src/ActionSet.js",
"src/Element.js",
- "src/Layout.js",
- "src/Widget.js",
- "src/Window.js",
- "src/Dialog.js",
- "src/WindowManager.js",
- "src/Error.js",
"src/HtmlSnippet.js",
- "src/Process.js",
- "src/ToolFactory.js",
- "src/ToolGroupFactory.js",
+ "src/Layout.js",
+ "src/Widget.js",
"src/Theme.js",
- "src/mixins/RequestManager.js",
+ # Basic element mixins. These should be the same
classes that are supported in OOjs UI PHP.
"src/mixins/TabIndexedElement.js",
"src/mixins/ButtonElement.js",
"src/mixins/GroupElement.js",
- "src/mixins/DraggableElement.js",
- "src/mixins/DraggableGroupElement.js",
"src/mixins/IconElement.js",
"src/mixins/IndicatorElement.js",
"src/mixins/LabelElement.js",
- "src/mixins/LookupElement.js",
- "src/mixins/PopupElement.js",
"src/mixins/FlaggedElement.js",
"src/mixins/TitledElement.js",
- "src/mixins/ClippableElement.js",
- "src/mixins/FloatableElement.js",
"src/mixins/AccessKeyedElement.js",
- "src/Tool.js",
- "src/Toolbar.js",
- "src/ToolGroup.js",
+ # The basic widgets and layouts. These should be the
same classes that are supported in OOjs
+ # UI PHP. (Continued below, as some dependencies below
depend on these.)
+ "src/widgets/ButtonWidget.js",
+ "src/widgets/ButtonGroupWidget.js",
+ "src/widgets/IconWidget.js",
+ "src/widgets/IndicatorWidget.js",
+ "src/widgets/LabelWidget.js",
- "src/dialogs/MessageDialog.js",
- "src/dialogs/ProcessDialog.js",
- "src/windows.js",
+ # The JavaScript-specific dependencies of the basic
widgets. It's sad how many there are :(
+ # TextInputWidget
+ "src/mixins/PendingElement.js",
+ # FieldLayout, FieldsetLayout
+ "src/mixins/ClippableElement.js",
+ "src/widgets/PopupWidget.js",
+ "src/mixins/PopupElement.js",
+ "src/widgets/PopupButtonWidget.js",
+ # DropdownInputWidget, RadioSelectInputWidget
+ "src/mixins/GroupWidget.js",
+ "src/mixins/ItemWidget.js",
+ "src/widgets/OptionWidget.js",
+ "src/widgets/SelectWidget.js",
+ "src/widgets/DecoratedOptionWidget.js",
+ # DropdownInputWidget
+ "src/widgets/MenuOptionWidget.js",
+ "src/widgets/MenuSectionOptionWidget.js",
+ "src/widgets/MenuSelectWidget.js",
+ "src/widgets/DropdownWidget.js",
+ # RadioSelectInputWidget
+ "src/widgets/RadioOptionWidget.js",
+ "src/widgets/RadioSelectWidget.js",
+ # ComboBoxInputWidget
+ "src/mixins/FloatableElement.js",
+ "src/widgets/FloatingMenuSelectWidget.js",
+ # The basic widgets and layouts, continued.
+ "src/widgets/InputWidget.js",
+ "src/widgets/ButtonInputWidget.js",
+ "src/widgets/CheckboxInputWidget.js",
+ "src/widgets/DropdownInputWidget.js",
+ "src/widgets/RadioInputWidget.js",
+ "src/widgets/RadioSelectInputWidget.js",
+ "src/widgets/TextInputWidget.js",
+ "src/widgets/ComboBoxInputWidget.js",
"src/layouts/FieldLayout.js",
"src/layouts/ActionFieldLayout.js",
"src/layouts/FieldsetLayout.js",
"src/layouts/FormLayout.js",
- "src/layouts/MenuLayout.js",
- "src/layouts/BookletLayout.js",
- "src/layouts/IndexLayout.js",
"src/layouts/PanelLayout.js",
- "src/layouts/CardLayout.js",
- "src/layouts/PageLayout.js",
- "src/layouts/StackLayout.js",
- "src/layouts/HorizontalLayout.js",
+ "src/layouts/HorizontalLayout.js"
+ ]
+ },
+ # Additional widgets and layouts module. These have no equivalent in
OOjs UI PHP.
+ "oojs-ui-widgets": {
+ "scripts": [
+ "src/mixins/DraggableElement.js",
+ "src/mixins/DraggableGroupElement.js",
+ "src/mixins/RequestManager.js",
+ "src/mixins/LookupElement.js",
+
+ "src/layouts/CardLayout.js",
+ "src/layouts/PageLayout.js",
+ "src/layouts/StackLayout.js",
+ "src/layouts/MenuLayout.js",
+ "src/layouts/BookletLayout.js",
+ "src/layouts/IndexLayout.js",
+
+ "src/widgets/ToggleWidget.js",
+ "src/widgets/ToggleButtonWidget.js",
+ "src/widgets/ToggleSwitchWidget.js",
+
+ "src/widgets/OutlineControlsWidget.js",
+ "src/widgets/OutlineOptionWidget.js",
+ "src/widgets/OutlineSelectWidget.js",
+ "src/widgets/ButtonOptionWidget.js",
+ "src/widgets/ButtonSelectWidget.js",
+ "src/widgets/TabOptionWidget.js",
+ "src/widgets/TabSelectWidget.js",
+
+ "src/widgets/CapsuleItemWidget.js",
+ "src/widgets/CapsuleMultiSelectWidget.js",
+
+ "src/widgets/SelectFileWidget.js",
+ "src/widgets/ProgressBarWidget.js",
+ "src/widgets/SearchWidget.js",
+ "src/widgets/NumberInputWidget.js"
+ ],
+ },
+ # Toolbar and tools module.
+ "oojs-ui-toolbars": {
+ "scripts": [
+ "src/Toolbar.js",
+ "src/Tool.js",
+ "src/ToolGroup.js",
+ "src/ToolFactory.js",
+ "src/ToolGroupFactory.js",
+ "src/tools/PopupTool.js",
+ "src/tools/ToolGroupTool.js",
"src/toolgroups/BarToolGroup.js",
"src/toolgroups/PopupToolGroup.js",
"src/toolgroups/ListToolGroup.js",
- "src/toolgroups/MenuToolGroup.js",
-
- "src/tools/PopupTool.js",
- "src/tools/ToolGroupTool.js",
-
- "src/mixins/GroupWidget.js",
- "src/mixins/ItemWidget.js",
- "src/widgets/OutlineControlsWidget.js",
- "src/widgets/ToggleWidget.js",
-
- "src/widgets/ButtonGroupWidget.js",
- "src/widgets/ButtonWidget.js",
- "src/widgets/ActionWidget.js",
- "src/widgets/PopupButtonWidget.js",
- "src/widgets/ToggleButtonWidget.js",
- "src/widgets/CapsuleMultiSelectWidget.js",
- "src/widgets/CapsuleItemWidget.js",
- "src/widgets/DropdownWidget.js",
- "src/widgets/SelectFileWidget.js",
- "src/widgets/IconWidget.js",
- "src/widgets/IndicatorWidget.js",
- "src/widgets/InputWidget.js",
- "src/widgets/ButtonInputWidget.js",
- "src/widgets/CheckboxInputWidget.js",
- "src/widgets/DropdownInputWidget.js",
- "src/widgets/RadioInputWidget.js",
- "src/widgets/RadioSelectInputWidget.js",
- "src/widgets/TextInputWidget.js",
- "src/widgets/ComboBoxInputWidget.js",
- "src/widgets/LabelWidget.js",
- "src/widgets/OptionWidget.js",
- "src/widgets/DecoratedOptionWidget.js",
- "src/widgets/ButtonOptionWidget.js",
- "src/widgets/RadioOptionWidget.js",
- "src/widgets/MenuOptionWidget.js",
-
"src/widgets/MenuSectionOptionWidget.js",
- "src/widgets/OutlineOptionWidget.js",
- "src/widgets/TabOptionWidget.js",
- "src/widgets/PopupWidget.js",
- "src/widgets/ProgressBarWidget.js",
- "src/widgets/SearchWidget.js",
- "src/widgets/SelectWidget.js",
- "src/widgets/ButtonSelectWidget.js",
- "src/widgets/RadioSelectWidget.js",
- "src/widgets/MenuSelectWidget.js",
-
"src/widgets/FloatingMenuSelectWidget.js",
- "src/widgets/OutlineSelectWidget.js",
- "src/widgets/TabSelectWidget.js",
- "src/widgets/NumberInputWidget.js",
- "src/widgets/ToggleSwitchWidget.js"
- ]
+ "src/toolgroups/MenuToolGroup.js"
+ ],
+ },
+ # Windows and dialogs module.
+ "oojs-ui-windows": {
+ "scripts": [
+ "src/widgets/ActionWidget.js",
+ "src/ActionSet.js",
+ "src/Error.js",
+ "src/Process.js",
+ "src/WindowManager.js",
+ "src/Window.js",
+ "src/Dialog.js",
+ "src/dialogs/MessageDialog.js",
+ "src/dialogs/ProcessDialog.js",
+ "src/windows.js"
+ ],
},
# All styles, built per-theme, and theme-specific scripts.
@@ -126,25 +155,42 @@
"oojs-ui-{theme}": {
"scripts": [
"src/themes/{theme}/{Theme}Theme.js"
- ],
+ ]
+ },
+ "oojs-ui-core-{theme}": {
"styles": [
- "src/themes/{theme}/core.less",
+ "src/styles/core.less"
+ ]
+ },
+ "oojs-ui-widgets-{theme}": {
+ "styles": [
+ "src/styles/widgets.less"
+ ]
+ },
+ "oojs-ui-toolbars-{theme}": {
+ "styles": [
+ "src/styles/toolbars.less"
+ ]
+ },
+ "oojs-ui-windows-{theme}": {
+ "styles": [
+ "src/styles/windows.less"
+ ]
+ },
+ "oojs-ui-images-{theme}": {
+ "styles": [
"src/themes/{theme}/icons.json",
"src/themes/{theme}/indicators.json",
"src/themes/{theme}/textures.json"
]
},
- "oojs-ui-{theme}-noimages": {
- "styles": [
- "src/themes/{theme}/core.less"
- ]
- },
- # Additional icon packs. Some exist for all themes, some are
MediaWiki-specific.
+ # Additional icon packs. Some exist for all themes, some are
MediaWiki-theme-specific.
"oojs-ui-mediawiki-icons-accessibility": {
"styles": [
"src/themes/mediawiki/icons-accessibility.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-{theme}-icons-movement": {
"styles": [
@@ -159,7 +205,8 @@
"oojs-ui-mediawiki-icons-alerts": {
"styles": [
"src/themes/mediawiki/icons-alerts.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-{theme}-icons-interactions": {
"styles": [
@@ -199,21 +246,25 @@
"oojs-ui-mediawiki-icons-location": {
"styles": [
"src/themes/mediawiki/icons-location.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-mediawiki-icons-user": {
"styles": [
"src/themes/mediawiki/icons-user.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-mediawiki-icons-layout": {
"styles": [
"src/themes/mediawiki/icons-layout.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-mediawiki-icons-wikimedia": {
"styles": [
"src/themes/mediawiki/icons-wikimedia.json"
- ]
+ ],
+ "theme": "mediawiki"
}
}
diff --git a/src/styles/common.less b/src/styles/common.less
index dd14360..bb4440f 100644
--- a/src/styles/common.less
+++ b/src/styles/common.less
@@ -1,10 +1,13 @@
+// Import base empty theme, so that custom themes don't need to define tons of
empty mixins.
+@import 'empty-theme';
+// Import the actual theme - this is the theme.less file from the theme's
directory.
+// Build process should ensure that import paths are set up correctly for this
to happen.
@import 'theme';
// Variables
// @oo-ui-default-image-ext set during build
// @oo-ui-distribution set during build
-@oo-ui-default-image-path: 'images';
// Mixins
diff --git a/src/styles/core.less b/src/styles/core.less
index e3cd127..7ac2d02 100644
--- a/src/styles/core.less
+++ b/src/styles/core.less
@@ -1,7 +1,5 @@
//
-// Base styles.
-//
-// Themes should include this file after defining their variables and mixins.
+// Styles for the 'core' module.
//
@import 'common';
@@ -11,71 +9,36 @@
@import 'elements/ClippableElement.less';
@import 'elements/FloatableElement.less';
@import 'elements/FlaggedElement.less';
-@import 'elements/DraggableElement.less';
-@import 'elements/DraggableGroupElement.less';
@import 'elements/GroupElement.less';
@import 'elements/IconElement.less';
@import 'elements/IndicatorElement.less';
@import 'elements/LabelElement.less';
-@import 'elements/LookupElement.less';
@import 'elements/PendingElement.less';
@import 'elements/PopupElement.less';
@import 'elements/TabIndexedElement.less';
@import 'elements/TitledElement.less';
@import 'Layout.less';
-@import 'layouts/BookletLayout.less';
-@import 'layouts/IndexLayout.less';
@import 'layouts/FieldLayout.less';
@import 'layouts/ActionFieldLayout.less';
@import 'layouts/FieldsetLayout.less';
@import 'layouts/FormLayout.less';
-@import 'layouts/MenuLayout.less';
@import 'layouts/PanelLayout.less';
-@import 'layouts/CardLayout.less';
-@import 'layouts/PageLayout.less';
-@import 'layouts/StackLayout.less';
@import 'layouts/HorizontalLayout.less';
-
-@import 'Tool.less';
-@import 'tools/PopupTool.less';
-@import 'tools/ToolGroupTool.less';
-
-@import 'ToolGroup.less';
-@import 'toolgroups/BarToolGroup.less';
-@import 'toolgroups/PopupToolGroup.less';
-@import 'toolgroups/ListToolGroup.less';
-@import 'toolgroups/MenuToolGroup.less';
-
-@import 'Toolbar.less';
@import 'Widget.less';
@import 'widgets/SelectWidget.less';
@import 'widgets/OptionWidget.less';
@import 'widgets/DecoratedOptionWidget.less';
-@import 'widgets/ButtonSelectWidget.less';
@import 'widgets/RadioSelectWidget.less';
-@import 'widgets/ButtonOptionWidget.less';
@import 'widgets/RadioOptionWidget.less';
-
@import 'widgets/LabelWidget.less';
@import 'widgets/IconWidget.less';
@import 'widgets/IndicatorWidget.less';
-
@import 'widgets/ButtonWidget.less';
@import 'widgets/ButtonGroupWidget.less';
-
-@import 'widgets/ToggleWidget.less';
-@import 'widgets/ToggleButtonWidget.less';
-@import 'widgets/ToggleSwitchWidget.less';
-
-@import 'widgets/ProgressBarWidget.less';
-
-@import 'widgets/ActionWidget.less';
-
@import 'widgets/PopupWidget.less';
@import 'widgets/PopupButtonWidget.less';
-
@import 'widgets/InputWidget.less';
@import 'widgets/ButtonInputWidget.less';
@import 'widgets/CheckboxInputWidget.less';
@@ -83,30 +46,9 @@
@import 'widgets/RadioInputWidget.less';
@import 'widgets/RadioSelectInputWidget.less';
@import 'widgets/TextInputWidget.less';
-
@import 'widgets/MenuSelectWidget.less';
@import 'widgets/MenuOptionWidget.less';
@import 'widgets/MenuSectionOptionWidget.less';
@import 'widgets/FloatingMenuSelectWidget.less';
@import 'widgets/DropdownWidget.less';
-@import 'widgets/SelectFileWidget.less';
-
-@import 'widgets/OutlineSelectWidget.less';
-@import 'widgets/OutlineOptionWidget.less';
-@import 'widgets/OutlineControlsWidget.less';
-
-@import 'widgets/TabSelectWidget.less';
-@import 'widgets/TabOptionWidget.less';
-
-@import 'widgets/CapsuleMultiSelectWidget.less';
-@import 'widgets/CapsuleItemWidget.less';
@import 'widgets/ComboBoxInputWidget.less';
-@import 'widgets/SearchWidget.less';
-@import 'widgets/NumberInputWidget.less';
-
-@import 'Window.less';
-@import 'Dialog.less';
-@import 'dialogs/MessageDialog.less';
-@import 'dialogs/ProcessDialog.less';
-
-@import 'WindowManager.less';
diff --git a/src/styles/theme.less b/src/styles/empty-theme.less
similarity index 100%
rename from src/styles/theme.less
rename to src/styles/empty-theme.less
diff --git a/src/styles/toolbars.less b/src/styles/toolbars.less
new file mode 100644
index 0000000..5f2ad49
--- /dev/null
+++ b/src/styles/toolbars.less
@@ -0,0 +1,17 @@
+//
+// Styles for the 'toolbars' module.
+//
+
+@import 'common';
+
+@import 'Tool.less';
+@import 'tools/PopupTool.less';
+@import 'tools/ToolGroupTool.less';
+
+@import 'ToolGroup.less';
+@import 'toolgroups/BarToolGroup.less';
+@import 'toolgroups/PopupToolGroup.less';
+@import 'toolgroups/ListToolGroup.less';
+@import 'toolgroups/MenuToolGroup.less';
+
+@import 'Toolbar.less';
diff --git a/src/styles/widgets.less b/src/styles/widgets.less
new file mode 100644
index 0000000..60bdd83
--- /dev/null
+++ b/src/styles/widgets.less
@@ -0,0 +1,37 @@
+//
+// Styles for the 'widgets' module.
+//
+
+@import 'common';
+
+@import 'elements/DraggableElement.less';
+@import 'elements/DraggableGroupElement.less';
+@import 'elements/LookupElement.less';
+
+@import 'layouts/BookletLayout.less';
+@import 'layouts/IndexLayout.less';
+@import 'layouts/MenuLayout.less';
+@import 'layouts/CardLayout.less';
+@import 'layouts/PageLayout.less';
+@import 'layouts/StackLayout.less';
+
+@import 'widgets/ButtonSelectWidget.less';
+@import 'widgets/ButtonOptionWidget.less';
+@import 'widgets/ToggleWidget.less';
+@import 'widgets/ToggleButtonWidget.less';
+@import 'widgets/ToggleSwitchWidget.less';
+@import 'widgets/ProgressBarWidget.less';
+
+@import 'widgets/SelectFileWidget.less';
+
+@import 'widgets/OutlineSelectWidget.less';
+@import 'widgets/OutlineOptionWidget.less';
+@import 'widgets/OutlineControlsWidget.less';
+
+@import 'widgets/TabSelectWidget.less';
+@import 'widgets/TabOptionWidget.less';
+
+@import 'widgets/CapsuleMultiSelectWidget.less';
+@import 'widgets/CapsuleItemWidget.less';
+@import 'widgets/SearchWidget.less';
+@import 'widgets/NumberInputWidget.less';
diff --git a/src/styles/windows.less b/src/styles/windows.less
new file mode 100644
index 0000000..fbd8695
--- /dev/null
+++ b/src/styles/windows.less
@@ -0,0 +1,14 @@
+//
+// Styles for the 'windows' module.
+//
+
+@import 'common';
+
+@import 'widgets/ActionWidget.less';
+
+@import 'Window.less';
+@import 'Dialog.less';
+@import 'dialogs/MessageDialog.less';
+@import 'dialogs/ProcessDialog.less';
+
+@import 'WindowManager.less';
diff --git a/src/themes/apex/common.less b/src/themes/apex/common.less
index ee8f043..2f4a8c9 100644
--- a/src/themes/apex/common.less
+++ b/src/themes/apex/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
// Theme variables
@background-color-main: #fff;
diff --git a/src/themes/apex/core.less b/src/themes/apex/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/apex/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/apex/theme.less b/src/themes/apex/theme.less
new file mode 100644
index 0000000..0ad347a
--- /dev/null
+++ b/src/themes/apex/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be
included here.
+// This file is in turn included when building the theme.
+
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';
diff --git a/src/themes/blank/common.less b/src/themes/blank/common.less
index f9ec869..ebbb437 100644
--- a/src/themes/blank/common.less
+++ b/src/themes/blank/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
// Theme variables
@oo-ui-default-image-path: 'themes/blank/images';
diff --git a/src/themes/blank/core.less b/src/themes/blank/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/blank/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/blank/theme.less b/src/themes/blank/theme.less
new file mode 100644
index 0000000..680986a
--- /dev/null
+++ b/src/themes/blank/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be
included here.
+// This file is in turn included when building the theme.
+//
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';
diff --git a/src/themes/mediawiki/common.less b/src/themes/mediawiki/common.less
index ef02568..278dae4 100644
--- a/src/themes/mediawiki/common.less
+++ b/src/themes/mediawiki/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
// Theme variables
@oo-ui-default-image-path: 'themes/mediawiki/images';
diff --git a/src/themes/mediawiki/core.less b/src/themes/mediawiki/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/mediawiki/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/mediawiki/theme.less b/src/themes/mediawiki/theme.less
new file mode 100644
index 0000000..0ad347a
--- /dev/null
+++ b/src/themes/mediawiki/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be
included here.
+// This file is in turn included when building the theme.
+
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';
--
To view, visit https://gerrit.wikimedia.org/r/267288
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I647e2b55cea5c37b4944683b1416bc60b7aa7eb3
Gerrit-PatchSet: 5
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: VolkerE <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits