Combine into one application chat, inbox and home (#9865)

Signed-off-by: Artem Savchenko <armisav@gmail.com>
This commit is contained in:
Artyom Savchenko
2025-09-16 13:15:56 +07:00
committed by GitHub
parent ed424c1ba8
commit 38bc85bf6c
158 changed files with 424 additions and 2534 deletions
+6 -294
View File
@@ -436,15 +436,6 @@ importers:
'@rush-temp/hls':
specifier: file:./projects/hls.tgz
version: file:projects/hls.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/home':
specifier: file:./projects/home.tgz
version: file:projects/home.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/home-assets':
specifier: file:./projects/home-assets.tgz
version: file:projects/home-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/home-resources':
specifier: file:./projects/home-resources.tgz
version: file:projects/home-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/hr':
specifier: file:./projects/hr.tgz
version: file:projects/hr.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
@@ -478,15 +469,6 @@ importers:
'@rush-temp/importer':
specifier: file:./projects/importer.tgz
version: file:projects/importer.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/inbox':
specifier: file:./projects/inbox.tgz
version: file:projects/inbox.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/inbox-assets':
specifier: file:./projects/inbox-assets.tgz
version: file:projects/inbox-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/inbox-resources':
specifier: file:./projects/inbox-resources.tgz
version: file:projects/inbox-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/integration-client':
specifier: file:./projects/integration-client.tgz
version: file:projects/integration-client.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(encoding@0.1.13)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
@@ -646,18 +628,12 @@ importers:
'@rush-temp/model-guest':
specifier: file:./projects/model-guest.tgz
version: file:projects/model-guest.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/model-home':
specifier: file:./projects/model-home.tgz
version: file:projects/model-home.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/model-hr':
specifier: file:./projects/model-hr.tgz
version: file:projects/model-hr.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/model-huly-mail':
specifier: file:./projects/model-huly-mail.tgz
version: file:projects/model-huly-mail.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/model-inbox':
specifier: file:./projects/model-inbox.tgz
version: file:projects/model-inbox.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
'@rush-temp/model-inventory':
specifier: file:./projects/model-inventory.tgz
version: file:projects/model-inventory.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
@@ -4533,7 +4509,7 @@ packages:
version: 0.0.0
'@rush-temp/chat-resources@file:projects/chat-resources.tgz':
resolution: {integrity: sha512-AFDK1yaBNWcRGrA51lZqMGoPtil/JilIefqpskBgQDGu6I0IjnM6HgatPOctxZhFuahJ7GwdZQ3LuNqwNOv8/g==, tarball: file:projects/chat-resources.tgz}
resolution: {integrity: sha512-sP+ZsvakZdvPfnrPYm4ssdiDY62owaFCaFf8sV6/9ryxwdPdmME87pBo5ttkVNXPfs7SB+TqK2BvprpWqX4DOA==, tarball: file:projects/chat-resources.tgz}
version: 0.0.0
'@rush-temp/chat@file:projects/chat.tgz':
@@ -4681,7 +4657,7 @@ packages:
version: 0.0.0
'@rush-temp/desktop@file:projects/desktop.tgz':
resolution: {integrity: sha512-PXWgVzj8RCiUsgJ1VjZKZtPSz4oriYw9M8Op+z+pF53k9vsbfXVg+pY3h4kqHqEITKNOPZ67TJm50Axc+YCNYQ==, tarball: file:projects/desktop.tgz}
resolution: {integrity: sha512-LB9wCmyPPqzwihsL8yWC+gk92v4/VkKdooa0q0ylkChu46c0b5QdH40QoWSDJgNqqSO5XRFwM5jpmtRlMm29lg==, tarball: file:projects/desktop.tgz}
version: 0.0.0
'@rush-temp/devmodel-resources@file:projects/devmodel-resources.tgz':
@@ -4804,18 +4780,6 @@ packages:
resolution: {integrity: sha512-kKQdiBBC9n/TPOn0CPu/7bKdCzniksEZQmXwRKNw3O1IKatBjxMoaKwmAngGR5X6IkzF4lzhzoBHeos9LpdAiw==, tarball: file:projects/hls.tgz}
version: 0.0.0
'@rush-temp/home-assets@file:projects/home-assets.tgz':
resolution: {integrity: sha512-X70gK5STU72BH7qpbGG+7dBGczEpfZzWnm63zvnKEudhx7t2uf9mLzQKiP+U3NfVhySBneAjM43Q+hJICV7wsA==, tarball: file:projects/home-assets.tgz}
version: 0.0.0
'@rush-temp/home-resources@file:projects/home-resources.tgz':
resolution: {integrity: sha512-Kyb2Hki++gRCMxA1KlquQPYK2ngBm36RiQrPBkvLVgzDBgGGS5vpNuha+j4To6XtCUjC/KVVtR4S/mjhuE6DkQ==, tarball: file:projects/home-resources.tgz}
version: 0.0.0
'@rush-temp/home@file:projects/home.tgz':
resolution: {integrity: sha512-rdekzJmsD0T3s8W31vA9GLHkXz3euNTjv9EvOluzkS7bK8WTcKmgtS2DfmyrxwfIo8W9zXjD/ju1AOMP9qwRgA==, tarball: file:projects/home.tgz}
version: 0.0.0
'@rush-temp/hr-assets@file:projects/hr-assets.tgz':
resolution: {integrity: sha512-hGQa+GtCy/Zp3WxkkmI9bnoB0chnNA1OilG8C8Q9OdIrIBkE6bJUYgECwSxXsvxYNR02DVGfj45pKSwM+caw+w==, tarball: file:projects/hr-assets.tgz}
version: 0.0.0
@@ -4860,18 +4824,6 @@ packages:
resolution: {integrity: sha512-dsrMgXjTA7X480tMaHe072WONvg1+vlvrhOrhdx3cMHEj4RmfBSBo+gA0l2ie8Upk20V5fd8jp/higlObjGPGg==, tarball: file:projects/importer.tgz}
version: 0.0.0
'@rush-temp/inbox-assets@file:projects/inbox-assets.tgz':
resolution: {integrity: sha512-wGfrcE6wXajDzbKOF/JWsiwKJdg7qJNXMH6ezqhW2vTAFHqQV5ygBcJwK7LXCUcj32ndS6LVbhbYVhiUqGrJKA==, tarball: file:projects/inbox-assets.tgz}
version: 0.0.0
'@rush-temp/inbox-resources@file:projects/inbox-resources.tgz':
resolution: {integrity: sha512-SVa2P7Wkz+LM2Y3qw7lkJtUktOPMX1FXx7R9bVDR/VDDTxG5ZRknMWOQq3LK8GHtSUdu7zHRGSulF5YsuYaPdA==, tarball: file:projects/inbox-resources.tgz}
version: 0.0.0
'@rush-temp/inbox@file:projects/inbox.tgz':
resolution: {integrity: sha512-Qv3JD4silIEc3DbDzvxoBF+bW3a5/+oZXYBudlOu0Rjl83i4Rq5XOV9wWSa74ob9XlyVPvEl80OuqcEEydbS/g==, tarball: file:projects/inbox.tgz}
version: 0.0.0
'@rush-temp/integration-client@file:projects/integration-client.tgz':
resolution: {integrity: sha512-dM4gzSAlhotI4b0vEZF+UpyMbNdkifPyHN9Jyy/BNgPEFhBeEdt3qzDwvwLG7Vw7eLKwNwYGhVeus0ymSDTDLA==, tarball: file:projects/integration-client.tgz}
version: 0.0.0
@@ -4989,7 +4941,7 @@ packages:
version: 0.0.0
'@rush-temp/model-all@file:projects/model-all.tgz':
resolution: {integrity: sha512-H7ZBVosjqp+HIVfB6YsDkGxXZjF9lv/e5GQoRUrZ9CDLIYkkq+HYBxjQPz4rIpx4TbpFqUNHZvDzXmDjyhYczQ==, tarball: file:projects/model-all.tgz}
resolution: {integrity: sha512-u5b+jP4WxAVIk6DlawxySE+qDG7iz7YD3dTT3LCgR3Ml5RkMOlej4YtbO0YQmX4wp4l4gMJKdRCgBCpVfytksg==, tarball: file:projects/model-all.tgz}
version: 0.0.0
'@rush-temp/model-analytics-collector@file:projects/model-analytics-collector.tgz':
@@ -5080,10 +5032,6 @@ packages:
resolution: {integrity: sha512-kKs3ou5CtoDanrPvhLK/PPbvL38gGOyy9kf3/IOtmV5E+cBZ7+4NmaY44sLgUrv2+s4LBytAJDFTrWaEMjG46g==, tarball: file:projects/model-guest.tgz}
version: 0.0.0
'@rush-temp/model-home@file:projects/model-home.tgz':
resolution: {integrity: sha512-TPps1Rv4wE6cg/cslfxtJPveWIGnZWj4tnWBkVDCwVvuvvVzkh85+I+pPx93gzVdBHkICD8tJP1xZdhORE9G4A==, tarball: file:projects/model-home.tgz}
version: 0.0.0
'@rush-temp/model-hr@file:projects/model-hr.tgz':
resolution: {integrity: sha512-84aXICE02BHlrNiYDoUaZkO23jI1I77JaWcLOQPIKWXyh781IJyaNAnz8dSzeNQ9OW2GVoGXy/3oGErqcmNIeg==, tarball: file:projects/model-hr.tgz}
version: 0.0.0
@@ -5092,10 +5040,6 @@ packages:
resolution: {integrity: sha512-uaNvuLE4Qkzu/JfrEtTYAGkn8qV7ShiTFh3EPRfIzo3e576VVXANz3uacJn6FF1lq5i6ytZ4o6/6EP4kWwwUNg==, tarball: file:projects/model-huly-mail.tgz}
version: 0.0.0
'@rush-temp/model-inbox@file:projects/model-inbox.tgz':
resolution: {integrity: sha512-X5gQAMifnHkDejG9m6Zf/4l/SLVr5zMgVLntRqInmBmZn6Fy7oc6KAWnObQtfeJkB+hkuG/4Vl3p0P5WmEbznQ==, tarball: file:projects/model-inbox.tgz}
version: 0.0.0
'@rush-temp/model-inventory@file:projects/model-inventory.tgz':
resolution: {integrity: sha512-l/qARUo/KdNQP3vlCab69DCwGKrE1sXClTe4bzjOoD4rsakiq7ksCoIfTvahhBo3qaTMJMjA8SPsrB6Xt3EfSQ==, tarball: file:projects/model-inventory.tgz}
version: 0.0.0
@@ -5565,7 +5509,7 @@ packages:
version: 0.0.0
'@rush-temp/process-resources@file:projects/process-resources.tgz':
resolution: {integrity: sha512-/xScbDuuS/95ZdrhqSgLLtn16eOnWk1Ot+h4DtkwoRPYx9w9xs3xvEGkXA7I9isWtZivNMEVDMtBDmj5cUIdKg==, tarball: file:projects/process-resources.tgz}
resolution: {integrity: sha512-oE8AV/FxaPReVuZdIA/Qu7cqQ4SXO0Dnn6Vhys7wWcOy9DDbv3uHkQldkcxwBaTliUmxiknbsnDez/ctzaaugw==, tarball: file:projects/process-resources.tgz}
version: 0.0.0
'@rush-temp/process@file:projects/process.tgz':
@@ -5573,7 +5517,7 @@ packages:
version: 0.0.0
'@rush-temp/prod@file:projects/prod.tgz':
resolution: {integrity: sha512-AqCLVGDUvKTv0HvUxn6HuZRYxOjNXq4oSM0p6ieSUpF+yLRyg5QrYxQUk+smPh6pmRvT7484ekfc3yqMXFpfWQ==, tarball: file:projects/prod.tgz}
resolution: {integrity: sha512-OvmMqiOyuDeKVGHc7g8UxMlvr9WAJsqtqICsv6kcx9vSvB7bB0iXOLY9CevyOOBDk5Y6OvRKWJKeY9pif+pjMg==, tarball: file:projects/prod.tgz}
version: 0.0.0
'@rush-temp/products-assets@file:projects/products-assets.tgz':
@@ -6197,7 +6141,7 @@ packages:
version: 0.0.0
'@rush-temp/workbench-resources@file:projects/workbench-resources.tgz':
resolution: {integrity: sha512-9n+SC3hrWkS9CeoN1W3G/v7/W6jVU/PQ/mYx+oJdVFHjVCcXeK2DVcpeq3RdR2FkgWjCrNxtYIx6xDSx6nTLcQ==, tarball: file:projects/workbench-resources.tgz}
resolution: {integrity: sha512-GfcFY/TIYaUSOTC2YI3Fl579sAPM4+qNzd9oe0JXwE4C2Zsz4TUFtNNtzM4KnVXmqkf6t4AT8ZaYcjsGnq8rxQ==, tarball: file:projects/workbench-resources.tgz}
version: 0.0.0
'@rush-temp/workbench@file:projects/workbench.tgz':
@@ -20747,97 +20691,6 @@ snapshots:
- supports-color
- ts-node
'@rush-temp/home-assets@file:projects/home-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@types/node': 22.15.29
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/home-resources@file:projects/home-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.20)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
fast-equals: 5.2.2
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
prettier-plugin-svelte: 3.2.2(prettier@3.2.5)(svelte@4.2.20)
sass: 1.71.1
svelte: 4.2.20
svelte-check: 3.6.9(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(sass@1.71.1)(svelte@4.2.20)
svelte-eslint-parser: 0.33.1(svelte@4.2.20)
svelte-loader: 3.2.0(svelte@4.2.20)
svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(sass@1.71.1)(svelte@4.2.20)(typescript@5.8.3)
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- '@types/node'
- babel-jest
- babel-plugin-macros
- coffeescript
- esbuild
- less
- node-notifier
- postcss
- postcss-load-config
- pug
- stylus
- sugarss
- supports-color
- ts-node
'@rush-temp/home@file:projects/home.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- '@types/node'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/hr-assets@file:projects/hr-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
@@ -21179,97 +21032,6 @@ snapshots:
- supports-color
- ts-node
'@rush-temp/inbox-assets@file:projects/inbox-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@types/node': 22.15.29
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/inbox-resources@file:projects/inbox-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.20)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
fast-equals: 5.2.2
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
prettier-plugin-svelte: 3.2.2(prettier@3.2.5)(svelte@4.2.20)
sass: 1.71.1
svelte: 4.2.20
svelte-check: 3.6.9(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(sass@1.71.1)(svelte@4.2.20)
svelte-eslint-parser: 0.33.1(svelte@4.2.20)
svelte-loader: 3.2.0(svelte@4.2.20)
svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(postcss@8.5.3)(sass@1.71.1)(svelte@4.2.20)(typescript@5.8.3)
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- '@types/node'
- babel-jest
- babel-plugin-macros
- coffeescript
- esbuild
- less
- node-notifier
- postcss
- postcss-load-config
- pug
- stylus
- sugarss
- supports-color
- ts-node
'@rush-temp/inbox@file:projects/inbox.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@22.15.29)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- '@types/node'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/integration-client@file:projects/integration-client.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(encoding@0.1.13)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
@@ -22726,31 +22488,6 @@ snapshots:
- supports-color
- ts-node
'@rush-temp/model-home@file:projects/model-home.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@types/node': 22.15.29
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/model-hr@file:projects/model-hr.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
@@ -22801,31 +22538,6 @@ snapshots:
- supports-color
- ts-node
'@rush-temp/model-inbox@file:projects/model-inbox.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
'@types/node': 22.15.29
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.8.3)
eslint: 8.56.0
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.8.3))(eslint@8.56.0)(typescript@5.8.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.8.3)
eslint-plugin-import: 2.29.1(eslint@8.56.0)
eslint-plugin-n: 15.7.0(eslint@8.56.0)
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))
prettier: 3.2.5
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- '@babel/core'
- '@jest/types'
- babel-jest
- babel-plugin-macros
- esbuild
- node-notifier
- supports-color
- ts-node
'@rush-temp/model-inventory@file:projects/model-inventory.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.25.9)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.15.29)(typescript@5.8.3))':
dependencies:
'@types/jest': 29.5.12
-6
View File
@@ -243,9 +243,6 @@
"@hcengineering/chat": "^0.6.0",
"@hcengineering/chat-assets": "^0.6.0",
"@hcengineering/chat-resources": "^0.6.0",
"@hcengineering/inbox": "^0.6.0",
"@hcengineering/inbox-assets": "^0.6.0",
"@hcengineering/inbox-resources": "^0.6.0",
"@hcengineering/achievement": "^0.6.0",
"@hcengineering/achievement-assets": "^0.6.0",
"@hcengineering/achievement-resources": "^0.6.0",
@@ -261,9 +258,6 @@
"@hcengineering/huly-mail": "^0.6.0",
"@hcengineering/huly-mail-assets": "^0.6.0",
"@hcengineering/huly-mail-resources": "^0.6.0",
"@hcengineering/home": "^0.6.0",
"@hcengineering/home-assets": "^0.6.0",
"@hcengineering/home-resources": "^0.6.0",
"electron-squirrel-startup": "~1.0.0",
"dotenv": "~16.0.0",
"electron-context-menu": "^4.0.4",
+2 -2
View File
@@ -18,7 +18,7 @@ import {
} from '@hcengineering/ui'
import { handleDownloadItem } from '@hcengineering/desktop-downloads'
import notification, { notificationId } from '@hcengineering/notification'
import { inboxId } from '@hcengineering/inbox'
import { chatId } from '@hcengineering/chat'
import workbench, { workbenchId, logOut } from '@hcengineering/workbench'
import { encodeObjectURI } from '@hcengineering/view'
import { resolveLocation } from '@hcengineering/notification-resources'
@@ -169,7 +169,7 @@ window.addEventListener('DOMContentLoaded', () => {
// Support for new inbox with cardId (card-based)
if (notificationParams.cardId != null) {
const currentLocation = getCurrentResolvedLocation()
navigateToUrl(`${workbenchId}/${currentLocation.path[1]}/${inboxId}/${notificationParams.cardId}`)
navigateToUrl(`${workbenchId}/${currentLocation.path[1]}/${chatId}/${notificationParams.cardId}`)
return
}
+2 -2
View File
@@ -14,7 +14,7 @@ import workbench, { workbenchId } from '@hcengineering/workbench'
import desktopPreferences, { defaultNotificationPreference } from '@hcengineering/desktop-preferences'
import { activePreferences } from '@hcengineering/desktop-preferences-resources'
import { getDisplayInboxData, InboxNotificationsClientImpl } from '@hcengineering/notification-resources'
import { inboxId } from '@hcengineering/inbox'
import { chatId } from '@hcengineering/chat'
import communication from '@hcengineering/communication'
import { ipcMainExposed } from './typesUtils'
@@ -164,7 +164,7 @@ export function configureNotifications (): void {
notificationHistory.set(notification.id, notification.created.getTime())
electronAPI.sendNotification({
silent: !preferences.playSound,
application: inboxId,
application: chatId,
title: notification.content.title,
body: `${notification.content.senderName}: ${notification.content.shortText}`,
cardId: notification.cardId,
-8
View File
@@ -64,12 +64,10 @@ import { viewId } from '@hcengineering/view'
import workbench, { workbenchId } from '@hcengineering/workbench'
import { mailId } from '@hcengineering/mail'
import { chatId } from '@hcengineering/chat'
import { inboxId } from '@hcengineering/inbox'
import { achievementId } from '@hcengineering/achievement'
import communication, { communicationId } from '@hcengineering/communication'
import { emojiId } from '@hcengineering/emoji'
import { hulyMailId } from '@hcengineering/huly-mail'
import { homeId } from '@hcengineering/home'
import billingPlugin, { billingId } from '@hcengineering/billing'
import '@hcengineering/activity-assets'
@@ -121,14 +119,12 @@ import '@hcengineering/view-assets'
import '@hcengineering/workbench-assets'
import '@hcengineering/mail-assets'
import '@hcengineering/chat-assets'
import '@hcengineering/inbox-assets'
import '@hcengineering/achievement-assets'
import '@hcengineering/emoji-assets'
import '@hcengineering/media-assets'
import '@hcengineering/communication-assets'
import '@hcengineering/billing-assets'
import '@hcengineering/huly-mail-assets'
import '@hcengineering/home-assets'
import analyticsCollector, { analyticsCollectorId } from '@hcengineering/analytics-collector'
import { coreId } from '@hcengineering/core'
@@ -244,14 +240,12 @@ function configureI18n (): void {
addStringsLoader(cardId, async (lang: string) => await import(`@hcengineering/card-assets/lang/${lang}.json`))
addStringsLoader(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`))
addStringsLoader(chatId, async (lang: string) => await import(`@hcengineering/chat-assets/lang/${lang}.json`))
addStringsLoader(inboxId, async (lang: string) => await import(`@hcengineering/inbox-assets/lang/${lang}.json`))
addStringsLoader(processId, async (lang: string) => await import(`@hcengineering/process-assets/lang/${lang}.json`))
addStringsLoader(achievementId, async (lang: string) => await import(`@hcengineering/achievement-assets/lang/${lang}.json`))
addStringsLoader(communicationId, async (lang: string) => await import(`@hcengineering/communication-assets/lang/${lang}.json`))
addStringsLoader(emojiId, async (lang: string) => await import(`@hcengineering/emoji-assets/lang/${lang}.json`))
addStringsLoader(billingId, async (lang: string) => await import(`@hcengineering/billing-assets/lang/${lang}.json`))
addStringsLoader(hulyMailId, async (lang: string) => await import(`@hcengineering/huly-mail-assets/lang/${lang}.json`))
addStringsLoader(homeId, async (lang: string) => await import(`@hcengineering/home-assets/lang/${lang}.json`))
}
export class PlatformBranding {
@@ -418,14 +412,12 @@ export async function configurePlatform (onWorkbenchConnect?: () => Promise<void
addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources'))
addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources'))
addLocation(chatId, () => import(/* webpackChunkName: "chat" */ '@hcengineering/chat-resources'))
addLocation(inboxId, () => import(/* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources'))
addLocation(processId, () => import(/* webpackChunkName: "process" */ '@hcengineering/process-resources'))
addLocation(achievementId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources'))
addLocation(communicationId, () => import(/* webpackChunkName: "communication" */ '@hcengineering/communication-resources'))
addLocation(emojiId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/emoji-resources'))
addLocation(billingId, () => import(/* webpackChunkName: "billing" */ '@hcengineering/billing-resources'))
addLocation(hulyMailId, () => import(/* webpackChunkName: "huly-mail" */ '@hcengineering/huly-mail-resources'))
addLocation(homeId, () => import(/* webpackChunkName: "home" */ '@hcengineering/home-resources'))
setMetadata(client.metadata.FilterModel, 'ui')
setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin])
-6
View File
@@ -85,9 +85,6 @@
"@hcengineering/chat": "^0.6.0",
"@hcengineering/chat-assets": "^0.6.0",
"@hcengineering/chat-resources": "^0.6.0",
"@hcengineering/inbox": "^0.6.0",
"@hcengineering/inbox-assets": "^0.6.0",
"@hcengineering/inbox-resources": "^0.6.0",
"@hcengineering/chunter": "^0.6.20",
"@hcengineering/chunter-assets": "^0.6.18",
"@hcengineering/chunter-resources": "^0.6.0",
@@ -282,9 +279,6 @@
"@hcengineering/huly-mail": "^0.6.0",
"@hcengineering/huly-mail-assets": "^0.6.0",
"@hcengineering/huly-mail-resources": "^0.6.0",
"@hcengineering/home": "^0.6.0",
"@hcengineering/home-assets": "^0.6.0",
"@hcengineering/home-resources": "^0.6.0",
"@sentry/svelte": "^9.22.0",
"posthog-js": "^1.246.0",
"readable-stream": "^4.7.0",
-8
View File
@@ -72,13 +72,11 @@ import { mailId } from '@hcengineering/mail'
import { chatId } from '@hcengineering/chat'
import github, { githubId } from '@hcengineering/github'
import { bitrixId } from '@hcengineering/bitrix'
import {inboxId} from '@hcengineering/inbox'
import {achievementId} from '@hcengineering/achievement'
import communication, { communicationId } from '@hcengineering/communication'
import {emojiId} from '@hcengineering/emoji'
import billingPlugin, {billingId} from '@hcengineering/billing'
import { hulyMailId } from '@hcengineering/huly-mail'
import {homeId} from '@hcengineering/home'
import '@hcengineering/activity-assets'
import '@hcengineering/analytics-collector-assets'
@@ -128,7 +126,6 @@ import '@hcengineering/media-assets'
import '@hcengineering/view-assets'
import '@hcengineering/workbench-assets'
import '@hcengineering/chat-assets'
import '@hcengineering/inbox-assets'
import '@hcengineering/mail-assets'
import '@hcengineering/github-assets'
import '@hcengineering/achievement-assets'
@@ -136,7 +133,6 @@ import '@hcengineering/communication-assets'
import '@hcengineering/emoji-assets'
import '@hcengineering/billing-assets'
import '@hcengineering/huly-mail-assets'
import '@hcengineering/home-assets'
import { coreId } from '@hcengineering/core'
import presentation, {
@@ -374,13 +370,11 @@ function configureI18n(): void {
addStringsLoader(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`))
addStringsLoader(chatId, async (lang: string) => await import(`@hcengineering/chat-assets/lang/${lang}.json`))
addStringsLoader(processId, async (lang: string) => await import(`@hcengineering/process-assets/lang/${lang}.json`))
addStringsLoader(inboxId, async (lang: string) => await import(`@hcengineering/inbox-assets/lang/${lang}.json`))
addStringsLoader(achievementId, async (lang: string) => await import(`@hcengineering/achievement-assets/lang/${lang}.json`))
addStringsLoader(communicationId, async (lang: string) => await import(`@hcengineering/communication-assets/lang/${lang}.json`))
addStringsLoader(emojiId, async (lang: string) => await import(`@hcengineering/emoji-assets/lang/${lang}.json`))
addStringsLoader(billingId, async (lang: string) => await import(`@hcengineering/billing-assets/lang/${lang}.json`))
addStringsLoader(hulyMailId, async (lang: string) => await import(`@hcengineering/huly-mail-assets/lang/${lang}.json`))
addStringsLoader(homeId, async (lang: string) => await import(`@hcengineering/home-assets/lang/${lang}.json`))
}
export async function configurePlatform() {
@@ -587,13 +581,11 @@ export async function configurePlatform() {
addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources'))
addLocation(chatId, () => import(/* webpackChunkName: "chat" */ '@hcengineering/chat-resources'))
addLocation(processId, () => import(/* webpackChunkName: "process" */ '@hcengineering/process-resources'))
addLocation(inboxId, () => import(/* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources'))
addLocation(achievementId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources'))
addLocation(communicationId, () => import(/* webpackChunkName: "communication" */ '@hcengineering/communication-resources'))
addLocation(emojiId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/emoji-resources'))
addLocation(billingId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/billing-resources'))
addLocation(hulyMailId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/huly-mail-resources'))
addLocation(homeId, () => import(/* webpackChunkName: "home" */ '@hcengineering/home-resources'))
setMetadata(client.metadata.FilterModel, 'ui')
setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin])
+1 -3
View File
@@ -128,12 +128,10 @@
"@hcengineering/model-chat": "^0.6.0",
"@hcengineering/model-process": "^0.6.0",
"@hcengineering/model-server-process": "^0.6.0",
"@hcengineering/model-inbox": "^0.6.0",
"@hcengineering/model-achievement": "^0.6.0",
"@hcengineering/model-communication": "^0.6.0",
"@hcengineering/model-emoji": "^0.6.0",
"@hcengineering/model-billing": "^0.6.0",
"@hcengineering/model-huly-mail": "^0.6.0",
"@hcengineering/model-home": "^0.6.0"
"@hcengineering/model-huly-mail": "^0.6.0"
}
}
-12
View File
@@ -117,8 +117,6 @@ import survey, { surveyId, createModel as surveyModel } from '@hcengineering/mod
import { presenceId, createModel as presenceModel } from '@hcengineering/model-presence'
import chat, { chatId, createModel as chatModel } from '@hcengineering/model-chat'
import processes, { processId, createModel as processModel } from '@hcengineering/model-process'
import inbox, { createModel as inboxModel, inboxId } from '@hcengineering/model-inbox'
import home, { createModel as homeModel, homeId } from '@hcengineering/model-home'
import { achievementId, createModel as achievementModel } from '@hcengineering/model-achievement'
import { emojiId, createModel as emojiModel } from '@hcengineering/model-emoji'
import { billingId, createModel as billingModel } from '@hcengineering/model-billing'
@@ -477,22 +475,12 @@ export default function buildModel (): Builder {
chatId,
{ label: chat.string.Chat, hidden: true, enabled: false, beta: true, classFilter: defaultFilter }
],
[
inboxModel,
inboxId,
{ label: inbox.string.Inbox, hidden: true, enabled: false, beta: true, classFilter: defaultFilter }
],
[achievementModel, achievementId],
[emojiModel, emojiId],
[communicationModel, communicationId],
[mailModel, mailId],
[billingModel, billingId, { beta: false, hidden: true, enabled: true }],
[hulyMailModel, hulyMailId],
[
homeModel,
homeId,
{ label: home.string.Home, hidden: true, enabled: false, beta: true, classFilter: defaultFilter }
],
[serverCoreModel, serverCoreId],
[serverAttachmentModel, serverAttachmentId],
-2
View File
@@ -57,7 +57,6 @@ import { surveyOperation } from '@hcengineering/model-survey'
import { cardOperation } from '@hcengineering/model-card'
import { aiBotId, aiBotOperation } from '@hcengineering/model-ai-bot'
import { chatId, chatOperation } from '@hcengineering/model-chat'
import { inboxId, inboxOperation } from '@hcengineering/model-inbox'
import { processId, processOperation } from '@hcengineering/model-process'
import { communicationId, communicationOperation } from '@hcengineering/model-communication'
import { recorderId, recorderOperation } from '@hcengineering/model-recorder'
@@ -107,7 +106,6 @@ export const migrateOperations: [string, MigrateOperation][] = [
['survey', surveyOperation],
[aiBotId, aiBotOperation],
[chatId, chatOperation],
[inboxId, inboxOperation],
[processId, processOperation],
[communicationId, communicationOperation],
[recorderId, recorderOperation]
+22
View File
@@ -614,6 +614,28 @@ export function createModel (builder: Builder): void {
card.viewlet.CardChildList
)
builder.createDoc(
view.class.ViewletDescriptor,
core.space.Model,
{
label: card.string.Feed,
icon: card.icon.Feed,
component: card.component.CardFeedView
},
card.viewlet.CardFeedDescriptor
)
builder.createDoc(
view.class.Viewlet,
core.space.Model,
{
attachTo: card.class.Card,
descriptor: card.viewlet.CardFeedDescriptor,
config: []
},
card.viewlet.CardFeed
)
builder.mixin(card.class.Card, core.class.Class, view.mixin.ObjectPresenter, {
presenter: card.component.CardPresenter
})
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'],
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
}
}
-4
View File
@@ -1,4 +0,0 @@
*
!/lib/**
!CHANGELOG.md
/lib/**/__tests__/
-5
View File
@@ -1,5 +0,0 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
"rigPackageName": "@hcengineering/platform-rig",
"rigProfile": "model"
}
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
roots: ["./src"],
coverageReporters: ["text-summary", "html"]
}
-50
View File
@@ -1,50 +0,0 @@
{
"name": "@hcengineering/model-home",
"version": "0.6.0",
"main": "lib/index.js",
"svelte": "src/index.ts",
"types": "types/index.d.ts",
"author": "Hardcore Engineering Inc",
"template": "@hcengineering/model-package",
"license": "EPL-2.0",
"scripts": {
"build": "compile",
"build:watch": "compile",
"format": "format src",
"_phase:build": "compile transpile src",
"_phase:format": "format src",
"_phase:validate": "compile validate",
"_phase:test": "jest --passWithNoTests --silent --forceExit",
"test": "jest --passWithNoTests --silent --forceExit"
},
"devDependencies": {
"@hcengineering/platform-rig": "^0.6.0",
"@typescript-eslint/eslint-plugin": "^6.11.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-n": "^15.4.0",
"eslint": "^8.54.0",
"@typescript-eslint/parser": "^6.11.0",
"eslint-config-standard-with-typescript": "^40.0.0",
"prettier": "^3.1.0",
"typescript": "^5.8.3",
"@types/node": "^22.15.29",
"jest": "^29.7.0",
"@types/jest": "^29.5.5",
"ts-jest": "^29.1.1"
},
"dependencies": {
"@hcengineering/card": "^0.6.0",
"@hcengineering/home": "^0.6.0",
"@hcengineering/home-resources": "^0.6.0",
"@hcengineering/core": "^0.6.32",
"@hcengineering/model": "^0.6.11",
"@hcengineering/model-core": "^0.6.0",
"@hcengineering/model-workbench": "^0.6.1",
"@hcengineering/platform": "^0.6.11",
"@hcengineering/setting": "^0.6.17",
"@hcengineering/ui": "^0.6.15",
"@hcengineering/view": "^0.6.13",
"@hcengineering/workbench": "^0.6.16"
}
}
-42
View File
@@ -1,42 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { type Builder } from '@hcengineering/model'
import core from '@hcengineering/model-core'
import workbench from '@hcengineering/model-workbench'
import { homeId } from '@hcengineering/home'
import home from './plugin'
export { homeId } from '@hcengineering/home'
export { homeOperation } from './migration'
export default home
export function createModel (builder: Builder): void {
builder.createDoc(
workbench.class.Application,
core.space.Model,
{
label: home.string.Home,
icon: home.icon.Home,
alias: homeId,
hidden: false,
component: home.component.HomeApplication,
position: 'top',
order: 90
},
home.app.Home
)
}
-21
View File
@@ -1,21 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { type MigrateOperation, type MigrationClient, type MigrationUpgradeClient } from '@hcengineering/model'
export const homeOperation: MigrateOperation = {
async migrate (client: MigrationClient, mode): Promise<void> {},
async upgrade (state: Map<string, Set<string>>, client: () => Promise<MigrationUpgradeClient>, mode): Promise<void> {}
}
-26
View File
@@ -1,26 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { homeId } from '@hcengineering/home'
import home from '@hcengineering/home-resources/src/plugin'
import { type Ref } from '@hcengineering/core'
import { type Application } from '@hcengineering/model-workbench'
import { mergeIds } from '@hcengineering/platform'
export default mergeIds(homeId, home, {
app: {
Home: '' as Ref<Application>
}
})
-12
View File
@@ -1,12 +0,0 @@
{
"extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./lib",
"declarationDir": "./types",
"tsBuildInfoFile": ".build/build.tsbuildinfo"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "lib", "dist", "types", "bundle"]
}
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'],
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
}
}
-4
View File
@@ -1,4 +0,0 @@
*
!/lib/**
!CHANGELOG.md
/lib/**/__tests__/
-5
View File
@@ -1,5 +0,0 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
"rigPackageName": "@hcengineering/platform-rig",
"rigProfile": "model"
}
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
roots: ["./src"],
coverageReporters: ["text-summary", "html"]
}
-50
View File
@@ -1,50 +0,0 @@
{
"name": "@hcengineering/model-inbox",
"version": "0.6.0",
"main": "lib/index.js",
"svelte": "src/index.ts",
"types": "types/index.d.ts",
"author": "Hardcore Engineering Inc",
"template": "@hcengineering/model-package",
"license": "EPL-2.0",
"scripts": {
"build": "compile",
"build:watch": "compile",
"format": "format src",
"_phase:build": "compile transpile src",
"_phase:format": "format src",
"_phase:validate": "compile validate",
"_phase:test": "jest --passWithNoTests --silent --forceExit",
"test": "jest --passWithNoTests --silent --forceExit"
},
"devDependencies": {
"@hcengineering/platform-rig": "^0.6.0",
"@typescript-eslint/eslint-plugin": "^6.11.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-n": "^15.4.0",
"eslint": "^8.54.0",
"@typescript-eslint/parser": "^6.11.0",
"eslint-config-standard-with-typescript": "^40.0.0",
"prettier": "^3.1.0",
"typescript": "^5.8.3",
"@types/node": "^22.15.29",
"jest": "^29.7.0",
"@types/jest": "^29.5.5",
"ts-jest": "^29.1.1"
},
"dependencies": {
"@hcengineering/card": "^0.6.0",
"@hcengineering/inbox": "^0.6.0",
"@hcengineering/inbox-resources": "^0.6.0",
"@hcengineering/core": "^0.6.32",
"@hcengineering/model": "^0.6.11",
"@hcengineering/model-core": "^0.6.0",
"@hcengineering/model-workbench": "^0.6.1",
"@hcengineering/platform": "^0.6.11",
"@hcengineering/setting": "^0.6.17",
"@hcengineering/ui": "^0.6.15",
"@hcengineering/view": "^0.6.13",
"@hcengineering/workbench": "^0.6.16"
}
}
-42
View File
@@ -1,42 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { type Builder } from '@hcengineering/model'
import core from '@hcengineering/model-core'
import workbench from '@hcengineering/model-workbench'
import { inboxId } from '@hcengineering/inbox'
import inbox from './plugin'
export { inboxId } from '@hcengineering/inbox'
export { inboxOperation } from './migration'
export default inbox
export function createModel (builder: Builder): void {
builder.createDoc(
workbench.class.Application,
core.space.Model,
{
label: inbox.string.Inbox,
icon: inbox.icon.Inbox,
alias: inboxId,
hidden: false,
component: inbox.component.InboxApplication,
position: 'top',
order: 100
},
inbox.app.Inbox
)
}
-21
View File
@@ -1,21 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { type MigrateOperation, type MigrationClient, type MigrationUpgradeClient } from '@hcengineering/model'
export const inboxOperation: MigrateOperation = {
async migrate (client: MigrationClient, mode): Promise<void> {},
async upgrade (state: Map<string, Set<string>>, client: () => Promise<MigrationUpgradeClient>, mode): Promise<void> {}
}
-26
View File
@@ -1,26 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { inboxId } from '@hcengineering/inbox'
import inbox from '@hcengineering/inbox-resources/src/plugin'
import { type Ref } from '@hcengineering/core'
import { type Application } from '@hcengineering/model-workbench'
import { mergeIds } from '@hcengineering/platform'
export default mergeIds(inboxId, inbox, {
app: {
Inbox: '' as Ref<Application>
}
})
-12
View File
@@ -1,12 +0,0 @@
{
"extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./lib",
"declarationDir": "./types",
"tsBuildInfoFile": ".build/build.tsbuildinfo"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "lib", "dist", "types", "bundle"]
}
+8
View File
@@ -56,4 +56,12 @@
<path d="M20 2V4H26.586L18.293 12.2929C17.9024 12.6834 17.9024 13.3166 18.293 13.7071C18.6835 14.0976 19.3167 14.0976 19.7072 13.7071L28 5.414V12H30V2H20Z"/>
<path d="M13.7073 19.7071C14.0978 19.3166 14.0978 18.6834 13.7073 18.2929C13.3167 17.9024 12.6836 17.9024 12.293 18.2929L4 26.586V20H2V30H12V28H5.414L13.7073 19.7071Z"/>
</symbol>
<symbol id="feed" viewBox="2 2 28 28">
<g stroke="currentColor" stroke-width="2" fill="none">
<line x1="4" y1="6" x2="24" y2="6"/>
<line x1="4" y1="12" x2="20" y2="12"/>
<line x1="4" y1="18" x2="24" y2="18"/>
<line x1="4" y1="24" x2="20" y2="24"/>
</g>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Přidat",
"GetIndividualPublicLink": "Získat personalizovaný veřejný odkaz",
"ShowLess": "Skrýt detaily",
"CardContent": "Co chcete sdílet?"
"CardContent": "Co chcete sdílet?",
"Feed": "Kanál"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Beitrag",
"GetIndividualPublicLink": "Personalisierten öffentlichen Link erhalten",
"ShowLess": "Weniger anzeigen",
"CardContent": "Was möchten Sie teilen?"
"CardContent": "Was möchten Sie teilen?",
"Feed": "Feed"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Post",
"GetIndividualPublicLink": "Get personalized public link",
"ShowLess": "Show less",
"CardContent": "What do you want to share?"
"CardContent": "What do you want to share?",
"Feed": "Feed"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Publicar",
"GetIndividualPublicLink": "Obtener enlace público personalizado",
"ShowLess": "Mostrar menos",
"CardContent": "¿Qué quieres compartir?"
"CardContent": "¿Qué quieres compartir?",
"Feed": "Feed"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Publier",
"GetIndividualPublicLink": "Obtenir un lien public personnalisé",
"ShowLess": "Afficher moins",
"CardContent": "Que voulez-vous partager ?"
"CardContent": "Que voulez-vous partager ?",
"Feed": "Flux"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Pubblica",
"GetIndividualPublicLink": "Ottieni link pubblico personalizzato",
"ShowLess": "Mostra meno",
"CardContent": "Cosa vuoi condividere?"
"CardContent": "Cosa vuoi condividere?",
"Feed": "Feed"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "投稿",
"GetIndividualPublicLink": "パーソナライズされた公開リンクを取得",
"ShowLess": "詳細を隠す",
"CardContent": "何を共有しますか?"
"CardContent": "何を共有しますか?",
"Feed": "フィード"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Publicar",
"GetIndividualPublicLink": "Obter link público personalizado",
"ShowLess": "Mostrar menos",
"CardContent": "O que você quer compartilhar?"
"CardContent": "O que você quer compartilhar?",
"Feed": "Feed"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "Опубликовать",
"GetIndividualPublicLink": "Получить персональную публичную ссылку",
"ShowLess": "Скрыть детали",
"CardContent": "Чем вы хотите поделиться?"
"CardContent": "Чем вы хотите поделиться?",
"Feed": "Лента"
}
}
+2 -1
View File
@@ -46,6 +46,7 @@
"Post": "发布",
"GetIndividualPublicLink": "获取个性化公共链接",
"ShowLess": "收起详情",
"CardContent": "你想分享什么?"
"CardContent": "你想分享什么?",
"Feed": "动态"
}
}
+2 -1
View File
@@ -26,5 +26,6 @@ loadMetadata(card.icon, {
Document: `${icons}#document`,
Home: `${icons}#home`,
Space: `${icons}#space`,
Expand: `${icons}#expand`
Expand: `${icons}#expand`,
Feed: `${icons}#feed`
})
@@ -13,56 +13,38 @@
<script lang="ts">
import { createQuery, getClient } from '@hcengineering/presentation'
import { Card, type MasterTag } from '@hcengineering/card'
import core, { type Ref, SortingOrder } from '@hcengineering/core'
import ui, {
eventToHTMLElement,
IconSettings,
Label,
ModernButton,
Scroller,
SearchInput,
Loading,
showPopup
} from '@hcengineering/ui'
import { FilterBar, FilterButton } from '@hcengineering/view-resources'
import { type IntlString } from '@hcengineering/platform'
import { NewCardForm } from '@hcengineering/card-resources'
import core, { DocumentQuery, type Ref, SortingOrder } from '@hcengineering/core'
import ui, { Label, Scroller, Loading } from '@hcengineering/ui'
import card from '@hcengineering/card'
import chat from '@hcengineering/chat'
import HomeCardPresenter from './HomeCardPresenter.svelte'
import HomeSettings from './HomeSettings.svelte'
import home from '../plugin'
import HomeCardPresenter from './FeedCardPresenter.svelte'
import NewCardForm from './NewCardForm.svelte'
const cardsQuery = createQuery()
const limitStep = 50
const client = getClient()
export let header: IntlString = home.string.Home
export let baseQuery: Record<string, unknown> = {}
export let baseClass: Ref<MasterTag> | undefined = undefined
export let _class: Ref<MasterTag> | undefined = undefined
export let query: DocumentQuery<Card>
let divScroll: HTMLDivElement
let limit = limitStep
let cards: Card[] = []
let total = -1
let isLoading = true
let search: string = ''
let classQuery: Record<string, unknown> = {}
// Get descendants for baseClass using model hierarchy
$: if (baseClass !== undefined) {
// Get descendants for _class using model hierarchy
$: if (_class !== undefined) {
const hierarchy = client.getHierarchy()
const descendants = hierarchy.getDescendants(baseClass)
const allClasses = [baseClass, ...descendants]
classQuery = allClasses.length > 1 ? { _class: { $in: allClasses } } : { _class: baseClass }
const descendants = hierarchy.getDescendants(_class)
const allClasses = [_class, ...descendants]
classQuery = allClasses.length > 1 ? { _class: { $in: allClasses } } : { _class }
} else {
classQuery = {}
}
$: searchQuery = search != null && search.trim() !== '' ? { $search: search } : {}
$: filterQuery = {}
$: resultQuery = { ...baseQuery, ...classQuery, ...searchQuery, ...filterQuery }
$: resultQuery = { ...query, ...classQuery }
$: cardsQuery.query(
card.class.Card,
resultQuery,
@@ -123,32 +105,11 @@
return date.getFullYear().toString()
}
}
function onSettings (e: MouseEvent): void {
showPopup(HomeSettings, {}, eventToHTMLElement(e))
}
</script>
<Scroller bind:divScroll {onScroll} padding="2rem 4rem">
<div class="home">
<div class="header flex-gap-2">
<div class="header__title">
<Label label={header} />
</div>
<div class="flex flex-gap-2">
<SearchInput bind:value={search} collapsed />
<FilterButton _class={card.class.Card} />
<div class="hulyHeader-divider" />
<ModernButton icon={IconSettings} on:click={onSettings} size="small" iconSize="small" kind="tertiary" />
</div>
</div>
<FilterBar
_class={card.class.Card}
query={searchQuery}
space={undefined}
on:change={({ detail }) => (filterQuery = detail)}
/>
<NewCardForm />
<NewCardForm type={_class} />
<div class="body flex-gap-2">
{#each cards as card, index}
{@const previousCard = cards[index - 1]}
@@ -193,19 +154,6 @@
flex: 1;
}
.header {
display: flex;
width: 100%;
padding: 1rem 0;
justify-content: space-between;
&__title {
font-size: 1.5rem;
font-weight: 600;
color: var(--global-primary-TextColor);
}
}
.body {
display: flex;
flex-direction: column;
@@ -22,12 +22,17 @@
import { Button, IconMoreH, tooltip } from '@hcengineering/ui'
import { showMenu } from '@hcengineering/view-resources'
import { getEmbeddedLabel } from '@hcengineering/platform'
import { CardTagsColored, CardPathPresenter, CardTimestamp, openCardInSidebar } from '@hcengineering/card-resources'
import CardTagsColored from './CardTagsColored.svelte'
import CardPathPresenter from './CardPathPresenter.svelte'
import CardTimestamp from './CardTimestamp.svelte'
import { openCardInSidebar } from '../utils'
import { isHomeSettingEnabled, compactSettingId, homeSettingsStore, comfortableSettingId2 } from '../home'
import SystemAvatar from '@hcengineering/contact-resources/src/components/SystemAvatar.svelte'
export let card: WithLookup<Card>
export let isCompact = false
export let isComfortable2 = false
const messagesQuery = createMessagesQuery()
@@ -36,9 +41,6 @@
let socialId: PersonId | undefined = undefined
let person: Person | undefined = undefined
$: isCompact = isHomeSettingEnabled($homeSettingsStore, compactSettingId)
$: isComfortable2 = isHomeSettingEnabled($homeSettingsStore, comfortableSettingId2)
$: messagesQuery.query(
{ card: card._id, strict: true, attachments: true, reactions: true, limit: 1, order: SortingOrder.Descending },
(res) => {
@@ -74,7 +76,9 @@
<div class="card__header">
<div class="flex-presenter">
{#if hasNewMessages($labelsStore, card._id)}
<span class="notifyMarker" />
<div class="flex pr-1">
<span class="notifyMarker" />
</div>
{/if}
<span
class="card__title overflow-label"
@@ -39,9 +39,10 @@
const threadMasterTag = chat.masterTag.Thread
export let type: Ref<MasterTag> = threadMasterTag
let title: string = ''
let space: Ref<CardSpace> | undefined = undefined
let type: Ref<MasterTag> = threadMasterTag
let description = EmptyMarkup
let _id = generateId<Card>()
let isExpanded = false
@@ -17,13 +17,27 @@
import { ObjectBox } from '@hcengineering/view-resources'
import view, { ViewletDescriptor } from '@hcengineering/view'
import { IntlString } from '@hcengineering/platform'
import card from '../../../plugin'
export let value: Ref<ViewletDescriptor> | undefined = undefined
export let withSingleViews: boolean = false
export let label: IntlString
$: supportedTypes = withSingleViews
? [view.viewlet.Table, view.viewlet.List, view.viewlet.Tree, view.viewlet.MasterDetail, view.viewlet.Document]
: [view.viewlet.Table, view.viewlet.List, view.viewlet.Tree, view.viewlet.MasterDetail]
? [
view.viewlet.Table,
view.viewlet.List,
view.viewlet.Tree,
view.viewlet.MasterDetail,
card.viewlet.CardFeedDescriptor,
view.viewlet.Document
]
: [
view.viewlet.Table,
view.viewlet.List,
view.viewlet.Tree,
view.viewlet.MasterDetail,
card.viewlet.CardFeedDescriptor
]
</script>
<ObjectBox
+3 -2
View File
@@ -68,6 +68,7 @@ import CardTagsColored from './components/CardTagsColored.svelte'
import CardTagColored from './components/CardTagColored.svelte'
import CardWidgetTab from './components/CardWidgetTab.svelte'
import CardIcon from './components/CardIcon.svelte'
import CardFeedView from './components/CardFeedView.svelte'
export { default as CardSelector } from './components/CardSelector.svelte'
export { default as CardIcon } from './components/CardIcon.svelte'
@@ -79,7 +80,6 @@ export { default as AssociationsSelect } from './components/settings/view/Associ
export { default as CardTagsColored } from './components/CardTagsColored.svelte'
export { default as CardPathPresenter } from './components/CardPathPresenter.svelte'
export { default as CardTimestamp } from './components/CardTimestamp.svelte'
export { default as NewCardForm } from './components/NewCardForm.svelte'
export * from './types'
export { getCardIconInfo, openCardInSidebar } from './utils'
@@ -118,7 +118,8 @@ export default async (): Promise<Resources> => ({
FavoriteCardPresenter,
CardTagColored,
CardTagsColored,
CardIcon
CardIcon,
CardFeedView
},
sectionComponent: {
AttachmentsSection: AttachmentsCardSection,
+4 -2
View File
@@ -18,7 +18,7 @@ import { type Ref } from '@hcengineering/core'
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
import { type ObjectSearchCategory, type ObjectSearchFactory } from '@hcengineering/presentation'
import { type AnyComponent } from '@hcengineering/ui/src/types'
import { type Viewlet } from '@hcengineering/view'
import type { ViewletDescriptor, Viewlet } from '@hcengineering/view'
export default mergeIds(cardId, card, {
component: {
@@ -65,7 +65,9 @@ export default mergeIds(cardId, card, {
viewlet: {
CardTable: '' as Ref<Viewlet>,
CardList: '' as Ref<Viewlet>,
CardChildList: '' as Ref<Viewlet>
CardChildList: '' as Ref<Viewlet>,
CardFeedDescriptor: '' as Ref<ViewletDescriptor>,
CardFeed: '' as Ref<Viewlet>
},
string: {
CreateMasterTag: '' as IntlString,
+6 -3
View File
@@ -152,7 +152,8 @@ const cardPlugin = plugin(cardId, {
Document: '' as Asset,
Home: '' as Asset,
Space: '' as Asset,
Expand: '' as Asset
Expand: '' as Asset,
Feed: '' as Asset
},
extensions: {
EditCardExtension: '' as ComponentExtensionId
@@ -168,7 +169,8 @@ const cardPlugin = plugin(cardId, {
Views: '' as IntlString,
Labels: '' as IntlString,
GetIndividualPublicLink: '' as IntlString,
AddTag: '' as IntlString
AddTag: '' as IntlString,
Feed: '' as IntlString
},
section: {
Attachments: '' as Ref<CardSection>,
@@ -185,7 +187,8 @@ const cardPlugin = plugin(cardId, {
CardTagColored: '' as AnyComponent,
CardTagsColored: '' as AnyComponent,
CardIcon: '' as AnyComponent,
CardArrayEditor: '' as AnyComponent
CardArrayEditor: '' as AnyComponent,
CardFeedView: '' as AnyComponent
},
function: {
OpenCardInSidebar: '' as Resource<(_id: Ref<Card>, card?: Card) => Promise<void>>,
+10
View File
@@ -15,4 +15,14 @@
d="M22.2646 18.4346C23.8127 15.061 21.4542 11.3919 18.3526 10.5041C16.8345 10.0007 15.1435 10.203 13.7239 10.8708C12.2987 11.5412 11.0662 12.7196 10.5459 14.2602C9.54063 17.2366 11.4209 20.8545 14.6395 21.8814C15.9617 22.3032 17.5347 22.1569 18.1927 21.9491C18.431 22.0161 18.7158 22.1372 19.0197 22.2664C19.7954 22.5963 20.6952 22.979 21.2615 22.6468C21.5475 22.479 21.6604 22.1705 21.6471 21.8546C21.6294 21.4301 21.573 21.0054 21.5167 20.5813C21.4805 20.3088 21.4443 20.0367 21.4185 19.7651C21.7475 19.356 22.0453 18.9123 22.2646 18.4346ZM11.9671 14.7402C12.3308 13.6633 13.226 12.7627 14.3623 12.2282C15.4988 11.6936 16.7959 11.564 17.8928 11.932L17.9099 11.9377L17.9273 11.9426C20.3341 12.6228 21.9859 15.4235 20.9068 17.7968C20.633 18.3376 20.2858 18.8072 19.8659 19.2409C19.9138 19.791 19.9655 20.3406 20.03 20.889C19.7776 20.8166 19.5238 20.7496 19.2701 20.6826C18.8945 20.5833 18.5189 20.4841 18.148 20.3677L17.9034 20.4622C16.9745 20.8209 15.9738 20.7129 15.0414 20.436C12.3639 19.7416 11.2065 16.9918 11.9671 14.7402Z"
fill="currentColor"/>
</symbol>
<symbol id="inbox" viewBox="0 0 22 22">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M10.9428 0.75H11.0572C13.2479 0.749987 14.9685 0.749976 16.312 0.930593C17.6886 1.11568 18.7809 1.50271 19.6391 2.3609C20.4973 3.2191 20.8843 4.31138 21.0694 5.68803C21.25 7.03144 21.25 8.7521 21.25 10.9428V11.0572C21.25 13.2478 21.25 14.9685 21.0694 16.312C20.8843 17.6886 20.4973 18.7809 19.6392 19.6391C18.7809 20.4973 17.6886 20.8843 16.312 21.0694C14.9685 21.25 13.2479 21.25 11.0572 21.25H10.9428C8.75214 21.25 7.03144 21.25 5.68803 21.0694C4.31138 20.8843 3.21912 20.4973 2.36092 19.6391C1.50273 18.7809 1.11568 17.6886 0.930593 16.312C0.749976 14.9685 0.749987 13.2479 0.75 11.0572V10.9428C0.749987 8.75212 0.749976 7.03144 0.930594 5.68803C1.11568 4.31137 1.50271 3.21911 2.36091 2.36091C3.21911 1.50272 4.31137 1.11568 5.68803 0.930594C7.03144 0.749976 8.75212 0.749987 10.9428 0.75ZM5.8879 2.41722C4.67758 2.57994 3.95462 2.88853 3.42157 3.42157C2.88853 3.95462 2.57994 4.67758 2.41722 5.8879C2.25159 7.1198 2.25 8.73963 2.25 11C2.25 11.2582 2.25002 11.5081 2.25031 11.75H5.75675C7.10297 11.75 8.34789 12.465 9.02621 13.6279C9.90797 15.1395 12.092 15.1395 12.9738 13.6279C13.6521 12.465 14.897 11.75 16.2433 11.75H19.7497C19.75 11.5081 19.75 11.2582 19.75 11C19.75 8.73963 19.7484 7.1198 19.5828 5.88789C19.4201 4.67758 19.1115 3.95461 18.5785 3.42156C18.0454 2.88852 17.3224 2.57994 16.1121 2.41722C14.8802 2.25159 13.2604 2.25 11 2.25C8.73963 2.25 7.1198 2.25159 5.8879 2.41722ZM19.7412 13.25H16.2433C15.4305 13.25 14.679 13.6817 14.2695 14.3837C12.8089 16.8875 9.19111 16.8875 7.73054 14.3837C7.32103 13.6817 6.56947 13.25 5.75675 13.25H2.25877C2.27344 14.4012 2.31261 15.334 2.41722 16.1121C2.57994 17.3224 2.88854 18.0454 3.42158 18.5785C3.95463 19.1115 4.67758 19.4201 5.88789 19.5828C7.1198 19.7484 8.73963 19.75 11 19.75C13.2604 19.75 14.8802 19.7484 16.1121 19.5828C17.3224 19.4201 18.0454 19.1115 18.5785 18.5785C19.1115 18.0454 19.4201 17.3224 19.5828 16.1121C19.6874 15.334 19.7266 14.4012 19.7412 13.25Z"
/>
</symbol>
<symbol id="all" viewBox="0 0 20 20" fill="none">
<path d="M9.99998 15.0001C9.89651 15 9.79468 14.9743 9.70367 14.9251L2.12886 10.8463C1.82502 10.6827 1.71137 10.3037 1.87505 9.99992C2.03867 9.69621 2.41749 9.58261 2.72124 9.74616L9.99998 13.6652L17.2785 9.7463C17.5823 9.58268 17.9613 9.69637 18.125 10.0002C18.2886 10.3041 18.1749 10.6832 17.871 10.8468L10.2963 14.9255C10.2052 14.9746 10.1034 15.0002 9.99998 15.0001Z" fill="currentColor"/>
<path d="M9.99998 18.7501C9.89651 18.75 9.79468 18.7243 9.70367 18.6751L2.12886 14.5963C1.82502 14.4327 1.71137 14.0537 1.87505 13.7499C2.03867 13.4462 2.41749 13.3326 2.72124 13.4962L9.99998 17.4152L17.2785 13.4963C17.5823 13.3327 17.9613 13.4464 18.125 13.7502C18.2886 14.0541 18.1749 14.4332 17.871 14.5968L10.2963 18.6755C10.2052 18.7246 10.1034 18.7502 9.99998 18.7501Z" fill="currentColor"/>
<path d="M9.99998 11.2501C9.89651 11.25 9.79468 11.2243 9.70367 11.1751L1.57867 6.80005C1.47934 6.74654 1.39635 6.66713 1.33851 6.57026C1.28066 6.47338 1.25012 6.36266 1.25012 6.24983C1.25012 6.13701 1.28066 6.02628 1.33851 5.92941C1.39635 5.83254 1.47934 5.75313 1.57867 5.69961L9.70367 1.32461C9.7947 1.27548 9.89653 1.24976 9.99998 1.24976C10.1034 1.24976 10.2053 1.27548 10.2963 1.32461L18.4213 5.69961C18.5206 5.75313 18.6036 5.83254 18.6615 5.92941C18.7193 6.02628 18.7498 6.13701 18.7498 6.24983C18.7498 6.36266 18.7193 6.47338 18.6615 6.57026C18.6036 6.66713 18.5206 6.74654 18.4213 6.80005L10.2963 11.1751C10.2053 11.2243 10.1034 11.25 9.99998 11.2501ZM3.19336 6.25005L9.99998 9.91524L16.8066 6.25005L9.99998 2.58493L3.19336 6.25005Z" fill="currentColor"/>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Zpráva v #{title}",
"Thread": "Vlákno",
"Threads": "Vlákna",
"Title": "Název"
"Title": "Název",
"All": "Vše",
"Inbox": "Doručená pošta",
"ReactedToYourMessage": "reagoval na vaši zprávu",
"ClearAll": "Vymazať všetko",
"InboxIsClear": "Doručená pošta je vymazaná",
"YouDontHaveAnyNewMessages": "Nemáte žiadne nové správy"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Nachricht in #{title}",
"Thread": "Thread",
"Threads": "Threads",
"Title": "Titel"
"Title": "Titel",
"All": "Alle",
"Inbox": "Posteingang",
"ReactedToYourMessage": "reagierte auf Ihre Nachricht",
"ClearAll": "Alles löschen",
"InboxIsClear": "Posteingang ist leer",
"YouDontHaveAnyNewMessages": "Sie haben keine neuen Nachrichten"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Message #{title}",
"Thread": "Thread",
"Threads": "Threads",
"Title": "Title"
"Title": "Title",
"All": "All updates",
"Inbox": "Inbox",
"ReactedToYourMessage": "reacted to your message",
"ClearAll": "Clear all",
"InboxIsClear": "Inbox is clear",
"YouDontHaveAnyNewMessages": "You dont have any new messages"
}
}
+8 -1
View File
@@ -8,6 +8,13 @@
"MessageIn": "Mensaje en #{title}",
"Thread": "Hilo",
"Threads": "Hilos",
"Title": "Título"
"Title": "Título",
"All": "Todo",
"Inbox": "Bande",
"ReactedToYourMessage": "reaccionó a tu mensaje",
"ClearAll": "Borrar todo",
"InboxIsClear": "Bande está vacía",
"YouDontHaveAnyNewMessages": "No tienes ninguna nueva mensaje"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Message dans #{title}",
"Thread": "Fil de discussion",
"Threads": "Fils de discussion",
"Title": "Titre"
"Title": "Titre",
"All": "Tout",
"Inbox": "Boîte de réception",
"ReactedToYourMessage": "a réagi à votre message",
"ClearAll": "Tout effacer",
"InboxIsClear": "Boîte de réception est vide",
"YouDontHaveAnyNewMessages": "Vous n'avez aucun nouveau message"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Messaggio in #{title}",
"Thread": "Discussione",
"Threads": "Discussioni",
"Title": "Titolo"
"Title": "Titolo",
"All": "Tutto",
"Inbox": "Inbox",
"ReactedToYourMessage": "ha reagito al tuo messaggio",
"ClearAll": "Cancella tutto",
"InboxIsClear": "Inbox è vuoto",
"YouDontHaveAnyNewMessages": "Non hai alcun nuovo messaggio"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "メッセージ #{title}",
"Thread": "スレッド",
"Threads": "スレッド",
"Title": "タイトル"
"Title": "タイトル",
"All": "すべて",
"Inbox": "受信箱",
"ReactedToYourMessage": "あなたのメッセージに反応しました",
"ClearAll": "すべてクリア",
"InboxIsClear": "受信箱が空です",
"YouDontHaveAnyNewMessages": "新しいメッセージはありません"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Mensagem em #{title}",
"Thread": "Tópico",
"Threads": "Tópicos",
"Title": "Título"
"Title": "Título",
"All": "Tudo",
"Inbox": "Caixa de entrada",
"ReactedToYourMessage": "reacionou ao seu mensagem",
"ClearAll": "Limpar tudo",
"InboxIsClear": "Caixa de entrada está vazia",
"YouDontHaveAnyNewMessages": "Não tem nenhuma nova mensagem"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "Сообщение в #{title}",
"Thread": "Тред",
"Threads": "Треды",
"Title": "Название"
"Title": "Название",
"All": "Все",
"Inbox": "Входящие",
"ReactedToYourMessage": "отреагировал(а) на ваше сообщение",
"ClearAll": "Очистить всё",
"InboxIsClear": "Входящие пусты",
"YouDontHaveAnyNewMessages": "У вас нет новых сообщений"
}
}
+7 -1
View File
@@ -8,6 +8,12 @@
"MessageIn": "在 #{title} 的消息",
"Thread": "讨论串",
"Threads": "讨论串",
"Title": "标题"
"Title": "标题",
"All": "全部",
"Inbox": "收件箱",
"ReactedToYourMessage": "对您的消息做出了反应",
"ClearAll": "清除全部",
"InboxIsClear": "收件箱是空的",
"YouDontHaveAnyNewMessages": "您没有任何新消息"
}
}
+3 -1
View File
@@ -19,5 +19,7 @@ import chat from '@hcengineering/chat'
const icons = require('../assets/icons.svg') as string // eslint-disable-line
loadMetadata(chat.icon, {
ChatBubble: `${icons}#chat-bubble`,
Thread: `${icons}#message-multiple`
Thread: `${icons}#message-multiple`,
Inbox: `${icons}#inbox`,
All: `${icons}#all`
})
+6
View File
@@ -54,6 +54,12 @@
"@hcengineering/view-resources": "^0.6.0",
"@hcengineering/workbench": "^0.6.16",
"@hcengineering/workbench-resources": "^0.6.1",
"@hcengineering/communication-resources": "^0.6.0",
"@hcengineering/communication-shared": "^0.1.0",
"@hcengineering/rank": "^0.6.4",
"@hcengineering/text": "^0.6.5",
"@hcengineering/text-markdown": "^0.6.0",
"@hcengineering/emoji-resources": "^0.6.0",
"fast-equals": "^5.2.2",
"svelte": "^4.2.20"
}
@@ -38,8 +38,10 @@
getCardIdFromLocation,
navigateToType,
getTypeIdFromLocation,
isAllLocation,
isFavoritesLocation,
navigateToFavorites
navigateToFavorites,
navigateToAll
} from '../location'
import ChatNavigationCategoryList from './ChatNavigationCategoryList.svelte'
@@ -55,6 +57,7 @@
doc: MasterTag
}
| { type: 'favorites' }
| { type: 'all' }
const client = getClient()
const hierarchy = client.getHierarchy()
@@ -74,12 +77,18 @@
const typeId = getTypeIdFromLocation(loc)
const cardId = getCardIdFromLocation(loc)
const isFavorites = isFavoritesLocation(loc)
const isAll = isAllLocation(loc)
if (isFavorites) {
selection = { type: 'favorites' }
return
}
if (isAll) {
selection = { type: 'all' }
return
}
const type = typeId != null ? await client.findOne(cardPlugin.class.MasterTag, { _id: typeId }) : undefined
if (type != null) {
@@ -127,6 +136,13 @@
navigateToFavorites()
}
function selectAll (): void {
if (selection?.type === 'all') return
closePanel(false)
selection = { type: 'all' }
navigateToAll()
}
function getSelectedCard (selection: Selection | undefined): Card | undefined {
if (selection?.type !== 'card') return undefined
return selection.doc
@@ -168,6 +184,7 @@
on:selectCard={selectCard}
on:selectType={selectType}
on:favorites={selectFavorites}
on:selectAll={selectAll}
/>
</div>
{#if !($deviceInfo.isMobile && $deviceInfo.isPortrait && $deviceInfo.minWidth)}
@@ -194,6 +211,8 @@
<Component is={comp} props={{ _id: selectedCard._id, readonly: false, embedded: true, allowClose: false }} />
{:else if selectedType}
<ChatNavigationCategoryList type={selectedType} />
{:else if selection?.type === 'all'}
<Component is={cardPlugin.component.CardFeedView} />
{/if}
</div>
</div>
@@ -20,10 +20,30 @@
import chat, { chatId } from '@hcengineering/chat'
import { Navigator } from '@hcengineering/card-resources'
import communication from '@hcengineering/communication'
import { ModernButton, NavGroup } from '@hcengineering/ui'
import { createEventDispatcher } from 'svelte'
import { createNotificationsQuery } from '@hcengineering/presentation'
import NotifyMarker from './inbox/NotifyMarker.svelte'
import NavigationHeader from './NavigationHeader.svelte'
import InboxNavigation from './inbox/InboxNavigation.svelte'
import InboxHeader from './inbox/InboxHeader.svelte'
export let card: Card | undefined = undefined
export let type: Ref<MasterTag> | undefined = undefined
export let special: 'favorites' | string | undefined = undefined
export let special: 'favorites' | 'all' | string | undefined = undefined
export let mode: 'chat' | 'inbox' = 'chat'
const dispatch = createEventDispatcher()
let hasNewInboxNotifications: boolean = false
const notificationCountQuery = createNotificationsQuery()
notificationCountQuery.query({ read: false, limit: 1 }, (res) => {
hasNewInboxNotifications = res.getResult().length > 0
})
function getSpecial (special: 'favorites' | string | undefined): string | undefined {
if (special === 'favorites') {
@@ -31,36 +51,96 @@
}
return undefined
}
function handleInboxClick (): void {
mode = 'inbox'
}
function handleAllUpdatesClick (): void {
dispatch('selectAll')
}
function selectInboxCard (event: CustomEvent): void {
const card = event.detail?.card
if (card != null) {
dispatch('selectCard', card)
}
}
</script>
<Navigator
config={{
variant: 'cards',
types: [cardPlugin.class.Card],
savedViews: true,
groupBySpace: false,
hideEmpty: true,
limit: 5,
labelFilter: [SubscriptionLabelID],
preorder: [
{ type: chat.masterTag.Thread, order: 1 },
{ type: communication.type.Direct, order: 2 }
],
fixedTypes: [chat.masterTag.Thread, communication.type.Direct],
specialSorting: {
[communication.type.Direct]: 'alphabetical'
},
allowCreate: true,
defaultSorting: 'recent',
lookback: '2w',
showTypeIcon: false,
showCardIcon: true
}}
applicationId={chatId}
selectedType={type}
selectedCard={card?._id}
selectedSpecial={getSpecial(special)}
on:selectType
on:selectCard
on:favorites
/>
{#if mode === 'inbox'}
<InboxHeader bind:mode />
<InboxNavigation {card} on:select={selectInboxCard} />
{:else}
<div class="chat-navigator">
<NavigationHeader label={chat.string.Chat}>
<div slot="actions" class="flex-row-center">
<ModernButton
icon={chat.icon.Inbox}
label={chat.string.Inbox}
size="small"
iconSize="small"
on:click={handleInboxClick}
>
{#if hasNewInboxNotifications}
<div class="flex pl-0-5">
<NotifyMarker kind="simple" size="xx-small" />
</div>
{/if}
</ModernButton>
</div>
</NavigationHeader>
<div class="navigation-section">
<NavGroup
_id="all"
categoryName="all"
type="selectable-header"
icon={chat.icon.All}
label={chat.string.All}
empty={true}
selected={special === 'all'}
noDivider
on:click={handleAllUpdatesClick}
/>
</div>
<Navigator
config={{
variant: 'cards',
types: [cardPlugin.class.Card],
savedViews: true,
groupBySpace: false,
hideEmpty: true,
limit: 5,
labelFilter: [SubscriptionLabelID],
preorder: [
{ type: chat.masterTag.Thread, order: 1 },
{ type: communication.type.Direct, order: 2 }
],
fixedTypes: [chat.masterTag.Thread, communication.type.Direct],
specialSorting: {
[communication.type.Direct]: 'alphabetical'
},
allowCreate: true,
defaultSorting: 'recent',
lookback: '2w',
showTypeIcon: false,
showCardIcon: true
}}
applicationId={chatId}
selectedType={type}
selectedCard={card?._id}
selectedSpecial={getSpecial(special)}
on:selectType
on:selectCard
on:favorites
/>
</div>
{/if}
<style lang="scss">
.navigation-section {
display: flex;
padding-top: 1rem;
margin-bottom: -1rem;
}
</style>
@@ -0,0 +1,30 @@
<!-- Copyright © 2025 Hardcore Engineering Inc. -->
<!-- -->
<!-- Licensed under the Eclipse Public License, Version 2.0 (the "License"); -->
<!-- you may not use this file except in compliance with the License. You may -->
<!-- obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 -->
<!-- -->
<!-- Unless required by applicable law or agreed to in writing, software -->
<!-- distributed under the License is distributed on an "AS IS" BASIS, -->
<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -->
<!-- -->
<!-- See the License for the specific language governing permissions and -->
<!-- limitations under the License. -->
<script lang="ts">
import { Label } from '@hcengineering/ui'
import { IntlString } from '@hcengineering/platform'
export let label: IntlString
</script>
<div class="hulyNavPanel-header withButton small navigation-header">
<span class="overflow-label"><Label {label} /></span>
<slot name="actions" />
</div>
<style lang="scss">
.navigation-header {
background-color: var(--theme-popup-color);
border-bottom: 1px solid var(--theme-navpanel-border);
}
</style>
@@ -15,11 +15,13 @@
import { IconDelete, IconSettings, Label, ModernButton, showPopup, eventToHTMLElement } from '@hcengineering/ui'
import { getCommunicationClient } from '@hcengineering/presentation'
import inbox from '../plugin'
import chat from '../../plugin'
import InboxViewSettings from './InboxViewSettings.svelte'
const communicationClient = getCommunicationClient()
export let mode: 'chat' | 'inbox' = 'chat'
let clearing = false
async function clearInbox (): Promise<void> {
if (clearing) return
@@ -37,13 +39,25 @@
function click (e: MouseEvent): void {
showPopup(InboxViewSettings, {}, eventToHTMLElement(e))
}
function goToChat (): void {
mode = 'chat'
}
</script>
<div class="hulyNavPanel-header withButton small inbox-header">
<span class="overflow-label"><Label label={inbox.string.Inbox} /></span>
<span class="overflow-label"><Label label={chat.string.Inbox} /></span>
<div class="flex-row-center flex-gap-2">
<ModernButton
label={inbox.string.ClearAll}
label={chat.string.Chat}
icon={chat.icon.ChatBubble}
size="small"
iconSize="small"
on:click={goToChat}
/>
<div class="spacer" />
<ModernButton
label={chat.string.ClearAll}
icon={IconDelete}
size="small"
iconSize="small"
@@ -56,6 +70,7 @@
<style lang="scss">
.inbox-header {
background-color: var(--theme-popup-color);
border-bottom: 1px solid var(--theme-navpanel-border);
}
</style>
@@ -22,7 +22,7 @@
import { createEventDispatcher } from 'svelte'
import InboxCard from './InboxCard.svelte'
import inbox from '../plugin'
import chat from '../../plugin'
export let card: Card | undefined = undefined
@@ -160,10 +160,10 @@
{:else}
<div class="placeholder">
<div class="placeholder__header">
<Label label={inbox.string.InboxIsClear} />
<Label label={chat.string.InboxIsClear} />
</div>
<span class="mb-4">
<Label label={inbox.string.YouDontHaveAnyNewMessages} />
<Label label={chat.string.YouDontHaveAnyNewMessages} />
</span>
</div>
{/if}
@@ -17,7 +17,7 @@
import { createFocusManager, FocusHandler, Label, ListView, ModernToggle, resizeObserver } from '@hcengineering/ui'
import { getEmbeddedLabel } from '@hcengineering/platform'
import { updateViewSetting, isViewSettingEnabled, viewSettingsStore, hideUserNamesSettingId } from '../settings'
import { updateViewSetting, isViewSettingEnabled, viewSettingsStore, hideUserNamesSettingId } from '../../settings'
const dispatch = createEventDispatcher()
@@ -22,7 +22,7 @@
import NotificationPreview from './preview/NotificationPreview.svelte'
import PreviewTemplate from './preview/PreviewTemplate.svelte'
import inbox from '../plugin'
import chat from '../../plugin'
export let notification: Notification
export let card: Card
@@ -47,7 +47,7 @@
<PreviewTemplate socialId={content.creator} date={notification.created} color="secondary" showSeparator={false}>
<svelte:fragment slot="content">
<span class="ml-1-5" />
<Label label={inbox.string.ReactedToYourMessage} />
<Label label={chat.string.ReactedToYourMessage} />
</svelte:fragment>
</PreviewTemplate>
@@ -23,7 +23,7 @@
getPersonByPersonId
} from '@hcengineering/contact-resources'
import { SocialID } from '@hcengineering/communication-types'
import { isViewSettingEnabled, hideUserNamesSettingId, viewSettingsStore } from '../../settings'
import { isViewSettingEnabled, hideUserNamesSettingId, viewSettingsStore } from '../../../settings'
export let tooltipLabel: IntlString | undefined = undefined
export let person: Person | undefined = undefined
+14
View File
@@ -26,6 +26,10 @@ export function isFavoritesLocation (loc: Location): boolean {
return loc.path[2] === chatId && loc.path[3] === 'favorites'
}
export function isAllLocation (loc: Location): boolean {
return loc.path[2] === chatId && loc.path[3] === 'all'
}
export function getCardIdFromLocation (loc: Location): Ref<Card> | undefined {
if (loc.path[2] !== chatId) {
return undefined
@@ -78,6 +82,16 @@ export function navigateToFavorites (): void {
navigate(loc)
}
export function navigateToAll (): void {
const loc = getCurrentResolvedLocation()
loc.path[2] = chatId
loc.path[3] = 'all'
delete loc.query?.message
navigate(loc)
}
export async function resolveLocation (loc: Location): Promise<ResolvedLocation | undefined> {
if (loc.path[2] !== chatId) {
return undefined
@@ -61,7 +61,7 @@ function geLocalStorageKey (): string | undefined {
const loc = get(location)
const workspace = loc.path[1] ?? ''
if (me == null || workspace === '') return undefined
return `${workspace}.${me.uuid}.inbox.view-settings.v1`
return `${workspace}.${me.uuid}.chat.view-settings.v1`
}
function initViewSettings (): void {
+10 -2
View File
@@ -29,11 +29,19 @@ const chat = plugin(chatId, {
MessageIn: '' as IntlString,
Thread: '' as IntlString,
Threads: '' as IntlString,
Title: '' as IntlString
Title: '' as IntlString,
Inbox: '' as IntlString,
All: '' as IntlString,
ClearAll: '' as IntlString,
InboxIsClear: '' as IntlString,
YouDontHaveAnyNewMessages: '' as IntlString,
ReactedToYourMessage: '' as IntlString
},
icon: {
ChatBubble: '' as Asset,
Thread: '' as Asset
Thread: '' as Asset,
Inbox: '' as Asset,
All: '' as Asset
},
masterTag: {
Thread: '' as Ref<MasterTag>
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'],
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
}
}
-22
View File
@@ -1,22 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="home" viewBox="0 0 32 32">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2929 2.29302C15.6834 1.90249 16.3166 1.90249 16.7071 2.29302L29.7071 15.293C30.0976 15.6835 30.0976 16.3167 29.7071 16.7072C29.3166 17.0978 28.6834 17.0978 28.2929 16.7072L28 16.4143V26.0001C28 27.1047 27.1046 28.0001 26 28.0001H6C4.89543 28.0001 4 27.1047 4 26.0001V16.4143L3.70711 16.7072C3.31658 17.0978 2.68342 17.0978 2.29289 16.7072C1.90237 16.3167 1.90237 15.6835 2.29289 15.293L15.2929 2.29302ZM6 14.4143V26.0001H12V17.0001C12 16.4478 12.4477 16.0001 13 16.0001H19C19.5523 16.0001 20 16.4478 20 17.0001V26.0001H26V14.4143L16 4.41434L6 14.4143ZM18 26.0001V18.0001H14V26.0001H18Z" fill="currentColor"/>
</symbol>
<symbol id="person" viewBox="0 0 16 16">
<path d="M8 3.99988C7.50555 3.99988 7.0222 4.1465 6.61108 4.4212C6.19995 4.69591 5.87952 5.08635 5.6903 5.54317C5.50108 5.99998 5.45158 6.50265 5.54804 6.9876C5.6445 7.47256 5.88261 7.91801 6.23224 8.26764C6.58187 8.61728 7.02733 8.85538 7.51228 8.95184C7.99723 9.0483 8.4999 8.9988 8.95671 8.80958C9.41353 8.62036 9.80397 8.29993 10.0787 7.8888C10.3534 7.47768 10.5 6.99433 10.5 6.49988C10.5 5.83684 10.2366 5.20095 9.76777 4.73211C9.29893 4.26327 8.66304 3.99988 8 3.99988ZM8 7.99988C7.70333 7.99988 7.41332 7.9119 7.16665 7.74708C6.91997 7.58226 6.72771 7.34799 6.61418 7.0739C6.50065 6.79981 6.47095 6.49821 6.52882 6.20724C6.5867 5.91627 6.72956 5.649 6.93934 5.43922C7.14912 5.22944 7.4164 5.08658 7.70737 5.0287C7.99834 4.97082 8.29994 5.00053 8.57403 5.11406C8.84812 5.22759 9.08239 5.41985 9.24721 5.66652C9.41203 5.9132 9.5 6.20321 9.5 6.49988C9.49955 6.89756 9.34137 7.27883 9.06017 7.56004C8.77896 7.84125 8.39769 7.99943 8 7.99988Z" />
<path d="M8 0.999878C6.61553 0.999878 5.26216 1.41042 4.11101 2.17959C2.95987 2.94876 2.06266 4.04201 1.53285 5.32109C1.00303 6.60018 0.86441 8.00764 1.13451 9.36551C1.4046 10.7234 2.07129 11.9707 3.05026 12.9496C4.02922 13.9286 5.2765 14.5953 6.63437 14.8654C7.99224 15.1355 9.3997 14.9968 10.6788 14.467C11.9579 13.9372 13.0511 13.04 13.8203 11.8889C14.5895 10.7377 15 9.38435 15 7.99988C14.9979 6.144 14.2597 4.36474 12.9474 3.05244C11.6351 1.74014 9.85588 1.00197 8 0.999878ZM5 13.1881V12.4999C5.00044 12.1022 5.15862 11.7209 5.43983 11.4397C5.72104 11.1585 6.10231 11.0003 6.5 10.9999H9.5C9.89769 11.0003 10.279 11.1585 10.5602 11.4397C10.8414 11.7209 10.9996 12.1022 11 12.4999V13.1881C10.0896 13.7197 9.05426 13.9999 8 13.9999C6.94574 13.9999 5.91042 13.7197 5 13.1881ZM11.9963 12.4628C11.9863 11.8069 11.7191 11.1812 11.2521 10.7205C10.7852 10.2598 10.156 10.001 9.5 9.99988H6.5C5.84405 10.001 5.2148 10.2598 4.74786 10.7205C4.28093 11.1812 4.01369 11.8069 4.00375 12.4628C3.09703 11.6532 2.45762 10.5872 2.17017 9.40611C1.88272 8.22501 1.9608 6.98445 2.39407 5.84871C2.82734 4.71297 3.59536 3.73561 4.59644 3.04606C5.59751 2.35651 6.78442 1.98729 8 1.98729C9.21558 1.98729 10.4025 2.35651 11.4036 3.04606C12.4046 3.73561 13.1727 4.71297 13.6059 5.84871C14.0392 6.98445 14.1173 8.22501 13.8298 9.40611C13.5424 10.5872 12.903 11.6532 11.9963 12.4628Z" />
</symbol>
<symbol id="thread" viewBox="0 0 24 24">
<path d="M9.00433 11H6.99536V13H9.00433V11Z" fill="currentColor"/>
<path d="M12.9999 11H10.9909V13H12.9999V11Z" fill="currentColor"/>
<path d="M16.9954 11H14.9864V13H16.9954V11Z" fill="currentColor"/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M12 1.25C6.10068 1.25 1.2522 5.80367 1.2522 11.5004C1.2522 14.2501 2.38351 16.6493 4.16893 18.5083L3.28136 21.7834L3.28087 21.7853C3.11452 22.4053 3.74109 22.934 4.32195 22.6775L4.32598 22.6757L8.01227 21.022C9.24674 21.4927 10.5929 21.7508 12 21.7508C17.8993 21.7508 22.7478 17.1972 22.7478 11.5004C22.7478 5.80367 17.8993 1.25 12 1.25ZM2.7522 11.5004C2.7522 6.70331 6.85606 2.75 12 2.75C17.1439 2.75 21.2478 6.70331 21.2478 11.5004C21.2478 16.2976 17.1439 20.2508 12 20.2508C10.6757 20.2508 9.41882 19.9878 8.28293 19.5153L7.98364 19.3908L5.13791 20.6674L5.84605 18.0544L5.52727 17.7465C3.80892 16.0869 2.7522 13.945 2.7522 11.5004Z"
fill="currentColor"/>
</symbol>
<symbol id="all" viewBox="0 0 20 20" fill="none">
<path d="M9.99998 15.0001C9.89651 15 9.79468 14.9743 9.70367 14.9251L2.12886 10.8463C1.82502 10.6827 1.71137 10.3037 1.87505 9.99992C2.03867 9.69621 2.41749 9.58261 2.72124 9.74616L9.99998 13.6652L17.2785 9.7463C17.5823 9.58268 17.9613 9.69637 18.125 10.0002C18.2886 10.3041 18.1749 10.6832 17.871 10.8468L10.2963 14.9255C10.2052 14.9746 10.1034 15.0002 9.99998 15.0001Z" fill="currentColor"/>
<path d="M9.99998 18.7501C9.89651 18.75 9.79468 18.7243 9.70367 18.6751L2.12886 14.5963C1.82502 14.4327 1.71137 14.0537 1.87505 13.7499C2.03867 13.4462 2.41749 13.3326 2.72124 13.4962L9.99998 17.4152L17.2785 13.4963C17.5823 13.3327 17.9613 13.4464 18.125 13.7502C18.2886 14.0541 18.1749 14.4332 17.871 14.5968L10.2963 18.6755C10.2052 18.7246 10.1034 18.7502 9.99998 18.7501Z" fill="currentColor"/>
<path d="M9.99998 11.2501C9.89651 11.25 9.79468 11.2243 9.70367 11.1751L1.57867 6.80005C1.47934 6.74654 1.39635 6.66713 1.33851 6.57026C1.28066 6.47338 1.25012 6.36266 1.25012 6.24983C1.25012 6.13701 1.28066 6.02628 1.33851 5.92941C1.39635 5.83254 1.47934 5.75313 1.57867 5.69961L9.70367 1.32461C9.7947 1.27548 9.89653 1.24976 9.99998 1.24976C10.1034 1.24976 10.2053 1.27548 10.2963 1.32461L18.4213 5.69961C18.5206 5.75313 18.6036 5.83254 18.6615 5.92941C18.7193 6.02628 18.7498 6.13701 18.7498 6.24983C18.7498 6.36266 18.7193 6.47338 18.6615 6.57026C18.6036 6.66713 18.5206 6.74654 18.4213 6.80005L10.2963 11.1751C10.2053 11.2243 10.1034 11.25 9.99998 11.2501ZM3.19336 6.25005L9.99998 9.91524L16.8066 6.25005L9.99998 2.58493L3.19336 6.25005Z" fill="currentColor"/>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

-5
View File
@@ -1,5 +0,0 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
"rigPackageName": "@hcengineering/platform-rig",
"rigProfile": "assets"
}
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
roots: ["./src"],
coverageReporters: ["text-summary", "html"]
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Domov",
"All": "Všechny aktualizace",
"CreatedByMe": "Vytvořeno mnou",
"Threads": "Vlákna",
"Compact": "Kompaktní",
"Comfortable": "Komfortní",
"Comfortable2": "Komfortní 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Startseite",
"All": "Alle Updates",
"CreatedByMe": "Von mir erstellt",
"Threads": "Threads",
"Compact": "Kompakt",
"Comfortable": "Komfortabel",
"Comfortable2": "Komfortabel 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Home",
"All": "All updates",
"CreatedByMe": "Created by me",
"Threads": "Threads",
"Compact": "Compact",
"Comfortable": "Comfortable",
"Comfortable2": "Comfortable 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Inicio",
"All": "Todas las actualizaciones",
"CreatedByMe": "Creado por mí",
"Threads": "Hilos",
"Compact": "Compacto",
"Comfortable": "Confortable",
"Comfortable2": "Confortable 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Accueil",
"All": "Toutes les mises à jour",
"CreatedByMe": "Créé par moi",
"Threads": "Fils",
"Compact": "Compact",
"Comfortable": "Confortable",
"Comfortable2": "Confortable 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Casa",
"All": "Tutti gli aggiornamenti",
"CreatedByMe": "Creato da me",
"Threads": "Thread",
"Compact": "Compatto",
"Comfortable": "Comodo",
"Comfortable2": "Comodo 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "ホーム",
"All": "すべての更新",
"CreatedByMe": "自分が作成",
"Threads": "スレッド",
"Compact": "コンパクト",
"Comfortable": "快適",
"Comfortable2": "快適2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Início",
"All": "Todas as atualizações",
"CreatedByMe": "Criado por mim",
"Threads": "Threads",
"Compact": "Compacto",
"Comfortable": "Confortável",
"Comfortable2": "Confortável 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "Главная",
"All": "Все обновления",
"CreatedByMe": "Созданные мной",
"Threads": "Потоки",
"Compact": "Компактный",
"Comfortable": "Комфортный",
"Comfortable2": "Комфортный 2"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"string": {
"Home": "主页",
"All": "所有更新",
"CreatedByMe": "我创建的",
"Threads": "主题",
"Compact": "紧凑",
"Comfortable": "舒适",
"Comfortable2": "舒适2"
}
}
-39
View File
@@ -1,39 +0,0 @@
{
"name": "@hcengineering/home-assets",
"version": "0.6.0",
"main": "src/index.ts",
"author": "Hardcore Engineering Inc",
"template": "@hcengineering/assets-package",
"license": "EPL-2.0",
"scripts": {
"build": "compile",
"test": "jest --passWithNoTests --silent",
"build:docs": "",
"format": "format src",
"build:watch": "compile",
"_phase:build": "compile transpile src",
"_phase:test": "jest --passWithNoTests --silent",
"_phase:format": "format src",
"_phase:validate": "compile validate"
},
"devDependencies": {
"@hcengineering/platform-rig": "^0.6.0",
"@typescript-eslint/eslint-plugin": "^6.11.0",
"@typescript-eslint/parser": "^6.11.0",
"eslint-config-standard-with-typescript": "^40.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-n": "^15.4.0",
"eslint-plugin-promise": "^6.1.1",
"eslint": "^8.54.0",
"prettier": "^3.1.0",
"@types/node": "^22.15.29",
"jest": "^29.7.0",
"ts-jest": "^29.1.1",
"@types/jest": "^29.5.5",
"typescript": "^5.8.3"
},
"dependencies": {
"@hcengineering/platform": "^0.6.11",
"@hcengineering/home": "^0.6.0"
}
}
@@ -1,21 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { makeLocalesTest } from '@hcengineering/platform'
it(
'Locales are equal',
makeLocalesTest((lang) => import(`../../lang/${lang}.json`))
)
-25
View File
@@ -1,25 +0,0 @@
//
// Copyright © 2025 Hardcore Engineering Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { loadMetadata } from '@hcengineering/platform'
import home from '@hcengineering/home'
const icons = require('../assets/icons.svg') as string // eslint-disable-line
loadMetadata(home.icon, {
Home: `${icons}#home`,
Person: `${icons}#person`,
Thread: `${icons}#thread`,
All: `${icons}#all`
})
-13
View File
@@ -1,13 +0,0 @@
{
"extends": "./node_modules/@hcengineering/platform-rig/profiles/assets/tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./lib",
"declarationDir": "./types",
"types": ["node", "jest"],
"tsBuildInfoFile": ".build/build.tsbuildinfo"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "lib", "dist", "types", "bundle"]
}
-4
View File
@@ -1,4 +0,0 @@
module.exports = {
extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'],
parserOptions: { tsconfigRootDir: __dirname }
}
-22
View File
@@ -1,22 +0,0 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"trailingComma": "none",
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"printWidth": 120,
"useTabs": false,
"bracketSpacing": true,
"proseWrap": "preserve",
"plugins": [
"prettier-plugin-svelte"
],
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}
-5
View File
@@ -1,5 +0,0 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
"rigPackageName": "@hcengineering/platform-rig",
"rigProfile": "ui"
}
-5
View File
@@ -1,5 +0,0 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)']
}

Some files were not shown because too many files have changed in this diff Show More