From a27008a2958d5da2ba3640f9c3ae3d77ebb8b79f Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Sun, 17 Sep 2023 21:38:02 +0200 Subject: [PATCH] fix(core): update --- package.json | 6 +- pnpm-lock.yaml | 118 +++++++++++------------ ts_web/00_commitinfo_data.ts | 2 +- ts_web/elements/dees-dataview-codebox.ts | 47 ++++++++- ts_web/elements/dees-table.ts | 46 ++++++--- 5 files changed, 140 insertions(+), 79 deletions(-) diff --git a/package.json b/package.json index 32c57c1..7de32f9 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "author": "Lossless GmbH", "license": "MIT", "dependencies": { - "@design.estate/dees-domtools": "^2.0.40", - "@design.estate/dees-element": "^2.0.27", + "@design.estate/dees-domtools": "^2.0.41", + "@design.estate/dees-element": "^2.0.29", "@design.estate/dees-wcctools": "^1.0.78", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-brands-svg-icons": "^6.4.2", @@ -35,7 +35,7 @@ "@gitzone/tswatch": "^2.0.7", "@push.rocks/projectinfo": "^5.0.2", "@push.rocks/tapbundle": "^5.0.15", - "@types/node": "^20.6.0" + "@types/node": "^20.6.2" }, "files": [ "ts/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4aac33a..5380bed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,14 +6,14 @@ settings: dependencies: '@design.estate/dees-domtools': - specifier: ^2.0.40 - version: 2.0.40 + specifier: ^2.0.41 + version: 2.0.41 '@design.estate/dees-element': - specifier: ^2.0.27 - version: 2.0.27 + specifier: ^2.0.29 + version: 2.0.29 '@design.estate/dees-wcctools': specifier: ^1.0.78 - version: 1.0.78(@types/node@20.6.0) + version: 1.0.78(@types/node@20.6.2) '@fortawesome/fontawesome-svg-core': specifier: ^6.4.2 version: 6.4.2 @@ -51,19 +51,19 @@ devDependencies: version: 2.0.8 '@gitzone/tstest': specifier: ^1.0.77 - version: 1.0.77(@types/node@20.6.0)(sinon@15.2.0) + version: 1.0.77(@types/node@20.6.2)(sinon@16.0.0) '@gitzone/tswatch': specifier: ^2.0.7 - version: 2.0.7(@types/node@20.6.0) + version: 2.0.7(@types/node@20.6.2) '@push.rocks/projectinfo': specifier: ^5.0.2 version: 5.0.2 '@push.rocks/tapbundle': specifier: ^5.0.15 - version: 5.0.15(sinon@15.2.0) + version: 5.0.15(sinon@16.0.0) '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.2 + version: 20.6.2 packages: @@ -212,8 +212,8 @@ packages: broadcast-channel: 3.7.0 dev: false - /@design.estate/dees-domtools@2.0.40: - resolution: {integrity: sha512-ErF7frRFABBiw6b8cobdWGwRPmfRFGJ7JjJphmpdRIVLm/BMhw6PMK+AXmdA+gsRLa0O4S8WilO80Wm4pdTZ6Q==} + /@design.estate/dees-domtools@2.0.41: + resolution: {integrity: sha512-4vDLWiEJLqSYBrZ0q2mmXiWvsK9EjYgvMioep8Qvzf1mhi+AdGXawa8QMcafHrEKO2r135Pl+8l5VCX35cuPxQ==} dependencies: '@api.global/typedrequest': 3.0.1 '@design.estate/dees-comms': 1.0.24 @@ -232,21 +232,21 @@ packages: sweet-scroll: 4.0.0 dev: false - /@design.estate/dees-element@2.0.27: - resolution: {integrity: sha512-0x2UutRHX0Go/7meuZNiRGO533ur7ZYV8d2/YQky1pXjv6LaFU6QQj2oYxSeNQ4cs8u3spLn25vBUg+/ErVVuw==} + /@design.estate/dees-element@2.0.29: + resolution: {integrity: sha512-aFVxWHfhyf+PqvD8tm90W86P1GKmwL0zUXTKi/G63gs/hCr5KOHlpQTkzbf66x3lVuWLX/TgvcvIYz/eQb0lmA==} dependencies: - '@design.estate/dees-domtools': 2.0.40 + '@design.estate/dees-domtools': 2.0.41 '@push.rocks/isounique': 1.0.5 '@push.rocks/smartrx': 3.0.6 lit: 2.8.0 dev: false - /@design.estate/dees-wcctools@1.0.78(@types/node@20.6.0): + /@design.estate/dees-wcctools@1.0.78(@types/node@20.6.2): resolution: {integrity: sha512-7CgbDq+J1Wt2EW1EsDOApskq60jBZ9EOCNOEc0n3otxVOtUvutg6YBjY8fg7l/OJMxJfeJdEkNDlkTYePMIeXQ==} dependencies: - '@design.estate/dees-domtools': 2.0.40 - '@design.estate/dees-element': 2.0.27 - '@gitzone/tsrun': 1.2.44(@types/node@20.6.0) + '@design.estate/dees-domtools': 2.0.41 + '@design.estate/dees-element': 2.0.29 + '@gitzone/tsrun': 1.2.44(@types/node@20.6.2) '@push.rocks/smartdelay': 3.0.5 lit: 2.8.0 transitivePeerDependencies: @@ -525,26 +525,26 @@ packages: - supports-color dev: true - /@gitzone/tsrun@1.2.44(@types/node@20.6.0): + /@gitzone/tsrun@1.2.44(@types/node@20.6.2): resolution: {integrity: sha512-7AfL9u+TmD7gLiRaTCimhWm5rq9GGBQnOF4q1FnFh2CAb1FbK5fzUVbj6wo3zGS2H+MSm6dqFA6mvdBI1ox0mQ==} hasBin: true dependencies: '@push.rocks/smartfile': 10.0.28 '@push.rocks/smartshell': 3.0.3 - ts-node: 10.9.1(@types/node@20.6.0)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@20.6.2)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' - /@gitzone/tstest@1.0.77(@types/node@20.6.0)(sinon@15.2.0): + /@gitzone/tstest@1.0.77(@types/node@20.6.2)(sinon@16.0.0): resolution: {integrity: sha512-YzBXnNqkYOiFf8xAA+m8owblrmAut8ukINghYy4DXoUR+5g1IKrpTjK4A8HzIsvVsQRyHPsQ2YFtsk+utqdivQ==} hasBin: true dependencies: '@apiglobal/typedserver': 2.0.65 '@gitzone/tsbundle': 2.0.8 - '@gitzone/tsrun': 1.2.44(@types/node@20.6.0) + '@gitzone/tsrun': 1.2.44(@types/node@20.6.2) '@push.rocks/consolecolor': 2.0.1 '@push.rocks/smartbrowser': 2.0.5 '@push.rocks/smartdelay': 3.0.5 @@ -552,7 +552,7 @@ packages: '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartshell': 3.0.3 - '@push.rocks/tapbundle': 5.0.15(sinon@15.2.0) + '@push.rocks/tapbundle': 5.0.15(sinon@16.0.0) figures: 5.0.0 transitivePeerDependencies: - '@swc/core' @@ -565,13 +565,13 @@ packages: - utf-8-validate dev: true - /@gitzone/tswatch@2.0.7(@types/node@20.6.0): + /@gitzone/tswatch@2.0.7(@types/node@20.6.2): resolution: {integrity: sha512-rKvyYXsILinp/3OzGkM4KLDPJhleSlF+KFzl90vHh1DuLzJCELWxgl/BSqrBe/UUd5Qyakyf8ZCojUSYUqU5tw==} hasBin: true dependencies: '@apiglobal/typedserver': 2.0.65 '@gitzone/tsbundle': 2.0.8 - '@gitzone/tsrun': 1.2.44(@types/node@20.6.0) + '@gitzone/tsrun': 1.2.44(@types/node@20.6.2) '@pushrocks/early': 4.0.3 '@pushrocks/lik': 6.0.2 '@pushrocks/smartchok': 1.0.23 @@ -708,7 +708,7 @@ packages: lit-html: 1.4.1 dev: true - /@open-wc/testing@2.5.33(sinon@15.2.0): + /@open-wc/testing@2.5.33(sinon@16.0.0): resolution: {integrity: sha512-+EJNs0i+VV4nE+BrG70l2DNGXOZTSrluruaaU06HUSk57ZlKa+kIxWmkLxCOLlbgnQgrPrQWxbs3lgB1tIx/YA==} dependencies: '@open-wc/chai-dom-equals': 0.12.36 @@ -722,7 +722,7 @@ packages: chai-a11y-axe: 1.5.0 chai-dom: 1.11.0(chai@4.3.7)(mocha@6.2.3) mocha: 6.2.3 - sinon-chai: 3.7.0(chai@4.3.7)(sinon@15.2.0) + sinon-chai: 3.7.0(chai@4.3.7)(sinon@16.0.0) transitivePeerDependencies: - bufferutil - sinon @@ -963,10 +963,10 @@ packages: /@push.rocks/smarturl@3.0.7: resolution: {integrity: sha512-nx4EWjQD9JeO7QVbOsxd1PFeDQYoSQOOOYCZ+r7QWXHLJG52iYzgvJDCQyX6p705HDkYMJWozW2ZzhR22qLKbw==} - /@push.rocks/tapbundle@5.0.15(sinon@15.2.0): + /@push.rocks/tapbundle@5.0.15(sinon@16.0.0): resolution: {integrity: sha512-vVTVmQCovYq9xhif96z7wN8pFiB3UB9MZSkqMDgfNTWhlU19ZZR1azCZn+zXsYxgJmD8wKNYhvZYgdRz73KbBg==} dependencies: - '@open-wc/testing': 2.5.33(sinon@15.2.0) + '@open-wc/testing': 2.5.33(sinon@16.0.0) '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.5 '@push.rocks/smartexpect': 1.0.21 @@ -1702,7 +1702,7 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/babel__code-frame@7.0.3: @@ -1713,7 +1713,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/buffer-json@2.0.1: @@ -1739,14 +1739,14 @@ packages: /@types/clean-css@4.2.6: resolution: {integrity: sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 source-map: 0.6.1 dev: true /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 '@types/qs': 6.9.7 dev: true @@ -1759,7 +1759,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/content-disposition@0.5.5: @@ -1780,13 +1780,13 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/debounce@1.2.1: @@ -1800,7 +1800,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -1818,25 +1818,25 @@ packages: /@types/finalhandler@1.2.0: resolution: {integrity: sha512-NgEZKOhxUSXkwNnWNaMXZaopQ5aFGPAYiEpEWIkQ6Dzc4iS0M1oQsvWne2t+ex9QZUAdTz/ZT4tOXJhWtP6mCw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/from2@2.3.2: resolution: {integrity: sha512-s1pdctxW2+CA4FOxxTBRxC3RKQL9Br1a2s2LngP4jh1BI84JBL3mDXj87EwcckN9z/IXp8o3ySmvZveGEAAwqw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.6.0 + '@types/node': 20.6.2 /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.6.0 + '@types/node': 20.6.2 /@types/html-minifier@4.0.2: resolution: {integrity: sha512-4IkmkXJP/25R2fZsCHDX2abztXuQRzUAZq39PfCMz2loLFj8vS9y7aF6vDl58koXSTpsF+eL4Lc5Y4Aww/GCTQ==} @@ -1884,7 +1884,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} @@ -1906,7 +1906,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/mime-types@2.1.1: @@ -1930,8 +1930,8 @@ packages: resolution: {integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==} dev: true - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + /@types/node@20.6.2: + resolution: {integrity: sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==} /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -1960,7 +1960,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/serve-static@1.15.2: @@ -1968,7 +1968,7 @@ packages: dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/shortid@0.0.29: @@ -1998,7 +1998,7 @@ packages: /@types/through2@2.0.38: resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} @@ -2023,14 +2023,14 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.2 dev: true optional: true @@ -3006,7 +3006,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 20.6.0 + '@types/node': 20.6.2 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -3026,7 +3026,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 20.6.0 + '@types/node': 20.6.2 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -5324,18 +5324,18 @@ packages: dev: false optional: true - /sinon-chai@3.7.0(chai@4.3.7)(sinon@15.2.0): + /sinon-chai@3.7.0(chai@4.3.7)(sinon@16.0.0): resolution: {integrity: sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==} peerDependencies: chai: ^4.0.0 sinon: '>=4.0.0' dependencies: chai: 4.3.7 - sinon: 15.2.0 + sinon: 16.0.0 dev: true - /sinon@15.2.0: - resolution: {integrity: sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==} + /sinon@16.0.0: + resolution: {integrity: sha512-B8AaZZm9CT5pqe4l4uWJztfD/mOTa7dL8Qo0W4+s+t74xECOgSZDDQCBjNgIK3+n4kyxQrSTv2V5ul8K25qkiQ==} dependencies: '@sinonjs/commons': 3.0.0 '@sinonjs/fake-timers': 10.3.0 @@ -5679,7 +5679,7 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - /ts-node@10.9.1(@types/node@20.6.0)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@20.6.2)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -5698,7 +5698,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.6.0 + '@types/node': 20.6.2 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 33fe16b..543feda 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@design.estate/dees-catalog', - version: '1.0.208', + version: '1.0.209', description: 'website for lossless.com' } diff --git a/ts_web/elements/dees-dataview-codebox.ts b/ts_web/elements/dees-dataview-codebox.ts index f4fb02b..fb62b5d 100644 --- a/ts_web/elements/dees-dataview-codebox.ts +++ b/ts_web/elements/dees-dataview-codebox.ts @@ -67,6 +67,42 @@ export class DeesDataviewCodebox extends DeesElement { line-height: 24px; } + .appbar .macControls { + position: absolute; + top: 6px; + left: 20px; + width: 200px; + display: grid; + grid-template-columns: 24px 24px 24px; + } + + .appbar .macControls div { + width: 12px; + height: 12px; + display: inline-block; + border-radius: 50%; + margin: 0px; + padding: 0px; + cursor: pointer; + background: #222222; + } + + .appbar .macControls div.close { + background: #FF5F57; + } + + .appbar .macControls div.toDock { + background: #FFBD2E; + } + + .appbar .macControls div.minMax { + background: #27C93F; + } + + .appbar .macControls div:hover { + background: #333333; + } + .appbar .fileName { text-align: center; } @@ -76,13 +112,15 @@ export class DeesDataviewCodebox extends DeesElement { background: #161616; border-top: 1px solid #222222; font-size: 12px; - color: #CCC; + color: #888; font-family: 'Hubot Sans', 'monospace'; line-height: 24px; + text-align: right; + padding-right: 100px; } .languageLabel { - color: #fff; + color: #ccc; font-size: 12px; line-height: 24px; z-index: 10; @@ -158,6 +196,11 @@ export class DeesDataviewCodebox extends DeesElement {
+
+
+
+
+
index.ts
diff --git a/ts_web/elements/dees-table.ts b/ts_web/elements/dees-table.ts index 913c705..7064af2 100644 --- a/ts_web/elements/dees-table.ts +++ b/ts_web/elements/dees-table.ts @@ -99,6 +99,11 @@ export class DeesTable extends DeesElement { }) public displayFunction: TDisplayFunction = (itemArg: T) => itemArg as any; + @property({ + attribute: false, + }) + public reverseDisplayFunction: (itemArg: any) => T = (itemArg: any) => itemArg as T; + @property({ type: Object, }) @@ -112,6 +117,8 @@ export class DeesTable extends DeesElement { public files: File[] = []; public fileWeakMap = new WeakMap(); + public itemChangeSubject = new domtools.plugins.smartrx.rxjs.Subject(); + constructor() { super(); } @@ -259,7 +266,7 @@ export class DeesTable extends DeesElement { font-family: inherit; font-size: inherit; font-weight: inherit; - padding: 0px 6px + padding: 0px 6px; } .action { @@ -535,35 +542,34 @@ export class DeesTable extends DeesElement { // Get the table element const table = this.shadowRoot.querySelector('table'); if (!table) return; - + // Create a colgroup if it doesn't exist let colgroup = table.querySelector('colgroup'); if (!colgroup) { colgroup = document.createElement('colgroup'); table.insertBefore(colgroup, table.firstChild); } - + // Get the first row's cells to measure the widths const cells = table.rows[0].cells; - + for (let i = 0; i < cells.length; i++) { const cell = cells[i]; - + // Get computed width const width = window.getComputedStyle(cell).width; - + // Check if there's already a for this cell let col = colgroup.children[i] as HTMLElement; if (!col) { col = document.createElement('col'); colgroup.appendChild(col); } - + // Set the width col.style.width = width; } } - getActionsForType(typeArg: ITableAction['type'][0]) { const actions: ITableAction[] = []; @@ -574,22 +580,34 @@ export class DeesTable extends DeesElement { return actions; } - handleCellEditing(event: Event, item: T, key: string) { + handleCellEditing(event: Event, itemArg: T, key: string) { const target = event.target as HTMLElement; - + const transformedItem = this.displayFunction(itemArg); + const initialValue = (transformedItem[key] as unknown as string) || ''; // Create an input element const input = document.createElement('input'); input.type = 'text'; - input.value = (item[key] as unknown as string) || ''; + input.value = initialValue; + + const blurInput = (blurArg = true, saveArg = false) => { + if (blurArg) { + input.blur(); + } + if (saveArg) { + itemArg[key] = input.value as any; // Convert string to T (you might need better type casting depending on your data structure) + target.innerHTML = input.value; // Update the cell's display + } else { + target.innerHTML = initialValue; + } + }; // When the input loses focus or the Enter key is pressed, update the data input.addEventListener('blur', () => { - item[key] = input.value as any; // Convert string to T (you might need better type casting depending on your data structure) - target.innerHTML = input.value; // Update the cell's display + blurInput(false, false); }); input.addEventListener('keydown', (e: KeyboardEvent) => { if (e.key === 'Enter') { - input.blur(); // This will trigger the blur event handler above + blurInput(true, true); // This will trigger the blur event handler above } });