TSK-342: add resume issue function (#2332)

Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
This commit is contained in:
Kristina 2022-11-01 19:46:26 +04:00 committed by GitHub
parent 15c2aa802b
commit 6ff12b512f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 259 additions and 62 deletions

View File

@ -505,7 +505,6 @@ dependencies:
'@rushstack/heft': 0.47.9
'@rushstack/heft-jest-plugin': 0.3.16_e810491d602256cb9138da3f42d797a2
'@tiptap/core': 2.0.0-beta.199
'@tiptap/extension-collaboration': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-highlight': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-link': 2.0.0-beta.199_@tiptap+core@2.0.0-beta.199
'@tiptap/extension-mention': 2.0.0-beta.199_c8f353cb3abc70247a8f6c56ebb87d62
@ -10421,7 +10420,7 @@ packages:
dev: false
file:projects/document-assets.tgz_typescript@4.7.4:
resolution: {integrity: sha512-DSCCmp2suHeZbLomhRH+oXwLQXam3K+orclEQE2M/CfdH3TmbvYM7pASvJYv32JizZga6wGKZBIIfRcHrLqg3A==, tarball: file:projects/document-assets.tgz}
resolution: {integrity: sha512-/+ssgzhbPCYlH2DobfN1hcA4T9VnzNxE3XwYUjkZ0GqVWiatBIeL1BKbS49J5RVC92Xk/5v3UVH19vTRbe9pnw==, tarball: file:projects/document-assets.tgz}
id: file:projects/document-assets.tgz
name: '@rush-temp/document-assets'
version: 0.0.0
@ -10443,7 +10442,7 @@ packages:
dev: false
file:projects/document-resources.tgz_1e3963ebf0ceeb25b2fa6a1cc87e253c:
resolution: {integrity: sha512-5fH7z8TCp8fg05YGOEdt38c/ci9TL+KxqUzFuCTR/o3ceT/6qp47VeQs377fDG3EFRE7tNSmddwuulZesv3KUQ==, tarball: file:projects/document-resources.tgz}
resolution: {integrity: sha512-yaUH4bE6hVbA/9j1P3MMatssBuPFPwLc77vu3si3cEpH/kbYAhaMIOSIY/HmQaCmz4Ra/g0bmTZc46rAFd2Ucg==, tarball: file:projects/document-resources.tgz}
id: file:projects/document-resources.tgz
name: '@rush-temp/document-resources'
version: 0.0.0
@ -10487,17 +10486,14 @@ packages:
- postcss
- postcss-load-config
- prosemirror-model
- prosemirror-view
- pug
- stylus
- sugarss
- supports-color
- y-protocols
- yjs
dev: false
file:projects/document.tgz:
resolution: {integrity: sha512-nUd5p00qfAysV9wwQI2d/jk/7jdIn3BJAFSKIUGtVGOqfLEskemEslAWJFj4D6ybDgEX4PHtien5mIJhniNXrA==, tarball: file:projects/document.tgz}
resolution: {integrity: sha512-dSonnzPXeRFBw3syhUZ1vww+kTji5JbSAfOMAQPc9boQ0kFLqBkI10urMYZuKMB56yBQv7LVgrEPvTv3PlJbRQ==, tarball: file:projects/document.tgz}
name: '@rush-temp/document'
version: 0.0.0
dependencies:
@ -11338,7 +11334,7 @@ packages:
dev: false
file:projects/model-document.tgz_typescript@4.7.4:
resolution: {integrity: sha512-XE1hw6ASQ+GFmPJHVuDVR9bsU40cop33YwlTn7Hbr2gNk3egb08MK9+/peV8WIu73cgBwCBCyBGnVWffYpCMww==, tarball: file:projects/model-document.tgz}
resolution: {integrity: sha512-y0mamO7eJht2vz3iQKQVPb2Pki4DlfN+5G3yDfsR/Gr2VOrsXb9pMqTOsqX6fYzwOs+mbfuGYpC5tbYUkRDGBg==, tarball: file:projects/model-document.tgz}
id: file:projects/model-document.tgz
name: '@rush-temp/model-document'
version: 0.0.0
@ -11589,7 +11585,7 @@ packages:
dev: false
file:projects/model-server-chunter.tgz_typescript@4.7.4:
resolution: {integrity: sha512-6oc9uJ6KfSuQEk1Bj9Gfa0PBjEPPMBPf3sc4nMCS4Fm3zGhFUSlIMEPNqMfrSwyhKRJUbDR7rK/grys+zAUlNg==, tarball: file:projects/model-server-chunter.tgz}
resolution: {integrity: sha512-kL6zzJhagTNhJvpA5GlnV6tyvVMCkJd2mtLdEUBRcGLZYhT/1KXj0i1aUKqE528mzQyf3G6zl07TgI3Kk5sbJw==, tarball: file:projects/model-server-chunter.tgz}
id: file:projects/model-server-chunter.tgz
name: '@rush-temp/model-server-chunter'
version: 0.0.0
@ -11610,7 +11606,7 @@ packages:
dev: false
file:projects/model-server-contact.tgz_typescript@4.7.4:
resolution: {integrity: sha512-xEcfGc4nib2CGmlbIdWvoEDgau/HjCoztlaKpuzJceKxNeq80gZDZrIRSN120+CF3PSGEDnjEMILrfFgEBXRrQ==, tarball: file:projects/model-server-contact.tgz}
resolution: {integrity: sha512-6QNDTBWECy4mOEZ9bTvu2q1BOo4v2grAQsJ5bMUFLbagTc6AtPd7YBhHwsgHWyAj+16wlWD3VEWtKa1jJq2rTA==, tarball: file:projects/model-server-contact.tgz}
id: file:projects/model-server-contact.tgz
name: '@rush-temp/model-server-contact'
version: 0.0.0
@ -11694,7 +11690,7 @@ packages:
dev: false
file:projects/model-server-inventory.tgz_typescript@4.7.4:
resolution: {integrity: sha512-XtV5UtbkXWhD5Gx2rTjDbV/w90TrsBhlXgP595CA6chzOlfGZFV1Rc4/kvTGZE+QEn4qQ4TogHghHEYqXrfA3Q==, tarball: file:projects/model-server-inventory.tgz}
resolution: {integrity: sha512-QlyDUsjEnXbkvG09wXn1kOwedeNC7MguZPF1oDNwkWgOr4s28pJhZvSROLMKBQdlcz9Acom12DsCJB7Idg/Rnw==, tarball: file:projects/model-server-inventory.tgz}
id: file:projects/model-server-inventory.tgz
name: '@rush-temp/model-server-inventory'
version: 0.0.0
@ -11715,7 +11711,7 @@ packages:
dev: false
file:projects/model-server-lead.tgz_typescript@4.7.4:
resolution: {integrity: sha512-UdM8JzT/+am/SUlYKXFGViYmY0jA0LWOhez6R3cAR6QGaMktHkV9UEWWX+8E5YF3OsC3h/5CK14tKY3x2I9tPA==, tarball: file:projects/model-server-lead.tgz}
resolution: {integrity: sha512-8vNWx9Q/DuspMV7vKsoaRTrGttExV5TOtxPjWNd5inuZnZ5X+WkNohYoqm6vDxVmd1JwopEyYnsp/XKycsFdJQ==, tarball: file:projects/model-server-lead.tgz}
id: file:projects/model-server-lead.tgz
name: '@rush-temp/model-server-lead'
version: 0.0.0
@ -11736,7 +11732,7 @@ packages:
dev: false
file:projects/model-server-notification.tgz_typescript@4.7.4:
resolution: {integrity: sha512-RIE42SBMJl06PEACp9yheoQjYXnXXf/GROVT3kptNZ19VtZDNUor4YHx23IEZnbpfYZpek+UXLxb4XojHig7Yg==, tarball: file:projects/model-server-notification.tgz}
resolution: {integrity: sha512-v3GKCPbzOZyX1YYSkwfu6GwpgstM+ICqCdoerVotJWlGzds2pJE/rLUzvGNpBV8u5Zp4bIfBeinK4aie9M9ZdQ==, tarball: file:projects/model-server-notification.tgz}
id: file:projects/model-server-notification.tgz
name: '@rush-temp/model-server-notification'
version: 0.0.0
@ -11757,7 +11753,7 @@ packages:
dev: false
file:projects/model-server-recruit.tgz_typescript@4.7.4:
resolution: {integrity: sha512-brN4kuVUUnv0xW/2hEGTsNI0XDxBOrhvj75wSEZNWXaya3HRfhyvCN8tvhEJdksjGQirYL9lgQB9J75u1xQOCA==, tarball: file:projects/model-server-recruit.tgz}
resolution: {integrity: sha512-3zrt5dEUEipEeEOwd4K9OG+lm5yQCz+11p+tJYZgMvyLVUD7qBzgmpdPpicNtUlEL6D76qfIrCRzOWkYMXBZ0w==, tarball: file:projects/model-server-recruit.tgz}
id: file:projects/model-server-recruit.tgz
name: '@rush-temp/model-server-recruit'
version: 0.0.0
@ -11820,7 +11816,7 @@ packages:
dev: false
file:projects/model-server-task.tgz_typescript@4.7.4:
resolution: {integrity: sha512-WGD5QtT51wfsSaYJw7wOBnTBHkhrTRaG3luiQq5ohHJY3m4fRn019GahT9KrMVQccBfiELWarr3AxbhDNdwRqQ==, tarball: file:projects/model-server-task.tgz}
resolution: {integrity: sha512-r/y0pdlMMgo997p+gyuaFCosCpR6lKfcGSZdDmgXzB7bsZDdiLqIqee1RV5ImH3lHr0s0uLy/7OgT0NP9eAgMg==, tarball: file:projects/model-server-task.tgz}
id: file:projects/model-server-task.tgz
name: '@rush-temp/model-server-task'
version: 0.0.0
@ -11862,7 +11858,7 @@ packages:
dev: false
file:projects/model-server-tracker.tgz_typescript@4.7.4:
resolution: {integrity: sha512-5VGeNRdOM83eHjbSxrwO+bo/PH/nmYbQf1l8naYXj3o8vGHd4s3SqbrhaINlojue9XbQxPz2NuEWxEQMLtPXww==, tarball: file:projects/model-server-tracker.tgz}
resolution: {integrity: sha512-Vi0WE+9FXgr7OLaq2ejSLg31/XfNFTZJCagOgxzdAtVgOq50YYgBaGMo2g35FyCM3zYwRUEFMb4HJbzSw4F4zQ==, tarball: file:projects/model-server-tracker.tgz}
id: file:projects/model-server-tracker.tgz
name: '@rush-temp/model-server-tracker'
version: 0.0.0
@ -12173,7 +12169,7 @@ packages:
dev: false
file:projects/notification.tgz_c2126e1e62b304aa06c549d8c36fb75a:
resolution: {integrity: sha512-4OWmWS16hdbQk6FzTPVFOe2FRCx4kD/qjFaV/K1wdPHfvdNNu9JxKMoWFYfzEl4XHqLMzWjG4pPdNpCGnPt9nA==, tarball: file:projects/notification.tgz}
resolution: {integrity: sha512-6D/e5O+ZJX/KMpWXq25JGY+YV4uDnqgBuqbyt40e5SacOT8mLTKuAVgnXdxaE4s616XJybeC61bV9Ju9RO2rHg==, tarball: file:projects/notification.tgz}
id: file:projects/notification.tgz
name: '@rush-temp/notification'
version: 0.0.0
@ -12440,7 +12436,7 @@ packages:
dev: false
file:projects/prod.tgz_8b34f51e833a67e51e5bff1df3e73cc8:
resolution: {integrity: sha512-etRwbwi4cuI47S5WX6zDIO5+uI1O1le5xM/RwNXkXUPkH1eHgkw+bq5aYoJIieSdcO2BBQLMCRJFIyUHRXYanA==, tarball: file:projects/prod.tgz}
resolution: {integrity: sha512-cdk+S+EwhXHF5UCIzS9UfPc5qUGXg3qsbQNCFvX0SK5BeNFO1oSRARIZS+Gewo0dCUdZA5SM9HGRYZGoYou2Gg==, tarball: file:projects/prod.tgz}
id: file:projects/prod.tgz
name: '@rush-temp/prod'
version: 0.0.0
@ -12737,7 +12733,7 @@ packages:
dev: false
file:projects/server-chunter.tgz:
resolution: {integrity: sha512-qDmZJ+4TtdP+OwmR1QDTpfoj4IdNWacuIW1fiaSThVC6w91PXY9tov2nM+ionIMvZfX+YngIc29okIHX+tH0ig==, tarball: file:projects/server-chunter.tgz}
resolution: {integrity: sha512-ioG+h/i98StD0EDKp1g5INCsL9JzXlj9KjGjz0JWst9xKUTJCckH0tISmFC+sjBc9yjlFK6a8ZvpMxGPiQigQA==, tarball: file:projects/server-chunter.tgz}
name: '@rush-temp/server-chunter'
version: 0.0.0
dependencies:
@ -12778,7 +12774,7 @@ packages:
dev: false
file:projects/server-contact.tgz:
resolution: {integrity: sha512-xp0SKLGegKEvtdMYa+YLNiCfjPOzzgnK8hIoNCnWsRUN6ZQZwKnYRXknLWrut6Rp9oH8ERMaz8tCh5ucrAeVNw==, tarball: file:projects/server-contact.tgz}
resolution: {integrity: sha512-0KmQPwTH+9wpRvPSK2DSkE/CL+7fp+AAeyuM8YtZ4odO0OvQuY9enHw27LulR1hnZ+5DtnVZMFAnSu16EGudNw==, tarball: file:projects/server-contact.tgz}
name: '@rush-temp/server-contact'
version: 0.0.0
dependencies:
@ -12904,7 +12900,7 @@ packages:
dev: false
file:projects/server-inventory-resources.tgz:
resolution: {integrity: sha512-iPRmwbX5owntmO8SEn/bm6flMloPtJjV2eNBo/LbOCdruwxrfJF7f8sgdWrnw7XS1wmYBaeoEDZ0+/iBeaQYgQ==, tarball: file:projects/server-inventory-resources.tgz}
resolution: {integrity: sha512-RkxqtFVGpGwKleluThIiRmabmMHGzvp4GAGK1zp0snGMSQZpdaLgKz3p8ahWMRPrRsh6cmx8WSPH3GTcm1YfhQ==, tarball: file:projects/server-inventory-resources.tgz}
name: '@rush-temp/server-inventory-resources'
version: 0.0.0
dependencies:
@ -12924,7 +12920,7 @@ packages:
dev: false
file:projects/server-inventory.tgz:
resolution: {integrity: sha512-P402gyczrLwr9YRFE0j6uDM2c/Bsb2yW5+HH93M2WFnepVtcrsvaH0Ztu1eYjU/Twq9TH0aUvNElz3wuBT7SGw==, tarball: file:projects/server-inventory.tgz}
resolution: {integrity: sha512-vOG5EgBVkjxhSGZfK0WDDiXLsZI53aEvk84qqntGW0khlAaYbWwowPqFlEJGECpVYkc8PeAfWnPWJuePNiqPEg==, tarball: file:projects/server-inventory.tgz}
name: '@rush-temp/server-inventory'
version: 0.0.0
dependencies:
@ -12965,7 +12961,7 @@ packages:
dev: false
file:projects/server-lead.tgz:
resolution: {integrity: sha512-lZbhJ31ECiVM2bIAFgPQe9OoBQMaJZmd8gVeImD3tWDCWF3G1Bh/YFJtUma5UyDa+M4FckRC9jU5oQmy8BCepg==, tarball: file:projects/server-lead.tgz}
resolution: {integrity: sha512-J42yOMj+npooOrkTbkvih1U/15BWf2qKyRsozXTLlnGDImMZfopj51zzj5305RF+t5H+iHj9u8a1BUpW0qbE7Q==, tarball: file:projects/server-lead.tgz}
name: '@rush-temp/server-lead'
version: 0.0.0
dependencies:
@ -12986,7 +12982,7 @@ packages:
dev: false
file:projects/server-notification-resources.tgz:
resolution: {integrity: sha512-GixVocFb5NUM3gEVz5P8d4aRdAsz6fVe1/TOllBXXkKmKqUAKvu0C0Imo9pPbKbfPApU6qy7XdYra2S31wTfkw==, tarball: file:projects/server-notification-resources.tgz}
resolution: {integrity: sha512-4dXvWVK9GBGugtECHffRw2mVqpKZKqW994Hk2W3z5nz+hHNaGuf+sXUsM3gcNw18K62LknEVlcRHxArVzlKs0w==, tarball: file:projects/server-notification-resources.tgz}
name: '@rush-temp/server-notification-resources'
version: 0.0.0
dependencies:
@ -13006,7 +13002,7 @@ packages:
dev: false
file:projects/server-notification.tgz:
resolution: {integrity: sha512-3/2lHcxQDVDN/LIZMIVnmYUf3wUR8qIgGeWBVtCMD4pxNfoynZkeLKn17TYh7VaYcBNyMpxv1Rbd47gIDzcaow==, tarball: file:projects/server-notification.tgz}
resolution: {integrity: sha512-pOt8+HaCCCHUrU7bxPXv/5zqw/DOigcnhzMoif6T9tXu41ZGuLmQhGbgFjr/frybEPVyB3Dggm4XpOWbo1GlHw==, tarball: file:projects/server-notification.tgz}
name: '@rush-temp/server-notification'
version: 0.0.0
dependencies:
@ -13068,7 +13064,7 @@ packages:
dev: false
file:projects/server-recruit.tgz:
resolution: {integrity: sha512-YCDGAzvWIILM7qBzjVDH8bPHiP7JcCLUaTfjO9qgq16MEbJZ7zMNzkDXSP/6ogWiZ7HuoPQR0bhEl4PhY1+UVw==, tarball: file:projects/server-recruit.tgz}
resolution: {integrity: sha512-GFln23Q73rPv5D0vtj0MtjxRZeGTTO2TRA9mt+GDf7eeiLt9eJL/nr+NwB+vANX4eYd9MN5G7FRkIofDGR/ERQ==, tarball: file:projects/server-recruit.tgz}
name: '@rush-temp/server-recruit'
version: 0.0.0
dependencies:
@ -13171,7 +13167,7 @@ packages:
dev: false
file:projects/server-task-resources.tgz:
resolution: {integrity: sha512-s7FZ5LANSWtBl3G//pGpWPCl3nqA7A2ms8URXDSZv+Ah6Ah+1Tvz5/dPwxUWUxVDax0lJOteKmlUW7L38PKImQ==, tarball: file:projects/server-task-resources.tgz}
resolution: {integrity: sha512-PwTmdU/sE/90LZRfscbt9e/09I7BHJuL9lhccwvM8COQ6Lsia0bEfDMfz3vpr9CAQ1nkYUapQ22ILXvIHxepMw==, tarball: file:projects/server-task-resources.tgz}
name: '@rush-temp/server-task-resources'
version: 0.0.0
dependencies:
@ -13191,7 +13187,7 @@ packages:
dev: false
file:projects/server-task.tgz:
resolution: {integrity: sha512-W3EOD5EoQguAoK/X7TWD7ng/HlKhNh22MxHjZvBqb7lALtihmLdOKNebJx+f7T6XiwcpDxYHE+89Ls+lMhI5tg==, tarball: file:projects/server-task.tgz}
resolution: {integrity: sha512-waoG13xX+XG71YtJl96nnIEIq9kQuZ1i6PEWanQvKWgpKq/mStqDOdh7DuQWtVoe4ynzdnYj3N0v9K6cBrXmrw==, tarball: file:projects/server-task.tgz}
name: '@rush-temp/server-task'
version: 0.0.0
dependencies:
@ -13304,7 +13300,7 @@ packages:
dev: false
file:projects/server-tracker-resources.tgz:
resolution: {integrity: sha512-IWaRrwr4A1jPb0SytsR2vU5bxRl4DfmXstRe9ar2DQoJfuwW6TgjFqyN6FaRhYJHU1GKV7pAZ21hl2S6yrErSA==, tarball: file:projects/server-tracker-resources.tgz}
resolution: {integrity: sha512-8FIUHIHFrouIhqI/swi/cm/pDztRh2o/d1An7n+LRDLXTIdO14mBdYDjbROxcFKOdvm7uArzgrmmnBG2QSXxeA==, tarball: file:projects/server-tracker-resources.tgz}
name: '@rush-temp/server-tracker-resources'
version: 0.0.0
dependencies:
@ -13324,7 +13320,7 @@ packages:
dev: false
file:projects/server-tracker.tgz:
resolution: {integrity: sha512-Ro1hdAHcGfbgAhuZk2O0cwgeOSd4Pybi4NAfL8DCbdLIfY7t9rostPCvuQTGKideevnhIwPTiUboFjFzLlJEtg==, tarball: file:projects/server-tracker.tgz}
resolution: {integrity: sha512-idWxpdapPYQlwzzdPRO0pk9nL13AGV/thu9+dhxpfh+PBfK+rhiqA2VS0Rcw9N8qrB/uXDV3fY9YlezmuHhvYw==, tarball: file:projects/server-tracker.tgz}
name: '@rush-temp/server-tracker'
version: 0.0.0
dependencies:
@ -13370,7 +13366,7 @@ packages:
dev: false
file:projects/server.tgz:
resolution: {integrity: sha512-9+VmSjM3Vz/zPtyifD3Q6sQ7s6epmj3dKeZYC2A0yxqsMijWcfGPEjQ/TFtlmojuEAat3wedTxq6thLadJUipQ==, tarball: file:projects/server.tgz}
resolution: {integrity: sha512-ajCNjYZxCUy6St/XT0wLzxQz+zhufwhoMmuxxLL1if0P/SFgSoq03UlaVPHmT9wIhqL0zqdBZNZkTFV308psyw==, tarball: file:projects/server.tgz}
name: '@rush-temp/server'
version: 0.0.0
dependencies:
@ -13891,7 +13887,7 @@ packages:
dev: false
file:projects/tool.tgz:
resolution: {integrity: sha512-gKJGrHLL9EM6d3nB7LE7+gTT923r+H+M3cfQ0I/My+oiyGdlUwRJ0AdJ7wx1wSVSWj3CBJwJHMtGtHWiznVGTQ==, tarball: file:projects/tool.tgz}
resolution: {integrity: sha512-lIhO/G6dieGJ431ay4TIf6EWT+cQnaVHG0xfBhf8mA1ogwQjFbkFVAO3Pe5dZHZTidyLMG0hde/KltWdCVBAow==, tarball: file:projects/tool.tgz}
name: '@rush-temp/tool'
version: 0.0.0
dependencies:
@ -13960,7 +13956,7 @@ packages:
dev: false
file:projects/tracker-resources.tgz_1e3963ebf0ceeb25b2fa6a1cc87e253c:
resolution: {integrity: sha512-hXCPQ9gyeYv9Acc51D0DYPbdIpo5t84OSNP0k+c4WysIZ5nEUGIaIQ/QfZPAcY9TbVTypdkIHoqpEkyn/LdtSA==, tarball: file:projects/tracker-resources.tgz}
resolution: {integrity: sha512-wEQUsRsgW+6I1g3zrI7aZbQ0LAZ6Dhi+mjggtVLvwjjG9eydCgdYwGeBYuuxE5gDVt0+MrnIJ67IiN2cAjPFLw==, tarball: file:projects/tracker-resources.tgz}
id: file:projects/tracker-resources.tgz
name: '@rush-temp/tracker-resources'
version: 0.0.0
@ -13973,6 +13969,7 @@ packages:
eslint-plugin-node: 11.1.0_eslint@8.19.0
eslint-plugin-promise: 6.0.0_eslint@8.19.0
eslint-plugin-svelte3: 4.0.0_eslint@8.19.0+svelte@3.48.0
fast-equals: 2.0.4
prettier: 2.7.1
prettier-plugin-svelte: 2.7.0_prettier@2.7.1+svelte@3.48.0
sass: 1.53.0

View File

@ -1,14 +1,14 @@
<!--
// Copyright © 2020 Anticrm Platform Contributors.
//
//
// 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.
-->
@ -113,7 +113,8 @@
<span class="overflow-label disabled pointer-events-none" class:ml-2={loading}>
<Label {label} params={labelParams} />
</span>
{:else if $$slots.content}
{/if}
{#if $$slots.content}
<slot name="content" />
{/if}
</button>

View File

@ -1,15 +1,15 @@
<!--
// Copyright © 2020, 2021 Anticrm Platform Contributors.
// Copyright © 2021 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.
-->
@ -87,6 +87,17 @@
}
}
const handleOutsideClick = (): void => {
if (componentInstance && componentInstance.onOutsideClick) {
componentInstance.onOutsideClick()
}
}
const handleOverlayClick = (): void => {
handleOutsideClick()
escapeClose()
}
onMount(() => fitPopup())
$: if ($deviceInfo.docWidth <= 900 && !docSize) docSize = true
$: if ($deviceInfo.docWidth > 900 && docSize) docSize = false
@ -135,7 +146,7 @@
class="modal-overlay"
class:antiOverlay={options.showOverlay}
style={`z-index: ${zIndex};`}
on:click={() => escapeClose()}
on:click={handleOverlayClick}
on:keydown|stopPropagation|preventDefault={() => {}}
/>
{/if}

View File

@ -42,6 +42,7 @@
"CreateTeam": "Create team",
"AddIssue": "Add Issue",
"NewIssue": "New issue",
"ResumeDraft": "Resume draft",
"SaveIssue": "Save issue",
"SetPriority": "Set priority\u2026",
"SetStatus": "Set status\u2026",

View File

@ -42,6 +42,7 @@
"CreateTeam": "Создать команду",
"AddIssue": "Добавить задачу",
"NewIssue": "Новая задача",
"ResumeDraft": "Восстановить черновик",
"SaveIssue": "Сохранить задачу",
"SetPriority": "Установить приоритет\u2026",
"SetStatus": "Установить статус\u2026",

View File

@ -31,6 +31,7 @@
},
"dependencies": {
"svelte": "^3.47",
"fast-equals": "^2.0.3",
"@hcengineering/platform": "^0.6.7",
"@hcengineering/core": "^0.6.17",
"@hcengineering/client": "^0.6.3",

View File

@ -13,16 +13,27 @@
// limitations under the License.
-->
<script lang="ts">
import { deepEqual } from 'fast-equals'
import { AttachmentStyledBox } from '@hcengineering/attachment-resources'
import chunter from '@hcengineering/chunter'
import { Employee } from '@hcengineering/contact'
import core, { Account, AttachedData, Doc, generateId, Ref, SortingOrder, WithLookup } from '@hcengineering/core'
import core, {
Account,
AttachedData,
Data,
Doc,
generateId,
Ref,
SortingOrder,
WithLookup
} from '@hcengineering/core'
import { getResource, translate } from '@hcengineering/platform'
import { Card, createQuery, getClient, KeyedAttribute, MessageBox, SpaceSelector } from '@hcengineering/presentation'
import tags, { TagElement, TagReference } from '@hcengineering/tags'
import {
calcRank,
Issue,
IssueDraft,
IssuePriority,
IssueStatus,
IssueTemplate,
@ -41,6 +52,7 @@
IconMoreH,
Label,
Menu,
setMetadataLocalStorage,
showPopup,
Spinner,
NotificationPosition,
@ -63,6 +75,7 @@
import SetParentIssueActionPopup from './SetParentIssueActionPopup.svelte'
import SprintSelector from './sprints/SprintSelector.svelte'
import IssueTemplateChilds from './templates/IssueTemplateChilds.svelte'
import attachment from '@hcengineering/attachment-resources/src/plugin'
import IssueNotification from './issues/IssueNotification.svelte'
export let space: Ref<Team>
@ -72,13 +85,15 @@
export let project: Ref<Project> | null = $activeProject ?? null
export let sprint: Ref<Sprint> | null = $activeSprint ?? null
export let relatedTo: Doc | undefined
let issueStatuses: WithLookup<IssueStatus>[] | undefined
export let shouldSaveDraft: boolean = false
export let draft: IssueDraft | null
export let parentIssue: Issue | undefined
export let originalIssue: Issue | undefined
let labels: TagReference[] = []
export let onDraftChanged: (draft: Data<IssueDraft>) => void
let objectId: Ref<Issue> = generateId()
let issueStatuses: WithLookup<IssueStatus>[] | undefined
let labels: TagReference[] = draft?.labels || []
let objectId: Ref<Issue> = draft?.issueId || generateId()
let object: AttachedData<Issue> = originalIssue
? {
@ -107,7 +122,8 @@
reportedTime: 0,
estimation: 0,
reports: 0,
childInfo: []
childInfo: [],
...(draft || {})
}
function resetObject (): void {
@ -135,12 +151,12 @@
subIssues = []
}
let templateId: Ref<IssueTemplate> | undefined = undefined
let templateId: Ref<IssueTemplate> | undefined = draft?.template?.template
let template: IssueTemplate | undefined = undefined
const templateQuery = createQuery()
let subIssues: IssueTemplateChild[] = []
let subIssues: IssueTemplateChild[] = draft?.subIssues || []
$: if (templateId !== undefined) {
templateQuery.query(tracker.class.IssueTemplate, { _id: templateId }, (res) => {
@ -166,6 +182,7 @@
color: tag.color
}
}
async function updateObject (template: IssueTemplate): Promise<void> {
if (object.template?.template === template._id) {
return
@ -185,11 +202,13 @@
const tagElements = await client.findAll(tags.class.TagElement, { _id: { $in: labels_ } })
labels = tagElements.map(tagAsRef)
}
function updateTemplate (template?: IssueTemplate): void {
if (template !== undefined) {
updateObject(template)
}
}
$: updateTemplate(template)
const dispatch = createEventDispatcher()
@ -203,8 +222,8 @@
attr: client.getHierarchy().getAttribute(tracker.class.Issue, 'labels')
}
$: _space = space
$: !originalIssue && updateIssueStatusId(_space, status)
$: _space = draft?.team || space
$: !originalIssue && !draft && updateIssueStatusId(_space, status)
$: canSave = getTitle(object.title ?? '').length > 0
$: statusesQuery.query(
@ -235,7 +254,17 @@
labels = await client.findAll(tags.class.TagReference, { attachedTo: _id })
}
}
async function setPropsFromDraft () {
if (!draft?.parentIssue) {
return
}
parentIssue = await client.findOne(tracker.class.Issue, { _id: draft.parentIssue })
}
$: originalIssue && setPropsFromOriginalIssue()
$: draft && setPropsFromDraft()
async function updateIssueStatusId (teamId: Ref<Team>, issueStatusId?: Ref<IssueStatus>) {
if (issueStatusId !== undefined) {
@ -258,8 +287,84 @@
return value.trim()
}
async function isDraftEmpty (draft: Data<IssueDraft>): Promise<boolean> {
const emptyDraft = {
assignee: null,
description: '',
dueDate: null,
estimation: 0,
labels: [],
parentIssue: undefined,
priority: 0,
project: null,
sprint: null,
subIssues: [],
template: undefined,
team: null,
title: ''
}
for (const key of Object.keys(emptyDraft)) {
if (!deepEqual(emptyDraft[key], draft[key])) {
return false
}
}
const attachmentResult = await client.findOne(attachment.class.Attachment, { attachedTo: objectId })
if (attachmentResult) {
return false
}
const team = await client.findOne(tracker.class.Team, { _id: _space })
if (team?.defaultIssueStatus) {
return draft.status === team.defaultIssueStatus
}
return status === ''
}
export function canClose (): boolean {
return !canSave
return true
}
export async function onOutsideClick () {
if (!shouldSaveDraft) {
return
}
await descriptionBox?.createAttachments()
const newDraft: Data<IssueDraft> = {
issueId: objectId,
title: getTitle(object.title),
description: object.description,
assignee: object.assignee,
project: object.project,
sprint: object.sprint,
status: object.status,
priority: object.priority,
dueDate: object.dueDate,
estimation: object.estimation,
template: object.template,
labels,
parentIssue: parentIssue?._id,
team: _space,
subIssues
}
const isEmpty = await isDraftEmpty(newDraft)
if (isEmpty) {
return
}
setMetadataLocalStorage(tracker.metadata.CreateIssueDraft, newDraft)
if (onDraftChanged) {
return onDraftChanged(newDraft)
}
}
async function createIssue () {

View File

@ -1,21 +1,22 @@
<!--
// Copyright © 2022 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 { Ref, Space } from '@hcengineering/core'
import { Data, Ref, Space } from '@hcengineering/core'
import { getClient } from '@hcengineering/presentation'
import { Button, showPopup } from '@hcengineering/ui'
import { IssueDraft } from '@hcengineering/tracker'
import { Button, fetchMetadataLocalStorage, setMetadataLocalStorage, showPopup } from '@hcengineering/ui'
import tracker from '../plugin'
import CreateIssue from './CreateIssue.svelte'
@ -26,6 +27,12 @@
let space: Ref<Space> | undefined
$: updateSpace(currentSpace)
let issueDraft: Data<IssueDraft> | null = fetchMetadataLocalStorage(tracker.metadata.CreateIssueDraft)
const handleDraftChanged = (draft: Data<IssueDraft>) => {
issueDraft = draft
}
async function updateSpace (spaceId: Ref<Space> | undefined): Promise<void> {
if (spaceId !== undefined) {
space = spaceId
@ -41,7 +48,15 @@
const team = await client.findOne(tracker.class.Team, {})
space = team?._id
}
showPopup(CreateIssue, { space }, 'top')
showPopup(
CreateIssue,
{ space, shouldSaveDraft: true, draft: issueDraft, onDraftChanged: handleDraftChanged },
'top'
)
setMetadataLocalStorage(tracker.metadata.CreateIssueDraft, null)
issueDraft = null
}
</script>
@ -49,11 +64,30 @@
<div class="flex-grow text-md">
<Button
icon={tracker.icon.NewIssue}
label={tracker.string.NewIssue}
label={issueDraft ? tracker.string.ResumeDraft : tracker.string.NewIssue}
justify={'left'}
width={'100%'}
on:click={newIssue}
/>
>
<div slot="content" class="draft-circle-container">
{#if issueDraft}
<div class="draft-circle" />
{/if}
</div>
</Button>
</div>
<Button icon={tracker.icon.Magnifier} on:click={async () => {}} />
</div>
<style lang="scss">
.draft-circle-container {
margin-left: auto;
}
.draft-circle {
height: 6px;
width: 6px;
background-color: var(--primary-bg-color);
border-radius: 50%;
}
</style>

View File

@ -13,10 +13,11 @@
// limitations under the License.
//
import { Client, Doc, Ref } from '@hcengineering/core'
import type { IntlString, Resource } from '@hcengineering/platform'
import type { IntlString, Metadata, Resource } from '@hcengineering/platform'
import { mergeIds } from '@hcengineering/platform'
import { AnyComponent } from '@hcengineering/ui'
import tracker, { trackerId } from '../../tracker/lib'
import { IssueDraft } from '@hcengineering/tracker'
export default mergeIds(trackerId, tracker, {
string: {
@ -61,6 +62,7 @@ export default mergeIds(trackerId, tracker, {
CreateTeam: '' as IntlString,
AddIssue: '' as IntlString,
NewIssue: '' as IntlString,
ResumeDraft: '' as IntlString,
NewSubIssue: '' as IntlString,
Team: '' as IntlString,
SelectIssue: '' as IntlString,
@ -302,6 +304,9 @@ export default mergeIds(trackerId, tracker, {
IssueTemplates: '' as AnyComponent,
IssueTemplatePresenter: '' as AnyComponent
},
metadata: {
CreateIssueDraft: '' as Metadata<IssueDraft>
},
function: {
IssueTitleProvider: '' as Resource<(client: Client, ref: Ref<Doc>) => Promise<string>>,
GetIssueId: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<string>>,

View File

@ -14,12 +14,24 @@
//
import { Employee } from '@hcengineering/contact'
import type { AttachedDoc, Class, Doc, Markup, Ref, RelatedDocument, Space, Timestamp, Type } from '@hcengineering/core'
import type {
AttachedDoc,
Class,
Doc,
Markup,
Obj,
Ref,
RelatedDocument,
Space,
Timestamp,
Type
} from '@hcengineering/core'
import type { Asset, IntlString, Plugin, Resource } from '@hcengineering/platform'
import { plugin } from '@hcengineering/platform'
import type { TagCategory, TagElement } from '@hcengineering/tags'
import { AnyComponent, Location } from '@hcengineering/ui'
import { Action, ActionCategory } from '@hcengineering/view'
import { TagReference } from '@hcengineering/tags'
/**
* @public
@ -181,6 +193,34 @@ export interface Issue extends AttachedDoc {
}
}
/**
* @public
*/
export interface IssueDraft extends Obj {
issueId: Ref<Issue>
title: string
description: Markup
status: Ref<IssueStatus>
priority: IssuePriority
assignee: Ref<Employee> | null
project: Ref<Project> | null
team: Ref<Team> | null
dueDate: Timestamp | null
sprint?: Ref<Sprint> | null
// Estimation in man days
estimation: number
parentIssue?: string
labels?: TagReference[]
subIssues?: IssueTemplateChild[]
template?: {
// A template issue is based on
template: Ref<IssueTemplate>
// Child id in template
childId?: string
}
}
/**
* @public
*/
@ -325,6 +365,7 @@ export default plugin(trackerId, {
class: {
Team: '' as Ref<Class<Team>>,
Issue: '' as Ref<Class<Issue>>,
IssueDraft: '' as Ref<Class<IssueDraft>>,
IssueTemplate: '' as Ref<Class<IssueTemplate>>,
Document: '' as Ref<Class<Document>>,
Project: '' as Ref<Class<Project>>,