Coder Social home page Coder Social logo

fourkitchens / emulsify Goto Github PK

View Code? Open in Web Editor NEW
162.0 36.0 70.0 7.53 MB

DEPRECATED (see README for new version)

License: GNU General Public License v2.0

JavaScript 56.43% CSS 6.92% HTML 28.59% PHP 7.69% Shell 0.36%
pattern-lab drupal drupal-8 component-driven theme emulsify

emulsify's Introduction

Four Kitchens

⚠️ You are viewing the legacy version of Emulsify ⚠️

You can find the current version of Emulsify Design System at github.com/emulsify-ds

If you'd like to upgrade your Emulsify project to the new version, check out this documentation.


Emulsify (legacy version)

Pattern Lab + Drupal 8

Component-driven prototyping tool using Pattern Lab v2 automated via Gulp/NPM. Also serves as a starterkit Drupal 8 theme.

Requirements

  1. PHP 7.1
  2. Node (we recommend NVM)
  3. Gulp
  4. Composer
  5. Optional: Yarn

Prototyping (separate from Drupal, Wordpress, etc.)

Emulsify supports both NPM and YARN.

Install with NPM: composer create-project fourkitchens/emulsify:^3.0 --stability dev --no-interaction emulsify && cd emulsify && npm install

Install with Yarn: composer create-project fourkitchens/emulsify:^3.0 --stability dev --no-interaction emulsify && cd emulsify && yarn install

Drupal installation

In a Composer-based Drupal install (recommended)

  1. Require emulsify in your project composer require fourkitchens/emulsify
  2. Move into the original emulsify theme cd web/themes/contrib/emulsify/
  3. Create your new theme by cloning emulsify php emulsify.php "THEME NAME" (Run php emulsify.php -h for other available options)
  4. Move into your theme directory cd web/themes/custom/THEME_NAME/
  5. Install the theme dependencies npm install or yarn install
  6. Enable your theme and its dependencies drush then THEME_NAME -y && drush en components unified_twig_ext -y
  7. Proceed to the "Starting Pattern Lab…" section below

If you're not using a Composer-based Drupal install (e.g. tarball download from drupal.org) installation instructions can be found on the Wiki.

Troubleshooting Installation: See Drupal Installation FAQ.

Note: Once you've created your custom theme, you can remove Emulsify as a dependency of your project. If you'd like to get updates as we push them, solely for educational/best-practice information, feel free to leave it in and receive the updates. Updating Emulsify will not affect your custom theme in any way.

Starting Pattern Lab and watch task

The start command spins up a local server, compiles everything (runs all required gulp tasks), and watches for changes.

  1. npm start or yarn start

Highlighted Features

LightweightEmulsify is focused on being as lightweight as possible.
SVG sprite support Automated support for creating SVG sprites.
Stock Drupal templates Templates from Stable theme - see /templates directory
Stock Components with Drupal support built-in (https://github.com/fourkitchens/emulsify#emulsifys-built-in-components-with-drupal-support)
Performance Testing Support for testing via Google PageSpeed Insights and WebPageTest.org (https://github.com/fourkitchens/emulsify/wiki/Gulp-Config#performance-testing)
Automated Github Deployment Deploy your Pattern Lab instance as a Github page (https://github.com/fourkitchens/emulsify/wiki/Gulp-Config#deployment)
Automated Accessibility Testing Accessibility Testing using pa11y (https://github.com/fourkitchens/emulsify/wiki/Accessibility-Testing)

Emulsify's Built in Components with Drupal support

Forms, tables, video, accordion, cards, breadcrumbs, tabs, pager, status messages, grid

View a demo of these default Emulsify components.

Documentation

Documentation is currently provided in the Wiki. Here are a few basic links:

General Orientation

See Orientation

We have a series of videos for you to learn more about Emulsify.

For Designers (Prototyping)

See Designers

For Drupal 8 Developers

See Drupal Usage

Gulp Configuration

See Gulp Config

emulsify's People

Contributors

amazingrando avatar ay13 avatar ccjjmartin avatar dasginganinja avatar deepak-zyxware avatar evanlovely avatar froboy avatar infiniteluke avatar istryker avatar jefftomlinson avatar mikeethedude avatar modulesunraveled avatar naxoc avatar philwolstenholme avatar shaal avatar syammohanmp avatar thamas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

emulsify's Issues

Sidebar markup

In 'components/_pattern/05-page/_page.twig', the sidebar have a 'main-sidebar' class and the content a 'main-content(&--with-sidebar)' class,

while in 'components/_pattern/05-page/_page.scss' the class in use are '.layout-sidebar' and '.layout-content(&--no-sidebar)'.

Is it a mistake or am I missing something?

Is it recommended to create a subtheme?

Hi,
As I'm just starting to explore emulsify, I'm wondering if it is recommended/needed to create a subtheme, or if I can just modify emulsify?
And if a subtheme is needed, could you please give some hint about how to create it?
Thanks!

Explore moving to global data versus local yml files

We could still use local files as necessary, but it sounds like this approach may reduce our data like our approach to handling atoms has reduced our markup.

Basically, we can use the _data directory to house global data files (apparently supports multiple files), and we can move to a different approach in how we set up Twig files.This requires the following:

  1. Change _data files to yml files and separate out data as we see fit for readability
  2. Move to the approach of having 2 kinds of components (Evan Lovely's approach) -presentational and container components. Basically, one provides vars/markup and the presentational ones are the ones that are given explicit data and then reused within larger components. This allows data to pass through all and removes the headache of copying data (which can always be done as needed by including the container component instead of the presentational one).

Examples. Needs lots of examples.

I've been using Emulsify and want to contribute my experiences to the wiki. I'm running into problems stitching my PL components to Drupal stuff. For example, the most basic examples I can provide are far more complex than the two examples in the wiki:

  • I want to combine to fields to make a byline in a node template but content.field_one ~ ', ' ~ content.field_two just outputs ARRAY, ARRAY. Each field works fine when I output it in its own. They break when combined.
  • I want to build some custom markup with an image field.. I can't extract the src/alt without doing some crazy gymnastics. This could take many forms (an <img> or a div with a bg-image, <picture> etc)

Here are other even more complex situations I have to solve on my project that I suspect aren't even possible. I'd love to be wrong but here they are to start discussion:

  • I want to build a Views display using a molecule and an organism. The organism is the views-view-unformatted.html.twig scope and the molecule is the row scope in that template. How to pass a template to a template? embed? What pattern does a dev need to look out for so they can build PL in a Drupal-friendly way?
  • I want to theme a node submission form. I suspect this is also impossible using the include/with pattern because theming a form means the children var is flattened HTML when the template receives it. I would have to go back and create templates per Drupal component which is the exact opposite of what Emulsify intends to accomplish.

Other Drupal 101 stuff that must have examples for this to be usable by casual passerby:

  • Entityref example
  • Navigation example
  • Attaching JS to a component (yes I know there are some notes but an example code block is better)

Anyway, I have examples for some of this that I can provide, but I am brand new to Emulsify so I just did whatever didn't crash my site and moved on. It's probably not as solid as could be. Hoping y'all have stuff you can pull from a previous implementation that you can generalize and share.

Stylelint is not honoring .stylelintignore

Problem: I have a repo with SCSS that isn't written to the Stylelint guidelines. I want to just ignore those files. (I don't have time to rewrite to make the files compliant.) I implemented .stylelintignore and this is not being honored.

Researching the issue turned up this, which states that Stylelint Gulp doesn't honor .stylelintignore. olegskl/gulp-stylelint#85

Asset pipeline deployment

Up until recently, I've been in the habit of using git hooks to add compiled code and build artifacts (CSS, etc) for deployment. Can you describe the approach you take at 4K for the assets that end up in the dist folder?

Include scripts-styleguide.js by default in library definitions

I was stuck trying to figure out why I couldn't see a concatenated file that seemed to be generating properly when I realized there are two JS tasks in the gulp file. One is for global JS and that is already defined in emulsify.libraries.yml but the other is scripts-styleguide.js which concats all the individual components and makes them available to Drupal.

A simple addition to the YML got me up and running:

  js:
    dist/scripts.js: {}
    dist/scripts-styleguide.js: {}
  dependencies:
    - core/jquery

Need to refactor all default components

Updating all default components based on latest best practices.

Todo

  • Atoms:
    • forms (Evan)
    • tables (Evan)
    • menu (Brian)
    • _field-wysiwyg.twig
    • _field.twig
    • _table.twig
  • Molecules
    • accordion-item (Evan)
    • info-box (Brian)
    • menus (Brian)
      • breadcrumbs
      • inline-menu
      • tabs
    • pager (Chris)
    • status (Brian)
    • _block.twig
    • _search-result.twig
  • Organisms
    • Accordion (Evan)
    • Card Grid (Brian)
    • Info Box Grid (Brian)
    • Site (Evan)

Done

  • Atoms:
    • links
    • text
    • lists
      • Need to finalize lists (how to use items)
    • images
    • buttons
    • video
  • Molecules:
    • card
  • Templates (all) - We don't have any.
  • Pages (all) - We don't have any.

'npm start' throws errors

I have gulp is installed globally. After npm install runs successfully, running npm start throws:

npm start                                                                                                 >>>

> [email protected] start ..../themes/custom/fsl_fourk
> gulp clean && gulp compile && gulp theme

[19:32:53] Local gulp not found in ..../themes/custom/fsl_fourk
[19:32:53] Try running: npm install gulp

If I install gulp locally with npm install gulp and then run npm start again I get:

npm start                                                                                                 >>>

> [email protected] start ..../themes/custom/fsl_fourk
> gulp clean && gulp compile && gulp theme

module.js:327
    throw err;
    ^

Error: Cannot find module 'gulp-help'

Add Views example

  • Show an example of how to connect a Pattern Lab template with a View template.

gulp ghpages-deploy

Hello,

I'm trying to move pattern lab to a pantheon dev sites for the first time. Everything is running great locally, but when I run 'gulp deploy' I get this error:

'deploy' errored after 4.89 s
[15:53:55] Error in plugin 'gulp-gh-pages'
Message:
Command failed: git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> gh-pages

Details:
killed: false
code: 1
signal: null
cmd: git pull

Is there something that I need to in to do in my local gulp config file to beat this?

Documentation on how to add new component to _patterns/00-base/global

I would like to separate out global colors instead of having them all grouped into one (01-colors). Such as:

_patterns/
--00-base/global/
----01-colors-brand/
----02-colors-neutral/
----03-colors-utility/
----04-animations/

The new color components are ignored and the json file is not generated. I'm not having any issues creating new components in Molecules. What am I missing?

Thanks!
Cielo

Document proper use of include, extends, and embed

This is just a placeholder (and reminder) to document the proper use of include, extends, and embed.

With a link.twig file like this:

<a class="link{% for modifier in link_modifiers %} link--{{ modifier }}{% endfor %}{% if link_blockname %} {{ link_blockname }}__link{% endif %}" href="{{ link_url }}">{% block link_content %}{{ link_content }}{% endblock %}</a>

You can use it in another template one of the following ways

Replace the variables (ignoring the block)

Standard "use another component but change the variables."

{% include "@atoms/01-links/link/link.twig"
  with {
    "link_content": "This is included",
    "link_url": "https://www.fourkitchens.com",
  }
%}

Replace the block (ignores the variable inside the block)

This would be useful if you wanted to link something other than text, like an image. The image include would go inside the block.

{% extends "@atoms/01-links/link/link.twig" %}
  {% block link_content %}
    {% include "@atoms/04-images/00-image/image.twig"
      with {
        "img_src": "http://placeimg.com/1200/800/tech",
      }
    %}
  {% endblock %}

The problem is, link also wants a url, and has optional class modifiers, so we need to be able to replace the block, and the variables.

Use embed to replace the variables, but still have the option to replace the whole block

{% embed "@atoms/01-links/link/link.twig"
  with {
    "link_url": "https://www.fourkitchens.com",
  }
%}
  {% block link_content %}
    {% include "@atoms/04-images/00-image/image.twig"
      with {
        "img_src": "http://placeimg.com/1200/800/tech",
        "img_alt": "This is the image alt text",
      }
    %}
  {% endblock %}
{% endembed %}

No .logo class anymore?

Hi,
Since the last update it seems that the .logo class is not applied by default and I don't see how to put it back. Any help welcome.

Publish on packagist.org

Repository already contains package definition in composer.json file. Natural next step would be to publish it on packagist.org OR change vendor name to drupal and publish on drupal.org.

@atoms/05-forms/checkbox/_checkboxes.twig" is not defined

I'm getting the following error using Mailchimp form with checkboxes:

Uncaught PHP Exception Twig_Error_Loader: "Template "@atoms/05-forms/checkbox/_checkboxes.twig" is not defined (Drupal\\Core\\Template\\Loader\\ThemeRegistryLoader: Unable to find template "@atoms/05-forms/checkbox/_checkboxes.twig" in the Drupal theme registry.) in "themes/custom/emulsify/templates/form/checkboxes.html.twig" at line 15." at /Users/sahaj/Sites/mounteccorp/vendor/twig/twig/lib/Twig/Loader/Chain.php line 129, referer: http://mysite.com/admin/config/services/mailchimp/signup

And actually, I'm not sure if it is enough to simply correct the line 15 of themes/custom/emulsify/templates/form/checkboxes.html.twig from
{% include "@atoms/05-forms/checkbox/_checkboxes.twig" %}
to
{% include "@atoms/05-forms/checkbox/checkbox.twig" %}
or if this should be addressed another way.

Also, if I did not met any other issue yet, it seems that there is more un-matching code within themes/custom/emulsify/templates/form/

Did anybody else notice such issue?

Thanks for help.

Docs update

Specifically Drupal piece mapping to atoms, molecules

Twig_Error_Loader: Template "@molecules/pager/pager.twig" is not defined

Hi,

On a new install, I can run npm start and check pattern lab, but on the site itself, I'm having:
The website encountered an unexpected error. Please try again later.

with this log message:
Twig_Error_Loader: Template "@molecules/pager/pager.twig" is not defined (Drupal\Core\Template\Loader\ThemeRegistryLoader: Unable to find template "@molecules/pager/pager.twig" in the Drupal theme registry.) in "themes/contrib/emulsify/templates/navigation/pager.html.twig" at line 32. in Twig_Loader_Chain->getCacheKey() (line 129 of mysite/vendor/twig/twig/lib/Twig/Loader/Chain.php).

Any idea what is wrong? Thanks for help

License - GPL 2

Not to nitpick but does this need to be GPL-2 licensed as it extends the Drupal API?

Document the best way to use Emulsify with client work

To start, I love what you guys are doing here! I presented Emulsify and PatternLab at our recent Ithaca Drupal meetup. Great work!

I'm trying to plan for the best way to build from the work here when using it on a project. I'm guessing/hoping that you're thinking about this at FourKitchens as well. We could basically fork it from a given moment in time as a custom theme, and then do the work of pulling in relevant upstream changes over time. I've also been considering creating a custom theme that becomes the base theme of Emulsify, but that would only pull the relevant styles into Drupal, and not PatternLab. Finally, I've been wondering about the possibility of creating some scripts and or tasks (using bash or gulp) that could pull upstream Emulsify changes and additions to both Drupal Twig templates and the pattern templates.

What are you all thinking about the best way to use Emulsify/PatternLab for client work?

Use blocks

Blocks at the molecule level would be beneficial for altering the markup at the Drupal level without having the change the base pattern lab files.

This also makes it easier to maintain as we are following a DRY methodology.

Using Foundation or Bootstrap as starter

Is there a way to include the Foundation or Bootstrap Sass to use that as a base when building my theme with Emulsify? This would allow us to keep using a tool we know while incorporating this project.

We tried just putting all the Foundation .scss in components/_patterns/* but it's throwing errors.

Hoping you have good advice on the best path to take.

Do we need singularity with flex grid?

If not, we need to remove in this project as well as the gulp task one.

In this file, there are some small things in breakpoints and outer-layouts that would need to be adjusted.

Add paragraphs example

  • Add an example of connecting Pattern Lab templates with Paragraphs.
  • Add an example of connecting Pattern Lab templates with a Paragraph inside of a Paragraph. Inception!

Support data attributes?

At the KC DUG meetup where I presented, some people were asking about whether we supported adding data attributes. At the moment we don't.

We have the logic in for BEM style class names, but that doesn't allow them to add something like target="_blank" or foo="bar" or for the very rare occasion we need to add an id id="jump-link-destination".

We were able to pretty quickly get it to work so that we can create them on the fly just like class names, and I think it's definitely worthwhile to add in some places, but did't know if it was something we should add everywhere.

The Code

For reference, here's the code we used to make it work:
{% for attribute,value in pattern_attributes %}{{ attribute }}="{{ value }}"{% endfor %}

Usage

So, here's how we used it in the link pattern:
<a class="link{% for modifier in link_modifiers %} link--{{ modifier }}{% endfor %}{% if link_blockname %} {{ link_blockname }}__link{% endif %}" {% for attribute,value in link_attributes %}{{ attribute }}="{{ value }}"{% endfor %} href="{{ link_url }}">{{ link_content }}</a>

And then in the yml file:

link_url:
  https://www.google.com
link_content:
  test link
link_modifiers:

link_attributes:
  test:
    Awesome
  id:
    element-id
  target:
    _blank

And that outputs a link like this:

<a class="link" test="awesome" id="element-id" target="_blank" href="https://www.google.com">test link</a>

Stylelint Update - Unhandled promise rejection, no configuration provided error

We just updated Emulsify to support Stylelint usage. If you run an install against the latest code, everything should run as normal (with new stylelinting goodness). However, if you are using an older version of Emulsify and running it against some kind of automated deployment tool that might get the latest from emulsify-gulp but not the main Emulsify repo, then you may need to add the .stylelintrc file to the root of your Emulsify repo.

Hopefully this helps! If you have any questions or are having issues, feel free to respond to this thread.

Template not defined

It seems no matter what I try to add, unless its already in the theme, Drupal cannot find my templates and I get the error

15-Jun-2017 11:32:17 America/Halifax] Uncaught PHP Exception Twig_Error_Loader: "Template "@organisms/slider/slider.twig" is not defined (Drupal\Core\Template\Loader\ThemeRegistryLoader: Unable to find template "@organisms/slider/slider.twig" in the Drupal theme registry.) in "themes/custom/flolab/templates/content/node--technology.html.twig" at line 1." at /Applications/MAMP/htdocs/drupal-patterns/vendor/twig/twig/lib/Twig/Loader/Chain.php line 115
Within my node drupal template I have the following
{% include "@organisms/slider/slider.twig" %}

And within that exact directory I have the slider.twig file and plain text just to try to get it loading. I have also made sure to clear cache and even run npm start again.

Is the theme not ready for adding our own custom components or am I missing a step?

Thanks!

Select incorrectly ignored

The select element is incorrectly ignored because of a naming conflict with the Drupal default tpl, which is hidden.

Subthemes not picking up component libraries established in a base/parent Emulsify

I've been trying to use Emulsify as a parent theme to a subtheme (that'll contain any bells and whistles/modifications I want to add), but when I do, Drupal is not picking up on component libraries established in the parent theme's emulsify.info.yml file.

For example, I add an include in a views template, templates/views/views-view-fields--blog.html.twig

{% include "@molecules/blog-teaser/blog-teaser.twig" 
  with {
    "title": fields.title.content,
    "body": fields.body.content,
    "url": "/node/" ~ row.nid,
    "img": fields.field_image.content
  }
%}

And I put blog-teaser.twig in the subtheme at components/_patterns/02-molecules/blog-teaser/blog-teaser.twig (components was duped from the parent theme), and I get the following error in the browser:

The website encountered an unexpected error. Please try again later.

Twig_Error_Loader: Template "@molecules/blog-teaser/blog-teaser.twig" is not defined (Drupal\Core\Template\Loader\ThemeRegistryLoader: Unable to find template "@molecules/blog-teaser/blog-teaser.twig" in the Drupal theme registry.) in "themes/custom/nameoftheme/templates/views/views-view-fields--blog.html.twig" at line 33. in Twig_Loader_Chain->getCacheKey() (line 115 of vendor/twig/twig/lib/Twig/Loader/Chain.php).
Drupal\Core\Template\TwigEnvironment->getTemplateClass('@molecules/blog-teaser/blog-teaser.twig', NULL) (Line: 378)
Twig_Environment->loadTemplate('@molecules/blog-teaser/blog-teaser.twig', NULL) (Line: 286)
Twig_Template->loadTemplate('@molecules/blog-teaser/blog-teaser.twig', 'themes/custom/nameoftheme/templates/views/views-view-fields--blog.html.twig', 33) (Line: 46)
__TwigTemplate_e2e355f74866d48d296c2502e7c0aa029f3eb27eb5bc384f0ad7f27d3547c1ae->doDisplay(Array, Array) (Line: 381)
Twig_Template->displayWithErrorHandling(Array, Array) (Line: 355)
Twig_Template->display(Array) (Line: 366)
Twig_Template->render(Array) (Line: 64)
twig_render_template('themes/custom/nameoftheme/templates/views/views-view-fields--blog.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render(Array, Array) (Line: 435)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 195)
Drupal\Core\Render\Renderer->render(Array) (Line: 468)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 65)
__TwigTemplate_eb45ea0a00dfcd5c6c94c0c9d19af1cdb5fbb22898eef7902da18830afd75d29->doDisplay(Array, Array) (Line: 381)
Twig_Template->displayWithErrorHandling(Array, Array) (Line: 355)
Twig_Template->display(Array) (Line: 366)
Twig_Template->render(Array) (Line: 64)
twig_render_template('core/themes/stable/templates/views/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render(Array, Array) (Line: 435)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 448)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 195)
Drupal\Core\Render\Renderer->render(Array) (Line: 468)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 87)
__TwigTemplate_92cf8d6a840ef0267ce51885667d62fc8dbdfa738f04f0e94bfddc27092db07e->doDisplay(Array, Array) (Line: 381)
Twig_Template->displayWithErrorHandling(Array, Array) (Line: 355)
Twig_Template->display(Array) (Line: 366)
Twig_Template->render(Array) (Line: 64)
twig_render_template('core/themes/stable/templates/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render(Array, Array) (Line: 435)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 448)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 195)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 574)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 144)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 62)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 99)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 78)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 50)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 652)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Drupal attributes

We've been handling this project by project, but it might be valuable to decide how we will handle this globally and refactor components accordingly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.