From cf234b4ecc9bd2098c2e56cb06d73ffe2f5ffd81 Mon Sep 17 00:00:00 2001 From: Aliullov Vlad <91639107+GoodDayForSurf@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:51:59 +0400 Subject: [PATCH 01/19] Move to create vite for creating React app (#928) * replace create-react-app by create-vite for creating React App template --------- Co-authored-by: Vasily Strelyaev --- package-lock.json | 299 +----------------- packages/devextreme-cli/package-lock.json | 38 ++- packages/devextreme-cli/package.json | 1 + .../src/applications/application.react.js | 35 +- .../templates/cra-template-typescript/LICENSE | 21 -- .../cra-template-typescript/README.md | 20 -- .../cra-template-typescript/package.json | 27 -- .../cra-template-typescript/template.json | 19 -- .../template/README.md | 46 --- .../template/gitignore | 23 -- .../template/public/index.html | 43 --- .../template/src/App.css | 38 --- .../template/src/App.test.tsx | 10 - .../template/src/App.tsx | 26 -- .../template/src/index.tsx | 19 -- .../template/src/logo.svg | 1 - .../template/src/reportWebVitals.ts | 13 - .../template/src/setupTests.ts | 5 - .../src/templates/cra-template/LICENSE | 21 -- .../src/templates/cra-template/README.md | 10 - .../src/templates/cra-template/package.json | 26 -- .../src/templates/cra-template/template.json | 14 - .../templates/cra-template/template/README.md | 70 ---- .../templates/cra-template/template/gitignore | 23 -- .../cra-template/template/public/favicon.ico | Bin 3870 -> 0 bytes .../cra-template/template/public/index.html | 43 --- .../cra-template/template/public/logo192.png | Bin 5347 -> 0 bytes .../cra-template/template/public/logo512.png | Bin 9664 -> 0 bytes .../template/public/manifest.json | 25 -- .../cra-template/template/public/robots.txt | 3 - .../cra-template/template/src/App.css | 38 --- .../cra-template/template/src/App.js | 25 -- .../cra-template/template/src/App.test.js | 9 - .../cra-template/template/src/index.css | 12 - .../cra-template/template/src/index.js | 17 - .../cra-template/template/src/logo.svg | 1 - .../template/src/reportWebVitals.js | 13 - .../cra-template/template/src/setupTests.js | 5 - .../application}/public/favicon.ico | Bin .../application}/public/logo192.png | Bin .../application}/public/logo512.png | Bin .../application}/public/manifest.json | 0 .../application}/public/robots.txt | 0 .../react/application/src/App.test.tsx | 13 - .../templates/react/application/src/App.tsx | 1 - .../ChangePasswordForm.tsx | 4 +- .../CreateAccountForm.scss | 2 - .../create-account-form/CreateAccountForm.tsx | 4 +- .../src/components/footer/Footer.tsx | 1 - .../src/components/header/Header.tsx | 1 - .../src/components/login-form/LoginForm.scss | 2 - .../src/components/login-form/LoginForm.tsx | 4 +- .../ResetPasswordForm.scss | 2 - .../reset-password-form/ResetPasswordForm.tsx | 4 +- .../SideNavigationMenu.scss | 6 +- .../SideNavigationMenu.tsx | 2 +- .../theme-switcher/ThemeSwitcher.tsx | 2 +- .../src/components/user-panel/UserPanel.tsx | 2 +- .../react/application/src/dx-styles.scss | 2 + .../application}/src/index.css | 0 .../side-nav-inner-toolbar.tsx | 16 +- .../side-nav-outer-toolbar.tsx | 16 +- .../src/layouts/single-card/single-card.scss | 2 - .../src/layouts/single-card/single-card.tsx | 1 - .../react/application/src/matchMediaMock.tsx | 14 - .../react/application/src/polyfills.tsx | 2 - .../templates/react/application/src/types.tsx | 3 +- .../application/src/utils/media-query.tsx | 4 +- .../react/application/src/utils/patches.scss | 8 +- .../react/sample-pages/home/home.scss | 2 - .../react/sample-pages/home/home.tsx | 2 +- .../react/sample-pages/tasks/tasks.tsx | 8 +- .../vue-v3/sample-pages/tasks-page.vue | 2 +- .../src/utility/latest-versions.js | 1 + .../src/utility/typescript-extension.js | 2 +- ...ner-toolbar-fluent-large-add-view-snap.png | Bin 21992 -> 22489 bytes ...v-inner-toolbar-fluent-large-home-snap.png | Bin 9949 -> 10117 bytes ...nner-toolbar-fluent-large-profile-snap.png | Bin 71532 -> 73395 bytes ...-inner-toolbar-fluent-large-tasks-snap.png | Bin 91749 -> 94981 bytes ...inner-toolbar-fluent-large-toggle-snap.png | Bin 66166 -> 67085 bytes ...r-toolbar-fluent-large-user-panel-snap.png | Bin 11054 -> 11366 bytes ...ner-toolbar-fluent-small-add-view-snap.png | Bin 11756 -> 11990 bytes ...v-inner-toolbar-fluent-small-home-snap.png | Bin 6293 -> 6322 bytes ...nner-toolbar-fluent-small-profile-snap.png | Bin 43097 -> 43880 bytes ...-inner-toolbar-fluent-small-tasks-snap.png | Bin 24971 -> 25612 bytes ...inner-toolbar-fluent-small-toggle-snap.png | Bin 28255 -> 29285 bytes ...r-toolbar-fluent-small-user-panel-snap.png | Bin 15929 -> 16606 bytes ...er-toolbar-fluent-xsmall-add-view-snap.png | Bin 10389 -> 10628 bytes ...-inner-toolbar-fluent-xsmall-home-snap.png | Bin 5060 -> 5078 bytes ...ner-toolbar-fluent-xsmall-profile-snap.png | Bin 41968 -> 43020 bytes ...inner-toolbar-fluent-xsmall-tasks-snap.png | Bin 24705 -> 25429 bytes ...nner-toolbar-fluent-xsmall-toggle-snap.png | Bin 13381 -> 13642 bytes ...-toolbar-fluent-xsmall-user-panel-snap.png | Bin 36330 -> 36980 bytes ...er-toolbar-generic-large-add-view-snap.png | Bin 21197 -> 21559 bytes ...-inner-toolbar-generic-large-home-snap.png | Bin 9933 -> 10167 bytes ...ner-toolbar-generic-large-profile-snap.png | Bin 69019 -> 71011 bytes ...inner-toolbar-generic-large-tasks-snap.png | Bin 94319 -> 98973 bytes ...nner-toolbar-generic-large-toggle-snap.png | Bin 64627 -> 65835 bytes ...-toolbar-generic-large-user-panel-snap.png | Bin 9948 -> 10172 bytes ...er-toolbar-generic-small-add-view-snap.png | Bin 11008 -> 11150 bytes ...-inner-toolbar-generic-small-home-snap.png | Bin 5945 -> 6011 bytes ...ner-toolbar-generic-small-profile-snap.png | Bin 41743 -> 42827 bytes ...inner-toolbar-generic-small-tasks-snap.png | Bin 33259 -> 34889 bytes ...nner-toolbar-generic-small-toggle-snap.png | Bin 27388 -> 28262 bytes ...-toolbar-generic-small-user-panel-snap.png | Bin 14821 -> 15551 bytes ...r-toolbar-generic-xsmall-add-view-snap.png | Bin 10188 -> 10350 bytes ...inner-toolbar-generic-xsmall-home-snap.png | Bin 4822 -> 4886 bytes ...er-toolbar-generic-xsmall-profile-snap.png | Bin 41380 -> 42289 bytes ...nner-toolbar-generic-xsmall-tasks-snap.png | Bin 30564 -> 31775 bytes ...ner-toolbar-generic-xsmall-toggle-snap.png | Bin 12539 -> 12792 bytes ...toolbar-generic-xsmall-user-panel-snap.png | Bin 35325 -> 36156 bytes ...r-toolbar-material-large-add-view-snap.png | Bin 21249 -> 21445 bytes ...inner-toolbar-material-large-home-snap.png | Bin 9812 -> 9907 bytes ...er-toolbar-material-large-profile-snap.png | Bin 67147 -> 68801 bytes ...nner-toolbar-material-large-tasks-snap.png | Bin 79375 -> 81049 bytes ...ner-toolbar-material-large-toggle-snap.png | Bin 64062 -> 64838 bytes ...toolbar-material-large-user-panel-snap.png | Bin 9539 -> 9752 bytes ...r-toolbar-material-small-add-view-snap.png | Bin 11396 -> 11512 bytes ...inner-toolbar-material-small-home-snap.png | Bin 6310 -> 6366 bytes ...er-toolbar-material-small-profile-snap.png | Bin 40011 -> 40714 bytes ...nner-toolbar-material-small-tasks-snap.png | Bin 22167 -> 22687 bytes ...ner-toolbar-material-small-toggle-snap.png | Bin 25257 -> 26503 bytes ...toolbar-material-small-user-panel-snap.png | Bin 14314 -> 14856 bytes ...-toolbar-material-xsmall-add-view-snap.png | Bin 10720 -> 10859 bytes ...nner-toolbar-material-xsmall-home-snap.png | Bin 5487 -> 5540 bytes ...r-toolbar-material-xsmall-profile-snap.png | Bin 39157 -> 39850 bytes ...ner-toolbar-material-xsmall-tasks-snap.png | Bin 22179 -> 22423 bytes ...er-toolbar-material-xsmall-toggle-snap.png | Bin 12069 -> 12318 bytes ...oolbar-material-xsmall-user-panel-snap.png | Bin 34170 -> 34753 bytes ...ter-toolbar-fluent-large-add-view-snap.png | Bin 21973 -> 22478 bytes ...lbar-fluent-large-change-password-snap.png | Bin 16228 -> 16586 bytes ...olbar-fluent-large-create-account-snap.png | Bin 23017 -> 23609 bytes ...v-outer-toolbar-fluent-large-home-snap.png | Bin 9960 -> 10129 bytes ...-outer-toolbar-fluent-large-login-snap.png | Bin 17036 -> 17437 bytes ...uter-toolbar-fluent-large-profile-snap.png | Bin 71517 -> 73379 bytes ...olbar-fluent-large-reset-password-snap.png | Bin 22220 -> 22815 bytes ...-outer-toolbar-fluent-large-tasks-snap.png | Bin 91727 -> 94969 bytes ...outer-toolbar-fluent-large-toggle-snap.png | Bin 66925 -> 68431 bytes ...r-toolbar-fluent-large-user-panel-snap.png | Bin 11054 -> 11366 bytes ...ter-toolbar-fluent-small-add-view-snap.png | Bin 12891 -> 13212 bytes ...lbar-fluent-small-change-password-snap.png | Bin 11112 -> 11463 bytes ...olbar-fluent-small-create-account-snap.png | Bin 14991 -> 15367 bytes ...v-outer-toolbar-fluent-small-home-snap.png | Bin 7443 -> 7553 bytes ...-outer-toolbar-fluent-small-login-snap.png | Bin 9704 -> 9967 bytes ...uter-toolbar-fluent-small-profile-snap.png | Bin 44216 -> 45112 bytes ...olbar-fluent-small-reset-password-snap.png | Bin 16238 -> 16529 bytes ...-outer-toolbar-fluent-small-tasks-snap.png | Bin 25948 -> 26720 bytes ...outer-toolbar-fluent-small-toggle-snap.png | Bin 28397 -> 29439 bytes ...r-toolbar-fluent-small-user-panel-snap.png | Bin 15929 -> 16606 bytes ...er-toolbar-fluent-xsmall-add-view-snap.png | Bin 11566 -> 11888 bytes ...bar-fluent-xsmall-change-password-snap.png | Bin 10198 -> 10536 bytes ...lbar-fluent-xsmall-create-account-snap.png | Bin 15911 -> 16315 bytes ...-outer-toolbar-fluent-xsmall-home-snap.png | Bin 6242 -> 6341 bytes ...outer-toolbar-fluent-xsmall-login-snap.png | Bin 10739 -> 11101 bytes ...ter-toolbar-fluent-xsmall-profile-snap.png | Bin 43055 -> 44252 bytes ...lbar-fluent-xsmall-reset-password-snap.png | Bin 14983 -> 15321 bytes ...outer-toolbar-fluent-xsmall-tasks-snap.png | Bin 25778 -> 26580 bytes ...uter-toolbar-fluent-xsmall-toggle-snap.png | Bin 14067 -> 14324 bytes ...-toolbar-fluent-xsmall-user-panel-snap.png | Bin 37614 -> 38341 bytes ...er-toolbar-generic-large-add-view-snap.png | Bin 21175 -> 21437 bytes ...bar-generic-large-change-password-snap.png | Bin 15733 -> 16062 bytes ...lbar-generic-large-create-account-snap.png | Bin 22448 -> 22940 bytes ...-outer-toolbar-generic-large-home-snap.png | Bin 9910 -> 10151 bytes ...outer-toolbar-generic-large-login-snap.png | Bin 16487 -> 16799 bytes ...ter-toolbar-generic-large-profile-snap.png | Bin 68990 -> 70998 bytes ...lbar-generic-large-reset-password-snap.png | Bin 21835 -> 22442 bytes ...outer-toolbar-generic-large-tasks-snap.png | Bin 94302 -> 98940 bytes ...uter-toolbar-generic-large-toggle-snap.png | Bin 65290 -> 67033 bytes ...-toolbar-generic-large-user-panel-snap.png | Bin 9948 -> 10172 bytes ...er-toolbar-generic-small-add-view-snap.png | Bin 12197 -> 12402 bytes ...bar-generic-small-change-password-snap.png | Bin 10650 -> 10976 bytes ...lbar-generic-small-create-account-snap.png | Bin 16143 -> 16681 bytes ...-outer-toolbar-generic-small-home-snap.png | Bin 7130 -> 7253 bytes ...outer-toolbar-generic-small-login-snap.png | Bin 11072 -> 11410 bytes ...ter-toolbar-generic-small-profile-snap.png | Bin 42844 -> 44079 bytes ...lbar-generic-small-reset-password-snap.png | Bin 15842 -> 16294 bytes ...outer-toolbar-generic-small-tasks-snap.png | Bin 34256 -> 36110 bytes ...uter-toolbar-generic-small-toggle-snap.png | Bin 27597 -> 28418 bytes ...-toolbar-generic-small-user-panel-snap.png | Bin 14821 -> 15551 bytes ...r-toolbar-generic-xsmall-add-view-snap.png | Bin 11363 -> 11589 bytes ...ar-generic-xsmall-change-password-snap.png | Bin 10079 -> 10377 bytes ...bar-generic-xsmall-create-account-snap.png | Bin 15784 -> 16262 bytes ...outer-toolbar-generic-xsmall-home-snap.png | Bin 6012 -> 6133 bytes ...uter-toolbar-generic-xsmall-login-snap.png | Bin 10646 -> 10954 bytes ...er-toolbar-generic-xsmall-profile-snap.png | Bin 42473 -> 43360 bytes ...bar-generic-xsmall-reset-password-snap.png | Bin 14729 -> 15091 bytes ...uter-toolbar-generic-xsmall-tasks-snap.png | Bin 31576 -> 32842 bytes ...ter-toolbar-generic-xsmall-toggle-snap.png | Bin 13234 -> 13459 bytes ...toolbar-generic-xsmall-user-panel-snap.png | Bin 36542 -> 37471 bytes ...r-toolbar-material-large-add-view-snap.png | Bin 21223 -> 21418 bytes ...ar-material-large-change-password-snap.png | Bin 16067 -> 16346 bytes ...bar-material-large-create-account-snap.png | Bin 22837 -> 23300 bytes ...outer-toolbar-material-large-home-snap.png | Bin 9780 -> 9882 bytes ...uter-toolbar-material-large-login-snap.png | Bin 17555 -> 17900 bytes ...er-toolbar-material-large-profile-snap.png | Bin 67122 -> 68776 bytes ...bar-material-large-reset-password-snap.png | Bin 21258 -> 21644 bytes ...uter-toolbar-material-large-tasks-snap.png | Bin 79353 -> 81028 bytes ...ter-toolbar-material-large-toggle-snap.png | Bin 64803 -> 65930 bytes ...toolbar-material-large-user-panel-snap.png | Bin 9539 -> 9752 bytes ...r-toolbar-material-small-add-view-snap.png | Bin 12454 -> 12592 bytes ...ar-material-small-change-password-snap.png | Bin 11033 -> 11335 bytes ...bar-material-small-create-account-snap.png | Bin 10990 -> 11293 bytes ...outer-toolbar-material-small-home-snap.png | Bin 7411 -> 7486 bytes ...uter-toolbar-material-small-login-snap.png | Bin 7974 -> 8117 bytes ...er-toolbar-material-small-profile-snap.png | Bin 41019 -> 41761 bytes ...bar-material-small-reset-password-snap.png | Bin 15447 -> 15724 bytes ...uter-toolbar-material-small-tasks-snap.png | Bin 23049 -> 23586 bytes ...ter-toolbar-material-small-toggle-snap.png | Bin 25526 -> 26717 bytes ...toolbar-material-small-user-panel-snap.png | Bin 14314 -> 14856 bytes ...-toolbar-material-xsmall-add-view-snap.png | Bin 11775 -> 11930 bytes ...r-material-xsmall-change-password-snap.png | Bin 10378 -> 10690 bytes ...ar-material-xsmall-create-account-snap.png | Bin 16110 -> 16489 bytes ...uter-toolbar-material-xsmall-home-snap.png | Bin 6595 -> 6658 bytes ...ter-toolbar-material-xsmall-login-snap.png | Bin 11366 -> 11626 bytes ...r-toolbar-material-xsmall-profile-snap.png | Bin 40121 -> 40814 bytes ...ar-material-xsmall-reset-password-snap.png | Bin 14510 -> 14676 bytes ...ter-toolbar-material-xsmall-tasks-snap.png | Bin 23069 -> 23347 bytes ...er-toolbar-material-xsmall-toggle-snap.png | Bin 13370 -> 13623 bytes ...oolbar-material-xsmall-user-panel-snap.png | Bin 35289 -> 35966 bytes .../devextreme-cli/testing/env.react-ts.js | 2 +- packages/devextreme-cli/testing/env.react.js | 6 +- packages/devextreme-cli/testing/linting.js | 12 +- .../side-navigation-menu.component.ts | 2 +- .../files/pages/tasks/tasks.component.ts | 2 +- 224 files changed, 108 insertions(+), 1090 deletions(-) delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/LICENSE delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/README.md delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/package.json delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template.json delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/README.md delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/gitignore delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/public/index.html delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.css delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.test.tsx delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.tsx delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.tsx delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/logo.svg delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/reportWebVitals.ts delete mode 100644 packages/devextreme-cli/src/templates/cra-template-typescript/template/src/setupTests.ts delete mode 100644 packages/devextreme-cli/src/templates/cra-template/LICENSE delete mode 100644 packages/devextreme-cli/src/templates/cra-template/README.md delete mode 100644 packages/devextreme-cli/src/templates/cra-template/package.json delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template.json delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/README.md delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/gitignore delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/favicon.ico delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/index.html delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/logo192.png delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/logo512.png delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/manifest.json delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/public/robots.txt delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/App.css delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/App.js delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/App.test.js delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/index.css delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/index.js delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/logo.svg delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/reportWebVitals.js delete mode 100644 packages/devextreme-cli/src/templates/cra-template/template/src/setupTests.js rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/public/favicon.ico (100%) rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/public/logo192.png (100%) rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/public/logo512.png (100%) rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/public/manifest.json (100%) rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/public/robots.txt (100%) delete mode 100644 packages/devextreme-cli/src/templates/react/application/src/App.test.tsx rename packages/devextreme-cli/src/templates/{cra-template-typescript/template => react/application}/src/index.css (100%) delete mode 100644 packages/devextreme-cli/src/templates/react/application/src/matchMediaMock.tsx delete mode 100644 packages/devextreme-cli/src/templates/react/application/src/polyfills.tsx diff --git a/package-lock.json b/package-lock.json index 172d932c7..02118673f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,62 +15,6 @@ "puppeteer": "^21.11.0" } }, - "node_modules/@angular-devkit/core": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.2.tgz", - "integrity": "sha512-RGSkcu03Zybg7drenKxBHvQ/xF8LLZR7o09S4vtLVDwMTGW/ZHnZ+YSC0OuRddbtBlBRhjmsQN6HPvXXfwGLkQ==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.2.tgz", - "integrity": "sha512-5CRHrurFwJh7IPpo56DbIjcqzI1usraYwjHKZFeXoW4sQTRP5yeSuJoBM9zuBX5ZFQVCRt24j5DQTlsGk7Ky8Q==", - "dev": true, - "peer": true, - "dependencies": { - "@angular-devkit/core": "16.1.2", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -201,13 +145,6 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, "node_modules/@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -1955,41 +1892,6 @@ "node": ">=8" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -3348,13 +3250,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "peer": true - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -4539,13 +4434,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, "node_modules/json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -4853,19 +4741,6 @@ "node": ">=12" } }, - "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6708,16 +6583,6 @@ "once": "^1.3.1" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/puppeteer": { "version": "21.11.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.11.0.tgz", @@ -6779,21 +6644,6 @@ } } }, - "node_modules/puppeteer/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -7163,16 +7013,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -8034,16 +7874,6 @@ "yarn": "*" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/urlpattern-polyfill": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", @@ -8427,43 +8257,6 @@ } }, "dependencies": { - "@angular-devkit/core": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.2.tgz", - "integrity": "sha512-RGSkcu03Zybg7drenKxBHvQ/xF8LLZR7o09S4vtLVDwMTGW/ZHnZ+YSC0OuRddbtBlBRhjmsQN6HPvXXfwGLkQ==", - "dev": true, - "peer": true, - "requires": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "peer": true - } - } - }, - "@angular-devkit/schematics": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.2.tgz", - "integrity": "sha512-5CRHrurFwJh7IPpo56DbIjcqzI1usraYwjHKZFeXoW4sQTRP5yeSuJoBM9zuBX5ZFQVCRt24j5DQTlsGk7Ky8Q==", - "dev": true, - "peer": true, - "requires": { - "@angular-devkit/core": "16.1.2", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", - "ora": "5.4.1", - "rxjs": "7.8.1" - } - }, "@angular-eslint/schematics": { "version": "0.2.0-beta.1", "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.2.0-beta.1.tgz", @@ -8569,13 +8362,6 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, "@lerna/add": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", @@ -9725,8 +9511,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "requires": {} + "dev": true }, "@octokit/plugin-rest-endpoint-methods": { "version": "6.7.0", @@ -10002,29 +9787,6 @@ "indent-string": "^4.0.0" } }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "peer": true, - "requires": { - "ajv": "^8.0.0" - } - }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -11056,13 +10818,6 @@ } } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "peer": true - }, "fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -11978,13 +11733,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, "json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -12233,16 +11981,6 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, - "magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -13661,13 +13399,6 @@ "once": "^1.3.1" } }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "peer": true - }, "puppeteer": { "version": "21.11.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.11.0.tgz", @@ -13690,14 +13421,6 @@ "js-yaml": "^4.1.0", "parse-json": "^5.2.0" } - }, - "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, - "optional": true, - "peer": true } } }, @@ -13994,13 +13717,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true - }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -14660,16 +14376,6 @@ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "requires": { - "punycode": "^2.1.0" - } - }, "urlpattern-polyfill": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", @@ -14914,8 +14620,7 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "requires": {} + "dev": true }, "xtend": { "version": "4.0.2", diff --git a/packages/devextreme-cli/package-lock.json b/packages/devextreme-cli/package-lock.json index 7f35170dd..604e9d2b5 100644 --- a/packages/devextreme-cli/package-lock.json +++ b/packages/devextreme-cli/package-lock.json @@ -26,6 +26,7 @@ "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "babel-eslint": "^10.1.0", + "create-vite": "6.3.1", "cross-env": "^5.2.1", "eslint": "^7.32.0", "eslint-config-angular": "^0.5.0", @@ -2877,6 +2878,22 @@ "node": ">=8" } }, + "node_modules/create-vite": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/create-vite/-/create-vite-6.3.1.tgz", + "integrity": "sha512-kI3S6OgiBYnRlmhr4gNY76Fj62fMh+KukEd2PSAvMPdnY95rHhJCjCoUlt4BuHVNjfmRMbsFBBtO5dryFoSyUw==", + "dev": true, + "bin": { + "create-vite": "index.js", + "cva": "index.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + } + }, "node_modules/cross-env": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", @@ -10769,8 +10786,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv": { "version": "6.12.6", @@ -11359,6 +11375,12 @@ } } }, + "create-vite": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/create-vite/-/create-vite-6.3.1.tgz", + "integrity": "sha512-kI3S6OgiBYnRlmhr4gNY76Fj62fMh+KukEd2PSAvMPdnY95rHhJCjCoUlt4BuHVNjfmRMbsFBBtO5dryFoSyUw==", + "dev": true + }, "cross-env": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", @@ -11427,8 +11449,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "requires": {} + "dev": true }, "deep-is": { "version": "0.1.4", @@ -11911,8 +11932,7 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-angular": { "version": "4.1.0", @@ -12041,8 +12061,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-unused-imports": { "version": "1.1.5", @@ -13753,8 +13772,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "29.6.3", diff --git a/packages/devextreme-cli/package.json b/packages/devextreme-cli/package.json index e0965ac5f..5a82a2df7 100644 --- a/packages/devextreme-cli/package.json +++ b/packages/devextreme-cli/package.json @@ -52,6 +52,7 @@ "@typescript-eslint/parser": "^4.33.0", "babel-eslint": "^10.1.0", "cross-env": "^5.2.1", + "create-vite": "6.3.1", "eslint": "^7.32.0", "eslint-config-angular": "^0.5.0", "eslint-config-prettier": "^8.10.0", diff --git a/packages/devextreme-cli/src/applications/application.react.js b/packages/devextreme-cli/src/applications/application.react.js index 9be907fa6..6452d5da7 100644 --- a/packages/devextreme-cli/src/applications/application.react.js +++ b/packages/devextreme-cli/src/applications/application.react.js @@ -13,13 +13,12 @@ const stringUtils = require('../utility/string'); const typescriptUtils = require('../utility/typescript-extension'); const removeFile = require('../utility/file-operations').remove; const latestVersions = require('../utility/latest-versions'); -const { extractToolingVersion } = require('../utility/extract-tooling-version'); const defaultStyles = [ 'devextreme/dist/css/dx.light.css' ]; const getExtension = (appPath) => { - return fs.existsSync(path.join(appPath, 'src', 'App.tsx')) ? '.tsx' : '.js'; + return fs.existsSync(path.join(appPath, 'src', 'App.tsx')) ? '.tsx' : '.jsx'; }; const pathToPagesIndex = () => { @@ -27,9 +26,9 @@ const pathToPagesIndex = () => { return path.join(process.cwd(), 'src', 'pages', `index${extension}`); }; -const preparePackageJsonForTemplate = (appPath, appName, isTypeScript) => { +const preparePackageJsonForTemplate = (appPath, appName) => { const dependencies = [ - { name: 'sass', version: '^1.34.1' }, + { name: 'sass-embedded', version: '^1.85.1' }, { name: 'devextreme-cli', version: latestVersions['devextreme-cli'], dev: true }, { name: 'react-router-dom', version: '^6.3.0' }, ]; @@ -60,27 +59,25 @@ const create = async(appName, options) => { layout: stringUtils.classify(layoutType), isTypeScript: typescriptUtils.isTypeScript(templateType) }); - const toolingVersion = extractToolingVersion(options); - const commandArguments = [`-p=create-react-app${toolingVersion}`, 'create-react-app', appName]; - const templateSuffix = templateOptions.isTypeScript ? '-typescript' : ''; - const templatePath = path.resolve(__dirname, `../templates/cra-template${templateSuffix}`); + const commandArguments = [`-p=create-vite@${latestVersions['create-vite']}`, 'create-vite', appName]; - commandArguments.push(`--template file:${templatePath}`); + commandArguments.push(`--template react${templateOptions.isTypeScript ? '-ts' : ''}`); await runCommand('npx', commandArguments); const appPath = path.join(process.cwd(), appName); modifyIndexHtml(appPath, templateOptions.project); + addTemplate(appPath, appName, templateOptions); }; const modifyIndexHtml = (appPath, appName) => { - const indexHtmlPath = path.join(appPath, 'public', 'index.html'); + const indexHtmlPath = path.join(appPath, 'index.html'); let htmlContent = fs.readFileSync(indexHtmlPath).toString(); - htmlContent = htmlContent.replace(/(\w+\s*)+<\/title>/, `<title>${appName}<\/title>`); + htmlContent = htmlContent.replace(/<title>[^<]+<\/title>/, `<title>${appName}<\/title>`); htmlContent = htmlContent.replace('<body>', '<body class="dx-viewport">'); fs.writeFileSync(indexHtmlPath, htmlContent); @@ -97,7 +94,6 @@ const addTemplate = (appPath, appName, templateOptions) => { ); const manifestPath = path.join(appPath, 'public', 'manifest.json'); - const indexPath = path.join(appPath, 'src', templateOptions.isTypeScript ? 'index.tsx' : 'index.js'); const styles = [ './themes/generated/theme.additional.css', @@ -108,15 +104,15 @@ const addTemplate = (appPath, appName, templateOptions) => { ]; templateCreator.moveTemplateFilesToProject(applicationTemplatePath, appPath, templateOptions, getCorrectPath); - removeFile(path.join(appPath, 'src', 'App.css')); - !templateOptions.isTypeScript && removeFile(path.join(appPath, 'src', 'types.js')); + + !templateOptions.isTypeScript && removeFile(path.join(appPath, 'src', 'types.jsx')); + if(!templateOptions.empty) { addSamplePages(appPath, templateOptions); } preparePackageJsonForTemplate(appPath, appName, templateOptions.isTypeScript); updateJsonPropName(manifestPath, appName); - addPolyfills(packageJsonUtils.getPackageJsonPath(), indexPath); install({}, appPath, styles); }; @@ -130,15 +126,6 @@ const install = (options, appPath, styles) => { packageManager.runInstall({ cwd: appPath }); }; -const addPolyfills = (packagePath, indexPath) => { - const packages = [ - { name: 'react-app-polyfill', version: '^1.0.0' } - ]; - - packageJsonUtils.addDependencies(packagePath, packages); - moduleUtils.insertImport(indexPath, './polyfills'); -}; - const addStylesToApp = (filePath, styles) => { styles.forEach(style => { moduleUtils.insertImport(filePath, style); diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/LICENSE b/packages/devextreme-cli/src/templates/cra-template-typescript/LICENSE deleted file mode 100644 index 5930f2b8d..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-present, Facebook, Inc. - -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. \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/README.md b/packages/devextreme-cli/src/templates/cra-template-typescript/README.md deleted file mode 100644 index e7197568d..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# cra-template-typescript - -This is the official TypeScript template for [Create React App](https://github.com/facebook/create-react-app). - -To use this template, add `--template typescript` when creating a new app. - -For example: - -```sh -npx create-react-app my-app --template typescript - -# or - -yarn create react-app my-app --template typescript -``` - -For more information, please refer to: - -- [Getting Started](https://create-react-app.dev/docs/getting-started) – How to create a new app. -- [User Guide](https://create-react-app.dev) – How to develop apps bootstrapped with Create React App. diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/package.json b/packages/devextreme-cli/src/templates/cra-template-typescript/package.json deleted file mode 100644 index 88de656d7..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "cra-template-typescript", - "version": "1.2.0", - "keywords": [ - "react", - "create-react-app", - "template", - "typescript" - ], - "description": "The base TypeScript template for Create React App.", - "repository": { - "type": "git", - "url": "https://github.com/facebook/create-react-app.git", - "directory": "packages/cra-template-typescript" - }, - "license": "MIT", - "engines": { - "node": ">=14.21.3" - }, - "bugs": { - "url": "https://github.com/facebook/create-react-app/issues" - }, - "files": [ - "template", - "template.json" - ] -} diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template.json b/packages/devextreme-cli/src/templates/cra-template-typescript/template.json deleted file mode 100644 index 3678a922d..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "package": { - "dependencies": { - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", - "@testing-library/dom": "^10.4.0", - "@testing-library/user-event": "^14.6.0", - "@types/jest": "^29.5.14", - "@types/node": "^22.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "typescript": "^4.0.0", - "web-vitals": "^4.2.4" - }, - "eslintConfig": { - "extends": ["react-app", "react-app/jest"] - } - } -} diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/README.md b/packages/devextreme-cli/src/templates/cra-template-typescript/template/README.md deleted file mode 100644 index b87cb0044..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/gitignore b/packages/devextreme-cli/src/templates/cra-template-typescript/template/gitignore deleted file mode 100644 index 4d29575de..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/index.html b/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/index.html deleted file mode 100644 index aa069f27c..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <meta name="theme-color" content="#000000" /> - <meta - name="description" - content="Web site created using create-react-app" - /> - <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> - <!-- - manifest.json provides metadata used when your web app is installed on a - user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ - --> - <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> - <!-- - Notice the use of %PUBLIC_URL% in the tags above. - It will be replaced with the URL of the `public` folder during the build. - Only files inside the `public` folder can be referenced from the HTML. - - Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will - work correctly both with client-side routing and a non-root public URL. - Learn how to configure a non-root public URL by running `npm run build`. - --> - <title>React App - - - -
- - - diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.css b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.css deleted file mode 100644 index 74b5e0534..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.test.tsx b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.test.tsx deleted file mode 100644 index f0db7d3d4..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import { screen } from '@testing-library/dom'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.tsx b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.tsx deleted file mode 100644 index a53698aab..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/App.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( -
-
- logo -

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
- ); -} - -export default App; diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.tsx b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.tsx deleted file mode 100644 index 032464fb6..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; - -const root = ReactDOM.createRoot( - document.getElementById('root') as HTMLElement -); -root.render( - - - -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/logo.svg b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/logo.svg deleted file mode 100644 index 9dfc1c058..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/reportWebVitals.ts b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/reportWebVitals.ts deleted file mode 100644 index 1e8febd4a..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/reportWebVitals.ts +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = (onPerfEntry?: () => any) => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ onLCP, onINP, onCLS, onFCP, onTTFB }) => { - onCLS(onPerfEntry); - onINP(onPerfEntry); - onLCP(onPerfEntry); - onFCP(onPerfEntry); - onTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/setupTests.ts b/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/setupTests.ts deleted file mode 100644 index 8f2609b7b..000000000 --- a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/setupTests.ts +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/packages/devextreme-cli/src/templates/cra-template/LICENSE b/packages/devextreme-cli/src/templates/cra-template/LICENSE deleted file mode 100644 index 5930f2b8d..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-present, Facebook, Inc. - -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. \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/cra-template/README.md b/packages/devextreme-cli/src/templates/cra-template/README.md deleted file mode 100644 index 9e8434b78..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# cra-template - -This is the official base template for [Create React App](https://github.com/facebook/create-react-app). - -If you don't specify a template (for example, `--template typescript`), this template will be used by default. - -For more information, please refer to: - -- [Getting Started](https://create-react-app.dev/docs/getting-started) – How to create a new app. -- [User Guide](https://create-react-app.dev) – How to develop apps bootstrapped with Create React App. diff --git a/packages/devextreme-cli/src/templates/cra-template/package.json b/packages/devextreme-cli/src/templates/cra-template/package.json deleted file mode 100644 index 53350728e..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "cra-template", - "version": "1.2.0", - "keywords": [ - "react", - "create-react-app", - "template" - ], - "description": "The base template for Create React App.", - "repository": { - "type": "git", - "url": "https://github.com/facebook/create-react-app.git", - "directory": "packages/cra-template" - }, - "license": "MIT", - "engines": { - "node": ">=14.21.3" - }, - "bugs": { - "url": "https://github.com/facebook/create-react-app/issues" - }, - "files": [ - "template", - "template.json" - ] -} diff --git a/packages/devextreme-cli/src/templates/cra-template/template.json b/packages/devextreme-cli/src/templates/cra-template/template.json deleted file mode 100644 index 65327dcb1..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "package": { - "dependencies": { - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", - "@testing-library/dom": "^10.4.0", - "@testing-library/user-event": "^14.6.0", - "web-vitals": "^4.2.4" - }, - "eslintConfig": { - "extends": ["react-app", "react-app/jest"] - } - } -} diff --git a/packages/devextreme-cli/src/templates/cra-template/template/README.md b/packages/devextreme-cli/src/templates/cra-template/template/README.md deleted file mode 100644 index 58beeaccd..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in your browser. - -The page will reload when you make changes.\ -You may also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can't go back!** - -If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own. - -You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) - -### Analyzing the Bundle Size - -This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) - -### Making a Progressive Web App - -This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) - -### Advanced Configuration - -This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) - -### Deployment - -This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) - -### `npm run build` fails to minify - -This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/packages/devextreme-cli/src/templates/cra-template/template/gitignore b/packages/devextreme-cli/src/templates/cra-template/template/gitignore deleted file mode 100644 index 4d29575de..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/packages/devextreme-cli/src/templates/cra-template/template/public/favicon.ico b/packages/devextreme-cli/src/templates/cra-template/template/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/packages/devextreme-cli/src/templates/cra-template/template/public/index.html b/packages/devextreme-cli/src/templates/cra-template/template/public/index.html deleted file mode 100644 index aa069f27c..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
- - - diff --git a/packages/devextreme-cli/src/templates/cra-template/template/public/logo192.png b/packages/devextreme-cli/src/templates/cra-template/template/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/packages/devextreme-cli/src/templates/cra-template/template/public/manifest.json b/packages/devextreme-cli/src/templates/cra-template/template/public/manifest.json deleted file mode 100644 index 080d6c77a..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/devextreme-cli/src/templates/cra-template/template/public/robots.txt b/packages/devextreme-cli/src/templates/cra-template/template/public/robots.txt deleted file mode 100644 index e9e57dc4d..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/App.css b/packages/devextreme-cli/src/templates/cra-template/template/src/App.css deleted file mode 100644 index 74b5e0534..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/App.js b/packages/devextreme-cli/src/templates/cra-template/template/src/App.js deleted file mode 100644 index 378457572..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/App.js +++ /dev/null @@ -1,25 +0,0 @@ -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( - - ); -} - -export default App; diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/App.test.js b/packages/devextreme-cli/src/templates/cra-template/template/src/App.test.js deleted file mode 100644 index 23b8367e5..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import { render } from '@testing-library/react'; -import { screen } from '@testing-library/dom'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/index.css b/packages/devextreme-cli/src/templates/cra-template/template/src/index.css deleted file mode 100644 index 027255b22..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/index.css +++ /dev/null @@ -1,12 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/index.js b/packages/devextreme-cli/src/templates/cra-template/template/src/index.js deleted file mode 100644 index d563c0fb1..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; - -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render( - - - -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/logo.svg b/packages/devextreme-cli/src/templates/cra-template/template/src/logo.svg deleted file mode 100644 index 9dfc1c058..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/reportWebVitals.js b/packages/devextreme-cli/src/templates/cra-template/template/src/reportWebVitals.js deleted file mode 100644 index 3c0ccb0dc..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ onLCP, onINP, onCLS, onFCP, onTTFB }) => { - onCLS(onPerfEntry); - onINP(onPerfEntry); - onLCP(onPerfEntry); - onFCP(onPerfEntry); - onTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/packages/devextreme-cli/src/templates/cra-template/template/src/setupTests.js b/packages/devextreme-cli/src/templates/cra-template/template/src/setupTests.js deleted file mode 100644 index 8f2609b7b..000000000 --- a/packages/devextreme-cli/src/templates/cra-template/template/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/favicon.ico b/packages/devextreme-cli/src/templates/react/application/public/favicon.ico similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/public/favicon.ico rename to packages/devextreme-cli/src/templates/react/application/public/favicon.ico diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/logo192.png b/packages/devextreme-cli/src/templates/react/application/public/logo192.png similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/public/logo192.png rename to packages/devextreme-cli/src/templates/react/application/public/logo192.png diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/logo512.png b/packages/devextreme-cli/src/templates/react/application/public/logo512.png similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/public/logo512.png rename to packages/devextreme-cli/src/templates/react/application/public/logo512.png diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/manifest.json b/packages/devextreme-cli/src/templates/react/application/public/manifest.json similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/public/manifest.json rename to packages/devextreme-cli/src/templates/react/application/public/manifest.json diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/public/robots.txt b/packages/devextreme-cli/src/templates/react/application/public/robots.txt similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/public/robots.txt rename to packages/devextreme-cli/src/templates/react/application/public/robots.txt diff --git a/packages/devextreme-cli/src/templates/react/application/src/App.test.tsx b/packages/devextreme-cli/src/templates/react/application/src/App.test.tsx deleted file mode 100644 index 98f3f6bef..000000000 --- a/packages/devextreme-cli/src/templates/react/application/src/App.test.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import './matchMediaMock'; -import { render } from '@testing-library/react'; -import { screen } from '@testing-library/dom'; -import App from './App'; -import { act } from 'react-dom/test-utils'; - -describe("App", () => { - test('renders learn react link', async () => { - await act( async () => { render() }); - const linkElement = screen.getByText(/create react app/i); - expect(linkElement).toBeInTheDocument(); - }); -}) \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/react/application/src/App.tsx b/packages/devextreme-cli/src/templates/react/application/src/App.tsx index ba8178d88..bbc2abfdc 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/App.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/App.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { HashRouter as Router } from 'react-router-dom'; import './dx-styles.scss'; import LoadPanel from 'devextreme-react/load-panel'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/change-password-form/ChangePasswordForm.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/change-password-form/ChangePasswordForm.tsx index b6e76ade8..f04886bbc 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/change-password-form/ChangePasswordForm.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/change-password-form/ChangePasswordForm.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef, useCallback } from 'react'; +import <%=#isTypeScript%>React, <%=/isTypeScript%>{ useState, useRef, useCallback } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import Form, { Item, @@ -19,7 +19,7 @@ export default function ChangePasswordForm() { const formData = useRef({ password: '' }); const { recoveryCode } = useParams(); - const onSubmit = useCallback(async (e<%=#isTypeScript%>: any<%=/isTypeScript%>) => { + const onSubmit = useCallback(async (e<%=#isTypeScript%>: React.FormEvent<%=/isTypeScript%>) => { e.preventDefault(); const { password } = formData.current; setLoading(true); diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.scss b/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.scss index d6fb5410a..830ab7065 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.scss @@ -1,5 +1,3 @@ -@import "../../themes/generated/variables.base.scss"; - .create-account-form { .policy-info { color: var(--base-text-color-alpha-7); diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.tsx index b01342f02..983f5c849 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/create-account-form/CreateAccountForm.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef, useCallback } from 'react'; +import <%=#isTypeScript%>React, <%=/isTypeScript%>{ useState, useRef, useCallback } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import Form, { Item, @@ -20,7 +20,7 @@ export default function CreateAccountForm() { const [loading, setLoading] = useState(false); const formData = useRef({ email: '', password: '' }); - const onSubmit = useCallback(async (e<%=#isTypeScript%>: any<%=/isTypeScript%>) => { + const onSubmit = useCallback(async (e<%=#isTypeScript%>: React.FormEvent<%=/isTypeScript%>) => { e.preventDefault(); const { email, password } = formData.current; setLoading(true); diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/footer/Footer.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/footer/Footer.tsx index b20269670..bc82bfbd5 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/footer/Footer.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/footer/Footer.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import './Footer.scss'; export default function Footer({ ...rest }) { diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/header/Header.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/header/Header.tsx index 347fc555d..f020997de 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/header/Header.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/header/Header.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import Toolbar, { Item } from 'devextreme-react/toolbar'; import Button from 'devextreme-react/button'; import UserPanel from '../user-panel/UserPanel'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.scss b/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.scss index e8fea8fde..702162654 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.scss @@ -1,5 +1,3 @@ -@import "../../themes/generated/variables.base.scss"; - .login-form { .link { text-align: center; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.tsx index 5e150363d..beadddd2e 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/login-form/LoginForm.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef, useCallback } from 'react'; +import <%=#isTypeScript%>React, <%=/isTypeScript%>{ useState, useRef, useCallback } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import Form, { Item, @@ -21,7 +21,7 @@ export default function LoginForm() { const [loading, setLoading] = useState(false); const formData = useRef({ email: '', password: '' }); - const onSubmit = useCallback(async (e<%=#isTypeScript%>: any<%=/isTypeScript%>) => { + const onSubmit = useCallback(async (e<%=#isTypeScript%>: React.FormEvent<%=/isTypeScript%>) => { e.preventDefault(); const { email, password } = formData.current; setLoading(true); diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.scss b/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.scss index 8631e7323..f9bf5090b 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.scss @@ -1,5 +1,3 @@ -@import "../../themes/generated/variables.base.scss"; - .reset-password-form { .submit-button { margin-top: 18px; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.tsx index 313e53537..55402df1d 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/reset-password-form/ResetPasswordForm.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef, useCallback } from 'react'; +import <%=#isTypeScript%>React, <%=/isTypeScript%>{ useState, useRef, useCallback } from 'react'; import { Link, useNavigate } from "react-router-dom"; import Form, { Item, @@ -20,7 +20,7 @@ export default function ResetPasswordForm() { const [loading, setLoading] = useState(false); const formData = useRef({ email: '', password: '' }); - const onSubmit = useCallback(async (e<%=#isTypeScript%>: any<%=/isTypeScript%>) => { + const onSubmit = useCallback(async (e<%=#isTypeScript%>: React.FormEvent<%=/isTypeScript%>) => { e.preventDefault(); const { email } = formData.current; setLoading(true); diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.scss b/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.scss index d6ea2297d..911d90e88 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.scss @@ -1,4 +1,5 @@ -@use "../../dx-styles.scss" as *; +@use "../../dx-styles" as *; +@use "../../utils/patches"; .dx-swatch-additional, .dx-swatch-additional-dark { &.side-navigation-menu { @@ -71,6 +72,5 @@ } .dx-drawer-overlap.pre-init-blink-fix { - @import "../../utils/patches.scss"; - @include menu-pre-init-patch; + @include patches.menu-pre-init-patch; } diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.tsx index 26866775f..1b8ed001f 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/side-navigation-menu/SideNavigationMenu.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef, useCallback, useMemo, useContext } from 'react'; import { TreeView<%=#isTypeScript%>, TreeViewRef<%=/isTypeScript%> } from 'devextreme-react/tree-view'; -import * as events from 'devextreme/events'; +import * as events from 'devextreme-react/common/core/events'; import { navigation } from '../../app-navigation'; import { useNavigation } from '../../contexts/navigation'; import { useScreenSize } from '../../utils/media-query'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/theme-switcher/ThemeSwitcher.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/theme-switcher/ThemeSwitcher.tsx index bcd0bd535..87b26a376 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/theme-switcher/ThemeSwitcher.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/theme-switcher/ThemeSwitcher.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useContext } from 'react'; +import { useCallback, useContext } from 'react'; import Button from 'devextreme-react/button'; import { ThemeContext } from '../../theme'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/components/user-panel/UserPanel.tsx b/packages/devextreme-cli/src/templates/react/application/src/components/user-panel/UserPanel.tsx index 6c2997d52..50a5c2269 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/components/user-panel/UserPanel.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/components/user-panel/UserPanel.tsx @@ -1,4 +1,4 @@ -import React, { useMemo, useCallback } from 'react'; +import { useMemo, useCallback } from 'react'; import { useNavigate } from "react-router-dom"; import DropDownButton from 'devextreme-react/drop-down-button'; import List from 'devextreme-react/list'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/dx-styles.scss b/packages/devextreme-cli/src/templates/react/application/src/dx-styles.scss index a9accd9ff..5ce2bdfda 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/dx-styles.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/dx-styles.scss @@ -1,3 +1,5 @@ +@use "variables.scss" as *; + $side-panel-min-width: 60px; html, diff --git a/packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.css b/packages/devextreme-cli/src/templates/react/application/src/index.css similarity index 100% rename from packages/devextreme-cli/src/templates/cra-template-typescript/template/src/index.css rename to packages/devextreme-cli/src/templates/react/application/src/index.css diff --git a/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.tsx b/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.tsx index e6335b526..eb0d8b108 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.tsx @@ -3,7 +3,7 @@ import Drawer from 'devextreme-react/drawer'; import { ScrollView<%=#isTypeScript%>, ScrollViewRef<%=/isTypeScript%> } from 'devextreme-react/scroll-view'; import Toolbar, { Item } from 'devextreme-react/toolbar'; import React, { useState, useCallback, useRef } from 'react'; -import { useNavigate } from 'react-router'; +import { useNavigate } from 'react-router-dom'; import { Header, SideNavigationMenu, Footer } from '../../components'; import './side-nav-inner-toolbar.scss'; import { useScreenSize } from '../../utils/media-query'; @@ -84,13 +84,19 @@ export default function SideNavInnerToolbar({ title, children }<%=#isTypeScript% />
- {React.Children.map(children, (item<%=#isTypeScript%>: any<%=/isTypeScript%>) => { - return item.type !== Footer && item; + {React.Children.map(children, (item) => { + if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type !== Footer) { + return item; + } + return null; })}
- {React.Children.map(children, (item<%=#isTypeScript%>: any<%=/isTypeScript%>) => { - return item.type === Footer && item; + {React.Children.map(children, (item) => { + if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type === Footer) { + return item; + } + return null; })}
diff --git a/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.tsx b/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.tsx index 637bf6e58..7d32cdad4 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.tsx @@ -1,7 +1,7 @@ import Drawer from 'devextreme-react/drawer'; import { ScrollView<%=#isTypeScript%>, ScrollViewRef<%=/isTypeScript%> } from 'devextreme-react/scroll-view'; import React, { useState, useCallback, useRef } from 'react'; -import { useNavigate } from 'react-router'; +import { useNavigate } from 'react-router-dom'; import { Header, SideNavigationMenu, Footer } from '../../components'; import './side-nav-outer-toolbar.scss'; import { useScreenSize } from '../../utils/media-query'; @@ -83,13 +83,19 @@ export default function SideNavOuterToolbar({ title, children }<%=#isTypeScript%
- {React.Children.map(children, (item<%=#isTypeScript%>: any<%=/isTypeScript%>) => { - return item.type !== Footer && item; + {React.Children.map(children, (item) => { + if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type !== Footer) { + return item; + } + return null; })}
- {React.Children.map(children, (item<%=#isTypeScript%>: any<%=/isTypeScript%>) => { - return item.type === Footer && item; + {React.Children.map(children, (item) => { + if (<%=#isTypeScript%>React.isValidElement(item) && <%=/isTypeScript%>item.type === Footer) { + return item; + } + return null; })}
diff --git a/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.scss b/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.scss index 32fc3b6b2..e4d0f96bb 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.scss @@ -1,5 +1,3 @@ -@import "../../themes/generated/variables.base.scss"; - .single-card { width: 100%; height: 100%; diff --git a/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.tsx b/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.tsx index 879233c1c..1e207fefc 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/layouts/single-card/single-card.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import ScrollView from 'devextreme-react/scroll-view'; import './single-card.scss'; <%=#isTypeScript%>import type { SingleCardProps } from '../../types';<%=/isTypeScript%> diff --git a/packages/devextreme-cli/src/templates/react/application/src/matchMediaMock.tsx b/packages/devextreme-cli/src/templates/react/application/src/matchMediaMock.tsx deleted file mode 100644 index 9b289b6a3..000000000 --- a/packages/devextreme-cli/src/templates/react/application/src/matchMediaMock.tsx +++ /dev/null @@ -1,14 +0,0 @@ -Object.defineProperty(window, 'matchMedia', { - writable: true, - value: jest.fn().mockImplementation(query => ({ - matches: false, - media: query, - onchange: null, - addListener: jest.fn(), // deprecated - removeListener: jest.fn(), // deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), - })), -}); -export {}; \ No newline at end of file diff --git a/packages/devextreme-cli/src/templates/react/application/src/polyfills.tsx b/packages/devextreme-cli/src/templates/react/application/src/polyfills.tsx deleted file mode 100644 index 89b637058..000000000 --- a/packages/devextreme-cli/src/templates/react/application/src/polyfills.tsx +++ /dev/null @@ -1,2 +0,0 @@ -import 'react-app-polyfill/ie11'; -import 'react-app-polyfill/stable'; diff --git a/packages/devextreme-cli/src/templates/react/application/src/types.tsx b/packages/devextreme-cli/src/templates/react/application/src/types.tsx index b152a5c41..8f75467f8 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/types.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/types.tsx @@ -1,6 +1,5 @@ import { TreeViewTypes } from 'devextreme-react/tree-view'; import { ButtonTypes } from 'devextreme-react/button'; -import React from 'react'; export interface HeaderProps { menuToggleEnabled: boolean; @@ -53,4 +52,4 @@ export type NavigationContextType = { export type ValidationType = { value: string; -} \ No newline at end of file +} diff --git a/packages/devextreme-cli/src/templates/react/application/src/utils/media-query.tsx b/packages/devextreme-cli/src/templates/react/application/src/utils/media-query.tsx index abe116dbe..9432f1671 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/utils/media-query.tsx +++ b/packages/devextreme-cli/src/templates/react/application/src/utils/media-query.tsx @@ -44,7 +44,9 @@ const largeMedia = window.matchMedia('(min-width: 1280px)'); [xSmallMedia, smallMedia, mediumMedia, largeMedia].forEach(media => { media.addListener((e) => { - e.matches && handlers.forEach(handler => handler()); + if(e.matches) { + handlers.forEach(handler => handler()) + } }); }); diff --git a/packages/devextreme-cli/src/templates/react/application/src/utils/patches.scss b/packages/devextreme-cli/src/templates/react/application/src/utils/patches.scss index 0b9c544c0..a0e75b42e 100644 --- a/packages/devextreme-cli/src/templates/react/application/src/utils/patches.scss +++ b/packages/devextreme-cli/src/templates/react/application/src/utils/patches.scss @@ -1,12 +1,12 @@ -@import "../themes/generated/variables.additional.scss"; +@use "../themes/generated/variables.additional.scss" as *; @mixin menu-pre-init-patch { $menuMinSize: 60px; - + .dx-drawer-content { padding-left: $menuMinSize; } - + .dx-drawer-panel-content.dx-overlay::before { content: ""; width: $menuMinSize; @@ -15,7 +15,7 @@ position: absolute; background-color: $base-bg; } - + .dx-overlay-content { width: $menuMinSize !important; } diff --git a/packages/devextreme-cli/src/templates/react/sample-pages/home/home.scss b/packages/devextreme-cli/src/templates/react/sample-pages/home/home.scss index d26e0dc76..f440f973f 100644 --- a/packages/devextreme-cli/src/templates/react/sample-pages/home/home.scss +++ b/packages/devextreme-cli/src/templates/react/sample-pages/home/home.scss @@ -1,5 +1,3 @@ -@use "../../variables.scss" as *; - .logos-container { margin: 0 0 40px 0; diff --git a/packages/devextreme-cli/src/templates/react/sample-pages/home/home.tsx b/packages/devextreme-cli/src/templates/react/sample-pages/home/home.tsx index 852e02a51..a79858f2a 100644 --- a/packages/devextreme-cli/src/templates/react/sample-pages/home/home.tsx +++ b/packages/devextreme-cli/src/templates/react/sample-pages/home/home.tsx @@ -68,7 +68,7 @@ export default function Home() {

Thanks for using the DevExtreme React App Template.

This application was built using - Create React App + create-vite and DevExtreme CLI and includes the following DevExtreme components: diff --git a/packages/devextreme-cli/src/templates/react/sample-pages/tasks/tasks.tsx b/packages/devextreme-cli/src/templates/react/sample-pages/tasks/tasks.tsx index 796e40f96..d768d19e0 100644 --- a/packages/devextreme-cli/src/templates/react/sample-pages/tasks/tasks.tsx +++ b/packages/devextreme-cli/src/templates/react/sample-pages/tasks/tasks.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import 'devextreme/data/odata/store'; +import { DataSource } from 'devextreme-react/common/data'; import DataGrid, { Column, Pager, @@ -16,7 +16,7 @@ export default function Task() { as any<%=/isTypeScript%>} + dataSource={dataSource} showBorders={false} focusedRowEnabled={true} defaultFocusedRowIndex={0} @@ -83,7 +83,7 @@ export default function Task() { )} -const dataSource = { +const dataSource = new DataSource({ store: { version: 2, type: 'odata', @@ -101,7 +101,7 @@ const dataSource = { 'Task_Completion', 'ResponsibleEmployee/Employee_Full_Name' ] -}; +}); const priorities = [ { name: 'High', value: 4 }, diff --git a/packages/devextreme-cli/src/templates/vue-v3/sample-pages/tasks-page.vue b/packages/devextreme-cli/src/templates/vue-v3/sample-pages/tasks-page.vue index 898e010ca..2de95b5cd 100644 --- a/packages/devextreme-cli/src/templates/vue-v3/sample-pages/tasks-page.vue +++ b/packages/devextreme-cli/src/templates/vue-v3/sample-pages/tasks-page.vue @@ -80,7 +80,7 @@

-
- logo -

- Edit src/App.js and save to reload. -

-
- Learn React - -
-