From fc5f3a957678671d294f57af4f193f8388570739 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Mon, 4 Sep 2023 19:28:50 +0200 Subject: [PATCH] fix(core): update --- package.json | 8 +- pnpm-lock.yaml | 188 ++++++++------ ts_web/00_commitinfo_data.ts | 2 +- ts_web/elements/dees-contextmenu.ts | 9 + ts_web/elements/dees-icon.ts | 2 + ts_web/elements/dees-mobilenavigation.ts | 22 +- ts_web/elements/dees-table.ts | 316 +++++++++++++++++++---- ts_web/elements/dees-windowlayer.ts | 18 +- 8 files changed, 408 insertions(+), 157 deletions(-) diff --git a/package.json b/package.json index c46d53b..08792e1 100644 --- a/package.json +++ b/package.json @@ -15,15 +15,15 @@ "author": "Lossless GmbH", "license": "MIT", "dependencies": { - "@design.estate/dees-domtools": "^2.0.38", - "@design.estate/dees-element": "^2.0.25", + "@design.estate/dees-domtools": "^2.0.39", + "@design.estate/dees-element": "^2.0.27", "@design.estate/dees-wcctools": "^1.0.78", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-brands-svg-icons": "^6.4.2", "@fortawesome/free-regular-svg-icons": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@push.rocks/smartpromise": "^4.0.3", - "@push.rocks/smartstring": "^4.0.8", + "@push.rocks/smartstring": "^4.0.9", "@tsclass/tsclass": "^4.0.42", "highlight.js": "11.8.0", "pdfjs-dist": "^2.16.105" @@ -35,7 +35,7 @@ "@gitzone/tswatch": "^2.0.7", "@push.rocks/projectinfo": "^5.0.2", "@push.rocks/tapbundle": "^5.0.15", - "@types/node": "^20.5.1" + "@types/node": "^20.5.9" }, "files": [ "ts/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2aafa6..f96a269 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,14 +6,14 @@ settings: dependencies: '@design.estate/dees-domtools': - specifier: ^2.0.38 - version: 2.0.38 + specifier: ^2.0.39 + version: 2.0.39 '@design.estate/dees-element': - specifier: ^2.0.25 - version: 2.0.25 + specifier: ^2.0.27 + version: 2.0.27 '@design.estate/dees-wcctools': specifier: ^1.0.78 - version: 1.0.78(@types/node@20.5.1) + version: 1.0.78(@types/node@20.5.9) '@fortawesome/fontawesome-svg-core': specifier: ^6.4.2 version: 6.4.2 @@ -30,8 +30,8 @@ dependencies: specifier: ^4.0.3 version: 4.0.3 '@push.rocks/smartstring': - specifier: ^4.0.8 - version: 4.0.8 + specifier: ^4.0.9 + version: 4.0.9 '@tsclass/tsclass': specifier: ^4.0.42 version: 4.0.42 @@ -51,10 +51,10 @@ devDependencies: version: 2.0.8 '@gitzone/tstest': specifier: ^1.0.77 - version: 1.0.77(@types/node@20.5.1)(sinon@15.2.0) + version: 1.0.77(@types/node@20.5.9)(sinon@15.2.0) '@gitzone/tswatch': specifier: ^2.0.7 - version: 2.0.7(@types/node@20.5.1) + version: 2.0.7(@types/node@20.5.9) '@push.rocks/projectinfo': specifier: ^5.0.2 version: 5.0.2 @@ -62,8 +62,8 @@ devDependencies: specifier: ^5.0.15 version: 5.0.15(sinon@15.2.0) '@types/node': - specifier: ^20.5.1 - version: 20.5.1 + specifier: ^20.5.9 + version: 20.5.9 packages: @@ -77,6 +77,21 @@ packages: transitivePeerDependencies: - supports-color + /@api.global/typedrequest-interfaces@3.0.1: + resolution: {integrity: sha512-eR2Cr01BYRwIq/X2ajOenWhm8l+/YE4A5kK/9V6I8ZnhtEBMFHG6YjF6Fg8npLJWbvhZXhOms+axZ6JKI71o8g==} + dev: false + + /@api.global/typedrequest@3.0.1: + resolution: {integrity: sha512-ed7wIqK7ErjHsiy+5UMB6lhtRzwfnaurNu/pbjQz67Pugk5DLUuuw36YyIlDhRepoPS4L2EY6zL+wsCciTCcoQ==} + dependencies: + '@api.global/typedrequest-interfaces': 3.0.1 + '@push.rocks/isounique': 1.0.5 + '@push.rocks/lik': 6.0.5 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/webrequest': 3.0.33 + dev: false + /@apiglobal/typedrequest-interfaces@1.0.20: resolution: {integrity: sha512-ybsDtavYbzGJYSLodSbkxDvSLYtfMzBTuNZDJpiANt1rZA2MO/GCq8zk5MVLlrUUQIr/7oxPGWqxi1QDwR+RHQ==} @@ -170,8 +185,8 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/runtime@7.22.10: - resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -183,20 +198,29 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@design.estate/dees-domtools@2.0.38: - resolution: {integrity: sha512-QfShAH1HW1y7u2cfMbKfTCVMwJEtGZmdKaxp92wvKal+cfcSVRvVIVO1J0bdfqIG8tmV8D3cR2ghKkUFaFsJmg==} + /@design.estate/dees-comms@1.0.24: + resolution: {integrity: sha512-IQrTzQrga8gY17fblRdUmxvWJ64f+xpI9ebj1zYAIsypWYlCS7krREUwH/8iow5fze2FJ1t+gUdMCV1CGqdklg==} + dependencies: + '@api.global/typedrequest': 3.0.1 + '@api.global/typedrequest-interfaces': 3.0.1 + '@push.rocks/smartdelay': 3.0.5 + broadcast-channel: 3.7.0 + dev: false + + /@design.estate/dees-domtools@2.0.39: + resolution: {integrity: sha512-ue4C+SuPpmopF38dMYX7tSLtqxMjEampkSHfpRM2s/+p+yrt+EkVRpsBSk3zfM+8VBqo4Q9PXv1ZjOl2V3L53A==} dependencies: '@apiglobal/typedrequest': 2.0.12 - '@designestate/dees-comms': 1.0.22 + '@design.estate/dees-comms': 1.0.24 '@push.rocks/lik': 6.0.5 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartjson': 5.0.8 + '@push.rocks/smartjson': 5.0.10 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrouter': 1.0.16 '@push.rocks/smartrx': 3.0.6 '@push.rocks/smartstate': 2.0.8 '@push.rocks/smarturl': 3.0.7 - '@push.rocks/webrequest': 3.0.32 + '@push.rocks/webrequest': 3.0.33 '@push.rocks/websetup': 3.0.19 '@push.rocks/webstore': 2.0.9 lit: 2.8.0 @@ -207,10 +231,10 @@ packages: - utf-8-validate dev: false - /@design.estate/dees-element@2.0.25: - resolution: {integrity: sha512-v2IMizlX5/TLEeUOsmlOO3GZlT4GRDY3T7N5CDJe1PCdE0jTDj9KvTWr3rawzzCyxr9DY+UZI4Rwi1IKIjJw8A==} + /@design.estate/dees-element@2.0.27: + resolution: {integrity: sha512-0x2UutRHX0Go/7meuZNiRGO533ur7ZYV8d2/YQky1pXjv6LaFU6QQj2oYxSeNQ4cs8u3spLn25vBUg+/ErVVuw==} dependencies: - '@design.estate/dees-domtools': 2.0.38 + '@design.estate/dees-domtools': 2.0.39 '@push.rocks/isounique': 1.0.5 '@push.rocks/smartrx': 3.0.6 lit: 2.8.0 @@ -220,12 +244,12 @@ packages: - utf-8-validate dev: false - /@design.estate/dees-wcctools@1.0.78(@types/node@20.5.1): + /@design.estate/dees-wcctools@1.0.78(@types/node@20.5.9): resolution: {integrity: sha512-7CgbDq+J1Wt2EW1EsDOApskq60jBZ9EOCNOEc0n3otxVOtUvutg6YBjY8fg7l/OJMxJfeJdEkNDlkTYePMIeXQ==} dependencies: - '@design.estate/dees-domtools': 2.0.38 - '@design.estate/dees-element': 2.0.25 - '@gitzone/tsrun': 1.2.44(@types/node@20.5.1) + '@design.estate/dees-domtools': 2.0.39 + '@design.estate/dees-element': 2.0.27 + '@gitzone/tsrun': 1.2.44(@types/node@20.5.9) '@push.rocks/smartdelay': 3.0.5 lit: 2.8.0 transitivePeerDependencies: @@ -237,15 +261,6 @@ packages: - utf-8-validate dev: false - /@designestate/dees-comms@1.0.22: - resolution: {integrity: sha512-zZ2AwCy49sj1fNyeSMtAxcN4qAGiP5+OjJCtY88YjrNbvD83v4GZpjci0nFUPuvOkCoeo18Uw8xgZSDy8lc59Q==} - dependencies: - '@apiglobal/typedrequest': 2.0.12 - '@apiglobal/typedrequest-interfaces': 1.0.20 - '@pushrocks/smartdelay': 2.0.13 - broadcast-channel: 3.7.0 - dev: false - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -516,26 +531,26 @@ packages: - supports-color dev: true - /@gitzone/tsrun@1.2.44(@types/node@20.5.1): + /@gitzone/tsrun@1.2.44(@types/node@20.5.9): 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.5.1)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@20.5.9)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' - /@gitzone/tstest@1.0.77(@types/node@20.5.1)(sinon@15.2.0): + /@gitzone/tstest@1.0.77(@types/node@20.5.9)(sinon@15.2.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.5.1) + '@gitzone/tsrun': 1.2.44(@types/node@20.5.9) '@push.rocks/consolecolor': 2.0.1 '@push.rocks/smartbrowser': 2.0.5 '@push.rocks/smartdelay': 3.0.5 @@ -556,13 +571,13 @@ packages: - utf-8-validate dev: true - /@gitzone/tswatch@2.0.7(@types/node@20.5.1): + /@gitzone/tswatch@2.0.7(@types/node@20.5.9): 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.5.1) + '@gitzone/tsrun': 1.2.44(@types/node@20.5.9) '@pushrocks/early': 4.0.3 '@pushrocks/lik': 6.0.2 '@pushrocks/smartchok': 1.0.23 @@ -741,7 +756,7 @@ packages: '@push.rocks/smartfile': 10.0.28 '@push.rocks/smartpath': 5.0.11 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartstring': 4.0.8 + '@push.rocks/smartstring': 4.0.9 dev: true /@push.rocks/smartbrowser@2.0.5: @@ -807,10 +822,20 @@ packages: '@types/through2': 2.0.38 through2: 4.0.2 + /@push.rocks/smartjson@5.0.10: + resolution: {integrity: sha512-yuntSMGZ+XNHMrbS9RxotaD+eOgoNTcuDoWsttis+N3Mkc9DIam0pt/ER4NU8TgfMmhT/hKwQH+3DJceDzntoA==} + dependencies: + '@push.rocks/smartstring': 4.0.9 + '@types/buffer-json': 2.0.1 + buffer-json: 2.0.0 + fast-json-stable-stringify: 2.1.0 + lodash.clonedeep: 4.5.0 + dev: false + /@push.rocks/smartjson@5.0.8: resolution: {integrity: sha512-oVjSX/GEqDivCS76VthWhlujtYDFwpk+5LxuHkJc+6qrpPe7juT4J8ml/PS6xWAB1uLbPviFsKa08iZs5uOQDQ==} dependencies: - '@push.rocks/smartstring': 4.0.8 + '@push.rocks/smartstring': 4.0.9 '@types/buffer-json': 2.0.1 buffer-json: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -881,7 +906,7 @@ packages: dependencies: '@push.rocks/isohash': 2.0.1 '@push.rocks/lik': 6.0.5 - '@push.rocks/smartjson': 5.0.8 + '@push.rocks/smartjson': 5.0.10 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.6 dev: false @@ -896,8 +921,8 @@ packages: from2: 2.3.0 through2: 4.0.2 - /@push.rocks/smartstring@4.0.8: - resolution: {integrity: sha512-MKOBln6/VuhJVD32pVLOhe8ucXhjrofzbsLXBmI01wZMhWxv02tFaKk2RqfMmkV15g31XuB4KWu05q4qpZz4uQ==} + /@push.rocks/smartstring@4.0.9: + resolution: {integrity: sha512-VB0jzKmI4ZpdzEZe79M8rKVjAReNWGMG6ktzS0R5FeH96SSk3jvfOezgz/RJ7JbRN3UcyR0Ra/mXlpyeqJUHvw==} dependencies: '@push.rocks/isounique': 1.0.5 '@push.rocks/smartenv': 5.0.5 @@ -940,19 +965,14 @@ packages: - utf-8-validate dev: true - /@push.rocks/webrequest@3.0.32: - resolution: {integrity: sha512-9DSzN0rKpu0M9jt+MoWuvba5NrlPngYC7FMcmb2bVCR9HFlQvKJMMxytCDUOrZP38OdnIfWsJmVaxUcnjTKEzA==} + /@push.rocks/webrequest@3.0.33: + resolution: {integrity: sha512-wO2ibVdTMIE4hwsK9pZSNMl1OcFNbn0/ZUjZS18wzHKR4WMMaVUPmI4eHUzc7fWR6PWvkseNGn3JFxA9YK4p1Q==} dependencies: - '@apiglobal/typedserver': 2.0.65 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.5 - '@push.rocks/smartjson': 5.0.8 + '@push.rocks/smartjson': 5.0.10 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/webstore': 2.0.9 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate dev: false /@push.rocks/websetup@3.0.19: @@ -969,7 +989,7 @@ packages: '@apiglobal/typedrequest-interfaces': 2.0.1 '@push.rocks/lik': 6.0.5 '@push.rocks/smartenv': 5.0.5 - '@push.rocks/smartjson': 5.0.8 + '@push.rocks/smartjson': 5.0.10 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.6 fake-indexeddb: 4.0.2 @@ -1633,7 +1653,7 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 dev: true /@types/babel__code-frame@7.0.3: @@ -1644,7 +1664,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/buffer-json@2.0.1: resolution: {integrity: sha512-y2q2QGDqpS8NBtgKg8si+vKfanyd8smKzTglDCm7dXrco1VclSR8G1/uezK+sWbEUxsVPTomv5RxsTl3JAzxLA==} @@ -1668,14 +1688,14 @@ packages: /@types/clean-css@4.2.6: resolution: {integrity: sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 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.5.1 + '@types/node': 20.5.9 '@types/qs': 6.9.7 dev: true @@ -1687,7 +1707,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} @@ -1706,13 +1726,13 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 20.5.1 + '@types/node': 20.5.9 dev: true /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/debounce@1.2.1: resolution: {integrity: sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA==} @@ -1725,7 +1745,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -1741,24 +1761,24 @@ packages: /@types/finalhandler@1.2.0: resolution: {integrity: sha512-NgEZKOhxUSXkwNnWNaMXZaopQ5aFGPAYiEpEWIkQ6Dzc4iS0M1oQsvWne2t+ex9QZUAdTz/ZT4tOXJhWtP6mCw==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/from2@2.3.2: resolution: {integrity: sha512-s1pdctxW2+CA4FOxxTBRxC3RKQL9Br1a2s2LngP4jh1BI84JBL3mDXj87EwcckN9z/IXp8o3ySmvZveGEAAwqw==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/html-minifier@4.0.2: resolution: {integrity: sha512-4IkmkXJP/25R2fZsCHDX2abztXuQRzUAZq39PfCMz2loLFj8vS9y7aF6vDl58koXSTpsF+eL4Lc5Y4Aww/GCTQ==} @@ -1804,7 +1824,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} @@ -1826,7 +1846,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 20.5.1 + '@types/node': 20.5.9 dev: true /@types/mime-types@2.1.1: @@ -1848,8 +1868,8 @@ packages: resolution: {integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==} dev: true - /@types/node@20.5.1: - resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + /@types/node@20.5.9: + resolution: {integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==} /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -1876,14 +1896,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/shortid@0.0.29: resolution: {integrity: sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps=} @@ -1911,7 +1931,7 @@ packages: /@types/through2@2.0.38: resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} @@ -1935,14 +1955,14 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 dev: true /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.5.1 + '@types/node': 20.5.9 dev: true optional: true @@ -2300,7 +2320,7 @@ packages: /broadcast-channel@3.7.0: resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 detect-node: 2.1.0 js-sha3: 0.8.0 microseconds: 0.2.0 @@ -2442,7 +2462,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -2825,7 +2845,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 20.5.1 + '@types/node': 20.5.9 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -2844,7 +2864,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 20.5.1 + '@types/node': 20.5.9 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -3213,8 +3233,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -5289,7 +5309,7 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - /ts-node@10.9.1(@types/node@20.5.1)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@20.5.9)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -5308,7 +5328,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 + '@types/node': 20.5.9 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -5443,7 +5463,7 @@ packages: /unload@2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 detect-node: 2.1.0 dev: false diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index cdcd8ff..268797d 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.183', + version: '1.0.184', description: 'website for lossless.com' } diff --git a/ts_web/elements/dees-contextmenu.ts b/ts_web/elements/dees-contextmenu.ts index 63555ac..e39c567 100644 --- a/ts_web/elements/dees-contextmenu.ts +++ b/ts_web/elements/dees-contextmenu.ts @@ -81,12 +81,17 @@ export class DeesContextmenu extends DeesElement { eventArg.preventDefault(); const contextMenu = new DeesContextmenu(); contextMenu.style.position = 'absolute'; + contextMenu.style.zIndex = '2000'; contextMenu.style.top = `${eventArg.clientY.toString()}px`; contextMenu.style.left = `${eventArg.clientX.toString()}px`; contextMenu.style.opacity = '0'; contextMenu.style.transform = 'scale(0.95,0.95)'; contextMenu.style.transformOrigin = 'top left'; contextMenu.menuItems = menuItemsArg; + contextMenu.windowLayer = await DeesWindowLayer.createAndShow(); + contextMenu.windowLayer.addEventListener('click', async () => { + await contextMenu.destroy(); + }) document.body.append(contextMenu); await domtools.plugins.smartdelay.delayFor(0); contextMenu.style.opacity = '1'; @@ -97,6 +102,7 @@ export class DeesContextmenu extends DeesElement { type: Array, }) public menuItems: plugins.tsclass.website.IMenuItem[] = []; + windowLayer: DeesWindowLayer; constructor() { super(); @@ -173,6 +179,9 @@ export class DeesContextmenu extends DeesElement { } public async destroy() { + if (this.windowLayer) { + this.windowLayer.destroy(); + } this.style.opacity = '0'; this.style.transform = 'scale(0.95,0,95)'; await domtools.plugins.smartdelay.delayFor(100); diff --git a/ts_web/elements/dees-icon.ts b/ts_web/elements/dees-icon.ts index 4dd4cd4..533f9a0 100644 --- a/ts_web/elements/dees-icon.ts +++ b/ts_web/elements/dees-icon.ts @@ -122,6 +122,8 @@ export const faIcons = { users: faUsersSolid, }; +export type TIconKey = keyof typeof faIcons; + declare global { interface HTMLElementTagNameMap { 'dees-icon': DeesIcon; diff --git a/ts_web/elements/dees-mobilenavigation.ts b/ts_web/elements/dees-mobilenavigation.ts index 7dd613e..aa37826 100644 --- a/ts_web/elements/dees-mobilenavigation.ts +++ b/ts_web/elements/dees-mobilenavigation.ts @@ -15,22 +15,16 @@ import { DeesWindowLayer } from './dees-windowlayer.js'; export class DeesMobilenavigation extends DeesElement { // STATIC public static demo = () => html` - + ]); + }}> `; private static singletonRef: DeesMobilenavigation; diff --git a/ts_web/elements/dees-table.ts b/ts_web/elements/dees-table.ts index a6ca48e..8e70367 100644 --- a/ts_web/elements/dees-table.ts +++ b/ts_web/elements/dees-table.ts @@ -9,9 +9,13 @@ import { unsafeCSS, type CSSResult, state, + resolveExec, } from '@design.estate/dees-element'; +import { DeesContextmenu } from './dees-contextmenu.js' + import * as domtools from '@design.estate/dees-domtools'; +import { TIconKey } from './dees-icon.js'; declare global { interface HTMLElementTagNameMap { @@ -19,13 +23,36 @@ declare global { } } +// interfaces export interface IDataAction { name: string; - iconName: string; + iconName: TIconKey; + /** + * the table behaviour to use for this action + * e.g. upload: allows to upload files to the table + */ useTableBehaviour?: 'upload' | 'cancelUpload' | 'none'; + /** + * the type of the action + */ + type: 'inRow' | 'rightClick' | 'footer' | 'header' | 'preview' | 'keyCombination'; + /** + * allows to check if the action is relevant for the given item + * @param itemArg + * @returns + */ + actionRelevancyCheckFunc?: (itemArg: T) => boolean; + /** + * the actual action function implementation + * @param itemArg + * @returns + */ actionFunc: (itemArg: T) => Promise; } +export type TDisplayFunction = (itemArg: T) => object; + +// the table implementation @customElement('dees-table') export class DeesTable extends DeesElement { public static demo = () => html` @@ -70,22 +97,47 @@ export class DeesTable extends DeesElement { description: 'Office-Supplies - STAPLES BREMEN', }, ]} - .dataActions="${[{ - name: 'upload', - iconName: 'upload', - useTableBehaviour: 'upload', - actionFunc: async (itemArg: any) => { - + dataName="transactions" + .dataActions="${[ + { + name: 'upload', + iconName: 'bell', + useTableBehaviour: 'upload', + type: 'inRow', + actionFunc: async (itemArg: any) => { + alert(itemArg.amount); + }, }, - },{ - name: 'visibility', - iconName: 'visibility', - useTableBehaviour: 'preview', - actionFunc: async (itemArg: any) => { - + { + name: 'visibility', + iconName: 'copy', + type: 'inRow', + useTableBehaviour: 'preview', + actionFunc: async (itemArg: any) => {}, }, - }] as IDataAction[]}" - >This is a slotted Text + { + name: 'create new', + iconName: 'instagram', + type: 'header', + useTableBehaviour: 'preview', + actionFunc: async (itemArg: any) => {}, + }, + { + name: 'to gallery', + iconName: 'message', + type: 'footer', + useTableBehaviour: 'preview', + actionFunc: async (itemArg: any) => {}, + }, + ] as IDataAction[]}" + .displayFunction=${(itemArg) => { + return { + ...itemArg, + onlyDisplayProp: 'onlyDisplay', + }; + }} + >This is a slotted Text `; @@ -105,26 +157,27 @@ export class DeesTable extends DeesElement { }) public data: T[] = []; + @property({ + type: String, + reflect: true, + }) + public dataName: string; + @property({ type: Array, }) public dataActions: IDataAction[] = []; + @property({ + attribute: false, + }) + public displayFunction: TDisplayFunction = (itemArg: T) => itemArg as any; + @property({ type: Object, }) public selectedDataRow: T; - @property({ - type: String, - }) - public type: 'normal' | 'highlighted' | 'discreet' | 'big' = 'normal'; - - @property({ - type: String, - }) - public status: 'normal' | 'pending' | 'success' | 'error' = 'normal'; - public files: File[] = []; public fileWeakMap = new WeakMap(); @@ -150,11 +203,49 @@ export class DeesTable extends DeesElement { box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3); overflow-x: auto; } + + .header { + display: flex; + justify-content: flex-end; + align-items: center; + } + + .headingContainer { + } + + .heading { + font-family: 'Hubot Sans', 'Inter', sans-serif; + } + + .heading1 { + font-weight: 600; + } + .heading2 { + opacity: 0.6; + } + .headingSeparation { margin-top: 7px; border-bottom: 1px solid ${cssManager.bdTheme('#bcbcbc', '#bcbcbc')}; } + .headerActions { + margin-left: auto; + cursor: pointer; + } + .headerAction { + display: flex; + color: ${cssManager.bdTheme('#333', '#ccc')}; + } + + .headerAction:hover { + color: ${cssManager.bdTheme('#555', '#fff')}; + } + + .headerAction dees-icon { + margin-right: 8px; + } + table, .noDataSet { margin-top: 16px; @@ -186,7 +277,7 @@ export class DeesTable extends DeesElement { background: none; } tr.selected .innerCellContainer { - background: ${cssManager.bdTheme('#22222220', '#ffffff20')}; + background: ${cssManager.bdTheme('#22222220', '#ffffff40')}; } th { text-transform: uppercase; @@ -228,14 +319,37 @@ export class DeesTable extends DeesElement { background: ${cssManager.bdTheme('#CCC', '#111')}; } - .tableStatistics { - padding: 4px 16px; - font-size: 12px; + .footer { + font-size: 14px; color: ${cssManager.bdTheme('#111', '#ffffff90')}; background: ${cssManager.bdTheme('#eeeeeb', '#00000050')}; margin: 16px -16px -16px -16px; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; + display: flex; + } + + .tableStatistics { + padding: 8px 16px; + } + + .footerActions { + margin-left: auto; + } + + .footerActions .footerAction { + cursor: pointer; + padding: 8px 16px; + display: flex; + } + + .footerActions .footerAction:hover { + background: ${cssManager.bdTheme('#CCC', '#111')}; + } + + .footerActions dees-icon { + display: flex; + margin-right: 8px; } `, ]; @@ -244,15 +358,44 @@ export class DeesTable extends DeesElement { return html`
-
${this.heading1}
-
${this.heading2}
+
+
+
${this.heading1}
+
${this.heading2}
+
+
+ ${resolveExec(async () => { + const resultArray: TemplateResult[] = []; + for (const action of this.dataActions) { + if (action.type !== 'header') continue; + resultArray.push( + html`
{ + action.actionFunc(this.selectedDataRow); + }} + > + ${action.iconName + ? html` + ${action.name}` + : action.name} +
` + ); + } + return resultArray; + })} +
+
${this.data.length > 0 ? (() => { - const headings: string[] = Object.keys(this.data[0]); + // Only pick up the keys from the first transformed data object + // as all data objects are assumed to have the same structure + const firstTransformedItem = this.displayFunction(this.data[0]); + const headings: string[] = Object.keys(firstTransformedItem); return html` @@ -273,32 +416,42 @@ export class DeesTable extends DeesElement { } })()} - ${this.data.map( - (itemArg) => html` + ${this.data.map((itemArg) => { + const transformedItem = this.displayFunction(itemArg); + const getTr = (elementArg: HTMLElement): HTMLElement => { + if (elementArg.tagName === 'TR') { + return elementArg; + } else { + return getTr(elementArg.parentElement); + } + }; + return html` { this.selectedDataRow = itemArg; }} @dragenter=${async (eventArg: DragEvent) => { - console.log((eventArg.target as HTMLElement).tagName) - console.log('dragenter'); eventArg.preventDefault(); eventArg.stopPropagation(); - (eventArg.target as HTMLElement).parentElement.style.background = '#800000'; + const realTarget = getTr(eventArg.target as HTMLElement); + console.log('dragenter'); + console.log(realTarget); + setTimeout(() => { + realTarget.style.background = 'green'; + }, 0); }} @dragleave=${async (eventArg: DragEvent) => { - console.log((eventArg.target as HTMLElement).tagName) - console.log('dragleave'); eventArg.preventDefault(); eventArg.stopPropagation(); - (eventArg.target as HTMLElement).parentElement.style.background = 'none'; + const realTarget = getTr(eventArg.target as HTMLElement); + realTarget.style.background = 'none'; }} @dragover=${async (eventArg: DragEvent) => { eventArg.preventDefault(); }} @drop=${async (eventArg: DragEvent) => { eventArg.preventDefault(); - const newFiles = [] + const newFiles = []; for (const file of Array.from(eventArg.dataTransfer.files)) { this.files.push(file); newFiles.push(file); @@ -306,17 +459,41 @@ export class DeesTable extends DeesElement { } const result: File[] = this.fileWeakMap.get(itemArg as object); if (!result) { - this.fileWeakMap.set(itemArg as object, newFiles) + this.fileWeakMap.set(itemArg as object, newFiles); } else { result.push(...newFiles); } }} + @contextmenu=${async (eventArg: MouseEvent) => { + DeesContextmenu.openContextMenuWithOptions(eventArg, [ + { + name: 'copy', + iconName: 'copySolid', + action: async () => { + return null; + }, + }, + { + name: 'edit', + iconName: 'penToSquare', + action: async () => { + return null; + }, + },{ + name: 'paste', + iconName: 'pasteSolid', + action: async () => { + return null; + }, + }, + ]) + }} class="${itemArg === this.selectedDataRow ? 'selected' : ''}" > ${headings.map( (headingArg) => html` ` )} @@ -328,9 +505,19 @@ export class DeesTable extends DeesElement { ${(() => { const actions: TemplateResult[] = []; for (const action of this.dataActions) { - actions.push(html`
${action.iconName ? html` - - ` : action.name}
`) + if (action.type !== 'inRow') continue; + actions.push( + html`
action.actionFunc(itemArg)} + > + ${action.iconName + ? html` + + ` + : action.name} +
` + ); } return actions; })()} @@ -340,17 +527,40 @@ export class DeesTable extends DeesElement { } })()}
- ` - )} + `; + })}
-
${itemArg[headingArg]}
+
${transformedItem[headingArg]}
`; })() : html`
No data set!
`} -
- ${this.data.length} data rows (total) | - ${this.selectedDataRow - ? html`Row ${this.data.indexOf(this.selectedDataRow) + 1} selected` - : html`No row selected`} +
`; diff --git a/ts_web/elements/dees-windowlayer.ts b/ts_web/elements/dees-windowlayer.ts index 55157f1..77886c6 100644 --- a/ts_web/elements/dees-windowlayer.ts +++ b/ts_web/elements/dees-windowlayer.ts @@ -13,6 +13,15 @@ export class DeesWindowLayer extends DeesElement { // STATIC public static demo = () => html``; + public static async createAndShow() { + const domtoolsInstance = domtools.DomTools.getGlobalDomToolsSync(); + const windowLayer = new DeesWindowLayer(); + document.body.append(windowLayer); + await domtoolsInstance.convenience.smartdelay.delayFor(0); + windowLayer.show(); + return windowLayer; + } + // INSTANCE @property({ type: Boolean @@ -29,7 +38,7 @@ export class DeesWindowLayer extends DeesElement { ${domtools.elementBasic.styles}