diff --git a/package-lock.json b/package-lock.json index b9cc42d..028955f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@hotwired/turbo": "^8.0.2", "@koa/router": "^12.0.1", "@sealcode/add-to-head": "^1.0.0", - "@sealcode/crud-ui": "^0.0.17", + "@sealcode/crud-ui": "^0.0.18", "@sealcode/file-manager": "^1.0.2", "@sealcode/jdd": "^0.8.0", "@sealcode/jdd-editor": "^0.2.0", @@ -1339,12 +1339,12 @@ } }, "node_modules/@sealcode/crud-ui": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@sealcode/crud-ui/-/crud-ui-0.0.17.tgz", - "integrity": "sha512-SEkhzB1oFIaos5d3hWGSrZk8sk2gZYeWMT2BGr34DvJh2IK5d5FUUf/QuzLJqM1JgrKSD5IWXl9R/KPMQtRt7Q==", + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@sealcode/crud-ui/-/crud-ui-0.0.18.tgz", + "integrity": "sha512-brzQxDpqMe11C+d794izJabrSqxUGv5BzMKY3wMJiuHD1K0WJD09Vkg35GWwRD7RdfXFt7uncSswqyYMBlKDAg==", "dependencies": { "@koa/router": "^13.1.0", - "@sealcode/sealgen": "^0.17.4", + "@sealcode/sealgen": "^0.18.5", "@types/koa__router": "^12.0.4", "escape-goat": "^4.0.0", "qs": "^6.13.0", @@ -1365,249 +1365,6 @@ "node": ">= 18" } }, - "node_modules/@sealcode/crud-ui/node_modules/@sealcode/sealgen": { - "version": "0.17.35", - "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.35.tgz", - "integrity": "sha512-gbh9r2KtZFMrzPuley1SSfRC4C+3gOGf7v1PewgaPFBZHsfP7D2Bsgs8Gp0kgf2eWGcBvm1RECLn82p5w67r6g==", - "dependencies": { - "@koa/router": "^12.0.1", - "@sealcode/file-manager": "^1.0.2", - "@sealcode/ts-predicates": "^0.4.3", - "chokidar": "^3.6.0", - "colord": "^2.9.3", - "deepmerge": "^4.3.1", - "esbuild": "^0.20.0", - "escape-goat": "^4.0.0", - "fonsta": "^1.1.1", - "google-fonts-helper": "^3.4.1", - "husky": "^9.1.7", - "is-what": "^4.1.16", - "js-convert-case": "^4.2.0", - "json5": "^2.2.3", - "locreq": "^3.0.0", - "md5": "^2.3.0", - "merge": "^2.1.1", - "prettier": "^2.7.1", - "prompts": "^2.4.2", - "recursive-readdir": "^2.2.3", - "tempfile": "^5.0.0", - "tempstream": "^0.4.6", - "tiny-glob": "^0.2.9", - "ws": "^8.16.0", - "yargs": "^17.6.2" - }, - "bin": { - "sealgen": "lib/cli.js" - }, - "peerDependencies": { - "koa": "^2.13.0", - "koa-responsive-image-router": "^0.2.24", - "sealious": "^0.20" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/@sealcode/sealgen/node_modules/@koa/router": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz", - "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==", - "dependencies": { - "debug": "^4.3.4", - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.3.0" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/@sealcode/ts-predicates": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz", - "integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A==" - }, - "node_modules/@sealcode/crud-ui/node_modules/@types/object-hash": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz", - "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==", - "peer": true - }, - "node_modules/@sealcode/crud-ui/node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "peer": true - }, - "node_modules/@sealcode/crud-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "peer": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/sealious": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.20.1.tgz", - "integrity": "sha512-DDzIDNYWtdSnZ5wqPdlIK/PKpkPER1lqoMgsxEPw0AjDZxYOLAl3Okil8z36T8nHsNPelmSntndgDfgads91xQ==", - "peer": true, - "dependencies": { - "@koa/router": "^12.0.1", - "@sealcode/file-manager": "^1.0.1", - "@sealcode/ts-predicates": "^0.4.3", - "@types/boom": "^7.3.0", - "@types/clone": "^0.1.30", - "@types/color": "^3.0.1", - "@types/color-hash": "^1.0.0", - "@types/escape-html": "^1.0.0", - "@types/koa": "^2.11.6", - "@types/koa-mount": "^4.0.0", - "@types/koa-qs": "^2.0.0", - "@types/koa-send": "^4.1.2", - "@types/koa-static": "^4.0.1", - "@types/mjml": "^4.0.4", - "@types/mongodb": "^3.5.20", - "@types/node": "^20.0", - "@types/nodemailer": "^6.4.0", - "@types/object-hash": "^1.3.3", - "@types/sanitize-html": "^2.11.0", - "@types/uuid": "^8.3.0", - "boom": "^7.3.0", - "chalk": "^4.1.0", - "clone": "^1.0.2", - "color": "latest", - "color-hash": "^1.0.3", - "commonmark": "^0.31.0", - "cron": "^2.1.0", - "csv-stringify": "^6.4.5", - "deepmerge": "^4.2.2", - "dot-prop": "^8.0.2", - "emittery": "0.8.1", - "escape-html": "^1.0.3", - "get-port": "^5.1.1", - "koa": "^2.13.0", - "koa-body": "^4.2.0", - "koa-mount": "^4.0.0", - "koa-qs": "^3.0.0", - "koa-send": "^5.0.1", - "koa-static": "^5.0.0", - "locreq": "^3.0.0", - "mjml": "^4.2.0", - "mongodb": "^6.5.0", - "nanoid": "^5.0.9", - "nodemailer": "^6.4.6", - "object-hash": "^2.0.3", - "pg": "^8.13.1", - "pretty-ms": "^7.0.0", - "qs": "^6.12.0", - "sanitize-html": "^1.13.0", - "typedoc": "^0.17.8", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=21.0" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/sealious/node_modules/@koa/router": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz", - "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==", - "peer": true, - "dependencies": { - "debug": "^4.3.4", - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.3.0" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@sealcode/crud-ui/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@sealcode/file-manager": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@sealcode/file-manager/-/file-manager-1.0.2.tgz", @@ -16126,12 +15883,12 @@ } }, "@sealcode/crud-ui": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@sealcode/crud-ui/-/crud-ui-0.0.17.tgz", - "integrity": "sha512-SEkhzB1oFIaos5d3hWGSrZk8sk2gZYeWMT2BGr34DvJh2IK5d5FUUf/QuzLJqM1JgrKSD5IWXl9R/KPMQtRt7Q==", + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@sealcode/crud-ui/-/crud-ui-0.0.18.tgz", + "integrity": "sha512-brzQxDpqMe11C+d794izJabrSqxUGv5BzMKY3wMJiuHD1K0WJD09Vkg35GWwRD7RdfXFt7uncSswqyYMBlKDAg==", "requires": { "@koa/router": "^13.1.0", - "@sealcode/sealgen": "^0.17.4", + "@sealcode/sealgen": "^0.18.5", "@types/koa__router": "^12.0.4", "escape-goat": "^4.0.0", "qs": "^6.13.0", @@ -16148,197 +15905,6 @@ "koa-compose": "^4.1.0", "path-to-regexp": "^6.3.0" } - }, - "@sealcode/sealgen": { - "version": "0.17.35", - "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.35.tgz", - "integrity": "sha512-gbh9r2KtZFMrzPuley1SSfRC4C+3gOGf7v1PewgaPFBZHsfP7D2Bsgs8Gp0kgf2eWGcBvm1RECLn82p5w67r6g==", - "requires": { - "@koa/router": "^12.0.1", - "@sealcode/file-manager": "^1.0.2", - "@sealcode/ts-predicates": "^0.4.3", - "chokidar": "^3.6.0", - "colord": "^2.9.3", - "deepmerge": "^4.3.1", - "esbuild": "^0.20.0", - "escape-goat": "^4.0.0", - "fonsta": "^1.1.1", - "google-fonts-helper": "^3.4.1", - "husky": "^9.1.7", - "is-what": "^4.1.16", - "js-convert-case": "^4.2.0", - "json5": "^2.2.3", - "locreq": "^3.0.0", - "md5": "^2.3.0", - "merge": "^2.1.1", - "prettier": "^2.7.1", - "prompts": "^2.4.2", - "recursive-readdir": "^2.2.3", - "tempfile": "^5.0.0", - "tempstream": "^0.4.6", - "tiny-glob": "^0.2.9", - "ws": "^8.16.0", - "yargs": "^17.6.2" - }, - "dependencies": { - "@koa/router": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz", - "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==", - "requires": { - "debug": "^4.3.4", - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.3.0" - } - } - } - }, - "@sealcode/ts-predicates": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz", - "integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A==" - }, - "@types/object-hash": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz", - "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==", - "peer": true - }, - "@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true - }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "peer": true - }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "peer": true - }, - "parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "peer": true - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==" - }, - "pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "peer": true, - "requires": { - "parse-ms": "^2.1.0" - } - }, - "sealious": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.20.1.tgz", - "integrity": "sha512-DDzIDNYWtdSnZ5wqPdlIK/PKpkPER1lqoMgsxEPw0AjDZxYOLAl3Okil8z36T8nHsNPelmSntndgDfgads91xQ==", - "peer": true, - "requires": { - "@koa/router": "^12.0.1", - "@sealcode/file-manager": "^1.0.1", - "@sealcode/ts-predicates": "^0.4.3", - "@types/boom": "^7.3.0", - "@types/clone": "^0.1.30", - "@types/color": "^3.0.1", - "@types/color-hash": "^1.0.0", - "@types/escape-html": "^1.0.0", - "@types/koa": "^2.11.6", - "@types/koa-mount": "^4.0.0", - "@types/koa-qs": "^2.0.0", - "@types/koa-send": "^4.1.2", - "@types/koa-static": "^4.0.1", - "@types/mjml": "^4.0.4", - "@types/mongodb": "^3.5.20", - "@types/node": "^20.0", - "@types/nodemailer": "^6.4.0", - "@types/object-hash": "^1.3.3", - "@types/sanitize-html": "^2.11.0", - "@types/uuid": "^8.3.0", - "boom": "^7.3.0", - "chalk": "^4.1.0", - "clone": "^1.0.2", - "color": "latest", - "color-hash": "^1.0.3", - "commonmark": "^0.31.0", - "cron": "^2.1.0", - "csv-stringify": "^6.4.5", - "deepmerge": "^4.2.2", - "dot-prop": "^8.0.2", - "emittery": "0.8.1", - "escape-html": "^1.0.3", - "get-port": "^5.1.1", - "koa": "^2.13.0", - "koa-body": "^4.2.0", - "koa-mount": "^4.0.0", - "koa-qs": "^3.0.0", - "koa-send": "^5.0.1", - "koa-static": "^5.0.0", - "locreq": "^3.0.0", - "mjml": "^4.2.0", - "mongodb": "^6.5.0", - "nanoid": "^5.0.9", - "nodemailer": "^6.4.6", - "object-hash": "^2.0.3", - "pg": "^8.13.1", - "pretty-ms": "^7.0.0", - "qs": "^6.12.0", - "sanitize-html": "^1.13.0", - "typedoc": "^0.17.8", - "uuid": "^8.3.2" - }, - "dependencies": { - "@koa/router": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz", - "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==", - "peer": true, - "requires": { - "debug": "^4.3.4", - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.3.0" - } - } - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true } } }, diff --git a/package.json b/package.json index 3a093e7..732eda8 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@hotwired/turbo": "^8.0.2", "@koa/router": "^12.0.1", "@sealcode/add-to-head": "^1.0.0", - "@sealcode/crud-ui": "^0.0.17", + "@sealcode/crud-ui": "^0.0.18", "@sealcode/file-manager": "^1.0.2", "@sealcode/jdd": "^0.8.0", "@sealcode/jdd-editor": "^0.2.0", diff --git a/src/back/routes/dev/simple-crud-test/index.page.ts b/src/back/routes/dev/simple-crud-test/index.page.ts new file mode 100644 index 0000000..1ef2e59 --- /dev/null +++ b/src/back/routes/dev/simple-crud-test/index.page.ts @@ -0,0 +1,66 @@ +import { CRUD } from "@sealcode/crud-ui"; +import type { CollectionItem } from "sealious"; +import type { ListFilterRender } from "@sealcode/sealgen"; +import { Controls, DefaultListFilters, Fields } from "@sealcode/sealgen"; +import { NavbarLinks } from "src/back/collections/collections.js"; +import html from "src/back/html.js"; + +export const actionName = "NavbarLinksCRUD"; + +const edit_fields = { + label: new Fields.CollectionField( + NavbarLinks.fields.label.required, + NavbarLinks.fields.label + ), + href: new Fields.CollectionField( + NavbarLinks.fields.href.required, + NavbarLinks.fields.href + ), +}; + +const edit_controls = [ + new Controls.SimpleInput(edit_fields.label, { label: "label" }), + new Controls.SimpleInput(edit_fields.href, { label: "href" }), +]; + +// eslint-disable-next-line @typescript-eslint/consistent-type-assertions +const fields_for_display = [ + { field: "label", label: "label" }, + { field: "href", label: "href" }, +] as { + field: keyof (typeof NavbarLinks)["fields"]; + label: string; + format?: ( + value: unknown, + item: CollectionItem + ) => string | Promise; +}[]; + +// eslint-disable-next-line @typescript-eslint/consistent-type-assertions +const fields_for_filters = [ + { field: "label", ...DefaultListFilters["text"] }, + { field: "href", ...DefaultListFilters["text"] }, +] as { + field: keyof (typeof NavbarLinks)["fields"]; + render?: ListFilterRender; + prepareValue?: (filter_value: unknown) => unknown; // set this function to change what filter value is passed to Sealious +}[]; + +export default new CRUD({ + collection: NavbarLinks, + nice_collection_name: "NavbarLinks", + fields_for_display, + fields_for_filters, + html, + list_title: "NavbarLinks list", + edit_title: "Edit", + edit_button_text: "Edit", + delete_button_text: "Delete", + back_to_list_button_text: "← Back to NavbarLinks list", + edit_fields, + edit_controls, + form_value_to_sealious_value: {}, + sealious_value_to_form_value: {}, + post_edit: async () => {}, + post_create: async () => {}, +}); diff --git a/tests/__screenshots/simple-crud.test.ts/test-1.png b/tests/__screenshots/simple-crud.test.ts/test-1.png new file mode 100644 index 0000000..7989b23 Binary files /dev/null and b/tests/__screenshots/simple-crud.test.ts/test-1.png differ diff --git a/tests/__screenshots/simple-crud.test.ts/test-2.png b/tests/__screenshots/simple-crud.test.ts/test-2.png new file mode 100644 index 0000000..96a4823 Binary files /dev/null and b/tests/__screenshots/simple-crud.test.ts/test-2.png differ diff --git a/tests/__screenshots/simple-crud.test.ts/test-3.png b/tests/__screenshots/simple-crud.test.ts/test-3.png new file mode 100644 index 0000000..f4a6174 Binary files /dev/null and b/tests/__screenshots/simple-crud.test.ts/test-3.png differ diff --git a/tests/simple-crud.test.ts b/tests/simple-crud.test.ts new file mode 100644 index 0000000..ba1fda2 --- /dev/null +++ b/tests/simple-crud.test.ts @@ -0,0 +1,15 @@ +import { test, expect } from "./backend-fixture"; + +test("test", async ({ page, backendUrl }) => { + await page.goto(`${backendUrl}/dev/simple-crud-test/`); + await expect(page).toHaveScreenshot(); + await page.getByRole("link", { name: "Create" }).click(); + await expect(page).toHaveScreenshot(); + await page.getByRole("textbox", { name: "label" }).click(); + await page.getByRole("textbox", { name: "label" }).fill("navbar from simple crud"); + await page.getByRole("textbox", { name: "label" }).press("Tab"); + await page.getByRole("textbox", { name: "href" }).fill("/"); + await page.getByRole("button", { name: "Wyślij" }).click(); + await page.getByRole("link", { name: "navbar from simple crud" }).click(); + await expect(page).toHaveScreenshot(); +});