From 9f12ea5e393b9795a7c46ca807f48f0bf37587ca Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 27 Mar 2025 10:49:04 +0200 Subject: [PATCH 01/11] Add initial Sales Grid implementation. --- projects/sales-grid/index.html | 5 +- projects/sales-grid/package-lock.json | 1146 +++++++++++++++++ projects/sales-grid/package.json | 8 +- .../sales-grid/src/assets/data/flags.json | 22 + .../src/assets/images/flags/Australia.svg | 15 + .../src/assets/images/flags/Belgium.svg | 12 + .../src/assets/images/flags/Brazil.svg | 34 + .../src/assets/images/flags/Bulgaria.svg | 12 + .../src/assets/images/flags/Canada.svg | 11 + .../src/assets/images/flags/China.svg | 20 + .../src/assets/images/flags/Denmark.svg | 17 + .../src/assets/images/flags/Finland.svg | 17 + .../src/assets/images/flags/France.svg | 12 + .../src/assets/images/flags/Germany.svg | 12 + .../src/assets/images/flags/Greece.svg | 26 + .../src/assets/images/flags/India.svg | 68 + .../src/assets/images/flags/Italy.svg | 17 + .../src/assets/images/flags/Japan.svg | 16 + .../src/assets/images/flags/Netherlands.svg | 17 + .../src/assets/images/flags/Poland.svg | 16 + .../src/assets/images/flags/Romania.svg | 17 + .../src/assets/images/flags/UnitedKingdom.svg | 14 + .../src/assets/images/flags/UnitedStates.svg | 18 + .../src/assets/images/flags/Uruguay.svg | 35 + .../assets/images/icons/arrow_drop_down.svg | 1 + .../src/assets/images/icons/arrow_drop_up.svg | 1 + .../src/assets/images/icons/file_download.svg | 1 + .../src/assets/images/icons/visibility.svg | 1 + projects/sales-grid/src/sales-grid.styles.ts | 74 ++ projects/sales-grid/src/sales-grid.ts | 498 ++++++- .../sales-grid/src/services/data.service.ts | 20 + projects/sales-grid/vite.config.ts | 23 + 32 files changed, 2146 insertions(+), 60 deletions(-) create mode 100644 projects/sales-grid/package-lock.json create mode 100644 projects/sales-grid/src/assets/data/flags.json create mode 100644 projects/sales-grid/src/assets/images/flags/Australia.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Belgium.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Brazil.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Bulgaria.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Canada.svg create mode 100644 projects/sales-grid/src/assets/images/flags/China.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Denmark.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Finland.svg create mode 100644 projects/sales-grid/src/assets/images/flags/France.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Germany.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Greece.svg create mode 100644 projects/sales-grid/src/assets/images/flags/India.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Italy.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Japan.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Netherlands.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Poland.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Romania.svg create mode 100644 projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg create mode 100644 projects/sales-grid/src/assets/images/flags/UnitedStates.svg create mode 100644 projects/sales-grid/src/assets/images/flags/Uruguay.svg create mode 100644 projects/sales-grid/src/assets/images/icons/arrow_drop_down.svg create mode 100644 projects/sales-grid/src/assets/images/icons/arrow_drop_up.svg create mode 100644 projects/sales-grid/src/assets/images/icons/file_download.svg create mode 100644 projects/sales-grid/src/assets/images/icons/visibility.svg create mode 100644 projects/sales-grid/src/sales-grid.styles.ts create mode 100644 projects/sales-grid/src/services/data.service.ts create mode 100644 projects/sales-grid/vite.config.ts diff --git a/projects/sales-grid/index.html b/projects/sales-grid/index.html index abd58d4..b590663 100644 --- a/projects/sales-grid/index.html +++ b/projects/sales-grid/index.html @@ -4,10 +4,13 @@ Vite + Lit + TS + + + - + diff --git a/projects/sales-grid/package-lock.json b/projects/sales-grid/package-lock.json new file mode 100644 index 0000000..0c8d888 --- /dev/null +++ b/projects/sales-grid/package-lock.json @@ -0,0 +1,1146 @@ +{ + "name": "sales-grid", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sales-grid", + "version": "0.0.0", + "dependencies": { + "igniteui-webcomponents": "~5.2.4", + "igniteui-webcomponents-core": "5.2.1-beta.0", + "igniteui-webcomponents-grids": "5.2.1-beta.0", + "igniteui-webcomponents-inputs": "5.2.1-beta.0", + "lit": "^3.2.1", + "rxjs": "~7.8.0" + }, + "devDependencies": { + "typescript": "~5.7.2", + "vite": "^6.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit-labs/virtualizer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@lit-labs/virtualizer/-/virtualizer-2.1.0.tgz", + "integrity": "sha512-I79sNaalK9rD6FWO/AoxBMnA6jjNBrQu7F6lzz8W/GkQLcqveMWK3IrJAilso+XeFFn7BvlxBv6FqZaoMt+Qkg==", + "license": "BSD-3-Clause", + "dependencies": { + "lit": "^3.2.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@lit/context": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.4.tgz", + "integrity": "sha512-0b8wOWNUPcXjGHFtVP+odwhrZBZw+PpCjKWn8IGO10iHT95Xd6FcUAxe1aE7PUtOBvHZoxvrfdBzweYnDW7VNQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.2 || ^2.0.0" + } + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/igniteui-webcomponents": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents/-/igniteui-webcomponents-5.2.4.tgz", + "integrity": "sha512-EppDLSA0wGX6CFweeF4IVtAjMzcVw6TFDMXVKQQNwXTuSkmWLTGFgwGB7Aj/wryPz8D4bbGe8hF7Mv7sA4xI9w==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@floating-ui/dom": "^1.6.0", + "@lit-labs/virtualizer": "^2.1.0", + "@lit/context": "^1.1.0", + "lit": "^3.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/igniteui-webcomponents-core": { + "version": "5.2.1-beta.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.2.1-beta.0.tgz", + "integrity": "sha512-eRGK/O+EhshVlis/x6vY/T7PQS0JFDclciQWD4tTY8dmj4zd9Miqbw5ZrUt42uVtSP2S3Ktc1teSOAEKhGzV5g==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "lit-html": "^3.2.0" + } + }, + "node_modules/igniteui-webcomponents-grids": { + "version": "5.2.1-beta.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-5.2.1-beta.0.tgz", + "integrity": "sha512-p4KDkTTXupM0H1kGkCH0HOhPqxGiGAQa5IcxSWSS24a0Z/QOog7JP8ZLzeAP6BtxJFdi6rGVDee0vBwp+QUbTg==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "5.2.1-beta.0", + "igniteui-webcomponents-inputs": "5.2.1-beta.0", + "igniteui-webcomponents-layouts": "5.2.1-beta.0" + } + }, + "node_modules/igniteui-webcomponents-inputs": { + "version": "5.2.1-beta.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.2.1-beta.0.tgz", + "integrity": "sha512-9KoKLbugIatWxAdhnJglQTtgv7v1I/q4z0aQ9y+dNph4Ox0yXI61BJWj4wEC4hXwP6JilB+WY3NJr8S6Dw884g==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "5.2.1-beta.0" + } + }, + "node_modules/igniteui-webcomponents-layouts": { + "version": "5.2.1-beta.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-5.2.1-beta.0.tgz", + "integrity": "sha512-uD49i6V4ymFNMyrsqAusHDprjOAEnMAID+GnFe5pjc7uaWaWrpQ4RdIgETyzi7Pks+VP+nVBs5w0r2C9vg+BsA==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "peer": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "5.2.1-beta.0", + "igniteui-webcomponents-inputs": "5.2.1-beta.0" + } + }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", + "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/projects/sales-grid/package.json b/projects/sales-grid/package.json index f19ec62..51d38dd 100644 --- a/projects/sales-grid/package.json +++ b/projects/sales-grid/package.json @@ -5,11 +5,17 @@ "type": "module", "scripts": { "dev": "vite", + "start": "vite --force", "build": "tsc && vite build", "preview": "vite preview" }, "dependencies": { - "lit": "^3.2.1" + "lit": "^3.2.1", + "rxjs": "~7.8.0", + "igniteui-webcomponents": "~5.2.4", + "igniteui-webcomponents-core": "5.2.1-beta.0", + "igniteui-webcomponents-grids": "5.2.1-beta.0", + "igniteui-webcomponents-inputs": "5.2.1-beta.0" }, "devDependencies": { "typescript": "~5.7.2", diff --git a/projects/sales-grid/src/assets/data/flags.json b/projects/sales-grid/src/assets/data/flags.json new file mode 100644 index 0000000..e2ec63a --- /dev/null +++ b/projects/sales-grid/src/assets/data/flags.json @@ -0,0 +1,22 @@ +{ + "Australia": "flags/Australia.svg", + "Belgium": "flags/Belgium.svg", + "Brazil": "flags/Brazil.svg", + "Bulgaria": "flags/Bulgaria.svg", + "Canada": "flags/Canada.svg", + "China": "flags/China.svg", + "Denmark": "flags/Denmark.svg", + "Finland": "flags/Finland.svg", + "France": "flags/France.svg", + "Germany": "flags/Germany.svg", + "Greece": "flags/Greece.svg", + "India": "flags/India.svg", + "Italy": "flags/Italy.svg", + "Japan": "flags/Japan.svg", + "Netherlands": "flags/Netherlands.svg", + "Poland": "flags/Poland.svg", + "Romania": "flags/Romania.svg", + "UK": "flags/UnitedKingdom.svg", + "USA": "flags/UnitedStates.svg", + "Uruguay": "flags/Uruguay.svg" +} diff --git a/projects/sales-grid/src/assets/images/flags/Australia.svg b/projects/sales-grid/src/assets/images/flags/Australia.svg new file mode 100644 index 0000000..61c245e --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Australia.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Belgium.svg b/projects/sales-grid/src/assets/images/flags/Belgium.svg new file mode 100644 index 0000000..8123dab --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Belgium.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Brazil.svg b/projects/sales-grid/src/assets/images/flags/Brazil.svg new file mode 100644 index 0000000..61f8a52 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Brazil.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Bulgaria.svg b/projects/sales-grid/src/assets/images/flags/Bulgaria.svg new file mode 100644 index 0000000..ef9fbc5 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Bulgaria.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Canada.svg b/projects/sales-grid/src/assets/images/flags/Canada.svg new file mode 100644 index 0000000..6ac428d --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Canada.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/China.svg b/projects/sales-grid/src/assets/images/flags/China.svg new file mode 100644 index 0000000..d3d04dc --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/China.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Denmark.svg b/projects/sales-grid/src/assets/images/flags/Denmark.svg new file mode 100644 index 0000000..1229601 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Denmark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Finland.svg b/projects/sales-grid/src/assets/images/flags/Finland.svg new file mode 100644 index 0000000..9a1012f --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Finland.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/France.svg b/projects/sales-grid/src/assets/images/flags/France.svg new file mode 100644 index 0000000..86fb039 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/France.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Germany.svg b/projects/sales-grid/src/assets/images/flags/Germany.svg new file mode 100644 index 0000000..65b7e46 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Germany.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Greece.svg b/projects/sales-grid/src/assets/images/flags/Greece.svg new file mode 100644 index 0000000..e1c7293 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Greece.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/India.svg b/projects/sales-grid/src/assets/images/flags/India.svg new file mode 100644 index 0000000..e56cdfe --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/India.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Italy.svg b/projects/sales-grid/src/assets/images/flags/Italy.svg new file mode 100644 index 0000000..0029478 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Italy.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Japan.svg b/projects/sales-grid/src/assets/images/flags/Japan.svg new file mode 100644 index 0000000..a665fa5 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Japan.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Netherlands.svg b/projects/sales-grid/src/assets/images/flags/Netherlands.svg new file mode 100644 index 0000000..28d3cf8 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Netherlands.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Poland.svg b/projects/sales-grid/src/assets/images/flags/Poland.svg new file mode 100644 index 0000000..29be454 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Poland.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Romania.svg b/projects/sales-grid/src/assets/images/flags/Romania.svg new file mode 100644 index 0000000..a3b0274 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Romania.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg b/projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg new file mode 100644 index 0000000..a89e4f4 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/UnitedStates.svg b/projects/sales-grid/src/assets/images/flags/UnitedStates.svg new file mode 100644 index 0000000..d69d8b1 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/UnitedStates.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/flags/Uruguay.svg b/projects/sales-grid/src/assets/images/flags/Uruguay.svg new file mode 100644 index 0000000..5008f40 --- /dev/null +++ b/projects/sales-grid/src/assets/images/flags/Uruguay.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/sales-grid/src/assets/images/icons/arrow_drop_down.svg b/projects/sales-grid/src/assets/images/icons/arrow_drop_down.svg new file mode 100644 index 0000000..784d3eb --- /dev/null +++ b/projects/sales-grid/src/assets/images/icons/arrow_drop_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/sales-grid/src/assets/images/icons/arrow_drop_up.svg b/projects/sales-grid/src/assets/images/icons/arrow_drop_up.svg new file mode 100644 index 0000000..5bced54 --- /dev/null +++ b/projects/sales-grid/src/assets/images/icons/arrow_drop_up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/sales-grid/src/assets/images/icons/file_download.svg b/projects/sales-grid/src/assets/images/icons/file_download.svg new file mode 100644 index 0000000..2bb823e --- /dev/null +++ b/projects/sales-grid/src/assets/images/icons/file_download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/sales-grid/src/assets/images/icons/visibility.svg b/projects/sales-grid/src/assets/images/icons/visibility.svg new file mode 100644 index 0000000..d336dc1 --- /dev/null +++ b/projects/sales-grid/src/assets/images/icons/visibility.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/sales-grid/src/sales-grid.styles.ts b/projects/sales-grid/src/sales-grid.styles.ts new file mode 100644 index 0000000..1db1ee7 --- /dev/null +++ b/projects/sales-grid/src/sales-grid.styles.ts @@ -0,0 +1,74 @@ +import { css } from "lit"; + +export const salesGridStyles = css` +:host { + display: block; + height: 100%; + width: 100%; + } + + .rootSample { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + --ig-size: var(--ig-size-small); + } + + .pivotToolbar { + display: flex; + justify-content: space-between; + min-height: 40px; + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + background: var(--ig-grid-header-background, hsl(from var(--ig-surface-500) h s l/1)); + } + + .pivotRow { + display: flex; + flex-direction: row; + height: calc(100% - 40px); + } + + .pivotContainer { + width: 100%; + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + border-top: none; + border-right: none; + overflow: auto; + } + + .selectorContainer { + height: 100%; + min-width: 200px; + overflow-y: auto; + } + + .countryHeader { + width: 100%; + display: flex; + align-items: center; + // justify-content: center; + } + + .countryImage { + height: 14px; + margin-right: 4px; + } + + + igc-pivot-data-selector { + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + border-top: none; + height: 100%; + + ::ng-deep { + .igx-list__item-content { + padding: 0 8px !important; + + span { + margin-inline-start: initial; + } + } + } + } + `; \ No newline at end of file diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index bcf86b2..ecfa78c 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -1,81 +1,463 @@ -import { LitElement, css, html } from "lit"; -import { customElement } from "lit/decorators.js"; +import { LitElement, PropertyValues, css, html } from "lit"; +import { customElement, property, query, state } from "lit/decorators.js"; +import { repeat } from "lit/directives/repeat.js"; +import { SalesDataService } from "./services/data.service"; +import { defineComponents, registerIcon, IgcButtonComponent, IgcDropdownComponent, IgcDropdownItemComponent, IgcIconComponent } from "igniteui-webcomponents"; +import { + IgcPivotGridComponent, + IgcFilteringExpressionsTree, + IgcStringFilteringOperand, + FilteringLogic, + IgcPivotValue, + IgcPivotConfiguration, + IgcPivotDateDimension, + IgcColumnComponent, + CsvFileTypes, + // IgcCsvExporterService, + // IgcCsvExporterOptions, + // IgcExcelExporterService, + // IgcExcelExporterOptions, + // IgcExporterOptionsBase +} from "igniteui-webcomponents-grids/grids"; +import 'igniteui-webcomponents-grids/grids/combined.js'; + +import { salesGridStyles } from './sales-grid.styles'; +import ARROW_DOWN_SVG from "./assets/images/icons/arrow_drop_down.svg"; +import ARROW_UP_SVG from "./assets/images/icons/arrow_drop_up.svg"; +import VISIBILITY_SVG from "./assets/images/icons/visibility.svg"; +import FILE_DOWNLOAD_SVG from "./assets/images/icons/file_download.svg"; +import FLAGS from "./assets/data/flags.json"; + +defineComponents(IgcButtonComponent, IgcIconComponent, IgcDropdownComponent); + +enum PivotViews { + BrandsSeparate = 'brandsOr', + BrandsCombined = 'jeansAnd', + Stores = 'stores' +} + +export class IgcSaleProfitAggregate { + public static totalProfit = (_: any, data: any[] | undefined) => + data?.reduce((accumulator, value) => accumulator + (value.Sale - value.Cost), 0) || 0; + + public static averageProfit = (_, data: any[] | undefined) => { + let average = 0; + if (data?.length === 1) { + average = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + average = mappedData.reduce((a, b) => a + b) / mappedData.length; + } + return average; + } + + public static minProfit = (_: any, data: any[] | undefined) => { + let min = 0; + if (data?.length === 1) { + min = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + min = mappedData.reduce((a, b) => Math.min(a, b)); + } + return min; + }; + + public static maxProfit = (_: any, data: any[] | undefined) => { + let max = 0; + if (data?.length === 1) { + max = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + max = mappedData.reduce((a, b) => Math.max(a, b)); + } + return max; + }; +} @customElement("app-sales-grid") export class SalesGrid extends LitElement { - render() { - return html`
Sales grid
`; - } - - static styles = css` - :host { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; - } + @query('#viewDropdown') + private viewDropdown!: IgcDropdownComponent; + @query('#exportDropdown') + private exportDropdown!: IgcDropdownComponent; + + @query('#salesGrid') + private pivotGrid!: IgcPivotGridComponent; + + @state() + public salesData: any[] = []; + + @state() + public viewDropdownOpen = false; + @state() + public exportDropdownOpen = false; - .logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; + public flagsData = FLAGS; + public brandFilter = new IgcFilteringExpressionsTree(); + public bulgariaCountryFilter = new IgcFilteringExpressionsTree(); + // public excelExporter = new IgcExcelExporterService(); + // public csvExporter = new IgcCsvExporterService(); + + public fileName = 'SalesGridApp'; + public saleValue: IgcPivotValue = { + enabled: true, + member: 'Sale', + displayName: 'Sales', + aggregate: { + key: 'SUM', + aggregatorName: 'SUM', + label: 'Sum' + }, + aggregateList: [ + { + key: 'AVG', + aggregatorName: 'AVG', + label: 'Average' + }, + { + key: 'COUNT', + aggregatorName: 'COUNT', + label: 'Count' + }, + { + key: 'MAX', + aggregatorName: 'MAX', + label: 'Maximum' + }, + { + key: 'MIN', + aggregatorName: 'MIN', + label: 'Minimum' + }, + { + key: 'SUM', + aggregatorName: 'SUM', + label: 'Sum' + }, + ], + formatter: (value, _, __) => { + return this.currencyFormatter(value, 'Sale'); + } + }; + public profitValue: IgcPivotValue = { + enabled: true, + member: 'Cost', + displayName: 'Profit', + aggregate: { + key: 'SUM', + aggregator: IgcSaleProfitAggregate.totalProfit, + label: 'Sum' + }, + aggregateList: [ + { + key: 'AVG', + aggregator: IgcSaleProfitAggregate.averageProfit, + label: 'Average' + }, + { + key: 'COUNT', + aggregatorName: 'COUNT', + label: 'Count' + }, + { + key: 'MAX', + aggregator: IgcSaleProfitAggregate.maxProfit, + label: 'Maximum' + }, + { + key: 'MIN', + aggregator: IgcSaleProfitAggregate.minProfit, + label: 'Minimum' + }, + { + key: 'SUM', + aggregator: IgcSaleProfitAggregate.totalProfit, + label: 'Sum' + }, + ], + formatter: (value: any, _: any, __: any) => { + return this.currencyFormatter(value, 'Cost'); + } + }; + public pivotConfigBrands: IgcPivotConfiguration = { + columns: [ + { + enabled: true, + memberName: 'Country', + displayName: 'Country' + }, + { + enabled: true, + memberName: 'Brand', + displayName: 'Brand', + filter: this.brandFilter + }, + { + enabled: false, + memberName: 'Store', + displayName: 'Store' + }, + ], + rows: [ + new IgcPivotDateDimension({ + memberName: 'Date', + displayName: 'All Periods', + enabled: true + }, + { + fullDate: true, + quarters: true, + months: false, + }) + ], + values: [ + this.saleValue, + this.profitValue + ] + }; + public pivotConfigBrandsCombined: IgcPivotConfiguration = { + columns: [ + { + enabled: true, + memberName: 'Country', + displayName: 'Country' + }, + { + enabled: false, + memberName: 'Store', + displayName: 'Store' + }, + ], + rows: [ + new IgcPivotDateDimension({ + memberName: 'Date', + displayName: 'All Periods', + enabled: true + }, + { + fullDate: true, + quarters: true, + months: false, + }) + ], + values: [ + this.saleValue, + this.profitValue + ], + filters: [ + { + enabled: true, + memberName: 'Brand', + displayName: 'Brand', + filter: this.brandFilter + }, + ] + }; + public pivotConfigStores: IgcPivotConfiguration = { + columns: [ + new IgcPivotDateDimension({ + memberName: 'Date', + displayName: 'All Periods', + enabled: true + }, + { + months: false, + fullDate: false, + quarters: true + }) + ], + rows: [ + { + memberName: 'Store', + displayName: 'Store', + enabled: true, + width: "140px" + }, + { + memberName: 'Brand', + displayName: 'Brand', + enabled: true, + width: "140px" + } + ], + values: [ + this.saleValue, + this.profitValue + ], + filters: [ + { + memberName: "Country", + displayName: 'Country', + filter: this.bulgariaCountryFilter, + enabled: true + } + ] + }; + + public PivotViews = PivotViews; + public selectedConfig = PivotViews.BrandsSeparate; + public availableConfigs = new Map([ + [PivotViews.BrandsSeparate, { title: 'Brands: HM and HM Home', config: this.pivotConfigBrands }], + [PivotViews.BrandsCombined, { title: 'Brands: HM + HM Home', config: this.pivotConfigBrandsCombined }], + [PivotViews.Stores, { title: 'Stores: Bulgaria', config: this.pivotConfigStores }] + ]); + + constructor() { + super(); + + // Fetch data + SalesDataService.getSalesData().then(data => this.salesData = data); + + registerIcon("arrow_down", ARROW_DOWN_SVG, "material"); + registerIcon("arrow_up", ARROW_UP_SVG, "material"); + registerIcon("visibility", VISIBILITY_SVG, "material"); + registerIcon("file_download", FILE_DOWNLOAD_SVG, "custom"); + + // + var multipleFilters = new IgcFilteringExpressionsTree(); + multipleFilters.operator = FilteringLogic.Or; + multipleFilters.fieldName = 'Brand'; + multipleFilters.filteringOperands = [ + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Brand', + searchVal: 'HM' + }, + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Brand', + searchVal: 'HM Home' + }, + ]; + this.brandFilter.operator = FilteringLogic.Or; + this.brandFilter.fieldName = 'Brand'; + this.brandFilter.filteringOperands = [multipleFilters]; + this.bulgariaCountryFilter.operator = FilteringLogic.And; + this.bulgariaCountryFilter.filteringOperands = [ + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Country', + searchVal: 'Bulgaria' + }, + ]; } - .logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); + + protected firstUpdated(_changedProperties: PropertyValues): void { + // Workaround for not setting pivot data selector grid ref once available. + this.requestUpdate(); } - .logo.lit:hover { - filter: drop-shadow(0 0 2em #325cffaa); + + public onViewDropdownButton(event: MouseEvent) { + this.viewDropdown.toggle(event.currentTarget as HTMLElement); + this.viewDropdownOpen = !this.viewDropdownOpen; } - .card { - padding: 2em; + public onExportDropdownButton(event: MouseEvent) { + this.exportDropdown.toggle(event.currentTarget as HTMLElement); + this.exportDropdownOpen = !this.exportDropdownOpen; } - .read-the-docs { - color: #888; + public onViewDropdownVisibility(_: CustomEvent) { + this.viewDropdownOpen = !this.viewDropdownOpen; } - ::slotted(h1) { - font-size: 3.2em; - line-height: 1.1; + public onExportDropdownVisibility(_: CustomEvent) { + this.exportDropdownOpen = !this.exportDropdownOpen; } - a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; + public onViewSelection(event: CustomEvent) { + this.selectedConfig = event.detail.id; + this.pivotGrid.pivotConfiguration = this.availableConfigs.get(this.selectedConfig)?.config || this.pivotConfigBrands; } - a:hover { - color: #535bf2; + + public onExportSelection(event: CustomEvent) { + // To uncomment once Excel and CSV exporter are available in WC + // let options!: IgcExporterOptionsBase; + // const newId = event.detail.id; + // if (newId === 'csv') { + // options = new IgcCsvExporterOptions(this.fileName, CsvFileTypes.CSV); + // this.csvExporter.export(this.pivotGrid, options); + // } else if (newId === 'excel') { + // options = new IgcExcelExporterOptions(this.fileName); + // this.excelExporter.export(this.pivotGrid, options); + // } + this.exportDropdown.clearSelection(); } - button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; + public onColumnInit(event: CustomEvent) { + const col = event.detail; + var countryKeys = Object.keys(this.flagsData); + if (countryKeys.includes(col.field)) { + // col.headerTemplate = (_: IgcColumnTemplateContext) => html` + //
+ // ${col.field} + //
+ // `; + } } - button:hover { - border-color: #646cff; + + public currencyFormatter(value: any, field: string) { + var valueConfig = this.pivotGrid.pivotConfiguration.values.find(value => value.member === field); + if (!valueConfig || valueConfig.aggregate.key === "COUNT") { + return value; + } + return value; } - button:focus, - button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; + + render() { + return html` + +
+
+ Sales Dashboard +
+ + + Change View + + + + + Export + + + + ${repeat(this.availableConfigs, (configInfo) => configInfo[0], (configInfo, _) => html` + ${this.availableConfigs.get(configInfo[0])?.title} + `)} + + + Export to Excel + Export to CSV + +
+
+
+
+ + +
+
+ +
+
+
+ `; } - @media (prefers-color-scheme: light) { - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } + static styles = [ + salesGridStyles, + ]; +} + +declare global { + interface HTMLElementTagNameMap { + "app-sales-grid": SalesGrid; } - `; } diff --git a/projects/sales-grid/src/services/data.service.ts b/projects/sales-grid/src/services/data.service.ts new file mode 100644 index 0000000..8ea3154 --- /dev/null +++ b/projects/sales-grid/src/services/data.service.ts @@ -0,0 +1,20 @@ +class DataService { + public DATA_URL = 'https://www.infragistics.com/grid-examples-data/data/sales/sales.json'; + + public async getSalesData() { + try { + const response = await fetch(this.DATA_URL); + if (!response.ok) { + console.error(response.statusText); + return []; + } + + const json = await response.json(); + return json; + } catch(error: any) { + console.error(error.message); + } + } +} + +export const SalesDataService: DataService = new DataService(); \ No newline at end of file diff --git a/projects/sales-grid/vite.config.ts b/projects/sales-grid/vite.config.ts new file mode 100644 index 0000000..120a6a7 --- /dev/null +++ b/projects/sales-grid/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({ + build: { + rollupOptions: { + output: { + entryFileNames: '[hash].js', + chunkFileNames: '[hash].js', + assetFileNames: '[hash][extname]', + }, + onwarn: (warning, warn) => { + if (warning.code === 'THIS_IS_UNDEFINED') return; + warn(warning); + }, + }, + target: 'es2021', + minify: 'terser', + emptyOutDir: false, + chunkSizeWarningLimit: 10 * 1024 * 1024 // 10 MB + }, + plugins: [ + ], +}); From e98aff0e10d36d831e97187a372c8119653d76e8 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 27 Mar 2025 11:07:19 +0200 Subject: [PATCH 02/11] Remove extra config and few tweaks --- projects/sales-grid/src/sales-grid.ts | 12 ++++++------ projects/sales-grid/vite.config.ts | 23 ----------------------- 2 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 projects/sales-grid/vite.config.ts diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index ecfa78c..685225c 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -1,5 +1,5 @@ -import { LitElement, PropertyValues, css, html } from "lit"; -import { customElement, property, query, state } from "lit/decorators.js"; +import { LitElement, PropertyValues, html } from "lit"; +import { customElement, query, state } from "lit/decorators.js"; import { repeat } from "lit/directives/repeat.js"; import { SalesDataService } from "./services/data.service"; import { defineComponents, registerIcon, IgcButtonComponent, IgcDropdownComponent, IgcDropdownItemComponent, IgcIconComponent } from "igniteui-webcomponents"; @@ -12,7 +12,7 @@ import { IgcPivotConfiguration, IgcPivotDateDimension, IgcColumnComponent, - CsvFileTypes, + // CsvFileTypes, // IgcCsvExporterService, // IgcCsvExporterOptions, // IgcExcelExporterService, @@ -40,7 +40,7 @@ export class IgcSaleProfitAggregate { public static totalProfit = (_: any, data: any[] | undefined) => data?.reduce((accumulator, value) => accumulator + (value.Sale - value.Cost), 0) || 0; - public static averageProfit = (_, data: any[] | undefined) => { + public static averageProfit = (_: any, data: any[] | undefined) => { let average = 0; if (data?.length === 1) { average = data[0].Sale - data[0].Cost; @@ -135,7 +135,7 @@ export class SalesGrid extends LitElement { label: 'Sum' }, ], - formatter: (value, _, __) => { + formatter: (value: any, _: any, __: any) => { return this.currencyFormatter(value, 'Sale'); } }; @@ -370,7 +370,7 @@ export class SalesGrid extends LitElement { this.pivotGrid.pivotConfiguration = this.availableConfigs.get(this.selectedConfig)?.config || this.pivotConfigBrands; } - public onExportSelection(event: CustomEvent) { + public onExportSelection(/*event: CustomEvent*/) { // To uncomment once Excel and CSV exporter are available in WC // let options!: IgcExporterOptionsBase; // const newId = event.detail.id; diff --git a/projects/sales-grid/vite.config.ts b/projects/sales-grid/vite.config.ts deleted file mode 100644 index 120a6a7..0000000 --- a/projects/sales-grid/vite.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { defineConfig } from 'vite'; - -export default defineConfig({ - build: { - rollupOptions: { - output: { - entryFileNames: '[hash].js', - chunkFileNames: '[hash].js', - assetFileNames: '[hash][extname]', - }, - onwarn: (warning, warn) => { - if (warning.code === 'THIS_IS_UNDEFINED') return; - warn(warning); - }, - }, - target: 'es2021', - minify: 'terser', - emptyOutDir: false, - chunkSizeWarningLimit: 10 * 1024 * 1024 // 10 MB - }, - plugins: [ - ], -}); From d1bb56c4fc1663a91cc266f6ab0cfba80f25acb2 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 27 Mar 2025 14:58:46 +0200 Subject: [PATCH 03/11] Fix typography not applied and apply custom currency formatting. --- projects/sales-grid/index.html | 3 ++- projects/sales-grid/src/index.css | 5 +++++ projects/sales-grid/src/sales-grid.styles.ts | 13 +++++-------- projects/sales-grid/src/sales-grid.ts | 17 +++++++++++------ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/projects/sales-grid/index.html b/projects/sales-grid/index.html index b590663..d5a9553 100644 --- a/projects/sales-grid/index.html +++ b/projects/sales-grid/index.html @@ -6,7 +6,8 @@ Vite + Lit + TS - + + diff --git a/projects/sales-grid/src/index.css b/projects/sales-grid/src/index.css index e69de29..b018743 100644 --- a/projects/sales-grid/src/index.css +++ b/projects/sales-grid/src/index.css @@ -0,0 +1,5 @@ +body { + margin: 0; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/projects/sales-grid/src/sales-grid.styles.ts b/projects/sales-grid/src/sales-grid.styles.ts index 1db1ee7..b0bda0a 100644 --- a/projects/sales-grid/src/sales-grid.styles.ts +++ b/projects/sales-grid/src/sales-grid.styles.ts @@ -1,7 +1,7 @@ import { css } from "lit"; export const salesGridStyles = css` -:host { + :host { display: block; height: 100%; width: 100%; @@ -47,7 +47,6 @@ export const salesGridStyles = css` width: 100%; display: flex; align-items: center; - // justify-content: center; } .countryImage { @@ -61,13 +60,11 @@ export const salesGridStyles = css` border-top: none; height: 100%; - ::ng-deep { - .igx-list__item-content { - padding: 0 8px !important; + .igx-list__item-content { + padding: 0 8px !important; - span { - margin-inline-start: initial; - } + span { + margin-inline-start: initial; } } } diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index 685225c..00f2070 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -397,23 +397,28 @@ export class SalesGrid extends LitElement { } public currencyFormatter(value: any, field: string) { - var valueConfig = this.pivotGrid.pivotConfiguration.values.find(value => value.member === field); + const valueConfig = this.pivotGrid.pivotConfiguration.values.find(value => value.member === field); if (!valueConfig || valueConfig.aggregate.key === "COUNT") { return value; } - return value; + const roundedValue = (Math.round(value * 100) / 100).toString(); + const numLength = roundedValue.split('').length; + const separatedValue = roundedValue.split('').reverse() + .reduce((prev, curr, index) => prev + curr + ((index + 1) % 3 === 0 && index < numLength - 1 ? ",": "")) + .split('').reverse().join(""); + return "$" + separatedValue; } render() { return html` - -
+ +
Sales Dashboard
- + - Change View + ${this.availableConfigs.get(this.selectedConfig)?.title} From 93c81827cae2170c4734ddf3aee12ff767a2591c Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 3 Apr 2025 18:59:43 +0300 Subject: [PATCH 04/11] Add loading indicator for Sales Grid. --- projects/sales-grid/src/sales-grid.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index 00f2070..76800b9 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -441,6 +441,7 @@ export class SalesGrid extends LitElement {
Date: Tue, 15 Apr 2025 10:15:00 +0300 Subject: [PATCH 05/11] Apply commets. Fix config change and filtering setup. --- projects/sales-grid/package-lock.json | 54 ++++++++----------- projects/sales-grid/package.json | 7 ++- projects/sales-grid/src/index.css | 14 +++-- projects/sales-grid/src/sales-grid.ts | 75 +++++++++++++++------------ 4 files changed, 77 insertions(+), 73 deletions(-) diff --git a/projects/sales-grid/package-lock.json b/projects/sales-grid/package-lock.json index 0c8d888..171a298 100644 --- a/projects/sales-grid/package-lock.json +++ b/projects/sales-grid/package-lock.json @@ -9,11 +9,10 @@ "version": "0.0.0", "dependencies": { "igniteui-webcomponents": "~5.2.4", - "igniteui-webcomponents-core": "5.2.1-beta.0", - "igniteui-webcomponents-grids": "5.2.1-beta.0", - "igniteui-webcomponents-inputs": "5.2.1-beta.0", - "lit": "^3.2.1", - "rxjs": "~7.8.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-grids": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0", + "lit": "^3.2.1" }, "devDependencies": { "typescript": "~5.7.2", @@ -855,9 +854,9 @@ } }, "node_modules/igniteui-webcomponents-core": { - "version": "5.2.1-beta.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.2.1-beta.0.tgz", - "integrity": "sha512-eRGK/O+EhshVlis/x6vY/T7PQS0JFDclciQWD4tTY8dmj4zd9Miqbw5ZrUt42uVtSP2S3Ktc1teSOAEKhGzV5g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.4.0.tgz", + "integrity": "sha512-JKQ0CXPprcHwEyV7uO62YmONcfN+0ExqeSiW+X3Ge390aetIW49HT0ynph6rZAg3UP4NVeh2i0OitmH7jgkQUA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" @@ -867,43 +866,43 @@ } }, "node_modules/igniteui-webcomponents-grids": { - "version": "5.2.1-beta.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-5.2.1-beta.0.tgz", - "integrity": "sha512-p4KDkTTXupM0H1kGkCH0HOhPqxGiGAQa5IcxSWSS24a0Z/QOog7JP8ZLzeAP6BtxJFdi6rGVDee0vBwp+QUbTg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-5.4.0.tgz", + "integrity": "sha512-qt9SEMf+//pbDly5uOo/O+e6DWgSTLC7fdop2RhzlNZYF+ygPRe/PXijtbo1UCr1QvXjTwNYRzQ3zFGoUg3ILw==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.2.1-beta.0", - "igniteui-webcomponents-inputs": "5.2.1-beta.0", - "igniteui-webcomponents-layouts": "5.2.1-beta.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0", + "igniteui-webcomponents-layouts": "5.4.0" } }, "node_modules/igniteui-webcomponents-inputs": { - "version": "5.2.1-beta.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.2.1-beta.0.tgz", - "integrity": "sha512-9KoKLbugIatWxAdhnJglQTtgv7v1I/q4z0aQ9y+dNph4Ox0yXI61BJWj4wEC4hXwP6JilB+WY3NJr8S6Dw884g==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.4.0.tgz", + "integrity": "sha512-sGVwoHNsf9P7aEEyz+zyKgb5K6s+SHn7Pi9f3m/XJb2CGIaGgEkBWyA+nQocsBHGegPFE13LtGDhd2fjo8WJAQ==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.2.1-beta.0" + "igniteui-webcomponents-core": "5.4.0" } }, "node_modules/igniteui-webcomponents-layouts": { - "version": "5.2.1-beta.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-5.2.1-beta.0.tgz", - "integrity": "sha512-uD49i6V4ymFNMyrsqAusHDprjOAEnMAID+GnFe5pjc7uaWaWrpQ4RdIgETyzi7Pks+VP+nVBs5w0r2C9vg+BsA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-5.4.0.tgz", + "integrity": "sha512-Nbg3dEKX2xYTSoPHbyoQdRvcsemEBk+Ej+QM7qfZFw0G+uqyIf11hgOWvm8WEmMzFGnfbqpS43V8j2MEAc/LnA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "peer": true, "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.2.1-beta.0", - "igniteui-webcomponents-inputs": "5.2.1-beta.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0" } }, "node_modules/lit": { @@ -1031,15 +1030,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", diff --git a/projects/sales-grid/package.json b/projects/sales-grid/package.json index 51d38dd..26e6bb4 100644 --- a/projects/sales-grid/package.json +++ b/projects/sales-grid/package.json @@ -11,11 +11,10 @@ }, "dependencies": { "lit": "^3.2.1", - "rxjs": "~7.8.0", "igniteui-webcomponents": "~5.2.4", - "igniteui-webcomponents-core": "5.2.1-beta.0", - "igniteui-webcomponents-grids": "5.2.1-beta.0", - "igniteui-webcomponents-inputs": "5.2.1-beta.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-grids": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0" }, "devDependencies": { "typescript": "~5.7.2", diff --git a/projects/sales-grid/src/index.css b/projects/sales-grid/src/index.css index b018743..4a57bb8 100644 --- a/projects/sales-grid/src/index.css +++ b/projects/sales-grid/src/index.css @@ -1,5 +1,11 @@ -body { - margin: 0; - width: 100%; +html, body { height: 100%; -} \ No newline at end of file +} + +html { + box-sizing: border-box; +} + +body, h1, h2, h3, h4, h5, h6, p { + margin: 0; +} diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index 76800b9..ea98c9c 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -93,8 +93,38 @@ export class SalesGrid extends LitElement { public exportDropdownOpen = false; public flagsData = FLAGS; - public brandFilter = new IgcFilteringExpressionsTree(); - public bulgariaCountryFilter = new IgcFilteringExpressionsTree(); + public brandFilter: IgcFilteringExpressionsTree = { + operator: FilteringLogic.Or, + fieldName: 'Brand', + filteringOperands: [ + { + operator: FilteringLogic.Or, + fieldName: 'Brand', + filteringOperands: [ + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Brand', + searchVal: 'HM' + }, + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Brand', + searchVal: 'HM Home' + } + ] + } + ] + }; + public bulgariaCountryFilter: IgcFilteringExpressionsTree = { + operator: FilteringLogic.And, + filteringOperands: [ + { + condition: IgcStringFilteringOperand.instance().condition('equals'), + fieldName: 'Country', + searchVal: 'Bulgaria' + }, + ] + }; // public excelExporter = new IgcExcelExporterService(); // public csvExporter = new IgcCsvExporterService(); @@ -189,8 +219,7 @@ export class SalesGrid extends LitElement { { enabled: true, memberName: 'Brand', - displayName: 'Brand', - filter: this.brandFilter + displayName: 'Brand' }, { enabled: false, @@ -213,6 +242,14 @@ export class SalesGrid extends LitElement { values: [ this.saleValue, this.profitValue + ], + filters: [ + { + enabled: true, + memberName: 'Brand', + displayName: 'Brand', + filter: this.brandFilter + }, ] }; public pivotConfigBrandsCombined: IgcPivotConfiguration = { @@ -313,33 +350,6 @@ export class SalesGrid extends LitElement { registerIcon("visibility", VISIBILITY_SVG, "material"); registerIcon("file_download", FILE_DOWNLOAD_SVG, "custom"); - // - var multipleFilters = new IgcFilteringExpressionsTree(); - multipleFilters.operator = FilteringLogic.Or; - multipleFilters.fieldName = 'Brand'; - multipleFilters.filteringOperands = [ - { - condition: IgcStringFilteringOperand.instance().condition('equals'), - fieldName: 'Brand', - searchVal: 'HM' - }, - { - condition: IgcStringFilteringOperand.instance().condition('equals'), - fieldName: 'Brand', - searchVal: 'HM Home' - }, - ]; - this.brandFilter.operator = FilteringLogic.Or; - this.brandFilter.fieldName = 'Brand'; - this.brandFilter.filteringOperands = [multipleFilters]; - this.bulgariaCountryFilter.operator = FilteringLogic.And; - this.bulgariaCountryFilter.filteringOperands = [ - { - condition: IgcStringFilteringOperand.instance().condition('equals'), - fieldName: 'Country', - searchVal: 'Bulgaria' - }, - ]; } protected firstUpdated(_changedProperties: PropertyValues): void { @@ -367,7 +377,6 @@ export class SalesGrid extends LitElement { public onViewSelection(event: CustomEvent) { this.selectedConfig = event.detail.id; - this.pivotGrid.pivotConfiguration = this.availableConfigs.get(this.selectedConfig)?.config || this.pivotConfigBrands; } public onExportSelection(/*event: CustomEvent*/) { @@ -445,7 +454,7 @@ export class SalesGrid extends LitElement { .data="${this.salesData}" .superCompactMode="${true}" .defaultExpandState="${true}" - .pivotConfiguration="${this.pivotConfigBrands}" + .pivotConfiguration="${this.availableConfigs.get(this.selectedConfig)?.config}" @columnInit="${this.onColumnInit}">
From acf1ed9436e0024df012a413bc1f3d4d5f650962 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 10:33:29 +0300 Subject: [PATCH 06/11] Remove export dropdown and fix empty cell format. --- projects/sales-grid/src/sales-grid.ts | 37 ++++++++------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index ea98c9c..80ee82e 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -89,8 +89,6 @@ export class SalesGrid extends LitElement { @state() public viewDropdownOpen = false; - @state() - public exportDropdownOpen = false; public flagsData = FLAGS; public brandFilter: IgcFilteringExpressionsTree = { @@ -363,23 +361,7 @@ export class SalesGrid extends LitElement { } public onExportDropdownButton(event: MouseEvent) { - this.exportDropdown.toggle(event.currentTarget as HTMLElement); - this.exportDropdownOpen = !this.exportDropdownOpen; - } - - public onViewDropdownVisibility(_: CustomEvent) { - this.viewDropdownOpen = !this.viewDropdownOpen; - } - - public onExportDropdownVisibility(_: CustomEvent) { - this.exportDropdownOpen = !this.exportDropdownOpen; - } - - public onViewSelection(event: CustomEvent) { - this.selectedConfig = event.detail.id; - } - - public onExportSelection(/*event: CustomEvent*/) { + // TO DO // To uncomment once Excel and CSV exporter are available in WC // let options!: IgcExporterOptionsBase; // const newId = event.detail.id; @@ -390,13 +372,21 @@ export class SalesGrid extends LitElement { // options = new IgcExcelExporterOptions(this.fileName); // this.excelExporter.export(this.pivotGrid, options); // } - this.exportDropdown.clearSelection(); + } + + public onViewDropdownVisibility(_: CustomEvent) { + this.viewDropdownOpen = !this.viewDropdownOpen; + } + + public onViewSelection(event: CustomEvent) { + this.selectedConfig = event.detail.id; } public onColumnInit(event: CustomEvent) { const col = event.detail; var countryKeys = Object.keys(this.flagsData); if (countryKeys.includes(col.field)) { + // TO DO // col.headerTemplate = (_: IgcColumnTemplateContext) => html` //
// ${col.field} @@ -432,18 +422,13 @@ export class SalesGrid extends LitElement { - Export - + Export to Excel ${repeat(this.availableConfigs, (configInfo) => configInfo[0], (configInfo, _) => html` ${this.availableConfigs.get(configInfo[0])?.title} `)} - - Export to Excel - Export to CSV -
From 2d10c18c901a1ab0b4767b72cfc03e90a57b3a99 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 11:35:36 +0300 Subject: [PATCH 07/11] Add sales grid app to main app. --- package-lock.json | 38 +- package.json | 2 +- projects/sales-grid/index.html | 4 +- projects/sales-grid/package-lock.json | 796 +++++++++++++++++- projects/sales-grid/package.json | 5 +- .../images => public}/flags/Australia.svg | 0 .../images => public}/flags/Belgium.svg | 0 .../assets/images => public}/flags/Brazil.svg | 0 .../images => public}/flags/Bulgaria.svg | 0 .../assets/images => public}/flags/Canada.svg | 0 .../assets/images => public}/flags/China.svg | 0 .../images => public}/flags/Denmark.svg | 0 .../images => public}/flags/Finland.svg | 0 .../assets/images => public}/flags/France.svg | 0 .../images => public}/flags/Germany.svg | 0 .../assets/images => public}/flags/Greece.svg | 0 .../assets/images => public}/flags/India.svg | 0 .../assets/images => public}/flags/Italy.svg | 0 .../assets/images => public}/flags/Japan.svg | 0 .../images => public}/flags/Netherlands.svg | 0 .../assets/images => public}/flags/Poland.svg | 0 .../images => public}/flags/Romania.svg | 0 .../images => public}/flags/UnitedKingdom.svg | 0 .../images => public}/flags/UnitedStates.svg | 0 .../images => public}/flags/Uruguay.svg | 0 projects/sales-grid/src/sales-grid.scss | 76 ++ projects/sales-grid/src/sales-grid.styles.ts | 71 -- projects/sales-grid/src/sales-grid.ts | 33 +- projects/sales-grid/src/styles/index.css | 19 + projects/sales-grid/src/styles/utils.scss | 33 + projects/sales-grid/vite.config.ts | 20 + src/views/sales/sales-view.scss | 13 + src/views/sales/sales-view.ts | 94 +-- vite.config.ts | 8 + 34 files changed, 1021 insertions(+), 191 deletions(-) rename projects/sales-grid/{src/assets/images => public}/flags/Australia.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Belgium.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Brazil.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Bulgaria.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Canada.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/China.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Denmark.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Finland.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/France.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Germany.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Greece.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/India.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Italy.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Japan.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Netherlands.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Poland.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Romania.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/UnitedKingdom.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/UnitedStates.svg (100%) rename projects/sales-grid/{src/assets/images => public}/flags/Uruguay.svg (100%) create mode 100644 projects/sales-grid/src/sales-grid.scss delete mode 100644 projects/sales-grid/src/sales-grid.styles.ts create mode 100644 projects/sales-grid/src/styles/index.css create mode 100644 projects/sales-grid/src/styles/utils.scss create mode 100644 projects/sales-grid/vite.config.ts create mode 100644 src/views/sales/sales-view.scss diff --git a/package-lock.json b/package-lock.json index f58b51d..4602dc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@vaadin/router": "^2.0.0", "igniteui-theming": "^17.0.0", "igniteui-webcomponents": "^5.3.0", - "igniteui-webcomponents-grids": "^5.3.0", + "igniteui-webcomponents-grids": "^5.4.0", "lit": "^3.2.1", "sass": "^1.86.0" }, @@ -1414,9 +1414,9 @@ } }, "node_modules/igniteui-webcomponents-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.3.0.tgz", - "integrity": "sha512-Sf82hGMsb95kxF9vtiXhZ4oTgGpRyNOQ2PfYnm+eYpZWyOPXtKUkgFJMsuksMA0hgXMkVsLCm1gMB1Ti9E0iVw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.4.0.tgz", + "integrity": "sha512-JKQ0CXPprcHwEyV7uO62YmONcfN+0ExqeSiW+X3Ge390aetIW49HT0ynph6rZAg3UP4NVeh2i0OitmH7jgkQUA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "peer": true, "dependencies": { @@ -1427,44 +1427,44 @@ } }, "node_modules/igniteui-webcomponents-grids": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-5.3.0.tgz", - "integrity": "sha512-H196T6wla2nG+ocb9aUnUQ5eJVI3Vslrc10I9/MjRYJ2EDwx3/5/ODxx1hUk/NpVHm38cb2thjX/44LOMI0Yqw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-5.4.0.tgz", + "integrity": "sha512-qt9SEMf+//pbDly5uOo/O+e6DWgSTLC7fdop2RhzlNZYF+ygPRe/PXijtbo1UCr1QvXjTwNYRzQ3zFGoUg3ILw==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.3.0", - "igniteui-webcomponents-inputs": "5.3.0", - "igniteui-webcomponents-layouts": "5.3.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0", + "igniteui-webcomponents-layouts": "5.4.0" } }, "node_modules/igniteui-webcomponents-inputs": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.3.0.tgz", - "integrity": "sha512-m+OyX8K2pVwQgz8GyqCY4Z6OU0HdFH8LjOPzN+fG9VKnLoj1CLZ2SxFiHk1AX4dTAYsR5zltZP0GnKrC7QD2XA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.4.0.tgz", + "integrity": "sha512-sGVwoHNsf9P7aEEyz+zyKgb5K6s+SHn7Pi9f3m/XJb2CGIaGgEkBWyA+nQocsBHGegPFE13LtGDhd2fjo8WJAQ==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "peer": true, "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.3.0" + "igniteui-webcomponents-core": "5.4.0" } }, "node_modules/igniteui-webcomponents-layouts": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-5.3.0.tgz", - "integrity": "sha512-gy3fdroVJ2BUtQ7/Lnag2lUqMI7YO+iczXPGi5DVFhbOMEf1fbJFaQAwnjPanntEAOVafRDbeZO+k+MGJ3xjoA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-5.4.0.tgz", + "integrity": "sha512-Nbg3dEKX2xYTSoPHbyoQdRvcsemEBk+Ej+QM7qfZFw0G+uqyIf11hgOWvm8WEmMzFGnfbqpS43V8j2MEAc/LnA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "peer": true, "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "5.3.0", - "igniteui-webcomponents-inputs": "5.3.0" + "igniteui-webcomponents-core": "5.4.0", + "igniteui-webcomponents-inputs": "5.4.0" } }, "node_modules/immutable": { diff --git a/package.json b/package.json index 92107ec..2acfc93 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@vaadin/router": "^2.0.0", "igniteui-theming": "^17.0.0", "igniteui-webcomponents": "^5.3.0", - "igniteui-webcomponents-grids": "^5.3.0", + "igniteui-webcomponents-grids": "^5.4.0", "lit": "^3.2.1", "sass": "^1.86.0" }, diff --git a/projects/sales-grid/index.html b/projects/sales-grid/index.html index d5a9553..63749e5 100644 --- a/projects/sales-grid/index.html +++ b/projects/sales-grid/index.html @@ -6,9 +6,7 @@ Vite + Lit + TS - - - + diff --git a/projects/sales-grid/package-lock.json b/projects/sales-grid/package-lock.json index 171a298..ec51af4 100644 --- a/projects/sales-grid/package-lock.json +++ b/projects/sales-grid/package-lock.json @@ -8,15 +8,18 @@ "name": "sales-grid", "version": "0.0.0", "dependencies": { + "igniteui-theming": "^17.1.0", "igniteui-webcomponents": "~5.2.4", "igniteui-webcomponents-core": "5.4.0", "igniteui-webcomponents-grids": "5.4.0", "igniteui-webcomponents-inputs": "5.4.0", - "lit": "^3.2.1" + "lit": "^3.2.1", + "sass": "^1.86.1" }, "devDependencies": { "typescript": "~5.7.2", - "vite": "^6.2.0" + "vite": "^6.2.0", + "vite-plugin-static-copy": "^2.3.1" } }, "node_modules/@esbuild/aix-ppc64": { @@ -503,6 +506,340 @@ "@lit-labs/ssr-dom-shim": "^1.2.0" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.36.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", @@ -782,6 +1119,74 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT" }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/esbuild": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", @@ -823,6 +1228,61 @@ "@esbuild/win32-x64": "0.25.1" } }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -838,6 +1298,35 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/igniteui-theming": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/igniteui-theming/-/igniteui-theming-17.2.0.tgz", + "integrity": "sha512-i2zMlims6zjWd8aWJsimtDtgqRe9O2i7aH/85wf+Es5x2aSkGZsE2/OLrDb0GMXt2ISIsvjVnb1P46hZYiH+BQ==", + "license": "MIT", + "peerDependencies": { + "sass": "^1.69.5" + } + }, "node_modules/igniteui-webcomponents": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/igniteui-webcomponents/-/igniteui-webcomponents-5.2.4.tgz", @@ -905,6 +1394,71 @@ "igniteui-webcomponents-inputs": "5.4.0" } }, + "node_modules/immutable": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", + "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/lit": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", @@ -936,6 +1490,30 @@ "@types/trusted-types": "^2.0.2" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -955,6 +1533,36 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -962,6 +1570,19 @@ "dev": true, "license": "ISC" }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -991,6 +1612,51 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.36.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", @@ -1030,16 +1696,72 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sass": { + "version": "1.86.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", + "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -1060,6 +1782,16 @@ "node": ">=14.17" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/vite": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", @@ -1131,6 +1863,64 @@ "optional": true } } + }, + "node_modules/vite-plugin-static-copy": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-2.3.1.tgz", + "integrity": "sha512-EfsPcBm3ewg3UMG8RJaC0ADq6/qnUZnokXx4By4+2cAcipjT9i0Y0owIJGqmZI7d6nxk4qB1q5aXOwNuSyPdyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "fs-extra": "^11.1.0", + "p-map": "^7.0.3", + "picocolors": "^1.0.0" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } } } } diff --git a/projects/sales-grid/package.json b/projects/sales-grid/package.json index 26e6bb4..1f5f085 100644 --- a/projects/sales-grid/package.json +++ b/projects/sales-grid/package.json @@ -11,6 +11,8 @@ }, "dependencies": { "lit": "^3.2.1", + "sass": "^1.86.1", + "igniteui-theming": "^17.1.0", "igniteui-webcomponents": "~5.2.4", "igniteui-webcomponents-core": "5.4.0", "igniteui-webcomponents-grids": "5.4.0", @@ -18,6 +20,7 @@ }, "devDependencies": { "typescript": "~5.7.2", - "vite": "^6.2.0" + "vite": "^6.2.0", + "vite-plugin-static-copy": "^2.3.1" } } diff --git a/projects/sales-grid/src/assets/images/flags/Australia.svg b/projects/sales-grid/public/flags/Australia.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Australia.svg rename to projects/sales-grid/public/flags/Australia.svg diff --git a/projects/sales-grid/src/assets/images/flags/Belgium.svg b/projects/sales-grid/public/flags/Belgium.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Belgium.svg rename to projects/sales-grid/public/flags/Belgium.svg diff --git a/projects/sales-grid/src/assets/images/flags/Brazil.svg b/projects/sales-grid/public/flags/Brazil.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Brazil.svg rename to projects/sales-grid/public/flags/Brazil.svg diff --git a/projects/sales-grid/src/assets/images/flags/Bulgaria.svg b/projects/sales-grid/public/flags/Bulgaria.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Bulgaria.svg rename to projects/sales-grid/public/flags/Bulgaria.svg diff --git a/projects/sales-grid/src/assets/images/flags/Canada.svg b/projects/sales-grid/public/flags/Canada.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Canada.svg rename to projects/sales-grid/public/flags/Canada.svg diff --git a/projects/sales-grid/src/assets/images/flags/China.svg b/projects/sales-grid/public/flags/China.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/China.svg rename to projects/sales-grid/public/flags/China.svg diff --git a/projects/sales-grid/src/assets/images/flags/Denmark.svg b/projects/sales-grid/public/flags/Denmark.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Denmark.svg rename to projects/sales-grid/public/flags/Denmark.svg diff --git a/projects/sales-grid/src/assets/images/flags/Finland.svg b/projects/sales-grid/public/flags/Finland.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Finland.svg rename to projects/sales-grid/public/flags/Finland.svg diff --git a/projects/sales-grid/src/assets/images/flags/France.svg b/projects/sales-grid/public/flags/France.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/France.svg rename to projects/sales-grid/public/flags/France.svg diff --git a/projects/sales-grid/src/assets/images/flags/Germany.svg b/projects/sales-grid/public/flags/Germany.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Germany.svg rename to projects/sales-grid/public/flags/Germany.svg diff --git a/projects/sales-grid/src/assets/images/flags/Greece.svg b/projects/sales-grid/public/flags/Greece.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Greece.svg rename to projects/sales-grid/public/flags/Greece.svg diff --git a/projects/sales-grid/src/assets/images/flags/India.svg b/projects/sales-grid/public/flags/India.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/India.svg rename to projects/sales-grid/public/flags/India.svg diff --git a/projects/sales-grid/src/assets/images/flags/Italy.svg b/projects/sales-grid/public/flags/Italy.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Italy.svg rename to projects/sales-grid/public/flags/Italy.svg diff --git a/projects/sales-grid/src/assets/images/flags/Japan.svg b/projects/sales-grid/public/flags/Japan.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Japan.svg rename to projects/sales-grid/public/flags/Japan.svg diff --git a/projects/sales-grid/src/assets/images/flags/Netherlands.svg b/projects/sales-grid/public/flags/Netherlands.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Netherlands.svg rename to projects/sales-grid/public/flags/Netherlands.svg diff --git a/projects/sales-grid/src/assets/images/flags/Poland.svg b/projects/sales-grid/public/flags/Poland.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Poland.svg rename to projects/sales-grid/public/flags/Poland.svg diff --git a/projects/sales-grid/src/assets/images/flags/Romania.svg b/projects/sales-grid/public/flags/Romania.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Romania.svg rename to projects/sales-grid/public/flags/Romania.svg diff --git a/projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg b/projects/sales-grid/public/flags/UnitedKingdom.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/UnitedKingdom.svg rename to projects/sales-grid/public/flags/UnitedKingdom.svg diff --git a/projects/sales-grid/src/assets/images/flags/UnitedStates.svg b/projects/sales-grid/public/flags/UnitedStates.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/UnitedStates.svg rename to projects/sales-grid/public/flags/UnitedStates.svg diff --git a/projects/sales-grid/src/assets/images/flags/Uruguay.svg b/projects/sales-grid/public/flags/Uruguay.svg similarity index 100% rename from projects/sales-grid/src/assets/images/flags/Uruguay.svg rename to projects/sales-grid/public/flags/Uruguay.svg diff --git a/projects/sales-grid/src/sales-grid.scss b/projects/sales-grid/src/sales-grid.scss new file mode 100644 index 0000000..9f84797 --- /dev/null +++ b/projects/sales-grid/src/sales-grid.scss @@ -0,0 +1,76 @@ +@use "./styles/utils" as *; +@use "igniteui-theming" as *; +@use "igniteui-theming/sass/typography/presets/indigo" as *; +@use "igniteui-theming/sass/elevations/presets" as *; +@use "igniteui-theming/sass/color/presets/light/indigo" as *; + +:host { + display: block; + height: 100%; + width: 100%; + + font-family: var(--ig-font-family); + @include theme($palette, $material-elevations, $typeface, $type-scale, "light"); +} + +.rootSample { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + --ig-size: var(--ig-size-small); +} + +.pivotToolbar { + display: flex; + justify-content: space-between; + min-height: 40px; + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + background: var(--ig-grid-header-background, hsl(from var(--ig-surface-500) h s l/1)); +} + +.pivotRow { + display: flex; + flex-direction: row; + height: calc(100% - 40px); +} + +.pivotContainer { + width: 100%; + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + border-top: none; + border-right: none; + overflow: auto; +} + +.selectorContainer { + height: 100%; + min-width: 200px; + overflow-y: auto; +} + +.countryHeader { + width: 100%; + display: flex; + align-items: center; +} + +.countryImage { + height: 14px; + margin-right: 4px; +} + + +igc-pivot-data-selector { + border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); + border-top: none; + height: 100%; + + .igx-list__item-content { + padding: 0 8px !important; + + span { + margin-inline-start: initial; + } + } +} diff --git a/projects/sales-grid/src/sales-grid.styles.ts b/projects/sales-grid/src/sales-grid.styles.ts deleted file mode 100644 index b0bda0a..0000000 --- a/projects/sales-grid/src/sales-grid.styles.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { css } from "lit"; - -export const salesGridStyles = css` - :host { - display: block; - height: 100%; - width: 100%; - } - - .rootSample { - display: flex; - flex-direction: column; - width: 100%; - height: 100%; - --ig-size: var(--ig-size-small); - } - - .pivotToolbar { - display: flex; - justify-content: space-between; - min-height: 40px; - border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); - background: var(--ig-grid-header-background, hsl(from var(--ig-surface-500) h s l/1)); - } - - .pivotRow { - display: flex; - flex-direction: row; - height: calc(100% - 40px); - } - - .pivotContainer { - width: 100%; - border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); - border-top: none; - border-right: none; - overflow: auto; - } - - .selectorContainer { - height: 100%; - min-width: 200px; - overflow-y: auto; - } - - .countryHeader { - width: 100%; - display: flex; - align-items: center; - } - - .countryImage { - height: 14px; - margin-right: 4px; - } - - - igc-pivot-data-selector { - border: solid 1px hsl(from var(--ig-gray-400) h s l / 1); - border-top: none; - height: 100%; - - .igx-list__item-content { - padding: 0 8px !important; - - span { - margin-inline-start: initial; - } - } - } - `; \ No newline at end of file diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index 80ee82e..e314b70 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -1,8 +1,8 @@ -import { LitElement, PropertyValues, html } from "lit"; +import { LitElement, PropertyValues, html, unsafeCSS } from "lit"; import { customElement, query, state } from "lit/decorators.js"; import { repeat } from "lit/directives/repeat.js"; import { SalesDataService } from "./services/data.service"; -import { defineComponents, registerIcon, IgcButtonComponent, IgcDropdownComponent, IgcDropdownItemComponent, IgcIconComponent } from "igniteui-webcomponents"; +import { configureTheme, defineComponents, registerIcon, IgcButtonComponent, IgcDropdownComponent, IgcDropdownItemComponent, IgcIconComponent } from "igniteui-webcomponents"; import { IgcPivotGridComponent, IgcFilteringExpressionsTree, @@ -12,16 +12,10 @@ import { IgcPivotConfiguration, IgcPivotDateDimension, IgcColumnComponent, - // CsvFileTypes, - // IgcCsvExporterService, - // IgcCsvExporterOptions, - // IgcExcelExporterService, - // IgcExcelExporterOptions, - // IgcExporterOptionsBase } from "igniteui-webcomponents-grids/grids"; import 'igniteui-webcomponents-grids/grids/combined.js'; -import { salesGridStyles } from './sales-grid.styles'; +import salesGridStyles from './sales-grid.scss?inline'; import ARROW_DOWN_SVG from "./assets/images/icons/arrow_drop_down.svg"; import ARROW_UP_SVG from "./assets/images/icons/arrow_drop_up.svg"; import VISIBILITY_SVG from "./assets/images/icons/visibility.svg"; @@ -78,14 +72,12 @@ export class IgcSaleProfitAggregate { export class SalesGrid extends LitElement { @query('#viewDropdown') private viewDropdown!: IgcDropdownComponent; - @query('#exportDropdown') - private exportDropdown!: IgcDropdownComponent; @query('#salesGrid') private pivotGrid!: IgcPivotGridComponent; @state() - public salesData: any[] = []; + public salesData = []; @state() public viewDropdownOpen = false; @@ -341,7 +333,9 @@ export class SalesGrid extends LitElement { super(); // Fetch data - SalesDataService.getSalesData().then(data => this.salesData = data); + SalesDataService.getSalesData().then(data => { + this.salesData = data; + }); registerIcon("arrow_down", ARROW_DOWN_SVG, "material"); registerIcon("arrow_up", ARROW_UP_SVG, "material"); @@ -360,7 +354,7 @@ export class SalesGrid extends LitElement { this.viewDropdownOpen = !this.viewDropdownOpen; } - public onExportDropdownButton(event: MouseEvent) { + public onExportDropdownButton() { // TO DO // To uncomment once Excel and CSV exporter are available in WC // let options!: IgcExporterOptionsBase; @@ -396,6 +390,9 @@ export class SalesGrid extends LitElement { } public currencyFormatter(value: any, field: string) { + if (value === undefined || value === null){ + return ""; + } const valueConfig = this.pivotGrid.pivotConfiguration.values.find(value => value.member === field); if (!valueConfig || valueConfig.aggregate.key === "COUNT") { return value; @@ -409,8 +406,10 @@ export class SalesGrid extends LitElement { } render() { + configureTheme("indigo"); + return html` - +
Sales Dashboard @@ -451,9 +450,7 @@ export class SalesGrid extends LitElement { `; } - static styles = [ - salesGridStyles, - ]; + static styles = unsafeCSS(salesGridStyles); } declare global { diff --git a/projects/sales-grid/src/styles/index.css b/projects/sales-grid/src/styles/index.css new file mode 100644 index 0000000..a950b4c --- /dev/null +++ b/projects/sales-grid/src/styles/index.css @@ -0,0 +1,19 @@ +html, +body { + height: 100%; +} + +html { + box-sizing: border-box; +} + +body, +h1, +h2, +h3, +h4, +h5, +h6, +p { + margin: 0; +} diff --git a/projects/sales-grid/src/styles/utils.scss b/projects/sales-grid/src/styles/utils.scss new file mode 100644 index 0000000..28e2924 --- /dev/null +++ b/projects/sales-grid/src/styles/utils.scss @@ -0,0 +1,33 @@ +@use "sass:map"; +@use "igniteui-theming" as *; + +@function is-root() { + @each $selector in & { + @return $selector == null; + } +} + +@mixin theme($palette, $elevations, $typeface, $type-scale, $variant) { + $root: is-root(); + $scope: if($root, ":root", "&"); + + #{$scope} { + --ig-theme: #{map.get($palette, "_meta", "variant")}; + --ig-theme-variant: #{$variant}; + --ig-spacing: 1; + --ig-spacing-inline: 1; + --ig-spacing-block: 1; + --ig-size-small: 1; + --ig-size-medium: 2; + --ig-size-large: 3; + --ig-scrollbar-size: #{rem(16px)}; + } + + #{$scope}[dir="rtl"] { + --ig-dir: -1; + } + + @include palette($palette); + @include elevations($elevations); + @include typography($font-family: $typeface, $type-scale: $type-scale); +} diff --git a/projects/sales-grid/vite.config.ts b/projects/sales-grid/vite.config.ts new file mode 100644 index 0000000..2fb9181 --- /dev/null +++ b/projects/sales-grid/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "vite"; +import { viteStaticCopy } from "vite-plugin-static-copy"; + +export default defineConfig({ + resolve: { + alias: { + "igniteui-theming": new URL("./node_modules/igniteui-theming", import.meta.url).pathname, + }, + }, + plugins: [ + viteStaticCopy({ + targets: [ + { + src: "node_modules/igniteui-webcomponents-grids/grids/themes/light/indigo.css", + dest: "themes", + }, + ], + }), + ], +}); diff --git a/src/views/sales/sales-view.scss b/src/views/sales/sales-view.scss new file mode 100644 index 0000000..35db6f7 --- /dev/null +++ b/src/views/sales/sales-view.scss @@ -0,0 +1,13 @@ +:host { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; +} + +iframe { + width: 100%; + height: 100%; + border: 0; +} diff --git a/src/views/sales/sales-view.ts b/src/views/sales/sales-view.ts index 575895d..6a0dc6b 100644 --- a/src/views/sales/sales-view.ts +++ b/src/views/sales/sales-view.ts @@ -1,81 +1,25 @@ -import { LitElement, css, html } from "lit"; +import { LitElement, html, unsafeCSS } from "lit"; import { customElement } from "lit/decorators.js"; import "../../../projects/sales-grid/src/sales-grid"; +import namedStyles from "./sales-view.scss?inline"; +import sharedStyles from "../../shared/styles.scss?inline"; + @customElement("sales-view") export default class SalesView extends LitElement { - render() { - return html` `; - } - static styles = css` - :host { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; - } - - .logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; - } - .logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); - } - .logo.lit:hover { - filter: drop-shadow(0 0 2em #325cffaa); - } - - .card { - padding: 2em; - } - - .read-the-docs { - color: #888; - } - - ::slotted(h1) { - font-size: 3.2em; - line-height: 1.1; - } - - a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; - } - a:hover { - color: #535bf2; - } - - button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; - } - button:hover { - border-color: #646cff; - } - button:focus, - button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; - } - - @media (prefers-color-scheme: light) { - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } - } - `; + constructor() { + super(); + } + + private onLoad = (event: any) => { + event.target.parentElement.classList.remove("loading"); + }; + render() { + const iframeSrc = `${import.meta.env.BASE_URL}sales`; + return html`
+ +
`; + } + + static styles = [unsafeCSS(namedStyles), unsafeCSS(sharedStyles)]; } diff --git a/vite.config.ts b/vite.config.ts index b4cfa91..bc826ec 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,6 +23,10 @@ export default defineConfig(() => { src: "./projects/hr-portal/public/*", dest: "", }, + { + src: "./projects/sales-grid/public/*", + dest: "", + }, { src: "node_modules/igniteui-webcomponents-grids/grids/themes/light/bootstrap.css", dest: "themes", @@ -31,6 +35,10 @@ export default defineConfig(() => { src: "node_modules/igniteui-webcomponents-grids/grids/themes/light/fluent.css", dest: "themes", }, + { + src: "node_modules/igniteui-webcomponents-grids/grids/themes/light/indigo.css", + dest: "themes", + }, ], }), ], From c842b377c931a38d738dcfc9f1ed14ef06bfee29 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 14:45:54 +0300 Subject: [PATCH 08/11] Fix sales grid theme not applied in index causing bugs. --- projects/sales-grid/index.html | 3 ++- projects/sales-grid/package-lock.json | 14 +++++++------- projects/sales-grid/package.json | 6 ++---- projects/sales-grid/src/sales-grid.ts | 22 +++++++++++++-------- src/views/sales/sales-view.ts | 28 +++++++++++++-------------- 5 files changed, 39 insertions(+), 34 deletions(-) diff --git a/projects/sales-grid/index.html b/projects/sales-grid/index.html index 63749e5..56efb55 100644 --- a/projects/sales-grid/index.html +++ b/projects/sales-grid/index.html @@ -3,9 +3,10 @@ - Vite + Lit + TS + Sales Grid + diff --git a/projects/sales-grid/package-lock.json b/projects/sales-grid/package-lock.json index ec51af4..fc269e2 100644 --- a/projects/sales-grid/package-lock.json +++ b/projects/sales-grid/package-lock.json @@ -9,10 +9,8 @@ "version": "0.0.0", "dependencies": { "igniteui-theming": "^17.1.0", - "igniteui-webcomponents": "~5.2.4", - "igniteui-webcomponents-core": "5.4.0", - "igniteui-webcomponents-grids": "5.4.0", - "igniteui-webcomponents-inputs": "5.4.0", + "igniteui-webcomponents": "^5.3.0", + "igniteui-webcomponents-grids": "^5.4.0", "lit": "^3.2.1", "sass": "^1.86.1" }, @@ -1328,9 +1326,9 @@ } }, "node_modules/igniteui-webcomponents": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents/-/igniteui-webcomponents-5.2.4.tgz", - "integrity": "sha512-EppDLSA0wGX6CFweeF4IVtAjMzcVw6TFDMXVKQQNwXTuSkmWLTGFgwGB7Aj/wryPz8D4bbGe8hF7Mv7sA4xI9w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents/-/igniteui-webcomponents-5.3.0.tgz", + "integrity": "sha512-K5PPwfT2ECp/W3+mNapt1HW6PRIQK7DkehK4SbsCc513LwTzBL1gfHYax0Hk3eiPJP2M/8ANBJ3yDZdRy6YzXQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@floating-ui/dom": "^1.6.0", @@ -1347,6 +1345,7 @@ "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-5.4.0.tgz", "integrity": "sha512-JKQ0CXPprcHwEyV7uO62YmONcfN+0ExqeSiW+X3Ge390aetIW49HT0ynph6rZAg3UP4NVeh2i0OitmH7jgkQUA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "peer": true, "dependencies": { "tslib": "^2.3.1" }, @@ -1373,6 +1372,7 @@ "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-5.4.0.tgz", "integrity": "sha512-sGVwoHNsf9P7aEEyz+zyKgb5K6s+SHn7Pi9f3m/XJb2CGIaGgEkBWyA+nQocsBHGegPFE13LtGDhd2fjo8WJAQ==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "peer": true, "dependencies": { "tslib": "^2.3.1" }, diff --git a/projects/sales-grid/package.json b/projects/sales-grid/package.json index 1f5f085..0e418dc 100644 --- a/projects/sales-grid/package.json +++ b/projects/sales-grid/package.json @@ -13,10 +13,8 @@ "lit": "^3.2.1", "sass": "^1.86.1", "igniteui-theming": "^17.1.0", - "igniteui-webcomponents": "~5.2.4", - "igniteui-webcomponents-core": "5.4.0", - "igniteui-webcomponents-grids": "5.4.0", - "igniteui-webcomponents-inputs": "5.4.0" + "igniteui-webcomponents": "^5.3.0", + "igniteui-webcomponents-grids": "^5.4.0" }, "devDependencies": { "typescript": "~5.7.2", diff --git a/projects/sales-grid/src/sales-grid.ts b/projects/sales-grid/src/sales-grid.ts index e314b70..d5368b2 100644 --- a/projects/sales-grid/src/sales-grid.ts +++ b/projects/sales-grid/src/sales-grid.ts @@ -2,7 +2,15 @@ import { LitElement, PropertyValues, html, unsafeCSS } from "lit"; import { customElement, query, state } from "lit/decorators.js"; import { repeat } from "lit/directives/repeat.js"; import { SalesDataService } from "./services/data.service"; -import { configureTheme, defineComponents, registerIcon, IgcButtonComponent, IgcDropdownComponent, IgcDropdownItemComponent, IgcIconComponent } from "igniteui-webcomponents"; +import { + configureTheme, + defineComponents, + registerIcon, + IgcButtonComponent, + IgcDropdownComponent, + IgcDropdownItemComponent, + IgcIconComponent +} from "igniteui-webcomponents"; import { IgcPivotGridComponent, IgcFilteringExpressionsTree, @@ -13,9 +21,10 @@ import { IgcPivotDateDimension, IgcColumnComponent, } from "igniteui-webcomponents-grids/grids"; -import 'igniteui-webcomponents-grids/grids/combined.js'; +import 'igniteui-webcomponents-grids/grids/combined.js'; import salesGridStyles from './sales-grid.scss?inline'; + import ARROW_DOWN_SVG from "./assets/images/icons/arrow_drop_down.svg"; import ARROW_UP_SVG from "./assets/images/icons/arrow_drop_up.svg"; import VISIBILITY_SVG from "./assets/images/icons/visibility.svg"; @@ -333,15 +342,12 @@ export class SalesGrid extends LitElement { super(); // Fetch data - SalesDataService.getSalesData().then(data => { - this.salesData = data; - }); + SalesDataService.getSalesData().then(data => this.salesData = data); registerIcon("arrow_down", ARROW_DOWN_SVG, "material"); registerIcon("arrow_up", ARROW_UP_SVG, "material"); registerIcon("visibility", VISIBILITY_SVG, "material"); registerIcon("file_download", FILE_DOWNLOAD_SVG, "custom"); - } protected firstUpdated(_changedProperties: PropertyValues): void { @@ -409,8 +415,8 @@ export class SalesGrid extends LitElement { configureTheme("indigo"); return html` - -
+ +
Sales Dashboard
diff --git a/src/views/sales/sales-view.ts b/src/views/sales/sales-view.ts index 6a0dc6b..85f9efd 100644 --- a/src/views/sales/sales-view.ts +++ b/src/views/sales/sales-view.ts @@ -8,18 +8,18 @@ import sharedStyles from "../../shared/styles.scss?inline"; @customElement("sales-view") export default class SalesView extends LitElement { constructor() { - super(); - } - - private onLoad = (event: any) => { - event.target.parentElement.classList.remove("loading"); - }; - render() { - const iframeSrc = `${import.meta.env.BASE_URL}sales`; - return html`
- -
`; - } - - static styles = [unsafeCSS(namedStyles), unsafeCSS(sharedStyles)]; + super(); + } + + private onLoad = (event: any) => { + event.target.parentElement.classList.remove("loading"); + }; + render() { + const iframeSrc = `${import.meta.env.BASE_URL}sales`; + return html`
+ +
`; + } + + static styles = [unsafeCSS(namedStyles), unsafeCSS(sharedStyles)]; } From d7cc74990b54e2abf418757021f7d724b59a24a8 Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 14:46:23 +0300 Subject: [PATCH 09/11] Fix hr portal missing package. --- projects/hr-portal/package-lock.json | 329 ++++++++++++++++++++++++++- projects/hr-portal/package.json | 3 +- 2 files changed, 322 insertions(+), 10 deletions(-) diff --git a/projects/hr-portal/package-lock.json b/projects/hr-portal/package-lock.json index 3864dea..60a34c4 100644 --- a/projects/hr-portal/package-lock.json +++ b/projects/hr-portal/package-lock.json @@ -16,7 +16,8 @@ }, "devDependencies": { "typescript": "~5.7.2", - "vite": "^6.2.0" + "vite": "^6.2.0", + "vite-plugin-static-copy": "^2.3.1" } }, "node_modules/@esbuild/aix-ppc64": { @@ -503,6 +504,44 @@ "@lit-labs/ssr-dom-shim": "^1.2.0" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -1078,12 +1117,39 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT" }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -1160,12 +1226,39 @@ "@esbuild/win32-x64": "0.25.1" } }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1173,6 +1266,21 @@ "node": ">=8" } }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1188,6 +1296,26 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/igniteui-theming": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/igniteui-theming/-/igniteui-theming-17.1.0.tgz", @@ -1272,12 +1400,25 @@ "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", "license": "MIT" }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.10.0" } @@ -1286,8 +1427,8 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1299,12 +1440,25 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.12.0" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/lit": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", @@ -1336,12 +1490,22 @@ "@types/trusted-types": "^2.0.2" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1376,6 +1540,29 @@ "license": "MIT", "optional": true }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1387,8 +1574,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=8.6" }, @@ -1425,6 +1612,27 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -1438,6 +1646,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.35.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", @@ -1477,6 +1696,30 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/sass": { "version": "1.86.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.1.tgz", @@ -1510,8 +1753,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1539,6 +1782,16 @@ "node": ">=14.17" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/vite": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz", @@ -1610,6 +1863,64 @@ "optional": true } } + }, + "node_modules/vite-plugin-static-copy": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-2.3.1.tgz", + "integrity": "sha512-EfsPcBm3ewg3UMG8RJaC0ADq6/qnUZnokXx4By4+2cAcipjT9i0Y0owIJGqmZI7d6nxk4qB1q5aXOwNuSyPdyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "fs-extra": "^11.1.0", + "p-map": "^7.0.3", + "picocolors": "^1.0.0" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } } } } diff --git a/projects/hr-portal/package.json b/projects/hr-portal/package.json index c0cfb64..7ebee4d 100644 --- a/projects/hr-portal/package.json +++ b/projects/hr-portal/package.json @@ -17,6 +17,7 @@ }, "devDependencies": { "typescript": "~5.7.2", - "vite": "^6.2.0" + "vite": "^6.2.0", + "vite-plugin-static-copy": "^2.3.1" } } From cbd80e17ce582720938a2404346a0c4f02c8fbcb Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 14:51:29 +0300 Subject: [PATCH 10/11] Update default route for main app to inventory. --- src/app-routing.ts | 2 +- src/views/home/home-view.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app-routing.ts b/src/app-routing.ts index 6dd8ce8..a70b2e9 100644 --- a/src/app-routing.ts +++ b/src/app-routing.ts @@ -6,7 +6,7 @@ export const routes: Route[] = [ path: "home", component: "home-view", children: [ - { path: "", redirect: "home/finance" }, + { path: "", redirect: "home/inventory" }, { path: "inventory", component: "erp-hgrid-view" }, { path: "finance", component: "finance-view" }, { path: "hr-portal", component: "hr-portal-view" }, diff --git a/src/views/home/home-view.ts b/src/views/home/home-view.ts index c51b95c..9e13a0e 100644 --- a/src/views/home/home-view.ts +++ b/src/views/home/home-view.ts @@ -92,7 +92,7 @@ export default class HomeView extends LitElement { ]); @state() - private routeName: string = "finance"; + private routeName: string = "inventory"; private updateCurrentPath = (event: any) => { const { route } = event.detail.location; From 86e99de9fdc23f0e21354cde01c7c9b52647819f Mon Sep 17 00:00:00 2001 From: skrustev Date: Thu, 17 Apr 2025 16:48:35 +0300 Subject: [PATCH 11/11] Remove extra index.css. --- projects/sales-grid/src/index.css | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 projects/sales-grid/src/index.css diff --git a/projects/sales-grid/src/index.css b/projects/sales-grid/src/index.css deleted file mode 100644 index 4a57bb8..0000000 --- a/projects/sales-grid/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -html, body { - height: 100%; -} - -html { - box-sizing: border-box; -} - -body, h1, h2, h3, h4, h5, h6, p { - margin: 0; -}