diff --git a/.circleci/config.yml b/.circleci/config.yml index d65ff4342..4b4dc994e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -125,6 +125,7 @@ jobs: - run: yarn run build:mosaic-luxon-adapter - run: yarn run build:mosaic-moment-adapter - run: yarn run styles:built-all + - run: yarn run build:mosaic-common-components - persist_to_workspace: root: ~/mosaic paths: @@ -187,6 +188,13 @@ jobs: at: ~/mosaic - run: yarn run unit:mosaic-luxon-adapter + test_unit_mosaic-common-components: + <<: *job_defaults + steps: + - attach_workspace: + at: ~/mosaic + - run: yarn run unit:mosaic-common-components + deploy-docs-next: <<: *job_defaults steps: @@ -350,6 +358,10 @@ workflows: requires: - build_packages + - test_unit_mosaic-common-components: + requires: + - build_packages + - test_unit_mosaic: requires: - build_packages diff --git a/angular.json b/angular.json index 21cac9db9..7d950aed6 100644 --- a/angular.json +++ b/angular.json @@ -211,9 +211,6 @@ "tsConfig": "packages/mosaic/tsconfig.spec.json", "codeCoverage": true } - }, - "configurations": { - "production": {} } } }, @@ -301,6 +298,37 @@ } } }, + "mosaic-common-components": { + "projectType": "library", + "root": "packages/mosaic-common-components", + "sourceRoot": "packages/mosaic-common-components", + "architect": { + "packagr": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "tsConfig": "packages/mosaic-common-components/tsconfig.lib.json", + "project": "packages/mosaic-common-components/ng-package.json" + } + }, + "build": { + "builder": "@ptsecurity/builders:packager", + "options": { + "buildTarget": "packagr", + "versionPlaceholder": "{{VERSION}}", + "ngVersionPlaceholder": "{{NG_VERSION}}" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "karmaConfig": "packages/mosaic-common-components/karma.conf.js", + "main": "packages/mosaic-common-components/test.ts", + "tsConfig": "packages/mosaic-common-components/tsconfig.spec.json", + "codeCoverage": true + } + } + } + }, "schematics": { "projectType": "library", "root": "packages/mosaic/schematics", @@ -2050,6 +2078,46 @@ } } } + }, + "dev-sites-menu": { + "projectType": "application", + "root": "packages/mosaic-dev/sites-menu", + "sourceRoot": "packages/mosaic-dev/sites-menu", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/mosaic-dev/sites-menu", + "tsConfig": "packages/mosaic-dev/sites-menu/tsconfig.app.json", + "index": "packages/mosaic-dev/index.html", + "main": "packages/mosaic-dev/sites-menu/main.ts", + "polyfills": "packages/mosaic-dev/polyfills.ts" + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "vendorChunk": false, + "statsJson": true + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "dev-sites-menu:build" + } + } + } } }, diff --git a/package.json b/package.json index 27498060a..950e8624e 100644 --- a/package.json +++ b/package.json @@ -121,6 +121,8 @@ "build:mosaic": "ng build mosaic", "build:mosaic-examples-module": "ts-node --project ./tools/example-module/tsconfig.json ./tools/example-module/index.ts", "build:mosaic-examples": "ng build mosaic-examples", + "build:mosaic-common-components": "ng build mosaic-common-components", + "build:mosaic-common-components:styles": "gulp mosaic-common-components:bundle-theming-scss", "build:schematics": "ng build schematics", "build:schematics-test": "ng build schematics-test", "build:tokens": "node ./packages/mosaic/design-tokens/build.js packages/mosaic/design-tokens/", @@ -131,6 +133,7 @@ "styles:built-all": "gulp styles:built-all", "unit:cdk": "ng test cdk", "unit:mosaic": "ng test mosaic", + "unit:mosaic-common-components": "ng test mosaic-common-components", "unit:mosaic-moment-adapter": "ng test mosaic-moment-adapter", "unit:mosaic-luxon-adapter": "ng test mosaic-luxon-adapter", "unit:schematics": "gulp unit:schematics", @@ -182,6 +185,7 @@ "server-dev:select": "ng serve dev-select --port 3003", "server-dev:sidebar": "ng serve dev-sidebar --port 3003", "server-dev:sidepanel": "ng serve dev-sidepanel --port 3003", + "server-dev:sitemenu": "ng serve dev-sites-menu --port 3003", "server-dev:splitter": "ng serve dev-splitter --port 3003", "server-dev:table": "ng serve dev-table --port 3003", "server-dev:tabs": "ng serve dev-tabs --port 3003", diff --git a/packages/docs/src/app/components/component-viewer/component-overview.template.html b/packages/docs/src/app/components/component-viewer/component-overview.template.html index 423294255..109bbdfce 100644 --- a/packages/docs/src/app/components/component-viewer/component-overview.template.html +++ b/packages/docs/src/app/components/component-viewer/component-overview.template.html @@ -1,19 +1,14 @@
Test sites-menu-overview-example
diff --git a/packages/mosaic-examples/mosaic-common/sites-menu/sites-menu-overview/sites-menu-overview-example.ts b/packages/mosaic-examples/mosaic-common/sites-menu/sites-menu-overview/sites-menu-overview-example.ts new file mode 100644 index 000000000..d69104f8d --- /dev/null +++ b/packages/mosaic-examples/mosaic-common/sites-menu/sites-menu-overview/sites-menu-overview-example.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + + +/** + * @title Basic site menu + */ +@Component({ + selector: 'sites-menu-overview-example', + templateUrl: 'sites-menu-overview-example.html', + styleUrls: ['sites-menu-overview-example.css'] +}) +export class SitesMenuOverviewExample {} diff --git a/packages/mosaic/design-tokens/_variables.scss b/packages/mosaic/design-tokens/_variables.scss index 70347d3ec..6d3f71f19 100644 --- a/packages/mosaic/design-tokens/_variables.scss +++ b/packages/mosaic/design-tokens/_variables.scss @@ -1,6 +1,6 @@ // Do not edit directly -// Generated on Tue, 22 Jun 2021 11:43:43 GMT +// Generated on Thu, 01 Jul 2021 11:07:16 GMT $light-color-scheme-primary-default: #338FCC; $light-color-scheme-second-default: #B3B3B3; @@ -57,8 +57,8 @@ $palette-blue-560: #277BB3; $palette-blue-600: #206EA2; $palette-blue-700: #114E77; $palette-blue-800: #07314D; -$palette-blue-a-100: rgba(0, 153, 255, 0.15); -$palette-blue-a-200: rgba(0, 153, 255, 0.3); +$palette-blue-a100: rgba(0, 153, 255, 0.15); +$palette-blue-a200: rgba(0, 153, 255, 0.3); $palette-blue-contrast-40: #4D4D4D; $palette-blue-contrast-60: #4D4D4D; $palette-blue-contrast-100: #4D4D4D; @@ -70,8 +70,8 @@ $palette-blue-contrast-560: white; $palette-blue-contrast-600: white; $palette-blue-contrast-700: white; $palette-blue-contrast-800: white; -$palette-blue-contrast-a-100: #4D4D4D; -$palette-blue-contrast-a-200: white; +$palette-blue-contrast-a100: #4D4D4D; +$palette-blue-contrast-a200: white; $palette-green-40: #F6FBF4; $palette-green-60: #EDF8E9; $palette-green-100: #DCF1D4; @@ -83,7 +83,7 @@ $palette-green-560: #449327; $palette-green-600: #3B8520; $palette-green-700: #276211; $palette-green-800: #163F07; -$palette-green-a-100: rgba(68, 255, 0, 0.15); +$palette-green-a100: rgba(68, 255, 0, 0.15); $palette-green-contrast-40: #4D4D4D; $palette-green-contrast-60: #4D4D4D; $palette-green-contrast-100: #4D4D4D; @@ -95,7 +95,7 @@ $palette-green-contrast-560: white; $palette-green-contrast-600: white; $palette-green-contrast-700: white; $palette-green-contrast-800: white; -$palette-green-contrast-a-100: #4D4D4D; +$palette-green-contrast-a100: #4D4D4D; $palette-red-40: #FEF7F6; $palette-red-60: #FCEFEC; $palette-red-100: #FADEDA; @@ -107,7 +107,7 @@ $palette-red-560: #C43E29; $palette-red-600: #B23522; $palette-red-700: #832112; $palette-red-800: #541208; -$palette-red-a-100: rgba(224, 79, 56, 0.15); +$palette-red-a100: rgba(224, 79, 56, 0.15); $palette-red-contrast-40: #4D4D4D; $palette-red-contrast-60: #4D4D4D; $palette-red-contrast-100: #4D4D4D; @@ -119,7 +119,7 @@ $palette-red-contrast-560: white; $palette-red-contrast-600: white; $palette-red-contrast-700: white; $palette-red-contrast-800: white; -$palette-red-contrast-a-100: #4D4D4D; +$palette-red-contrast-a100: #4D4D4D; $palette-grey-40: #F5F5F5; $palette-grey-60: #F0F0F0; $palette-grey-100: #E6E6E6; @@ -131,12 +131,12 @@ $palette-grey-560: #707070; $palette-grey-600: #666666; $palette-grey-700: #4D4D4D; $palette-grey-800: #333333; -$palette-grey-a-40: rgba(0, 0, 0, 0.04); -$palette-grey-a-60: rgba(0, 0, 0, 0.06); -$palette-grey-a-100: rgba(0, 0, 0, 0.1); -$palette-grey-a-200: rgba(0, 0, 0, 0.2); -$palette-grey-a-300: rgba(0, 0, 0, 0.3); -$palette-grey-a-500: rgba(0, 0, 0, 0.5); +$palette-grey-a40: rgba(0, 0, 0, 0.04); +$palette-grey-a60: rgba(0, 0, 0, 0.06); +$palette-grey-a100: rgba(0, 0, 0, 0.1); +$palette-grey-a200: rgba(0, 0, 0, 0.2); +$palette-grey-a300: rgba(0, 0, 0, 0.3); +$palette-grey-a500: rgba(0, 0, 0, 0.5); $palette-grey-contrast-40: #4D4D4D; $palette-grey-contrast-60: #4D4D4D; $palette-grey-contrast-100: #4D4D4D; @@ -159,7 +159,7 @@ $palette-yellow-560: #BB800A; $palette-yellow-600: #AA7408; $palette-yellow-700: #7D5504; $palette-yellow-800: #503602; -$palette-yellow-a-100: rgba(255, 170, 0, 0.15); +$palette-yellow-a100: rgba(255, 170, 0, 0.15); $palette-yellow-contrast-40: #4D4D4D; $palette-yellow-contrast-60: #4D4D4D; $palette-yellow-contrast-100: #4D4D4D; @@ -171,7 +171,7 @@ $palette-yellow-contrast-560: white; $palette-yellow-contrast-600: white; $palette-yellow-contrast-700: white; $palette-yellow-contrast-800: white; -$palette-yellow-contrast-a-100: #4D4D4D; +$palette-yellow-contrast-a100: #4D4D4D; $alert-light-color-scheme-error-background: #FCEFEC; $alert-light-color-scheme-error-border: #E76E5C; $alert-light-color-scheme-error-icon: #E76E5C; @@ -628,8 +628,8 @@ $toggle-small-font-default: caption; $tooltip-light-color-scheme-background: #4D4D4D; $tooltip-light-color-scheme-text: white; $tooltip-light-color-scheme-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); -$tooltip-dark-color-scheme-background: white; -$tooltip-dark-color-scheme-text: white; +$tooltip-dark-color-scheme-background: #F5F5F5; +$tooltip-dark-color-scheme-text: #4D4D4D; $tooltip-dark-color-scheme-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); $tooltip-size-max-width: 240px; $tooltip-size-border-radius: 3px; diff --git a/packages/mosaic/design-tokens/components/tooltip.json5 b/packages/mosaic/design-tokens/components/tooltip.json5 index f244ce067..b865f1abe 100644 --- a/packages/mosaic/design-tokens/components/tooltip.json5 +++ b/packages/mosaic/design-tokens/components/tooltip.json5 @@ -6,8 +6,8 @@ shadow: { value: '0 2px 4px 0 rgba(0, 0, 0, 0.2)' } }, 'dark-color-scheme': { - background: { value: 'white' }, - text: { value: '{dark-color-scheme.second.palette.value.contrast.700.value}' }, + background: { value: '{dark-color-scheme.second.palette.value.40.value}' }, + text: { value: '{dark-color-scheme.second.palette.value.contrast.40.value}' }, shadow: { value: '0 2px 4px 0 rgba(0, 0, 0, 0.2)' } }, size: { diff --git a/packages/mosaic/design-tokens/css-tokens.css b/packages/mosaic/design-tokens/css-tokens.css index a86a1d1a7..178ce440d 100644 --- a/packages/mosaic/design-tokens/css-tokens.css +++ b/packages/mosaic/design-tokens/css-tokens.css @@ -1,6 +1,6 @@ /** * Do not edit directly - * Generated on Tue, 22 Jun 2021 11:43:43 GMT + * Generated on Thu, 01 Jul 2021 11:07:16 GMT */ :root { diff --git a/packages/mosaic/design-tokens/tokens.js b/packages/mosaic/design-tokens/tokens.js index 5c1833b2f..03587a200 100644 --- a/packages/mosaic/design-tokens/tokens.js +++ b/packages/mosaic/design-tokens/tokens.js @@ -1,6 +1,6 @@ /** * Do not edit directly - * Generated on Tue, 22 Jun 2021 11:43:43 GMT + * Generated on Thu, 01 Jul 2021 11:07:16 GMT */ export const LightColorSchemePrimaryDefault = "#338FCC"; @@ -736,8 +736,8 @@ export const ToggleSmallFontDefault = "caption"; export const TooltipLightColorSchemeBackground = "#4D4D4D"; export const TooltipLightColorSchemeText = "white"; export const TooltipLightColorSchemeShadow = "0 2px 4px 0 rgba(0, 0, 0, 0.2)"; -export const TooltipDarkColorSchemeBackground = "white"; -export const TooltipDarkColorSchemeText = "white"; +export const TooltipDarkColorSchemeBackground = "#F5F5F5"; +export const TooltipDarkColorSchemeText = "#4D4D4D"; export const TooltipDarkColorSchemeShadow = "0 2px 4px 0 rgba(0, 0, 0, 0.2)"; export const TooltipSizeMaxWidth = "240px"; export const TooltipSizeBorderRadius = "3px"; diff --git a/packages/mosaic/list/_list-theme.scss b/packages/mosaic/list/_list-theme.scss index c1c68b094..fc962d48f 100644 --- a/packages/mosaic/list/_list-theme.scss +++ b/packages/mosaic/list/_list-theme.scss @@ -35,7 +35,8 @@ } @mixin mc-list-typography($config) { - .mc-list-item { + .mc-list-item, + .mc-list-option { @include mc-typography-level-to-styles($config, $list-font-item); } } diff --git a/tools/example-module/generate-example-module.ts b/tools/example-module/generate-example-module.ts index 26de11352..64b391ba0 100644 --- a/tools/example-module/generate-example-module.ts +++ b/tools/example-module/generate-example-module.ts @@ -61,7 +61,8 @@ function inlineExampleModuleTemplate(parsedData: AnalyzedExamples): string { name: data.module.name, importSpecifier: data.module.packagePath, // ptsecurity-mosaic-examples-mosaic-alerts - importPath: `ptsecurity-${splitPackagePath[0]}-examples-${splitPackagePath[0]}-${splitPackagePath[1]}` + // ptsecurity-mosaic-examples-mosaic-common-sites-menu + importPath: `ptsecurity-mosaic-examples-${splitPackagePath[0]}-${splitPackagePath[1]}` } }; diff --git a/tools/gulp/gulpfile.ts b/tools/gulp/gulpfile.ts index 471c799c7..946c2b215 100644 --- a/tools/gulp/gulpfile.ts +++ b/tools/gulp/gulpfile.ts @@ -6,3 +6,4 @@ import './tasks/docs'; import './tasks/styles'; import './tasks/schematic'; import './tasks/release'; +import './tasks/i18n'; diff --git a/tools/gulp/tasks/docs.ts b/tools/gulp/tasks/docs.ts index c2d156c29..0c7b304fb 100644 --- a/tools/gulp/tasks/docs.ts +++ b/tools/gulp/tasks/docs.ts @@ -107,8 +107,34 @@ task('markdown-docs-mosaic', () => { .pipe(dest('dist/docs-content/overviews/mosaic')); }); +task('markdown-docs-mosaic-common', () => { + + markdown.marked.Renderer.prototype.heading = (text: string, level: number): string => { + // tslint:disable-next-line:no-magic-numbers + if (level === 3 || level === 4) { + const escapedText = text.toLowerCase().replace(/\s/g, '-'); + + return ` +