From e9d77db8412d44da4bc982dd78f8a2763f30ab5e Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Thu, 15 Feb 2018 19:43:24 -0500 Subject: [PATCH] Adding Sass/CSS overview from wiki. Covers some of the basics of how our Sass is compiled in edx-platform. --- docs/styling.rst | 163 +++++++++++++++++++++++++++++++++++++ docs/v1_sass_pipeline.webp | Bin 0 -> 37066 bytes 2 files changed, 163 insertions(+) create mode 100644 docs/styling.rst create mode 100644 docs/v1_sass_pipeline.webp diff --git a/docs/styling.rst b/docs/styling.rst new file mode 100644 index 0000000000..0c008cb9d5 --- /dev/null +++ b/docs/styling.rst @@ -0,0 +1,163 @@ +####################### +Styling in edx-platform +####################### + +Over time, our Sass styling has become a little convoluted, with three major +reworkings often leading to confusion when a developer needs to style in +multiple locations across edx-platform. The main endeavors were v1, v2 (or +pattern library) and Bootstrap. We are trying to move away from using v2, as the +pattern library is deprecated, but there may still be locations in the code that +reference those styles (please remove them as you see fit). + +Our platform uses a system of Sass partials that combine to compile into a +single large css file to be rendered on the page. From the Sass docs: + + You can create partial Sass files that contain little snippets of CSS + that you can include in other Sass files. This is a great way to + modularize your CSS and help keep things easier to maintain. A partial + is simply a Sass file named with a leading underscore. You might name it + something like _partial.scss. The underscore lets Sass know that the + file is only a partial file and that it should not be generated into a + CSS file. Sass partials are used with the ``@import`` directive. + +This structure allows us to break up our styling into small pieces, making +readability and maintenance easier, while often at the expense of structural +complexity as a code base grows. Here is an example, directly from edx-platform, +for how the partials flow to a single scss file that compiles into CSS for the +page to use. This is a page that uses v1 styling. + +.. figure:: v1_sass_pipeline.webp + :alt: Sass Compilation for v1 CSS + + Sass Compilation for v1 CSS + +Note that this only shows an example, there are far more partials that come +together to make the ``lms-main-v1.css`` final file. + +As you can see, the ``lms-main-v1.scss`` file does not have a leading +underscore, telling the compilation to turn that scss file into an actual css +file to be rendered on the page. If you were to use the Chrome Inspector tool +and look at the styling, you will see that there is one unified ``lms- +main-v1.css`` file that contains all the element styles. + +The ``lms-main-v1.scss`` file uses the ``@import`` statement to pull in the +``_build- base-v1.scss`` and ``build-lms-v1.scss`` files which in turn import +more partials down the road. It is critical to recognize that this tree works in +a depth-first, first-come-first-serve manner. That means that styles that are +imported early in the process cannot reference Sass variables imported later in +the process (ie: ``bootstrap/variables`` cannot reference variables from +``shared/header``). + +This diagram describes the process for the **v1 styles**, and there is a similar +setup for ``lms-main-v2.scss`` as well as ``bootstrap/lms-main.scss``. Each +individual HTML page on the edx-platform specifies which of the three that page +wants to use for styling. Please note that as an organization, we are slowly +trying to 1) move everything over to the bootstrap/lms-main.scss file and 2) +deprecate and stop using any v2 files. ``lms-main-v1.scss`` can still be used, +but a migration over to ``bootstrap/lms-main.scss``, and a migration of any +relevant partials from the v1 structure, would be a valuable endeavor. + +Please note that as you add partials, make sure that they are not already being +imported in another file (ie: you add a node to the tree above that already +exists on the tree). + +What theming does, and how to do it +*********************************** + +By thinking about the styling as a tree, theming becomes a lot simpler. All +theming means is that you can override one of the partials above by matching +the exact path in the ``edx-platform/themes`` directory. So, for example, to +override the shared header file (located at ``lms/static/sass/shared/_header``), +you would simply go into the ``edx-platform/themes/[theme you want to +override]/lms/static/shared`` folder and add a _header.scss file. When django +compiles the assets, it will use this file as a replacement to the main +edx-platform implementation. + +If you look at the actual code base, you will see that we have a standard of +using the partials directory for these overrides files. This keeps the specific +components isolated from the core styling to reduce errors when people override +files and forget to import other files that are needed elsewhere on the site. +This is a good practice that future development should adhere to. + +Final Note: When dealing with front end changes, it is a good idea to also check +the edx-themes repo, that works exactly like our themes folder, but also +includes html templates that can further confuse things. + +Bootstrap and edx-platform +************************** + +In a month and a half endeavor in the Fall, Andy and I worked on integrating +Bootstrap into the platform for three main reasons. + +1. **To unify our styling:** By specifying colors and variables that can be used +universally, reducing the '50 shades of grey' issue and inconsistencies in the +ways that we style components. + +2. **To add a widely used component library:** Bootstrap has a robust community +of developers that contribute to their open source component library, allowing +for easier prototyping and create of front end experiences. + +3. **To simplify theming:** Since we now have a single unified source of truth +for our variables, openedx instances and alternative themes can simply override +those files to customly style their sites. + +Relating to the above styling conversation, we have pulled in the entire +bootstrap styling library into ``lms-main.scss``, but only partially pulled it +into the v1 and v2 implementations due to naming conflicts. For example, we +could not pull in the bootstrap modal, due to conflicts with our own modal +styling (both use the generic ``.modal`` class). We were, however, able **to +pull in the entire bootstrap javascript file**, since that file overrides jQuery +in ways that our current application does not (meaning no conflicts). + +Therefore, any pages that use lms-main.scss can use any bootstrap component out +of the box. **To use bootstrap components in older, v1, v2 pages** we have to +manually specify the exact Sass partial from the ``edx- +platform/node_modules/bootstrap`` that we want. For example, to add an alert to +a v1 page, you would add to ``base/build`` the partial ``bootstrap/scss/alert``. +Steps outlined below. + +1. Determine from the ``node_modules/bootstrap/scss`` directory which component +you want to import. + +2. Add that import (i.e: ``bootstrap/scss/alert``) somewhere in the Sass tree, +most likely to ``base/build.scss`` + +3. NOTE: Run ``paver compile_sass`` to make sure it works, if not, there is +likely a bootstrap mixin that you are missing. If so, search for the mixin in +``node_modules/bootstrap/scss/mixins`` and import it (i.e: +``bootstrap/scss/mixins/alert``) + +4. You are done. Add the component using HTML or Javascript. Use the Bootstrap +Component Docs for examples. + +FAQ +*** + +I want to add a new scss file for a feature on a particular page, how do I add it? +################################################################################## + +First, you want to check which root file the page uses, whether it is +lms-main-v1, lms-main-v2 or lms-main. Then, go to that file and trace down the +tree to find a good spot for the new scss file to live. So, for example, if you +are adding an LMS feature and the page uses lms-main-v1, you can trace down lms- +main-v1 > _build_lms_v1 and see that there are plenty of standalone imports that +look like features. Simply add your file to the lms/static/sass directory in a +similar manner and add it as an @import to that page. + +Why isn't my bootstrap component styling like in the bootstrap docs? +#################################################################### + +In any pages that use the lms-main.css compiled file, the bootstrap component +will render. This case only arises when we are working with a legacy v1 or v2 +page. As outlined earlier in this document, we cannot import the entire +bootstrap repository due to conflicts with old styling. For v1 and v2, we are +gradually pulling in styles for components, so this must mean that you are +building a component that has not yet been used in the LMS/Studio. + +To add the styles, you first need to find them in the bootstrap package. To do +so, search at edx-platform/node_modules/bootstrap/scss for the file that you +need. Then add this to the v1 or v2 tree, most likely to the build/base.scss +file. Note that you may hit issues with mixins when you try to compile the SASS. +In this case, check the edx-platform/node_modules/bootstrap/scss/mixins folder +and import that into the lms or studio before trying to import the component +styling. diff --git a/docs/v1_sass_pipeline.webp b/docs/v1_sass_pipeline.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2644df8cb32cd1c29d249bbe6aa87e1a6541f0f GIT binary patch literal 37066 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 z�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 literal 0 HcmV?d00001