├── .eslintignore ├── .eslintrc.js ├── .github ├── dependabot.yml └── semantic.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc.json ├── .travis.yml ├── .yarnrc ├── CONTRIBUTING.md ├── LICENSE.md ├── LICENSES └── MIT.txt ├── README.md ├── copyright.js ├── jest.js ├── package.json ├── packages ├── generator-liferay-theme │ ├── .gitattributes │ ├── .yarnrc │ ├── .yo-rc.json │ ├── CHANGELOG.md │ ├── LICENSE.md │ ├── README.md │ ├── generators │ │ ├── admin │ │ │ ├── admin.js │ │ │ └── index.js │ │ ├── app │ │ │ ├── app.js │ │ │ ├── index.js │ │ │ └── templates │ │ │ │ └── src │ │ │ │ └── css │ │ │ │ └── _custom.scss.ejs │ │ ├── classic │ │ │ ├── classic.js │ │ │ └── index.js │ │ ├── facet-theme │ │ │ ├── index.js │ │ │ └── templates │ │ │ │ ├── .gitignore.ejs │ │ │ │ ├── gulpfile.js.ejs │ │ │ │ ├── package.json.ejs │ │ │ │ └── src │ │ │ │ ├── WEB-INF │ │ │ │ ├── liferay-look-and-feel.xml.ejs │ │ │ │ └── liferay-plugin-package.properties.ejs │ │ │ │ └── images │ │ │ │ └── thumbnail.png │ │ ├── layout │ │ │ ├── __tests__ │ │ │ │ └── index.test.js │ │ │ ├── index.js │ │ │ ├── standalone-layout.js │ │ │ ├── templates │ │ │ │ ├── .gitignore.ejs │ │ │ │ ├── docroot │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ ├── liferay-layout-templates.xml.ejs │ │ │ │ │ │ └── liferay-plugin-package.properties.ejs │ │ │ │ │ └── layout.png │ │ │ │ ├── gulpfile.js.ejs │ │ │ │ └── package.json.ejs │ │ │ └── theme-layout.js │ │ └── themelet │ │ │ ├── index.js │ │ │ └── templates │ │ │ ├── .gitignore.ejs │ │ │ ├── package.json.ejs │ │ │ └── src │ │ │ └── css │ │ │ └── _custom.scss.ejs │ ├── gulpfile.js │ ├── lib │ │ ├── LayoutCreator.js │ │ ├── ProgressLine.js │ │ ├── __tests__ │ │ │ ├── LayoutCreator.test.js │ │ │ └── __fixtures__ │ │ │ │ ├── layout_template.tpl │ │ │ │ └── processed_template_data.json │ │ ├── generation │ │ │ ├── layout.js │ │ │ └── theme-based.js │ │ ├── templates │ │ │ └── layout_template.jst │ │ ├── util.js │ │ ├── utils │ │ │ ├── Copier.js │ │ │ ├── Project.js │ │ │ ├── config.js │ │ │ └── promptWithConfig.js │ │ └── versions.js │ └── package.json └── liferay-theme-tasks │ ├── .yarnrc │ ├── CHANGELOG.md │ ├── LICENSE.md │ ├── README.md │ ├── lib │ ├── __tests__ │ │ └── util.test.js │ ├── checkNodeVersion.js │ ├── devDependencies.js │ ├── project │ │ ├── __tests__ │ │ │ ├── _theme-config.test.js │ │ │ ├── fixtures │ │ │ │ └── a-project │ │ │ │ │ └── package.json │ │ │ └── index.test.js │ │ ├── gulp.js │ │ ├── index.js │ │ ├── options.js │ │ ├── store.js │ │ └── theme-config.js │ ├── r2 │ │ ├── index.js │ │ └── liferay-r2 │ │ │ ├── __tests__ │ │ │ └── index.test.js │ │ │ ├── css-parse.js │ │ │ ├── index.js │ │ │ └── plugins │ │ │ ├── bg.js │ │ │ ├── fontawesome.js │ │ │ └── yui3.js │ ├── test │ │ ├── fixtures │ │ │ ├── plugins │ │ │ │ └── 7.0 │ │ │ │ │ └── test-plugin-layouttpl │ │ │ │ │ ├── docroot │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ ├── liferay-layout-templates.xml │ │ │ │ │ │ └── liferay-plugin-package.properties │ │ │ │ │ ├── test_plugin.png │ │ │ │ │ └── test_plugin.tpl │ │ │ │ │ └── package.json │ │ │ └── themes │ │ │ │ ├── 7.1 │ │ │ │ ├── base-theme │ │ │ │ │ ├── node_modules │ │ │ │ │ │ ├── parent-theme │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ │ │ ├── liferay-hook.xml │ │ │ │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ │ ├── content │ │ │ │ │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ │ │ │ │ └── Language_es.properties │ │ │ │ │ │ │ │ │ └── resources-importer │ │ │ │ │ │ │ │ │ ├── readme.txt │ │ │ │ │ │ │ │ │ └── sitemap.json │ │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ ├── _custom.scss │ │ │ │ │ │ │ │ └── base │ │ │ │ │ │ │ │ │ └── _text.scss │ │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ └── main.js │ │ │ │ │ │ └── test-themelet │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ └── _custom.scss │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ └── icon.png │ │ │ │ │ │ │ ├── js │ │ │ │ │ │ │ └── main.js │ │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── freemarker.ftl │ │ │ │ │ │ │ └── velocity.vm │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ ├── liferay-hook.xml │ │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── content │ │ │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ │ │ └── Language_es.properties │ │ │ │ │ │ │ └── resources-importer │ │ │ │ │ │ │ ├── readme.txt │ │ │ │ │ │ │ └── sitemap.json │ │ │ │ │ │ ├── css │ │ │ │ │ │ ├── _custom.scss │ │ │ │ │ │ └── base │ │ │ │ │ │ │ └── _text.scss │ │ │ │ │ │ ├── js │ │ │ │ │ │ └── main.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ └── portal_normal.ftl │ │ │ │ ├── explicit-dependency-theme │ │ │ │ │ ├── custom_src_path │ │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ │ ├── liferay-hook.xml │ │ │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ ├── content │ │ │ │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ │ │ │ └── Language_es.properties │ │ │ │ │ │ │ │ └── resources-importer │ │ │ │ │ │ │ │ ├── readme.txt │ │ │ │ │ │ │ │ └── sitemap.json │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ ├── _custom.scss │ │ │ │ │ │ │ └── base │ │ │ │ │ │ │ │ └── _text.scss │ │ │ │ │ │ ├── js │ │ │ │ │ │ │ └── main.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ └── portal_normal.ftl │ │ │ │ │ ├── node_modules │ │ │ │ │ │ └── liferay-frontend-theme-styled │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ ├── _application.scss │ │ │ │ │ │ │ ├── _aui_variables.scss │ │ │ │ │ │ │ ├── _base.scss │ │ │ │ │ │ │ ├── _custom.scss │ │ │ │ │ │ │ ├── _extras.scss │ │ │ │ │ │ │ ├── _imports.scss │ │ │ │ │ │ │ ├── _layout.scss │ │ │ │ │ │ │ ├── _liferay_custom.scss │ │ │ │ │ │ │ ├── _liferay_variables.scss │ │ │ │ │ │ │ ├── _navigation.scss │ │ │ │ │ │ │ ├── _portal.scss │ │ │ │ │ │ │ ├── _portlet.scss │ │ │ │ │ │ │ ├── _taglib.scss │ │ │ │ │ │ │ ├── application │ │ │ │ │ │ │ │ ├── _autocomplete.scss │ │ │ │ │ │ │ │ ├── _cards.scss │ │ │ │ │ │ │ │ ├── _color_picker.scss │ │ │ │ │ │ │ │ ├── _dialog.scss │ │ │ │ │ │ │ │ ├── _drag_drop.scss │ │ │ │ │ │ │ │ ├── _editable.scss │ │ │ │ │ │ │ │ ├── _editor_alloy.scss │ │ │ │ │ │ │ │ ├── _editor_ckeditor.scss │ │ │ │ │ │ │ │ ├── _editor_html.scss │ │ │ │ │ │ │ │ ├── _editor_lfr_source.scss │ │ │ │ │ │ │ │ ├── _file_icons_colors.scss │ │ │ │ │ │ │ │ ├── _item_viewer.scss │ │ │ │ │ │ │ │ ├── _labels.scss │ │ │ │ │ │ │ │ ├── _list_group_deprecated.scss │ │ │ │ │ │ │ │ ├── _menu.scss │ │ │ │ │ │ │ │ ├── _misc.scss │ │ │ │ │ │ │ │ ├── _modal.scss │ │ │ │ │ │ │ │ ├── _page_customization.scss │ │ │ │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ │ │ │ ├── _panel.scss │ │ │ │ │ │ │ │ ├── _splitter.scss │ │ │ │ │ │ │ │ ├── _tabs.scss │ │ │ │ │ │ │ │ ├── _tag_list.scss │ │ │ │ │ │ │ │ ├── _tag_selector.scss │ │ │ │ │ │ │ │ ├── _tooltip.scss │ │ │ │ │ │ │ │ ├── _tree.scss │ │ │ │ │ │ │ │ ├── _underlay.scss │ │ │ │ │ │ │ │ ├── _user_icons_colors.scss │ │ │ │ │ │ │ │ ├── _variables.scss │ │ │ │ │ │ │ │ └── _variables_custom.scss │ │ │ │ │ │ │ ├── aui.scss │ │ │ │ │ │ │ ├── base │ │ │ │ │ │ │ │ ├── _loading_animation.scss │ │ │ │ │ │ │ │ ├── _logo.scss │ │ │ │ │ │ │ │ ├── _misc.scss │ │ │ │ │ │ │ │ ├── _quick_access.scss │ │ │ │ │ │ │ │ ├── _table_styles.scss │ │ │ │ │ │ │ │ ├── _text.scss │ │ │ │ │ │ │ │ ├── _util.scss │ │ │ │ │ │ │ │ ├── _variables.scss │ │ │ │ │ │ │ │ └── _variables_custom.scss │ │ │ │ │ │ │ ├── layout │ │ │ │ │ │ │ │ ├── _layout.scss │ │ │ │ │ │ │ │ └── _variables.scss │ │ │ │ │ │ │ ├── main.scss │ │ │ │ │ │ │ ├── navigation │ │ │ │ │ │ │ │ ├── _manage_controls.scss │ │ │ │ │ │ │ │ ├── _page.scss │ │ │ │ │ │ │ │ ├── _portlet.scss │ │ │ │ │ │ │ │ └── _template_selector.scss │ │ │ │ │ │ │ ├── portal │ │ │ │ │ │ │ │ ├── _accessibility.scss │ │ │ │ │ │ │ │ ├── _add_content.scss │ │ │ │ │ │ │ │ ├── _asset_category_selector.scss │ │ │ │ │ │ │ │ ├── _asset_column.scss │ │ │ │ │ │ │ │ ├── _auto_row.scss │ │ │ │ │ │ │ │ ├── _edit_layout.scss │ │ │ │ │ │ │ │ ├── _generic_portal.scss │ │ │ │ │ │ │ │ ├── _generic_portlet.scss │ │ │ │ │ │ │ │ ├── _header_row.scss │ │ │ │ │ │ │ │ ├── _openid.scss │ │ │ │ │ │ │ │ ├── _page_settings.scss │ │ │ │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ │ │ │ ├── _panel_component.scss │ │ │ │ │ │ │ │ ├── _panel_page.scss │ │ │ │ │ │ │ │ ├── _panel_pagination.scss │ │ │ │ │ │ │ │ ├── _portlet_css_editor.scss │ │ │ │ │ │ │ │ ├── _preview.scss │ │ │ │ │ │ │ │ ├── _rich_editor.scss │ │ │ │ │ │ │ │ ├── _spa.scss │ │ │ │ │ │ │ │ ├── _tag_selector.scss │ │ │ │ │ │ │ │ ├── _toolbar.scss │ │ │ │ │ │ │ │ ├── _translation_manager.scss │ │ │ │ │ │ │ │ ├── _tree.scss │ │ │ │ │ │ │ │ └── _uploader.scss │ │ │ │ │ │ │ ├── portlet │ │ │ │ │ │ │ │ ├── _app_components.scss │ │ │ │ │ │ │ │ ├── _controls.scss │ │ │ │ │ │ │ │ ├── _labels.scss │ │ │ │ │ │ │ │ ├── _messages.scss │ │ │ │ │ │ │ │ ├── _misc.scss │ │ │ │ │ │ │ │ ├── _spec.scss │ │ │ │ │ │ │ │ ├── _topper.scss │ │ │ │ │ │ │ │ ├── _variables.scss │ │ │ │ │ │ │ │ └── _variables_custom.scss │ │ │ │ │ │ │ └── taglib │ │ │ │ │ │ │ │ ├── _app_view_common.scss │ │ │ │ │ │ │ │ ├── _app_view_entry.scss │ │ │ │ │ │ │ │ ├── _app_view_search_entry.scss │ │ │ │ │ │ │ │ ├── _app_view_toolbar.scss │ │ │ │ │ │ │ │ ├── _asset_links.scss │ │ │ │ │ │ │ │ ├── _asset_metadata.scss │ │ │ │ │ │ │ │ ├── _calendar.scss │ │ │ │ │ │ │ │ ├── _categorization_filter.scss │ │ │ │ │ │ │ │ ├── _diff.scss │ │ │ │ │ │ │ │ ├── _diff_html.scss │ │ │ │ │ │ │ │ ├── _diff_version_comparator.scss │ │ │ │ │ │ │ │ ├── _discussion.scss │ │ │ │ │ │ │ │ ├── _drop_here_info.scss │ │ │ │ │ │ │ │ ├── _field_wrapper.scss │ │ │ │ │ │ │ │ ├── _flags.scss │ │ │ │ │ │ │ │ ├── _form_navigator.scss │ │ │ │ │ │ │ │ ├── _header.scss │ │ │ │ │ │ │ │ ├── _icon.scss │ │ │ │ │ │ │ │ ├── _image_selector.scss │ │ │ │ │ │ │ │ ├── _input_localized.scss │ │ │ │ │ │ │ │ ├── _input_move_boxes.scss │ │ │ │ │ │ │ │ ├── _layouts_tree.scss │ │ │ │ │ │ │ │ ├── _map.scss │ │ │ │ │ │ │ │ ├── _navbar.scss │ │ │ │ │ │ │ │ ├── _preview.scss │ │ │ │ │ │ │ │ ├── _search_container.scss │ │ │ │ │ │ │ │ ├── _search_toggle.scss │ │ │ │ │ │ │ │ ├── _social_activities.scss │ │ │ │ │ │ │ │ ├── _social_bookmarks.scss │ │ │ │ │ │ │ │ ├── _user_display.scss │ │ │ │ │ │ │ │ ├── _webdav.scss │ │ │ │ │ │ │ │ └── _workflow_status.scss │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── aui │ │ │ │ │ │ │ │ └── loading_indicator.gif │ │ │ │ │ │ │ └── screenshot.png │ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ └── kickstart-theme │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ ├── WEB-INF │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ └── liferay-plugin-package.properties │ │ │ │ │ ├── css │ │ │ │ │ └── _custom.scss │ │ │ │ │ ├── images │ │ │ │ │ └── image.png │ │ │ │ │ ├── js │ │ │ │ │ └── main.js │ │ │ │ │ └── templates │ │ │ │ │ └── portal_normal.ftl │ │ │ │ └── 7.2 │ │ │ │ └── base-theme-7-2 │ │ │ │ ├── node_modules │ │ │ │ ├── parent-theme │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ ├── liferay-hook.xml │ │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── content │ │ │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ │ │ └── Language_es.properties │ │ │ │ │ │ │ └── resources-importer │ │ │ │ │ │ │ ├── readme.txt │ │ │ │ │ │ │ └── sitemap.json │ │ │ │ │ │ ├── css │ │ │ │ │ │ ├── _custom.scss │ │ │ │ │ │ └── base │ │ │ │ │ │ │ └── _text.scss │ │ │ │ │ │ └── js │ │ │ │ │ │ └── main.js │ │ │ │ └── test-themelet │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ ├── css │ │ │ │ │ └── _custom.scss │ │ │ │ │ ├── images │ │ │ │ │ └── icon.png │ │ │ │ │ ├── js │ │ │ │ │ └── main.js │ │ │ │ │ └── templates │ │ │ │ │ ├── freemarker.ftl │ │ │ │ │ └── velocity.vm │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ ├── WEB-INF │ │ │ │ ├── liferay-hook.xml │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ └── src │ │ │ │ │ ├── content │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ └── Language_es.properties │ │ │ │ │ └── resources-importer │ │ │ │ │ ├── readme.txt │ │ │ │ │ └── sitemap.json │ │ │ │ ├── css │ │ │ │ ├── _custom.scss │ │ │ │ └── base │ │ │ │ │ └── _text.scss │ │ │ │ ├── js │ │ │ │ └── main.js │ │ │ │ └── templates │ │ │ │ └── portal_normal.ftl │ │ └── util.js │ └── util.js │ ├── package.json │ ├── plugin │ ├── __tests__ │ │ └── index.test.js │ ├── index.js │ ├── lib │ │ ├── __tests__ │ │ │ ├── fixtures │ │ │ │ └── hook_modules │ │ │ │ │ ├── hook-module-1.js │ │ │ │ │ ├── hook-module-2.js │ │ │ │ │ ├── hook-module-3.js │ │ │ │ │ └── hook-module-4.js │ │ │ └── register_hooks.test.js │ │ └── register_hooks.js │ ├── prompts │ │ ├── __tests__ │ │ │ ├── fixtures │ │ │ │ ├── c-project │ │ │ │ │ └── package.json │ │ │ │ └── server │ │ │ │ │ ├── deploy │ │ │ │ │ └── .gitignore │ │ │ │ │ ├── glassfish │ │ │ │ │ └── domains │ │ │ │ │ │ └── .gitignore │ │ │ │ │ ├── jboss │ │ │ │ │ └── standalone │ │ │ │ │ │ └── deployments │ │ │ │ │ │ └── .gitignore │ │ │ │ │ ├── tomcat │ │ │ │ │ └── webapps │ │ │ │ │ │ └── .gitignore │ │ │ │ │ └── wildfly │ │ │ │ │ └── standalone │ │ │ │ │ └── deployments │ │ │ │ │ └── .gitignore │ │ │ └── init_prompt.test.js │ │ └── init_prompt.js │ └── tasks │ │ ├── __tests__ │ │ ├── deploy.test.js │ │ ├── init.test.js │ │ ├── version.test.js │ │ └── war.test.js │ │ ├── deploy.js │ │ ├── init.js │ │ ├── version.js │ │ └── war.js │ └── theme │ ├── index.js │ ├── lib │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ └── look_and_feel_util.test.js.snap │ │ ├── fixtures │ │ │ ├── b-project │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ │ ├── WEB-INF │ │ │ │ │ ├── liferay-hook.xml │ │ │ │ │ ├── liferay-look-and-feel.xml │ │ │ │ │ ├── liferay-plugin-package.properties │ │ │ │ │ └── src │ │ │ │ │ │ ├── content │ │ │ │ │ │ ├── Language_en.properties │ │ │ │ │ │ └── Language_es.properties │ │ │ │ │ │ └── resources-importer │ │ │ │ │ │ ├── readme.txt │ │ │ │ │ │ └── sitemap.json │ │ │ │ │ ├── css │ │ │ │ │ ├── _custom.scss │ │ │ │ │ └── base │ │ │ │ │ │ └── _text.scss │ │ │ │ │ ├── js │ │ │ │ │ └── main.js │ │ │ │ │ └── templates │ │ │ │ │ └── portal_normal.ftl │ │ │ └── look_and_feel_util │ │ │ │ ├── base-look-and-feel.json │ │ │ │ ├── mixed-look-and-feel.json │ │ │ │ └── parent-look-and-feel.json │ │ ├── look_and_feel_util.test.js │ │ ├── status.test.js │ │ ├── theme_finder.test.js │ │ └── war_deployer.test.js │ ├── bourbon_dependencies.js │ ├── getBaseThemeDependencies.js │ ├── look_and_feel_util.js │ ├── normalize.js │ ├── status.js │ ├── theme_finder.js │ ├── theme_inspector.js │ ├── upgrade │ │ ├── 7.1 │ │ │ └── upgrade.js │ │ ├── 7.2 │ │ │ └── upgrade.js │ │ └── __tests__ │ │ │ └── upgrade.test.js │ └── war_deployer.js │ ├── prompts │ ├── __tests__ │ │ ├── extend_prompt.test.js │ │ ├── global_module_prompt.test.js │ │ ├── kickstart_prompt.test.js │ │ ├── module_prompt.test.js │ │ ├── npm_module_prompt.test.js │ │ └── prompt_util.test.js │ ├── extend_prompt.js │ ├── global_module_prompt.js │ ├── kickstart_prompt.js │ ├── module_prompt.js │ ├── npm_module_prompt.js │ ├── url_package_prompt.js │ └── util.js │ └── tasks │ ├── __tests__ │ ├── __snapshots__ │ │ └── status.test.js.snap │ ├── build.test.js │ ├── deploy.test.js │ ├── kickstart.test.js │ └── status.test.js │ ├── build │ ├── compile-css.js │ ├── index.js │ └── themelets.js │ ├── deploy.js │ ├── extend.js │ ├── init.js │ ├── kickstart.js │ ├── overwrite.js │ ├── status.js │ ├── upgrade.js │ └── watch.js ├── qa ├── lerna.json ├── package.json └── yarn.lock ├── scripts └── qa.js └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | /**/node_modules/* 2 | /copyright.js 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const path = require('path'); 7 | 8 | module.exports = { 9 | env: { 10 | jest: true, 11 | node: true, 12 | }, 13 | extends: 'liferay', 14 | parserOptions: { 15 | ecmaVersion: 2018, 16 | }, 17 | rules: { 18 | 'notice/notice': [ 19 | 'error', 20 | { 21 | templateFile: path.join(__dirname, 'copyright.js'), 22 | }, 23 | ], 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configuration for the GitHub's Dependabot. 3 | # 4 | # See: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - directory: "/" 9 | open-pull-requests-limit: 1 10 | package-ecosystem: "npm" 11 | rebase-strategy: "disabled" 12 | schedule: 13 | interval: "weekly" 14 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configuration for the Semantic Pull Request bot. 3 | # https://github.com/probot/semantic-pull-requests 4 | 5 | allowMergeCommits: true 6 | 7 | titleAndCommits: true 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /packages/*/node_modules 3 | /qa/node_modules 4 | /qa/packages 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .nyc_output 2 | coverage 3 | test 4 | tmp 5 | liferay-theme.json -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Template file, not actually valid JSON. 2 | /packages/generator-liferay-theme/generators/app/templates/_package.json 3 | 4 | # We don't want Prettier to strip the trailing blank line. 5 | /copyright.js 6 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "bracketSpacing": false, 4 | "singleQuote": true, 5 | "tabWidth": 4, 6 | "useTabs": true 7 | } 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | before_install: 2 | - gem install compass 3 | 4 | install: 5 | - yarn 6 | 7 | language: node_js 8 | 9 | node_js: 10 | - '10' 11 | 12 | script: 13 | - yarn ci 14 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | --version.preid pre 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2017 Liferay, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /LICENSES/MIT.txt: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2017 Liferay, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /copyright.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © <%= YEAR %> Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | -------------------------------------------------------------------------------- /jest.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | jest.setTimeout(30000); 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "chalk": "^3.0.0", 4 | "cross-spawn": "^7.0.1", 5 | "eslint": "^6.5.1", 6 | "eslint-config-liferay": "^13.0.0", 7 | "fs-extra": "^8.1.0", 8 | "jest": "^24.1.0", 9 | "prettier": "^1.18.2", 10 | "yargs": "^15.1.0" 11 | }, 12 | "private": true, 13 | "repository": "https://github.com/liferay/liferay-js-themes-toolkit", 14 | "scripts": { 15 | "ci": "yarn format:check && yarn lint && yarn test", 16 | "format": "prettier --write \".*.js\" \"*.{js,json,md}\" \"packages/**/*.{js,json,md}\" \"scripts/*.js\"", 17 | "format:check": "prettier --list-different \".*.js\" \"*.{js,json,md}\" \"packages/**/*.{js,json,md}\" \"scripts/*.js\"", 18 | "lint": "eslint \".*.js\" \"*.js\" \"packages/**/*.js\" \"scripts/*.js\"", 19 | "lint:fix": "eslint --fix \".*.js\" \"*.js\" \"packages/**/*.js\" \"scripts/*.js\"", 20 | "qa": "node scripts/qa.js", 21 | "test": "jest" 22 | }, 23 | "keywords": [ 24 | "yeoman-generator" 25 | ], 26 | "jest": { 27 | "setupFilesAfterEnv": [ 28 | "/jest.js" 29 | ], 30 | "testPathIgnorePatterns": [ 31 | "/__fixtures__/", 32 | "/__snapshots__/", 33 | "/fixtures/", 34 | "/node_modules/" 35 | ], 36 | "modulePathIgnorePatterns": [ 37 | "/generator-liferay-theme/generators/layout/" 38 | ], 39 | "testRegex": [ 40 | ".*\\.test\\.js", 41 | "/__tests__/.*\\.js", 42 | "/plugin/test/.*\\.js" 43 | ] 44 | }, 45 | "workspaces": [ 46 | "packages/*" 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/.yarnrc: -------------------------------------------------------------------------------- 1 | version-tag-prefix "generator-liferay-theme/v" 2 | version-git-message "chore: prepare generator-liferay-theme/v%s" -------------------------------------------------------------------------------- /packages/generator-liferay-theme/.yo-rc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2017 Liferay, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/admin/admin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const themeBased = require('../../lib/generation/theme-based'); 9 | 10 | /** 11 | * Generator to create a theme project extending styled, kickstarted from 12 | * admin. 13 | */ 14 | module.exports = class extends Generator { 15 | async writing() { 16 | await themeBased.writing(this, 'admin'); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/admin/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const {sayHello} = require('../../lib/util'); 9 | 10 | /** 11 | * Generator to create a theme project extending styled, kickstarted from 12 | * admin. 13 | */ 14 | module.exports = class extends Generator { 15 | initializing() { 16 | sayHello(this); 17 | 18 | this.composeWith(require.resolve('../facet-theme')); 19 | this.composeWith(require.resolve('./admin')); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/app/app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const path = require('path'); 7 | const {argv} = require('yargs'); 8 | const Generator = require('yeoman-generator'); 9 | 10 | const Copier = require('../../lib/utils/Copier'); 11 | const Project = require('../../lib/utils/Project'); 12 | 13 | // If --which parameter is given show path to generator and exit 14 | if (argv.which) { 15 | // eslint-disable-next-line no-console 16 | console.log(require.resolve('./index')); 17 | process.exit(0); 18 | } 19 | 20 | /** 21 | * Generator to create a theme project. 22 | */ 23 | module.exports = class extends Generator { 24 | initializing() { 25 | this.sourceRoot(path.join(__dirname, 'templates')); 26 | this._project = new Project(this); 27 | } 28 | 29 | async writing() { 30 | const cp = new Copier(this); 31 | 32 | const context = { 33 | fontAwesome: this._project.fontAwesome, 34 | }; 35 | 36 | cp.copyDir('src', {context}); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/app/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const {sayHello} = require('../../lib/util'); 9 | 10 | /** 11 | * Generator to create a theme project extending styled, kickstarted from 12 | * classic. 13 | */ 14 | module.exports = class extends Generator { 15 | initializing() { 16 | sayHello(this); 17 | 18 | this.composeWith(require.resolve('../facet-theme')); 19 | this.composeWith(require.resolve('./app')); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/app/templates/src/css/_custom.scss.ejs: -------------------------------------------------------------------------------- 1 | /* These inject tags are used for dynamically creating imports for themelet styles, you can place them where ever you like in this file. */ 2 | 3 | /* inject:imports */ 4 | <% if (fontAwesome) { %> 5 | @import 'liferay-font-awesome/scss/font-awesome'; 6 | @import 'liferay-font-awesome/scss/glyphicons'; 7 | <% } %> 8 | /* endinject */ 9 | 10 | /* This file allows you to override default styles in one central location for easier upgrade and maintenance. */ -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/classic/classic.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const themeBased = require('../../lib/generation/theme-based'); 9 | 10 | /** 11 | * Generator to create a theme project extending styled, kickstarted from 12 | * classic. 13 | */ 14 | module.exports = class extends Generator { 15 | async writing() { 16 | await themeBased.writing(this, 'classic'); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/classic/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const {sayHello} = require('../../lib/util'); 9 | 10 | /** 11 | * Generator to create a theme project extending styled, kickstarted from 12 | * classic. 13 | */ 14 | module.exports = class extends Generator { 15 | initializing() { 16 | sayHello(this); 17 | 18 | this.composeWith(require.resolve('../facet-theme')); 19 | this.composeWith(require.resolve('./classic')); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/.gitignore.ejs: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | liferay-theme.json 5 | .web_bundle_build 6 | .yo-rc.json -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/gulpfile.js.ejs: -------------------------------------------------------------------------------- 1 | /** 2 | * © 2017 Liferay, Inc. 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | 'use strict'; 8 | 9 | var gulp = require('gulp'); 10 | var liferayThemeTasks = require('liferay-theme-tasks'); 11 | 12 | liferayThemeTasks.registerTasks({ 13 | gulp, 14 | }); 15 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/package.json.ejs: -------------------------------------------------------------------------------- 1 | { 2 | "name": "<%= themeDirName %>", 3 | "version": "1.0.0", 4 | "main": "package.json", 5 | "keywords": ["liferay-theme"], 6 | "liferayTheme": { 7 | "baseTheme": "styled", 8 | "fontAwesome": <%= fontAwesome %>, 9 | "screenshot": "", 10 | "templateLanguage": "ftl", 11 | "version": "<%= liferayVersion %>" 12 | }, 13 | "devDependencies": <%- devDependencies %>, 14 | "scripts": { 15 | "init": "gulp init", 16 | "build": "gulp build", 17 | "deploy": "gulp deploy", 18 | "extend": "gulp extend", 19 | "init": "gulp init", 20 | "kickstart": "gulp kickstart", 21 | "status": "gulp status", 22 | "upgrade": "gulp upgrade", 23 | "watch": "gulp watch" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/src/WEB-INF/liferay-look-and-feel.xml.ejs: -------------------------------------------------------------------------------- 1 | 2 | .0//EN" "http://www.liferay.com/dtd/liferay-look-and-feel_<%= liferayVersion.replace('.', '_') %>_0.dtd"> 3 | 4 | 5 | 6 | <%= liferayVersion %>.0+ 7 | 8 | 9 | ftl 10 | 11 | portlet-barebone 12 | 13 | 14 | portlet-borderless 15 | 16 | 17 | true 18 | portlet-decorate 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/src/WEB-INF/liferay-plugin-package.properties.ejs: -------------------------------------------------------------------------------- 1 | name=<%= themeName %> 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=<%= liferayVersion %>.0+ 12 | 13 | resources-importer-developer-mode-enabled=true 14 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/facet-theme/templates/src/images/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/generator-liferay-theme/generators/facet-theme/templates/src/images/thumbnail.png -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const Generator = require('yeoman-generator'); 7 | 8 | const {sayHello} = require('../../lib/util'); 9 | const Project = require('../../lib/utils/Project'); 10 | 11 | /** 12 | * Generator to create a layout project. 13 | */ 14 | module.exports = class extends Generator { 15 | initializing() { 16 | sayHello(this); 17 | 18 | const project = new Project(this); 19 | 20 | if (project.type === Project.THEME) { 21 | this.composeWith(require.resolve('./theme-layout')); 22 | } else { 23 | this.composeWith(require.resolve('./standalone-layout')); 24 | } 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/.gitignore.ejs: -------------------------------------------------------------------------------- 1 | .yo-rc.json 2 | dist 3 | liferay-plugin.json 4 | node_modules -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/docroot/WEB-INF/liferay-layout-templates.xml.ejs: -------------------------------------------------------------------------------- 1 | 2 | .0//EN" "http://www.liferay.com/dtd/liferay-layout-templates_<%= liferayVersion.replace('.', '_') %>_0.dtd"> 3 | 4 | 5 | 6 | 7 | <%= templateDestination %>/<%= templateFilename %> 8 | <%= templateDestination %>/<%= thumbnailFilename %> 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/docroot/WEB-INF/liferay-plugin-package.properties.ejs: -------------------------------------------------------------------------------- 1 | name=<%= layoutName %> 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=<%= liferayVersion %>.0+ -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/docroot/layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/generator-liferay-theme/generators/layout/templates/docroot/layout.png -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/gulpfile.js.ejs: -------------------------------------------------------------------------------- 1 | /** 2 | * © 2017 Liferay, Inc. 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | 'use strict'; 8 | 9 | var gulp = require('gulp'); 10 | var liferayPluginTasks = require('liferay-theme-tasks/plugin'); 11 | 12 | liferayPluginTasks.registerTasks({ 13 | gulp, 14 | }); 15 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/templates/package.json.ejs: -------------------------------------------------------------------------------- 1 | { 2 | "name": "<%= layoutDirName %>", 3 | "version": "1.0.0", 4 | "main": "package.json", 5 | "keywords": ["liferay-theme"], 6 | "liferayLayoutTemplate": { 7 | "version": "<%= liferayVersion %>" 8 | }, 9 | "devDependencies": <%- devDependencies %>, 10 | "scripts": { 11 | "init": "gulp init", 12 | "build": "gulp build", 13 | "deploy": "gulp deploy", 14 | "init": "gulp init" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/layout/theme-layout.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const path = require('path'); 9 | const Generator = require('yeoman-generator'); 10 | 11 | const {prompting, runLayoutCreator} = require('../../lib/generation/layout'); 12 | const {snakeCase} = require('../../lib/util'); 13 | const Copier = require('../../lib/utils/Copier'); 14 | 15 | module.exports = class extends Generator { 16 | initializing() { 17 | this.sourceRoot(path.join(__dirname, 'templates')); 18 | } 19 | 20 | async prompting() { 21 | this.answers = await prompting(this); 22 | } 23 | 24 | async writing() { 25 | const cp = new Copier(this); 26 | 27 | const {layoutId, liferayVersion} = this.answers; 28 | const layoutName = snakeCase(layoutId); 29 | const templateFilename = `${layoutName}.ftl`; 30 | const thumbnailFilename = `${layoutName}.png`; 31 | 32 | let layoutFolder = layoutId; 33 | 34 | if (!layoutFolder.endsWith('-layouttpl')) { 35 | layoutFolder += '-layouttpl'; 36 | } 37 | 38 | const context = { 39 | templateDestination: `/layouttpl/custom/${layoutFolder}`, 40 | templateFilename, 41 | thumbnailFilename, 42 | }; 43 | 44 | cp.copyFile('docroot/layout.png', { 45 | context, 46 | dest: `src/layouttpl/custom/${layoutFolder}/${thumbnailFilename}`, 47 | rawCopy: true, 48 | }); 49 | 50 | cp.copyFile('docroot/WEB-INF/liferay-layout-templates.xml', { 51 | context, 52 | dest: `src/WEB-INF/liferay-layout-templates.xml`, 53 | }); 54 | 55 | const templateContent = await runLayoutCreator( 56 | layoutId, 57 | liferayVersion 58 | ); 59 | 60 | this.fs.write( 61 | `src/layouttpl/custom/${layoutFolder}/${templateFilename}`, 62 | templateContent 63 | ); 64 | } 65 | }; 66 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/themelet/templates/.gitignore.ejs: -------------------------------------------------------------------------------- 1 | node_modules 2 | .yo-rc.json -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/themelet/templates/package.json.ejs: -------------------------------------------------------------------------------- 1 | { 2 | "name": "<%= themeletDirName %>", 3 | "version": "1.0.0", 4 | "main": "package.json", 5 | "keywords": ["liferay-theme"], 6 | "liferayTheme": { 7 | "screenshot": "", 8 | "themelet": true, 9 | "version": "<%= liferayVersion %>" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/generators/themelet/templates/src/css/_custom.scss.ejs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/generator-liferay-theme/generators/themelet/templates/src/css/_custom.scss.ejs -------------------------------------------------------------------------------- /packages/generator-liferay-theme/gulpfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var gulp = require('gulp'); 9 | var coveralls = require('gulp-coveralls'); 10 | 11 | gulp.task('coveralls', () => { 12 | gulp.src('coverage/**/lcov.info').pipe(coveralls()); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/ProgressLine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | module.exports = class ProgressLine { 7 | constructor() { 8 | this._lastLineLength = 0; 9 | } 10 | 11 | update({percent, total, transferred}) { 12 | const out = process.stdout; 13 | 14 | let line = ''; 15 | 16 | line += `${(transferred / 1000000).toFixed(2)}MB `; 17 | line += total ? `of ${(total / 1000000).toFixed(2)}MB ` : ''; 18 | line += 'transferred'; 19 | line += total ? ` (${(percent * 100).toFixed(1)}%)` : ''; 20 | 21 | out.write(' '.repeat(this._lastLineLength)); 22 | out.write('\r'); 23 | out.write(line); 24 | out.write('\r'); 25 | 26 | this._lastLineLength = line.length; 27 | } 28 | 29 | finish() { 30 | const out = process.stdout; 31 | 32 | out.write(' '.repeat(this._lastLineLength)); 33 | out.write('\r'); 34 | 35 | this._lastLineLength = 0; 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/__tests__/__fixtures__/layout_template.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | ${processor.processColumn("column-1", "portlet-column-content portlet-column-content-first")} 5 |
6 |
7 | ${processor.processColumn("column-2", "portlet-column-content portlet-column-content-last")} 8 |
9 |
10 |
11 |
12 | ${processor.processColumn("column-3", "portlet-column-content portlet-column-content-first")} 13 |
14 |
15 | ${processor.processColumn("column-4", "portlet-column-content")} 16 |
17 |
18 | ${processor.processColumn("column-5", "portlet-column-content portlet-column-content-last")} 19 |
20 |
21 |
22 |
23 | ${processor.processColumn("column-6", "portlet-column-content portlet-column-content-only")} 24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/__tests__/__fixtures__/processed_template_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | [ 3 | { 4 | "number": 1, 5 | "size": 2, 6 | "className": "portlet-column-first", 7 | "contentClassName": "portlet-column-content-first" 8 | }, 9 | { 10 | "number": 2, 11 | "size": 10, 12 | "className": "portlet-column-last", 13 | "contentClassName": "portlet-column-content-last" 14 | } 15 | ], 16 | [ 17 | { 18 | "number": 3, 19 | "size": 2, 20 | "className": "portlet-column-first", 21 | "contentClassName": "portlet-column-content-first" 22 | }, 23 | { 24 | "number": 4, 25 | "size": 1 26 | }, 27 | { 28 | "number": 5, 29 | "size": 9, 30 | "className": "portlet-column-last", 31 | "contentClassName": "portlet-column-content-last" 32 | } 33 | ], 34 | [ 35 | { 36 | "number": 6, 37 | "size": 12, 38 | "className": "portlet-column-only", 39 | "contentClassName": "portlet-column-content-only" 40 | } 41 | ] 42 | ] 43 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/generation/layout.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const LayoutCreator = require('../../lib/LayoutCreator'); 7 | const {normalizeName} = require('../../lib/util'); 8 | const config = require('../../lib/utils/config'); 9 | const promptWithConfig = require('../../lib/utils/promptWithConfig'); 10 | const versions = require('../../lib/versions'); 11 | 12 | async function prompting(generator) { 13 | return await promptWithConfig(generator, 'layout', [ 14 | { 15 | default: 'My Liferay Layout', 16 | message: 'What would you like to call your layout template?', 17 | name: 'layoutName', 18 | type: 'input', 19 | }, 20 | { 21 | default(answers) { 22 | return normalizeName(answers.layoutName || ''); 23 | }, 24 | message: 'What id would you like to give to your layout template?', 25 | name: 'layoutId', 26 | type: 'input', 27 | }, 28 | { 29 | choices: versions.supported, 30 | default: versions.supported[0], 31 | message: 'Which version of Liferay is this theme for?', 32 | name: 'liferayVersion', 33 | type: 'list', 34 | }, 35 | ]); 36 | } 37 | 38 | async function runLayoutCreator(className, liferayVersion) { 39 | const options = { 40 | className, 41 | liferayVersion, 42 | }; 43 | 44 | if (config.batchMode()) { 45 | options.rowData = [ 46 | [ 47 | { 48 | className: 'portlet-column-only', 49 | contentClassName: 'portlet-column-content-only', 50 | number: 1, 51 | size: 12, 52 | }, 53 | ], 54 | ]; 55 | } 56 | 57 | const layoutCreator = new LayoutCreator(options); 58 | 59 | return await layoutCreator.run(); 60 | } 61 | 62 | module.exports = { 63 | prompting, 64 | runLayoutCreator, 65 | }; 66 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/templates/layout_template.jst: -------------------------------------------------------------------------------- 1 |
<% _.forEach(rowData, function(row, index) { %> 2 |
<% _.forEach(row, function(column, index) { %> 3 |
" id="column-<%= column.number %>"> 4 | $<%= '{' %>processor.processColumn("column-<%= column.number %>", "portlet-column-content<%= column.contentClassName ? " " + column.contentClassName : "" %>")<%= '}' %> 5 |
<% }); %> 6 |
<% }); %> 7 |
8 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/utils/promptWithConfig.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const config = require('./config'); 7 | 8 | /** 9 | * A function to process prompts as specified in the configuration file. 10 | * @param {Generator} generator a Yeoman generator 11 | * @param {string} namespace the generator namespace as defined in 12 | * config.getDefaultAnswer() 13 | * @param {Array} prompts a Yeoman prompts array 14 | * @return {object} the set of answers 15 | */ 16 | async function promptWithConfig(generator, namespace, prompts) { 17 | if (Array.isArray(namespace)) { 18 | prompts = namespace; 19 | namespace = generator.namespace; 20 | } 21 | 22 | // Tweak defaults with config values 23 | prompts = prompts.map(prompt => { 24 | let defaultDefault = undefined; 25 | 26 | if (prompt.default !== undefined) { 27 | defaultDefault = prompt.default; 28 | } 29 | 30 | prompt.default = config.getDefaultAnswer( 31 | namespace, 32 | prompt.name, 33 | defaultDefault 34 | ); 35 | 36 | return prompt; 37 | }); 38 | 39 | // Decide whether to run in batch or interactive mode 40 | if (config.batchMode()) { 41 | return prompts.reduce((answers, prompt) => { 42 | let val = prompt.default; 43 | 44 | if (typeof val === 'function') { 45 | val = val(answers); 46 | } 47 | 48 | answers[prompt.name] = val; 49 | 50 | return answers; 51 | }, {}); 52 | } else { 53 | return await generator.prompt(prompts); 54 | } 55 | } 56 | 57 | module.exports = promptWithConfig; 58 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/lib/versions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const semver = require('semver'); 7 | 8 | module.exports = { 9 | // Supported portal versions (must be sorted from most recent to oldest 10 | // because that's the contract with outer modules using this array). 11 | supported: ['7.3', '7.2'].sort( 12 | (l, r) => -semver.compare(semver.coerce(l), semver.coerce(r)) 13 | ), 14 | 15 | // Supported theme versions indexed by portal version 16 | theme: { 17 | admin: { 18 | 7.2: '^2.0.0', 19 | 7.3: '^4.0.0', 20 | }, 21 | 22 | classic: { 23 | 7.2: '^2.0.0', 24 | 7.3: '^4.0.0', 25 | }, 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /packages/generator-liferay-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generator-liferay-theme", 3 | "version": "10.0.1", 4 | "description": "Yeoman generator for creating Liferay themes", 5 | "license": "MIT", 6 | "main": "generators/app/index.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/liferay/liferay-js-themes-toolkit", 10 | "directory": "packages/generator-liferay-theme" 11 | }, 12 | "author": { 13 | "name": "Nate Cavanaugh", 14 | "email": "nathan.cavanaugh@liferay.com", 15 | "url": "https://github.com/natecavanaugh" 16 | }, 17 | "contributors": [ 18 | { 19 | "name": "Rob Frampton", 20 | "email": "rob.g.frampton@gmail.com" 21 | } 22 | ], 23 | "engines": { 24 | "node": ">=8.0.0" 25 | }, 26 | "files": [ 27 | "generators", 28 | "lib" 29 | ], 30 | "keywords": [ 31 | "yeoman-generator", 32 | "liferay", 33 | "theme" 34 | ], 35 | "dependencies": { 36 | "async": "^2.6.1", 37 | "chalk": "^3.0.0", 38 | "extract-zip": "^1.6.7", 39 | "fs-extra": "^8.1.0", 40 | "got": "^10.2.2", 41 | "gulp": "^4.0.0", 42 | "inquirer": "^0.12.0", 43 | "liferay-npm-build-tools-common": "^2.17.1", 44 | "liferay-theme-tasks": "^10.0.0", 45 | "lodash": "^4.17.11", 46 | "rimraf": "^3.0.0", 47 | "semver": "^7.1.1", 48 | "xml2js": "^0.4.23", 49 | "yargs": "^15.1.0", 50 | "yeoman-generator": "^3.2.0" 51 | }, 52 | "devDependencies": { 53 | "chai": "^1.10.0", 54 | "chai-fs": "^0.1.0", 55 | "gulp-coveralls": "^0.1.4", 56 | "sinon": "^4.4.6", 57 | "strip-ansi": "^3.0.1" 58 | }, 59 | "scripts": { 60 | "changelog": "npx liferay-changelog-generator", 61 | "ci": "cd ../.. && yarn ci", 62 | "postversion": "npx liferay-js-publish", 63 | "preversion": "yarn ci" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/.yarnrc: -------------------------------------------------------------------------------- 1 | version-tag-prefix "liferay-theme-tasks/v" 2 | version-git-message "chore: prepare liferay-theme-tasks/v%s" -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2017 Liferay, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/checkNodeVersion.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | /** 7 | * Rather than checking for a specific version of NodeJS, we check for features 8 | * that we expect to be present. 9 | */ 10 | function checkNodeVersion() { 11 | const REQUIREMENTS = [ 12 | // Added to NodeJS v7: https://nodejs.org/fa/blog/release/v7.0.0/ 13 | () => !!Object.values, 14 | ]; 15 | 16 | if (!REQUIREMENTS.every(Boolean)) { 17 | // eslint-disable-next-line no-console 18 | console.log( 19 | 'warning: liferay-theme-tasks requires a more recent version ' + 20 | 'of NodeJS - please consider upgrading: ' + 21 | 'https://nodejs.org/en/about/releases/' 22 | ); 23 | } 24 | } 25 | 26 | module.exports = checkNodeVersion; 27 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/project/__tests__/fixtures/a-project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "a-project", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "gulp": "^3.8.10", 6 | "liferay-theme-deps-7.1": "*", 7 | "liferay-theme-tasks": "*" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/project/gulp.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const resolve = require('resolve'); 7 | 8 | class Gulp { 9 | constructor(project, gulp) { 10 | this._project = project; 11 | 12 | if (gulp !== undefined) { 13 | this._gulp = gulp; 14 | } else { 15 | // eslint-disable-next-line liferay/no-dynamic-require 16 | this._gulp = require(resolve.sync('gulp', { 17 | basedir: project.dir, 18 | })); 19 | } 20 | 21 | this._gulp.runSequence = (...args) => { 22 | let cb; 23 | 24 | if (typeof args[args.length - 1] === 'function') { 25 | cb = args.pop(); 26 | } 27 | 28 | this._gulp.series( 29 | ...args.map(task => { 30 | if (Array.isArray(task)) { 31 | return this._gulp.parallel(...task); 32 | } else { 33 | return task; 34 | } 35 | }) 36 | )(cb); 37 | }; 38 | } 39 | 40 | get gulp() { 41 | return this._gulp; 42 | } 43 | } 44 | 45 | module.exports = Gulp; 46 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/project/theme-config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const _ = require('lodash'); 7 | 8 | class ThemeConfig { 9 | constructor(project) { 10 | this._project = project; 11 | } 12 | 13 | get config() { 14 | return this._project.pkgJson.liferayTheme; 15 | } 16 | 17 | removeConfig(keys) { 18 | const {_project} = this; 19 | 20 | _project.modifyPkgJson(pkgJson => ({ 21 | ...pkgJson, 22 | liferayTheme: _.omit(pkgJson.liferayTheme, keys), 23 | })); 24 | } 25 | 26 | setConfig(config) { 27 | const {_project} = this; 28 | 29 | _project.modifyPkgJson(pkgJson => { 30 | if (pkgJson.liferayTheme) { 31 | if (config.baseTheme) { 32 | pkgJson.liferayTheme.baseTheme = undefined; 33 | } 34 | 35 | if (config.themeletDependencies) { 36 | pkgJson.liferayTheme.themeletDependencies = undefined; 37 | } 38 | } 39 | 40 | pkgJson = _.merge(pkgJson, { 41 | liferayTheme: config, 42 | }); 43 | 44 | return pkgJson; 45 | }); 46 | } 47 | } 48 | 49 | module.exports = ThemeConfig; 50 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/r2/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const chalk = require('chalk'); 9 | const gutil = require('gulp-util'); 10 | const path = require('path'); 11 | const {StringDecoder} = require('string_decoder'); 12 | const through = require('through2'); 13 | 14 | const liferayR2 = require('./liferay-r2'); 15 | 16 | const decoder = new StringDecoder('utf8'); 17 | const PluginError = gutil.PluginError; 18 | 19 | const PLUGIN_NAME = 'gulp-R2-css'; 20 | 21 | function gulpR2() { 22 | const task = through.obj(function(file, enc, cb) { 23 | if (file.isNull()) { 24 | return cb(null, file); 25 | } 26 | 27 | if (file.isBuffer()) { 28 | try { 29 | file.contents = swapBuffer( 30 | file.contents, 31 | path.relative('.', file.path) 32 | ); 33 | } catch (err) { 34 | this.push(file); 35 | 36 | // eslint-disable-next-line no-console 37 | console.log( 38 | chalk.red.bold('[ERROR]'), 39 | chalk.magenta(`.${path.sep}${err.filename}`), 40 | chalk.cyan( 41 | `(${err.position.end.line}:${err.position.end.column})` 42 | ), 43 | chalk.red.bold(err.description) 44 | ); 45 | 46 | task.hasCssParseErrors = true; 47 | } 48 | 49 | cb(null, file); 50 | } 51 | 52 | if (file.isStream()) { 53 | this.emit( 54 | 'error', 55 | new PluginError(PLUGIN_NAME, 'Streaming not supported') 56 | ); 57 | 58 | return cb(); 59 | } 60 | }); 61 | 62 | return task; 63 | } 64 | 65 | function swapBuffer(buffer, filename) { 66 | var swapped = liferayR2.swap(decoder.write(buffer), {filename}); 67 | 68 | return new Buffer.from(swapped); 69 | } 70 | 71 | module.exports = gulpR2; 72 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/r2/liferay-r2/plugins/bg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | var urlLeft = /(?!left.*\/)(left)(?=.*\))/g, 7 | urlRight = /(?!right.*\/)(right)(?=.*\))/g, 8 | leftRe = /\s(left)\s/, 9 | rightRe = /\s(right)\s/, 10 | percRe = /(\d+)%/, 11 | plug = function(r2) { 12 | var r2bgimage = function(v) { 13 | if (urlLeft.test(v)) { 14 | v = v.replace(urlLeft, 'right'); 15 | } else if (urlRight.test(v)) { 16 | v = v.replace(urlRight, 'left'); 17 | } 18 | 19 | return v; 20 | }; 21 | 22 | var r2bg = function(v) { 23 | v = r2bgimage(v); 24 | 25 | if (v.match(leftRe)) { 26 | v = v.replace(leftRe, ' right '); 27 | } else if (v.match(rightRe)) { 28 | v = v.replace(rightRe, ' left '); 29 | } else { 30 | var match = percRe.exec(v); 31 | 32 | if (match) { 33 | v = v.replace(percRe, 100 - match[1] + '%'); 34 | } 35 | } 36 | 37 | return v; 38 | }; 39 | 40 | r2.valueMap['background'] = r2bg; 41 | r2.valueMap['background-image'] = r2bgimage; 42 | }; 43 | 44 | module.exports.plug = plug; 45 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/r2/liferay-r2/plugins/fontawesome.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | var swapIcons = { 7 | f053: 'f054', 8 | f054: 'f053', 9 | f060: 'f061', 10 | f061: 'f060', 11 | f0a4: 'f0a5', 12 | f0a5: 'f0a4', 13 | f0a8: 'f0a9', 14 | f0a9: 'f0a8', 15 | f0d9: 'f0da', 16 | f0da: 'f0d9', 17 | f100: 'f101', 18 | f101: 'f100', 19 | f104: 'f105', 20 | f105: 'f104', 21 | f137: 'f138', 22 | f138: 'f137', 23 | f177: 'f178', 24 | f178: 'f177', 25 | }, 26 | contentRegexp = /^"\\(.*)"$/, 27 | plug = function(r2) { 28 | r2.valueMap['content'] = function(v) { 29 | if (contentRegexp.test(v)) { 30 | const icon = contentRegexp.exec(v)[1]; 31 | 32 | if (swapIcons[icon]) { 33 | v = '"\\' + swapIcons[icon] + '"'; 34 | } 35 | } 36 | 37 | return v; 38 | }; 39 | }; 40 | 41 | module.exports.plug = plug; 42 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/docroot/WEB-INF/liferay-layout-templates.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | /test_plugin.tpl 8 | /test_plugin.png 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/docroot/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Test Plugin 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/docroot/test_plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/docroot/test_plugin.png -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/docroot/test_plugin.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | $processor.processColumn("column-1", "portlet-column-content portlet-column-content-only") 5 |
6 |
7 |
-------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/plugins/7.0/test-plugin-layouttpl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-plugin-layouttpl", 3 | "version": "1.2.3", 4 | "liferayPlugin": { 5 | "version": "7.0" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "parent-theme", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": "styled", 9 | "version": "7.0" 10 | }, 11 | "dependencies": { 12 | "gulp": "^3.8.10", 13 | "liferay-theme-tasks": "*" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.0.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | 15 | portlet-decorator-1-from-parent 16 | 17 | 18 | portlet-decorator-3 19 | 20 | 21 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/parent-theme/src/js/main.js: -------------------------------------------------------------------------------- 1 | console.log('main.js'); -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-themelet", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "themelet": true, 9 | "version": "7.0" 10 | } 11 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* test-themelet/src/custom.css */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/images/icon.png -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/js/main.js: -------------------------------------------------------------------------------- 1 | // test-themelet/src/js/main.js -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/templates/freemarker.ftl: -------------------------------------------------------------------------------- 1 | <#--freemarker.ftl--> -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/node_modules/test-themelet/src/templates/velocity.vm: -------------------------------------------------------------------------------- 1 | ##velocity.vm -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "base-theme", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": { 9 | "liferayTheme": { 10 | "baseTheme": "styled", 11 | "screenshot": "", 12 | "templateLanguage": "ftl", 13 | "version": "7.1" 14 | }, 15 | "name": "parent-theme", 16 | "publishConfig": { 17 | "tag": "7_1_x" 18 | }, 19 | "version": "1.0.0" 20 | }, 21 | "templateLanguage": "ftl", 22 | "themeletDependencies": { 23 | "test-themelet": { 24 | "liferayTheme": { 25 | "themelet": true, 26 | "version": "7.1" 27 | }, 28 | "name": "test-themelet", 29 | "version": "0.0.0" 30 | } 31 | }, 32 | "version": "7.1" 33 | }, 34 | "dependencies": { 35 | "gulp": "^3.8.10", 36 | "liferay-theme-deps-7.1": "*", 37 | "liferay-theme-tasks": "*" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.0.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | portlet-decorator-1 15 | 16 | 17 | portlet-decorator-2 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ 5 | 6 | @import url(file.css); -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/base-theme/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // eslint-disable-next-line no-console 7 | console.log('main.js'); 8 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.1.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | portlet-decorator-1 15 | 16 | 17 | portlet-decorator-2 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/custom_src_path/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // eslint-disable-next-line no-console 7 | console.log('main.js'); 8 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_application.scss: -------------------------------------------------------------------------------- 1 | @import "application/variables_custom"; 2 | @import "application/variables"; 3 | 4 | @import "application/autocomplete"; 5 | @import "application/cards"; 6 | @import "application/color_picker"; 7 | @import "application/dialog"; 8 | @import "application/drag_drop"; 9 | @import "application/editable"; 10 | @import "application/editor_alloy"; 11 | @import "application/editor_ckeditor"; 12 | @import "application/editor_html"; 13 | @import "application/editor_lfr_source"; 14 | @import "application/file_icons_colors"; 15 | @import "application/item_viewer"; 16 | @import "application/labels"; 17 | @import "application/list_group_deprecated"; 18 | @import "application/menu"; 19 | @import "application/misc"; 20 | @import "application/modal"; 21 | @import "application/page_customization"; 22 | @import "application/pagination"; 23 | @import "application/panel"; 24 | @import "application/splitter"; 25 | @import "application/tabs"; 26 | @import "application/tag_list"; 27 | @import "application/tag_selector"; 28 | @import "application/tooltip"; 29 | @import "application/tree"; 30 | @import "application/underlay"; 31 | @import "application/user_icons_colors"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_aui_variables.scss: -------------------------------------------------------------------------------- 1 | // Icon paths 2 | 3 | $FontAwesomePath: "aui/lexicon/fonts/alloy-font-awesome/font"; 4 | $font-awesome-path: "aui/lexicon/fonts/alloy-font-awesome/font"; 5 | $icon-font-path: "aui/lexicon/fonts/"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_base.scss: -------------------------------------------------------------------------------- 1 | @import "base/variables_custom"; 2 | @import "base/variables"; 3 | 4 | @import "base/loading_animation"; 5 | @import "base/logo"; 6 | @import "base/misc"; 7 | @import "base/quick_access"; 8 | @import "base/table_styles"; 9 | @import "base/text"; 10 | @import "base/util"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* This file allows you to override default styles in one central location for easier upgrade and maintenance. */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_imports.scss: -------------------------------------------------------------------------------- 1 | @import "bourbon"; 2 | 3 | @import "mixins"; 4 | 5 | @import "aui/lexicon/lexicon-base-variables"; 6 | 7 | @import "aui/lexicon/bootstrap/mixins"; 8 | 9 | @import "aui/lexicon/lexicon-base/mixins"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_layout.scss: -------------------------------------------------------------------------------- 1 | @import "layout/variables"; 2 | 3 | @import "layout/layout"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_liferay_variables.scss: -------------------------------------------------------------------------------- 1 | $status-approved-border: $state-success-border !default; 2 | $status-approved-text: $state-success-text !default; 3 | 4 | $status-denied-border: $state-danger-border !default; 5 | $status-denied-text: $state-danger-text !default; 6 | 7 | $status-draft-border: $gray !default; 8 | $status-draft-text: $status-draft-border !default; 9 | 10 | $status-expired-border: $state-warning-border !default; 11 | $status-expired-text: $state-warning-text !default; 12 | 13 | $status-pending-border: $state-info-border !default; 14 | $status-pending-text: $state-info-text !default; 15 | 16 | $status-scheduled-border: $state-info-bg !default; 17 | $status-scheduled-text: $state-info-text !default; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_navigation.scss: -------------------------------------------------------------------------------- 1 | @import "navigation/manage_controls"; 2 | @import "navigation/page"; 3 | @import "navigation/portlet"; 4 | @import "navigation/template_selector"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_portal.scss: -------------------------------------------------------------------------------- 1 | @import "./portal/accessibility"; 2 | @import "./portal/add_content"; 3 | @import "./portal/asset_category_selector"; 4 | @import "./portal/asset_column"; 5 | @import "./portal/auto_row"; 6 | @import "./portal/edit_layout"; 7 | @import "./portal/generic_portal"; 8 | @import "./portal/generic_portlet"; 9 | @import "./portal/header_row"; 10 | @import "./portal/openid"; 11 | @import "./portal/page_settings"; 12 | @import "./portal/pagination"; 13 | @import "./portal/panel_component"; 14 | @import "./portal/panel_page"; 15 | @import "./portal/panel_pagination"; 16 | @import "./portal/portlet_css_editor"; 17 | @import "./portal/preview"; 18 | @import "./portal/rich_editor"; 19 | @import "./portal/spa"; 20 | @import "./portal/tag_selector"; 21 | @import "./portal/toolbar"; 22 | @import "./portal/translation_manager"; 23 | @import "./portal/tree"; 24 | @import "./portal/uploader"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_portlet.scss: -------------------------------------------------------------------------------- 1 | @import "portlet/variables_custom"; 2 | @import "portlet/variables"; 3 | 4 | @import "portlet/controls"; 5 | @import "portlet/labels"; 6 | @import "portlet/messages"; 7 | @import "portlet/spec"; 8 | @import "portlet/topper"; 9 | 10 | @import "portlet/misc"; 11 | 12 | @import "portlet/app_components"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/_taglib.scss: -------------------------------------------------------------------------------- 1 | @import "./taglib/app_view_common"; 2 | @import "./taglib/app_view_entry"; 3 | @import "./taglib/app_view_search_entry"; 4 | @import "./taglib/app_view_toolbar"; 5 | @import "./taglib/asset_links"; 6 | @import "./taglib/asset_metadata"; 7 | @import "./taglib/calendar"; 8 | @import "./taglib/categorization_filter"; 9 | @import "./taglib/diff"; 10 | @import "./taglib/diff_html"; 11 | @import "./taglib/diff_version_comparator"; 12 | @import "./taglib/discussion"; 13 | @import "./taglib/drop_here_info"; 14 | @import "./taglib/field_wrapper"; 15 | @import "./taglib/flags"; 16 | @import "./taglib/form_navigator"; 17 | @import "./taglib/header"; 18 | @import "./taglib/icon"; 19 | @import "./taglib/image_selector"; 20 | @import "./taglib/input_localized"; 21 | @import "./taglib/input_move_boxes"; 22 | @import "./taglib/layouts_tree"; 23 | @import "./taglib/map"; 24 | @import "./taglib/navbar"; 25 | @import "./taglib/preview"; 26 | @import "./taglib/search_container"; 27 | @import "./taglib/search_toggle"; 28 | @import "./taglib/social_activities"; 29 | @import "./taglib/social_bookmarks"; 30 | @import "./taglib/user_display"; 31 | @import "./taglib/webdav"; 32 | @import "./taglib/workflow_status"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_autocomplete.scss: -------------------------------------------------------------------------------- 1 | .lfr-autocomplete-input-list .yui3-aclist-list { 2 | margin: 0; 3 | } 4 | 5 | .liferay-autocomplete-input-mirror { 6 | left: -9999px; 7 | overflow-x: hidden; 8 | overflow-y: auto; 9 | position: absolute; 10 | top: -9999px; 11 | visibility: hidden; 12 | white-space: pre-wrap; 13 | word-wrap: break-word; 14 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_cards.scss: -------------------------------------------------------------------------------- 1 | .card-tab-group { 2 | .card-tab:nth-child(n+2) { 3 | border-left: $card-tab-border-left-width solid $card-tab-border-left-color; 4 | padding-left: $card-tab-padding-left-width; 5 | 6 | .card-tab { 7 | border-left: $card-tab-border-left-width solid lighten($card-tab-border-left-color, 10%); 8 | padding-left: $card-tab-padding-left-width; 9 | 10 | .card-tab { 11 | border-left-color: lighten($card-tab-border-left-color, 20%); 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_color_picker.scss: -------------------------------------------------------------------------------- 1 | .hsv-palette { 2 | .hsv-view-container { 3 | .hsv-label-value-hex .hsv-value { 4 | width: 95px; 5 | } 6 | 7 | .hsv-label { 8 | display: inline; 9 | margin-left: 5px; 10 | } 11 | 12 | .hsv-value { 13 | width: 30px; 14 | } 15 | } 16 | } 17 | 18 | .yui3-color-picker-popover { 19 | .palette-container { 20 | border-collapse: separate; 21 | } 22 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_dialog.scss: -------------------------------------------------------------------------------- 1 | .dialog-bd { 2 | min-height: 30px; 3 | } 4 | 5 | .dialog-content { 6 | border: 1px solid #C8C9CA; 7 | padding: 5px; 8 | } 9 | 10 | .dialog-with-footer { 11 | .portlet-layout { 12 | height: calc(100% - #{$input-height-base} - #{2 * $dialog-footer-padding}); 13 | overflow-y: auto; 14 | } 15 | 16 | .button-holder { 17 | &.dialog-footer { 18 | background-color: #FFF; 19 | border-top: 1px solid #E5E5E5; 20 | bottom: 0; 21 | left: 0; 22 | margin: 0; 23 | padding: $dialog-footer-padding; 24 | position: fixed; 25 | width: 100%; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_drag_drop.scss: -------------------------------------------------------------------------------- 1 | .portlet-layout.dragging { 2 | border-collapse: separate; 3 | } 4 | 5 | .drop-area { 6 | background-color: #D3DADD; 7 | } 8 | 9 | .active-area { 10 | background: #FFC; 11 | } 12 | 13 | .portlet-boundary.yui3-dd-dragging { 14 | opacity: 0.6; 15 | 16 | .portlet { 17 | border: 2px dashed #CCC; 18 | } 19 | } 20 | 21 | .sortable-layout-proxy { 22 | opacity: 1; 23 | 24 | .portlet-topper { 25 | background-image: none; 26 | } 27 | } 28 | 29 | .proxy { 30 | cursor: move; 31 | 32 | opacity: 0.65; 33 | 34 | position: absolute; 35 | 36 | &.generic-portlet { 37 | height: 200px; 38 | width: 300px; 39 | 40 | .portlet-title { 41 | padding: 10px; 42 | } 43 | } 44 | 45 | &.not-intersecting .forbidden-action { 46 | background: url(../images/application/forbidden_action.png) no-repeat; 47 | display: block; 48 | height: 32px; 49 | position: absolute; 50 | right: -15px; 51 | top: -15px; 52 | width: 32px; 53 | } 54 | } 55 | 56 | .resizable-proxy { 57 | border: 1px dashed #828F95; 58 | position: absolute; 59 | visibility: hidden; 60 | } 61 | 62 | .sortable-proxy { 63 | background: #727C81; 64 | margin-top: 1px; 65 | } 66 | 67 | .lfr-freeform-layout-drag-indicator { 68 | visibility: hidden; 69 | } 70 | 71 | .sortable-layout-drag-target-indicator { 72 | margin: 2px 0; 73 | } 74 | 75 | .yui3-dd-proxy { 76 | z-index: 1110 !important; 77 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_editable.scss: -------------------------------------------------------------------------------- 1 | .lfr-editable { 2 | $edit-color: #68BB30; 3 | $edit-color-hover: darken(#68BB30, 10); 4 | 5 | outline: 1px dashed $edit-color; 6 | outline-offset: 2px; 7 | position: relative; 8 | 9 | &:after { 10 | background: $edit-color url(../images/common/edit_white.png) no-repeat 50%; 11 | content: ''; 12 | display: block; 13 | height: 20px; 14 | position: absolute; 15 | right: 5px; 16 | top: 5px; 17 | width: 30px; 18 | } 19 | 20 | &:focus { 21 | &:after { 22 | display: none; 23 | } 24 | 25 | &:hover { 26 | background-color: transparent; 27 | } 28 | } 29 | 30 | &:hover { 31 | background-color: rgba(255, 255, 255, 0.3); 32 | outline-color: $edit-color-hover; 33 | 34 | &:after { 35 | background-color: $edit-color-hover; 36 | } 37 | } 38 | } 39 | 40 | .lfr-editable-notice-close { 41 | margin-left: 1em; 42 | } 43 | 44 | .lfr-portlet-title-editable { 45 | margin-top: 0; 46 | z-index: 9999; 47 | 48 | .lfr-portlet-title-editable-content { 49 | padding: 0; 50 | 51 | .field-input { 52 | margin-bottom: 0; 53 | } 54 | 55 | .textfield-label { 56 | display: none; 57 | } 58 | 59 | .btn-toolbar-content { 60 | display: inline-block; 61 | vertical-align: bottom; 62 | } 63 | 64 | .btn-group { 65 | margin-top: 0; 66 | } 67 | 68 | .btn { 69 | display: inline-block; 70 | float: none; 71 | margin-top: 0; 72 | width: auto; 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_editor_alloy.scss: -------------------------------------------------------------------------------- 1 | .alloy-editor-container { 2 | .alloy-editor { 3 | &.alloy-editor-placeholder { 4 | color: #2B4259; 5 | 6 | &:empty:not(:focus) { 7 | background: transparent; 8 | border-left-color: #DBDDE1; 9 | color: #B0B4BB; 10 | } 11 | 12 | &.readonly { 13 | color: #CCC; 14 | } 15 | } 16 | 17 | outline: 0; 18 | } 19 | 20 | .alloy-editor-icon { 21 | color: #869CAD; 22 | } 23 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_editor_ckeditor.scss: -------------------------------------------------------------------------------- 1 | .cke_dialog .cke_dialog_ui_input_text { 2 | height: auto; 3 | } 4 | 5 | .cke_editable_inline a { 6 | cursor: pointer; 7 | } 8 | 9 | .cke_panel.cke_combopanel { 10 | width: 220px; 11 | } 12 | 13 | .cke_panel_block { 14 | .cke_panel_grouptitle { 15 | font-size: 20px; 16 | line-height: 20px; 17 | margin-top: 0; 18 | } 19 | 20 | .cke_panel_list { 21 | margin-left: 0; 22 | 23 | .cke_panel_listItem { 24 | line-height: initial; 25 | 26 | a:hover { 27 | text-decoration: none; 28 | } 29 | } 30 | } 31 | } 32 | 33 | /* ---------- CKEditor table ---------- */ 34 | 35 | .cke_show_border { 36 | width: 500px; 37 | 38 | td { 39 | height: 15px; 40 | } 41 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_editor_html.scss: -------------------------------------------------------------------------------- 1 | .html-editor.portlet { 2 | background: #FFF; 3 | color: #000; 4 | line-height: 1; 5 | padding: 1em; 6 | } 7 | 8 | .html-editor.portlet-message-boards { 9 | @include hyphens; 10 | 11 | word-wrap: break-word; 12 | 13 | blockquote { 14 | background: #EEF0F2 url(../images/message_boards/quoteleft.png) no-repeat 5px 5px; 15 | border: 1px solid #777; 16 | padding: 5px 45px; 17 | 18 | &:after { 19 | background: url(../images/message_boards/quoteright.png) no-repeat 50%; 20 | content: ''; 21 | display: block; 22 | float: right; 23 | height: 24px; 24 | margin-right: -35px; 25 | margin-top: -25px; 26 | width: 31px; 27 | z-index: 999; 28 | } 29 | 30 | cite { 31 | display: block; 32 | font-weight: bold; 33 | } 34 | } 35 | 36 | pre { 37 | background: #F9F9F9; 38 | border: 1px solid #777; 39 | padding: 0.5em; 40 | } 41 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_file_icons_colors.scss: -------------------------------------------------------------------------------- 1 | .file-icon-color-0 { 2 | background-color: $file-icon-color-0; 3 | color: $file-icon-text-color-0; 4 | } 5 | 6 | .file-icon-color-1 { 7 | background-color: $file-icon-color-1; 8 | color:$file-icon-text-color-1; 9 | } 10 | 11 | .file-icon-color-2 { 12 | background-color: $file-icon-color-2; 13 | color:$file-icon-text-color-2; 14 | } 15 | 16 | .file-icon-color-3 { 17 | background-color: $file-icon-color-3; 18 | color:$file-icon-text-color-3; 19 | } 20 | 21 | .file-icon-color-4 { 22 | background-color: $file-icon-color-4; 23 | color:$file-icon-text-color-4; 24 | } 25 | 26 | .file-icon-color-5 { 27 | background-color: $file-icon-color-5; 28 | color:$file-icon-text-color-5; 29 | } 30 | 31 | .file-icon-color-6 { 32 | background-color: $file-icon-color-6; 33 | color:$file-icon-text-color-6; 34 | } 35 | 36 | .file-icon-color-7 { 37 | background-color: $file-icon-color-7; 38 | color:$file-icon-text-color-7; 39 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_labels.scss: -------------------------------------------------------------------------------- 1 | .label-circle { 2 | &, .label { 3 | border-radius: $label-circle-border-radius; 4 | } 5 | } 6 | 7 | .label-rounded { 8 | &, .label { 9 | border-radius: $label-rounded-border-radius; 10 | } 11 | } 12 | 13 | .label-square { 14 | &, .label { 15 | border-radius: $label-square-border-radius; 16 | } 17 | } 18 | 19 | .label-entry { 20 | background-color: $label-entry-bg; 21 | border: solid $label-entry-border-width $label-entry-border-color; 22 | color: $label-entry-color; 23 | display: inline-block; 24 | font-size: $label-entry-font-size; 25 | font-weight: normal; 26 | padding: $label-entry-padding; 27 | 28 | button { 29 | background-color: transparent; 30 | border-width: 0; 31 | color: inherit; 32 | height: $label-entry-button-height; 33 | width: $label-entry-button-width; 34 | } 35 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_list_group_deprecated.scss: -------------------------------------------------------------------------------- 1 | .nav.list-group { 2 | li > a { 3 | &:focus, &:hover { 4 | background-color: #E5F5FC; 5 | color: #009AE5; 6 | } 7 | } 8 | 9 | > .active { 10 | border-width: 1px 0 0 0; 11 | 12 | > a { 13 | &, &:focus, &:hover { 14 | background-color: #60BFEF; 15 | border: 1px solid #60BFEF; 16 | color: #FFF; 17 | } 18 | } 19 | } 20 | 21 | .list-group-item { 22 | padding: 0; 23 | 24 | &.nav-header { 25 | background-color: #F3F3F3; 26 | padding-left: 10px; 27 | padding-right: 10px; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_menu.scss: -------------------------------------------------------------------------------- 1 | .lfr-page-templates li { 2 | a { 3 | padding: 0; 4 | 5 | label { 6 | cursor: pointer; 7 | display: block; 8 | padding: 5px 0 5px 5px; 9 | } 10 | } 11 | } 12 | 13 | .menu { 14 | position: absolute; 15 | width: auto; 16 | 17 | .notice-message { 18 | background-image: none; 19 | margin: 3px; 20 | padding: 6px; 21 | } 22 | } 23 | 24 | .menu-content { 25 | background: #FFF; 26 | list-style: none; 27 | min-width: 150px; 28 | 29 | li { 30 | margin: 0; 31 | padding: 0; 32 | 33 | .disabled { 34 | color: #999; 35 | } 36 | } 37 | } 38 | 39 | .menu-content { 40 | background: #CCC9C9 url(../images/application/menu_bg.png) repeat-x 0 0; 41 | border: 1px solid; 42 | border-color: #AEAFB1 #777879 #777879 #AEAFB1; 43 | padding: 2px 0; 44 | } 45 | 46 | .menugroup-content .menu-label { 47 | background: #D2D6DE; 48 | color: #5B677D; 49 | display: block; 50 | padding: 5px 3px; 51 | text-shadow: 1px 1px #FFF; 52 | } 53 | 54 | .menugroup-content ul { 55 | display: block; 56 | min-width: 0; 57 | } 58 | 59 | .menu-content li { 60 | border-bottom: 1px solid #BCBBBB; 61 | border-top: 1px solid #EEE; 62 | display: block; 63 | margin: 0; 64 | padding: 0; 65 | 66 | &.first { 67 | border-top-width: 0; 68 | } 69 | 70 | &.last { 71 | border-bottom-width: 0; 72 | } 73 | } 74 | 75 | .menu-content li a, .menu-content li .disabled { 76 | color: #2C2F34; 77 | display: block; 78 | padding: 4px 5px; 79 | text-decoration: none; 80 | } 81 | 82 | .menu-content li a.focus, .lfr-menu-expanded li a:focus { 83 | background-color: #5B677D; 84 | color: #FFF; 85 | text-shadow: -1px -1px #2C2F34; 86 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_misc.scss: -------------------------------------------------------------------------------- 1 | .app-view-drop-active { 2 | background-color: #00A2EA; 3 | font-weight: bold; 4 | 5 | .category-portlets & { 6 | background-color: #00A2EA; 7 | color: #FFF; 8 | } 9 | } 10 | 11 | .basecelleditor [class~="form-validator-message"] { 12 | clip: rect(auto auto auto auto); 13 | width: auto; 14 | } 15 | 16 | .document-library-file-entry-cell-editor-hidden { 17 | display: none; 18 | } 19 | 20 | .previous-level { 21 | display: inline-block; 22 | font-size: 21px; 23 | line-height: 21px; 24 | margin-right: 5px; 25 | text-decoration: none; 26 | vertical-align: middle; 27 | } 28 | 29 | .lfr-url-error { 30 | display: inline-block; 31 | white-space: normal; 32 | 33 | @include word-wrap(break-all); 34 | } 35 | 36 | .lfr-page-layouts { 37 | input[type="radio"]:checked + .card-horizontal { 38 | box-shadow: inset 0 0 0 $card-horizontal-on-border-width $card-horizontal-on-border; 39 | } 40 | 41 | .lfr-layout-template { 42 | label { 43 | cursor: pointer; 44 | } 45 | 46 | .layout-template-entry { 47 | height: 28px; 48 | width: 28px; 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_modal.scss: -------------------------------------------------------------------------------- 1 | .dialog-iframe-popup { 2 | #main-content, #wrapper { 3 | bottom: 0; 4 | left: 0; 5 | overflow: auto; 6 | padding: $dialog-iframe-padding; 7 | position: absolute; 8 | right: 0; 9 | top: 0; 10 | 11 | @include prefixer(overflow-scrolling, touch, 'webkit'); 12 | } 13 | } 14 | 15 | .modal { 16 | display: block; 17 | margin: 0; 18 | overflow: hidden; 19 | position: fixed; 20 | } 21 | 22 | .modal-body { 23 | overflow: auto; 24 | 25 | &.dialog-iframe-bd { 26 | overflow: hidden; 27 | } 28 | } 29 | 30 | .modal-hidden { 31 | display: none; 32 | } 33 | 34 | .modal-open .modal { 35 | overflow: hidden; 36 | } 37 | 38 | .portal-popup { 39 | .columns-max > .portlet-layout.row { 40 | margin-left: 0; 41 | margin-right: 0; 42 | 43 | > .portlet-column { 44 | padding-left: 0; 45 | padding-right: 0; 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_page_customization.scss: -------------------------------------------------------------------------------- 1 | .dragging .portlet-column.customizable { 2 | background-color: #CFFCCF; 3 | outline: 3px solid #5EAF3D; 4 | } 5 | 6 | .customizable-layout-column-content { 7 | &.yui3-widget-content-expanded { 8 | margin: 0 15px; 9 | } 10 | 11 | background-color: #C92C3C; 12 | } 13 | 14 | .layout-customizable-controls { 15 | background-color: rgba(201, 44, 60, 0.8) 16 | } 17 | 18 | .customizable { 19 | .customizable-layout-column-content { 20 | background-color: #5EAF3D; 21 | } 22 | 23 | .layout-customizable-controls { 24 | background-color: rgba(94, 175, 61, 0.8); 25 | } 26 | } 27 | 28 | .layout-customizable-controls-container { 29 | margin: 0 15px; 30 | position: relative; 31 | } 32 | 33 | .layout-customizable-controls { 34 | label { 35 | color: #FFF; 36 | } 37 | 38 | font-size: 1.5em; 39 | padding: 4px 16px; 40 | position: absolute; 41 | width: 100%; 42 | z-index: 15; 43 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_pagination.scss: -------------------------------------------------------------------------------- 1 | .paginator-link { 2 | background: #EEE no-repeat scroll 50% 1px; 3 | border: 1px solid #F0F1F2; 4 | border-color: #F0F1F2 #B2B2B2 #949494 #F0F1F1; 5 | color: #1F1E1E; 6 | display: inline-block; 7 | height: 20px; 8 | padding: 0; 9 | text-indent: -9999px; 10 | width: 20px; 11 | } 12 | 13 | .paginator-page-link { 14 | height: auto; 15 | text-indent: 0; 16 | } 17 | 18 | .paginator-current-page { 19 | background: #0083BD url(../images/application/paginator_link_current_bg.png) 0 0 repeat-x; 20 | border-color: #38B6EF #006D9E #006D9E #46B4E6; 21 | color: #FFF; 22 | text-shadow: -1px -1px #003C57; 23 | } 24 | 25 | .paginator-first-link { 26 | background-image: url(../images/arrows/paging_first.png); 27 | } 28 | 29 | .paginator-prev-link { 30 | background-image: url(../images/arrows/paging_previous.png); 31 | } 32 | 33 | .paginator-last-link { 34 | background-image: url(../images/arrows/paging_last.png); 35 | } 36 | 37 | .paginator-next-link { 38 | background-image: url(../images/arrows/paging_next.png); 39 | } 40 | 41 | .paginator-current-page-report, .paginator-total { 42 | color: #555; 43 | font-size: 0.9em; 44 | } 45 | 46 | .paginator-current-page-report { 47 | margin-left: 2em; 48 | } 49 | 50 | .taglib-page-iterator .search-pages .page-links { 51 | padding: 0; 52 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_panel.scss: -------------------------------------------------------------------------------- 1 | .lfr-panel-container { 2 | background: #FFF; 3 | } 4 | 5 | .lfr-panel-content { 6 | padding: 5px 10px; 7 | } 8 | 9 | .lfr-panel-basic .lfr-panel-content { 10 | padding-left: 15px; 11 | } 12 | 13 | .panel-hd { 14 | background: #C0C2C5 url(../images/application/panel_header_bg.png) repeat-x 0 0; 15 | border: 1px solid; 16 | border-color: #C8C9CA #AEB2B8 #AEB2B8 #C8C9CA; 17 | padding-left: 10px; 18 | text-shadow: 1px 1px #FFF; 19 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_splitter.scss: -------------------------------------------------------------------------------- 1 | .splitter { 2 | background-color: $splitter-bg; 3 | box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2); 4 | color: $splitter-text-color; 5 | padding: $splitter-padding; 6 | position: relative; 7 | z-index: 1; 8 | 9 | &.splitter-spaced { 10 | margin-bottom: $splitter-footer-margin; 11 | } 12 | } 13 | 14 | .table > tbody > tr.splitter { 15 | height: auto; 16 | 17 | > td { 18 | padding: 0; 19 | } 20 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_tabs.scss: -------------------------------------------------------------------------------- 1 | .lfr-nav.nav-tabs { 2 | margin-bottom: 20px; 3 | } 4 | 5 | .tab-active strong { 6 | font-weight: normal; 7 | } 8 | 9 | .tab-back { 10 | float: right; 11 | } 12 | 13 | .tab-back-content { 14 | border-width: 0; 15 | padding: 1px; 16 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_tag_list.scss: -------------------------------------------------------------------------------- 1 | .tag-items { 2 | list-style: none; 3 | margin: 0 1em 0 0; 4 | padding: 0 1em 0.5em 1em; 5 | white-space: normal; 6 | 7 | li { 8 | display: inline; 9 | float: left; 10 | margin: 0 1em 0 0; 11 | } 12 | 13 | a { 14 | white-space: nowrap; 15 | } 16 | } 17 | 18 | .tag-selected { 19 | color: #000; 20 | font-weight: bold; 21 | text-decoration: none; 22 | } 23 | 24 | .tag-cloud { 25 | line-height: 2.5em; 26 | 27 | $tag-popularity-font-size: 0.7em; 28 | 29 | @for $i from 1 through 6 { 30 | .tag-popularity-#{$i} { 31 | font-size: $tag-popularity-font-size + ($i * 0.3); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_tag_selector.scss: -------------------------------------------------------------------------------- 1 | .tagselector-content { 2 | border: 0; 3 | padding: 0; 4 | 5 | .textboxlistentry-holder { 6 | border-bottom: 2px solid #869CAD; 7 | margin-bottom: 10px; 8 | padding: 0; 9 | } 10 | } 11 | 12 | .categoriesselector-content .textboxlistentry-holder { 13 | background-color: transparent; 14 | border-width: 0; 15 | padding: 0; 16 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_tooltip.scss: -------------------------------------------------------------------------------- 1 | .tooltip { 2 | max-width: 200px; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_tree.scss: -------------------------------------------------------------------------------- 1 | .tree-node { 2 | .icon-check { 3 | padding-right: 2px; 4 | 5 | &:before { 6 | content: $check-empty; 7 | } 8 | } 9 | 10 | .tree-node-checked { 11 | .icon-check { 12 | padding-right: 0; 13 | 14 | &:before { 15 | content: $check; 16 | } 17 | } 18 | } 19 | 20 | [class ^="icon-"] { 21 | margin-right: 5px; 22 | } 23 | 24 | .tree-node-checkbox-container { 25 | margin-right: 0; 26 | } 27 | 28 | .tree-node-selected .tree-label { 29 | background: none; 30 | } 31 | } 32 | 33 | .tree-node-content { 34 | .tree-hitarea { 35 | color: #999; 36 | font-size: 10px; 37 | padding-right: 6px; 38 | } 39 | 40 | .tree-label { 41 | margin-left: 3px; 42 | } 43 | 44 | .tree-node-hidden-hitarea { 45 | visibility: hidden; 46 | } 47 | } 48 | 49 | .tree-node-selected .tree-label { 50 | background-color: transparent; 51 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_underlay.scss: -------------------------------------------------------------------------------- 1 | .underlay { 2 | clear: both; 3 | top: 100%; 4 | 5 | .yui3-widget-hd { 6 | height: 38px; 7 | } 8 | } 9 | 10 | .underlay-hidden { 11 | display: none; 12 | } 13 | 14 | .underlay-content { 15 | background: #F4F3F3 url(../images/common/message_panel_shadow.png) repeat-x 0 0; 16 | border: 0 solid #AEAFB1; 17 | border-width: 0 1px 1px; 18 | } 19 | 20 | .underlay-close { 21 | position: absolute; 22 | right: 5px; 23 | top: 5px; 24 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_user_icons_colors.scss: -------------------------------------------------------------------------------- 1 | .user-icon-color-0 { 2 | background-color: $user-icon-color-0; 3 | } 4 | 5 | .user-icon-color-1 { 6 | background-color: $user-icon-color-1; 7 | } 8 | 9 | .user-icon-color-2 { 10 | background-color: $user-icon-color-2; 11 | } 12 | 13 | .user-icon-color-3 { 14 | background-color: $user-icon-color-3; 15 | } 16 | 17 | .user-icon-color-4 { 18 | background-color: $user-icon-color-4; 19 | } 20 | 21 | .user-icon-color-5 { 22 | background-color: $user-icon-color-5; 23 | } 24 | 25 | .user-icon-color-6 { 26 | background-color: $user-icon-color-6; 27 | } 28 | 29 | .user-icon-color-7 { 30 | background-color: $user-icon-color-7; 31 | } 32 | 33 | .user-icon-color-8 { 34 | background-color: $user-icon-color-8; 35 | } 36 | 37 | .user-icon-color-9 { 38 | background-color: $user-icon-color-9; 39 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_variables_custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/application/_variables_custom.scss -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/aui.scss: -------------------------------------------------------------------------------- 1 | @import "aui/lexicon/lexicon-base"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_logo.scss: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: inline-block; 3 | line-height: 1; 4 | vertical-align: middle; 5 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_misc.scss: -------------------------------------------------------------------------------- 1 | /* ---------- Main content body ---------- */ 2 | 3 | .portal-iframe #main-content { 4 | width: 100%; 5 | } 6 | 7 | /* ---------- Separator ---------- */ 8 | 9 | .separator { 10 | border-top: 1px dotted #BFBFBF; 11 | } 12 | 13 | /* ---------- Status ---------- */ 14 | 15 | .entry-status { 16 | border-left: 4px solid transparent; 17 | } 18 | 19 | span.alert { 20 | display: inline-block; 21 | } 22 | 23 | /* ---------- Update manager ---------- */ 24 | 25 | .update-available { 26 | margin-top: 10px; 27 | padding: 2px; 28 | text-align: left; 29 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_quick_access.scss: -------------------------------------------------------------------------------- 1 | .quick-access-nav { 2 | position: absolute; 3 | top: -1000px; 4 | width: 100%; 5 | z-index: 1000; 6 | 7 | a { 8 | background: #333; 9 | background: rgba(51, 51, 51, 0.9); 10 | border: 1px solid #FFF; 11 | left: 0; 12 | outline: none; 13 | padding: 8px; 14 | position: absolute; 15 | right: 0; 16 | text-align: center; 17 | 18 | &:focus { 19 | color: #FFF; 20 | top: 1000px; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_table_styles.scss: -------------------------------------------------------------------------------- 1 | @include media-query(null, $screen-sm-max) { 2 | .responsive-table-horizontal { 3 | display: block; 4 | position: relative; 5 | width: 100%; 6 | 7 | &:after { 8 | clear: both; 9 | content: ''; 10 | display: block; 11 | font-size: 0; 12 | height: 0; 13 | visibility: hidden; 14 | } 15 | 16 | tbody { 17 | display: block; 18 | overflow-x: auto; 19 | position: relative; 20 | white-space: nowrap; 21 | width: auto; 22 | 23 | tr { 24 | display: inline-block; 25 | vertical-align: top; 26 | 27 | td { 28 | display: block; 29 | margin-bottom: 20px; 30 | 31 | &:first-child { 32 | text-align: left; 33 | } 34 | } 35 | } 36 | } 37 | 38 | thead { 39 | display: block; 40 | float: left; 41 | margin-right: 10px; 42 | 43 | &:after { 44 | clear: both; 45 | content: ""; 46 | display: block; 47 | font-size: 0; 48 | height: 0; 49 | visibility: hidden; 50 | } 51 | 52 | th { 53 | display: block; 54 | margin-bottom: 20px; 55 | text-align: right; 56 | 57 | &:first-child { 58 | text-align: right; 59 | } 60 | } 61 | } 62 | } 63 | 64 | .ie9 { 65 | .responsive-table-horizontal thead { 66 | float: none; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | .important { 2 | font-weight: bold; 3 | } 4 | 5 | .highlight { 6 | background: #FFC; 7 | font-weight: bold; 8 | margin: 0 1px; 9 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_util.scss: -------------------------------------------------------------------------------- 1 | .hide-accessible { 2 | clip: rect(0 0 0 0) !important; 3 | position: absolute !important; 4 | 5 | /*Webkit and IE7 let clipped content change the scroll height of the page*/ 6 | /*Scale webkit to 0*/ 7 | -webkit-transform: scale(0); 8 | -webkit-transform-origin-x: 0; 9 | -webkit-transform-origin-y: 0; 10 | /*Change IE7 to using fixed*/ 11 | *position: fixed !important; 12 | /*...And reset back to absolute for IE6*/ 13 | _position: absolute !important; 14 | } 15 | 16 | .force-offset { 17 | display: block !important; 18 | position: absolute !important; 19 | visibility: hidden !important; 20 | } 21 | 22 | .unselectable, .unselectable * { 23 | @include user-select(none); 24 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_variables.scss: -------------------------------------------------------------------------------- 1 | $loading-animation-color: #0CF !default; 2 | $loading-animation-size: 64px !default; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_variables_custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/base/_variables_custom.scss -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/layout/_layout.scss: -------------------------------------------------------------------------------- 1 | /* ---------- Column widths ---------- */ 2 | 3 | .portlet-column-content.empty { 4 | padding: $portlet-column-content-empty-padding; 5 | } 6 | 7 | /* ---------- Wrapper ---------- */ 8 | 9 | #wrapper { 10 | padding-bottom: $wrapper-padding-bottom; 11 | padding-top: $wrapper-padding-top; 12 | position: relative; 13 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/layout/_variables.scss: -------------------------------------------------------------------------------- 1 | $portlet-column-content-empty-padding: 50px; 2 | $wrapper-padding-bottom: 0; 3 | $wrapper-padding-top: 2em; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/main.scss: -------------------------------------------------------------------------------- 1 | @import "imports"; 2 | 3 | @import "base"; 4 | 5 | @import "portal"; 6 | 7 | @import "taglib"; 8 | 9 | @import "application"; 10 | 11 | @import "layout"; 12 | 13 | @import "control_menu"; 14 | 15 | @import "navigation"; 16 | 17 | @import "portlet"; 18 | 19 | @import "extras"; 20 | 21 | @import "custom"; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/navigation/_manage_controls.scss: -------------------------------------------------------------------------------- 1 | .modify-pages { 2 | li { 3 | position: relative; 4 | 5 | &.lfr-nav-hover { 6 | .delete-tab { 7 | opacity: 1; 8 | } 9 | } 10 | } 11 | 12 | .delete-tab { 13 | color: #444; 14 | cursor: pointer; 15 | display: block; 16 | font-size: 20px; 17 | font-weight: bold; 18 | height: 10px; 19 | line-height: 6px; 20 | margin-top: -8px; 21 | overflow: hidden; 22 | 23 | opacity: 0; 24 | 25 | padding: 3px 0; 26 | position: absolute; 27 | right: 1px; 28 | text-shadow: 0 1px #FFF; 29 | top: 50%; 30 | 31 | &:hover { 32 | color: #B50303; 33 | } 34 | } 35 | 36 | .drag-handle { 37 | cursor: move; 38 | left: 3px; 39 | margin-left: 15px; 40 | position: absolute; 41 | top: 15px; 42 | } 43 | } 44 | 45 | .controls-hidden .modify-pages { 46 | .lfr-nav-sortable > a > span { 47 | padding-left: 0; 48 | } 49 | 50 | .drag-handle { 51 | display: none; 52 | } 53 | } 54 | 55 | .touch .modify-pages { 56 | .lfr-nav-sortable > a > span { 57 | padding-left: 28px; 58 | } 59 | 60 | @include md { 61 | .lfr-nav-sortable > a > span { 62 | padding-left: 0; 63 | } 64 | 65 | .drag-handle { 66 | display: none; 67 | } 68 | } 69 | } 70 | 71 | .nav { 72 | li .toolbar { 73 | margin-top: 5px; 74 | } 75 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/navigation/_page.scss: -------------------------------------------------------------------------------- 1 | .navigation-pane { 2 | .body-row { 3 | height: 100%; 4 | overflow: hidden; 5 | position: relative; 6 | width: 100%; 7 | 8 | ul li a .icon { 9 | float: left; 10 | margin-right: 5px; 11 | } 12 | } 13 | 14 | .lfr-component { 15 | margin-left: 0; 16 | } 17 | 18 | .navigation-entry { 19 | position: relative; 20 | 21 | &.folder.error { 22 | display: block; 23 | padding: 6px 8px; 24 | } 25 | 26 | .browse-folder, .nav-item-label { 27 | @include ellipsis; 28 | 29 | vertical-align: middle; 30 | } 31 | 32 | .nav-item-icon { 33 | vertical-align: middle; 34 | } 35 | 36 | .overlay.entry-action { 37 | bottom: 0; 38 | display: block; 39 | overflow: hidden; 40 | position: absolute; 41 | right: 0; 42 | top: 0; 43 | 44 | .btn { 45 | border-width: 0; 46 | margin: 0; 47 | padding: 11px 14px; 48 | 49 | @include md { 50 | padding: 11px; 51 | } 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/navigation/_portlet.scss: -------------------------------------------------------------------------------- 1 | .nav-menu { 2 | ul { 3 | padding-left: 10px; 4 | } 5 | 6 | li a { 7 | &.ancestor { 8 | font-weight: bold; 9 | } 10 | 11 | &.selected { 12 | color: #000; 13 | font-weight: bold; 14 | text-decoration: none; 15 | } 16 | } 17 | } 18 | 19 | .nav-menu-style-arrows ul { 20 | list-style-image: url(../images/arrows/04_right.png); 21 | } 22 | 23 | .portlet-navigation { 24 | .nav-pills > li { 25 | > a { 26 | margin-bottom: 2px; 27 | } 28 | 29 | > .dropdown-menu { 30 | margin-top: 0; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/navigation/_template_selector.scss: -------------------------------------------------------------------------------- 1 | .form-options { 2 | border: 1px solid #AAA; 3 | display: inline-block; 4 | vertical-align: middle; 5 | 6 | input { 7 | border-width: 0; 8 | display: inline; 9 | float: left; 10 | } 11 | } 12 | 13 | .form-triggers { 14 | float: left; 15 | } 16 | 17 | .form-trigger { 18 | background: #C4C4C4 url(../images/application/button_bg.png) repeat-x 0 0; 19 | border-left: 1px solid #BBB; 20 | display: inline-block; 21 | float: left; 22 | 23 | img { 24 | background: no-repeat 50% 40%; 25 | height: 25px; 26 | padding: 0 3px; 27 | vertical-align: middle; 28 | width: 16px; 29 | } 30 | 31 | &:focus, &:hover { 32 | background-color: #83B0CA; 33 | background-image: url(../images/application/button_bg_over.png); 34 | } 35 | } 36 | 37 | .trigger-selected { 38 | background-color: #EBEBEB; 39 | background-image: url(../images/application/button_bg_selected.png); 40 | 41 | &:focus, &:hover { 42 | background-color: #B7DEF4; 43 | background-image: url(../images/application/button_bg_selected_over.png); 44 | } 45 | } 46 | 47 | .options-trigger img { 48 | background-image: url(../images/common/configuration.png); 49 | } 50 | 51 | .save-trigger img { 52 | background-image: url(../images/common/check.png); 53 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_accessibility.scss: -------------------------------------------------------------------------------- 1 | .cke_toolbar { 2 | &.cke_toolbar__a11yhelpbtn { 3 | .cke_toolgroup, .cke_toolgroup:hover { 4 | background: transparent; 5 | } 6 | 7 | .cke_button { 8 | &:hover { 9 | background: transparent; 10 | } 11 | 12 | .cke_button_label { 13 | &:after { 14 | border-color: #A6A6A6; 15 | font-family: "Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace; 16 | } 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_add_content.scss: -------------------------------------------------------------------------------- 1 | .lfr-add-panel .add-content-menu { 2 | .add-portlet-message { 3 | background-color: #1B2228; 4 | margin: 20px; 5 | padding: 5px 20px; 6 | 7 | .info-message { 8 | margin: 20px 0; 9 | } 10 | } 11 | 12 | .add-application-panel .lfr-content-item { 13 | height: 40px; 14 | padding: 0 16px; 15 | 16 | &.lfr-archived-setup { 17 | padding-left: 30px; 18 | } 19 | } 20 | 21 | .search-bar { 22 | margin: 10px; 23 | } 24 | 25 | .input-group-btn { 26 | right: 20px; 27 | } 28 | 29 | .display-style-bar { 30 | margin: 10px; 31 | 32 | .display-style { 33 | padding: 5px; 34 | 35 | &.active { 36 | color: #869CAD; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_asset_category_selector.scss: -------------------------------------------------------------------------------- 1 | .lfr-asset-category-container { 2 | .no-matches { 3 | color: #999; 4 | } 5 | } 6 | 7 | .lfr-asset-category-search-container { 8 | background-color: #D3DADD; 9 | border-bottom-color: #AEB8BC; 10 | } 11 | 12 | .lfr-asset-category-list a.selected { 13 | background-color: #EEE; 14 | } 15 | 16 | .lfr-categories-selector-search-results-path { 17 | color: #575757; 18 | font-size: 0.9em; 19 | text-align: right; 20 | width: 25%; 21 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_asset_column.scss: -------------------------------------------------------------------------------- 1 | .lfr-asset-column-actions-content { 2 | background-color: #D7F1FF; 3 | } 4 | 5 | .lfr-asset-column-actions .lfr-asset-column-actions-content { 6 | border-color: #88C5D9; 7 | } 8 | 9 | .lfr-asset-column-details { 10 | .lfr-asset-categories { 11 | color: #7D7D7D; 12 | 13 | .lfr-asset-category { 14 | color: #555; 15 | } 16 | } 17 | 18 | .lfr-asset-description { 19 | color: #444; 20 | font-style: italic; 21 | 22 | @include hyphens; 23 | } 24 | 25 | .lfr-asset-icon { 26 | border-right-color: #999; 27 | color: #999; 28 | } 29 | 30 | .lfr-asset-tags { 31 | color: #7D7D7D; 32 | 33 | .tag { 34 | color: #555; 35 | } 36 | } 37 | } 38 | 39 | .lfr-asset-panels, .lfr-asset-column-details { 40 | .lfr-panel.lfr-extended { 41 | border-color: #CCC; 42 | } 43 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_auto_row.scss: -------------------------------------------------------------------------------- 1 | .lfr-form-row { 2 | border-bottom-color: #CCC; 3 | } 4 | 5 | .lfr-form-row:hover { 6 | background-color: #DFFCCB; 7 | border-color: #B2FF3A; 8 | } 9 | 10 | .lfr-form-row .handle-sort-vertical { 11 | background: url(../images/application/handle_sort_vertical.png) no-repeat 0 50%; 12 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_edit_layout.scss: -------------------------------------------------------------------------------- 1 | .lfr-edit-layout-panel .taglib-form-navigator .button-holder { 2 | background-color: #FFF; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_generic_portal.scss: -------------------------------------------------------------------------------- 1 | .definition-of-terms dt { 2 | color: #333; 3 | font-weight: normal; 4 | word-break: break-word; 5 | } 6 | 7 | .lfr-code { 8 | background: #FFF; 9 | border-color: #777; 10 | font-family: monospace; 11 | 12 | tr td.line-numbers { 13 | background: #FAFAFA; 14 | 15 | &:before { 16 | color: #AAA; 17 | text-shadow: 1px 1px #FFF; 18 | } 19 | } 20 | } 21 | 22 | .popup-alert-notice .countdown-timer { 23 | font-size: 1.1em; 24 | font-weight: bold; 25 | } 26 | 27 | .lfr-token { 28 | background-color: #B3DAEF; 29 | border-color: #5FA8FF; 30 | color: #444; 31 | text-decoration: none; 32 | 33 | &:hover { 34 | background-color: #D1E5EF; 35 | } 36 | } 37 | 38 | .lfr-token-primary { 39 | font-weight: bold; 40 | 41 | &, &:hover { 42 | background-color: #B3DAEF; 43 | } 44 | } 45 | 46 | .lfr-token-close:hover { 47 | text-decoration: none; 48 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_generic_portlet.scss: -------------------------------------------------------------------------------- 1 | .lfr-button { 2 | background: no-repeat 0 50%; 3 | } 4 | 5 | .lfr-table { 6 | > tbody, > thead, > tfoot { 7 | > tr > th { 8 | font-weight: bold; 9 | } 10 | } 11 | } 12 | 13 | .lfr-checkbox-preselected, .lfr-configurator-visibility { 14 | opacity: 0.5; 15 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_header_row.scss: -------------------------------------------------------------------------------- 1 | .lfr-header-row { 2 | border-bottom-color: #7B7B7B; 3 | 4 | .lfr-search-combobox { 5 | border-color: #5F5F5F; 6 | } 7 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_openid.scss: -------------------------------------------------------------------------------- 1 | .openid-login input[type="text"] { 2 | background: url(../images/common/openid.gif) no-repeat; 3 | background-color: #FFF; 4 | background-position: 0 50%; 5 | color: #000; 6 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_page_settings.scss: -------------------------------------------------------------------------------- 1 | .page-extra-settings .lfr-panel-titlebar .lfr-panel-title { 2 | font-size: 1em; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_pagination.scss: -------------------------------------------------------------------------------- 1 | .lfr-pagination .lfr-pagination-controls li .lfr-pagination-link { 2 | color: #333; 3 | font-weight: normal; 4 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_panel_component.scss: -------------------------------------------------------------------------------- 1 | .lfr-panel.lfr-extended, .lfr-panel-container, .lfr-floating-container { 2 | border-color: #DEDEDE #BFBFBF #BFBFBF #DEDEDE; 3 | } 4 | 5 | .lfr-panel-container, .lfr-floating-container { 6 | background: #FFF; 7 | } 8 | 9 | .lfr-panel-titlebar { 10 | .lfr-panel-title { 11 | font-size: 1.2em; 12 | font-weight: bold; 13 | } 14 | 15 | .lfr-panel-button { 16 | background: url(../images/application/panel_header_toggler_close.png) no-repeat 0 0; 17 | 18 | &:hover { 19 | background-position: 0 100%; 20 | } 21 | } 22 | } 23 | 24 | .lfr-panel{ 25 | &.lfr-collapsible .lfr-panel-titlebar { 26 | background: url(../images/arrows/05_down.png) no-repeat 2px 50%; 27 | } 28 | 29 | &.lfr-collapsed .lfr-panel-titlebar { 30 | background-image: url(../images/arrows/05_right.png); 31 | 32 | .lfr-panel-button { 33 | background-image: url(../images/application/panel_header_toggler_open.png); 34 | } 35 | } 36 | 37 | &.lfr-extended .lfr-panel-titlebar { 38 | background: #D6D6D6 url(../images/application/panel_header.png) repeat-x 0 0; 39 | border-bottom-color: #CDCDCD; 40 | } 41 | } 42 | 43 | .lfr-panel-container .lfr-extended.lfr-collapsible .lfr-panel-titlebar { 44 | border-top-color: #CECECE; 45 | } 46 | 47 | .js { 48 | .lfr-floating-trigger { 49 | background-image: url(../images/arrows/05_down.png); 50 | background-position: 100% 50%; 51 | background-repeat: no-repeat; 52 | text-decoration: none; 53 | } 54 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_panel_page.scss: -------------------------------------------------------------------------------- 1 | .lfr-panel-page { 2 | .panel-page-content { 3 | border-left-color: #CCC; 4 | } 5 | 6 | .lfr-add-content { 7 | h2 { 8 | border-color: #CCC; 9 | 10 | span { 11 | background: #EFEFEF; 12 | } 13 | } 14 | 15 | .lfr-content-category h2 { 16 | border-bottom-color: #CCC; 17 | 18 | span { 19 | background: none; 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_panel_pagination.scss: -------------------------------------------------------------------------------- 1 | .lfr-panel-content { 2 | .paginator-container { 3 | background: #CFD2D5; 4 | border-bottom-color: #DCDEE0; 5 | border-top-color: #DCDEE0; 6 | } 7 | 8 | .paginator-page-container .paginator-page-link { 9 | background: none; 10 | border-color: #CFD2D5; 11 | 12 | &.paginator-current-page { 13 | background: #99A7B3 url(../images/application/current_page_hover_bg.png) repeat-x 0 0; 14 | border-color: #6B7785 #7C8994 #919FA9; 15 | color: #FFF; 16 | font-weight: bold; 17 | 18 | &:hover { 19 | background: #5094D7 url(../images/application/current_page_bg.png) repeat-x 0 0; 20 | border-color: #31659C #396EA8 #4C8CCB; 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_portlet_css_editor.scss: -------------------------------------------------------------------------------- 1 | #portlet-set-properties fieldset fieldset legend { 2 | font-size: 1.1em; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_preview.scss: -------------------------------------------------------------------------------- 1 | .lfr-preview-file-content { 2 | border-bottom-color: #6D6D6E; 3 | } 4 | 5 | .lfr-preview-file-image-current-column, .lfr-preview-file-video-current-column { 6 | background: url(../images/common/checkerboard.png); 7 | } 8 | 9 | .lfr-preview-file-toolbar { 10 | background: #333; 11 | opacity: 0.5; 12 | 13 | .icon-arrow-1-l { 14 | background: url(../images/document_library/preview_left.png) no-repeat 0 50%; 15 | } 16 | 17 | .icon-arrow-1-r { 18 | background: url(../images/document_library/preview_right.png) no-repeat 0 50%; 19 | } 20 | 21 | .icon-zoomin { 22 | background: url(../images/document_library/preview_zoom.png) no-repeat 0 50%; 23 | } 24 | } 25 | 26 | .lfr-preview-file-image-current-column:hover .lfr-preview-file-toolbar { 27 | opacity: 1; 28 | } 29 | 30 | .lfr-preview-file-info { 31 | background: #333; 32 | color: #FFF; 33 | opacity: 0.5; 34 | 35 | &:hover { 36 | opacity: 1; 37 | } 38 | } 39 | 40 | .lfr-preview-file-index { 41 | font-weight: bold; 42 | } 43 | 44 | .lfr-preview-file-image-current { 45 | background: url(../images/aui/loading_indicator.gif) no-repeat 50% 50%; 46 | } 47 | 48 | .lfr-preview-file-image img { 49 | background: url(../images/aui/loading_indicator.gif) no-repeat 50% 50%; 50 | border-color: #AEB8BC; 51 | } 52 | 53 | .lfr-preview-file-image-selected img, .lfr-preview-file-image:hover img { 54 | border-color: #00A2EA; 55 | } 56 | 57 | .lfr-preview-file-loading-indicator { 58 | background: #333; 59 | color: #FFF; 60 | } 61 | 62 | .lfr-preview-file-image-overlay-content { 63 | background: url(../images/common/checkerboard.png); 64 | border-color: #555; 65 | } 66 | 67 | .firefox .lfr-preview-video-content div.video-node { 68 | height: 100%; 69 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_rich_editor.scss: -------------------------------------------------------------------------------- 1 | textarea.lfr-editor-textarea { 2 | font-family: monospace; 3 | } 4 | 5 | .lfr-rich-editor.ace_editor { 6 | border-color: #A1A2A4; 7 | } 8 | 9 | .lfr-plain-editor textarea, .lfr-rich-editor.ace_editor { 10 | font-family: 'Monaco', 'Menlo', 'Droid Sans Mono', 'Courier New', monospace; 11 | font-size: 12px; 12 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_spa.scss: -------------------------------------------------------------------------------- 1 | .lfr-spa-loading-bar { 2 | background: #2FA4F5; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_tag_selector.scss: -------------------------------------------------------------------------------- 1 | .lfr-tag-selector-popup { 2 | label { 3 | border-bottom-color: #EEE; 4 | } 5 | 6 | .no-matches { 7 | color: #999; 8 | } 9 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_toolbar.scss: -------------------------------------------------------------------------------- 1 | .lfr-toolbar { 2 | background-color: #E5E4E8; 3 | 4 | .lfr-button { 5 | &:focus { 6 | border-color: #000; 7 | } 8 | 9 | &:hover { 10 | border-color: #CCC #777 #777; 11 | } 12 | } 13 | 14 | .lfr-separator { 15 | border-left-color: #FFF; 16 | border-right-color: #CCC; 17 | font-size: 12px; 18 | } 19 | } 20 | 21 | .lfr-toolbar, .lfr-emoticon-container { 22 | .lfr-button { 23 | border-color: #E5E4E8; 24 | } 25 | } 26 | 27 | .lfr-emoticon-container { 28 | background: #E5E4E8; 29 | border-color: #CCC; 30 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_translation_manager.scss: -------------------------------------------------------------------------------- 1 | .lfr-translation-manager { 2 | .lfr-translation-manager-available-translations { 3 | .lfr-translation-manager-available-translations-links { 4 | line-height: 1; 5 | } 6 | } 7 | 8 | .lfr-translation-manager-translation { 9 | text-decoration: none; 10 | 11 | &:hover { 12 | background-color: #D1E5EF; 13 | } 14 | 15 | &.lfr-translation-manager-translation-editing { 16 | background-color: #598BEC; 17 | border-color: #224FA8; 18 | color: #FFF; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portal/_tree.scss: -------------------------------------------------------------------------------- 1 | .lfr-tree a { 2 | text-decoration: none; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_app_components.scss: -------------------------------------------------------------------------------- 1 | /* ---------- Dynamic data list display/Journal portlet ---------- */ 2 | 3 | .portlet-dynamic-data-lists-display, .portlet-dynamic-data-lists, .portlet-journal { 4 | .lfr-ddm-field-group { 5 | margin-bottom: 10px; 6 | margin-top: 10px; 7 | padding: 28px 24px 28px; 8 | } 9 | } 10 | 11 | /* ---------- Breadcrumb taglib ---------- */ 12 | 13 | .breadcrumb.breadcrumb-vertical { 14 | display: inline-block; 15 | text-align: center; 16 | 17 | li { 18 | display: block; 19 | 20 | &.last, &.only { 21 | background: none; 22 | } 23 | } 24 | 25 | .divider { 26 | background: url(../images/arrows/07_down.png) no-repeat 50% 100%; 27 | display: block; 28 | 29 | @include hide-text(); 30 | 31 | height: 10px; 32 | } 33 | } 34 | 35 | /* ---------- Calendar taglib ---------- */ 36 | 37 | .taglib-calendar { 38 | tr { 39 | &.portlet-section-header th, & td { 40 | border-width: 0; 41 | } 42 | 43 | td { 44 | a { 45 | background-color: #F0F5F7; 46 | border: 1px solid #FFF; 47 | border-bottom-width: 0; 48 | border-left-width: 0; 49 | display: block; 50 | height: 15px; 51 | padding: 5px 0; 52 | 53 | &:hover { 54 | background-color: #727C81; 55 | color: #FFF; 56 | } 57 | } 58 | 59 | &.calendar-inactive { 60 | background-color: #FFF; 61 | color: #B5BFC4; 62 | } 63 | } 64 | 65 | th { 66 | border-bottom-color: #D7D7D7; 67 | } 68 | } 69 | 70 | table td { 71 | border-width: 0; 72 | } 73 | 74 | .calendar-current-day { 75 | &, & a { 76 | background-color: #FFF; 77 | } 78 | 79 | a { 80 | border: 1px solid #727C81; 81 | color: #369; 82 | text-decoration: underline; 83 | } 84 | } 85 | } 86 | 87 | /* ---------- Navbar form search ---------- */ 88 | 89 | .navbar form { 90 | margin: 0; 91 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_controls.scss: -------------------------------------------------------------------------------- 1 | .freeform .portlet { 2 | margin-bottom: 0; 3 | } 4 | 5 | body.portlet { 6 | border-width: 0; 7 | } 8 | 9 | .portlet-topper { 10 | position: relative; 11 | 12 | .portlet-topper-toolbar { 13 | .portlet-icon-back { 14 | background: url(../images/arrows/12_left.png) no-repeat 0 50%; 15 | padding: 5px 5px 5px 18px; 16 | } 17 | 18 | .portlet-options .lfr-icon-menu-text { 19 | display: none; 20 | } 21 | } 22 | } 23 | 24 | .portlet-title-editable { 25 | cursor: pointer; 26 | } 27 | 28 | .portlet-title-text { 29 | display: inline-block; 30 | 31 | @include ellipsis; 32 | 33 | margin-top: 0; 34 | max-width: 95%; 35 | vertical-align: top; 36 | } 37 | 38 | .panel-page-content, .panel-page-body { 39 | .portlet-title-text { 40 | cursor: auto; 41 | } 42 | } 43 | 44 | .portlet-content, .portlet-minimized .portlet-content-container { 45 | padding: 12px 10px 10px; 46 | } 47 | 48 | .portlet-minimized .portlet-content { 49 | padding: 0; 50 | } 51 | 52 | .portlet-nested-portlets .portlet-boundary { 53 | left: 0 !important; 54 | position: relative !important; 55 | top: 0 !important; 56 | } 57 | 58 | .portlet-draggable { 59 | .portlet-topper { 60 | cursor: move; 61 | } 62 | 63 | .portlet-title-default { 64 | background: url(../images/portlet/draggable_borderless.png) no-repeat 2px center transparent; 65 | cursor: move; 66 | padding-left: 25px; 67 | } 68 | } 69 | 70 | .portlet { 71 | .visible-interaction { 72 | display: none; 73 | } 74 | 75 | &:active, &:hover, &:focus, &.active { 76 | .visible-interaction { 77 | display: inherit; 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_labels.scss: -------------------------------------------------------------------------------- 1 | .lfr-status-alert-label, .lfr-status-error-label, .lfr-status-info-label, .lfr-status-progress-label, .lfr-status-success-label { 2 | background: none no-repeat 0 50%; 3 | padding: 3px 3px 3px 20px; 4 | } 5 | 6 | .lfr-status-alert-label { 7 | background-image: url(../images/messages/alert.png); 8 | color: #663; 9 | } 10 | 11 | .lfr-status-error-label { 12 | background-image: url(../images/messages/error.png); 13 | color: #900; 14 | } 15 | 16 | .lfr-status-help-label, .lfr-status-info-label, .lfr-status-progress-label { 17 | background-image: url(../images/messages/info.png); 18 | color: #34404F; 19 | } 20 | 21 | .lfr-status-help-label { 22 | background-image: url(../images/portlet/help.png); 23 | } 24 | 25 | .lfr-status-progress-label { 26 | background-image: url(../images/aui/loading_indicator.gif); 27 | } 28 | 29 | .lfr-status-success-label { 30 | background-image: url(../images/messages/success.png); 31 | color: #384F34; 32 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_messages.scss: -------------------------------------------------------------------------------- 1 | .portlet-msg { 2 | background: #EEE none no-repeat 6px 50%; 3 | border: 1px solid #555; 4 | color: #34404F; 5 | font-weight: bold; 6 | margin: 2px auto 14px; 7 | padding: 6px 6px 6px 30px; 8 | text-align: left; 9 | } 10 | 11 | .lfr-message { 12 | position: relative; 13 | 14 | .lfr-message-control { 15 | background-color: #333; 16 | display: inline-block; 17 | } 18 | 19 | .lfr-message-controls { 20 | display: none; 21 | left: 3px; 22 | margin: -8px 8px 0 3px; 23 | position: absolute; 24 | top: 50%; 25 | z-index: 10; 26 | } 27 | 28 | .lfr-message-close { 29 | background-image: url(../images/portlet/close_borderless.png); 30 | background-position: 0 0; 31 | background-repeat: no-repeat; 32 | } 33 | 34 | .lfr-message-close-all { 35 | color: #FFF; 36 | display: none; 37 | font-size: 0.8em; 38 | margin-left: 10px; 39 | padding: 1px 10px; 40 | text-shadow: 1px 1px 0 #000; 41 | vertical-align: top; 42 | 43 | a { 44 | color: #FFF; 45 | } 46 | } 47 | 48 | .lfr-message-controls-hover .lfr-message-close-all { 49 | display: inline-block; 50 | } 51 | 52 | &.pending { 53 | background-image: url(../images/common/time.png); 54 | } 55 | } 56 | 57 | .lfr-message-content.alert { 58 | margin-bottom: 0; 59 | } 60 | 61 | .lfr-message-close { 62 | cursor: pointer; 63 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_misc.scss: -------------------------------------------------------------------------------- 1 | .lfr-configurator-visibility { 2 | .portlet-borderless-bar { 3 | opacity: 0.6; 4 | } 5 | 6 | .portlet-content { 7 | .lfr-icon-actions { 8 | opacity: 1; 9 | } 10 | } 11 | } 12 | 13 | .lfr-panel-page { 14 | width: 100%; 15 | 16 | .portlet-title { 17 | font-size: 13px; 18 | } 19 | 20 | .lfr-add-content h2 span { 21 | background-color: #D3DADD; 22 | } 23 | } 24 | 25 | .main-content-body { 26 | margin-top: 20px; 27 | } 28 | 29 | .restricted { 30 | &, & td { 31 | background: #FDD; 32 | border-width: 0; 33 | } 34 | 35 | * { 36 | color: #727C81; 37 | } 38 | } 39 | 40 | .alt.restricted td { 41 | background-color: #FFC0C0; 42 | } 43 | 44 | .hover.restricted td { 45 | background-color: #D3BDC0; 46 | } 47 | 48 | .alt.restricted, .restricted { 49 | td.first { 50 | background-image: url(../images/messages/error.png); 51 | background-position: 5px 50%; 52 | background-repeat: no-repeat; 53 | padding-left: 28px; 54 | } 55 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_spec.scss: -------------------------------------------------------------------------------- 1 | /* ---------- Standard styles defined in the JSR 168 specification ---------- */ 2 | 3 | /* ---------- Fonts ---------- */ 4 | 5 | .portlet-font { 6 | } 7 | 8 | .portlet-font-dim { 9 | } 10 | 11 | /* ---------- Sections ---------- */ 12 | 13 | .portlet-section-selected { 14 | &, a { 15 | background: #727C81; 16 | color: #FFF; 17 | font-weight: bold; 18 | text-decoration: none; 19 | } 20 | 21 | a:hover, a:focus { 22 | background-color: #727C81; 23 | } 24 | } 25 | 26 | .portlet-section-subheader { 27 | } 28 | 29 | .portlet-section-footer { 30 | } 31 | 32 | .portlet-section-text { 33 | } 34 | 35 | /* ---------- Forms ---------- */ 36 | 37 | .portlet-form-label { 38 | } 39 | 40 | .portlet-form-input-field { 41 | } 42 | 43 | .portlet-form-button { 44 | } 45 | 46 | .portlet-form-field-label { 47 | } 48 | 49 | .portlet-form-field { 50 | } 51 | 52 | /* ---------- Icons ---------- */ 53 | 54 | .portlet-icon-label { 55 | } 56 | 57 | .portlet-dlg-icon-label { 58 | } 59 | 60 | /* ---------- Menus ---------- */ 61 | 62 | .portlet-menu { 63 | } 64 | 65 | .portlet-menu-item { 66 | } 67 | 68 | .portlet-menu-item-selected { 69 | } 70 | 71 | .portlet-menu-item-hover { 72 | } 73 | 74 | .portlet-menu-item-hover-selected { 75 | } 76 | 77 | .portlet-menu-cascade-item { 78 | } 79 | 80 | .portlet-menu-cascade-item-selected { 81 | } 82 | 83 | .portlet-menu-description { 84 | } 85 | 86 | .portlet-menu-caption { 87 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_variables.scss: -------------------------------------------------------------------------------- 1 | // Portlet Topper 2 | 3 | $portlet-topper-bg: $navbar-default-bg !default; 4 | $portlet-topper-border: $navbar-default-border !default; 5 | $portlet-topper-color: $navbar-default-color !default; 6 | $portlet-topper-link-color: $navbar-default-link-color !default; 7 | $portlet-topper-link-hover-color: $navbar-default-link-hover-color !default; 8 | 9 | $portlet-topper-border-radius: $navbar-border-radius $navbar-border-radius 0 0 !default; 10 | 11 | $portlet-topper-border-bottom-width: 1px!default; 12 | $portlet-topper-border-left-width: 1px !default; 13 | $portlet-topper-border-right-width: 1px !default; 14 | $portlet-topper-border-top-width: 1px !default; 15 | $portlet-topper-border-width: $portlet-topper-border-top-width $portlet-topper-border-right-width $portlet-topper-border-bottom-width $portlet-topper-border-left-width !default; 16 | 17 | $portlet-content-border-radius: 0 0 $navbar-border-radius $navbar-border-radius !default; 18 | 19 | $portlet-content-border-bottom-width: 1px !default; 20 | $portlet-content-border-left-width: 1px !default; 21 | $portlet-content-border-right-width: 1px !default; 22 | $portlet-content-border-top-width: 1px !default; 23 | $portlet-content-border-width: $portlet-content-border-top-width $portlet-content-border-right-width $portlet-content-border-bottom-width $portlet-content-border-left-width !default; -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_variables_custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/portlet/_variables_custom.scss -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_app_view_common.scss: -------------------------------------------------------------------------------- 1 | .app-view-entry { 2 | &:hover .entry-thumbnail { 3 | border-color: #7ABFDD; 4 | } 5 | 6 | &.selected{ 7 | .entry-thumbnail { 8 | border-color: #057CB0; 9 | } 10 | 11 | .entry-metadata { 12 | dt, dd, .entry-categories, .entry-tags, .entry-description { 13 | color: #F0F0F0; 14 | } 15 | } 16 | } 17 | 18 | .entry-title { 19 | font-weight: bold; 20 | } 21 | 22 | .entry-link { 23 | text-decoration: none; 24 | } 25 | 26 | .entry-metadata { 27 | dt, dd, .entry-categories, .entry-tags, .entry-description { 28 | color: #333; 29 | word-wrap: break-word; 30 | } 31 | 32 | .entry-categories .taglib-asset-categories-summary { 33 | font-weight: bold; 34 | 35 | .asset-category { 36 | font-weight: normal; 37 | } 38 | } 39 | } 40 | 41 | &.selected, &.selected:hover { 42 | background-color: #00A2EA; 43 | } 44 | 45 | &.selected a { 46 | &, &:focus, &:hover { 47 | color: #FFF; 48 | } 49 | 50 | .lfr-icon-menu-arrow { 51 | color: #333; 52 | } 53 | } 54 | 55 | &.active-area, &.active-area.hover, &.active-area td { 56 | background-color: #5AD300; 57 | } 58 | 59 | &:hover, &.hover { 60 | background-color: #D3E8F1; 61 | } 62 | 63 | a.entry-link:hover { 64 | text-decoration: none; 65 | 66 | .entry-metadata .entry-title .entry-title-text { 67 | text-decoration: underline; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_app_view_entry.scss: -------------------------------------------------------------------------------- 1 | .app-view-entry-taglib.entry-display-style.display-icon .entry-title { 2 | font-weight: normal; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_app_view_search_entry.scss: -------------------------------------------------------------------------------- 1 | .app-view-search-entry-taglib { 2 | .entry-discussion, .entry-attachment { 3 | a { 4 | text-decoration: none; 5 | } 6 | 7 | &:hover { 8 | background-color: #D3E8F1; 9 | } 10 | } 11 | 12 | .entry-folder { 13 | color: #999; 14 | } 15 | 16 | .entry-link .entry-thumbnail-image { 17 | color: #000; 18 | text-decoration: none; 19 | } 20 | 21 | &.alt { 22 | background-color: #EDF0F3; 23 | } 24 | 25 | &.search { 26 | background-color: #FFF; 27 | 28 | &.alt { 29 | background-color: #E2E5E8; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_app_view_toolbar.scss: -------------------------------------------------------------------------------- 1 | .app-view-taglib { 2 | .display-style .icon { 3 | background-image: url(../images/application/layouts.png); 4 | background-repeat: no-repeat; 5 | } 6 | 7 | .icon-display-descriptive { 8 | background-position: -32px 0; 9 | } 10 | 11 | .icon-display-icon { 12 | background-position: -16px 0; 13 | } 14 | 15 | .icon-display-list { 16 | background-position: 0 0; 17 | } 18 | 19 | .state-active { 20 | .icon-display-descriptive { 21 | background-position: -32px 100%; 22 | } 23 | 24 | .icon-display-icon { 25 | background-position: -16px 100%; 26 | } 27 | } 28 | } 29 | 30 | .navbar { 31 | .nav-display-style-buttons { 32 | .display-style-buttons { 33 | > .dropdown { 34 | @include media-query(null, $screen-xs-max) { 35 | > .dropdown-menu { 36 | background-color: transparent; 37 | box-shadow: none; 38 | } 39 | } 40 | } 41 | } 42 | 43 | .display-style-buttons-container .dropdown-toggle .caret { 44 | border-bottom-color: #333; 45 | border-top-color: #333; 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_asset_links.scss: -------------------------------------------------------------------------------- 1 | .taglib-asset-links { 2 | border-radius: 4px; 3 | 4 | h2 { 5 | color: #999; 6 | font-size: 1em; 7 | } 8 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_asset_metadata.scss: -------------------------------------------------------------------------------- 1 | .taglib-asset-metadata { 2 | .metadata-entry-label { 3 | font-weight: normal; 4 | } 5 | 6 | .metadata-author { 7 | font-weight: bold; 8 | } 9 | 10 | .metadata-entry { 11 | color: #999; 12 | } 13 | 14 | .metadata-author .asset-user-info { 15 | .user-info { 16 | color: #009AE5; 17 | font-size: 14px; 18 | line-height: 14px; 19 | } 20 | 21 | .date-info { 22 | color: #8C8C8C; 23 | font-size: 13px; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_calendar.scss: -------------------------------------------------------------------------------- 1 | .taglib-calendar { 2 | table { 3 | border-color: #999; 4 | } 5 | 6 | tr { 7 | th, td { 8 | border-bottom-color: #999; 9 | } 10 | 11 | &.portlet-section-header th, td { 12 | border-color: #999; 13 | } 14 | } 15 | 16 | a:hover, a:focus { 17 | background-color: #CCC; 18 | } 19 | 20 | .calendar-inactive { 21 | color: #999; 22 | } 23 | 24 | .has-events { 25 | a span { 26 | background: url(../images/calendar/event_indicator.png) no-repeat 50% 95%; 27 | } 28 | 29 | &.calendar-current-day a span { 30 | background-image: url(../images/calendar/event_indicator_current.png); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_categorization_filter.scss: -------------------------------------------------------------------------------- 1 | .taglib-categorization-filter { 2 | &.entry-title { 3 | color: #333; 4 | font-size: 1em; 5 | line-height: inherit; 6 | } 7 | 8 | .asset-entry { 9 | background-color: #DEE7F8; 10 | border-color: #CAD8F3; 11 | 12 | &:hover a { 13 | text-decoration: none; 14 | 15 | .icon-remove { 16 | background-color: #CAD8F3; 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_diff.scss: -------------------------------------------------------------------------------- 1 | .taglib-diff-addedline, #taglib-diff-results ins { 2 | background: #E6FFE6; 3 | } 4 | 5 | .taglib-diff-context { 6 | background: #EEE; 7 | } 8 | 9 | .taglib-diff-deletedline, #taglib-diff-results del { 10 | background: #FFE6E6; 11 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_diff_html.scss: -------------------------------------------------------------------------------- 1 | .taglib-diff-html { 2 | div { 3 | &.diff-removed-image { 4 | background: #FDC6C6 url(../images/diff/minus.png); 5 | } 6 | 7 | &.diff-added-image { 8 | background: #CFC url(../images/diff/plus.png) no-repeat; 9 | } 10 | 11 | &.diff-removed-image, &.diff-added-image { 12 | opacity: 0.55; 13 | } 14 | } 15 | 16 | span { 17 | &.diff-html-added { 18 | background-color: #CFC; 19 | font-size: 1em; 20 | 21 | img { 22 | border-color: #CFC; 23 | } 24 | } 25 | 26 | &.diff-html-changed { 27 | background: url(../images/diff/underline.png) bottom repeat-x; 28 | 29 | img { 30 | border-color: #009; 31 | } 32 | } 33 | 34 | &.diff-html-removed { 35 | background-color: #FDC6C6; 36 | font-size: 1em; 37 | text-decoration: line-through; 38 | 39 | img { 40 | border-color: #FDC6C6; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_discussion.scss: -------------------------------------------------------------------------------- 1 | .taglib-discussion { 2 | .lfr-discussion { 3 | .lfr-discussion-form-edit .alloy-editor-placeholder { 4 | border-left-color: #DBDDE1; 5 | } 6 | } 7 | 8 | .lfr-discussion-details { 9 | .taglib-user-display { 10 | @include sm { 11 | word-wrap: break-word; 12 | } 13 | 14 | .user-details .user-name { 15 | font-weight: bold; 16 | text-decoration: none; 17 | 18 | &:hover { 19 | text-decoration: underline; 20 | } 21 | } 22 | 23 | .user-profile-image .avatar { 24 | background-size: 50px; 25 | } 26 | } 27 | } 28 | 29 | .lfr-discussion-actions li a { 30 | &, span { 31 | text-decoration: none; 32 | } 33 | 34 | &:hover, &:focus { 35 | span { 36 | text-decoration: underline; 37 | } 38 | } 39 | } 40 | 41 | .lfr-discussion-form-container .lfr-discussion-form { 42 | background: #DDD; 43 | border-radius: 4px; 44 | 45 | .taglib-user-display .user-profile-image .avatar { 46 | background-size: 40px; 47 | } 48 | } 49 | } 50 | 51 | .lfr-discussion-reply.popover .lfr-discussion-reply-user-name { 52 | font-weight: bold; 53 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_drop_here_info.scss: -------------------------------------------------------------------------------- 1 | .drop-zone.drop-enabled:not(.no-border) { 2 | outline-color: transparentize(#B0B4BB, 0.5); 3 | } 4 | 5 | .drop-here-info { 6 | .drop-icons { 7 | span:nth-of-type(1), span:nth-of-type(3) { 8 | background: #E8E6E8; 9 | color: #A5A6AC; 10 | } 11 | 12 | span:nth-of-type(2) { 13 | background: #00C2FF; 14 | color: #FFF; 15 | } 16 | } 17 | 18 | .drop-text { 19 | color: #FFF; 20 | } 21 | } 22 | 23 | .drop-active .drop-here-info { 24 | background-color: transparentize(#000, 0.4); 25 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_field_wrapper.scss: -------------------------------------------------------------------------------- 1 | .lfr-ddm-field-group { 2 | margin-bottom: 20px; 3 | } 4 | 5 | .lfr-ddm-field-group-inline { 6 | display: inline-block; 7 | vertical-align: bottom; 8 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_flags.scss: -------------------------------------------------------------------------------- 1 | .taglib-flags { 2 | .icon-flag { 3 | color: #999; 4 | } 5 | 6 | .flag-enable:hover { 7 | .icon-flag { 8 | color: #C00; 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_form_navigator.scss: -------------------------------------------------------------------------------- 1 | .taglib-form-navigator { 2 | > .form-steps > ul.form-navigator.list-group { 3 | background: transparent; 4 | 5 | .tab { 6 | &.active { 7 | background: transparent; 8 | opacity: 1; 9 | 10 | .tab-label { 11 | &:hover, &:focus { 12 | background: transparent; 13 | } 14 | 15 | .message { 16 | color: #000; 17 | opacity: 0.7; 18 | } 19 | 20 | .number { 21 | background: #333; 22 | font-size: 18px; 23 | opacity: 1; 24 | } 25 | 26 | .tab-icon { 27 | color: #333; 28 | } 29 | } 30 | } 31 | 32 | .tab-label { 33 | background: transparent; 34 | outline: 0; 35 | 36 | &:hover, &:focus { 37 | text-decoration: none; 38 | 39 | .number { 40 | opacity: 1; 41 | } 42 | } 43 | 44 | .number { 45 | background: #CCC; 46 | color: #FFF; 47 | font-size: 14px; 48 | font-weight: bold; 49 | opacity: 0.6; 50 | text-decoration: none; 51 | } 52 | 53 | .message { 54 | color: #000; 55 | font-size: 12px; 56 | } 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_header.scss: -------------------------------------------------------------------------------- 1 | .taglib-header { 2 | border-bottom-color: #C8C9CA; 3 | color: #555; 4 | 5 | .header-back-to a { 6 | font-size: 1.5em; 7 | font-weight: bold; 8 | text-decoration: none; 9 | } 10 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_icon.scss: -------------------------------------------------------------------------------- 1 | a.taglib-icon { 2 | &, &:focus, &:hover { 3 | text-decoration: none; 4 | } 5 | 6 | &:focus, &:hover { 7 | .taglib-text { 8 | text-decoration: underline; 9 | } 10 | } 11 | 12 | &.btn { 13 | &:focus, &:hover { 14 | .taglib-text { 15 | text-decoration: none; 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_image_selector.scss: -------------------------------------------------------------------------------- 1 | .taglib-image-selector { 2 | .change-image-controls { 3 | background: #FFF; 4 | } 5 | 6 | .glyphicon-ok { 7 | background: #FFF; 8 | opacity: 0; 9 | } 10 | 11 | .progress-wrapper { 12 | .progressbar { 13 | background: #B0B4BB; 14 | opacity: 0.7; 15 | } 16 | } 17 | 18 | &.check-active .glyphicon-ok { 19 | opacity: 1; 20 | } 21 | 22 | &.drop-active { 23 | outline-width: 0; 24 | 25 | .browse-image-controls { 26 | opacity: 0; 27 | } 28 | 29 | .glyphicon-ok { 30 | opacity: 0; 31 | } 32 | 33 | .image-wrapper { 34 | opacity: 0.15; 35 | } 36 | 37 | .error-wrapper { 38 | opacity: 0; 39 | } 40 | } 41 | 42 | &.progress-active { 43 | .image-wrapper { 44 | opacity: 0.15; 45 | } 46 | 47 | .browse-image-controls { 48 | opacity: 0; 49 | } 50 | 51 | .drop-here-info { 52 | opacity: 0; 53 | } 54 | 55 | .glyphicon-ok { 56 | opacity: 0; 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_input_localized.scss: -------------------------------------------------------------------------------- 1 | .input-localized { 2 | .palette-item-inner .lfr-input-localized-flag { 3 | opacity: 0.5; 4 | } 5 | 6 | &.input-localized-focused .palette-item-inner .lfr-input-localized-flag { 7 | opacity: 1; 8 | } 9 | 10 | .palette-item-inner { 11 | border-color: #666; 12 | } 13 | 14 | .palette-item, .palette-item-inner, .palette-item-hover, .palette-item-hover .palette-item-inner { 15 | border-color: transparent; 16 | } 17 | 18 | .lfr-input-localized .lfr-input-localized-state { 19 | background: #DDD; 20 | 21 | &.lfr-input-localized-state-error { 22 | background: #FF0047; 23 | } 24 | } 25 | 26 | .palette-item-selected .lfr-input-localized-state { 27 | background: #27C1F2; 28 | } 29 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_input_move_boxes.scss: -------------------------------------------------------------------------------- 1 | .taglib-move-boxes { 2 | .choice-selector label { 3 | background: #EBF1F9; 4 | border-bottom-color: #8DB2F3; 5 | } 6 | 7 | .sortable-container .move-option { 8 | background-color: transparent; 9 | 10 | &.move-option-dragging { 11 | background-color: #FAFAFA; 12 | } 13 | 14 | .handle { 15 | color: #999; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_layouts_tree.scss: -------------------------------------------------------------------------------- 1 | .lfr-tree-display-page { 2 | .tree-node .tree-node-over .tree-label { 3 | text-decoration: none; 4 | } 5 | 6 | .tree-label { 7 | cursor: default; 8 | 9 | a { 10 | color: black; 11 | } 12 | 13 | .layout-page-invalid { 14 | color: #AAA; 15 | font-style: italic; 16 | 17 | &:hover { 18 | cursor: default; 19 | text-decoration: none; 20 | } 21 | } 22 | } 23 | } 24 | 25 | .lfr-tree-radio.lfr-tree-root-node-hidden .lfr-root-node + .tree-container { 26 | margin-left: 0; 27 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_map.scss: -------------------------------------------------------------------------------- 1 | .lfr-map { 2 | border-color: #CCC; 3 | 4 | .search-controls { 5 | font-size: 15px; 6 | } 7 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_navbar.scss: -------------------------------------------------------------------------------- 1 | .navbar { 2 | .navbar-search { 3 | background-color: #F3F3F3; 4 | 5 | @include sm { 6 | background-color: transparent; 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_preview.scss: -------------------------------------------------------------------------------- 1 | .taglib-portlet-preview.show-borders { 2 | border-color: #828F95; 3 | 4 | .title { 5 | background-color: #D3DADD; 6 | font-size: 1.4em; 7 | font-weight: bold; 8 | } 9 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_search_container.scss: -------------------------------------------------------------------------------- 1 | .table-list tbody .title-column { 2 | font-weight: 500; 3 | 4 | &, a { 5 | color: #29353D; 6 | } 7 | } 8 | 9 | .user-info .user-details { 10 | .date-info { 11 | color: #8C8C8C; 12 | } 13 | 14 | .user-name { 15 | color: #009AE5; 16 | } 17 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_search_toggle.scss: -------------------------------------------------------------------------------- 1 | .taglib-search-toggle .toggle-advanced { 2 | color: inherit; 3 | 4 | &, &:hover, &:focus { 5 | text-decoration: none; 6 | } 7 | } 8 | 9 | .taglib-search-toggle-advanced-wrapper .taglib-search-toggle-advanced { 10 | background-color: #FCFCFC; 11 | border-color: #DDD; 12 | 13 | .btn.close { 14 | margin-right: 5px; 15 | } 16 | 17 | .taglib-search-toggle-advanced-content { 18 | position: relative; 19 | 20 | .match-fields { 21 | margin-bottom: 0; 22 | } 23 | 24 | .match-fields-legend { 25 | color: #999; 26 | font-size: 13px; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_social_activities.scss: -------------------------------------------------------------------------------- 1 | .taglib-social-activities .day-separator { 2 | border-bottom-color: #CCC; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_social_bookmarks.scss: -------------------------------------------------------------------------------- 1 | .taglib-social-bookmarks a.social-bookmark-link { 2 | background-repeat: no-repeat; 3 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_user_display.scss: -------------------------------------------------------------------------------- 1 | .taglib-user-display { 2 | a .user-name { 3 | text-decoration: underline; 4 | } 5 | 6 | .avatar { 7 | background: no-repeat center; 8 | background-size: 60px; 9 | 10 | &.author:after { 11 | background: transparentize(#32A8E6, 0.5); 12 | } 13 | } 14 | 15 | .user-name { 16 | font-size: 1.1em; 17 | font-weight: bold; 18 | } 19 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_webdav.scss: -------------------------------------------------------------------------------- 1 | .js .taglib-webdav { 2 | &.visible { 3 | background: #F0F5F7; 4 | } 5 | 6 | table { 7 | border-color: #828F95; 8 | } 9 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/css/taglib/_workflow_status.scss: -------------------------------------------------------------------------------- 1 | .taglib-workflow-status { 2 | .workflow-id, .workflow-version, .workflow-status { 3 | color: #999; 4 | } 5 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/images/aui/loading_indicator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/images/aui/loading_indicator.gif -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/images/screenshot.png -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/node_modules/liferay-frontend-theme-styled/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "email": "nathan.cavanaugh@liferay.com", 4 | "name": "Nathan Cavanaugh", 5 | "url": "https://github.com/natecavanaugh" 6 | }, 7 | "bugs": { 8 | "url": "https://issues.liferay.com/" 9 | }, 10 | "dependencies": {}, 11 | "description": "Liferay Frontend Theme Styled", 12 | "devDependencies": {}, 13 | "directories": {}, 14 | "dist": { 15 | "shasum": "d56218c012eb73b1e2911ceb4afa28d2c1397282", 16 | "tarball": "https://registry.npmjs.org/liferay-frontend-theme-styled/-/liferay-frontend-theme-styled-2.0.1.tgz" 17 | }, 18 | "homepage": "https://github.com/liferay/liferay-portal#readme", 19 | "license": "LGPL", 20 | "main": "package.json", 21 | "maintainers": [ 22 | { 23 | "email": "continuous-integration@liferay.com", 24 | "name": "liferay" 25 | } 26 | ], 27 | "name": "liferay-frontend-theme-styled", 28 | "optionalDependencies": {}, 29 | "readme": "ERROR: No README data found!", 30 | "repository": { 31 | "type": "git", 32 | "url": "git+https://github.com/liferay/liferay-portal.git" 33 | }, 34 | "scripts": {}, 35 | "version": "2.0.1" 36 | } 37 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/explicit-dependency-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "explicit-dependency-theme", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": "styled", 9 | "templateLanguage": "ftl", 10 | "themeletDependencies": {}, 11 | "version": "7.1" 12 | }, 13 | "devDependencies": { 14 | "gulp": "^3.8.10", 15 | "liferay-frontend-theme-styled": "2.0.1", 16 | "liferay-theme-deps-7.1": "*", 17 | "liferay-theme-tasks": "*" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kickstart-theme", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": { 9 | "liferayTheme": { 10 | "baseTheme": "styled", 11 | "screenshot": "", 12 | "templateLanguage": "ftl", 13 | "version": "7.1" 14 | }, 15 | "name": "parent-theme", 16 | "publishConfig": { 17 | "tag": "7_1_x" 18 | }, 19 | "version": "1.0.0" 20 | }, 21 | "themeletDependencies": { 22 | "test-themelet": { 23 | "liferayTheme": { 24 | "themelet": true, 25 | "version": "7.1" 26 | }, 27 | "name": "test-themelet", 28 | "version": "0.0.0" 29 | } 30 | }, 31 | "version": "7.1" 32 | }, 33 | "dependencies": { 34 | "gulp": "^3.8.10", 35 | "liferay-theme-deps-7.1": "*", 36 | "liferay-theme-tasks": "*" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.1.0+ 7 | 8 | 9 | ftl 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Kickstart Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* kickstart-theme css */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/images/image.png: -------------------------------------------------------------------------------- 1 | kickstart-theme png -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // kickstart-theme js 7 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.1/kickstart-theme/src/templates/portal_normal.ftl: -------------------------------------------------------------------------------- 1 | kickstart-theme ftl -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "parent-theme", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": "styled", 9 | "version": "7.0" 10 | }, 11 | "dependencies": { 12 | "gulp": "^3.8.10", 13 | "liferay-theme-tasks": "*" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.0.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | 15 | portlet-decorator-1-from-parent 16 | 17 | 18 | portlet-decorator-3 19 | 20 | 21 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/parent-theme/src/js/main.js: -------------------------------------------------------------------------------- 1 | console.log('main.js'); -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-themelet", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "themelet": true, 9 | "version": "7.0" 10 | } 11 | } -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* test-themelet/src/custom.css */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liferay/liferay-js-themes-toolkit/28672f6d84322998827706ff4b021932b3ba2f1f/packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/images/icon.png -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/js/main.js: -------------------------------------------------------------------------------- 1 | // test-themelet/src/js/main.js -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/templates/freemarker.ftl: -------------------------------------------------------------------------------- 1 | <#--freemarker.ftl--> -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/node_modules/test-themelet/src/templates/velocity.vm: -------------------------------------------------------------------------------- 1 | ##velocity.vm -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "base-theme-7-2", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": { 9 | "liferayTheme": { 10 | "baseTheme": "styled", 11 | "screenshot": "", 12 | "templateLanguage": "ftl", 13 | "version": "7.1" 14 | }, 15 | "name": "parent-theme", 16 | "publishConfig": { 17 | "tag": "7_1_x" 18 | }, 19 | "version": "1.0.0" 20 | }, 21 | "templateLanguage": "ftl", 22 | "themeletDependencies": { 23 | "test-themelet": { 24 | "liferayTheme": { 25 | "themelet": true, 26 | "version": "7.1" 27 | }, 28 | "name": "test-themelet", 29 | "version": "0.0.0" 30 | } 31 | }, 32 | "version": "7.2" 33 | }, 34 | "dependencies": { 35 | "gulp": "3.9.1", 36 | "liferay-theme-tasks": "^9.5.0", 37 | "compass-mixins": "0.12.10", 38 | "liferay-frontend-common-css": "^1.0.4", 39 | "liferay-frontend-theme-styled": "^4.0.0-alpha.1552930087997", 40 | "liferay-frontend-theme-unstyled": "^4.0.0-alpha.1552930030671" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.0.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | portlet-decorator-1 15 | 16 | 17 | portlet-decorator-2 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ 5 | 6 | @import url(file.css); -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/lib/test/fixtures/themes/7.2/base-theme-7-2/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // eslint-disable-next-line no-console 7 | console.log('main.js'); 8 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/lib/__tests__/fixtures/hook_modules/hook-module-1.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | var {EventEmitter} = require('events'); 7 | 8 | module.exports = function(gulp) { 9 | gulp.hook('before:build', () => { 10 | var eventEmitter = new EventEmitter(); 11 | 12 | // Simulates the end of an async gulp stream 13 | setTimeout(() => { 14 | eventEmitter.emit('end'); 15 | }, 200); 16 | 17 | return eventEmitter; 18 | }); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/lib/__tests__/fixtures/hook_modules/hook-module-2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | module.exports = function(gulp) { 7 | gulp.hook('after:build', cb => { 8 | cb(); 9 | }); 10 | }; 11 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/lib/__tests__/fixtures/hook_modules/hook-module-3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // Improper format for a hook module 7 | module.exports = { 8 | message: 'not a function', 9 | }; 10 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/lib/__tests__/fixtures/hook_modules/hook-module-4.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | var sinon = require('sinon'); 7 | 8 | var spy = sinon.spy(); 9 | 10 | module.exports = function() { 11 | spy.apply(this, arguments); 12 | 13 | return spy; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/c-project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c-project", 3 | "version": "0.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/server/deploy/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/server/glassfish/domains/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/server/jboss/standalone/deployments/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/server/tomcat/webapps/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/prompts/__tests__/fixtures/server/wildfly/standalone/deployments/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/__tests__/deploy.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const {Gulp} = require('gulp'); 9 | const path = require('path'); 10 | 11 | const project = require('../../../lib/project'); 12 | const {cleanTempPlugin, setupTempPlugin} = require('../../../lib/test/util'); 13 | const {registerTasks} = require('../../index'); 14 | 15 | let deployPath; 16 | let tempPlugin; 17 | 18 | beforeEach(() => { 19 | tempPlugin = setupTempPlugin({ 20 | init: () => 21 | registerTasks({ 22 | gulp: new Gulp(), 23 | }), 24 | namespace: 'deploy-task', 25 | pluginName: 'test-plugin-layouttpl', 26 | version: '7.0', 27 | }); 28 | 29 | deployPath = path.join(tempPlugin.tempPath, '..', 'appserver', 'deploy'); 30 | 31 | const {store} = project; 32 | 33 | store.deployPath = deployPath; 34 | }); 35 | 36 | afterEach(() => { 37 | cleanTempPlugin(tempPlugin); 38 | }); 39 | 40 | test('deploy task should deploy war file to specified appserver', done => { 41 | project.gulp.runSequence('deploy', () => { 42 | expect(path.join(deployPath, 'test-plugin-layouttpl.war')).toBeFile(); 43 | 44 | expect(project.store.deployed).toBe(true); 45 | 46 | done(); 47 | }); 48 | }); 49 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/__tests__/init.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const {Gulp} = require('gulp'); 9 | const _ = require('lodash'); 10 | 11 | const project = require('../../../lib/project'); 12 | const {cleanTempPlugin, setupTempPlugin} = require('../../../lib/test/util'); 13 | const {registerTasks} = require('../../index'); 14 | const InitPrompt = require('../../prompts/init_prompt'); 15 | 16 | let tempPlugin; 17 | 18 | beforeEach(() => { 19 | tempPlugin = setupTempPlugin({ 20 | init: () => registerTasks({gulp: new Gulp()}), 21 | namespace: 'init-task', 22 | pluginName: 'test-plugin-layouttpl', 23 | version: '7.0', 24 | }); 25 | }); 26 | 27 | afterEach(() => { 28 | cleanTempPlugin(tempPlugin); 29 | }); 30 | 31 | test('plugin:init should prompt user for appserver information', done => { 32 | const savedPrompt = InitPrompt.prompt; 33 | 34 | let promptCalled = false; 35 | 36 | InitPrompt.prompt = (config, cb) => { 37 | promptCalled = true; 38 | 39 | expect(config.store).toEqual(project.store); 40 | expect(_.endsWith(config.appServerPathDefault, 'tomcat')).toBe(true); 41 | 42 | cb(); 43 | }; 44 | 45 | project.gulp.runSequence('plugin:init', () => { 46 | expect(promptCalled).toBe(true); 47 | 48 | InitPrompt.prompt = savedPrompt; 49 | 50 | done(); 51 | }); 52 | }); 53 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/__tests__/version.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var fs = require('fs-extra'); 9 | var {Gulp} = require('gulp'); 10 | var path = require('path'); 11 | 12 | const project = require('../../../lib/project'); 13 | const {cleanTempPlugin, setupTempPlugin} = require('../../../lib/test/util'); 14 | const {registerTasks} = require('../../index'); 15 | 16 | let tempPlugin; 17 | 18 | beforeEach(() => { 19 | tempPlugin = setupTempPlugin({ 20 | init: () => 21 | registerTasks({ 22 | gulp: new Gulp(), 23 | }), 24 | namespace: 'version-task', 25 | pluginName: 'test-plugin-layouttpl', 26 | version: '7.0', 27 | }); 28 | }); 29 | 30 | afterEach(() => { 31 | cleanTempPlugin(tempPlugin); 32 | }); 33 | 34 | test('plugin:version should add package.json version to liferay-plugin-package.properties', done => { 35 | project.gulp.runSequence('plugin:version', () => { 36 | expect( 37 | path.join( 38 | tempPlugin.tempPath, 39 | 'docroot', 40 | 'WEB-INF', 41 | 'liferay-plugin-package.properties' 42 | ) 43 | ).toBeFileMatching(/module-version=1\.2\.3/); 44 | 45 | done(); 46 | }); 47 | }); 48 | 49 | test('plugin:version should add package.json version to liferay-plugin-package.properties', done => { 50 | const pkgPath = path.join(tempPlugin.tempPath, 'package.json'); 51 | 52 | // eslint-disable-next-line liferay/no-dynamic-require 53 | const pkg = require(pkgPath); 54 | 55 | pkg.version = '1.2.4'; 56 | 57 | fs.writeJSONSync(pkgPath, pkg, {spaces: '\t'}); 58 | 59 | project.gulp.runSequence('plugin:version', () => { 60 | expect( 61 | path.join( 62 | tempPlugin.tempPath, 63 | 'docroot', 64 | 'WEB-INF', 65 | 'liferay-plugin-package.properties' 66 | ) 67 | ).toBeFileMatching(/module-version=1\.2\.4/); 68 | 69 | done(); 70 | }); 71 | }); 72 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/__tests__/war.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var {Gulp} = require('gulp'); 9 | var path = require('path'); 10 | 11 | const project = require('../../../lib/project'); 12 | const {cleanTempPlugin, setupTempPlugin} = require('../../../lib/test/util'); 13 | const {registerTasks} = require('../../index'); 14 | 15 | let tempPlugin; 16 | 17 | beforeEach(() => { 18 | tempPlugin = setupTempPlugin({ 19 | init: () => {}, 20 | namespace: 'war-task', 21 | pluginName: 'test-plugin-layouttpl', 22 | version: '7.0', 23 | }); 24 | }); 25 | 26 | afterEach(() => { 27 | cleanTempPlugin(tempPlugin); 28 | }); 29 | 30 | test('plugin:war should build war file', done => { 31 | registerTasks({ 32 | gulp: new Gulp(), 33 | }); 34 | 35 | project.gulp.runSequence('plugin:war', () => { 36 | expect( 37 | path.join(tempPlugin.tempPath, 'dist', 'test-plugin-layouttpl.war') 38 | ).toBeFile(); 39 | 40 | done(); 41 | }); 42 | }); 43 | 44 | test('plugin:war should use name for war file and pathDist for alternative dist location', done => { 45 | registerTasks({ 46 | distName: 'my-plugin-name', 47 | gulp: new Gulp(), 48 | pathDist: 'dist_alternative', 49 | }); 50 | 51 | project.gulp.runSequence('plugin:war', () => { 52 | expect( 53 | path.join( 54 | tempPlugin.tempPath, 55 | 'dist_alternative', 56 | 'my-plugin-name.war' 57 | ) 58 | ).toBeFile(); 59 | 60 | done(); 61 | }); 62 | }); 63 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/deploy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const gutil = require('gulp-util'); 9 | 10 | const project = require('../../lib/project'); 11 | 12 | module.exports = function() { 13 | const {gulp, store} = project; 14 | const {runSequence} = gulp; 15 | 16 | gulp.task('plugin:deploy', () => { 17 | const {options} = project; 18 | const {deployPath} = store; 19 | 20 | const stream = gulp 21 | .src(options.pathDist.join(options.distName + '.war').asPosix) 22 | .pipe(gulp.dest(deployPath.asNative)); 23 | 24 | gutil.log('Deploying to ' + gutil.colors.cyan(deployPath.asNative)); 25 | 26 | stream.on('end', () => { 27 | store.deployed = true; 28 | }); 29 | 30 | return stream; 31 | }); 32 | 33 | gulp.task('deploy', cb => { 34 | runSequence('build', 'plugin:deploy', cb); 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/init.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const path = require('path'); 9 | 10 | const project = require('../../lib/project'); 11 | const InitPrompt = require('../prompts/init_prompt'); 12 | 13 | module.exports = function() { 14 | const {gulp, store} = project; 15 | const {appServerPath, dockerContainerName} = store; 16 | 17 | gulp.task('plugin:init', cb => { 18 | InitPrompt.prompt( 19 | { 20 | appServerPathDefault: appServerPath 21 | ? appServerPath.asNative 22 | : path.join(path.dirname(project.dir), 'tomcat'), 23 | dockerContainerNameDefault: 24 | dockerContainerName || 'liferay_portal_1', 25 | store, 26 | }, 27 | cb 28 | ); 29 | }); 30 | 31 | gulp.task('init', gulp.series('plugin:init')); 32 | }; 33 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/version.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const fs = require('fs'); 9 | const gutil = require('gulp-util'); 10 | 11 | const project = require('../../lib/project'); 12 | 13 | var chalk = gutil.colors; 14 | 15 | var REGEX_MODULE_VERSION = /module-version=([0-9.]+)/; 16 | 17 | module.exports = function() { 18 | const {gulp} = project; 19 | 20 | gulp.task('plugin:version', done => { 21 | var npmPackageVersion = JSON.parse( 22 | fs.readFileSync('package.json', 'utf8') 23 | ).version; 24 | 25 | var pluginPackagePropertiesPath = project.options.rootDir.join( 26 | 'WEB-INF', 27 | 'liferay-plugin-package.properties' 28 | ).asNative; 29 | 30 | fs.readFile( 31 | pluginPackagePropertiesPath, 32 | { 33 | encoding: 'utf8', 34 | }, 35 | (err, result) => { 36 | if (err) { 37 | throw err; 38 | } 39 | 40 | var moduleVersion = result.match(REGEX_MODULE_VERSION); 41 | 42 | if (moduleVersion && moduleVersion[1] != npmPackageVersion) { 43 | result = result.replace( 44 | REGEX_MODULE_VERSION, 45 | (_match, _g1) => { 46 | return 'module-version=' + npmPackageVersion; 47 | } 48 | ); 49 | 50 | logWarning(); 51 | } else if (!moduleVersion) { 52 | result += '\nmodule-version=' + npmPackageVersion; 53 | } 54 | 55 | fs.writeFileSync(pluginPackagePropertiesPath, result); 56 | 57 | done(); 58 | } 59 | ); 60 | }); 61 | }; 62 | 63 | function logWarning() { 64 | gutil.log( 65 | chalk.yellow('Warning:'), 66 | 'the value of', 67 | chalk.cyan('module-version'), 68 | 'in', 69 | chalk.cyan('liferay-plugin-package.properties'), 70 | 'does not match version in', 71 | chalk.cyan('package.json') + '.', 72 | 'Using version from', 73 | chalk.cyan('package.json') 74 | ); 75 | } 76 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/plugin/tasks/war.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var zip = require('gulp-zip'); 9 | 10 | const project = require('../../lib/project'); 11 | 12 | module.exports = function() { 13 | const {gulp} = project; 14 | const {runSequence} = gulp; 15 | 16 | gulp.task('plugin:war', () => { 17 | const {options} = project; 18 | 19 | return gulp 20 | .src(options.rootDir.join('**/*').asPosix) 21 | .pipe(zip(options.distName + '.war')) 22 | .pipe(gulp.dest(options.pathDist.asNative)); 23 | }); 24 | 25 | gulp.task('build', done => { 26 | runSequence('plugin:version', 'plugin:war', done); 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "b-project", 3 | "version": "0.0.0", 4 | "keywords": [ 5 | "liferay-theme" 6 | ], 7 | "liferayTheme": { 8 | "baseTheme": { 9 | "liferayTheme": { 10 | "baseTheme": "styled", 11 | "screenshot": "", 12 | "templateLanguage": "ftl", 13 | "version": "7.1" 14 | }, 15 | "name": "parent-theme", 16 | "publishConfig": { 17 | "tag": "7_1_x" 18 | }, 19 | "version": "1.0.0" 20 | }, 21 | "templateLanguage": "ftl", 22 | "themeletDependencies": { 23 | "test-themelet": { 24 | "liferayTheme": { 25 | "themelet": true, 26 | "version": "7.1" 27 | }, 28 | "name": "test-themelet", 29 | "version": "0.0.0" 30 | } 31 | }, 32 | "version": "7.1" 33 | }, 34 | "dependencies": { 35 | "gulp": "^3.8.10", 36 | "liferay-theme-deps-7.1": "*", 37 | "liferay-theme-tasks": "*" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/liferay-hook.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | content/Language*.properties 6 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/liferay-look-and-feel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7.0.0+ 7 | 8 | 9 | vm 10 | 11 | 12 | 13 | 14 | portlet-decorator-1 15 | 16 | 17 | portlet-decorator-2 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/liferay-plugin-package.properties: -------------------------------------------------------------------------------- 1 | name=Base Theme 2 | module-group-id=liferay 3 | module-incremental-version=1 4 | tags= 5 | short-description= 6 | long-description= 7 | change-log= 8 | page-url=http://www.liferay.com 9 | author=Liferay, Inc. 10 | licenses=LGPL 11 | liferay-versions=7.0.0+ 12 | 13 | #required-deployment-contexts=\ 14 | # resources-importer-web 15 | 16 | resources-importer-developer-mode-enabled=true -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/src/content/Language_en.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/src/content/Language_es.properties: -------------------------------------------------------------------------------- 1 | test=Test -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/src/resources-importer/readme.txt: -------------------------------------------------------------------------------- 1 | See http://www.liferay.com/community/wiki/-/wiki/Main/Resources+Importer+Web 2 | for more information about the Resources Importer. -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/WEB-INF/src/resources-importer/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "layoutTemplateId": "2_columns_ii", 3 | "privatePages": [ 4 | { 5 | "columns": [ 6 | [ 7 | { 8 | "portletId": "58" 9 | } 10 | ], 11 | [ 12 | { 13 | "portletId": "47" 14 | } 15 | ] 16 | ], 17 | "friendlyURL": "/home", 18 | "name": "Welcome", 19 | "title": "Welcome" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/css/_custom.scss: -------------------------------------------------------------------------------- 1 | /* inject:imports */ 2 | /* endinject */ 3 | 4 | /* _custom.scss */ 5 | 6 | @import url(file.css); -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/css/base/_text.scss: -------------------------------------------------------------------------------- 1 | /* _text.scss */ -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/b-project/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | // eslint-disable-next-line no-console 7 | console.log('main.js'); 8 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/look_and_feel_util/base-look-and-feel.json: -------------------------------------------------------------------------------- 1 | { 2 | "look-and-feel": { 3 | "compatibility": [ 4 | { 5 | "version": ["7.1.0+"] 6 | } 7 | ], 8 | "theme": [ 9 | { 10 | "$": { 11 | "id": "base-theme", 12 | "name": "Base Theme" 13 | }, 14 | "template-extension": ["ftl"], 15 | "settings": [ 16 | { 17 | "setting": [ 18 | { 19 | "$": { 20 | "configurable": "true", 21 | "key": "show-breadcrumb", 22 | "type": "checkbox", 23 | "value": "true" 24 | } 25 | } 26 | ] 27 | } 28 | ], 29 | "portlet-decorator": [ 30 | { 31 | "$": { 32 | "id": "portlet-decorator-1", 33 | "name": "Decorator 1" 34 | }, 35 | "portlet-decorator-css-class": ["portlet-decorator-1"] 36 | }, 37 | { 38 | "$": { 39 | "id": "portlet-decorator-2", 40 | "name": "Decorator 2" 41 | }, 42 | "portlet-decorator-css-class": ["portlet-decorator-2"] 43 | } 44 | ] 45 | } 46 | ] 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/fixtures/look_and_feel_util/parent-look-and-feel.json: -------------------------------------------------------------------------------- 1 | { 2 | "look-and-feel": { 3 | "compatibility": [ 4 | { 5 | "version": ["7.0.0+"] 6 | } 7 | ], 8 | "theme": [ 9 | { 10 | "$": { 11 | "id": "parent-theme", 12 | "name": "parent-theme" 13 | }, 14 | "template-extension": ["vm"], 15 | "settings": [ 16 | { 17 | "setting": [ 18 | { 19 | "$": { 20 | "configurable": "false", 21 | "key": "show-breadcrumb", 22 | "type": "checkbox", 23 | "value": "false" 24 | } 25 | }, 26 | { 27 | "$": { 28 | "configurable": "true", 29 | "key": "parent-setting", 30 | "type": "input", 31 | "value": "true" 32 | } 33 | } 34 | ] 35 | } 36 | ], 37 | "portlet-decorator": [ 38 | { 39 | "$": { 40 | "id": "portlet-decorator-1", 41 | "name": "Decorator 1" 42 | }, 43 | "portlet-decorator-css-class": [ 44 | "portlet-decorator-1-from-parent" 45 | ] 46 | }, 47 | { 48 | "$": { 49 | "id": "portlet-decorator-3", 50 | "name": "Decorator 3" 51 | }, 52 | "portlet-decorator-css-class": ["portlet-decorator-3"] 53 | } 54 | ] 55 | } 56 | ] 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/__tests__/status.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const status = require('../../lib/status.js'); 7 | 8 | it('status should return appropriate status message', () => { 9 | let statusMessage = status({ 10 | baseTheme: { 11 | name: 'parent-theme', 12 | version: '1.2.3', 13 | }, 14 | }); 15 | 16 | expect(!/Themelets:/.test(statusMessage)).toBe(true); 17 | expect(/Base theme:/.test(statusMessage)).toBe(true); 18 | expect(/parent-theme v1\.2\.3/.test(statusMessage)).toBe(true); 19 | 20 | statusMessage = status({ 21 | baseTheme: 'unstyled', 22 | themeletDependencies: { 23 | 'themelet-1': { 24 | name: 'themelet-1', 25 | version: '3.2.1', 26 | }, 27 | }, 28 | }); 29 | 30 | expect(/Base theme:/.test(statusMessage)).toBe(true); 31 | expect(/themelet-1 v3\.2\.1/.test(statusMessage)).toBe(true); 32 | expect(/Themelets:/.test(statusMessage)).toBe(true); 33 | expect(/unstyled/.test(statusMessage)).toBe(true); 34 | 35 | statusMessage = status({}); 36 | 37 | expect(!/Themelets:/.test(statusMessage)).toBe(true); 38 | expect(/Base theme:/.test(statusMessage)).toBe(true); 39 | expect(/no base theme specified/.test(statusMessage)).toBe(true); 40 | }); 41 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/bourbon_dependencies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const fs = require('fs-extra'); 9 | const bourbon = require('node-bourbon'); 10 | const path = require('path'); 11 | 12 | const project = require('../../lib/project'); 13 | const themeUtil = require('../../lib/util'); 14 | 15 | const formatPath = function(filePath) { 16 | return filePath.replace(/\\/g, '/'); 17 | }; 18 | 19 | exports.createBourbonFile = function() { 20 | const {pathSrc} = project.options; 21 | 22 | const bourbonPath = bourbon.includePaths[0]; 23 | 24 | const tmpDirPath = project.tmpdir().asNative; 25 | 26 | const bourbonFilePath = path.join(tmpDirPath, '_bourbon.scss'); 27 | 28 | const bourbonFile = []; 29 | 30 | const deprecatedMixinsFilePath = path.join( 31 | project.dir, 32 | pathSrc.asNative, 33 | 'css', 34 | '_deprecated_mixins.scss' 35 | ); 36 | 37 | if (fs.existsSync(deprecatedMixinsFilePath)) { 38 | bourbonFile.push('@import "'); 39 | bourbonFile.push(formatPath(deprecatedMixinsFilePath)); 40 | bourbonFile.push('";'); 41 | } 42 | 43 | const mixinsPath = 44 | themeUtil.getCustomDependencyPath('liferay-frontend-common-css') || 45 | path.dirname(require.resolve('liferay-frontend-common-css')); 46 | 47 | bourbonFile.push('@import "'); 48 | bourbonFile.push(formatPath(path.join(bourbonPath, 'bourbon'))); 49 | bourbonFile.push('";'); 50 | bourbonFile.push('@import "'); 51 | bourbonFile.push( 52 | formatPath(path.join(mixinsPath, 'liferay', '_bourbon_ext.scss')) 53 | ); 54 | bourbonFile.push('";'); 55 | 56 | fs.writeFileSync(bourbonFilePath, bourbonFile.join('')); 57 | 58 | return tmpDirPath; 59 | }; 60 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/getBaseThemeDependencies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const _ = require('lodash'); 9 | const path = require('path'); 10 | 11 | const project = require('../../lib/project'); 12 | const util = require('../../lib/util'); 13 | const {getBaseThemeGlob, getLiferayThemeJSON} = require('./theme_inspector'); 14 | 15 | function getBaseThemeDependencies( 16 | baseThemePath = project.dir, 17 | dependencies = [] 18 | ) { 19 | const {baseTheme} = getLiferayThemeJSON(baseThemePath); 20 | const baseThemeGlob = getBaseThemeGlob(baseThemePath); 21 | 22 | dependencies = _.uniq( 23 | dependencies.concat([ 24 | path.join( 25 | util.resolveDependency('liferay-frontend-theme-unstyled'), 26 | baseThemeGlob 27 | ), 28 | ]) 29 | ); 30 | 31 | if (_.isObject(baseTheme)) { 32 | baseThemePath = path.join( 33 | baseThemePath, 34 | 'node_modules', 35 | baseTheme.name 36 | ); 37 | 38 | dependencies = getBaseThemeDependencies(baseThemePath, dependencies); 39 | 40 | dependencies.push(path.resolve(baseThemePath, 'src', '**', '*')); 41 | 42 | return dependencies; 43 | } else if (baseTheme === 'styled' || baseTheme === 'admin') { 44 | dependencies.splice( 45 | 1, 46 | 0, 47 | path.join( 48 | util.resolveDependency('liferay-frontend-theme-styled'), 49 | baseThemeGlob 50 | ) 51 | ); 52 | 53 | if (baseTheme === 'admin') { 54 | dependencies.splice( 55 | 2, 56 | 0, 57 | path.join( 58 | util.resolveDependency('liferay-frontend-theme-admin-web'), 59 | baseThemeGlob 60 | ) 61 | ); 62 | } 63 | 64 | return dependencies; 65 | } 66 | 67 | return dependencies; 68 | } 69 | 70 | module.exports = getBaseThemeDependencies; 71 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/normalize.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | /** 7 | * "Normalize" an HTML template by adding JS-injection placeholders as 8 | * HTML comments at the end of the template . 9 | * 10 | * @param {string} template 11 | * @return {string} 12 | */ 13 | function normalize(template) { 14 | const beforeRegex = /<\/body>/; 15 | 16 | const replacementContent = '\n\n\n'; 17 | 18 | if (template.indexOf(replacementContent) === -1) { 19 | template = template.replace(beforeRegex, match => { 20 | return replacementContent + match; 21 | }); 22 | } 23 | 24 | return template; 25 | } 26 | 27 | module.exports = normalize; 28 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/status.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const colors = require('ansi-colors'); 7 | const _ = require('lodash'); 8 | 9 | function status(themeConfig) { 10 | const statusBuffer = []; 11 | 12 | const baseTheme = themeConfig.baseTheme; 13 | 14 | const baseThemeLabel = colors.cyan('Base theme: '); 15 | 16 | if (baseTheme) { 17 | const baseThemeName = baseTheme.name || baseTheme; 18 | const baseThemeVersion = baseTheme.version 19 | ? 'v' + baseTheme.version 20 | : ''; 21 | 22 | statusBuffer.push( 23 | baseThemeLabel + 24 | colors.green(`${baseThemeName} ${baseThemeVersion}`) 25 | ); 26 | } else { 27 | statusBuffer.push( 28 | baseThemeLabel + colors.red('no base theme specified') 29 | ); 30 | } 31 | 32 | const themeletDependencies = themeConfig.themeletDependencies; 33 | 34 | if (themeletDependencies) { 35 | statusBuffer.push(colors.cyan('Themelets:')); 36 | 37 | _.forEach(themeletDependencies, item => { 38 | statusBuffer.push( 39 | ' - ' + colors.green(item.name + ' v' + item.version) 40 | ); 41 | }); 42 | } 43 | 44 | return statusBuffer.join('\n') + '\n'; 45 | } 46 | 47 | module.exports = status; 48 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/theme_inspector.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const path = require('path'); 7 | 8 | const TEMPLATE_LANG_FTL = 'ftl'; 9 | const TEMPLATE_LANG_VM = 'vm'; 10 | 11 | function getBaseThemeGlob(themePath) { 12 | const templateLanguage = getLiferayThemeJSON(themePath).templateLanguage; 13 | const glob = '**/!(package.json'; 14 | 15 | switch (templateLanguage) { 16 | case TEMPLATE_LANG_FTL: 17 | return glob + '|*.' + TEMPLATE_LANG_VM + ')'; 18 | 19 | case TEMPLATE_LANG_VM: 20 | return glob + '|*.' + TEMPLATE_LANG_FTL + ')'; 21 | 22 | default: 23 | return glob + ')'; 24 | } 25 | } 26 | 27 | function getLiferayThemeJSON(themePath) { 28 | // eslint-disable-next-line liferay/no-dynamic-require 29 | return require(path.join(themePath, 'package.json')).liferayTheme; 30 | } 31 | 32 | module.exports = {getBaseThemeGlob, getLiferayThemeJSON}; 33 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/lib/upgrade/__tests__/upgrade.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const {Gulp} = require('gulp'); 7 | const path = require('path'); 8 | 9 | const project = require('../../../../lib/project'); 10 | const {cleanTempTheme, setupTempTheme} = require('../../../../lib/test/util'); 11 | const {registerTasks} = require('../../../../theme'); 12 | 13 | let tempTheme; 14 | 15 | beforeEach(() => { 16 | tempTheme = setupTempTheme({ 17 | init: () => 18 | registerTasks({ 19 | gulp: new Gulp(), 20 | }), 21 | namespace: 'upgrade_task_config', 22 | themeName: 'base-theme', 23 | }); 24 | }); 25 | 26 | afterEach(() => { 27 | cleanTempTheme(tempTheme); 28 | }); 29 | 30 | it('upgrade:config', done => { 31 | project.gulp.runSequence('upgrade:config', err => { 32 | if (err) throw err; 33 | 34 | const themeConfig = project.themeConfig.config; 35 | 36 | expect(themeConfig.version).toBe('7.2'); 37 | 38 | const lookAndFeelPath = path.join( 39 | tempTheme.tempPath, 40 | 'src', 41 | 'WEB-INF', 42 | 'liferay-look-and-feel.xml' 43 | ); 44 | const pluginPackagePropertiesPath = path.join( 45 | tempTheme.tempPath, 46 | 'src', 47 | 'WEB-INF', 48 | 'liferay-plugin-package.properties' 49 | ); 50 | 51 | expect(lookAndFeelPath).toBeFileMatching(/7\.2\.0/); 52 | expect(lookAndFeelPath).toBeFileMatching(/7_2_0/); 53 | expect(pluginPackagePropertiesPath).toBeFileMatching(/7\.2\.0\+/); 54 | 55 | expect(lookAndFeelPath).not.toBeFileMatching(/7\.1\.0/); 56 | expect(lookAndFeelPath).not.toBeFileMatching(/7_1_0/); 57 | expect(pluginPackagePropertiesPath).not.toBeFileMatching(/7\.1\.0/); 58 | 59 | done(); 60 | }); 61 | }); 62 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/prompts/global_module_prompt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const colors = require('ansi-colors'); 7 | const log = require('fancy-log'); 8 | const _ = require('lodash'); 9 | 10 | const themeFinder = require('../lib/theme_finder'); 11 | const ModulePrompt = require('./module_prompt'); 12 | 13 | class GlobalModulePrompt { 14 | constructor(...args) { 15 | this.init(...args); 16 | } 17 | 18 | init(config, cb) { 19 | this.done = cb; 20 | this.selectedModules = config.selectedModules; 21 | this.themelet = config.themelet; 22 | 23 | this._getGlobalModules(modules => { 24 | this.modules = modules; 25 | 26 | ModulePrompt.prompt(this, _.bind(this._afterPrompt, this)); 27 | }); 28 | } 29 | 30 | _afterPrompt(answers) { 31 | const type = this.themelet ? 'themelet' : 'theme'; 32 | 33 | if (_.isEmpty(this.modules)) { 34 | log( 35 | colors.yellow( 36 | 'No globally installed ' + 37 | type + 38 | ' found. Install some with "npm i -g [name]"' 39 | ) 40 | ); 41 | 42 | if (!process.env.NODE_PATH) { 43 | log( 44 | colors.yellow('Warning:'), 45 | colors.cyan('NODE_PATH'), 46 | 'environment variable not found. If you have globally installed modules that are not being located, please set', 47 | colors.cyan('NODE_PATH') 48 | ); 49 | } 50 | } 51 | 52 | this.done(answers); 53 | } 54 | 55 | _getGlobalModules(cb) { 56 | themeFinder.getLiferayThemeModules( 57 | { 58 | globalModules: true, 59 | themelet: this.themelet, 60 | }, 61 | cb 62 | ); 63 | } 64 | } 65 | 66 | GlobalModulePrompt.prompt = (config, cb) => new GlobalModulePrompt(config, cb); 67 | 68 | module.exports = GlobalModulePrompt; 69 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/__tests__/__snapshots__/status.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`status task should print base theme/themelet information 1`] = ` 4 | Array [ 5 | "Base theme: parent-theme v1.0.0 6 | Themelets: 7 | - test-themelet v0.0.0 8 | ", 9 | ] 10 | `; 11 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/__tests__/deploy.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const fs = require('fs-extra'); 7 | const {Gulp} = require('gulp'); 8 | const path = require('path'); 9 | 10 | const project = require('../../../lib/project'); 11 | const {cleanTempTheme, setupTempTheme} = require('../../../lib/test/util'); 12 | const {registerTasks} = require('../../index'); 13 | 14 | let deployPath; 15 | let tempTheme; 16 | 17 | beforeAll(() => { 18 | process.env.LIFERAY_THEME_STYLED_PATH = path.dirname( 19 | require.resolve('liferay-frontend-theme-styled/package.json') 20 | ); 21 | process.env.LIFERAY_THEME_UNSTYLED_PATH = path.dirname( 22 | require.resolve('liferay-frontend-theme-unstyled/package.json') 23 | ); 24 | }); 25 | 26 | afterAll(() => { 27 | delete process.env.LIFERAY_THEME_STYLED_PATH; 28 | delete process.env.LIFERAY_THEME_UNSTYLED_PATH; 29 | }); 30 | 31 | beforeEach(() => { 32 | tempTheme = setupTempTheme({ 33 | init: () => 34 | registerTasks({ 35 | distName: 'base-theme', 36 | gulp: new Gulp(), 37 | }), 38 | namespace: 'deploy_task', 39 | themeName: 'base-theme-7-2', 40 | version: '7.2', 41 | }); 42 | 43 | deployPath = path.join(tempTheme.tempPath, '..', 'appserver', 'deploy'); 44 | 45 | const {store} = project; 46 | 47 | store.deployPath = deployPath; 48 | store.webBundleDir = undefined; 49 | 50 | fs.emptyDirSync(deployPath); 51 | }); 52 | 53 | afterEach(() => { 54 | cleanTempTheme(tempTheme); 55 | fs.removeSync(deployPath); 56 | }); 57 | 58 | it('deploys to deploy server', done => { 59 | project.gulp.runSequence('deploy', err => { 60 | if (err) throw err; 61 | 62 | expect(fs.existsSync(path.join(deployPath, 'base-theme.war'))).toBe( 63 | true 64 | ); 65 | 66 | done(); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/__tests__/status.test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const {Gulp} = require('gulp'); 7 | const sinon = require('sinon'); 8 | 9 | const project = require('../../../lib/project'); 10 | const {cleanTempTheme, setupTempTheme} = require('../../../lib/test/util'); 11 | const {registerTasks} = require('../../index'); 12 | 13 | let tempTheme; 14 | 15 | beforeEach(() => { 16 | tempTheme = setupTempTheme({ 17 | init: () => registerTasks({gulp: new Gulp()}), 18 | namespace: 'status_task', 19 | }); 20 | }); 21 | 22 | afterEach(() => { 23 | cleanTempTheme(tempTheme); 24 | }); 25 | 26 | it('status task should print base theme/themelet information', done => { 27 | const savedConsole = global.console; 28 | 29 | global.console = { 30 | log: sinon.spy(), 31 | }; 32 | 33 | project.gulp.runSequence('status', () => { 34 | const calls = global.console.log.getCalls(); 35 | 36 | global.console = savedConsole; 37 | 38 | expect(calls).toHaveLength(1); 39 | expect(calls[0].args).toMatchSnapshot(); 40 | 41 | done(); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/extend.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const project = require('../../lib/project'); 9 | const ExtendPrompt = require('../prompts/extend_prompt'); 10 | 11 | module.exports = function() { 12 | const {gulp} = project; 13 | 14 | gulp.task('extend', cb => { 15 | ExtendPrompt.prompt(cb); 16 | }); 17 | }; 18 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/init.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | 'use strict'; 7 | 8 | const project = require('../../lib/project'); 9 | 10 | module.exports = function() { 11 | const {gulp} = project; 12 | 13 | gulp.task('init', gulp.series('plugin:init')); 14 | }; 15 | -------------------------------------------------------------------------------- /packages/liferay-theme-tasks/theme/tasks/status.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: © 2017 Liferay, Inc. 3 | * SPDX-License-Identifier: MIT 4 | */ 5 | 6 | const project = require('../../lib/project'); 7 | const status = require('../lib/status'); 8 | 9 | function getStatus() { 10 | const {gulp} = project; 11 | 12 | gulp.task('status', cb => { 13 | // eslint-disable-next-line 14 | console.log(status(project.themeConfig.config)); 15 | 16 | cb(); 17 | }); 18 | } 19 | 20 | module.exports = getStatus; 21 | -------------------------------------------------------------------------------- /qa/lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": ["packages/*"], 3 | "version": "0.0.0", 4 | "npmClient": "yarn", 5 | "useWorkspaces": true 6 | } 7 | -------------------------------------------------------------------------------- /qa/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "workspaces": { 4 | "packages": [ 5 | "packages/*" 6 | ], 7 | "nohoist": [ 8 | "**/liferay-font-awesome" 9 | ] 10 | }, 11 | "dependencies": { 12 | "lerna": "^3.20.2", 13 | "yo": "^3.1.1" 14 | }, 15 | "scripts": { 16 | "deploy": "lerna run deploy" 17 | } 18 | } 19 | --------------------------------------------------------------------------------