From 696f8a2a042f6adebe01739ebddddb3e96027853 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 26 Oct 2022 12:05:02 +0300 Subject: [PATCH] Change input theme selection value to enum(number) --- .../src/commands/change-theme/index.ts | 15 +- .../src/commands/change-theme/model.ts | 4 +- .../src/commands/change-theme/schema.json | 14 +- .../src/commands/change-theme/style-map.ts | 425 +++++++++--------- .../change-theme/theme-options.enum.ts | 14 +- 5 files changed, 236 insertions(+), 236 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/index.ts b/npm/ng-packs/packages/schematics/src/commands/change-theme/index.ts index 375c8ae97d..22f32be353 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/index.ts @@ -1,12 +1,12 @@ import { Rule, SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics'; import { isLibrary, updateWorkspace, WorkspaceDefinition } from '../../utils'; -import { allStyles, StyleDefinition, styleMap } from './style-map'; +import { allStyles, styleMap } from './style-map'; import { ProjectDefinition } from '@angular-devkit/core/src/workspace'; import { JsonArray, JsonValue } from '@angular-devkit/core'; import { ChangeThemeOptions } from './model'; +import { ThemeOptionsEnum } from './theme-options.enum'; export default function (_options: ChangeThemeOptions): Rule { - // eslint-disable-next-line @typescript-eslint/no-unused-vars return async (_: Tree, __: SchematicContext) => { const targetThemeName = _options.name; const selectedProject = _options.targetProject; @@ -23,7 +23,7 @@ export default function (_options: ChangeThemeOptions): Rule { function updateProjectStyle( projectName: string, workspace: WorkspaceDefinition, - targetThemeName: string, + targetThemeName: ThemeOptionsEnum, ) { const project = workspace.projects.get(projectName); @@ -41,7 +41,10 @@ function updateProjectStyle( const sanitizedStyles = removeThemeBasedStyles(styles); - const newStyles = getStylesOfSelectedTheme(targetThemeName); + const newStyles = styleMap.get(targetThemeName); + if (!newStyles) { + throw new SchematicsException('The theme does not found'); + } targetOption.styles = [...newStyles, ...sanitizedStyles] as JsonArray; } @@ -80,7 +83,3 @@ export const styleCompareFn = (item1: string | object, item2: string | object) = return o1.bundleName && o2.bundleName && o1.bundleName == o2.bundleName; }; - -export function getStylesOfSelectedTheme(theme: string): StyleDefinition[] { - return styleMap[theme]; -} diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/model.ts b/npm/ng-packs/packages/schematics/src/commands/change-theme/model.ts index 9bcda1d9b9..ca553c50c7 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/model.ts +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/model.ts @@ -1,4 +1,6 @@ +import { ThemeOptionsEnum } from './theme-options.enum'; + export type ChangeThemeOptions = { - name: string; + name: ThemeOptionsEnum; targetProject: string; }; diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/schema.json b/npm/ng-packs/packages/schematics/src/commands/change-theme/schema.json index bbf9080912..1544620881 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/schema.json @@ -6,17 +6,17 @@ "properties": { "name": { "description": "The file extension or preprocessor to use for style files.", - "type": "string", - "default": "basic", - "enum": ["basic", "lepton", "leptonx-lite", "leptonx"], + "type": "integer", + "default": 1, + "enum": [1, 2, 3, 4], "x-prompt": { "message": "Which theme would you like to use?", "type": "list", "items": [ - { "value": "basic", "label": "basic" }, - { "value": "lepton", "label": "lepton" }, - { "value": "leptonx-lite", "label": "leptonx-lite" }, - { "value": "leptonx", "label": "leptonx" } + { "value": 1, "label": "Basic" }, + { "value": 2, "label": "Lepton" }, + { "value": 3, "label": "LeptonXLite" }, + { "value": 4, "label": "LeptonX" } ] } }, diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts b/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts index 06074dab78..aa5f17b21a 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts @@ -8,219 +8,216 @@ export type StyleDefinition = } | string; -export type StyleMapType = { - [key: string]: StyleDefinition[]; -}; +export const styleMap = new Map(); -export const styleMap: StyleMapType = { - [ThemeOptionsEnum.basic]: [ - { - input: 'node_modules/bootstrap/dist/css/bootstrap.rtl.min.css', - inject: false, - bundleName: 'bootstrap-rtl.min', - }, - { - input: 'node_modules/bootstrap/dist/css/bootstrap.min.css', - inject: true, - bundleName: 'bootstrap-ltr.min', - }, - ], - [ThemeOptionsEnum['leptonx-lite']]: [ - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.css', - inject: false, - bundleName: 'bootstrap-dim', - }, - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.css', - inject: false, - bundleName: 'ng-bundle', - }, - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.css', - inject: false, - bundleName: 'layout-bundle', - }, - { - input: 'node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.css', - inject: false, - bundleName: 'abp-bundle', - }, - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.rtl.css', - inject: false, - bundleName: 'bootstrap-dim.rtl', - }, - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.rtl.css', - inject: false, - bundleName: 'ng-bundle.rtl', - }, - { - input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.rtl.css', - inject: false, - bundleName: 'layout-bundle.rtl', - }, - { - input: 'node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.rtl.css', - inject: false, - bundleName: 'abp-bundle.rtl', - }, - ], - [ThemeOptionsEnum.lepton]: [ - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton1.min.css', - inject: false, - bundleName: 'lepton1', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton2.min.css', - inject: false, - bundleName: 'lepton2', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton3.min.css', - inject: false, - bundleName: 'lepton3', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton4.min.css', - inject: false, - bundleName: 'lepton4', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton5.min.css', - inject: false, - bundleName: 'lepton5', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.min.css', - inject: false, - bundleName: 'lepton6', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton1.rtl.min.css', - inject: false, - bundleName: 'lepton1.rtl', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton2.rtl.min.css', - inject: false, - bundleName: 'lepton2.rtl', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton3.rtl.min.css', - inject: false, - bundleName: 'lepton3.rtl', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton4.rtl.min.css', - inject: false, - bundleName: 'lepton4.rtl', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton5.rtl.min.css', - inject: false, - bundleName: 'lepton5.rtl', - }, - { - input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.rtl.min.css', - inject: false, - bundleName: 'lepton6.rtl', - }, - ], - [ThemeOptionsEnum.leptonx]: [ - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dark.css', - inject: false, - bundleName: 'dark', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/light.css', - inject: false, - bundleName: 'light', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dim.css', - inject: false, - bundleName: 'dim', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dim.css', - inject: false, - bundleName: 'bootstrap-dim', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dark.css', - inject: false, - bundleName: 'bootstrap-dark', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-light.css', - inject: false, - bundleName: 'bootstrap-light', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/ng-bundle.css', - inject: false, - bundleName: 'ng-bundle', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/side-menu/layout-bundle.css', - inject: false, - bundleName: 'layout-bundle', - }, - { - input: 'node_modules/@volosoft/abp.ng.theme.lepton-x/assets/css/abp-bundle.css', - inject: false, - bundleName: 'abp-bundle', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dark.rtl.css', - inject: false, - bundleName: 'dark.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/light.rtl.css', - inject: false, - bundleName: 'light.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dim.rtl.css', - inject: false, - bundleName: 'dim.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dim.rtl.css', - inject: false, - bundleName: 'bootstrap-dim.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dark.rtl.css', - inject: false, - bundleName: 'bootstrap-dark.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-light.rtl.css', - inject: false, - bundleName: 'bootstrap-light.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/ng-bundle.rtl.css', - inject: false, - bundleName: 'ng-bundle.rtl', - }, - { - input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/side-menu/layout-bundle.rtl.css', - inject: false, - bundleName: 'layout-bundle.rtl', - }, - { - input: 'node_modules/@volosoft/abp.ng.theme.lepton-x/assets/css/abp-bundle.rtl.css', - inject: false, - bundleName: 'abp-bundle.rtl', - }, - ], -}; +styleMap.set(ThemeOptionsEnum.Basic, [ + { + input: 'node_modules/bootstrap/dist/css/bootstrap.rtl.min.css', + inject: false, + bundleName: 'bootstrap-rtl.min', + }, + { + input: 'node_modules/bootstrap/dist/css/bootstrap.min.css', + inject: true, + bundleName: 'bootstrap-ltr.min', + }, +]); -export const allStyles = Object.values(styleMap).reduce((acc, val) => [...acc, ...val], []); +styleMap.set(ThemeOptionsEnum.Lepton, [ + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton1.min.css', + inject: false, + bundleName: 'lepton1', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton2.min.css', + inject: false, + bundleName: 'lepton2', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton3.min.css', + inject: false, + bundleName: 'lepton3', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton4.min.css', + inject: false, + bundleName: 'lepton4', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton5.min.css', + inject: false, + bundleName: 'lepton5', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.min.css', + inject: false, + bundleName: 'lepton6', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton1.rtl.min.css', + inject: false, + bundleName: 'lepton1.rtl', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton2.rtl.min.css', + inject: false, + bundleName: 'lepton2.rtl', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton3.rtl.min.css', + inject: false, + bundleName: 'lepton3.rtl', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton4.rtl.min.css', + inject: false, + bundleName: 'lepton4.rtl', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton5.rtl.min.css', + inject: false, + bundleName: 'lepton5.rtl', + }, + { + input: 'node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.rtl.min.css', + inject: false, + bundleName: 'lepton6.rtl', + }, +]); +styleMap.set(ThemeOptionsEnum.LeptonX, [ + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dark.css', + inject: false, + bundleName: 'dark', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/light.css', + inject: false, + bundleName: 'light', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dim.css', + inject: false, + bundleName: 'dim', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dim.css', + inject: false, + bundleName: 'bootstrap-dim', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dark.css', + inject: false, + bundleName: 'bootstrap-dark', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-light.css', + inject: false, + bundleName: 'bootstrap-light', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/ng-bundle.css', + inject: false, + bundleName: 'ng-bundle', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/side-menu/layout-bundle.css', + inject: false, + bundleName: 'layout-bundle', + }, + { + input: 'node_modules/@volosoft/abp.ng.theme.lepton-x/assets/css/abp-bundle.css', + inject: false, + bundleName: 'abp-bundle', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dark.rtl.css', + inject: false, + bundleName: 'dark.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/light.rtl.css', + inject: false, + bundleName: 'light.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/dim.rtl.css', + inject: false, + bundleName: 'dim.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dim.rtl.css', + inject: false, + bundleName: 'bootstrap-dim.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-dark.rtl.css', + inject: false, + bundleName: 'bootstrap-dark.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/bootstrap-light.rtl.css', + inject: false, + bundleName: 'bootstrap-light.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/ng-bundle.rtl.css', + inject: false, + bundleName: 'ng-bundle.rtl', + }, + { + input: 'node_modules/@volosoft/ngx-lepton-x/assets/css/side-menu/layout-bundle.rtl.css', + inject: false, + bundleName: 'layout-bundle.rtl', + }, + { + input: 'node_modules/@volosoft/abp.ng.theme.lepton-x/assets/css/abp-bundle.rtl.css', + inject: false, + bundleName: 'abp-bundle.rtl', + }, +]); +styleMap.set(ThemeOptionsEnum.LeptonXLite, [ + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.css', + inject: false, + bundleName: 'bootstrap-dim', + }, + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.css', + inject: false, + bundleName: 'ng-bundle', + }, + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.css', + inject: false, + bundleName: 'layout-bundle', + }, + { + input: 'node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.css', + inject: false, + bundleName: 'abp-bundle', + }, + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.rtl.css', + inject: false, + bundleName: 'bootstrap-dim.rtl', + }, + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.rtl.css', + inject: false, + bundleName: 'ng-bundle.rtl', + }, + { + input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.rtl.css', + inject: false, + bundleName: 'layout-bundle.rtl', + }, + { + input: 'node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.rtl.css', + inject: false, + bundleName: 'abp-bundle.rtl', + }, +]); +// the code written by Github co-pilot. thank go-pilot. You are the best sidekick. +export const allStyles = Array.from(styleMap.values()).reduce((acc, val) => [...acc, ...val], []); diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/theme-options.enum.ts b/npm/ng-packs/packages/schematics/src/commands/change-theme/theme-options.enum.ts index 2904d99b8a..6e2f863674 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/theme-options.enum.ts +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/theme-options.enum.ts @@ -1,6 +1,8 @@ -export const ThemeOptionsEnum = Object.freeze({ - basic: 'basic', - lepton: 'lepton', - 'leptonx-lite': 'leptonx-lite', - leptonx: 'leptonx', -}); +// this enum create by https://raw.githubusercontent.com/abpframework/abp/rel-6.0/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs + +export enum ThemeOptionsEnum { + Basic = 1, + Lepton = 2, + LeptonXLite = 3, + LeptonX = 4, +}