<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<mat-sidenav-container>
    <mat-sidenav #sidenav mode="over" position="end" opened="false">
        <div fxLayout="column" fxLayoutAlign="space-between center">
            <p>You can also open a dialog from a side nav.</p>
            <button mat-raised-button color="fds-primary" (click)="openDialog()">Show simple dialog</button>
        </div>
    </mat-sidenav>
    <div id="fds-demo">
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Apache NiFi Flow Design System</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content class="pad-top-sm">
                <p>With the Apache NiFi Flow Design System module, we get an atomic, reusable component platform for Apache NiFi and its sub-projects to consume, while collaborating in an open source model. This module packages the <a class="link" href="https://material.angular.io/components" target="_blank">Angular Material</a> module as well as the <a class="link" href="https://teradata.github.io/covalent/#/components" target="_blank">Teradata Covalent</a> module. These modules have been themed to match the FDS color palette.</p>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Setup</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p>Import the FDS Core NgModule into your AppModule</p>
                <p>HTML:</p>
                <pre lang="javascript">
        <![CDATA[
        var ngCore = require('@angular/core');
        var fdsCore = require('flow-design-system/core');
        // other imports
          ...
        new ngCore.NgModule({
                    imports: [
                        fdsCore,
                        // (optional) Additional imports
                      ],
                      ...
        })
        ]]>
    </pre>
                <p>The core FDS styles also need to be included in your `index.html` like:</p>
                <p>HTML:</p>
                <pre lang="html">
        <![CDATA[
        <link href="../node_modules/flow-design-system/core/common/styles/css/flow-design-system.css" rel="stylesheet">
        ]]>
    </pre>
                <p>Or, if you are using the Angular CLI you will need to add a new entry to the "styles" list in .angular-cli.json.</p>
                <p>JSON:</p>
                <pre lang="json">
        <![CDATA[
        "styles": [
            "../node_modules/flow-design-system/core/common/styles/flow-design-system.scss"
        ]
        ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Typography</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p class="mat-body-1">Angular Material provides <a class="link" href="https://material.io/guidelines/style/typography.html" target="_blank">typography</a> CSS classes you can use to create visual consistency across your application.</p>
                <p class="mat-body-1">
                    <strong>Note:</strong>
                    <span>Base font size is 10px for easy rem units (1.2rem = 12px). Body font size is 14px. sp = scalable pixels.</span>
                </p>
                <h3 class="mat-title">Header Styles</h3>
                <p class="mat-body-1">To preserve semantic structures, you can optionally style the <code>&lt;h1&gt;</code> - <code>&lt;h6&gt;</code> heading tags with the styling classes shown below:</p>
                <p>CSS:</p>
                <div layout-align="center end">
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-4</code>
                        <span class="mat-display-4">Light 112px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-3</code>
                        <span class="mat-display-3">Regular 56px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-2</code>
                        <span class="mat-display-2">Regular 45px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-1</code>
                        <span class="mat-display-1">Regular 34px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-headline</code>
                        <span class="mat-headline">Regular 24px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-title</code>
                        <span class="mat-title">Medium 20px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.md-subhead</code>
                        <span class="md-subhead">Regular 16px</span>
                    </div>
                </div>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- Large Heading -->
        <h1 class="mat-display-4">Roboto is the standard typeface on Android.</h1>
        <h2 class="mat-display-3">Roboto and Noto are the standard typefaces on Android and Chrome.</h2>
        <h3 class="mat-display-2">Noto is the standard typeface for all languages on Chrome and Android for all languages not covered by Roboto.</h3>
                    <!-- Medium Heading -->
        <h1 class="mat-display-1">Roboto is the standard typeface on Android.</h1>
        <h2 class="mat-headline">Roboto and Noto are the standard typefaces on Android and Chrome.</h2>
        <h3 class="md-subhead">Noto is the standard typeface for all languages on Chrome and Android for all languages not covered by Roboto.</h3>
    ]]>
    </pre>
                <h3 class="mat-title">Body Copy</h3>
                <p>CSS:</p>
                <div class="mat-body-1" layout-align="center end">
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-body-1</code>
                        <span class="mat-body-1">Regular 14px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-body-2</code>
                        <span class="mat-body-2">Medium 14px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-button</code>
                        <span class="mat-button mat-raised">Medium 14px</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-caption</code>
                        <span class="mat-caption">Regular 12px</span>
                    </div>
                </div>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- body copy -->
        <p class="mat-body-1">Roboto is the standard typeface on Android.</p>
        <p class="mat-body-2">Roboto and Noto are the standard typefaces on Android and Chrome.</p>
        <p class="mat-button">Roboto and Noto are the standard typefaces on Android and Chrome.</p>
        <p class="mat-caption">Noto is the standard typeface for all languages on Chrome and Android for all languages not covered by Roboto.</p>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Raised Buttons</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p>Tip: Use UPPERCASE text for 1-2 words, and Titlecase text for 3+ words.</p>
                <button mat-raised-button color="primary">Primary</button>
                <button mat-raised-button color="accent">Accent</button>
                <button mat-raised-button color="warn">Warn</button>
                <button mat-raised-button color="fds-primary">FDS Primary</button>
                <button mat-raised-button color="fds-secondary">FDS Secondary</button>
                <button mat-raised-button color="fds-regular">FDS regular</button>
                <button mat-raised-button color="fds-warn">FDS warn</button>
                <button mat-raised-button color="fds-critical">FDS critical</button>
                <button mat-raised-button disabled color="primary">Primary</button>
                <button mat-raised-button disabled color="accent">Accent</button>
                <button mat-raised-button disabled color="warn">Warn</button>
                <button mat-raised-button disabled color="fds-primary">FDS primary</button>
                <button mat-raised-button disabled color="fds-secondary">FDS Secondary</button>
                <button mat-raised-button disabled color="fds-regular">FDS regular</button>
                <button mat-raised-button disabled color="fds-warn">FDS warn</button>
                <button mat-raised-button disabled color="fds-critical">FDS critical</button>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- Themed Raised Buttons -->
        <button mat-raised-button color="primary">Primary</button>
        <button mat-raised-button color="accent">Secondary</button>
        <button mat-raised-button color="warn">warn</button>
        <button mat-raised-button color="fds-primary">FDS Primary</button>
        <button mat-raised-button color="fds-secondary">FDS Secondary</button>
        <button mat-raised-button color="fds-regular">FDS regular</button>
        <button mat-raised-button color="fds-warn">FDS warn</button>
        <button mat-raised-button color="fds-critical">FDS critical</button>
                    <!-- Disabled Raised Buttons -->
        <button mat-raised-button disabled color="primary">Primary</button>
        <button mat-raised-button disabled color="accent">Secondary</button>
        <button mat-raised-button disabled color="warn">warn</button>
        <button mat-raised-button disabled color="fds-primary">FDS primary</button>
        <button mat-raised-button disabled color="fds-secondary">FDS Secondary</button>
        <button mat-raised-button disabled color="fds-regular">FDS regular</button>
        <button mat-raised-button disabled color="fds-warn">FDS warn</button>
        <button mat-raised-button disabled color="fds-critical">FDS critical</button>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Links</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <a class="link" href="https://material.angular.io" target="_blank">Angular Material</a>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
                <![CDATA[
        <a class="link" href="https://material.angular.io" target="_blank">Angular Material</a>
                ]]>
            </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Flat Buttons</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-card-actions>
                    <button mat-button>Default</button>
                    <button mat-button color="primary">Primary</button>
                    <button mat-button color="accent">Secondary</button>
                    <button mat-button color="warn">Warn</button>
                    <button mat-button disabled>Disabled Default</button>
                    <button mat-button disabled color="primary">Disabled Primary</button>
                    <button mat-button disabled color="accent">Disabled Secondary</button>
                    <button mat-button disabled color="warn">Disabled Warn</button>
                </mat-card-actions>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- Themed Flat Buttons -->
        <button mat-button>Default</button>
        <button mat-button color="primary">Primary</button>
        <button mat-button color="accent">Secondary</button>
        <button mat-button color="warn">warn</button>
                    <!-- Disabled Flat Buttons -->
        <button mat-button disabled>disabled Default</button>
        <button mat-button disabled color="primary">disabled primary</button>
        <button mat-button disabled color="accent">disabled Secondary</button>
        <button mat-button disabled color="warn">disabled warn</button>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Fab Buttons</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-card-actions class="pad-left-sm">
                    <button mat-mini-fab color="primary">P</button>
                    <button mat-mini-fab color="accent">A</button>
                    <button mat-mini-fab color="warn">W</button>
                    <button mat-mini-fab disabled color="primary">P</button>
                    <button mat-mini-fab disabled color="accent">A</button>
                    <button mat-mini-fab disabled color="warn">W</button>
                </mat-card-actions>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- Themed Fab Buttons -->
        <button mat-mini-fab color="primary">P</button>
        <button mat-mini-fab color="accent">A</button>
        <button mat-mini-fab color="warn">W</button>
                    <!-- Disabled Fab Buttons -->
        <button mat-mini-fab disabled color="primary">P</button>
        <button mat-mini-fab disabled color="accent">A</button>
        <button mat-mini-fab disabled color="warn">W</button>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Button Toggles</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-button-toggle-group name="alignment">
                    <mat-button-toggle value="left">
                        <mat-icon>format_align_left</mat-icon>
                    </mat-button-toggle>
                    <mat-button-toggle value="center">
                        <mat-icon>format_align_center</mat-icon>
                    </mat-button-toggle>
                    <mat-button-toggle value="right">
                        <mat-icon>format_align_right</mat-icon>
                    </mat-button-toggle>
                    <mat-button-toggle value="justify">
                        <mat-icon>format_align_justify</mat-icon>
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
                <mat-button-toggle-group name="onOffToggle" class="on-off-toggle-group">
                    <mat-button-toggle value="on" [checked]="true">
                        ON
                    </mat-button-toggle>
                    <mat-button-toggle value="off" class="off-toggle">
                        OFF
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
                <mat-button-toggle-group fxLayout="row" fxLayoutAlign="space-between center" class="expansion-panel-filter-toggle-group" multiple>
                    <mat-button-toggle>
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">34</div>
                            <div class="pad-top-sm" fxFlex="45">Assets</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle>
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">300</div>
                            <div class="pad-top-sm" fxFlex="45">Extensions</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle>
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">5000</div>
                            <div class="pad-top-sm" fxFlex="45">Flows</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle>
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">0</div>
                            <div class="pad-top-sm" fxFlex="45">Certifications</div>
                        </div>
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
                <mat-button-toggle-group name="fds-administration-perspective" fxLayout="row" class="tab-toggle-group">
                    <mat-button-toggle value="general" class="uppercase">
                        general
                    </mat-button-toggle>
                    <div fxLayout="row" class="pad-left-md"></div>
                    <mat-button-toggle value="users" class="uppercase">
                        Users
                    </mat-button-toggle>
                    <div fxLayout="row" class="pad-left-md"></div>
                    <mat-button-toggle value="workflow" class="uppercase">
                        Workflow
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
         <mat-button-toggle-group name="alignment">
            <mat-button-toggle value="left">
                <mat-icon>format_align_left</mat-icon>
            </mat-button-toggle>
            <mat-button-toggle value="center">
                <mat-icon>format_align_center</mat-icon>
            </mat-button-toggle>
            <mat-button-toggle value="right">
                <mat-icon>format_align_right</mat-icon>
            </mat-button-toggle>
            <mat-button-toggle value="justify">
                <mat-icon>format_align_justify</mat-icon>
            </mat-button-toggle>
        </mat-button-toggle-group>
        <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
        <mat-button-toggle-group name="onOffToggle" class="on-off-toggle-group">
            <mat-button-toggle value="on" [checked]="true">
                ON
            </mat-button-toggle>
            <mat-button-toggle value="off" class="off-toggle">
                OFF
            </mat-button-toggle>
        </mat-button-toggle-group>
        <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
        <mat-button-toggle-group fxLayout="row" fxLayoutAlign="space-between center" class="expansion-panel-filter-toggle-group" multiple>
            <mat-button-toggle>
                <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                    <div class="mat-display-1 pad-top-sm" fxFlex="55">34</div>
                    <div class="pad-top-sm" fxFlex="45">Assets</div>
                </div>
            </mat-button-toggle>
            <mat-button-toggle>
                <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                    <div class="mat-display-1 pad-top-sm" fxFlex="55">300</div>
                    <div class="pad-top-sm" fxFlex="45">Extensions</div>
                </div>
            </mat-button-toggle>
            <mat-button-toggle>
                <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                    <div class="mat-display-1 pad-top-sm" fxFlex="55">5000</div>
                    <div class="pad-top-sm" fxFlex="45">Flows</div>
                </div>
            </mat-button-toggle>
            <mat-button-toggle>
                <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                    <div class="mat-display-1 pad-top-sm" fxFlex="55">0</div>
                    <div class="pad-top-sm" fxFlex="45">Certifications</div>
                </div>
            </mat-button-toggle>
        </mat-button-toggle-group>
        <div fxLayout="row" class="pad-top-md pad-bot-md"></div>
        <mat-button-toggle-group name="fds-administration-perspective" fxLayout="row" class="tab-toggle-group">
            <mat-button-toggle value="general" class="uppercase">
                general
            </mat-button-toggle>
            <div fxLayout="row" class="pad-left-md"></div>
            <mat-button-toggle value="users" class="uppercase">
                Users
            </mat-button-toggle>
            <div fxLayout="row" class="pad-left-md"></div>
            <mat-button-toggle value="workflow" class="uppercase">
                Workflow
            </mat-button-toggle>
        </mat-button-toggle-group>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Input</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <form>
                    <div layout="row" layout-margin>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <input matInput placeholder="Company (disabled)" disabled value="Google">
                        </mat-form-field>
                    </div>
                    <div layout="row" layout-margin>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <input matInput disabled placeholder="First name">
                        </mat-form-field>
                        <mat-form-field floatLabel="always" flex>
                            <input matInput placeholder="Long Last Name That Will Be Truncated">
                        </mat-form-field>
                    </div>
                    <div layout="row" layout-margin>
                        <div flex fxLayoutAlign="start center">
                            <mat-form-field floatLabel="always" flex>
                                <input matInput placeholder="Button Addon with dropdown">
                            </mat-form-field>
                            <button class="input-button" color="fds-regular" mat-raised-button [matMenuTriggerFor]="inputButtonDropdownAddonMenu">
                                Select<i class="fa fa-caret-down" aria-hidden="true"></i>
                            </button>
                            <mat-menu xPosition="before" #inputButtonDropdownAddonMenu="matMenu" [overlapTrigger]="false">
                                <button mat-menu-item> Refresh </button>
                                <button mat-menu-item> Settings </button>
                                <button mat-menu-item> Help </button>
                                <button mat-menu-item disabled> Sign Out </button>
                            </mat-menu>
                        </div>
                        <div flex fxLayoutAlign="start center">
                            <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                                <input matInput placeholder="Button Addon">
                            </mat-form-field>
                            <button class="input-button" color="fds-regular" mat-raised-button>
                                Search
                            </button>
                        </div>
                    </div>
                    <div layout="row" layout-margin>
                        <div flex fxLayoutAlign="start center">
                            <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                                <input disabled matInput placeholder="Button Addon with dropdown">
                            </mat-form-field>
                            <button disabled class="input-button" color="fds-regular" mat-raised-button>
                                Select<i class="fa fa-caret-down" aria-hidden="true"></i>
                            </button>
                        </div>
                        <div flex fxLayoutAlign="start center">
                            <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                                <input disabled matInput placeholder="Button Addon">
                            </mat-form-field>
                            <button disabled class="input-button" color="fds-regular" mat-raised-button>
                                Search
                            </button>
                        </div>
                    </div>
                    <div layout="row" layout-margin>
                        <mat-form-field floatLabel="always" flex>
                            <textarea matInput placeholder="Address" value="1600 Amphitheatre Pkway"></textarea>
                        </mat-form-field>
                    </div>
                    <div layout="row" layout-margin>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <textarea disabled value="Address 2 Value" matInput placeholder="Address 2"></textarea>
                        </mat-form-field>
                    </div>
                    <div layout="row" layout-margin>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <input matInput placeholder="City">
                        </mat-form-field>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <input matInput placeholder="State">
                        </mat-form-field>
                        <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                            <input matInput #postalCode maxlength="5" placeholder="Postal Code" value="94043">
                            <mat-hint align="end">{{postalCode.value.length}} / 5</mat-hint>
                        </mat-form-field>
                    </div>
                </form>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
    <![CDATA[
                    <!-- Inputs -->
        <form>
            <div layout="row" layout-margin>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <input matInput placeholder="Company (disabled)" disabled value="Google">
                </mat-form-field>
            </div>
            <div layout="row" layout-margin>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <input matInput disabled placeholder="First name">
                </mat-form-field>
                <mat-form-field floatLabel="always" flex>
                    <input matInput placeholder="Long Last Name That Will Be Truncated">
                </mat-form-field>
            </div>
            <div layout="row" layout-margin>
                <div flex fxLayoutAlign="start center">
                    <mat-form-field floatLabel="always" flex>
                        <input matInput placeholder="Button Addon with dropdown">
                    </mat-form-field>
                    <button class="input-button" color="fds-regular" mat-raised-button [matMenuTriggerFor]="inputButtonDropdownAddonMenu">
                        Select<i class="fa fa-caret-down" aria-hidden="true"></i>
                    </button>
                    <mat-menu xPosition="before" #inputButtonDropdownAddonMenu="matMenu" [overlapTrigger]="false">
                        <button mat-menu-item> Refresh </button>
                        <button mat-menu-item> Settings </button>
                        <button mat-menu-item> Help </button>
                        <button mat-menu-item disabled> Sign Out </button>
                    </mat-menu>
                </div>
                <div flex fxLayoutAlign="start center">
                    <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                        <input matInput placeholder="Button Addon">
                    </mat-form-field>
                    <button class="input-button" color="fds-regular" mat-raised-button>
                        Search
                    </button>
                </div>
            </div>
            <div layout="row" layout-margin>
                <div flex fxLayoutAlign="start center">
                    <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                        <input disabled matInput placeholder="Button Addon with dropdown">
                    </mat-form-field>
                    <button disabled class="input-button" color="fds-regular" mat-raised-button>
                        Select<i class="fa fa-caret-down" aria-hidden="true"></i>
                    </button>
                </div>
                <div flex fxLayoutAlign="start center">
                    <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                        <input disabled matInput placeholder="Button Addon">
                    </mat-form-field>
                    <button disabled class="input-button" color="fds-regular" mat-raised-button>
                        Search
                    </button>
                </div>
            </div>
            <div layout="row" layout-margin>
                <mat-form-field floatLabel="always" flex>
                    <textarea matInput placeholder="Address" value="1600 Amphitheatre Pkway"></textarea>
                </mat-form-field>
            </div>
            <div layout="row" layout-margin>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <textarea disabled value="Address 2 Value" matInput placeholder="Address 2"></textarea>
                </mat-form-field>
            </div>
            <div layout="row" layout-margin>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <input matInput placeholder="City">
                </mat-form-field>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <input matInput placeholder="State">
                </mat-form-field>
                <mat-form-field floatLabel="always" floatPlaceholder="always" flex>
                    <input matInput #postalCode maxlength="5" placeholder="Postal Code" value="94043">
                    <mat-hint align="end">{{postalCode.value.length}} / 5</mat-hint>
                </mat-form-field>
            </div>
        </form>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Tabs</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-tab-group dynamicHeight>
                    <mat-tab>
                        <ng-template mat-tab-label>One</ng-template>
                        <h3 class="mat-title">First tab content</h3>
                        <p>Plaid echo park knausgaard normcore franzen cronut. Pickled humblebrag tofu hoodie, umami salvia farm-to-table schlitz try-hard food truck knausgaard pabst. Yuccie portland jean shorts, authentic mixtape waistcoat gentrify blue bottle. Fixie kickstarter church-key small batch seitan, shabby chic vegan listicle before they sold out. Hammock raw denim flannel tousled seitan you probably haven't heard of them. Trust fund man bun pug, kickstarter artisan selvage letterpress cornhole tote bag butcher locavore. Affogato try-hard kickstarter seitan, DIY pickled hella godard pork belly four loko ugh.</p>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Two</ng-template>
                        <h3 class="mat-title">Second tab content</h3>
                        <p>Hashtag distillery skateboard man bun gochujang, salvia man braid art party meggings heirloom kitsch farm-to-table. Franzen beard fingerstache gentrify, heirloom portland ennui XOXO microdosing kitsch plaid. Chicharrones bushwick chia, banh mi irony tattooed hammock butcher shabby chic taxidermy semiotics marfa post-ironic. Blue bottle keffiyeh farm-to-table ennui, chambray pitchfork art party pinterest artisan pop-up. Etsy banjo marfa, blue bottle kombucha crucifix XOXO tousled beard. Tilde disrupt kale chips bicycle rights skateboard master cleanse hella shoreditch, meditation retro shabby chic vice heirloom. Etsy listicle vice actually, iPhone chia hoodie four loko.</p>
                    </mat-tab>
                </mat-tab-group>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <mat-tab-group dynamicHeight>
          <mat-tab>
            <ng-template mat-tab-label>First tab content</ng-template>
            <h1>First content</h1>
            <p>...</p>
          </mat-tab>
          <mat-tab>
            <ng-template mat-tab-label>Second tab content</ng-template>
            <h1>Second tab content</h1>
            <p>...</p>
          </mat-tab>
        </mat-tab-group>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Autocomplete</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <div class="pad-top-sm" layout="row">
                    <mat-form-field floatLabel="always" flex="50">
                        <input matInput placeholder="State" [matAutocomplete]="tdAuto" [(ngModel)]="currentState" #modelDir="ngModel" (ngModelChange)="this.tdStates = filterStates(currentState)" [disabled]="tdDisabled">
                    </mat-form-field>
                </div>
                <div class="push-top">
                    <button mat-button (click)="modelDir.reset()" class="text-upper">Reset</button>
                    <button mat-button (click)="currentState='California'" class="text-upper">Set value</button>
                    <button mat-button (click)="tdDisabled=!tdDisabled" class="text-upper">Toggle disabled</button>
                </div>
                <mat-autocomplete #tdAuto="matAutocomplete">
                    <mat-option *ngFor="let state of tdStates" [value]="state.name">
                        <span>{{ state.name }}</span>
                        <span class="demo-secondary-text"> ({{state.code}}) </span>
                    </mat-option>
                </mat-autocomplete>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <div class="pad-top-sm" layout="row">
            <mat-form-field floatLabel="always" flex="50">
                <input matInput placeholder="State" [matAutocomplete]="tdAuto" [(ngModel)]="currentState" #modelDir="ngModel" (ngModelChange)="this.tdStates = filterStates(currentState)" [disabled]="tdDisabled">
            </mat-form-field>
        </div>
        <div class="push-top">
            <button mat-button (click)="modelDir.reset()" class="text-upper">Reset</button>
            <button mat-button (click)="currentState='California'" class="text-upper">Set value</button>
            <button mat-button (click)="tdDisabled=!tdDisabled" class="text-upper">Toggle disabled</button>
        </div>
        <mat-autocomplete #tdAuto="matAutocomplete">
            <mat-option *ngFor="let state of tdStates" [value]="state.name">
                <span>{ { state.name } }</span>
                <span class="demo-secondary-text"> ({ {state.code} }) </span>
            </mat-option>
        </mat-autocomplete>
        ]]>
      </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
      <![CDATA[
        this.currentState = '';
        this.reactiveStates = '';
        this.tdStates = [];
        this.tdDisabled = false;
        this.states = [
                    { code: 'AL', name: 'Alabama' },
                    { code: 'AK', name: 'Alaska' },
                    { code: 'AZ', name: 'Arizona' },
                    { code: 'AR', name: 'Arkansas' },
                    { code: 'CA', name: 'California' },
                    { code: 'CO', name: 'Colorado' },
                    { code: 'CT', name: 'Connecticut' },
                    { code: 'DE', name: 'Delaware' },
                    { code: 'FL', name: 'Florida' },
                    { code: 'GA', name: 'Georgia' },
                    { code: 'HI', name: 'Hawaii' },
                    { code: 'ID', name: 'Idaho' },
                    { code: 'IL', name: 'Illinois' },
                    { code: 'IN', name: 'Indiana' },
                    { code: 'IA', name: 'Iowa' },
                    { code: 'KS', name: 'Kansas' },
                    { code: 'KY', name: 'Kentucky' },
                    { code: 'LA', name: 'Louisiana' },
                    { code: 'ME', name: 'Maine' },
                    { code: 'MD', name: 'Maryland' },
                    { code: 'MA', name: 'Massachusetts' },
                    { code: 'MI', name: 'Michigan' },
                    { code: 'MN', name: 'Minnesota' },
                    { code: 'MS', name: 'Mississippi' },
                    { code: 'MO', name: 'Missouri' },
                    { code: 'MT', name: 'Montana' },
                    { code: 'NE', name: 'Nebraska' },
                    { code: 'NV', name: 'Nevada' },
                    { code: 'NH', name: 'New Hampshire' },
                    { code: 'NJ', name: 'New Jersey' },
                    { code: 'NM', name: 'New Mexico' },
                    { code: 'NY', name: 'New York' },
                    { code: 'NC', name: 'North Carolina' },
                    { code: 'ND', name: 'North Dakota' },
                    { code: 'OH', name: 'Ohio' },
                    { code: 'OK', name: 'Oklahoma' },
                    { code: 'OR', name: 'Oregon' },
                    { code: 'PA', name: 'Pennsylvania' },
                    { code: 'RI', name: 'Rhode Island' },
                    { code: 'SC', name: 'South Carolina' },
                    { code: 'SD', name: 'South Dakota' },
                    { code: 'TN', name: 'Tennessee' },
                    { code: 'TX', name: 'Texas' },
                    { code: 'UT', name: 'Utah' },
                    { code: 'VT', name: 'Vermont' },
                    { code: 'VA', name: 'Virginia' },
                    { code: 'WA', name: 'Washington' },
                    { code: 'WV', name: 'West Virginia' },
                    { code: 'WI', name: 'Wisconsin' },
                    { code: 'WY', name: 'Wyoming' },
        ];

        ...

        displayFn: function(value) {
                    return value && typeof value === 'object' ? value.name : value;
        },

        filterStates: function(val) {
                    return val ? this.states.filter((s) => s.name.match(new RegExp(val, 'gi'))) : this.states;
        },

        ...
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Filter</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="mat-title">Autocomplete with chips and no custom inputs</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight>
                    <mat-tab>
                        <ng-template mat-tab-label>Demo</ng-template>
                        <div class="push">
                            <div class="mat-body-1">Type and select a preset option:</div>
                            <td-chips [items]="items" [(ngModel)]="itemsRequireMatch" placeholder="Enter autocomplete strings" [disabled]="readOnly" requireMatch></td-chips>
                        </div>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Code</ng-template>
                        <mat-card-content>
                            <p>HTML:</p>
                            <pre lang="html">
                            <![CDATA[
        <td-chips [items]="items" [(ngModel)]="itemsRequireMatch" placeholder="Enter autocomplete strings" [disabled]="readOnly" requireMatch></td-chips>
          ]]>
                        </pre>
                            <p>Javascript:</p>
                            <pre lang="javascript">
                            <![CDATA[
        this.readOnly = false;

        this.items = [
            'stepper',
            'expansion-panel',
            'markdown',
            'highlight',
            'loading',
            'media',
            'chips',
            'http',
            'json-formatter',
            'pipes',
            'need more?',
        ];

        this.itemsRequireMatch = this.items.slice(0, 6);

        ...

        toggleReadOnly: function() {
                                this.readOnly = !this.readOnly;
        },

        ...
          ]]>
                        </pre>
                        </mat-card-content>
                    </mat-tab>
                </mat-tab-group>
                <mat-divider></mat-divider>
                <mat-card-actions>
                    <button mat-button color="primary" (click)="toggleReadOnly()" class="text-upper">Toggle ReadOnly</button>
                </mat-card-actions>
            </mat-card-content>
            <mat-card-content>
                <h3 class="mat-title">Autocomplete with custom inputs</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight>
                    <mat-tab>
                        <ng-template mat-tab-label>Demo</ng-template>
                        <div class="push">
                            <div class="mat-body-1">Type and select option or enter custom text and press enter:</div>
                            <td-chips [items]="items" placeholder="Enter any string"></td-chips>
                        </div>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Code</ng-template>
                        <mat-card-content>
                            <p>HTML:</p>
                            <pre lang="html">
                            <![CDATA[
        <td-chips [items]="items" placeholder="Enter any string"></td-chips>
          ]]>
                        </pre>
                            <p>Javascript:</p>
                            <pre lang="javascript">
                            <![CDATA[
        this.items = [
            'stepper',
            'expansion-panel',
            'markdown',
            'highlight',
            'loading',
            'media',
            'chips',
            'http',
            'json-formatter',
            'pipes',
            'need more?',
        ];
          ]]>
                        </pre>
                        </mat-card-content>
                    </mat-tab>
                </mat-tab-group>
            </mat-card-content>
            <mat-card-content>
                <h3 class="mat-title">Demo allowing custom inputs for tags</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight>
                    <mat-tab>
                        <ng-template mat-tab-label>Demo</ng-template>
                        <div class="push">
                            <div class="mat-body-1">Type any test and press enter:</div>
                            <td-chips placeholder="Enter any string"></td-chips>
                        </div>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Code</ng-template>
                        <mat-card-content>
                            <p>HTML:</p>
                            <pre lang="html">
                            <![CDATA[
        <td-chips placeholder="Enter any string"></td-chips>
          ]]>
                        </pre>
                        </mat-card-content>
                    </mat-tab>
                </mat-tab-group>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Searchable/Filterable Expansion Panels</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-tab-group mat-stretch-tabs>
                    <mat-tab>
                        <ng-template mat-tab-label>Demo</ng-template>
                        <div class="pad-top-md pad-bottom-md pad-right-xxl pad-left-xxl">
                            <div class="pad-top-md pad-bottom-sm">
                                <mat-button-toggle-group fxLayout="row" fxLayoutAlign="space-between center" class="expansion-panel-filter-toggle-group" multiple>
                                    <mat-button-toggle (change)="toggleDropletsFilter('type:asset')" [checked]="isDropletFilterChecked('type:asset')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletTypeCount('asset')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Assets</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('type:extension')" [checked]="isDropletFilterChecked('type:extension')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletTypeCount('extension')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Extensions</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('type:flow')" [checked]="isDropletFilterChecked('type:flow')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletTypeCount('flow')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Flows</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('compliant.label:Compliant')" [checked]="isDropletFilterChecked('compliant.label:Compliant')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletCertificationCount('compliant')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Compliant</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('fleet.label:Fleet')" [checked]="isDropletFilterChecked('fleet.label:Fleet')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletCertificationCount('fleet')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Fleet</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('prod.label:Production Ready')" [checked]="isDropletFilterChecked('prod.label:Production Ready')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletCertificationCount('prod')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Production Ready</div>
                                        </div>
                                    </mat-button-toggle>
                                    <mat-button-toggle (change)="toggleDropletsFilter('secure.label:Secure')" [checked]="isDropletFilterChecked('secure.label:Secure')">
                                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{{getDropletCertificationCount('secure')}}</div>
                                            <div class="pad-top-sm" fxFlex="45">Secure</div>
                                        </div>
                                    </mat-button-toggle>
                                </mat-button-toggle-group>
                                <div id="fds-droplet-filter-clear-grouping-button-container">
                                    <span *ngIf="dropletsSearchTerms.length > 0" (click)="dropletsSearchTerms = [];filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);"><i class="fa fa-plus-circle fa-rotate-45" aria-hidden="true"></i><span class="pad-left-sm link">Clear Grouping</span></span>
                                </div>
                            </div>
                            <div layout="row" layout-align="space-between center">
                                <div flex fxLayout="row" fxLayoutAlign="end center">
                                    <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);" (remove)="filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);" class="push-right-sm"></td-chips>
                                    <span class="push-top-sm pad-right-sm">Sort by:</span>
                                    <button class="push-top-sm" color="fds-primary" mat-raised-button [matMenuTriggerFor]="dropletGridSortMenu">
                                        {{getSortBy()}}<i class="fa fa-caret-down" aria-hidden="true"></i>
                                    </button>
                                </div>
                                <mat-menu class="fds-primary-dropdown-button-menu" #dropletGridSortMenu="matMenu" [overlapTrigger]="false">
                                    <div *ngFor="let column of dropletColumns">
                                        <button mat-menu-item *ngIf="column.sortable" (click)="sortDroplets(column);">{{column.label}} {{(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'}}</button>
                                    </div>
                                </mat-menu>
                            </div>
                        </div>
                        <div class="pad-right-xxl pad-left-xxl">
                            <div *ngFor="let droplet of filteredDroplets">
                                <td-expansion-panel class="mat-elevation-z5" label={{droplet.label}} sublabel={{droplet.sublabel}} [disabled]="disabled">
                                    <ng-template td-expansion-panel-label>
                                        <div fxLayout="column" fxLayoutAlign="space-between start">
                                            <span class="mat-title capitalize">{{droplet.displayName}}</span>
                                            <span class="md-subhead">{{droplet.type}}</span>
                                        </div>
                                    </ng-template>
                                    <ng-template td-expansion-panel-sublabel>
                                        <div fxLayout="row" fxLayoutAlign="space-between center">
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                                <span class="uppercase">Versions</span> {{droplet.versions.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                                <span class="uppercase">Flows</span> {{droplet.flows.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                                <span class="uppercase">Extensions</span> {{droplet.extensions.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                                <span class="uppercase">Assests</span> {{droplet.assets.length}}
                                            </div>
                                        </div>
                                    </ng-template>
                                    <div class="mat-padding">
                                        <div fxLayout="column" fxLayoutAlign="space-between stretch">
                                            <div class="pad-bottom-sm" fxLayout="row" fxLayoutAlign="end center">
                                                <button color="fds-primary" [matMenuTriggerFor]="primaryButtonDropdownMenu" mat-raised-button>
                                                    Actions<i class="fa fa-caret-down" aria-hidden="true"></i>
                                                </button>
                                                <mat-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="matMenu" [overlapTrigger]="false">
                                                    <button mat-menu-item *ngFor="let action of droplet.actions">
                                                        <span>{{action.name}}</span>
                                                    </button>
                                                </mat-menu>
                                            </div>
                                            <div fxLayout="row">
                                                <div fxFlex="25">
                                                    <span class="uppercase">Description</span>
                                                    <p>Blah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah bla</p>
                                                </div>
                                                <div fxFlex="50">
                                                    <mat-card fxFlex>
                                                        <mat-card-content class="pad-top-sm">
                                                            <img src="{{droplet.img}}">
                                                        </mat-card-content>
                                                    </mat-card>
                                                </div>
                                                <div fxFlex="25">
                                                    <span class="uppercase">Change Log</span>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </td-expansion-panel>
                                <div class="pad-bottom-sm"></div>
                            </div>
                        </div>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Code</ng-template>
                        <p>HTML:</p>
                        <pre lang="html">
                        <![CDATA[
        <div class="pad-top-md pad-bottom-md pad-right-xxl pad-left-xxl">
            <div class="pad-top-md pad-bottom-sm">
                <mat-button-toggle-group fxLayout="row" fxLayoutAlign="space-between center" class="expansion-panel-filter-toggle-group" multiple>
                    <mat-button-toggle (change)="toggleDropletsFilter('type:asset')" [checked]="isDropletFilterChecked('type:asset')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletTypeCount('asset')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Assets</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('type:extension')" [checked]="isDropletFilterChecked('type:extension')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletTypeCount('extension')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Extensions</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('type:flow')" [checked]="isDropletFilterChecked('type:flow')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletTypeCount('flow')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Flows</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('compliant.label:Compliant')" [checked]="isDropletFilterChecked('compliant.label:Compliant')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletCertificationCount('compliant')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Compliant</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('fleet.label:Fleet')" [checked]="isDropletFilterChecked('fleet.label:Fleet')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletCertificationCount('fleet')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Fleet</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('prod.label:Production Ready')" [checked]="isDropletFilterChecked('prod.label:Production Ready')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletCertificationCount('prod')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Production Ready</div>
                        </div>
                    </mat-button-toggle>
                    <mat-button-toggle (change)="toggleDropletsFilter('secure.label:Secure')" [checked]="isDropletFilterChecked('secure.label:Secure')">
                        <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
                            <div class="mat-display-1 pad-top-sm" fxFlex="55">{ {getDropletCertificationCount('secure')} }</div>
                            <div class="pad-top-sm" fxFlex="45">Secure</div>
                        </div>
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <button *ngIf="activeDropletColumn" mat-button color="primary" (click)="dropletsSearchTerms = [];filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);">Clear Grouping</button>
            </div>
            <div layout="row" layout-align="space-between center">
                <div flex fxLayout="row" fxLayoutAlign="end center">
                    <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);" (remove)="filterDroplets(activeDropletColumn.name, activeDropletColumn.sortOrder);" class="push-right-sm"></td-chips>
                    <span class="pad-right-sm">Sort by:</span>
                    <button color="fds-primary" mat-raised-button [matMenuTriggerFor]="dropletGridSortMenu">
                        { {getSortBy()} }<i class="fa fa-caret-down" aria-hidden="true"></i>
                    </button>
                </div>
                <mat-menu class="fds-primary-dropdown-button-menu" #dropletGridSortMenu="matMenu" [overlapTrigger]="false">
                    <div *ngFor="let column of dropletColumns">
                        <button mat-menu-item *ngIf="column.sortable" (click)="sortDroplets(column);">{ {column.label} } { {(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'} }</button>
                    </div>
                </mat-menu>
            </div>
        </div>
        <div class="pad-right-xxl pad-left-xxl">
            <div *ngFor="let droplet of filteredDroplets">
                <td-expansion-panel class="mat-elevation-z5" label={ {droplet.label} } sublabel={ {droplet.sublabel} } [disabled]="disabled">
                    <ng-template td-expansion-panel-label>
                        <div fxLayout="column" fxLayoutAlign="space-between start">
                            <span class="mat-title capitalize">{ {droplet.displayName} }</span>
                            <span class="md-subhead">{ {droplet.type} }</span>
                        </div>
                    </ng-template>
                    <ng-template td-expansion-panel-sublabel>
                        <div fxLayout="row" fxLayoutAlign="space-between center">
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                <span class="uppercase">Versions</span> { {droplet.versions.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                <span class="uppercase">Flows</span> { {droplet.flows.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                <span class="uppercase">Extensions</span> { {droplet.extensions.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
                                <span class="uppercase">Assests</span> { {droplet.assets.length} }
                            </div>
                        </div>
                    </ng-template>
                    <div class="mat-padding">
                        <div fxLayout="column" fxLayoutAlign="space-between stretch">
                            <div class="pad-bottom-sm" fxLayout="row" fxLayoutAlign="end center">
                                <button color="fds-primary" [matMenuTriggerFor]="primaryButtonDropdownMenu" mat-raised-button>
                                    Actions<i class="fa fa-caret-down" aria-hidden="true"></i>
                                </button>
                                <mat-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="matMenu" [overlapTrigger]="false">
                                    <button mat-menu-item *ngFor="let action of droplet.actions">
                                        <span>{ {action.name} }</span>
                                    </button>
                                </mat-menu>
                            </div>
                            <div fxLayout="row">
                                <div fxFlex="25">
                                    <span class="uppercase">Description</span>
                                    <p>Blah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah blaBlah blah bla, bla bla, blah blah bla</p>
                                </div>
                                <div fxFlex="50">
                                    <mat-card fxFlex>
                                        <mat-card-content class="pad-top-sm">
                                            <img src="{ {droplet.img} }">
                                        </mat-card-content>
                                    </mat-card>
                                </div>
                                <div fxFlex="25">
                                    <span class="uppercase">Change Log</span>
                                </div>
                            </div>
                        </div>
                    </div>
                </td-expansion-panel>
                <div class="pad-bottom-sm"></div>
            </div>
        </div>
          ]]>
                    </pre>
                        <p>Javascript:</p>
                        <pre lang="javascript">
                        <![CDATA[
        this.dataTableService = TdDataTableService;

        this.droplets = [{
                            id: '23f6cc59-0156-1000-09b4-2b0610089090',
                            name: "Decompression_Circular_Flow",
                            displayName: 'Decompressed Circular flow',
                            type: 'flow',
                            sublabel: 'A sublabel',
                            compliant: {
                id: '25fd6vv87-3549-0001-05g6-4d4567890765',
                label: 'Compliant',
                type: 'certification'
            },
            fleet: {
                id: '23f6cc59-3549-0001-05g6-4d4567890765',
                label: 'Fleet',
                type: 'certification'
            },
            prod: {
                id: '52fd6vv87-3549-0001-05g6-4d4567890765',
                label: 'Production Ready',
                type: 'certification'
            },
            secure: {
                id: '32f6cc59-3549-0001-05g6-4d4567890765',
                label: 'Secure',
                type: 'certification'
            },
            versions: [{
                id: '23f6cc59-0156-1000-06b4-2b0810089090',
                revision: '1',
                dependentFlows: [{
                            id: '25fd6vv87-3549-0001-05g6-4d4567890765'
                }],
                created: date.setDate(date.getDate() - 1),
                updated: new Date()
            }, {
                id: '25fd6vv87-3549-0001-05g6-4d4567890765',
                revision: '2',
                dependentFlows: [{
                            id: '23f6cc59-0156-1000-06b4-2b0810089090'
                }],
                created: new Date(),
                updated: new Date()
            }],
            flows: [],
            extensions: [],
            assets: [],
            actions: [{
                'name': 'Delete',
                'icon': 'fa fa-close',
                'tooltip': 'Delete User'
            }, {
                'name': 'Manage',
                'icon': 'fa fa-user',
                'tooltip': 'Manage User'
            }, {
                'name': 'Action 3',
                'icon': 'fa fa-question',
                'tooltip': 'Whatever else we want to do...'
            }]
        }, {
                            id: '25fd6vv87-3249-0001-05g6-4d4767890765',
                            name: "DateConversion",
                            displayName: 'Date conversion',
                            type: 'asset',
                            sublabel: 'A sublabel',
                            compliant: {
                id: '25fd6vv34-3549-0001-05g6-4d4567890765',
                label: 'Compliant',
                type: 'certification'
            },
            prod: {
                id: '52vn6vv87-3549-0001-05g6-4d4567890765',
                label: 'Production Ready',
                type: 'certification'
            },
            versions: [{
                id: '23f6ic59-0156-1000-06b4-2b0810089090',
                revision: '1',
                dependentFlows: [{
                            id: '23f6cc19-0156-1000-06b4-2b0810089090'
                }],
                created: new Date(),
                updated: new Date()
            }],
            flows: [],
            extensions: [],
            assets: [],
            actions: [{
                'name': 'Delete',
                'icon': 'fa fa-close',
                'tooltip': 'Delete User'
            }]
        }, {
                            id: '52fd6vv87-3294-0001-05g6-4d4767890765',
                            name: "nifi-email-bundle",
                            displayName: 'nifi-email-bundle',
                            type: 'extension',
                            sublabel: 'A sublabel',
                            compliant: {
                id: '33fd6vv87-3549-0001-05g6-4d4567890765',
                label: 'Compliant',
                test: {
                            label: 'test'
                },
                type: 'certification'
            },
            versions: [{
                id: '23d3cc59-0156-1000-06b4-2b0810089090',
                revision: '1',
                dependentFlows: [{
                            id: '23f6cc89-0156-1000-06b4-2b0810089090'
                }],
                created: new Date(),
                updated: new Date()
            }],
            flows: [],
            extensions: [],
            assets: [],
            actions: [{
                'name': 'Delete',
                'icon': 'fa fa-close',
                'tooltip': 'Delete User'
            }, {
                'name': 'Manage',
                'icon': 'fa fa-user',
                'tooltip': 'Manage User'
            }, ]
        }];

        this.filteredDroplets = [];

        this.dropletColumns = [
                            { name: 'id', label: 'ID', sortable: true },
                            { name: 'name', label: 'Name', sortable: true },
                            { name: 'displayName', label: 'Display Name', sortable: true },
                            { name: 'sublabel', label: 'Label', sortable: true },
                            { name: 'type', label: 'Type', sortable: true }
        ];

        this.autoCompleteDroplets = [];
        this.dropletsSearchTerms = [];

        ...

        isDropletFilterChecked: function(term) {
                            return (this.dropletsSearchTerms.indexOf(term) > -1);
        },

        getDropletTypeCount: function(type) {
                            return this.filteredDroplets.filter(function(droplet) {
                return droplet.type === type;
            }).length;
        },

        getDropletCertificationCount: function(certification) {
                            return this.filteredDroplets.filter(droplet => {
                return Object.keys(droplet).find((key) => {
                            if (key === certification && droplet[certification].type === 'certification') {
                        return droplet;
                    }
                });
            }).length;
        },

        getSortBy: function() {
                            var sortByColumnLabel;
                            var arrayLength = this.dropletColumns.length;
                            for (var i = 0; i < arrayLength; i++) {
                if (this.dropletColumns[i].active === true) {
                            sortByColumnLabel = this.dropletColumns[i].label;
                            break;
                }
            }
            return sortByColumnLabel;
        },

        sortDroplets: function(column) {
                            if (column.sortable === true) {
                // toggle column sort order
                var sortOrder = column.sortOrder = (column.sortOrder === 'ASC') ? 'DESC' : 'ASC';
                this.filterDroplets(column.name, sortOrder);
                //only one column can be actively sorted so we reset all to inactive
                this.dropletColumns.forEach(function (c) {
                            c.active = false;
                });
                //and set this column as the actively sorted column
                column.active = true;
                this.activeDropletColumn = column;
            }
        },

        toggleDropletsFilter: function(searchTerm) {
                            var applySearchTerm = true;
                            // check if the search term is already applied and remove it if true
                            if (this.dropletsSearchTerms.length > 0) {
                var arrayLength = this.dropletsSearchTerms.length;
                for (var i = 0; i < arrayLength; i++) {
                            var index = this.dropletsSearchTerms.indexOf(searchTerm);
                            if (index > -1) {
                        this.dropletsSearchTerms.splice(index, 1);
                        applySearchTerm = false;
                    }
                }
            }

            // if we just removed the search term do NOT apply it again
            if (applySearchTerm) {
                this.dropletsSearchTerms.push(searchTerm);
            }

            this.filterDroplets(this.activeDropletColumn.name, this.activeDropletColumn.sortOrder);
        },

        filterDroplets: function(sortBy, sortOrder) {
                            // if `sortBy` is `undefined` then find the first sortable column in this.dropletColumns
                            if (sortBy === undefined) {
                var arrayLength = this.dropletColumns.length;
                for (var i = 0; i < arrayLength; i++) {
                            if (this.dropletColumns[i].sortable === true) {
                        sortBy = this.dropletColumns[i].name;
                        this.activeDropletColumn = this.dropletColumns[i];
                        //only one column can be actively sorted so we reset all to inactive
                        this.dropletColumns.forEach(c => c.active = false);
                        //and set this column as the actively sorted column
                        this.dropletColumns[i].active = true;
                        break;
                    }
                }
            }

            // if `sortOrder` is `undefined` then use 'ASC'
            if (sortOrder === undefined) {
                sortOrder = 'ASC'
            }

            var newData = this.droplets;

            for (var i = 0; i < this.dropletsSearchTerms.length; i++) {
                newData = this.filterData(newData, this.dropletsSearchTerms[i], true, this.activeDropletColumn.name);
            }

            newData = this.dataTableService.sortData(newData, sortBy, sortOrder);
            this.filteredDroplets = newData;
            this.getAutoCompleteDroplets();
        },

        getAutoCompleteDroplets: function() {
                            this.autoCompleteDroplets = [];
                            this.dropletColumns.forEach(c => this.filteredDroplets.forEach(r => (r[c.name.toLowerCase()]) ? this.autoCompleteDroplets.push(r[c.name.toLowerCase()].toString()) : ''));
        },

        filterData: function(data, searchTerm, ignoreCase) {
                            var field = '';
                            if (searchTerm.indexOf(":") > -1) {
                field = searchTerm.split(':')[0].trim();
                searchTerm = searchTerm.split(':')[1].trim();
            }
            var filter = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';

            if (filter) {
                data = data.filter(item => {
                            var res = Object.keys(item).find((key) => {
                        if (field.indexOf(".") > -1) {
                            var objArray = field.split(".");
                            var obj = item;
                            var arrayLength = objArray.length;
                            for (var i = 0; i < arrayLength; i++) {
                                try {
                            obj = obj[objArray[i]];
                                } catch (e) {
                            return false;
                                }
                            }
                            var preItemValue = ('' + obj);
                            var itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                            return itemValue.indexOf(filter) > -1;
                        } else {
                            if (key !== field && field !== '') {
                                return false;
                            }
                            var preItemValue = ('' + item[key]);
                            var itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                            return itemValue.indexOf(filter) > -1;
                        }
                    });
                    return !(typeof res === 'undefined');
                });
            }
            return data;
        },

        ...
          ]]>
                    </pre>
                    </mat-tab>
                </mat-tab-group>
            </mat-card-content>
            <mat-divider></mat-divider>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Table</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p>Example table with: Paging Bar / Filter / Sortable Columns / Multi-select with available Actions</p>
                <mat-tab-group mat-stretch-tabs>
                    <mat-tab>
                        <ng-template mat-tab-label>Demo</ng-template>
                        <div layout="row" layout-align="space-between center" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">
                            <span class="table-title">
                            <span>Table title</span>
                            </span>
                            <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center">
                                <td-chips [items]="autoCompleteData" (add)="searchAdd($event)" (remove)="searchRemove($event)"></td-chips>
                                <button class="push-top-sm" color="fds-primary" mat-raised-button [matMenuTriggerFor]="dataTableActionMenu">
                                    Actions<i class="fa fa-caret-down" aria-hidden="true"></i>
                                </button>
                            </div>
                            <mat-menu class="fds-primary-dropdown-button-menu" #dataTableActionMenu="matMenu" [overlapTrigger]="false">
                                <button mat-menu-item> Option 1 </button>
                                <button mat-menu-item> Option 2 </button>
                            </mat-menu>
                        </div>
                        <div class="pad-left-md pad-right-md">
                            <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table">
                                <div class="td-data-table-column" (click)="sort($event, column)" [matTooltip]="column.tooltip" *ngFor="let column of columns" fxFlex="{{column.width}}">
                                    <i *ngIf="column.active && column.sortable && column.sortOrder === 'ASC'" class="fa fa-caret-up" aria-hidden="true"></i>
                                    <i *ngIf="column.active && column.sortable && column.sortOrder === 'DESC'" class="fa fa-caret-down" aria-hidden="true"></i>
                                    {{column.label}}
                                </div>
                                <div class="td-data-table-column" fxFlex=10>
                                    <div fxLayout="row" fxLayoutAlign="end center">
                                        <mat-checkbox class="pad-left-sm" [(ngModel)]="allRowsSelected" (checked)="allRowsSelected" (change)="toggleSelectAll()"></mat-checkbox>
                                    </div>
                                </div>
                            </div>
                            <div>
                                <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredData" (click)="row.checked = !row.checked;toggleSelect(row)">
                                    <div class="td-data-table-cell" *ngFor="let column of columns" fxFlex="{{column.width}}">
                                        <div *ngIf="column.name !== 'comments' || row['comments']">
                                            {{column.format ? column.format(row[column.name]) : row[column.name]}}
                                        </div>
                                    </div>
                                    <div class="td-data-table-cell" fxFlex=10>
                                        <div *ngIf="row.actions">
                                            <div *ngIf="row.actions.length <= 4" fxLayout="row" fxLayoutAlign="end center">
                                                <button (click)="row.checked = !row.checked" *ngFor="let action of row.actions" matTooltip="{{action.tooltip}}" mat-icon-button color="accent" [disabled]="action.disabled ? '' : null">
                                                    <i class="{{action.icon}}" aria-hidden="true"></i>
                                                </button>
                                                <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                                            </div>
                                            <div *ngIf="row.actions.length > 4" fxLayout="row" fxLayoutAlign="end center">
                                                <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button color="accent" [matMenuTriggerFor]="tableActionMenu">
                                                    <i class="fa fa-ellipsis-h" aria-hidden="true"></i>
                                                </button>
                                                <mat-menu #tableActionMenu="matMenu" [overlapTrigger]="false">
                                                    <button *ngFor="let action of row.actions" matTooltip="{{action.tooltip}}" mat-menu-item [disabled]="action.disabled ? '' : null">
                                                        <i class="{{action.icon}}" aria-hidden="true"></i>
                                                        <span>{{action.name}}</span>
                                                    </button>
                                                </mat-menu>
                                                <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                                            </div>
                                        </div>
                                        <div *ngIf="!row.actions" fxLayout="row" fxLayoutAlign="end center">
                                            <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mat-padding" *ngIf="!filteredData.length > 0" layout="row" layout-align="center center">
                                <h3>No results to display.</h3>
                            </div>
                            <td-paging-bar #pagingBar [initialPage]="1" [pageSize]="pageSize" [total]="pageCount" (change)="page($event)">
                                <span hide-xs>Row per page:</span> {{pagingBar.range}} <span hide-xs>of {{pagingBar.total}}</span>
                            </td-paging-bar>
                        </div>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Code</ng-template>
                        <p>HTML:</p>
                        <pre lang="html">
                        <![CDATA[
        <div layout="row" layout-align="space-between center" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">
            <span class="table-title">
            <span>Table title</span>
            </span>
            <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center">
                <td-chips [items]="autoCompleteData" (add)="searchAdd($event)" (remove)="searchRemove($event)"></td-chips>
                <button color="fds-primary" mat-raised-button [matMenuTriggerFor]="dataTableActionMenu">
                    Actions<i class="fa fa-caret-down" aria-hidden="true"></i>
                </button>
            </div>
            <mat-menu class="fds-primary-dropdown-button-menu" #dataTableActionMenu="matMenu" [overlapTrigger]="false">
                <button mat-menu-item> Option 1 </button>
                <button mat-menu-item> Option 2 </button>
            </mat-menu>
        </div>
        <div class="pad-left-md pad-right-md">
            <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table">
                <div class="td-data-table-column" (click)="sort($event, column)" [matTooltip]="column.tooltip" *ngFor="let column of columns" fxFlex="{ { column.width } }">
                    { { column.label } }
                    <i *ngIf="column.active && column.sortable && column.sortOrder === 'ASC'" class="fa fa-caret-up" aria-hidden="true"></i>
                    <i *ngIf="column.active && column.sortable && column.sortOrder === 'DESC'" class="fa fa-caret-down" aria-hidden="true"></i>
                </div>
                <div class="td-data-table-column" fxFlex=10>
                    <div fxLayout="row" fxLayoutAlign="end center">
                        <mat-checkbox class="pad-left-sm" [(ngModel)]="allRowsSelected" (checked)="allRowsSelected" (change)="toggleSelectAll()"></mat-checkbox>
                    </div>
                </div>
            </div>
            <div>
                <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredData" (click)="row.checked = !row.checked;toggleSelect(row)">
                    <div class="td-data-table-cell" *ngFor="let column of columns" fxFlex="{ { column.width } }">
                        <div *ngIf="column.name !== 'comments' || row['comments']">
                            { { column.format ? column.format(row[column.name]) : row[column.name] } }
                        </div>
                    </div>
                    <div class="td-data-table-cell" fxFlex=10>
                        <div *ngIf="row.actions">
                            <div *ngIf="row.actions.length <= 4" fxLayout="row" fxLayoutAlign="end center">
                                <button (click)="row.checked = !row.checked" *ngFor="let action of row.actions" matTooltip="{ { action.tooltip } }" mat-icon-button color="accent" [disabled]="action.disabled ? '' : null">
                                    <i class="{ { action.icon } }" aria-hidden="true"></i>
                                </button>
                                <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                            </div>
                            <div *ngIf="row.actions.length > 4" fxLayout="row" fxLayoutAlign="end center">
                                <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button color="accent" [matMenuTriggerFor]="tableActionMenu">
                                    <i class="fa fa-ellipsis-h" aria-hidden="true"></i>
                                </button>
                                <mat-menu #tableActionMenu="matMenu" [overlapTrigger]="false">
                                    <button *ngFor="let action of row.actions" matTooltip="{ { action.tooltip } }" mat-menu-item [disabled]="action.disabled ? '' : null">
                                        <i class="{ { action.icon } }" aria-hidden="true"></i>
                                        <span>{ { action.name } }</span>
                                    </button>
                                </mat-menu>
                                <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                            </div>
                        </div>
                        <div *ngIf="!row.actions" fxLayout="row" fxLayoutAlign="end center">
                            <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" (change)="toggleSelect(row)" (click)="row.checked = !row.checked;toggleSelect(row)"></mat-checkbox>
                        </div>
                    </div>
                </div>
            </div>
            <div class="mat-padding" *ngIf="!filteredData.length > 0" layout="row" layout-align="center center">
                <h3>No results to display.</h3>
            </div>
            <td-paging-bar #pagingBar [initialPage]="1" [pageSize]="pageSize" [total]="pageCount" (change)="page($event)">
                <span hide-xs>Row per page:</span> { { pagingBar.range } } <span hide-xs>of { { pagingBar.total } }</span>
            </td-paging-bar>
        </div>
          ]]>
                    </pre>
                        <p>Javascript:</p>
                        <pre lang="javascript">
                        <![CDATA[
        this.dataTableService = TdDataTableService;

        this.data = [{
                            'id': 1,
                            'name': 'Frozen yogurt',
                            'type': 'Ice cream',
                            'calories': 159.0,
                            'fat': 6.0,
                            'carbs': 24.0,
                            'protein': 4.0,
                            'sodium': 87.0,
                            'calcium': 14.0,
                            'iron': 1.0,
                            'comments': 'I love froyo!',
                            'actions': [{
                'name': 'Action 1',
                'icon': 'fa fa-user',
                'tooltip': 'Manage Users'
            }, {
                'name': 'Action 2',
                'icon': 'fa fa-key',
                'tooltip': 'Manage Permissions'
            }]
        }, {
                            'id': 2,
                            'name': 'Ice cream sandwich',
                            'type': 'Ice cream',
                            'calories': 237.0,
                            'fat': 9.0,
                            'carbs': 37.0,
                            'protein': 4.3,
                            'sodium': 129.0,
                            'calcium': 8.0,
                            'iron': 1.0,
                            'actions': [{
                'name': 'Action 1',
                'icon': 'fa fa-user',
                'tooltip': 'Manage Users'
            }, {
                'name': 'Action 2',
                'icon': 'fa fa-key',
                'tooltip': 'Manage Permissions'
            }, {
                'name': 'Action 3',
                'tooltip': 'Action 3'
            }, {
                'name': 'Action 4',
                'disabled': true,
                'tooltip': 'Action 4'
            }, {
                'name': 'Action 5',
                'tooltip': 'Action 5'
            }]
        }, {
                            'id': 3,
                            'name': 'Eclair',
                            'type': 'Pastry',
                            'calories': 262.0,
                            'fat': 16.0,
                            'carbs': 24.0,
                            'protein': 6.0,
                            'sodium': 337.0,
                            'calcium': 6.0,
                            'iron': 7.0,
                            'actions': [{
                'name': 'Action 1',
                'icon': 'fa fa-user',
                'tooltip': 'Manage Users'
            }, {
                'name': 'Action 2',
                'icon': 'fa fa-key',
                'tooltip': 'Manage Permissions'
            }, {
                'name': 'Action 3',
                'tooltip': 'Action 3'
            }, {
                'name': 'Action 4',
                'disabled': true,
                'tooltip': 'Action 4'
            }, {
                'name': 'Action 5',
                'tooltip': 'Action 5'
            }],
        }, {
                            'id': 4,
                            'name': 'Cupcake',
                            'type': 'Pastry',
                            'calories': 305.0,
                            'fat': 3.7,
                            'carbs': 67.0,
                            'protein': 4.3,
                            'sodium': 413.0,
                            'calcium': 3.0,
                            'iron': 8.0,
                            'actions': [{
                'name': 'Action 1',
                'icon': 'fa fa-user',
                'tooltip': 'Manage Users'
            }, {
                'name': 'Action 2',
                'icon': 'fa fa-key',
                'tooltip': 'Manage Permissions'
            }, {
                'name': 'Action 3',
                'tooltip': 'Action 3'
            }, {
                'name': 'Action 4',
                'disabled': true,
                'tooltip': 'Action 4'
            }, {
                'name': 'Action 5',
                'tooltip': 'Action 5'
            }],
        }, {
                            'id': 5,
                            'name': 'Jelly bean',
                            'type': 'Candy',
                            'calories': 375.0,
                            'fat': 0.0,
                            'carbs': 94.0,
                            'protein': 0.0,
                            'sodium': 50.0,
                            'calcium': 0.0,
                            'iron': 0.0,
        }, {
                            'id': 6,
                            'name': 'Lollipop',
                            'type': 'Candy',
                            'calories': 392.0,
                            'fat': 0.2,
                            'carbs': 98.0,
                            'protein': 0.0,
                            'sodium': 38.0,
                            'calcium': 0.0,
                            'iron': 2.0,
        }, {
                            'id': 7,
                            'name': 'Honeycomb',
                            'type': 'Other',
                            'calories': 408.0,
                            'fat': 3.2,
                            'carbs': 87.0,
                            'protein': 6.5,
                            'sodium': 562.0,
                            'calcium': 0.0,
                            'iron': 45.0,
        }, {
                            'id': 8,
                            'name': 'Donut',
                            'type': 'Pastry',
                            'calories': 452.0,
                            'fat': 25.0,
                            'carbs': 51.0,
                            'protein': 4.9,
                            'sodium': 326.0,
                            'calcium': 2.0,
                            'iron': 22.0,
        }, {
                            'id': 9,
                            'name': 'KitKat',
                            'type': 'Candy',
                            'calories': 518.0,
                            'fat': 26.0,
                            'carbs': 65.0,
                            'protein': 7.0,
                            'sodium': 54.0,
                            'calcium': 12.0,
                            'iron': 6.0,
        }, {
                            'id': 10,
                            'name': 'Chocolate',
                            'type': 'Candy',
                            'calories': 518.0,
                            'fat': 26.0,
                            'carbs': 65.0,
                            'protein': 7.0,
                            'sodium': 54.0,
                            'calcium': 12.0,
                            'iron': 6.0,
        }, {
                            'id': 11,
                            'name': 'Chamoy',
                            'type': 'Candy',
                            'calories': 518.0,
                            'fat': 26.0,
                            'carbs': 65.0,
                            'protein': 7.0,
                            'sodium': 54.0,
                            'calcium': 12.0,
                            'iron': 6.0,
        }, ];

        this.filteredData = this.data;
        this.filteredTotal = this.data.length;

        this.columns = [
                            { name: 'comments', label: 'Comments' },
                            { name: 'name', label: 'Dessert (100g serving)', sortable: true },
                            { name: 'type', label: 'Type', sortable: true },
                            { name: 'calories', label: 'Calories', numeric: true, format: NUMBER_FORMAT, sortable: true },
                            { name: 'fat', label: 'Fat (g)', numeric: true, format: DECIMAL_FORMAT, sortable: true },
                            { name: 'carbs', label: 'Carbs (g)', numeric: true, format: NUMBER_FORMAT, sortable: true },
                            { name: 'protein', label: 'Protein (g)', numeric: true, format: DECIMAL_FORMAT, sortable: true },
                            { name: 'sodium', label: 'Sodium (mg)', numeric: true, format: NUMBER_FORMAT, sortable: true },
                            { name: 'calcium', label: 'Calcium (%)', numeric: true, format: NUMBER_FORMAT, sortable: true },
                            { name: 'iron', label: 'Iron (%)', numeric: true, format: NUMBER_FORMAT },
        ];

        this.allRowsSelected = false;
        this.autoCompleteData = [];
        this.selectedRows = [];

        this.searchTerm = [];
        this.fromRow = 1;
        this.currentPage = 1;
        this.pageSize = 5;

        ...

        sort: function(sortEvent, column) {
                            if (column.sortable) {
                var sortBy = column.name;
                var sortOrder = column.sortOrder = (column.sortOrder === 'ASC') ? 'DESC' : 'ASC';
                this.filter(sortBy, sortOrder);

                //only one column can be actively sorted so we reset all to inactive
                this.columns.forEach(c => c.active = false);
                //and set this column as the actively sorted column
                column.active = true;
            }
        },

        searchRemove: function(searchTerm) {
                            //only remove the first occurrence of the search term
                            var index = this.searchTerm.indexOf(searchTerm);
                            if (index !== -1) {
                this.searchTerm.splice(index, 1);
            }
            this.filter();
        },

        searchAdd: function(searchTerm) {
                            this.searchTerm.push(searchTerm);
                            this.filter();
        },

        page: function(pagingEvent) {
                            this.fromRow = pagingEvent.fromRow;
                            this.currentPage = pagingEvent.page;
                            this.pageSize = pagingEvent.pageSize;
                            this.filter();
        },

        filterData: function(data, searchTerm, ignoreCase) {
                            var field = '';
                            if (searchTerm.indexOf(":") > -1) {
                field = searchTerm.split(':')[0].trim();
                searchTerm = searchTerm.split(':')[1].trim();
            }
            var filter = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';

            if (filter) {
                data = data.filter(item => {
                            var res = Object.keys(item).find((key) => {
                        if (field.indexOf(".") > -1) {
                            var objArray = field.split(".");
                            var obj = item;
                            var arrayLength = objArray.length;
                            for (var i = 0; i < arrayLength; i++) {
                                try {
                            obj = obj[objArray[i]];
                                } catch (e) {
                            return false;
                                }
                            }
                            var preItemValue = ('' + obj);
                            var itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                            return itemValue.indexOf(filter) > -1;
                        } else {
                            if (key !== field && field !== '') {
                                return false;
                            }
                            var preItemValue = ('' + item[key]);
                            var itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                            return itemValue.indexOf(filter) > -1;
                        }
                    });
                    return !(typeof res === 'undefined');
                });
            }
            return data;
        },

        filter: function(sortBy, sortOrder) {
                            if (this.allRowsSelected) {
                this.toggleSelectAll();
            }
            this.deselectAll();
            var newData = this.data;

            if (this.searchTerm.length > 0) {
                for (var i = 0; i < this.searchTerm.length; i++) {
                            //account for column/field name specific search syntax
                            if (this.searchTerm[i].indexOf(":") > -1) {
                        newData = this.filterData(newData, this.searchTerm[i].split(':')[1].trim(), true, this.searchTerm[i].split(':')[0].trim());
                    } else { //otherwise search all cells
                        newData = this.filterData(newData, this.searchTerm[i], true);
                    }
                }
            } else {
                newData = this.dataTableService.filterData(newData, '', true);
            }
            this.filteredTotal = newData.length;
            newData = this.dataTableService.sortData(newData, sortBy, sortOrder);
            newData = this.dataTableService.pageData(newData, this.fromRow, this.currentPage * this.pageSize);
            this.filteredData = newData;
            this.getAutoCompleteData();
        },

        toggleSelect: function(row) {
                            if (!row.checked) {
                                this.allRowsSelected = false;
                                } else {
                                if (this.allFilteredRowsSelected()) {
                                this.allRowsSelected = true;
                                } else {
                                this.allRowsSelected = false;
                                }
                                }
                                },

                                toggleSelectAll: function() {
                                this.allRowsSelected = !this.allRowsSelected;
                                if (this.allRowsSelected) {
                                this.selectAll();
                                } else {
                                this.deselectAll();
                                }
                                },

                                selectAll: function() {
                                this.filteredData.forEach(c => c.checked = true);
                                },

                                deselectAll: function() {
                                this.filteredData.forEach(c => c.checked = false);
                                },

                                allFilteredRowsSelected: function() {
                                var allFilteredRowsSelected = true;
                                this.filteredData.forEach(function(c) {
                                if (c.checked === undefined || c.checked === false) {
                                allFilteredRowsSelected = false;
                                }
                                });

                                return allFilteredRowsSelected;
                                },

                                areTooltipsOn: function() {
                                return this.columns[0].hasOwnProperty('tooltip');
                                },

                                toggleTooltips: function() {
                                if (this.columns[0].tooltip) {
                                this.columns.forEach(c => delete c.tooltip);
                                } else {
                                this.columns.forEach(c => c.tooltip = `This is ${c.label}!`);
                                }
                                },

                                openDataTablePrompt: function(row, name) {
                                this.dialogService.openPrompt({
                                message: 'Enter comment?',
                                value: row[name],
                            }).afterClosed().subscribe(value => {
                                if (value !== undefined) {
                                row[name] = value;
                                }
                                })
                                },

                                getAutoCompleteData: function() {
                                this.autoCompleteData = [];
                                this.columns.forEach(c => this.filteredData.forEach(r => (r[c.name.toLowerCase()]) ? this.autoCompleteData.push(r[c.name.toLowerCase()].toString()):''));
                                },

                                ...
                                ]]>
                                </pre>
                            </mat-tab>
                            </mat-tab-group>
                            </mat-card-content>
                            <mat-divider></mat-divider>
                            <mat-card-actions>
                            <button matTooltip="Column field name tooltips toggle." mat-button color="primary" (click)="toggleTooltips()" class="text-upper">
                                Tooltips ({{areTooltipsOn() ? 'ON' : 'OFF'}})
                                </button>
                            </mat-card-actions>
                            </mat-card>
                            <mat-card>
                            <mat-card-title class="pad-bottom-sm">Checkbox</mat-card-title>
                                <mat-divider></mat-divider>
                                <mat-card-content>
                                <h3 class="mat-title">Basic Usage</h3>
                            <mat-divider></mat-divider>
                            <mat-list>
                            <mat-list-item *ngFor="let grocery of groceries">
                            <mat-checkbox [checked]="grocery.bought">
                                {{grocery.name}}
                                </mat-checkbox>
                            </mat-list-item>
                            </mat-list>
                            <h3 class="mat-title">Usage</h3>
                                <p>HTML:</p>
                            <pre lang="html">
                                <![CDATA[
                                <!-- Basic Usage -->
                                <mat-checkbox [checked]="grocery.bought">
                                    { {grocery.name} }
                                </mat-checkbox>
                                ]]>
                                </pre>
                            <p>Javascript:</p>
                            <pre lang="javascript">
                                <![CDATA[
                                    this.groceries = [{
                                        bought: true,
                                name: 'Seitan',
                                }, {
                            bought: false,
                                name: 'Almond Meal Flour',
                                }, {
                            bought: false,
                                name: 'Organic Eggs',
                                }, ];
                        ]]>
                    </pre>
                        <h3 class="mat-title">Usage within Forms</h3>
                        <mat-divider></mat-divider>
                        <form>
                            <div layout="row" layout-align="start center">
                                <mat-checkbox flex="initial" [(ngModel)]="user.agreesToTOS" name="agreesToTOS">
                                    I agree to the terms
                                </mat-checkbox>
                                <button mat-raised-button color="fds-secondary" [disabled]="!user.agreesToTOS" class="pad-right-sm" class="text-upper">Sign Up</button>
                            </div>
                            <mat-divider></mat-divider>
                            <div layout="row" layout-align="start center" class="pad-top-sm pad-bottom-sm">
                                <mat-checkbox labelPosition="after">
                                    I come after my label.
                                </mat-checkbox>
                            </div>
                            <mat-divider></mat-divider>
                            <div layout="row" layout-align="start center" class="pad-top-sm pad-bottom-sm">
                                <mat-checkbox labelPosition="before">
                                    I come before my label
                                </mat-checkbox>
                            </div>
                            <mat-divider></mat-divider>
                        </form>
                        <h3 class="mat-title">Usage</h3>
                        <p>HTML:</p>
                        <pre lang="html">
        <![CDATA[
                            <!-- Usage within Forms -->
        <form>
            <div layout="row" layout-align="start center">
                <mat-checkbox flex="initial" [(ngModel)]="user.agreesToTOS" name="agreesToTOS">
                    I agree to the terms
                </mat-checkbox>
                <button mat-raised-button color="fds-secondary" [disabled]="!user.agreesToTOS" class="pad-right-sm" class="text-upper">Sign Up</button>
            </div>
            <mat-divider></mat-divider>
            <div layout="row" layout-align="start center" class="pad-top-sm pad-bottom-sm">
                <mat-checkbox labelPosition="after">
                    I come after my label.
                </mat-checkbox>
            </div>
            <mat-divider></mat-divider>
            <div layout="row" layout-align="start center" class="pad-top-sm pad-bottom-sm">
                <mat-checkbox labelPosition="before">
                    I come before my label
                </mat-checkbox>
            </div>
            <mat-divider></mat-divider>
        </form>
        ]]>
        </pre>
                        <p>Javascript:</p>
                        <pre lang="javascript">
                        <![CDATA[
        this.user = {
                            agreesToTOS: false
        };
                        ]]>
                    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Radios</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content layout="row">
                <div flex="48" class="pad-right">
                    <!-- Basic Radios -->
                    <h3 class="mat-title">Basic Radios</h3>
                    <mat-radio-group name="group1">
                        <mat-radio-button class="pad-right-sm" name="group1">Option 1 </mat-radio-button>
                        <mat-radio-button class="pad-right-sm" name="group1">Option 2 </mat-radio-button>
                        <mat-radio-button class="pad-right-sm" name="group1" disabled="true">Option 3 (disabled) </mat-radio-button>
                    </mat-radio-group>
                    <h3 class="mat-title">Usage</h3>
                    <p>HTML:</p>
                    <pre lang="html">
                <![CDATA[
                        <!-- Basic Radios -->
        <mat-radio-group name="group1">
            <mat-radio-button class="pad-right-sm" name="group1">Option 1 </mat-radio-button>
            <mat-radio-button class="pad-right-sm" name="group1">Option 2 </mat-radio-button>
            <mat-radio-button class="pad-right-sm" name="group1" disabled="true">Option 3 (disabled) </mat-radio-button>
        </mat-radio-group>
        ]]>
        </pre>
                </div>
                <div flex="48">
                    <!-- Dynamic Radios -->
                    <h3 class="mat-title">Dynamic Radios</h3>
                    <mat-radio-group name="more_options" [(ngModel)]="favoriteSeason">
                        <mat-radio-button class="fds-radio pad-right-sm" *ngFor="let season of seasonOptions" name="more_options" [value]="season">
                            {{season}}
                        </mat-radio-button>
                    </mat-radio-group>
                    <p>Your favorite season is: <strong>{{favoriteSeason}}</strong></p>
                    <h3 class="mat-title">Usage</h3>
                    <p>HTML:</p>
                    <pre lang="html">
      <![CDATA[
                        <!-- Dynamic Radios -->
        <mat-radio-group name="more_options" [(ngModel)]="favoriteSeason">
          <mat-radio-button class="fds-radio" *ngFor="let season of seasonOptions" name="more_options" [value]="season">
            { {season} }
          </mat-radio-button>
        </mat-radio-group>
        <p>Your favorite season is: <strong>{ { favoriteSeason } }</strong></p>
      ]]>
      </pre>
                    <p>Javascript:</p>
                    <pre lang="javascript">
      <![CDATA[

        this.favoriteSeason = 'Autumn';

        this.seasonOptions = [
            'Winter',
            'Spring',
            'Summer',
            'Autumn',
        ];
      ]]>
      </pre>
                </div>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Tooltips</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <button mat-raised-button color="fds-primary" matTooltip="I show above" matTooltipPosition="above" class="text-upper">Above Tooltip</button>
                <button mat-raised-button color="fds-primary" matTooltip="I show after" matTooltipPosition="after" class="text-upper">After Tooltip</button>
                <button mat-raised-button color="fds-primary" matTooltip="I show below" matTooltipPosition="below" class="text-upper">Below Tooltip</button>
                <button mat-raised-button color="fds-primary" matTooltip="I show before" matTooltipPosition="before" class="text-upper">Before Tooltip</button>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <button mat-raised-button color="fds-primary" matTooltip="I show above" matTooltipPosition="above" class="text-upper">Bottom Tooltip</button>
        <button mat-raised-button color="fds-primary" matTooltip="I show after" matTooltipPosition="after" class="text-upper">Bottom Tooltip</button>
        <button mat-raised-button color="fds-primary" matTooltip="I show below" matTooltipPosition="below" class="text-upper">Bottom Tooltip</button>
        <button mat-raised-button color="fds-primary" matTooltip="I show before" matTooltipPosition="before" class="text-upper">Bottom Tooltip</button>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Panels</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="mat-title">Standard Card</h3>
                <mat-card>
                    <button class="fds-panel-menu-button" matTooltip="Standard Card Menu" mat-icon-button [matMenuTriggerFor]="standardCardMenu">
                        <i class="fa fa-ellipsis-v " aria-hidden="true"></i>
                    </button>
                    <mat-menu class="primary-icon-button-menu" #standardCardMenu="matMenu" [overlapTrigger]="false">
                        <button mat-menu-item>
                            <span>Option1</span>
                        </button>
                        <button mat-menu-item>
                            <span>Option2</span>
                        </button>
                    </mat-menu>
                    <mat-card-title class="pad-bottom-sm">
                        <span>Title</span>
                    </mat-card-title>
                    <mat-card-content>
                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do tempor incididunt ut labore et dolore magna aliqua. Ut enim ad</p>
                    </mat-card-content>
                    <mat-card-actions fxLayout="row" fxLayoutAlign="end center">
                        <button mat-raised-button color="fds-primary" class="text-upper">Action</button>
                    </mat-card-actions>
                </mat-card>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
                <![CDATA[
                    <!-- Basic Card -->
        <mat-card>
            <button class="fds-panel-menu-button" matTooltip="Standard Card Menu" mat-icon-button [matMenuTriggerFor]="standardCardMenu">
                <i class="fa fa-ellipsis-v " aria-hidden="true"></i>
            </button>
            <mat-menu class="primary-icon-button-menu" #standardCardMenu="matMenu" [overlapTrigger]="false">
                <button mat-menu-item>
                    <span>Option1</span>
                </button>
                <button mat-menu-item>
                    <span>Option2</span>
                </button>
            </mat-menu>
            <mat-card-title class="pad-bottom-sm">
                <span>Title</span>
            </mat-card-title>
            <mat-card-content>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do tempor incididunt ut labore et dolore magna aliqua. Ut enim ad</p>
            </mat-card-content>
            <mat-card-actions fxLayout="row" fxLayoutAlign="end center">
                <button mat-raised-button color="fds-primary" class="text-upper">Action</button>
            </mat-card-actions>
        </mat-card>
    ]]>
            </pre>
                <h3 class="mat-title">Tabbed Card</h3>
                <mat-card>
                    <button class="fds-panel-menu-button" matTooltip="Standard Card Menu" mat-icon-button [matMenuTriggerFor]="standardCardMenu">
                        <i class="fa fa-ellipsis-v " aria-hidden="true"></i>
                    </button>
                    <mat-menu class="primary-icon-button-menu" #standardCardMenu="matMenu" [overlapTrigger]="false">
                        <button mat-menu-item>
                            <span>Option1</span>
                        </button>
                        <button mat-menu-item>
                            <span>Option2</span>
                        </button>
                    </mat-menu>
                    <mat-card-content>
                        <mat-tab-group dynamicHeight>
                            <mat-tab>
                                <ng-template mat-tab-label>One</ng-template>
                                <h3 class="mat-title">First tab content</h3>
                                <p>Plaid echo park knausgaard normcore franzen cronut. Pickled humblebrag tofu hoodie, umami salvia farm-to-table schlitz try-hard food truck knausgaard pabst. Yuccie portland jean shorts, authentic mixtape waistcoat gentrify blue bottle. Fixie kickstarter church-key small batch seitan, shabby chic vegan listicle before they sold out. Hammock raw denim flannel tousled seitan you probably haven't heard of them. Trust fund man bun pug, kickstarter artisan selvage letterpress cornhole tote bag butcher locavore. Affogato try-hard kickstarter seitan, DIY pickled hella godard pork belly four loko ugh.</p>
                            </mat-tab>
                            <mat-tab>
                                <ng-template mat-tab-label>Two</ng-template>
                                <h3 class="mat-title">Second tab content</h3>
                                <p>Hashtag distillery skateboard man bun gochujang, salvia man braid art party meggings heirloom kitsch farm-to-table. Franzen beard fingerstache gentrify, heirloom portland ennui XOXO microdosing kitsch plaid. Chicharrones bushwick chia, banh mi irony tattooed hammock butcher shabby chic taxidermy semiotics marfa post-ironic. Blue bottle keffiyeh farm-to-table ennui, chambray pitchfork art party pinterest artisan pop-up. Etsy banjo marfa, blue bottle kombucha crucifix XOXO tousled beard. Tilde disrupt kale chips bicycle rights skateboard master cleanse hella shoreditch, meditation retro shabby chic vice heirloom. Etsy listicle vice actually, iPhone chia hoodie four loko.</p>
                            </mat-tab>
                        </mat-tab-group>
                    </mat-card-content>
                    <mat-card-actions fxLayout="row" fxLayoutAlign="end center">
                        <button mat-raised-button color="fds-primary" class="text-upper">Action</button>
                    </mat-card-actions>
                </mat-card>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
                <![CDATA[
                    <!-- Basic Card -->
        <mat-card>
            <button class="fds-panel-menu-button" matTooltip="Standard Card Menu" mat-icon-button [matMenuTriggerFor]="standardCardMenu">
                <i class="fa fa-ellipsis-v " aria-hidden="true"></i>
            </button>
            <mat-menu class="primary-icon-button-menu" #standardCardMenu="matMenu" [overlapTrigger]="false">
                <button mat-menu-item>
                    <span>Option1</span>
                </button>
                <button mat-menu-item>
                    <span>Option2</span>
                </button>
            </mat-menu>
            <mat-card-content>
                <mat-tab-group dynamicHeight>
                    <mat-tab>
                        <ng-template mat-tab-label>One</ng-template>
                        <h3 class="mat-title">First tab content</h3>
                        <p>Plaid echo park knausgaard normcore franzen cronut. Pickled humblebrag tofu hoodie, umami salvia farm-to-table schlitz try-hard food truck knausgaard pabst. Yuccie portland jean shorts, authentic mixtape waistcoat gentrify blue bottle. Fixie kickstarter church-key small batch seitan, shabby chic vegan listicle before they sold out. Hammock raw denim flannel tousled seitan you probably haven't heard of them. Trust fund man bun pug, kickstarter artisan selvage letterpress cornhole tote bag butcher locavore. Affogato try-hard kickstarter seitan, DIY pickled hella godard pork belly four loko ugh.</p>
                    </mat-tab>
                    <mat-tab>
                        <ng-template mat-tab-label>Two</ng-template>
                        <h3 class="mat-title">Second tab content</h3>
                        <p>Hashtag distillery skateboard man bun gochujang, salvia man braid art party meggings heirloom kitsch farm-to-table. Franzen beard fingerstache gentrify, heirloom portland ennui XOXO microdosing kitsch plaid. Chicharrones bushwick chia, banh mi irony tattooed hammock butcher shabby chic taxidermy semiotics marfa post-ironic. Blue bottle keffiyeh farm-to-table ennui, chambray pitchfork art party pinterest artisan pop-up. Etsy banjo marfa, blue bottle kombucha crucifix XOXO tousled beard. Tilde disrupt kale chips bicycle rights skateboard master cleanse hella shoreditch, meditation retro shabby chic vice heirloom. Etsy listicle vice actually, iPhone chia hoodie four loko.</p>
                    </mat-tab>
                </mat-tab-group>
            </mat-card-content>
            <mat-card-actions fxLayout="row" fxLayoutAlign="end center">
                <button mat-raised-button color="fds-primary" class="text-upper">Action</button>
            </mat-card-actions>
        </mat-card>
    ]]>
            </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Select</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <form>
                    <div layout="row" layout-margin>
                        <mat-select color="accent" floatPlaceholder="never" placeholder="Favorite food" [(ngModel)]="selectedValue" name="food">
                            <mat-option *ngFor="let food of foods" [value]="food.value">
                                {{food.viewValue}}
                            </mat-option>
                        </mat-select>
                    </div>
                    <div layout="row" layout-margin>
                        <div flex> Selected food value: {{selectedValue}} </div>
                    </div>
                </form>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <form>
            <div layout="row" layout-margin>
                <mat-select color="accent" floatPlaceholder="never" placeholder="Favorite food" [(ngModel)]="selectedValue" name="food">
                    <mat-option *ngFor="let food of foods" [value]="food.value">
                        { {food.viewValue} }
                    </mat-option>
                </mat-select>
            </div>
            <div layout="row" layout-margin>
                <div flex> Selected food value: { {selectedValue} } </div>
            </div>
        </form>
        ]]>
      </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
      <![CDATA[
        this.selectedValue = '';

        this.foods = [
                    { value: 'steak-0', viewValue: 'Steak' },
                    { value: 'pizza-1', viewValue: 'Pizza' },
                    { value: 'tacos-2', viewValue: 'Tacos' },
        ];
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Menus (dropdowns)</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <button mat-icon-button [matMenuTriggerFor]="menu">
                    <mat-icon>more_vert</mat-icon>
                </button>
                <mat-menu #menu="matMenu">
                    <button mat-menu-item> Refresh </button>
                    <button mat-menu-item> Settings </button>
                    <button mat-menu-item> Help </button>
                    <button mat-menu-item disabled> Sign Out </button>
                </mat-menu>
                <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="posXMenu">
                    Before<i class="fa fa-caret-down" aria-hidden="true"></i>
                </button>
                <mat-menu xPosition="before" #posXMenu="matMenu">
                    <button mat-menu-item> Refresh </button>
                    <button mat-menu-item> Settings </button>
                    <button mat-menu-item> Help </button>
                    <button mat-menu-item disabled> Sign Out </button>
                </mat-menu>
                <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="aboveMenu">
                    Above<i class="fa fa-caret-down" aria-hidden="true"></i>
                </button>
                <mat-menu yPosition="above" #aboveMenu="matMenu">
                    <button mat-menu-item> Refresh </button>
                    <button mat-menu-item> Settings </button>
                    <button mat-menu-item> Help </button>
                    <button mat-menu-item disabled> Sign Out </button>
                </mat-menu>
                <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="iconsMenu">
                    Icons in Menu<i class="fa fa-caret-down" aria-hidden="true"></i>
                </button>
                <mat-menu #iconsMenu="matMenu" [overlapTrigger]="false">
                    <button mat-menu-item>
                        <mat-icon>dialpad</mat-icon>
                        <span>Redial</span>
                    </button>
                    <button mat-menu-item disabled>
                        <mat-icon>voicemail</mat-icon>
                        <span>Check voicemail</span>
                    </button>
                    <button mat-menu-item>
                        <mat-icon>notifications_off</mat-icon>
                        <span>Disable alerts</span>
                    </button>
                </mat-menu>
                <button color="fds-primary" [matMenuTriggerFor]="primaryButtonDropdownMenu" mat-raised-button>
                    FDS Primary<i class="fa fa-caret-down" aria-hidden="true"></i>
                </button>
                <mat-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="matMenu" [overlapTrigger]="false">
                    <button mat-menu-item>
                        <span>Option 1</span>
                    </button>
                    <button mat-menu-item disabled>
                        <span>Option 2</span>
                    </button>
                </mat-menu>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <button mat-icon-button [matMenuTriggerFor]="menu">
            <mat-icon>more_vert</mat-icon>
        </button>
        <mat-menu #menu="matMenu">
            <button mat-menu-item> Refresh </button>
            <button mat-menu-item> Settings </button>
            <button mat-menu-item> Help </button>
            <button mat-menu-item disabled> Sign Out </button>
        </mat-menu>
        <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="posXMenu">
            Before<i class="fa fa-caret-down" aria-hidden="true"></i>
        </button>
        <mat-menu xPosition="before" #posXMenu="matMenu">
            <button mat-menu-item> Refresh </button>
            <button mat-menu-item> Settings </button>
            <button mat-menu-item> Help </button>
            <button mat-menu-item disabled> Sign Out </button>
        </mat-menu>
        <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="aboveMenu">
            Above<i class="fa fa-caret-down" aria-hidden="true"></i>
        </button>
        <mat-menu yPosition="above" #aboveMenu="matMenu">
            <button mat-menu-item> Refresh </button>
            <button mat-menu-item> Settings </button>
            <button mat-menu-item> Help </button>
            <button mat-menu-item disabled> Sign Out </button>
        </mat-menu>
        <button color="fds-regular" mat-raised-button [matMenuTriggerFor]="iconsMenu">
            Icons in Menu<i class="fa fa-caret-down" aria-hidden="true"></i>
        </button>
        <mat-menu #iconsMenu="matMenu" [overlapTrigger]="false">
            <button mat-menu-item>
                <mat-icon>dialpad</mat-icon>
                <span>Redial</span>
            </button>
            <button mat-menu-item disabled>
                <mat-icon>voicemail</mat-icon>
                <span>Check voicemail</span>
            </button>
            <button mat-menu-item>
                <mat-icon>notifications_off</mat-icon>
                <span>Disable alerts</span>
            </button>
        </mat-menu>
        <button color="fds-primary" [matMenuTriggerFor]="primaryButtonDropdownMenu" mat-raised-button>
            FDS Primary<i class="fa fa-caret-down" aria-hidden="true"></i>
        </button>
        <mat-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="matMenu" [overlapTrigger]="false">
            <button mat-menu-item>
                <span>Option 1</span>
            </button>
            <button mat-menu-item disabled>
                <span>Option 2</span>
            </button>
        </mat-menu>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Dialog</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <button mat-raised-button color="fds-primary" (click)="openDialog()">Show simple dialog</button>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <button mat-raised-button color="fds-primary" (click)="openDialog()">Show simple dialog</button>
      ]]>
    </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
      <![CDATA[
        var ngCore = require('@angular/core');
        function DialogComponent() {};

        DialogComponent.prototype = {
            constructor: DialogComponent
        };

        DialogComponent.annotations = [
            new ngCore.Component({
                template: 'Hello Dialog'
        })];

        ...

        constructor(MatDialog) {
            this.dialog = MatDialog;
        }

        ...

        openDialog: function() {
            this.dialog.open(DialogComponent, {
                            height: '50%', // can be px or %
                                    width: '60%', // can be px or %
                            });
                            }

                    ...

        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Simple Dialogs</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <div class="pad-left-sm">
                    <button mat-raised-button color="fds-primary" (click)="openConfirm()" class="text-upper">Open Confirm</button>
                </div>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <button mat-button color="primary" (click)="openConfirm()" class="text-upper">Open Confirm</button>
        ]]>
      </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
      <![CDATA[
        ...

        constructor(TdDialogService) {
                    this.dialogService = TdDialogService
        }

        ...

        openConfirm: function() {
                    this.dialogService.openConfirm({
                title: 'Confirm',
                message: 'This is how simple it is to create a confirm with this wrapper service. Do you agree?',
                cancelButton: 'Disagree',
                acceptButton: 'Agree',
            });
        },

        ...
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Snack Bars</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <button mat-raised-button color="fds-primary" (click)="showSuccessSnackBar()">Success Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showWarnSnackBar()">Warning Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showErrorSnackBar()">Error Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showRegularSnackBar()">Regular Snack Bar</button>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
                <button mat-raised-button color="fds-primary" (click)="showSuccessSnackBar()">Success Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showWarnSnackBar()">Warning Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showErrorSnackBar()">Error Snack Bar</button>
                <button mat-raised-button color="fds-primary" (click)="showRegularSnackBar()">Regular Snack Bar</button>
      ]]>
    </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
      <![CDATA[
        ...

        constructor(FdsSnackBarService) {
                    this.snackBarService = FdsSnackBarService;
        },

        ...

        /** Possible values for horizontalPosition on MatSnackBarConfig are 'start' | 'center' | 'end' | 'left' | 'right'. */
        /** Possible values for verticalPosition on MatSnackBarConfig are 'top' | 'bottom'. */
        /** Possible values for icon on MatSnackBarConfig are any available icons loaded on the page. */

        showSuccessSnackBar: function () {
                    var snackBarRef = this.snackBarService.openCoaster({
                title: 'Success',
                message: 'Some help text regarding the successful event.',
                verticalPosition: 'top',
                horizontalPosition: 'right',
                icon: 'fa fa-check-circle-o',
                color: '#1EB475',
                duration: 3000
            });
        },

        showWarnSnackBar: function () {
                    var snackBarRef = this.snackBarService.openCoaster({
                title: 'Warning',
                message: 'Some help text regarding the warning.',
                verticalPosition: 'top',
                horizontalPosition: 'left',
                icon: 'fa fa-exclamation-triangle',
                color: '#E98A40',
                duration: 3000
            });
        },

        showErrorSnackBar: function () {
                    var snackBarRef = this.snackBarService.openCoaster({
                title: 'Error',
                message: 'Some help text regarding the critical error. This coaster will stay open until closed with the `x` or if another coaster is created.',
                verticalPosition: 'bottom',
                horizontalPosition: 'right',
                icon: 'fa fa-times-circle-o',
                color: '#EF6162'
            });
        },

        showRegularSnackBar: function () {
                    var snackBarRef = this.snackBarService.openCoaster({
                title: 'Regular',
                message: 'Something interesting.',
                verticalPosition: 'bottom',
                horizontalPosition: 'left',
                color: '#808793',
                duration: 3000
            });
        },

        ...
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Expansion Panels</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p>Expand/Collapse Event for Expansion 1: {{expandCollapseExpansion1Msg}}</p>
                <div>
                    <button mat-button color="primary" (click)="toggleDisabled()" class="text-upper">Toggle disable</button>
                    <button mat-button color="primary" (click)="toggleExpansion1()" class="text-upper">Toggle first</button>
                </div>
                <div layout-gt-xs="row" layout-align-gt-xs="center start">
                    <div flex-gt-xs="90">
                        <td-expansion-panel label="Google" sublabel="1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" [expand]="expansion1" [disabled]="disabled" (expanded)="expandExpansion1Event()" (collapsed)="collapseExpansion1Event()">
                            <td-expansion-summary>
                                <mat-list>
                                    <mat-list-item>
                                        <mat-icon mat-list-avatar>pin_drop</mat-icon>
                                        <h3 mat-line>Google</h3>
                                        <h4 mat-line>Headquarters</h4>
                                        <p mat-line>
                                            1600 Amphitheatre Pkwy
                                            <br/>Mountain View, CA 94043, USA
                                        </p>
                                    </mat-list-item>
                                </mat-list>
                            </td-expansion-summary>
                            <div class="mat-padding">
                                <form class="mat-padding" layout="column">
                                    <mat-form-field floatLabel="always" flex>
                                        <input matInput placeholder="Company (disabled)" disabled value="Google" />
                                    </mat-form-field>
                                    <mat-form-field floatLabel="always" flex>
                                        <textarea matInput placeholder="Description" rows="4"></textarea>
                                    </mat-form-field>
                                </form>
                                <div layout="row" layout-margin layout-align="end center">
                                    <button mat-button class="text-upper">Cancel</button>
                                    <button mat-button color="accent" class="text-upper">Save</button>
                                </div>
                            </div>
                        </td-expansion-panel>
                    </div>
                </div>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <td-expansion-panel label="Google" sublabel="1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA" [expand]="expansion1" [disabled]="disabled" (expanded)="expandExpansion1Event()" (collapsed)="collapseExpansion1Event()">
            <td-expansion-summary>
                <mat-list>
                    <mat-list-item>
                        <mat-icon mat-list-avatar>pin_drop</mat-icon>
                        <h3 mat-line>Google</h3>
                        <h4 mat-line>Headquarters</h4>
                        <p mat-line>
                            1600 Amphitheatre Pkwy
                            <br/>Mountain View, CA 94043, USA
                        </p>
                    </mat-list-item>
                </mat-list>
            </td-expansion-summary>
            <div class="mat-padding">
                <form class="mat-padding" layout="column">
                    <mat-form-field floatLabel="always" flex>
                        <input matInput placeholder="Company (disabled)" disabled value="Google" />
                    </mat-form-field>
                    <mat-form-field floatLabel="always" flex>
                        <textarea matInput placeholder="Description" rows="4"></textarea>
                    </mat-form-field>
                </form>
                <mat-divider></mat-divider>
                <div layout="row" layout-margin layout-align="end center">
                    <button mat-button class="text-upper">Cancel</button>
                    <button mat-button color="accent" class="text-upper">Save</button>
                </div>
            </div>
        </td-expansion-panel>
        ]]>
      </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
          <![CDATA[
        this.expandCollapseExpansion1Msg = 'No expanded/collapsed detected yet';
        this.expansion1 = false;
        this.disabled = false;

        ...

        toggleExpansion1: function() {
                    if (!this.disabled) {
                this.expansion1 = !this.expansion1;
            }
        },

        toggleDisabled: function() {
                    this.disabled = !this.disabled;
        },

        expandExpansion1Event: function() {
                    this.expandCollapseExpansion1Msg = 'Expand event emitted.';
        },

        collapseExpansion1Event: function() {
                    this.expandCollapseExpansion1Msg = 'Collapse event emitted.';
        },

        ...
            ]]>
          </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Progress</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content layout="row">
                <div flex="48" class="pad-right">
                    <h3 class="mat-title">Progress Bars</h3>
                    <h4>Determinate</h4>
                    <mat-progress-bar mode="determinate" value="40"></mat-progress-bar>
                    <h4>Indeterminate</h4>
                    <mat-progress-bar mode="indeterminate"></mat-progress-bar>
                    <h4>Buffer</h4>
                    <mat-progress-bar mode="buffer" value="15" bufferValue="15"></mat-progress-bar>
                    <h4>Query</h4>
                    <mat-progress-bar mode="query"></mat-progress-bar>
                    <h4>Colors</h4>
                    <mat-progress-bar mode="indeterminate" color="primary"></mat-progress-bar>
                    <mat-progress-bar mode="indeterminate" color="accent"></mat-progress-bar>
                    <mat-progress-bar mode="indeterminate" color="warn"></mat-progress-bar>
                    <h3 class="mat-title">Usage</h3>
                    <p>HTML:</p>
                    <pre lang="html">
      <![CDATA[
                        <!-- Determinate-->
        <mat-progress-bar mode="determinate" value="40"></mat-progress-bar>

                        <!-- Indeterminate-->
        <mat-progress-bar mode="indeterminate"></mat-progress-bar>

                        <!-- Buffer-->
        <mat-progress-bar mode="buffer" value="15" bufferValue="15"></mat-progress-bar>

                        <!-- Query-->
        <mat-progress-bar mode="query"></mat-progress-bar>

                        <!-- Colors-->
        <mat-progress-bar mode="indeterminate" color="primary"></mat-progress-bar>

        <mat-progress-bar mode="indeterminate" color="accent"></mat-progress-bar>

        <mat-progress-bar mode="indeterminate" color="warn"></mat-progress-bar>
      ]]>
      </pre>
                </div>
                <div flex="48">
                    <!-- Progress circles-->
                    <h3 class="mat-title">Progress Spinner</h3>
                    <div layout="row">
                        <div>
                            <h4>Determinate</h4>
                            <mat-progress-spinner mode="determinate" value="66"></mat-progress-spinner>
                        </div>
                        <div>
                            <h4>indeterminate</h4>
                            <mat-progress-spinner mode="indeterminate"></mat-progress-spinner>
                        </div>
                        <div>
                            <h4>Spinner</h4>
                            <mat-spinner></mat-spinner>
                        </div>
                    </div>
                    <div>
                        <h4>Colors</h4>
                        <div layout="row">
                            <mat-progress-spinner mode="indeterminate" color="primary"></mat-progress-spinner>
                            <mat-progress-spinner mode="indeterminate" color="accent"></mat-progress-spinner>
                            <mat-progress-spinner mode="indeterminate" color="warn"></mat-progress-spinner>
                        </div>
                    </div>
                    <h3 class="mat-title">Usage</h3>
                    <p>HTML:</p>
                    <pre lang="html">
      <![CDATA[
                        <!-- Determinate -->
        <mat-progress-spinner mode="determinate" value="66"></mat-progress-spinner>
                        <!-- Indeterminate -->
        <mat-progress-spinner mode="indeterminate"></mat-progress-spinner>
                        <!-- Spinner -->
        <mat-spinner></mat-spinner>
                        <!-- Colors -->
        <mat-progress-spinner mode="indeterminate" color="primary"></mat-progress-spinner>
        <mat-progress-spinner mode="indeterminate" color="accent"></mat-progress-spinner>
        <mat-progress-spinner mode="indeterminate" color="warn"></mat-progress-spinner>
      ]]>
      </pre>
                </div>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Side Nav</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p>The side nav can be opened at the `start` or `end` of a container and can be displayed in `over`, `side`, or `push` mode. You can also define its width.</p>
                <button matTooltip="Open side nav" mat-raised-button color="fds-primary" (click)="sidenav.toggle()">
                    Open
                </button>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
        <![CDATA[
                    <!-- Basic Usage -->
        <mat-sidenav #sidenav mode="over" align="end" opened="false">
            ...
        </mat-sidenav>
        ]]>
        </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Slide Toggle</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="mat-title">Basic Usage</h3>
                <mat-divider></mat-divider>
                <mat-list>
                    <mat-list-item *ngFor="let system of systems">
                        <mat-slide-toggle [color]="system.color" [(ngModel)]="system.on">
                            {{system.name}}
                        </mat-slide-toggle>
                    </mat-list-item>
                </mat-list>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
        <![CDATA[
                    <!-- Basic Usage -->
        <mat-list>
            <mat-list-item *ngFor="let system of systems">
              <mat-slide-toggle [color]="system.color" [(ngModel)]="system.on">
                { {system.name} }
              </mat-slide-toggle>
            </mat-list-item>
        </mat-list>
        ]]>
        </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
          <![CDATA[
        this.systems = [{
                    name: 'Lights',
                    on: false,
                    color: 'primary',
        }, {
                    name: 'Surround Sound',
                    on: true,
                    color: 'accent',
        }, {
                    name: 'T.V.',
                    on: true,
                    color: 'warn',
        }, ];
            ]]>
          </pre>
                <h3 class="mat-title">Usage within Forms</h3>
                <form>
                    <mat-list>
                        <mat-list-item>
                            <mat-slide-toggle color="accent" [(ngModel)]="house.lockHouse" name="lockHouse">
                                Lock?
                            </mat-slide-toggle>
                            <mat-icon *ngIf="house.lockHouse" class="pad-right-sm">lock</mat-icon>
                        </mat-list-item>
                        <mat-list-item>
                            <mat-slide-toggle disabled>
                                I am disabled.
                            </mat-slide-toggle>
                        </mat-list-item>
                    </mat-list>
                </form>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
        <![CDATA[
                    <!-- Usage within Forms -->
        <form>
            <mat-list>
                <mat-list-item>
                    <mat-slide-toggle color="accent" [(ngModel)]="house.lockHouse" name="lockHouse">
                        Lock?
                    </mat-slide-toggle>
                    <mat-icon *ngIf="house.lockHouse" class="pad-right-sm">lock</mat-icon>
                </mat-list-item>
                <mat-list-item>
                    <mat-slide-toggle disabled>
                    I am disabled.
                </mat-slide-toggle>
                </mat-list-item>
            </mat-list>
        </form>
        ]]>
        </pre>
                <p>Javascript:</p>
                <pre lang="javascript">
          <![CDATA[
        this.house = {
                    lockHouse: false,
        };
            ]]>
          </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm">Slider</mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="mat-title">Horizontal Slider</h3>
                <mat-slider min="1" max="5" thumbLabel tickInterval="1" value="2" color="primary"></mat-slider>
                <mat-slider step="5" thumbLabel tickInterval="5" value="20" color="accent"></mat-slider>
                <mat-slider thumbLabel tick-interval="auto" value="2" color="warn"></mat-slider>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <mat-slider min="1" max="5" thumbLabel tickInterval="1" value="2" color="primary"></mat-slider>
        <mat-slider step="5" thumbLabel tickInterval="5" value="20" color="accent"></mat-slider>
        <mat-slider thumbLabel tick-interval="auto" value="2" color="warn"></mat-slider>
        ]]>
      </pre>
                <h3 class="mat-title">Vertical Slider</h3>
                <mat-slider vertical min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <mat-slider vertical min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
        ]]>
      </pre>
                <h3 class="mat-title">Inverted Slider</h3>
                <mat-slider invert min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
                <h3 class="mat-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <mat-slider invert min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
    </div>
</mat-sidenav-container>
