Bartosz Dziewoński has uploaded a new change for review.
https://gerrit.wikimedia.org/r/267288
Change subject: Split the library into four parts
......................................................................
Split the library into four parts
TODO: Write this commit message explaining what is going on here.
Thoughts:
* Gruntfile is noticeably more awful after this change.
* I'm not sure if the Less build changes are conducive
to allowing custom themes one day.
* We should kill the 'noimages' build, it will no longer
be useful after MediaWiki switches to the new ones,
but that'll be a breaking change?
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, 341 insertions(+), 222 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/oojs/ui refs/changes/88/267288/1
diff --git a/Gruntfile.js b/Gruntfile.js
index ab899b0..c2b6e47 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -10,10 +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 */';
@@ -39,7 +44,8 @@
grunt.loadTasks( 'build/tasks' );
( function () {
- var module, theme;
+ var distFile, module, theme, moduleStyleFiles;
+
function themify( str ) {
return str.replace( /\{theme\}/g, theme ).replace(
/\{Theme\}/g, themes[ theme ] );
}
@@ -47,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 );
}
@@ -57,29 +64,22 @@
delete modules[ module ];
}
}
- }() );
- ( function () {
- var module;
for ( module in modules ) {
requiredFiles.push.apply( requiredFiles, modules[
module ].scripts || [] );
requiredFiles.push.apply( requiredFiles, modules[
module ].styles || [] );
}
- }() );
- ( function () {
- var distFile, module, moduleStyleFiles;
function rtlPath( fileName ) {
return fileName.replace( /\.(\w+)$/, '.rtl.$1' );
}
// 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
),
@@ -93,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;
@@ -106,13 +106,46 @@
for ( module in modules ) {
if ( modules[ module ].styles ) {
moduleStyleFiles = modules[ module ].styles;
+ theme = modules[ module ].theme;
distFile = 'dist/' + module + '.css';
concatCssFiles[ distFile ] =
moduleStyleFiles.map( processFile );
concatCssFiles[ rtlPath( distFile ) ] =
concatCssFiles[ distFile ].map( rtlPath );
}
+ if ( modules[ module ].scripts ) {
+ distFile = 'dist/' + module + '.js';
+ concatJsFiles[ distFile ] = modules[ module
].scripts;
+ }
}
+
+ // 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 ) {
@@ -149,14 +182,16 @@
banner: grunt.file.read( 'build/banner.txt' )
},
js: {
- files: {
- 'dist/oojs-ui.js': modules[ 'oojs-ui'
].scripts,
- 'dist/oojs-ui-apex.js': modules[
'oojs-ui-apex' ].scripts,
- 'dist/oojs-ui-mediawiki.js': modules[
'oojs-ui-mediawiki' ].scripts
- }
+ files: concatJsFiles
},
css: {
files: concatCssFiles
+ },
+ omnibus: {
+ options: {
+ banner: ''
+ },
+ files: concatOmnibus
},
demoCss: {
options: {
@@ -193,8 +228,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: {
@@ -436,6 +480,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'
] );
@@ -447,7 +492,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 1a67158..7305319 100644
--- a/build/modules.yaml
+++ b/build/modules.yaml
@@ -1,121 +1,166 @@
{
# The JavaScript library.
- "oojs-ui": {
+ "oojs-ui-core": {
"scripts": [
"src/intro.js.txt",
+
+ # This is the core of the library. The basic building
block of Element,
+ # facilities to connect PHP and JS widgets, some
abstract classes, a bunch
+ # of convenience menthods.
"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, part 1. These should
be the same classes that are
+ # supported in OOjs UI PHP.
+ "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/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, part 2.
+ "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/outro.js.txt"
+ ]
+ },
+ "oojs-ui-widgets": {
+ "scripts": [
+ "src/intro.js.txt",
+
+ # Additional widgets and layouts that have no
equivalent in OOjs UI PHP.
+
+ "src/mixins/RequestManager.js",
+ "src/mixins/DraggableElement.js",
+ "src/mixins/DraggableGroupElement.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/OutlineControlsWidget.js",
+ "src/widgets/ToggleWidget.js",
+
+ "src/widgets/ToggleButtonWidget.js",
+ "src/widgets/CapsuleMultiSelectWidget.js",
+ "src/widgets/CapsuleItemWidget.js",
+ "src/widgets/SelectFileWidget.js",
+
+ "src/widgets/ButtonOptionWidget.js",
+ "src/widgets/MenuSectionOptionWidget.js",
+ "src/widgets/OutlineOptionWidget.js",
+ "src/widgets/TabOptionWidget.js",
+
+ "src/widgets/ProgressBarWidget.js",
+ "src/widgets/SearchWidget.js",
+
+ "src/widgets/ButtonSelectWidget.js",
+ "src/widgets/OutlineSelectWidget.js",
+ "src/widgets/TabSelectWidget.js",
+
+ "src/widgets/NumberInputWidget.js",
+ "src/widgets/ToggleSwitchWidget.js",
+
+ "src/outro.js.txt"
+ ],
+ },
+ "oojs-ui-toolbars": {
+ "scripts": [
+ "src/intro.js.txt",
+
+ "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/outro.js.txt"
+ ],
+ },
+ "oojs-ui-windows": {
+ "scripts": [
+ "src/intro.js.txt",
- "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/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",
"src/outro.js.txt"
- ]
+ ],
},
# All styles, built per-theme, and theme-specific scripts.
@@ -127,17 +172,33 @@
"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"
]
},
@@ -145,7 +206,8 @@
"oojs-ui-mediawiki-icons-accessibility": {
"styles": [
"src/themes/mediawiki/icons-accessibility.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-{theme}-icons-movement": {
"styles": [
@@ -160,7 +222,8 @@
"oojs-ui-mediawiki-icons-alerts": {
"styles": [
"src/themes/mediawiki/icons-alerts.json"
- ]
+ ],
+ "theme": "mediawiki"
},
"oojs-ui-{theme}-icons-interactions": {
"styles": [
@@ -200,21 +263,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..c0299bd 100644
--- a/src/styles/common.less
+++ b/src/styles/common.less
@@ -1,3 +1,7 @@
+// 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.
+// Build process should ensure that import paths are set up correctly for this
to happen.
@import 'theme';
// Variables
diff --git a/src/styles/core.less b/src/styles/core.less
index 4f1c677..ebb215f 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';
@@ -21,71 +19,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';
@@ -93,30 +56,8 @@
@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..5bde633
--- /dev/null
+++ b/src/styles/widgets.less
@@ -0,0 +1,40 @@
+//
+// 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/MenuSectionOptionWidget.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..1f5bf20
--- /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: newchange
Gerrit-Change-Id: I647e2b55cea5c37b4944683b1416bc60b7aa7eb3
Gerrit-PatchSet: 1
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits