You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sc...@apache.org on 2018/03/24 14:23:20 UTC
[3/3] nifi-fds git commit: install nifi-fds module and update
systemjs paths
install nifi-fds module and update systemjs paths
Project: http://git-wip-us.apache.org/repos/asf/nifi-fds/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-fds/commit/85aa932e
Tree: http://git-wip-us.apache.org/repos/asf/nifi-fds/tree/85aa932e
Diff: http://git-wip-us.apache.org/repos/asf/nifi-fds/diff/85aa932e
Branch: refs/heads/gh-pages
Commit: 85aa932e1377be43fe563f95cab358c01baa869f
Parents: 2d47c86
Author: Scott Aslan <sc...@gmail.com>
Authored: Sat Mar 24 10:22:44 2018 -0400
Committer: Scott Aslan <sc...@gmail.com>
Committed: Sat Mar 24 10:22:44 2018 -0400
----------------------------------------------------------------------
NOTICE | 5 +
index.html | 4 +-
node_modules/nifi-fds/Gruntfile.js | 68 ++++++
node_modules/nifi-fds/LICENSE | 240 +++++++++++++++++++
node_modules/nifi-fds/NOTICE | 5 +
node_modules/nifi-fds/README.md | 128 ++++++++++
node_modules/nifi-fds/karma-test-shim.js | 112 +++++++++
node_modules/nifi-fds/karma.conf.js | 134 +++++++++++
node_modules/nifi-fds/package.json | 97 ++++++++
.../platform/core/common/fds-common.module.js | 48 ++++
.../platform/core/common/fds.animations.js | 133 ++++++++++
.../core/common/services/fds-storage.service.js | 219 +++++++++++++++++
.../common/services/fds-storage.service.spec.js | 61 +++++
.../core/common/styles/_basicElements.scss | 130 ++++++++++
.../core/common/styles/_buttonToggles.scss | 98 ++++++++
.../platform/core/common/styles/_buttons.scss | 214 +++++++++++++++++
.../core/common/styles/_checkboxes.scss | 85 +++++++
.../platform/core/common/styles/_chips.scss | 69 ++++++
.../core/common/styles/_expansionPanels.scss | 62 +++++
.../core/common/styles/_globalVars.scss | 69 ++++++
.../core/common/styles/_helperClasses.scss | 85 +++++++
.../platform/core/common/styles/_inputs.scss | 109 +++++++++
.../platform/core/common/styles/_links.scss | 35 +++
.../platform/core/common/styles/_menus.scss | 118 +++++++++
.../platform/core/common/styles/_modals.scss | 23 ++
.../platform/core/common/styles/_panels.scss | 54 +++++
.../platform/core/common/styles/_radios.scss | 56 +++++
.../platform/core/common/styles/_sideNav.scss | 20 ++
.../platform/core/common/styles/_stepper.scss | 20 ++
.../platform/core/common/styles/_tables.scss | 118 +++++++++
.../platform/core/common/styles/_tabs.scss | 41 ++++
.../platform/core/common/styles/_tooltips.scss | 24 ++
.../styles/css/fluid-design-system.min.css | 3 +
.../styles/css/fluid-design-system.min.css.gz | Bin 0 -> 3176 bytes
.../styles/css/fluid-design-system.min.css.map | 27 +++
.../core/common/styles/fluid-design-system.scss | 35 +++
.../core/dialogs/_fds-dialog-component.scss | 21 ++
.../confirm-dialog.component.html | 45 ++++
.../confirm-dialog/confirm-dialog.component.js | 64 +++++
.../confirm-dialog.component.spec.js | 50 ++++
.../core/dialogs/fds-dialog.component.html | 29 +++
.../core/dialogs/fds-dialog.component.js | 85 +++++++
.../core/dialogs/fds-dialogs.component.spec.js | 32 +++
.../platform/core/dialogs/fds-dialogs.module.js | 87 +++++++
.../core/dialogs/services/dialog.service.js | 134 +++++++++++
.../platform/core/fluid-design-system.module.js | 155 ++++++++++++
.../snackbars/coaster/_coaster.component.scss | 63 +++++
.../snackbars/coaster/coaster.component.html | 33 +++
.../core/snackbars/coaster/coaster.component.js | 70 ++++++
.../snackbars/coaster/coaster.component.spec.js | 32 +++
.../core/snackbars/fds-snackbar.component.html | 29 +++
.../core/snackbars/fds-snackbar.component.js | 85 +++++++
.../snackbars/fds-snackbar.component.spec.js | 32 +++
.../core/snackbars/fds-snackbars.module.js | 87 +++++++
.../core/snackbars/services/snackbar.service.js | 132 ++++++++++
.../platform/core/theming/_all-theme.scss | 36 +++
.../platform/systemjs-angular-loader.js | 66 +++++
.../nifi-fds/platform/systemjs.spec.config.js | 106 ++++++++
package-lock.json | 23 ++
webapp/systemjs.config.js | 18 +-
60 files changed, 4252 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..50b77ff
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache NiFi Fluid Design System
+Copyright 2014-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index a821920..d77ea0f 100644
--- a/index.html
+++ b/index.html
@@ -18,12 +18,12 @@
<html>
<head>
<title>FDS</title>
- <base href='/nifi-fds/'>
+ <base href='/'>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
<link rel="stylesheet" href="node_modules/@covalent/core/common/platform.css">
- <link rel="stylesheet" href='node_modules/fluid-design-system/platform/core/common/styles/css/fluid-design-system.min.css'/>
+ <link rel="stylesheet" href='node_modules/nifi-fds/platform/core/common/styles/css/fluid-design-system.min.css'/>
<link rel="stylesheet" href='webapp/css/fds-demo.min.css'/>
<link rel='stylesheet' href='node_modules/font-awesome/css/font-awesome.css'/>
</head>
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/Gruntfile.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/Gruntfile.js b/node_modules/nifi-fds/Gruntfile.js
new file mode 100644
index 0000000..f4f8ae7
--- /dev/null
+++ b/node_modules/nifi-fds/Gruntfile.js
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+
+module.exports = function (grunt) {
+ // load all grunt tasks matching the ['grunt-*', '@*/grunt-*'] patterns
+ require('load-grunt-tasks')(grunt);
+
+ grunt.initConfig({
+ sass: {
+ options: {
+ outputStyle: 'compressed',
+ sourceMap: true
+ },
+ minifyFds: {
+ files: [{
+ './platform/core/common/styles/css/fluid-design-system.min.css': ['./platform/core/common/styles/fluid-design-system.scss']
+ }]
+ }
+ },
+ compress: {
+ options: {
+ mode: 'gzip'
+ },
+ fdsStyles: {
+ files: [{
+ expand: true,
+ src: ['./platform/core/common/styles/css/fluid-design-system.min.css'],
+ dest: './',
+ ext: '.min.css.gz'
+ }]
+ }
+ },
+ bump: {
+ options: {
+ files: ['package.json'],
+ updateConfigs: [],
+ commit: true,
+ commitMessage: 'Release FDS-%VERSION%',
+ commitFiles: ['-a'],
+ createTag: true,
+ tagName: 'FDS-%VERSION%',
+ tagMessage: 'Version FDS-%VERSION%',
+ push: true,
+ pushTo: 'origin',
+ gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
+ globalReplace: false,
+ prereleaseName: 'RC',
+ metadata: '',
+ regExp: false
+ }
+ }
+ });
+ grunt.registerTask('compile-fds-styles', ['sass:minifyFds', 'compress:fdsStyles']);
+};
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/LICENSE b/node_modules/nifi-fds/LICENSE
new file mode 100644
index 0000000..c7c91cd
--- /dev/null
+++ b/node_modules/nifi-fds/LICENSE
@@ -0,0 +1,240 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+This product bundles 'Apache NiFi Registry' source code which is available under an ASLv2 license.
+
+ Copyright (c) 2018 Apache NiFi Registry https://nifi.apache.org/registry.html
+
+ Licensed 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.
+
+This product bundles 'Angular Quickstart' which is available under an MIT license.
+
+ Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/NOTICE
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/NOTICE b/node_modules/nifi-fds/NOTICE
new file mode 100644
index 0000000..50b77ff
--- /dev/null
+++ b/node_modules/nifi-fds/NOTICE
@@ -0,0 +1,5 @@
+Apache NiFi Fluid Design System
+Copyright 2014-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/README.md
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/README.md b/node_modules/nifi-fds/README.md
new file mode 100644
index 0000000..5ac1f90
--- /dev/null
+++ b/node_modules/nifi-fds/README.md
@@ -0,0 +1,128 @@
+# Apache NiFi Fluid Design System
+
+The Apache NiFi Fluid Design System module is an atomic reusable platform providing consistent set of UI/UX components for open source friendly web applications to consume. Checkout the demo web application on the `gh-pages` branch to see a complete example of an Angular application that leverages this NGModule. This demo application allows users to interact with and provides sample code for the available UI/UX components: [https://apache.github.io/nifi-fds/](https://apache.github.io/nifi-fds/).
+
+#### npm
+
+For developers not interested in building the FDS NgModule you can use **npm** to install the distribution files.
+
+```bash
+npm install nifi-fds
+```
+
+## Setup
+
+Import the **Fluid Design System** NgModule into your angular application:
+
+```javascript
+var fdsCore = require('fluid-design-system/core');
+AppModule.prototype = {
+ constructor: AppModule
+};
+
+AppModule.annotations = [
+ new ngCore.NgModule({
+ imports: [
+ fdsCore,
+ ...
+ ],
+ ...
+})
+...
+```
+
+## Styles, Icons and Theming
+
+A typical theme file will look something like this:
+
+```javascript
+@import '../../platform/core/theming/all-theme';
+
+$primaryColor: #9E737D;
+$primaryColorHover: #915D69;
+$accentColor: #d0dbe0;
+$accentColorHover: #CCCCCC;
+
+// Include the base styles for Angular Material core. We include this here so that you only
+// have to load a single css file for Angular Material in your app.
+@include mat-core;
+
+// Define the palettes
+$fds-base-palette: (50: #89df79, 100: $primaryColorHover, 200: #65d550, 300: #53d03b, 400: #46c32f, 500: $primaryColor, 600: $primaryColor, 700: #89df79, 800: #29701b, 900: #215c16, A100: #9be48d, A200: #ade9a2, A400: #bfedb6, A700: #1a4711, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-accent-palette: (50: #89df79, 100: $accentColorHover, 200: #65d550, 300: #53d03b, 400: #46c32f, 500: $accentColor, 600: $accentColor, 700: #89df79, 800: #29701b, 900: #215c16, A100: #9be48d, A200: #ade9a2, A400: #bfedb6, A700: #1a4711, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-warn-palette: (50: #81410f, 100: #D14A50, 200: #af5814, 300: #c66317, 400: #dd6f19, 500: $warnColor, 600: $warnColor, 700: #eea66e, 800: #f1b485, 900: #f4c29b, A100: #ec9857, A200: #89df79, A400: #89df79, A700: #f6d0b2, contrast: (50: $black-87-opacity, 100: $black-87-opacity, 200: $black-87-opacity, 300: white, 400: white, 500: $white-87-opacity, 600: $white-87-opacity, 700: $white-87-opacity, 800: $white-87-opacity, 900: $white-87-opacity, A100: $black-87-opacity, A200: white, A400: white, A700: $white-87-opacity));
+$fds-primary: mat-palette($fds-base-palette, 500, 100, 500);
+$fds-accent: mat-palette($fds-accent-palette, 500, 100, 500);
+$fds-warn: mat-palette($fds-warn-palette, 500, 100, 500);
+
+// Define the theme (Optionally specify a default, lighter, and darker hue.)
+$fds-theme: mat-light-theme($fds-primary, $fds-accent, $fds-warn);
+
+// FDS theme mixin
+@include fds-theme($fds-theme);
+```
+
+NiFi Fluid Design System UI/UX Platform comes with a base CSS file `node_modules/fluid-design-system/core/common/styles/css/fluid-design-system.min.css` (includes icons).
+
+## Building
+
+Developers can easily build this project using **npm**.
+
+First install or update your local project's **npm** tools:
+
+```bash
+npm install
+```
+
+Next run:
+
+```bash
+npm run build
+```
+
+## Testing
+
+Developers can easily test this project using **npm**.
+
+```bash
+npm test
+```
+
+Or, during development:
+
+```bash
+npm run test:dev
+```
+
+## Release Managment
+
+For developers with permissions releasing a new version of the NiFi Fluid Design System is simple with [grunt bump](https://github.com/vojtajina/grunt-bump)
+
+## Running the demo locally
+
+For developers that would like to contribute to the demo please checkout the `gh-pages` branch:
+
+```bash
+git checkout gh-pages
+```
+
+Next, you will need to update the base url. To do this simply edit the index.html file on line 21:
+
+```bash
+<base href='/fluid-design-system/'>
+```
+
+should be:
+
+```bash
+<base href='/'>
+```
+
+Finally, start the application:
+
+```bash
+npm start
+```
+
+The demo application should now be availalbe at: [http://127.0.0.1:8080/](http://127.0.0.1:8080/).
+
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/karma-test-shim.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/karma-test-shim.js b/node_modules/nifi-fds/karma-test-shim.js
new file mode 100644
index 0000000..eeeb18d
--- /dev/null
+++ b/node_modules/nifi-fds/karma-test-shim.js
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+// /*global jasmine, __karma__, window*/
+Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing.
+
+// Uncomment to get full stacktrace output. Sometimes helpful, usually not.
+// Error.stackTraceLimit = Infinity; //
+
+jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
+
+// builtPaths: root paths for output ("built") files
+// get from karma.config.js, then prefix with '/base/'
+var builtPaths = (__karma__.config.builtPaths)
+ .map(function (p) {
+ return '/base/' + p;
+ });
+
+__karma__.loaded = function () {
+};
+
+function isJsFile(path) {
+ return path.slice(-3) == '.js';
+}
+
+function isSpecFile(path) {
+ return /\.spec\.(.*\.)?js$/.test(path);
+}
+
+// Is a "built" file if is JavaScript file in one of the "built" folders
+function isBuiltFile(path) {
+ return isJsFile(path) &&
+ builtPaths.reduce(function (keep, bp) {
+ return keep || (path.substr(0, bp.length) === bp);
+ }, false);
+}
+
+var allSpecFiles = Object.keys(window.__karma__.files)
+ .filter(isSpecFile)
+ .filter(isBuiltFile);
+
+System.config({
+ // Base URL for System.js calls. 'base/' is where Karma serves files from.
+ baseURL: 'base',
+
+ // Map the angular testing umd bundles
+ map: {
+ '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js',
+ '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js',
+ '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js',
+ '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
+ '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
+ '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js',
+ '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js',
+ '@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js'
+ }
+});
+
+System.import('platform/systemjs.spec.config.js')
+ .then(initTestBed)
+ .then(initTesting);
+
+/** Optional SystemJS configuration extras. Keep going w/o it */
+function importSystemJsExtras() {
+ return System.import('platform/systemjs.config.extras.js')
+ .catch(function (reason) {
+ console.log(
+ 'Warning: System.import could not load the optional "systemjs.config.extras.js". Did you omit it by accident? Continuing without it.'
+ );
+ console.log(reason);
+ });
+}
+
+function initTestBed() {
+ return Promise.all([
+ System.import('@angular/core/testing'),
+ System.import('@angular/platform-browser-dynamic/testing')
+ ])
+
+ .then(function (providers) {
+ var coreTesting = providers[0];
+ var browserTesting = providers[1];
+
+ coreTesting.TestBed.initTestEnvironment(
+ browserTesting.BrowserDynamicTestingModule,
+ browserTesting.platformBrowserDynamicTesting());
+ })
+}
+
+// Import all spec files and start karma
+function initTesting() {
+ return Promise.all(
+ allSpecFiles.map(function (moduleName) {
+ return System.import(moduleName);
+ })
+ )
+ .then(__karma__.start, __karma__.error);
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/karma.conf.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/karma.conf.js b/node_modules/nifi-fds/karma.conf.js
new file mode 100644
index 0000000..4b0f692
--- /dev/null
+++ b/node_modules/nifi-fds/karma.conf.js
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+
+module.exports = function (config) {
+
+ var appBase = 'platform/'; // app JS and map files
+
+ config.set({
+ basePath: '',
+ browserNoActivityTimeout: 9999999, //default 10000
+ browserDisconnectTimeout: 999999, // default 2000
+ browserDisconnectTolerance: 1, // default 0
+ captureTimeout: 999999,
+ frameworks: ['jasmine'],
+ customLaunchers: {
+ Chrome_travis_ci: {
+ base: 'ChromeHeadless',
+ flags: ['--no-sandbox']
+ }
+ },
+ plugins: [
+ require('karma-jasmine'),
+ require('karma-chrome-launcher'),
+ require('karma-jasmine-html-reporter'),
+ require('karma-spec-reporter'),
+ require('karma-coverage')
+ ],
+
+ client: {
+ builtPaths: [appBase], // add more spec base paths as needed
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
+ },
+
+ files: [
+ // System.js for module loading
+ 'node_modules/systemjs/dist/system.src.js',
+
+ // Polyfills
+ 'node_modules/core-js/client/shim.js',
+
+ // zone.js
+ 'node_modules/zone.js/dist/zone.js',
+ 'node_modules/zone.js/dist/long-stack-trace-zone.js',
+ 'node_modules/zone.js/dist/proxy.js',
+ 'node_modules/zone.js/dist/sync-test.js',
+ 'node_modules/zone.js/dist/jasmine-patch.js',
+ 'node_modules/zone.js/dist/async-test.js',
+ 'node_modules/zone.js/dist/fake-async-test.js',
+
+ // RxJs
+ {pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false},
+ {pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
+
+ // Paths loaded via module imports:
+ {pattern: 'node_modules/systemjs/**/*.js.map', included: false, watched: false},
+ {pattern: 'node_modules/@angular/**/*.js', included: false, watched: false},
+ {pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false},
+ {pattern: 'node_modules/jquery/**/*.js', included: false, watched: false},
+ {pattern: 'node_modules/systemjs-plugin-text/text.js', included: false, watched: false},
+
+ {pattern: appBase + 'systemjs.spec.config.js', included: false, watched: false},
+ 'karma-test-shim.js', // optionally extend SystemJS mapping e.g., with barrels
+
+ // Include the Fluid Design System templates in the test suite.
+ {
+ pattern: 'platform/core/**/*.html',
+ included: true,
+ watched: true,
+ served: true
+ },
+
+ // Paths for debugging with source maps in dev tools
+ {pattern: appBase + '**/*.css.map', included: false, watched: false},
+ {pattern: appBase + '**/*.js', included: false, watched: false}
+ ],
+
+ // Proxied base paths for loading assets
+ proxies: {
+ // required for modules fetched by SystemJS
+ '/base/fds/node_modules/': '/base/node_modules/',
+ '/base/systemjs-angular-loader.js': '/base/platform/systemjs-angular-loader.js',
+ '/base/fds/': '/base/platform/'
+ },
+
+ exclude: [],
+ preprocessors: {
+ 'platform/**/!(*spec|*mock|*stub|*config|*extras|).js': 'coverage'
+ },
+ reporters: ['kjhtml', 'spec', 'coverage'],
+ coverageReporter: {
+ type: 'html',
+ dir: 'coverage/'
+ },
+ specReporter: {
+ failFast: false
+ },
+ port: 9876,
+ colors: true,
+ logLevel: config.LOG_INFO,
+ autoWatch: true,
+ browsers: ['Chrome'],
+ singleRun: false
+ });
+
+ if (process.env.TRAVIS) {
+ config.set({
+ browsers: ['Chrome_travis_ci']
+ });
+
+ // Override base config
+ config.set({
+ singleRun: true,
+ autoWatch: false,
+ reporters: ['spec', 'coverage'],
+ specReporter: {
+ failFast: true
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/package.json
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/package.json b/node_modules/nifi-fds/package.json
new file mode 100644
index 0000000..72296e0
--- /dev/null
+++ b/node_modules/nifi-fds/package.json
@@ -0,0 +1,97 @@
+{
+ "_from": "git://github.com/apache/nifi-fds.git",
+ "_id": "nifi-fds@0.0.1",
+ "_inBundle": false,
+ "_location": "/nifi-fds",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "git",
+ "raw": "git://github.com/apache/nifi-fds.git",
+ "rawSpec": "git://github.com/apache/nifi-fds.git",
+ "saveSpec": "git://github.com/apache/nifi-fds.git",
+ "fetchSpec": "git://github.com/apache/nifi-fds.git",
+ "gitCommittish": null
+ },
+ "_requiredBy": [
+ "#USER",
+ "/"
+ ],
+ "_resolved": "git://github.com/apache/nifi-fds.git#3567be34f6b26acd4b4b6e341b04afa44b054015",
+ "_spec": "git://github.com/apache/nifi-fds.git",
+ "_where": "/Users/scottyaslan/Development/nifi-fds",
+ "author": {
+ "name": "Scott Aslan"
+ },
+ "bugs": {
+ "url": "https://github.com/apache/nifi-fds/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Scott Aslan",
+ "email": "scottyaslan@gmail.com"
+ }
+ ],
+ "dependencies": {
+ "@angular/animations": "4.4.6",
+ "@angular/cdk": "2.0.0-beta.12",
+ "@angular/common": "4.4.6",
+ "@angular/compiler": "4.4.6",
+ "@angular/core": "4.4.6",
+ "@angular/flex-layout": "2.0.0-beta.9",
+ "@angular/forms": "4.4.6",
+ "@angular/http": "4.4.6",
+ "@angular/material": "2.0.0-beta.12",
+ "@angular/platform-browser": "4.4.6",
+ "@angular/platform-browser-dynamic": "4.4.6",
+ "@angular/router": "4.4.6",
+ "jquery": "3.2.1",
+ "roboto-fontface": "0.7.0",
+ "rxjs": "5.4.3",
+ "systemjs": "0.20.17",
+ "systemjs-plugin-text": "0.0.11",
+ "zone.js": "0.8.7"
+ },
+ "deprecated": false,
+ "description": "The Apache NiFi Fluid Design System module is an atomic reusable platform providing consistent set of UI/UX components for open source friendly web applications to consume.",
+ "devDependencies": {
+ "grunt": "0.4.5",
+ "grunt-bump": "^0.8.0",
+ "grunt-cli": "1.2.0",
+ "grunt-contrib-compress": "1.4.3",
+ "grunt-sass": "2.0.0",
+ "jasmine-core": "2.8.0",
+ "karma": "1.7.1",
+ "karma-chrome-launcher": "2.2.0",
+ "karma-cli": "1.0.1",
+ "karma-coverage": "1.1.1",
+ "karma-jasmine": "1.1.1",
+ "karma-jasmine-html-reporter": "0.2.2",
+ "karma-spec-reporter": "0.0.31",
+ "load-grunt-tasks": "3.5.2",
+ "protractor": "4.0.14"
+ },
+ "homepage": "https://github.com/apache/nifi-fds#readme",
+ "keywords": [
+ "fluid design system",
+ "angular",
+ "material",
+ "material design",
+ "components",
+ "reusable",
+ "covalent"
+ ],
+ "license": "Apache License, Version 2.0",
+ "module": "./platform/core/fluid-design-system.module.js",
+ "name": "nifi-fds",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/apache/nifi-fds.git"
+ },
+ "scripts": {
+ "build": "./node_modules/grunt-cli/bin/grunt compile-fds-styles",
+ "test": "./node_modules/protractor/bin/webdriver-manager update --gecko false && karma start karma.conf.js --single-run",
+ "test:dev": "./node_modules/protractor/bin/webdriver-manager update --gecko false && karma start karma.conf.js"
+ },
+ "version": "0.0.1"
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/fds-common.module.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/fds-common.module.js b/node_modules/nifi-fds/platform/core/common/fds-common.module.js
new file mode 100644
index 0000000..32b5512
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/fds-common.module.js
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+var ngCore = require('@angular/core');
+var fdsStorageServiceModule = require('@fluid-design-system/storage-service');
+
+/**
+ * FdsCommonsModule constructor.
+ *
+ * @constructor
+ */
+function FdsCommonsModule() {
+
+};
+
+FdsCommonsModule.prototype = {
+ constructor: FdsCommonsModule
+};
+
+FdsCommonsModule.annotations = [
+ new ngCore.NgModule({
+ imports: [],
+ declarations: [],
+ exports: [],
+ providers: [
+ fdsStorageServiceModule.FdsStorageService
+ ]
+ })
+];
+
+module.exports = {
+ FdsCommonsModule: FdsCommonsModule,
+ FdsStorageService: fdsStorageServiceModule.FdsStorageService
+};
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/fds.animations.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/fds.animations.js b/node_modules/nifi-fds/platform/core/common/fds.animations.js
new file mode 100644
index 0000000..90cb660
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/fds.animations.js
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+
+var ngAnimate = require('@angular/animations');
+
+/**
+ * FdsAnimations constructor.
+ *
+ * @constructor
+ */
+function FdsAnimations() {
+};
+
+FdsAnimations.prototype = {
+ constructor: FdsAnimations,
+
+ /**
+ * Fade animation
+ */
+ fadeAnimation: ngAnimate.trigger('routeAnimation', [
+ ngAnimate.state('*',
+ ngAnimate.style({
+ opacity: 1
+ })
+ ),
+ ngAnimate.transition(':enter', [
+ ngAnimate.style({
+ opacity: 0
+ }),
+ ngAnimate.animate('0.5s ease-in')
+ ]),
+ ngAnimate.transition(':leave', [
+ ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+ opacity: 0
+ }))
+ ])
+ ]),
+
+ /**
+ * Slide in from the left animation
+ */
+ slideInLeftAnimation: ngAnimate.trigger('routeAnimation', [
+ ngAnimate.state('*',
+ ngAnimate.style({
+ opacity: 1,
+ transform: 'translateX(0)'
+ })
+ ),
+ ngAnimate.transition(':enter', [
+ ngAnimate.style({
+ opacity: 0,
+ transform: 'translateX(-100%)'
+ }),
+ ngAnimate.animate('0.5s ease-in')
+ ]),
+ ngAnimate.transition(':leave', [
+ ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+ opacity: 0,
+ transform: 'translateX(100%)'
+ }))
+ ])
+ ]),
+
+ /**
+ * Slide in from the top animation
+ */
+ slideInDownAnimation: ngAnimate.trigger('routeAnimation', [
+ ngAnimate.state('*',
+ ngAnimate.style({
+ opacity: 1,
+ transform: 'translateY(0)'
+ })
+ ),
+ ngAnimate.transition(':enter', [
+ ngAnimate.style({
+ opacity: 0,
+ transform: 'translateY(-100%)'
+ }),
+ ngAnimate.animate('0.5s ease-in')
+ ]),
+ ngAnimate.transition(':leave', [
+ ngAnimate.animate('0.5s ease-out', ngAnimate.style({
+ opacity: 0,
+ transform: 'translateY(100%)'
+ }))
+ ])
+ ]),
+
+ /**
+ * Fly in/out animation
+ */
+ flyInOutAnimation: ngAnimate.trigger('flyInOut', [
+ ngAnimate.state('in',
+ ngAnimate.style({transform: 'translateX(0)'})
+ ),
+ ngAnimate.transition('void => *', [
+ ngAnimate.style({transform: 'translateX(100%)'}),
+ ngAnimate.animate('0.4s 0.1s ease-in')
+ ]),
+ ngAnimate.transition('* => void', ngAnimate.animate('0.2s ease-out', ngAnimate.style({transform: 'translateX(-100%)'})))
+ ]),
+
+ /**
+ * Fly in/out animation
+ */
+ fadeInOutAnimation: ngAnimate.trigger('fadeInOut', [
+ ngAnimate.state('in',
+ ngAnimate.style({opacity: 1})
+ ),
+ ngAnimate.transition('void => *', [
+ ngAnimate.style({opacity: 0}),
+ ngAnimate.animate('0.5s 0.1s ease-in')
+ ]),
+ ngAnimate.transition('* => void', ngAnimate.animate('0.5s ease-out', ngAnimate.style({opacity: 0})))
+ ])
+
+};
+
+module.exports = new FdsAnimations();
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
new file mode 100644
index 0000000..8dff679
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.js
@@ -0,0 +1,219 @@
+/*
+ * 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.
+ */
+
+// Store items for two days before being eligible for removal.
+var MILLIS_PER_DAY = 86400000;
+var TWO_DAYS = MILLIS_PER_DAY * 2;
+
+var isUndefined = function (obj) {
+ return typeof obj === 'undefined';
+};
+
+var isNull = function (obj) {
+ return obj === null;
+};
+
+var isDefinedAndNotNull = function (obj) {
+ return !isUndefined(obj) && !isNull(obj);
+};
+
+/**
+ * Checks the expiration for the specified entry.
+ *
+ * @param {object} entry
+ * @returns {boolean}
+ */
+var checkExpiration = function (entry) {
+ if (isDefinedAndNotNull(entry.expires)) {
+ // get the expiration
+ var expires = new Date(entry.expires);
+ var now = new Date();
+
+ // return whether the expiration date has passed
+ return expires.valueOf() < now.valueOf();
+ } else {
+ return false;
+ }
+};
+
+/**
+ * Gets an enty for the key. The entry expiration is not checked.
+ *
+ * @param {string} key
+ */
+var getEntry = function (key) {
+ try {
+ // parse the entry
+ var entry = JSON.parse(localStorage.getItem(key));
+
+ // ensure the entry and item are present
+ if (isDefinedAndNotNull(entry)) {
+ return entry;
+ } else {
+ return null;
+ }
+ } catch (e) {
+ return null;
+ }
+};
+
+/**
+ * FdsStorageService constructor.
+ * @constructor
+ */
+function FdsStorageService() {
+};
+
+FdsStorageService.prototype = {
+ constructor: FdsStorageService,
+ /**
+ * Initializes the storage. Items will be persisted for two days. Once the scripts runs
+ * thereafter, all eligible items will be removed. This strategy does not support persistence.
+ */
+ init: function () {
+ for (var i = 0; i < localStorage.length; i++) {
+ try {
+ // get the next item
+ var key = localStorage.key(i);
+
+ // attempt to get the item which will expire if necessary
+ this.getItem(key);
+ } catch (e) {
+ }
+ }
+ },
+
+ /**
+ * Stores the specified item.
+ *
+ * @param {string} key
+ * @param {object} item
+ * @param {integer} expires
+ */
+ setItem: function (key, item, expires) {
+ // calculate the expiration
+ expires = isDefinedAndNotNull(expires) ? expires : new Date().valueOf() + TWO_DAYS;
+
+ // create the entry
+ var entry = {
+ expires: expires,
+ item: item
+ };
+
+ // store the item
+ localStorage.setItem(key, JSON.stringify(entry));
+ },
+
+ /**
+ * Returns whether there is an entry for this key. This will not check the expiration. If
+ * the entry is expired, it will return null on a subsequent getItem invocation.
+ *
+ * @param {string} key
+ * @returns {boolean}
+ */
+ hasItem: function (key) {
+ return getEntry(key) !== null;
+ },
+
+ /**
+ * Gets the item with the specified key. If an item with this key does
+ * not exist, null is returned. If an item exists but cannot be parsed
+ * or is malformed/unrecognized, null is returned.
+ *
+ * @param {type} key
+ */
+ getItem: function (key) {
+ var entry = getEntry(key);
+ if (entry === null) {
+ return null;
+ }
+
+ // if the entry is expired, drop it and return null
+ if (checkExpiration(entry)) {
+ this.removeItem(key);
+ return null;
+ }
+
+ // if the entry has the specified field return its value
+ if (isDefinedAndNotNull(entry['item'])) {
+ return entry['item'];
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * Gets the expiration for the specified item. This will not check the expiration. If
+ * the entry is expired, it will return null on a subsequent getItem invocation.
+ *
+ * @param {string} key
+ * @returns {integer}
+ */
+ getItemExpiration: function (key) {
+ var entry = getEntry(key);
+ if (entry === null) {
+ return null;
+ }
+
+ // if the entry has the specified field return its value
+ if (isDefinedAndNotNull(entry['expires'])) {
+ return entry['expires'];
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * Extracts the subject from the specified jwt. If the jwt is not as expected
+ * an empty string is returned.
+ *
+ * @param {string} jwt
+ * @returns {string}
+ */
+ getJwtPayload: function (jwt) {
+ if (isDefinedAndNotNull(jwt)) {
+ var segments = jwt.split(/\./);
+ if (segments.length !== 3) {
+ return '';
+ }
+
+ var rawPayload = window.atob(segments[1]);
+ var payload = JSON.parse(rawPayload);
+
+ if (isDefinedAndNotNull(payload)) {
+ return payload;
+ } else {
+ return null;
+ }
+ }
+
+ return null;
+ },
+
+ /**
+ * Removes the item with the specified key.
+ *
+ * @param {type} key
+ */
+ removeItem: function (key) {
+ localStorage.removeItem(key);
+ }
+};
+
+FdsStorageService.parameters = [];
+
+module.exports = FdsStorageService;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
new file mode 100644
index 0000000..f990af1
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/services/fds-storage.service.spec.js
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+var FdsStorageService = require('@fluid-design-system/common/storage-service');
+
+describe('FdsStorageService isolated unit tests', function () {
+ var fdsStorage;
+
+ beforeEach(function () {
+ fdsStorage = new FdsStorageService();
+ });
+
+ it('should set, retrieve, and remove an item from local storage.', function () {
+ fdsStorage.init();
+
+ var jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ';
+ var expiration;
+ var item;
+
+ if (!fdsStorage.hasItem('jwt')) {
+ fdsStorage.setItem('jwt', jwt);
+ item = fdsStorage.getItem('jwt');
+
+ //assertions
+ expect(item).toBe('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ');
+
+ var payload = fdsStorage.getItemExpiration('jwt');
+
+ fdsStorage.removeItem('jwt');
+ item = fdsStorage.getItem('jwt');
+
+ //assertions
+ expect(item).toBe(null);
+ }
+ });
+
+ it('should get jet payload.', function () {
+
+ var jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ';
+
+ var payload = fdsStorage.getJwtPayload(jwt);
+
+ //assertions
+ expect(payload).toBeDefined();
+ expect(payload.sub).toBe('1234567890');
+ });
+});
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss b/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
new file mode 100644
index 0000000..76c3a58
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_basicElements.scss
@@ -0,0 +1,130 @@
+/*
+* 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.
+*/
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 300;
+ src: local("Roboto Light"), local("Roboto-Light"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Light.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 300;
+ src: local("Roboto LightItalic"), local("Roboto-LightItalic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-LightItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: normal;
+ src: local("Roboto Regular"), local("Roboto-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 500;
+ src: local("Roboto Medium"), local("Roboto-Medium"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: bold;
+ src: local("Roboto Bold"), local("Roboto-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: normal;
+ src: local("Roboto Italic"), local("Roboto-Italic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto Slab';
+ font-style: normal;
+ font-weight: normal;
+ src: local("RobotoSlab Regular"), local("RobotoSlab-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: 'Roboto Slab';
+ font-style: normal;
+ font-weight: bold;
+ src: local("RobotoSlab Bold"), local("RobotoSlab-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.ttf") format("truetype");
+}
+
+body,
+html {
+ height: 100%;
+}
+
+body,
+button,
+input,
+label,
+select,
+td,
+textarea {
+ font-family: $fontPrimary;
+ font-size: 14px;
+}
+
+body {
+ color: $bodyTextColor;
+}
+
+strong {
+ font-weight: bold;
+}
+
+pre {
+ overflow-x: auto;
+}
+
+em {
+ font-style: italic;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: $fontPrimary;
+ font-weight: normal;
+ font-style: normal;
+ background: #FFFFFF;
+}
+
+h1 {
+ color: $pageHeaderTextColor;
+}
+
+h2 {
+ color: $subHeaderTextColor;
+}
+
+table {
+ font-family: $fontPrimary;
+ font-size: 13px;
+ color: $grey2;
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss b/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
new file mode 100644
index 0000000..73f4263
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_buttonToggles.scss
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+
+body[fds] .expansion-panel-filter-toggle-group {
+ box-shadow: none !important;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle {
+ height: 75px;
+ width: 125px;
+ border: 1px solid $grey4;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-label-content {
+ height: 100%;
+ width: 100%;
+ padding: 0;
+ line-height: 63px;
+ text-align: center;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-checked {
+ background-color: $blue-grey1;
+ color: white;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .mat-button-toggle-checked .md-display-1 {
+ color: white;
+}
+
+body[fds] .expansion-panel-filter-toggle-group .md-display-1 {
+ color: $blue-grey1;
+}
+
+body[fds] .expansion-panel-filter-toggle-group div {
+ line-height: normal;
+}
+
+body[fds] .tab-toggle-group {
+ box-shadow: none !important;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-label-content {
+ border-bottom: 2px solid $grey5;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-checked {
+ background: transparent;
+}
+
+body[fds] .tab-toggle-group .mat-button-toggle-checked .mat-button-toggle-label-content {
+ border-bottom: 2px solid $blue-grey1;
+ background: transparent;
+}
+
+body[fds] .on-off-toggle-group {
+ box-shadow: none !important;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle {
+ height: 20px;
+ width: 35px;
+ border: 1px solid $grey4;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle-label-content {
+ height: 100%;
+ width: 100%;
+ padding: 0;
+ line-height: 20px;
+ text-align: center;
+}
+
+body[fds] .on-off-toggle-group .mat-button-toggle-checked {
+ background-color: $blue-grey1;
+ color: white;
+ border: 1px solid $blue-grey1;
+}
+
+body[fds] .off-toggle.mat-button-toggle-checked {
+ background-color: $grey4;
+ color: $grey1;
+ border: 1px solid $grey4;
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss b/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
new file mode 100644
index 0000000..a9c9627
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_buttons.scss
@@ -0,0 +1,214 @@
+/*
+* 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.
+*/
+
+/* Buttons */
+
+@mixin fds-buttons-theme($theme) {
+ $primaryColor: map-get(map-get($theme, primary), 500);
+ $primaryColorHover: map-get(map-get($theme, primary), 100);
+ $accentColor: map-get(map-get($theme, accent), 500);
+ $accentColorHover: map-get(map-get($theme, accent), 100);
+ $buttonFontColor: #FFFFFF;
+ $buttonFontColorDisabled: #D1E8D1;
+ $buttonBgColorPrimary: $primaryColor;
+ $buttonBgColorPrimaryHover: $primaryColorHover;
+ $buttonBgColorPrimaryDisabled: $primaryColor;
+ $buttonBgColorPrimarySelected: $primaryColor;
+ $buttonBgColorSecondary: #FFFFFF;
+ $buttonBgColorSecondaryHover: $primaryColorHover;
+ $buttonBgColorSecondarySelected: #FFFFFF;
+ $buttonBgColorRegular: #FFFFFF;
+ $buttonBgColorRegularHover: #808793;
+ $buttonBgColorRegularDisabled: #808793;
+ $buttonBgColorRegularSelected: #FFFFFF;
+ $buttonBorderColorSecondary: $primaryColor;
+ $buttonBorderColorSecondaryHover: $buttonBgColorSecondaryHover;
+ $buttonBorderColorSecondaryDisabled: $buttonBgColorSecondaryHover;
+ $buttonBorderColorSecondarySelected: $primaryColor;
+ $buttonBorderColorRegular: #CFD3D7;
+ $buttonBorderColorRegularHover: $buttonBgColorRegularHover;
+ $buttonBorderColorRegularDisabled: $buttonBgColorRegularHover;
+ $buttonBorderColorRegularSelected: #CFD3D7;
+ $buttonFontPrimaryColor: $buttonFontColor;
+ $buttonFontPrimaryColorHover: $buttonFontColor;
+ $buttonFontPrimaryColorDisabled: $buttonFontColorDisabled;
+ $buttonFontPrimaryColorSelected: $buttonFontColor;
+ $buttonFontSecondaryColor: $primaryColorHover;
+ $buttonFontSecondaryColorHover: $buttonFontColor;
+ $buttonFontSecondaryColorDisabled: $buttonFontColorDisabled;
+ $buttonFontSecondaryColorSelected: $primaryColorHover;
+ $buttonFontRegularColor: $descriptionTextColor;
+ $buttonFontRegularColorHover: $buttonFontColor;
+ $buttonFontRegularColorDisabled: $buttonFontColorDisabled;
+ $buttonFontRegularColorSelected: $bodyTextColor;
+ $buttonFontWarnColor: $buttonFontColor;
+ $buttonFontWarnColorHover: $buttonFontColor;
+ $buttonFontWarnColorDisabled: $buttonFontColorDisabled;
+ $buttonFontWarnColorSelected: $buttonFontColor;
+ $buttonFontCriticalColor: $buttonFontColor;
+ $buttonFontCriticalColorHover: $buttonFontColor;
+ $buttonFontCriticalColorDisabled: $buttonFontColorDisabled;
+ $buttonFontCriticalColorSelected: $buttonFontColor;
+
+ body[fds] .mat-raised-button {
+ height: 34px;
+ font-family: $fontPrimary;
+ font-weight: normal;
+ font-size: 14px;
+ text-transform: uppercase;
+ line-height: normal;
+ box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
+ }
+
+ body[fds] .mat-raised-button.cdk-focused:focus {
+ box-shadow: 0px 0px 2px 0px rgba(19, 145, 193, 1);
+ }
+
+ body[fds] .mat-raised-button[disabled] {
+ opacity: .6;
+ cursor: not-allowed;
+ }
+
+ body[fds] .mat-button-toggle-disabled .mat-button-toggle-label-content {
+ cursor: not-allowed;
+ }
+
+ body[fds] .mat-button-focus-overlay {
+ background-color: transparent;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-primary {
+ border: 1px solid $buttonBgColorPrimary;
+ background-color: $buttonBgColorPrimary;
+ color: $buttonFontPrimaryColor;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-primary:hover {
+ background-color: $buttonBgColorPrimaryHover;
+ color: $buttonFontPrimaryColorHover;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-primary.mat-button-focus {
+ color: $buttonFontPrimaryColorSelected;
+ background-color: $buttonBgColorPrimarySelected;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-primary[disabled] {
+ color: $buttonFontPrimaryColorDisabled;
+ background-color: $buttonBgColorPrimaryDisabled;
+ color: $buttonFontPrimaryColorDisabled;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-secondary {
+ color: $buttonFontSecondaryColor;
+ border: 1px solid $buttonBorderColorSecondary;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-secondary:hover:not([disabled]) {
+ color: $buttonFontSecondaryColorHover;
+ background-color: $buttonBgColorSecondaryHover;
+ border: 1px solid $buttonBorderColorSecondaryHover;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-secondary.mat-button-focus {
+ color: $buttonFontSecondaryColorSelected;
+ background-color: $buttonBgColorSecondarySelected;
+ border: 1px solid $buttonBorderColorSecondarySelected;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-secondary[disabled] {
+ color: $buttonFontPrimaryColorDisabled;
+ background-color: $buttonBgColorPrimaryDisabled;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-regular {
+ color: $buttonFontRegularColor;
+ background-color: $buttonBgColorRegular;
+ border: 1px solid $buttonBorderColorRegular;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-regular:hover {
+ color: $buttonFontRegularColorHover;
+ background-color: $buttonBgColorRegularHover;
+ border: 1px solid $buttonBorderColorRegularHover;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-regular.mat-button-focus {
+ color: $buttonFontRegularColorSelected;
+ background-color: $buttonBgColorRegularSelected;
+ border: 1px solid $buttonBorderColorRegularSelected;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-regular[disabled] {
+ color: $buttonFontRegularColorDisabled;
+ background-color: $buttonBgColorRegularDisabled;
+ border: 1px solid $buttonBorderColorRegularDisabled;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-warn {
+ border: 1px solid $warnColor;
+ background-color: $warnColor;
+ color: $buttonFontWarnColor;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-warn:hover {
+ color: $buttonFontWarnColorHover;
+ background-color: $red2;
+ border: 1px solid $warnColor;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-warn.mat-button-focus {
+ color: $buttonFontWarnColorSelected;
+ background-color: $warnColor;
+ border: 1px solid $buttonBorderColorRegularSelected;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-warn[disabled] {
+ color: $buttonFontWarnColorDisabled;
+ background-color: $warnColor;
+ border: 1px solid $warnColor;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-critical {
+ color: $buttonFontCriticalColor;
+ background-color: $orange1;
+ border: 1px solid $orange1;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-critical:hover {
+ color: $buttonFontCriticalColorHover;
+ background-color: $orange2;
+ border: 1px solid $orange2;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-critical.mat-button-focus {
+ color: $buttonFontCriticalColorSelected;
+ background-color: $orange2;
+ border: 1px solid $buttonBorderColorRegularSelected;
+ }
+
+ body[fds] .mat-raised-button.mat-fds-critical[disabled] {
+ color: $buttonFontCriticalColorDisabled;
+ background-color: $orange1;
+ border: 1px solid $orange1;
+ }
+
+ .fds-primary-dropdown-button-menu .cdk-focused {
+ color: $buttonFontPrimaryColorSelected;
+ background-color: $buttonBgColorPrimarySelected;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss b/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
new file mode 100644
index 0000000..0268fde
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_checkboxes.scss
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+
+/* Checkboxes */
+
+body[fds] .mat-checkbox-inner-container {
+ height: 10px !important;
+ width: 10px !important;
+}
+
+body[fds] .mat-checkbox-frame {
+ height: 10px;
+ width: 10px;
+ border-color: $grey7;
+}
+
+body[fds] .mat-checkbox-ripple {
+ left: -7px;
+ top: -7px;
+ right: -7px;
+ bottom: -7px;
+}
+
+body[fds] .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background,
+body[fds] .mat-checkbox-checked.mat-accent .mat-checkbox-background {
+ background-color: $blue-grey1;
+}
+
+body[fds] .mat-checkbox-inner-container:hover {
+ background-color: $blue-grey1;
+ border-radius: 2px;
+}
+
+body[fds] .mat-checkbox-background {
+ height: 10px;
+ width: 10px;
+}
+
+/* Covalent TdDataTableComponent 'selectable' property checkboxes */
+
+body[fds] .mat-pseudo-checkbox {
+ height: 10px !important;
+ width: 10px !important;
+ border: 1px solid $grey7;
+}
+
+body[fds] .mat-pseudo-checkbox:hover {
+ background-color: $blue-grey1;
+ border: 1px solid $blue-grey1;
+}
+
+body[fds] .mat-pseudo-checkbox-checked::after {
+ content: '\f00c';
+ font-size: 8px;
+ font-family: fontawesome;
+ margin-top: -9px;
+ margin-left: -1px;
+ border: none;
+ transform: initial;
+}
+
+body[fds] .mat-pseudo-checkbox-checked, body[fds] .mat-pseudo-checkbox-indeterminate {
+ background-color: $blue-grey1;
+ border: 1px solid $blue-grey1;
+ height: 10px;
+ width: 10px;
+}
+
+body[fds] .mat-checkbox-disabled {
+ cursor: not-allowed;
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_chips.scss b/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
new file mode 100644
index 0000000..894fbec
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_chips.scss
@@ -0,0 +1,69 @@
+/*
+* 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.
+*/
+
+/* Chips */
+
+body[fds] .mat-chip {
+ border-radius: 2px;
+ font-size: 10px;
+ font-family: $fontPrimary;
+ font-style: normal;
+ font-weight: normal;
+ padding: 4px 12px 4px 12px;
+}
+
+body[fds] .mat-chip i {
+ margin-left: 10px;
+ float: right;
+ margin-top: 2px;
+}
+
+body[fds] .mat-basic-chip {
+ color: $grey2;
+ height: 24px;
+ margin: 22px 8px 0 0;
+}
+
+body[fds] .mat-basic-chip i {
+ margin-left: 10px;
+ float: right;
+ margin-top: 2px;
+}
+
+body[fds] .mat-basic-chip .td-chip {
+ font-size: 10px;
+ min-height: unset;
+ line-height: 20px;
+ position: relative;
+ top: -2px;
+}
+
+body[fds] .td-chip span {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 65px;
+}
+
+body[fds] .td-chip-disabled .td-chip {
+ padding: 0px 0px 0px 12px;
+}
+
+body[fds] .mat-basic-chip mat-icon.td-chip-removal {
+ font-size: 15px;
+ margin-bottom: 7px;
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss b/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
new file mode 100644
index 0000000..fdf9d4f
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_expansionPanels.scss
@@ -0,0 +1,62 @@
+/*
+* 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.
+*/
+
+/* Expansion Panels */
+
+@mixin fds-expansion-panels-theme($theme) {
+ $primaryColor: map-get(map-get($theme, primary), 500);
+ $primaryColorHover: map-get(map-get($theme, primary), 100);
+ $accentColor: map-get(map-get($theme, accent), 500);
+ $accentColorHover: map-get(map-get($theme, accent), 100);
+
+ body[fds] td-expansion-panel:not(:last-of-type) .td-expanded {
+ margin-bottom: 0px;
+ }
+
+ body[fds] .td-expansion-panel-header-content {
+ height: 80px !important;
+ padding: 0px 30px !important;
+ border-bottom: 1px solid $grey7;
+ }
+
+ body[fds] .td-expansion-content form {
+ padding: 15px 10px 20px 20px;
+ }
+
+ body[fds] .md-subhead {
+ font-size: 18px;
+ color: $grey3;
+ }
+
+ body[fds] td-expansion-panel .td-expansion-panel-header .td-expansion-panel-header-content mat-icon.td-expand-icon {
+ font-size: 28px;
+ color: $blue-grey1;
+ font-weight: bold;
+ }
+
+ body[fds] td-expansion-panel .td-expansion-panel-header:hover:not(.mat-disabled) {
+ background: $blue4;
+ }
+
+ body[fds] td-expansion-panel .td-expansion-panel-header:focus {
+ background: #FFFFFF;
+ }
+
+ body[fds] td-expansion-panel .td-expansion-panel-header:focus .td-expansion-panel-header-content {
+ border-bottom: 1px solid $primaryColor;
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss b/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
new file mode 100644
index 0000000..aede0a3
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_globalVars.scss
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+/* Text */
+
+$fontPrimary: "Roboto",
+sans-serif;
+$fontSecondary: "Robot Slab",
+sans-serif;
+$fontMedium: "Roboto Medium",
+sans-serif;
+$fontLight: "Roboto Light",
+sans-serif;
+
+/* Define colors */
+
+$grey1: #333333;
+$grey2: #666666;
+$grey3: #999999;
+$grey4: #CCCCCC;
+$grey5: #EEEEEE;
+$grey6: #F8F9F9;
+$grey7: #DDDDDD;
+$grey8: #CFD3D7;
+$grey9: #b2b8c1;
+$grey10: #dbdee2;
+$grey11: #2C3E44;
+$grey12: #EEEFF0;
+$grey13: #808793;
+$blue1: #1491C1;
+$blue2: #E7f6Fc;
+$blue3: #A7DFF2;
+$blue4: #F3FAFF;
+$blue5: #728E9B;
+$blue6: #004849;
+$blue7: #d0dbe0;
+$blue8: #1291c1;
+$red1: #EF6162;
+$red2: #D14A50;
+$orange1: #E98A40;
+$orange2: #D3702D;
+$green1: #1EB475;
+$green2: #3FAE2A;
+$green3: #429929;
+$rose1: #9E737D;
+$rose2: #915D69;
+$blue-grey1: #6B8791;
+$blue-grey2: #B2C1C6;
+$bodyTextColor: $grey1;
+$pageHeaderTextColor: $grey1;
+$subHeaderTextColor: $grey2;
+$descriptionTextColor: $grey2;
+$linkColor: $blue-grey1;
+$linkColorDisabled: $grey1;
+$warnColor: $red1;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss b/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
new file mode 100644
index 0000000..1298358
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_helperClasses.scss
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+/* Text */
+
+.camel-case {
+ text-transform: capitalize;
+}
+
+.header {
+ font-family: $fontMedium;
+ font-size: 16px;
+ color: $pageHeaderTextColor;
+ padding-bottom: 10px;
+}
+
+.help-icon {
+ font-size: 12px;
+ color: $blue1;
+}
+
+.details-header {
+ height: 92px;
+}
+
+.details-header-container {
+ position: relative;
+ top: 22px;
+ left: 10px;
+}
+
+.description {
+ font-family: $fontLight;
+ font-size: 12px;
+ color: $descriptionTextColor;
+}
+
+.description i {
+ padding-right: 5px;
+}
+
+.label {
+ font-family: $fontMedium;
+ font-size: 14px;
+ color: $bodyTextColor;
+ text-transform: uppercase;
+}
+
+.units {
+ font-family: $fontLight;
+ font-size: 14px;
+ color: $bodyTextColor;
+}
+
+.align-vertical {
+ margin-top: auto;
+ margin-bottom: auto;
+}
+
+.align-horizontal {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.fill-available-width {
+ width: 100%;
+}
+
+.pointer {
+ cursor: pointer;
+}
http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/85aa932e/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
----------------------------------------------------------------------
diff --git a/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss b/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
new file mode 100644
index 0000000..392f5cb
--- /dev/null
+++ b/node_modules/nifi-fds/platform/core/common/styles/_inputs.scss
@@ -0,0 +1,109 @@
+/*
+* 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.
+*/
+
+/* Inputs */
+
+body[fds] .mat-input-container {
+ min-width: 200px;
+}
+
+body[fds] .mat-input-wrapper {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+body[fds] input.mat-input-element, body[fds] textarea.mat-input-element {
+ border-radius: 2px;
+ color: $grey2;
+ border: 1px solid $grey8;
+ height: 32px;
+ padding: 0px 10px;
+ width: calc(100% - 26px);
+}
+
+body[fds] textarea.mat-input-element {
+ padding: 10px 10px;
+}
+
+body[fds] input.mat-input-element[disabled], body[fds] textarea.mat-input-element[disabled] {
+ background: $grey9;
+ color: $grey10;
+ border: 1px solid $grey9;
+}
+
+body[fds] .mat-input-subscript-wrapper {
+ margin-top: 18px;
+ width: calc(100% - 23px);
+}
+
+body[fds] input.mat-input-element:focus, body[fds] textarea.mat-input-element:focus {
+ border-color: $blue-grey1;
+}
+
+body[fds] .mat-input-underline {
+ display: none;
+}
+
+body[fds] .mat-input-placeholder {
+ font-size: 14px;
+ color: $grey3;
+ font-weight: 300;
+}
+
+body[fds] .mat-input-placeholder {
+ top: 29px;
+ left: 10px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: calc(100% - 44px);
+}
+
+body[fds] mat-input-container.mat-focused .mat-input-placeholder {
+ transform: translateY(-26px) translateX(-10px) scale(0.75);
+}
+
+body[fds] .mat-form-field-can-float.mat-form-field-should-float .mat-form-field-placeholder {
+ transform: translateY(-26px) translateX(-10px) scale(.75);
+}
+
+body[fds] .mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder {
+ transform: translateY(-26px) translateX(-10px) scale(.75);
+}
+
+body[fds] .input-button {
+ top: 5px;
+ left: -4px;
+ border-left: none !important;
+}
+
+body[fds] .input-button.mat-raised-button[disabled] {
+ opacity: 1;
+}
+
+body[fds] td-chips .mat-input-placeholder-wrapper::after {
+ content: '\f0b0';
+ display: inline-table;
+ font-family: FontAwesome;
+ float: right;
+ margin: 12px 10px 0px 0px;
+ color: $grey3;
+}
+
+body[fds] .mat-hint {
+ color: $grey3;
+}