no message

This commit is contained in:
chenxuan
2024-04-22 18:08:58 +08:00
parent 93219a826b
commit 19b6fc28a3
11 changed files with 287 additions and 202 deletions
+168 -161
View File
@@ -39,6 +39,7 @@
"jest-resolve": "^27.4.2",
"jest-watch-typeahead": "^1.0.0",
"mini-css-extract-plugin": "^2.4.5",
"nanoid": "^5.0.7",
"postcss": "^8.4.4",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-loader": "^6.2.1",
@@ -2467,6 +2468,21 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/@eslint/eslintrc/node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
"resolved": "http://218.61.196.156:11694/argparse/-/argparse-2.0.1.tgz",
@@ -2497,6 +2513,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/@eslint/js": {
"version": "8.57.0",
"resolved": "http://218.61.196.156:11694/@eslint/js/-/js-8.57.0.tgz",
@@ -5644,13 +5665,13 @@
}
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
@@ -5674,34 +5695,6 @@
}
}
},
"node_modules/ajv-formats/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-formats/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "http://218.61.196.156:11694/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -6289,6 +6282,34 @@
"webpack": ">=2"
}
},
"node_modules/babel-loader/node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/babel-loader/node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/babel-loader/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/babel-loader/node_modules/schema-utils": {
"version": "2.7.1",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-2.7.1.tgz",
@@ -7269,21 +7290,6 @@
}
}
},
"node_modules/css-minimizer-webpack-plugin/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -7295,11 +7301,6 @@
"ajv": "^8.8.2"
}
},
"node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -8748,21 +8749,6 @@
"webpack": "^5.0.0"
}
},
"node_modules/eslint-webpack-plugin/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -8795,11 +8781,6 @@
"node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
}
},
"node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/eslint-webpack-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -8832,6 +8813,21 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/eslint/node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/eslint/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "http://218.61.196.156:11694/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -8926,6 +8922,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/eslint/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/eslint/node_modules/levn": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/levn/-/levn-0.4.1.tgz",
@@ -9505,6 +9506,29 @@
}
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "http://218.61.196.156:11694/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -9587,6 +9611,11 @@
"node": ">=8"
}
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
"version": "2.7.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-2.7.0.tgz",
@@ -14726,9 +14755,9 @@
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -15169,21 +15198,6 @@
"webpack": "^5.0.0"
}
},
"node_modules/mini-css-extract-plugin/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -15195,11 +15209,6 @@
"ajv": "^8.8.2"
}
},
"node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -15297,9 +15306,9 @@
}
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"version": "5.0.7",
"resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-5.0.7.tgz",
"integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==",
"funding": [
{
"type": "github",
@@ -15307,10 +15316,10 @@
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
"nanoid": "bin/nanoid.js"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
"node": "^18 || >=20"
}
},
"node_modules/natural-compare": {
@@ -17274,6 +17283,23 @@
"resolved": "http://218.61.196.156:11694/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/postcss/node_modules/nanoid": {
"version": "3.3.7",
"resolved": "http://218.61.196.156:11694/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "http://218.61.196.156:11694/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -18970,6 +18996,34 @@
"url": "https://opencollective.com/webpack"
}
},
"node_modules/schema-utils/node_modules/ajv": {
"version": "6.12.6",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/schema-utils/node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/schema-utils/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "http://218.61.196.156:11694/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
@@ -20283,6 +20337,19 @@
"is-typedarray": "^1.0.0"
}
},
"node_modules/typescript": {
"version": "5.4.5",
"resolved": "http://218.61.196.156:11694/typescript/-/typescript-5.4.5.tgz",
"integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/unbox-primitive": {
"version": "1.0.2",
"resolved": "http://218.61.196.156:11694/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -20625,21 +20692,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
"node_modules/webpack-dev-middleware/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -20651,11 +20703,6 @@
"ajv": "^8.8.2"
}
},
"node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/webpack-dev-middleware/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -20732,21 +20779,6 @@
}
}
},
"node_modules/webpack-dev-server/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/webpack-dev-server/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "http://218.61.196.156:11694/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -20758,11 +20790,6 @@
"ajv": "^8.8.2"
}
},
"node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/webpack-dev-server/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "http://218.61.196.156:11694/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -21069,21 +21096,6 @@
"node": ">=10.0.0"
}
},
"node_modules/workbox-build/node_modules/ajv": {
"version": "8.12.0",
"resolved": "http://218.61.196.156:11694/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/workbox-build/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "http://218.61.196.156:11694/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -21098,11 +21110,6 @@
"node": ">=10"
}
},
"node_modules/workbox-build/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "http://218.61.196.156:11694/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/workbox-build/node_modules/source-map": {
"version": "0.8.0-beta.0",
"resolved": "http://218.61.196.156:11694/source-map/-/source-map-0.8.0-beta.0.tgz",
+1
View File
@@ -34,6 +34,7 @@
"jest-resolve": "^27.4.2",
"jest-watch-typeahead": "^1.0.0",
"mini-css-extract-plugin": "^2.4.5",
"nanoid": "^5.0.7",
"postcss": "^8.4.4",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-loader": "^6.2.1",
+12
View File
@@ -1,5 +1,12 @@
import React from "react";
import PropTypes from 'prop-types'
class Footer extends React.Component {
static propTypes={
todos:PropTypes.array.isRequired
}
static dfaultProps={
todos:[]
}
handleCheckAll=()=>{
}
@@ -8,11 +15,16 @@ class Footer extends React.Component {
}
render(){
const {todos}=this.props
const doneCount = todos.reduce((pre,todo)=> pre + (todo.done ? 1 : 0),0)
const total = todos.length
return (
<div className="todo-footer">
<label>
<input type="checkbox" onChange={this.handleCheckAll} checked={true} />
</label>
<li>
<span>已完成{doneCount}</span> / 全部{total}
</li>
<button className="btn-clear" onClick={this.handleClearAllDone}>清除已完成任务</button>
</div>
)
+11 -2
View File
@@ -1,9 +1,18 @@
import React from "react";
class Footer extends React.Component {
state={mouse:false}
handleMouse=(flag)=>{
this.setState({mouse:flag})
}
render(){
const {done,name,id}=this.props;
return (
<div>
<h1>Item</h1>
<div className="todo-item" onMouseEnter={this.handleMouse(true)} onMouseLeave={this.handleMouse(false)}>
<label>
<input type="checkbox" checked={done} onChange={()=>this.props.handleCheck(id)}/>
<span>{name}</span>
</label>
<button className="btn btn-danger" style={{display:this.state.mouse?'block':'none'}}>删除</button>
</div>
)
}
+20 -2
View File
@@ -1,9 +1,27 @@
import React from "react";
import Item from "../Item/index"
import PropTypes from 'prop-types'
class Footer extends React.Component {
static propTypes={
todos:PropTypes.array.isRequired,
deleteTodo:PropTypes.func.isRequired,
updateTodo:PropTypes.func.isRequired
}
static defaultProps={
todos:[],
deleteTodo:()=>{},
updateTodo:()=>{}
}
render(){
const {todos,deleteTodo,updateTodo}=this.props
console.log(todos)
return (
<div>
<h1>List</h1>
<div className="todo-main">
{/* {
todos.map((i)=>{
return <Item key={i.id} {...i} deleteTodo={deleteTodo} updateTodo={updateTodo}/>
})
} */}
</div>
)
}
+4 -5
View File
@@ -5,25 +5,24 @@
border: 1px solid #eee;
margin: 100px auto 0;
}
.todo-footer {
.todo .todo-footer {
height: 40px;
line-height: 40px;
padding-left: 6px;
margin-top: 5px;
}
.todo-footer label {
.todo .todo-footer label {
display: inline-block;
margin-right: 20px;
cursor: pointer;
}
.todo-footer label input {
.todo .todo-footer label input {
position: relative;
top: -1px;
vertical-align: middle;
margin-right: 5px;
}
.todo-footer button {
.todo .todo-footer button {
float: right;
margin-top: 5px;
}
+25 -2
View File
@@ -1,9 +1,32 @@
import React from "react";
import { Input } from 'antd';
import {nanoid} from 'nanoid';
import PropTypes from 'prop-types'
class Footer extends React.Component {
static propTypes={
addTodo:PropTypes.func.isRequired
}
static defaultProps={
addTodo:()=>{}
}
componentDidMount(){
// this.props.addTodo({id:nanoid(),name:"测试",done:false});
}
handleKeyUp=(e)=>{
const {keyCode,target} = e;
if(keyCode !== 13) return
if(target.value.trim() === ''){
alert('输入不能为空')
return
}
const todoObj={id:nanoid(),name:target.value,done:false}
this.props.addTodo(todoObj);
target.value=''
}
render(){
return (
<div>
<h1>header</h1>
<div className="todo-header">
<Input size="large" placeholder="请输入你的任务名称,按回车键确认" onKeyUp={this.handleKeyUp} />
</div>
)
}
+18 -6
View File
@@ -2,17 +2,29 @@ import React from "react";
import Footer from "./Footer/index";
import Headers from "./header/index";
import List from "./List/index";
import Item from "./Item/index";
import "./style.scss";
class App extends React.Component {
state = {todos:[
{id:'001',name:'吃饭',done:true},
{id:'002',name:'睡觉',done:true},
{id:'003',name:'打代码',done:false},
{id:'004',name:'逛街',done:false}
]}
updateTodo=()=>{
}
deleteTodo=()=>{
}
addTodo=()=>{
}
render() {
return (
<div className="todo">
<Headers></Headers>
<List>
<Item></Item>
</List>
<Footer></Footer>
<Headers addTodo={this.addTodo}></Headers>
<List todos={this.state.todos} updateTodo={this.updateTodo} deleteTodo={this.deleteTodo}></List>
<Footer todos={this.state.todos}></Footer>
</div>
);
}
+4 -4
View File
@@ -6,27 +6,27 @@
margin: 100px auto 0;
}
.todo-footer {
.todo .todo-footer {
height: 40px;
line-height: 40px;
padding-left: 6px;
margin-top: 5px;
}
.todo-footer label {
.todo .todo-footer label {
display: inline-block;
margin-right: 20px;
cursor: pointer;
}
.todo-footer label input {
.todo .todo-footer label input {
position: relative;
top: -1px;
vertical-align: middle;
margin-right: 5px;
}
.todo-footer button {
.todo .todo-footer button {
float: right;
margin-top: 5px;
}
+1 -1
View File
@@ -1 +1 @@
.todo{box-sizing:border-box;width:660px;padding:12px;border:1px solid #eee;margin:100px auto 0}.todo-footer{height:40px;line-height:40px;padding-left:6px;margin-top:5px}.todo-footer label{display:inline-block;margin-right:20px;cursor:pointer}.todo-footer label input{position:relative;top:-1px;vertical-align:middle;margin-right:5px}.todo-footer button{float:right;margin-top:5px}
.todo{box-sizing:border-box;width:660px;padding:12px;border:1px solid #eee;margin:100px auto 0}.todo .todo-footer{height:40px;line-height:40px;padding-left:6px;margin-top:5px}.todo .todo-footer label{display:inline-block;margin-right:20px;cursor:pointer}.todo .todo-footer label input{position:relative;top:-1px;vertical-align:middle;margin-right:5px}.todo .todo-footer button{float:right;margin-top:5px}
+22 -18
View File
@@ -5,26 +5,30 @@
padding: 12px;
border: 1px solid #eee;
margin: 100px auto 0;
}
.todo-footer {
height: 40px;
line-height: 40px;
padding-left: 6px;
margin-top: 5px;
label{
display: inline-block;
margin-right: 20px;
cursor: pointer;
input{
position: relative;
top: -1px;
vertical-align: middle;
margin-right: 5px;
}
.todo-header{
}
button{
float: right;
.todo-footer {
height: 40px;
line-height: 40px;
padding-left: 6px;
margin-top: 5px;
label{
display: inline-block;
margin-right: 20px;
cursor: pointer;
input{
position: relative;
top: -1px;
vertical-align: middle;
margin-right: 5px;
}
}
button{
float: right;
margin-top: 5px;
}
}
}