<!--
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" id="Typography">Typography <mat-icon class="link-to-component" routerLink="/" fragment="Typography">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <p class="mat-body-1">FDS provides typography CSS classes you can use to create visual consistency across your application. Optionally style tags with the classes shown below:</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">Display 4</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-3</code>
                        <span class="mat-display-3">Display 3</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-2</code>
                        <span class="mat-display-2">Display 2</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-display-1</code>
                        <span class="mat-display-1">Display 1</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-headline</code>
                        <span class="mat-headline">Headline</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.md-title</code>
                        <span class="md-title">Title</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.md-subhead</code>
                        <span class="md-subhead">Subhead</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.link</code>
                        <span class="link">Link</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-body-1</code>
                        <span class="mat-body-1">Body 1</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-body-2</code>
                        <span class="mat-body-2">Body 2</span>
                    </div>
                    <div layout="row" layout-align="start center">
                        <code flex="15">.mat-caption</code>
                        <span class="mat-caption">Caption</span>
                    </div>
                </div>
                <h3 class="md-title">Usage</h3>
                <p>HTML:</p>
    <pre lang="html">
    <![CDATA[
        <span class="mat-display-4">Display 4</span>
        <span class="mat-display-3">Display 3</span>
        <span class="mat-display-2">Display 2</span>
        <span class="mat-display-1">Display 1</span>
        <span class="mat-headline">Headline</span>
        <span class="md-title">Title</span>
        <span class="md-subhead">Subhead</span>
        <span class="link">Link</span>
        <span class="mat-body-1">Body 1</span>
        <span class="mat-body-2">Body 2</span>
        <span class="mat-caption">Caption</span>
    ]]>
    </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm" id="RaisedButtons">Raised Buttons <mat-icon class="link-to-component" routerLink="/" fragment="RaisedButtons">link</mat-icon></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="md-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" id="FlatButtons">Flat Buttons <mat-icon class="link-to-component" routerLink="/" fragment="FlatButtons">link</mat-icon></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="md-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" id="FabButtons">Fab Buttons <mat-icon class="link-to-component" routerLink="/" fragment="FabButtons">link</mat-icon></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="md-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" id="ButtonToggles">Button Toggles <mat-icon class="link-to-component" routerLink="/" fragment="ButtonToggles">link</mat-icon></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">
                        general
                    </mat-button-toggle>
                    <div fxLayout="row" class="pad-left-md"></div>
                    <mat-button-toggle value="users">
                        Users
                    </mat-button-toggle>
                    <div fxLayout="row" class="pad-left-md"></div>
                    <mat-button-toggle value="workflow">
                        Workflow
                    </mat-button-toggle>
                </mat-button-toggle-group>
                <h3 class="md-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">
                general
            </mat-button-toggle>
            <div fxLayout="row" class="pad-left-md"></div>
            <mat-button-toggle value="users">
                Users
            </mat-button-toggle>
            <div fxLayout="row" class="pad-left-md"></div>
            <mat-button-toggle value="workflow">
                Workflow
            </mat-button-toggle>
        </mat-button-toggle-group>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm" id="Input">Input <mat-icon class="link-to-component" routerLink="/" fragment="Input">link</mat-icon></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="md-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" id="Tabs">Tabs <mat-icon class="link-to-component" routerLink="/" fragment="Tabs">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-tab-group dynamicHeight color="accent">
                    <mat-tab>
                        <ng-template mat-tab-label>One</ng-template>
                        <h3 class="md-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="md-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="md-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <mat-tab-group dynamicHeight color="accent">
          <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" id="Stepper">Stepper <mat-icon class="link-to-component" routerLink="/" fragment="Stepper">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <td-steps mode="vertical">
                    <td-step label="Version 1"
                             sublabel="by Admin"
                             [active]="true">
                        <div fxLayout="column" fxLayoutAlign="space-between stretch">
                            <div fxLayout="row" class="md-body-2">
                                Comments go here
                            </div>
                            <div fxLayout="row" class="mat-caption">
                                An hour ago
                            </div>
                        </div>
                    </td-step>
                    <td-step label="Version 2"
                             sublabel="by Admin">
                        <div fxLayout="column" fxLayoutAlign="space-between stretch">
                            <div fxLayout="row" class="md-body-2">
                                Comments go here
                            </div>
                            <div fxLayout="row" class="mat-caption">
                                A day ago
                            </div>
                        </div>
                    </td-step>
                </td-steps>
                <h3 class="md-title">Usage</h3>
                <p>HTML:</p>
                <pre lang="html">
      <![CDATA[
        <td-steps mode="vertical">
            <td-step label="Version 1"
                     sublabel="by Admin"
                     [active]="true">
                <div fxLayout="column" fxLayoutAlign="space-between stretch">
                    <div fxLayout="row" class="md-body-2">
                        Description goes here
                    </div>
                    <div fxLayout="row" class="mat-caption">
                        An hour ago
                    </div>
                </div>
            </td-step>
            <td-step label="Version 2"
                     sublabel="by Admin">
                <div fxLayout="column" fxLayoutAlign="space-between stretch">
                    <div fxLayout="row" class="md-body-2">
                        Description goes here
                    </div>
                    <div fxLayout="row" class="mat-caption">
                        A day ago
                    </div>
                </div>
            </td-step>
        </td-steps>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm" id="Autocomplete">Autocomplete <mat-icon class="link-to-component" routerLink="/" fragment="Autocomplete">link</mat-icon></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="md-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" id="Filter">Filter <mat-icon class="link-to-component" routerLink="/" fragment="Filter">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="md-title">Autocomplete with chips and no custom inputs</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight color="accent">
                    <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="md-title">Autocomplete with custom inputs</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight color="accent">
                    <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="md-title">Demo allowing custom inputs for tags</h3>
                <mat-divider></mat-divider>
                <mat-tab-group mat-stretch-tabs dynamicHeight color="accent">
                    <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" id="SearchableExpansionPanels">Searchable/Filterable Expansion Panels <mat-icon class="link-to-component" routerLink="/" fragment="SearchableExpansionPanels">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <mat-tab-group mat-stretch-tabs color="accent">
                    <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="md-title text-caps">{{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="text-upper">Versions</span> {{droplet.versions.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                                 fxLayoutAlign="space-between start">
                                                <span class="text-upper">Flows</span> {{droplet.flows.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                                 fxLayoutAlign="space-between start">
                                                <span class="text-upper">Extensions</span> {{droplet.extensions.length}}
                                            </div>
                                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                                 fxLayoutAlign="space-between start">
                                                <span class="text-upper">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="text-upper">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="text-upper">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="md-title text-caps">{ {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="text-upper">Versions</span> { {droplet.versions.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                 fxLayoutAlign="space-between start">
                                <span class="text-upper">Flows</span> { {droplet.flows.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                 fxLayoutAlign="space-between start">
                                <span class="text-upper">Extensions</span> { {droplet.extensions.length} }
                            </div>
                            <div class="pad-right-xxl pad-left-xxl" fxLayout="column"
                                 fxLayoutAlign="space-between start">
                                <span class="text-upper">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="text-upper">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="text-upper">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" id="Table">Table <mat-icon class="link-to-component" routerLink="/" fragment="Table">link</mat-icon></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 color="accent">
                    <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" id="Checkboxes">Checkbox <mat-icon class="link-to-component" routerLink="/" fragment="Checkboxes">link</mat-icon></mat-card-title>
                                <mat-divider></mat-divider>
                                <mat-card-content>
                                <h3 class="md-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="md-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="md-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="md-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" id="Radios">Radios <mat-icon class="link-to-component" routerLink="/" fragment="Radios">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content layout="row">
                <div flex="48" class="pad-right">
                    <!-- Basic Radios -->
                    <h3 class="md-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="md-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="md-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="md-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" id="Tooltips">Tooltips <mat-icon class="link-to-component" routerLink="/" fragment="Tooltips">link</mat-icon></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="md-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" id="Panels">Panels <mat-icon class="link-to-component" routerLink="/" fragment="Panels">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="md-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="md-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="md-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 color="accent">
                            <mat-tab>
                                <ng-template mat-tab-label>One</ng-template>
                                <h3 class="md-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="md-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="md-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 color="accent">
                    <mat-tab>
                        <ng-template mat-tab-label>One</ng-template>
                        <h3 class="md-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="md-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" id="Select">Select <mat-icon class="link-to-component" routerLink="/" fragment="Select">link</mat-icon></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="md-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" id="Menus">Menus (dropdowns) <mat-icon class="link-to-component" routerLink="/" fragment="Menus">link</mat-icon></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]="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>
                <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>
                <h3 class="md-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]="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>
        <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>
        ]]>
      </pre>
            </mat-card-content>
        </mat-card>
        <mat-card>
            <mat-card-title class="pad-bottom-sm" id="Dialog">Dialog <mat-icon class="link-to-component" routerLink="/" fragment="Dialog">link</mat-icon></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="md-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" id="SimpleDialogs">Simple Dialogs <mat-icon class="link-to-component" routerLink="/" fragment="SimpleDialogs">link</mat-icon></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="md-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" id="SnackBars">Snack Bars <mat-icon class="link-to-component" routerLink="/" fragment="SnackBars">link</mat-icon></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="md-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" id="ExpansionPanels">Expansion Panels <mat-icon class="link-to-component" routerLink="/" fragment="ExpansionPanels">link</mat-icon></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="md-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" id="Progress">Progress <mat-icon class="link-to-component" routerLink="/" fragment="Progress">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content layout="row">
                <div flex="48" class="pad-right">
                    <h3 class="md-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="md-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="md-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="md-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" id="SideNav">Side Nav <mat-icon class="link-to-component" routerLink="/" fragment="SideNav">link</mat-icon></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="md-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" id="SlideToggle">Slide Toggle <mat-icon class="link-to-component" routerLink="/" fragment="SlideToggle">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="md-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="md-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="md-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="md-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" id="Slider">Slider <mat-icon class="link-to-component" routerLink="/" fragment="Slider">link</mat-icon></mat-card-title>
            <mat-divider></mat-divider>
            <mat-card-content>
                <h3 class="md-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="md-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="md-title">Vertical Slider</h3>
                <mat-slider vertical min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
                <h3 class="md-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="md-title">Inverted Slider</h3>
                <mat-slider invert min="1" max="100" thumbLabel tickInterval="10" value="2"></mat-slider>
                <h3 class="md-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>
