@topconsultnpm/sdkui-react 6.17.0-test9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assets/IconsS4t/add.svg +12 -0
- package/lib/assets/IconsS4t/aggiorna.svg +18 -0
- package/lib/assets/IconsS4t/bookmark.svg +42 -0
- package/lib/assets/IconsS4t/cancella.svg +15 -0
- package/lib/assets/IconsS4t/check-box.svg +19 -0
- package/lib/assets/IconsS4t/down-arrow-signBook.svg +40 -0
- package/lib/assets/IconsS4t/down.svg +28 -0
- package/lib/assets/IconsS4t/edit-file.svg +19 -0
- package/lib/assets/IconsS4t/edita.svg +32 -0
- package/lib/assets/IconsS4t/firma.svg +19 -0
- package/lib/assets/IconsS4t/icona_download.svg +16 -0
- package/lib/assets/IconsS4t/info.svg +51 -0
- package/lib/assets/IconsS4t/left.svg +20 -0
- package/lib/assets/IconsS4t/line.svg +40 -0
- package/lib/assets/IconsS4t/more.svg +19 -0
- package/lib/assets/IconsS4t/new-signature.svg +1 -0
- package/lib/assets/IconsS4t/plus.svg +23 -0
- package/lib/assets/IconsS4t/printer.svg +49 -0
- package/lib/assets/IconsS4t/radio-on-button.svg +25 -0
- package/lib/assets/IconsS4t/rectangle.svg +41 -0
- package/lib/assets/IconsS4t/redo.svg +19 -0
- package/lib/assets/IconsS4t/right-arrow-signBook-finish.svg +40 -0
- package/lib/assets/IconsS4t/right-arrow-signBook.svg +40 -0
- package/lib/assets/IconsS4t/right.svg +22 -0
- package/lib/assets/IconsS4t/searchbar.svg +21 -0
- package/lib/assets/IconsS4t/text-box.svg +36 -0
- package/lib/assets/IconsS4t/tick.svg +8 -0
- package/lib/assets/IconsS4t/trash-white.svg +11 -0
- package/lib/assets/IconsS4t/trash.svg +1 -0
- package/lib/assets/IconsS4t/undo.svg +19 -0
- package/lib/assets/IconsS4t/up.svg +32 -0
- package/lib/assets/IconsS4t/video-streaming.svg +2 -0
- package/lib/assets/IconsS4t/zoom-in.svg +58 -0
- package/lib/assets/IconsS4t/zoom-out.svg +56 -0
- package/lib/assets/ImageLibrary/arrow_001.png +0 -0
- package/lib/assets/ImageLibrary/arrow_002.png +0 -0
- package/lib/assets/ImageLibrary/arrow_003.png +0 -0
- package/lib/assets/ImageLibrary/arrow_004.png +0 -0
- package/lib/assets/ImageLibrary/arrow_005.png +0 -0
- package/lib/assets/ImageLibrary/arrow_006.png +0 -0
- package/lib/assets/ImageLibrary/arrow_007.png +0 -0
- package/lib/assets/ImageLibrary/arrow_008.png +0 -0
- package/lib/assets/ImageLibrary/arrow_009.png +0 -0
- package/lib/assets/ImageLibrary/arrow_010.png +0 -0
- package/lib/assets/ImageLibrary/arrow_011.png +0 -0
- package/lib/assets/ImageLibrary/arrow_012.png +0 -0
- package/lib/assets/ImageLibrary/book_001.png +0 -0
- package/lib/assets/ImageLibrary/book_002.png +0 -0
- package/lib/assets/ImageLibrary/book_003.png +0 -0
- package/lib/assets/ImageLibrary/book_004.png +0 -0
- package/lib/assets/ImageLibrary/book_005.png +0 -0
- package/lib/assets/ImageLibrary/book_006.png +0 -0
- package/lib/assets/ImageLibrary/book_007.png +0 -0
- package/lib/assets/ImageLibrary/clock_001.png +0 -0
- package/lib/assets/ImageLibrary/clock_002.png +0 -0
- package/lib/assets/ImageLibrary/clock_003.png +0 -0
- package/lib/assets/ImageLibrary/cube_001.png +0 -0
- package/lib/assets/ImageLibrary/cube_002.png +0 -0
- package/lib/assets/ImageLibrary/cube_003.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_001.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_002.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_003.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_004.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_005.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_006.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_007.png +0 -0
- package/lib/assets/ImageLibrary/dcmt_008.png +0 -0
- package/lib/assets/ImageLibrary/emoticon_001.png +0 -0
- package/lib/assets/ImageLibrary/emoticon_002.png +0 -0
- package/lib/assets/ImageLibrary/emoticon_003.png +0 -0
- package/lib/assets/ImageLibrary/emoticon_004.png +0 -0
- package/lib/assets/ImageLibrary/fld_001.png +0 -0
- package/lib/assets/ImageLibrary/fld_002.png +0 -0
- package/lib/assets/ImageLibrary/fld_003.png +0 -0
- package/lib/assets/ImageLibrary/fld_004.png +0 -0
- package/lib/assets/ImageLibrary/fld_005.png +0 -0
- package/lib/assets/ImageLibrary/fld_006.png +0 -0
- package/lib/assets/ImageLibrary/fld_007.png +0 -0
- package/lib/assets/ImageLibrary/fld_008.png +0 -0
- package/lib/assets/ImageLibrary/fld_009.png +0 -0
- package/lib/assets/ImageLibrary/fld_010.png +0 -0
- package/lib/assets/ImageLibrary/fld_011.png +0 -0
- package/lib/assets/ImageLibrary/fld_012.png +0 -0
- package/lib/assets/ImageLibrary/fld_013.png +0 -0
- package/lib/assets/ImageLibrary/fld_014.png +0 -0
- package/lib/assets/ImageLibrary/fld_015.png +0 -0
- package/lib/assets/ImageLibrary/fld_016.png +0 -0
- package/lib/assets/ImageLibrary/fld_017.png +0 -0
- package/lib/assets/ImageLibrary/fld_018.png +0 -0
- package/lib/assets/ImageLibrary/fld_019.png +0 -0
- package/lib/assets/ImageLibrary/fld_020.png +0 -0
- package/lib/assets/ImageLibrary/fld_021.png +0 -0
- package/lib/assets/ImageLibrary/fld_022.png +0 -0
- package/lib/assets/ImageLibrary/fld_023.png +0 -0
- package/lib/assets/ImageLibrary/fld_024.png +0 -0
- package/lib/assets/ImageLibrary/fld_025.png +0 -0
- package/lib/assets/ImageLibrary/fld_026.png +0 -0
- package/lib/assets/ImageLibrary/fld_027.png +0 -0
- package/lib/assets/ImageLibrary/fld_028.png +0 -0
- package/lib/assets/ImageLibrary/fld_029.png +0 -0
- package/lib/assets/ImageLibrary/fld_030.png +0 -0
- package/lib/assets/ImageLibrary/fld_031.png +0 -0
- package/lib/assets/ImageLibrary/fld_032.png +0 -0
- package/lib/assets/ImageLibrary/fld_033.png +0 -0
- package/lib/assets/ImageLibrary/gen_001.png +0 -0
- package/lib/assets/ImageLibrary/gen_002.png +0 -0
- package/lib/assets/ImageLibrary/gen_003.png +0 -0
- package/lib/assets/ImageLibrary/gen_004.png +0 -0
- package/lib/assets/ImageLibrary/gen_005.png +0 -0
- package/lib/assets/ImageLibrary/gen_006.png +0 -0
- package/lib/assets/ImageLibrary/gen_007.png +0 -0
- package/lib/assets/ImageLibrary/gen_008.png +0 -0
- package/lib/assets/ImageLibrary/gen_009.png +0 -0
- package/lib/assets/ImageLibrary/gen_010.png +0 -0
- package/lib/assets/ImageLibrary/gen_011.png +0 -0
- package/lib/assets/ImageLibrary/gen_012.png +0 -0
- package/lib/assets/ImageLibrary/gen_013.png +0 -0
- package/lib/assets/ImageLibrary/gen_014.png +0 -0
- package/lib/assets/ImageLibrary/gen_015.png +0 -0
- package/lib/assets/ImageLibrary/gen_016.png +0 -0
- package/lib/assets/ImageLibrary/gen_017.png +0 -0
- package/lib/assets/ImageLibrary/gen_018.png +0 -0
- package/lib/assets/ImageLibrary/gen_019.png +0 -0
- package/lib/assets/ImageLibrary/gen_020.png +0 -0
- package/lib/assets/ImageLibrary/gen_021.png +0 -0
- package/lib/assets/ImageLibrary/gen_022.png +0 -0
- package/lib/assets/ImageLibrary/gen_023.png +0 -0
- package/lib/assets/ImageLibrary/gen_024.png +0 -0
- package/lib/assets/ImageLibrary/gen_025.png +0 -0
- package/lib/assets/ImageLibrary/gen_026.png +0 -0
- package/lib/assets/ImageLibrary/gen_027.png +0 -0
- package/lib/assets/ImageLibrary/gen_028.png +0 -0
- package/lib/assets/ImageLibrary/gen_029.png +0 -0
- package/lib/assets/ImageLibrary/gen_030.png +0 -0
- package/lib/assets/ImageLibrary/gen_031.png +0 -0
- package/lib/assets/ImageLibrary/gen_032.png +0 -0
- package/lib/assets/ImageLibrary/gen_033.png +0 -0
- package/lib/assets/ImageLibrary/gen_034.png +0 -0
- package/lib/assets/ImageLibrary/gen_035.png +0 -0
- package/lib/assets/ImageLibrary/gen_036.png +0 -0
- package/lib/assets/ImageLibrary/gen_037.png +0 -0
- package/lib/assets/ImageLibrary/gen_038.png +0 -0
- package/lib/assets/ImageLibrary/gen_039.png +0 -0
- package/lib/assets/ImageLibrary/gen_040.png +0 -0
- package/lib/assets/ImageLibrary/gen_041.png +0 -0
- package/lib/assets/ImageLibrary/gen_042.png +0 -0
- package/lib/assets/ImageLibrary/gen_043.png +0 -0
- package/lib/assets/ImageLibrary/gen_044.png +0 -0
- package/lib/assets/ImageLibrary/gen_045.png +0 -0
- package/lib/assets/ImageLibrary/gen_046.png +0 -0
- package/lib/assets/ImageLibrary/gen_047.png +0 -0
- package/lib/assets/ImageLibrary/gen_048.png +0 -0
- package/lib/assets/ImageLibrary/gen_049.png +0 -0
- package/lib/assets/ImageLibrary/gen_050.png +0 -0
- package/lib/assets/ImageLibrary/gen_051.png +0 -0
- package/lib/assets/ImageLibrary/gen_052.png +0 -0
- package/lib/assets/ImageLibrary/hand_001.png +0 -0
- package/lib/assets/ImageLibrary/hand_002.png +0 -0
- package/lib/assets/ImageLibrary/hand_003.png +0 -0
- package/lib/assets/ImageLibrary/hand_004.png +0 -0
- package/lib/assets/ImageLibrary/hand_005.png +0 -0
- package/lib/assets/ImageLibrary/hand_006.png +0 -0
- package/lib/assets/ImageLibrary/law_001.png +0 -0
- package/lib/assets/ImageLibrary/law_002.png +0 -0
- package/lib/assets/ImageLibrary/law_003.png +0 -0
- package/lib/assets/ImageLibrary/lock_001.png +0 -0
- package/lib/assets/ImageLibrary/lock_002.png +0 -0
- package/lib/assets/ImageLibrary/lock_003.png +0 -0
- package/lib/assets/ImageLibrary/mail_001.png +0 -0
- package/lib/assets/ImageLibrary/mail_002.png +0 -0
- package/lib/assets/ImageLibrary/mail_003.png +0 -0
- package/lib/assets/ImageLibrary/mail_004.png +0 -0
- package/lib/assets/ImageLibrary/mail_005.png +0 -0
- package/lib/assets/ImageLibrary/mail_006.png +0 -0
- package/lib/assets/ImageLibrary/mail_007.png +0 -0
- package/lib/assets/ImageLibrary/mail_008.png +0 -0
- package/lib/assets/ImageLibrary/mail_009.png +0 -0
- package/lib/assets/ImageLibrary/mail_010.png +0 -0
- package/lib/assets/ImageLibrary/mail_011.png +0 -0
- package/lib/assets/ImageLibrary/mail_012.png +0 -0
- package/lib/assets/ImageLibrary/mail_013.png +0 -0
- package/lib/assets/ImageLibrary/mail_014.png +0 -0
- package/lib/assets/ImageLibrary/mail_015.png +0 -0
- package/lib/assets/ImageLibrary/net_001.png +0 -0
- package/lib/assets/ImageLibrary/net_002.png +0 -0
- package/lib/assets/ImageLibrary/net_003.png +0 -0
- package/lib/assets/ImageLibrary/net_004.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_001.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_002.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_003.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_004.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_005.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_006.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_007.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_008.png +0 -0
- package/lib/assets/ImageLibrary/nmbr_009.png +0 -0
- package/lib/assets/ImageLibrary/note_001.png +0 -0
- package/lib/assets/ImageLibrary/note_002.png +0 -0
- package/lib/assets/ImageLibrary/note_003.png +0 -0
- package/lib/assets/ImageLibrary/note_004.png +0 -0
- package/lib/assets/ImageLibrary/note_005.png +0 -0
- package/lib/assets/ImageLibrary/note_006.png +0 -0
- package/lib/assets/ImageLibrary/note_007.png +0 -0
- package/lib/assets/ImageLibrary/note_008.png +0 -0
- package/lib/assets/ImageLibrary/note_009.png +0 -0
- package/lib/assets/ImageLibrary/note_010.png +0 -0
- package/lib/assets/ImageLibrary/note_011.png +0 -0
- package/lib/assets/ImageLibrary/note_012.png +0 -0
- package/lib/assets/ImageLibrary/note_013.png +0 -0
- package/lib/assets/ImageLibrary/note_014.png +0 -0
- package/lib/assets/ImageLibrary/note_015.png +0 -0
- package/lib/assets/ImageLibrary/note_016.png +0 -0
- package/lib/assets/ImageLibrary/run_001.png +0 -0
- package/lib/assets/ImageLibrary/run_002.png +0 -0
- package/lib/assets/ImageLibrary/run_003.png +0 -0
- package/lib/assets/ImageLibrary/sem_001.png +0 -0
- package/lib/assets/ImageLibrary/sem_002.png +0 -0
- package/lib/assets/ImageLibrary/sem_003.png +0 -0
- package/lib/assets/ImageLibrary/sem_004.png +0 -0
- package/lib/assets/ImageLibrary/sem_005.png +0 -0
- package/lib/assets/ImageLibrary/star_001.png +0 -0
- package/lib/assets/ImageLibrary/star_002.png +0 -0
- package/lib/assets/ImageLibrary/star_003.png +0 -0
- package/lib/assets/ImageLibrary/star_004.png +0 -0
- package/lib/assets/ImageLibrary/star_005.png +0 -0
- package/lib/assets/ImageLibrary/star_006.png +0 -0
- package/lib/assets/ImageLibrary/state_001.png +0 -0
- package/lib/assets/ImageLibrary/state_002.png +0 -0
- package/lib/assets/ImageLibrary/state_003.png +0 -0
- package/lib/assets/ImageLibrary/state_004.png +0 -0
- package/lib/assets/ImageLibrary/state_005.png +0 -0
- package/lib/assets/ImageLibrary/study_001.png +0 -0
- package/lib/assets/ImageLibrary/study_002.png +0 -0
- package/lib/assets/ImageLibrary/user_001.png +0 -0
- package/lib/assets/ImageLibrary/user_002.png +0 -0
- package/lib/assets/ImageLibrary/user_003.png +0 -0
- package/lib/assets/ImageLibrary/user_004.png +0 -0
- package/lib/assets/ImageLibrary/user_005.png +0 -0
- package/lib/assets/ImageLibrary/user_006.png +0 -0
- package/lib/assets/ImageLibrary/user_007.png +0 -0
- package/lib/assets/ImageLibrary/user_008.png +0 -0
- package/lib/assets/ImageLibrary/user_009.png +0 -0
- package/lib/assets/ImageLibrary/user_010.png +0 -0
- package/lib/assets/ImageLibrary/user_011.png +0 -0
- package/lib/assets/ImageLibrary/user_012.png +0 -0
- package/lib/assets/ImageLibrary/user_013.png +0 -0
- package/lib/assets/ImageLibrary/user_014.png +0 -0
- package/lib/assets/ImageLibrary/user_015.png +0 -0
- package/lib/assets/ImageLibrary/user_016.png +0 -0
- package/lib/assets/ImageLibrary/user_017.png +0 -0
- package/lib/assets/ImageLibrary/user_018.png +0 -0
- package/lib/assets/ImageLibrary/user_019.png +0 -0
- package/lib/assets/ImageLibrary/user_020.png +0 -0
- package/lib/assets/ImageLibrary/user_021.png +0 -0
- package/lib/assets/ImageLibrary/user_022.png +0 -0
- package/lib/assets/ImageLibrary/user_023.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_001.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_002.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_003.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_004.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_005.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_006.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_007.png +0 -0
- package/lib/assets/ImageLibrary/vehicle_008.png +0 -0
- package/lib/assets/Toppy-generico.png +0 -0
- package/lib/assets/france.svg +1 -0
- package/lib/assets/german.svg +1 -0
- package/lib/assets/icomoon.eot +0 -0
- package/lib/assets/icomoon.svg +97 -0
- package/lib/assets/icomoon.ttf +0 -0
- package/lib/assets/icomoon.woff +0 -0
- package/lib/assets/italy.svg +16 -0
- package/lib/assets/loading.png +0 -0
- package/lib/assets/login-bg.png +0 -0
- package/lib/assets/multipleSelectionManager.jpg +0 -0
- package/lib/assets/portugal.svg +1 -0
- package/lib/assets/six.png +0 -0
- package/lib/assets/six.svg +4 -0
- package/lib/assets/spain.svg +1 -0
- package/lib/assets/thumbnails/dicom.png +0 -0
- package/lib/assets/thumbnails/doc.png +0 -0
- package/lib/assets/thumbnails/docx.png +0 -0
- package/lib/assets/thumbnails/dwg.png +0 -0
- package/lib/assets/thumbnails/email.png +0 -0
- package/lib/assets/thumbnails/exe.png +0 -0
- package/lib/assets/thumbnails/folder.png +0 -0
- package/lib/assets/thumbnails/html.png +0 -0
- package/lib/assets/thumbnails/image.png +0 -0
- package/lib/assets/thumbnails/index.d.ts +19 -0
- package/lib/assets/thumbnails/index.js +19 -0
- package/lib/assets/thumbnails/index.ts +39 -0
- package/lib/assets/thumbnails/mp4.png +0 -0
- package/lib/assets/thumbnails/other.png +0 -0
- package/lib/assets/thumbnails/p7m.png +0 -0
- package/lib/assets/thumbnails/pdf.png +0 -0
- package/lib/assets/thumbnails/ppt.png +0 -0
- package/lib/assets/thumbnails/slddrw.png +0 -0
- package/lib/assets/thumbnails/txt.png +0 -0
- package/lib/assets/thumbnails/xls.png +0 -0
- package/lib/assets/thumbnails/xml.png +0 -0
- package/lib/assets/thumbnails/zip.png +0 -0
- package/lib/assets/topmedia-six.svg +66 -0
- package/lib/assets/topmeida-six-bianco.svg +66 -0
- package/lib/assets/united-kingdom.svg +1 -0
- package/lib/components/base/Styled.d.ts +63 -0
- package/lib/components/base/Styled.js +337 -0
- package/lib/components/base/TMAccordion.d.ts +12 -0
- package/lib/components/base/TMAccordion.js +62 -0
- package/lib/components/base/TMAlert.d.ts +73 -0
- package/lib/components/base/TMAlert.js +77 -0
- package/lib/components/base/TMAreaManager.d.ts +25 -0
- package/lib/components/base/TMAreaManager.js +733 -0
- package/lib/components/base/TMButton.d.ts +21 -0
- package/lib/components/base/TMButton.js +174 -0
- package/lib/components/base/TMClosableList.d.ts +10 -0
- package/lib/components/base/TMClosableList.js +70 -0
- package/lib/components/base/TMConfirm.d.ts +13 -0
- package/lib/components/base/TMConfirm.js +119 -0
- package/lib/components/base/TMContextMenu.d.ts +25 -0
- package/lib/components/base/TMContextMenu.js +109 -0
- package/lib/components/base/TMContextMenuOLD.d.ts +26 -0
- package/lib/components/base/TMContextMenuOLD.js +56 -0
- package/lib/components/base/TMCounterBar.d.ts +10 -0
- package/lib/components/base/TMCounterBar.js +43 -0
- package/lib/components/base/TMCounterContainer.d.ts +23 -0
- package/lib/components/base/TMCounterContainer.js +58 -0
- package/lib/components/base/TMCustomButton.d.ts +11 -0
- package/lib/components/base/TMCustomButton.js +116 -0
- package/lib/components/base/TMDataGrid.d.ts +56 -0
- package/lib/components/base/TMDataGrid.js +237 -0
- package/lib/components/base/TMDataGridExportForm.d.ts +15 -0
- package/lib/components/base/TMDataGridExportForm.js +215 -0
- package/lib/components/base/TMDeviceProvider.d.ts +15 -0
- package/lib/components/base/TMDeviceProvider.js +41 -0
- package/lib/components/base/TMDropDownMenu.d.ts +23 -0
- package/lib/components/base/TMDropDownMenu.js +45 -0
- package/lib/components/base/TMEditorBase.d.ts +39 -0
- package/lib/components/base/TMEditorBase.js +1 -0
- package/lib/components/base/TMFileManager.d.ts +45 -0
- package/lib/components/base/TMFileManager.js +233 -0
- package/lib/components/base/TMFileManagerDataGridView.d.ts +16 -0
- package/lib/components/base/TMFileManagerDataGridView.js +101 -0
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +18 -0
- package/lib/components/base/TMFileManagerThumbnailItems.js +148 -0
- package/lib/components/base/TMFileManagerThumbnailsView.d.ts +19 -0
- package/lib/components/base/TMFileManagerThumbnailsView.js +46 -0
- package/lib/components/base/TMFileManagerUtils.d.ts +78 -0
- package/lib/components/base/TMFileManagerUtils.js +207 -0
- package/lib/components/base/TMFloatingToolbar.d.ts +9 -0
- package/lib/components/base/TMFloatingToolbar.js +101 -0
- package/lib/components/base/TMLayout.d.ts +55 -0
- package/lib/components/base/TMLayout.js +201 -0
- package/lib/components/base/TMList.d.ts +9 -0
- package/lib/components/base/TMList.js +54 -0
- package/lib/components/base/TMListView.d.ts +42 -0
- package/lib/components/base/TMListView.js +387 -0
- package/lib/components/base/TMModal.d.ts +16 -0
- package/lib/components/base/TMModal.js +70 -0
- package/lib/components/base/TMPanel.d.ts +32 -0
- package/lib/components/base/TMPanel.js +181 -0
- package/lib/components/base/TMPopUp.d.ts +33 -0
- package/lib/components/base/TMPopUp.js +267 -0
- package/lib/components/base/TMProgressBar.d.ts +11 -0
- package/lib/components/base/TMProgressBar.js +32 -0
- package/lib/components/base/TMResizableMenu.d.ts +20 -0
- package/lib/components/base/TMResizableMenu.js +98 -0
- package/lib/components/base/TMRightSidebar.d.ts +19 -0
- package/lib/components/base/TMRightSidebar.js +80 -0
- package/lib/components/base/TMShowAllOrMaxItemsButton.d.ts +8 -0
- package/lib/components/base/TMShowAllOrMaxItemsButton.js +20 -0
- package/lib/components/base/TMSpinner.d.ts +14 -0
- package/lib/components/base/TMSpinner.js +160 -0
- package/lib/components/base/TMTab.d.ts +20 -0
- package/lib/components/base/TMTab.js +42 -0
- package/lib/components/base/TMToggleButton.d.ts +10 -0
- package/lib/components/base/TMToggleButton.js +58 -0
- package/lib/components/base/TMToolbarCard.d.ts +19 -0
- package/lib/components/base/TMToolbarCard.js +51 -0
- package/lib/components/base/TMTooltip.d.ts +14 -0
- package/lib/components/base/TMTooltip.js +20 -0
- package/lib/components/base/TMTreeView.d.ts +32 -0
- package/lib/components/base/TMTreeView.js +356 -0
- package/lib/components/base/TMUserAvatar.d.ts +8 -0
- package/lib/components/base/TMUserAvatar.js +34 -0
- package/lib/components/base/TMVilViewer.d.ts +5 -0
- package/lib/components/base/TMVilViewer.js +22 -0
- package/lib/components/base/TMWaitPanel.d.ts +32 -0
- package/lib/components/base/TMWaitPanel.js +44 -0
- package/lib/components/choosers/TMCultureIDPicker.d.ts +9 -0
- package/lib/components/choosers/TMCultureIDPicker.js +72 -0
- package/lib/components/choosers/TMDataListItemChooser.d.ts +17 -0
- package/lib/components/choosers/TMDataListItemChooser.js +49 -0
- package/lib/components/choosers/TMDataListItemPicker.d.ts +9 -0
- package/lib/components/choosers/TMDataListItemPicker.js +96 -0
- package/lib/components/choosers/TMDcmtTypeChooser.d.ts +25 -0
- package/lib/components/choosers/TMDcmtTypeChooser.js +61 -0
- package/lib/components/choosers/TMDiskChooser.d.ts +10 -0
- package/lib/components/choosers/TMDiskChooser.js +41 -0
- package/lib/components/choosers/TMDistinctValues.d.ts +21 -0
- package/lib/components/choosers/TMDistinctValues.js +140 -0
- package/lib/components/choosers/TMDynDataListItemChooser.d.ts +40 -0
- package/lib/components/choosers/TMDynDataListItemChooser.js +159 -0
- package/lib/components/choosers/TMGroupChooser.d.ts +7 -0
- package/lib/components/choosers/TMGroupChooser.js +37 -0
- package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +4 -0
- package/lib/components/choosers/TMInvoiceRetrieveFormats.js +22 -0
- package/lib/components/choosers/TMMetadataChooser.d.ts +54 -0
- package/lib/components/choosers/TMMetadataChooser.js +142 -0
- package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +4 -0
- package/lib/components/choosers/TMOrderRetrieveFormats.js +22 -0
- package/lib/components/choosers/TMPathChooser.d.ts +12 -0
- package/lib/components/choosers/TMPathChooser.js +147 -0
- package/lib/components/choosers/TMRelationChooser.d.ts +31 -0
- package/lib/components/choosers/TMRelationChooser.js +94 -0
- package/lib/components/choosers/TMUserChooser.d.ts +40 -0
- package/lib/components/choosers/TMUserChooser.js +141 -0
- package/lib/components/editors/TMCheckBox.d.ts +9 -0
- package/lib/components/editors/TMCheckBox.js +90 -0
- package/lib/components/editors/TMDateBox.d.ts +17 -0
- package/lib/components/editors/TMDateBox.js +75 -0
- package/lib/components/editors/TMDropDown.d.ts +10 -0
- package/lib/components/editors/TMDropDown.js +62 -0
- package/lib/components/editors/TMEditorStyled.d.ts +41 -0
- package/lib/components/editors/TMEditorStyled.js +90 -0
- package/lib/components/editors/TMFormulaEditor.d.ts +49 -0
- package/lib/components/editors/TMFormulaEditor.js +727 -0
- package/lib/components/editors/TMHtmlContentDisplay.d.ts +7 -0
- package/lib/components/editors/TMHtmlContentDisplay.js +78 -0
- package/lib/components/editors/TMHtmlEditor.d.ts +38 -0
- package/lib/components/editors/TMHtmlEditor.js +203 -0
- package/lib/components/editors/TMLocalizedTextBox.d.ts +19 -0
- package/lib/components/editors/TMLocalizedTextBox.js +125 -0
- package/lib/components/editors/TMMetadataEditor.d.ts +29 -0
- package/lib/components/editors/TMMetadataEditor.js +140 -0
- package/lib/components/editors/TMMetadataValues.d.ts +46 -0
- package/lib/components/editors/TMMetadataValues.js +530 -0
- package/lib/components/editors/TMRadioButton.d.ts +10 -0
- package/lib/components/editors/TMRadioButton.js +57 -0
- package/lib/components/editors/TMSummary.d.ts +20 -0
- package/lib/components/editors/TMSummary.js +92 -0
- package/lib/components/editors/TMTextArea.d.ts +17 -0
- package/lib/components/editors/TMTextArea.js +155 -0
- package/lib/components/editors/TMTextBox.d.ts +20 -0
- package/lib/components/editors/TMTextBox.js +249 -0
- package/lib/components/editors/TMTextExpression.d.ts +25 -0
- package/lib/components/editors/TMTextExpression.js +174 -0
- package/lib/components/editors/TMTreeDropDown.d.ts +18 -0
- package/lib/components/editors/TMTreeDropDown.js +66 -0
- package/lib/components/features/archive/TMArchive.d.ts +29 -0
- package/lib/components/features/archive/TMArchive.js +193 -0
- package/lib/components/features/assistant/ToppyHelpCenter.d.ts +12 -0
- package/lib/components/features/assistant/ToppyHelpCenter.js +173 -0
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +17 -0
- package/lib/components/features/blog/TMBlogCommentForm.js +333 -0
- package/lib/components/features/documents/TMBatchUpdateForm.d.ts +17 -0
- package/lib/components/features/documents/TMBatchUpdateForm.js +159 -0
- package/lib/components/features/documents/TMDcmtBlog.d.ts +23 -0
- package/lib/components/features/documents/TMDcmtBlog.js +65 -0
- package/lib/components/features/documents/TMDcmtForm.d.ts +64 -0
- package/lib/components/features/documents/TMDcmtForm.js +1245 -0
- package/lib/components/features/documents/TMDcmtIcon.d.ts +18 -0
- package/lib/components/features/documents/TMDcmtIcon.js +93 -0
- package/lib/components/features/documents/TMDcmtPreview.d.ts +31 -0
- package/lib/components/features/documents/TMDcmtPreview.js +446 -0
- package/lib/components/features/documents/TMDcmtTasks.d.ts +13 -0
- package/lib/components/features/documents/TMDcmtTasks.js +24 -0
- package/lib/components/features/documents/TMDragDropOverlay.d.ts +6 -0
- package/lib/components/features/documents/TMDragDropOverlay.js +97 -0
- package/lib/components/features/documents/TMFileUploader.d.ts +14 -0
- package/lib/components/features/documents/TMFileUploader.js +115 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +26 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +288 -0
- package/lib/components/features/documents/TMRelationViewer.d.ts +121 -0
- package/lib/components/features/documents/TMRelationViewer.js +753 -0
- package/lib/components/features/search/TMSavedQueryForm.d.ts +9 -0
- package/lib/components/features/search/TMSavedQueryForm.js +41 -0
- package/lib/components/features/search/TMSavedQuerySelector.d.ts +16 -0
- package/lib/components/features/search/TMSavedQuerySelector.js +226 -0
- package/lib/components/features/search/TMSearch.d.ts +40 -0
- package/lib/components/features/search/TMSearch.js +253 -0
- package/lib/components/features/search/TMSearchQueryEditor.d.ts +15 -0
- package/lib/components/features/search/TMSearchQueryEditor.js +367 -0
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +29 -0
- package/lib/components/features/search/TMSearchQueryPanel.js +438 -0
- package/lib/components/features/search/TMSearchResult.d.ts +53 -0
- package/lib/components/features/search/TMSearchResult.js +1092 -0
- package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +16 -0
- package/lib/components/features/search/TMSearchResultFloatingActionButton.js +50 -0
- package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +11 -0
- package/lib/components/features/search/TMSearchResultsMenuItems.js +725 -0
- package/lib/components/features/search/TMTreeSelector.d.ts +12 -0
- package/lib/components/features/search/TMTreeSelector.js +270 -0
- package/lib/components/features/tasks/TMTaskForm.d.ts +38 -0
- package/lib/components/features/tasks/TMTaskForm.js +387 -0
- package/lib/components/features/tasks/TMTasksAgenda.d.ts +17 -0
- package/lib/components/features/tasks/TMTasksAgenda.js +107 -0
- package/lib/components/features/tasks/TMTasksCalendar.d.ts +21 -0
- package/lib/components/features/tasks/TMTasksCalendar.js +240 -0
- package/lib/components/features/tasks/TMTasksHeader.d.ts +14 -0
- package/lib/components/features/tasks/TMTasksHeader.js +37 -0
- package/lib/components/features/tasks/TMTasksPanelContent.d.ts +20 -0
- package/lib/components/features/tasks/TMTasksPanelContent.js +65 -0
- package/lib/components/features/tasks/TMTasksUtils.d.ts +132 -0
- package/lib/components/features/tasks/TMTasksUtils.js +634 -0
- package/lib/components/features/tasks/TMTasksUtilsView.d.ts +39 -0
- package/lib/components/features/tasks/TMTasksUtilsView.js +140 -0
- package/lib/components/features/tasks/TMTasksView.d.ts +40 -0
- package/lib/components/features/tasks/TMTasksView.js +560 -0
- package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +39 -0
- package/lib/components/features/wg/TMWGsCopyMoveForm.js +439 -0
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +42 -0
- package/lib/components/features/workflow/TMWorkflowPopup.js +286 -0
- package/lib/components/features/workflow/diagram/ConnectionComponent.d.ts +14 -0
- package/lib/components/features/workflow/diagram/ConnectionComponent.js +90 -0
- package/lib/components/features/workflow/diagram/ConnectionForm.d.ts +9 -0
- package/lib/components/features/workflow/diagram/ConnectionForm.js +73 -0
- package/lib/components/features/workflow/diagram/DiagramItemComponent.d.ts +18 -0
- package/lib/components/features/workflow/diagram/DiagramItemComponent.js +264 -0
- package/lib/components/features/workflow/diagram/DiagramItemForm.d.ts +10 -0
- package/lib/components/features/workflow/diagram/DiagramItemForm.js +686 -0
- package/lib/components/features/workflow/diagram/DiagramItemSvgContent.d.ts +12 -0
- package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +97 -0
- package/lib/components/features/workflow/diagram/RecipientList.d.ts +27 -0
- package/lib/components/features/workflow/diagram/RecipientList.js +204 -0
- package/lib/components/features/workflow/diagram/WFDiagram.d.ts +9 -0
- package/lib/components/features/workflow/diagram/WFDiagram.js +1680 -0
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +18 -0
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.js +97 -0
- package/lib/components/features/workflow/diagram/interfaces.d.ts +126 -0
- package/lib/components/features/workflow/diagram/interfaces.js +26 -0
- package/lib/components/features/workflow/diagram/metadataParser.d.ts +14 -0
- package/lib/components/features/workflow/diagram/metadataParser.js +54 -0
- package/lib/components/features/workflow/diagram/queryDescriptorParser.d.ts +3 -0
- package/lib/components/features/workflow/diagram/queryDescriptorParser.js +188 -0
- package/lib/components/features/workflow/diagram/workflowHelpers.d.ts +122 -0
- package/lib/components/features/workflow/diagram/workflowHelpers.js +488 -0
- package/lib/components/features/workflow/diagram/xmlParser.d.ts +10 -0
- package/lib/components/features/workflow/diagram/xmlParser.js +490 -0
- package/lib/components/filesystem/ProgressBar.d.ts +7 -0
- package/lib/components/filesystem/ProgressBar.js +25 -0
- package/lib/components/forms/Login/ChangePassword.d.ts +9 -0
- package/lib/components/forms/Login/ChangePassword.js +22 -0
- package/lib/components/forms/Login/ChangePasswordInputs.d.ts +14 -0
- package/lib/components/forms/Login/ChangePasswordInputs.js +80 -0
- package/lib/components/forms/Login/Chooser.d.ts +28 -0
- package/lib/components/forms/Login/Chooser.js +145 -0
- package/lib/components/forms/Login/LOGINLocalizator.d.ts +29 -0
- package/lib/components/forms/Login/LOGINLocalizator.js +247 -0
- package/lib/components/forms/Login/LoginValidatorService.d.ts +50 -0
- package/lib/components/forms/Login/LoginValidatorService.js +162 -0
- package/lib/components/forms/Login/Menu.d.ts +10 -0
- package/lib/components/forms/Login/Menu.js +48 -0
- package/lib/components/forms/Login/OTPReader.d.ts +14 -0
- package/lib/components/forms/Login/OTPReader.js +90 -0
- package/lib/components/forms/Login/PasswordStrengthChecker.d.ts +7 -0
- package/lib/components/forms/Login/PasswordStrengthChecker.js +45 -0
- package/lib/components/forms/Login/RapidAccessLogin.d.ts +25 -0
- package/lib/components/forms/Login/RapidAccessLogin.js +310 -0
- package/lib/components/forms/Login/RecoverPasswordFlow.d.ts +11 -0
- package/lib/components/forms/Login/RecoverPasswordFlow.js +111 -0
- package/lib/components/forms/Login/SelectBox.d.ts +23 -0
- package/lib/components/forms/Login/SelectBox.js +96 -0
- package/lib/components/forms/Login/StepIndicator.d.ts +7 -0
- package/lib/components/forms/Login/StepIndicator.js +19 -0
- package/lib/components/forms/Login/TMLoginForm.d.ts +44 -0
- package/lib/components/forms/Login/TMLoginForm.js +737 -0
- package/lib/components/forms/Login/TextBox.d.ts +27 -0
- package/lib/components/forms/Login/TextBox.js +111 -0
- package/lib/components/forms/TMApplyForm.d.ts +4 -0
- package/lib/components/forms/TMApplyForm.js +105 -0
- package/lib/components/forms/TMChooserForm.d.ts +3 -0
- package/lib/components/forms/TMChooserForm.js +94 -0
- package/lib/components/forms/TMResultDialog.d.ts +20 -0
- package/lib/components/forms/TMResultDialog.js +44 -0
- package/lib/components/forms/TMSaveForm.d.ts +31 -0
- package/lib/components/forms/TMSaveForm.js +176 -0
- package/lib/components/grids/TMBlogAttachments.d.ts +42 -0
- package/lib/components/grids/TMBlogAttachments.js +43 -0
- package/lib/components/grids/TMBlogHeader.d.ts +31 -0
- package/lib/components/grids/TMBlogHeader.js +41 -0
- package/lib/components/grids/TMBlogsPost.d.ts +87 -0
- package/lib/components/grids/TMBlogsPost.js +644 -0
- package/lib/components/grids/TMBlogsPostUtils.d.ts +113 -0
- package/lib/components/grids/TMBlogsPostUtils.js +250 -0
- package/lib/components/grids/TMRecentsManager.d.ts +13 -0
- package/lib/components/grids/TMRecentsManager.js +155 -0
- package/lib/components/grids/TMValidationItemsList.d.ts +6 -0
- package/lib/components/grids/TMValidationItemsList.js +82 -0
- package/lib/components/index.d.ts +115 -0
- package/lib/components/index.js +137 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +10 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +215 -0
- package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +39 -0
- package/lib/components/layout/panelManager/TMPanelManagerContext.js +257 -0
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +11 -0
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +83 -0
- package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +21 -0
- package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.js +64 -0
- package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +8 -0
- package/lib/components/layout/panelManager/TMPanelWrapper.js +59 -0
- package/lib/components/layout/panelManager/types.d.ts +42 -0
- package/lib/components/layout/panelManager/types.js +1 -0
- package/lib/components/layout/panelManager/utils.d.ts +21 -0
- package/lib/components/layout/panelManager/utils.js +208 -0
- package/lib/components/pages/TMPage.d.ts +38 -0
- package/lib/components/pages/TMPage.js +220 -0
- package/lib/components/query/TMQueryEditor.d.ts +58 -0
- package/lib/components/query/TMQueryEditor.js +1001 -0
- package/lib/components/query/TMQuerySummary.d.ts +16 -0
- package/lib/components/query/TMQuerySummary.js +35 -0
- package/lib/components/settings/SettingsAppearance.d.ts +14 -0
- package/lib/components/settings/SettingsAppearance.js +73 -0
- package/lib/components/sidebar/TMAboutApp.d.ts +8 -0
- package/lib/components/sidebar/TMAboutApp.js +14 -0
- package/lib/components/sidebar/TMCommandsPanel.d.ts +16 -0
- package/lib/components/sidebar/TMCommandsPanel.js +27 -0
- package/lib/components/sidebar/TMHeader.d.ts +43 -0
- package/lib/components/sidebar/TMHeader.js +616 -0
- package/lib/components/sidebar/TMSidebar.d.ts +21 -0
- package/lib/components/sidebar/TMSidebar.js +61 -0
- package/lib/components/sidebar/TMSidebarItem.d.ts +15 -0
- package/lib/components/sidebar/TMSidebarItem.js +39 -0
- package/lib/components/viewers/TMDataListItemViewer.d.ts +10 -0
- package/lib/components/viewers/TMDataListItemViewer.js +80 -0
- package/lib/components/viewers/TMMidViewer.d.ts +36 -0
- package/lib/components/viewers/TMMidViewer.js +128 -0
- package/lib/components/viewers/TMTidViewer.d.ts +256 -0
- package/lib/components/viewers/TMTidViewer.js +343 -0
- package/lib/components/wizard/TMStepIndicator.d.ts +11 -0
- package/lib/components/wizard/TMStepIndicator.js +165 -0
- package/lib/components/wizard/TMWizard.d.ts +18 -0
- package/lib/components/wizard/TMWizard.js +93 -0
- package/lib/css/tm-sdkui.css +1 -0
- package/lib/helper/DeepCompareHelper.d.ts +7 -0
- package/lib/helper/DeepCompareHelper.js +106 -0
- package/lib/helper/Enum_Localizator.d.ts +18 -0
- package/lib/helper/Enum_Localizator.js +247 -0
- package/lib/helper/GlobalStyles.d.ts +2 -0
- package/lib/helper/GlobalStyles.js +10 -0
- package/lib/helper/Globalization.d.ts +15 -0
- package/lib/helper/Globalization.js +110 -0
- package/lib/helper/SDKUI_Globals.d.ts +96 -0
- package/lib/helper/SDKUI_Globals.js +174 -0
- package/lib/helper/SDKUI_Localizator.d.ts +738 -0
- package/lib/helper/SDKUI_Localizator.js +7288 -0
- package/lib/helper/TMCommandsContextMenu.d.ts +14 -0
- package/lib/helper/TMCommandsContextMenu.js +6 -0
- package/lib/helper/TMConditionalWrapper.d.ts +8 -0
- package/lib/helper/TMConditionalWrapper.js +4 -0
- package/lib/helper/TMCustomSearchBar.d.ts +8 -0
- package/lib/helper/TMCustomSearchBar.js +54 -0
- package/lib/helper/TMIcons.d.ts +274 -0
- package/lib/helper/TMIcons.js +673 -0
- package/lib/helper/TMImageLibrary.d.ts +4 -0
- package/lib/helper/TMImageLibrary.js +466 -0
- package/lib/helper/TMToppyMessage.d.ts +7 -0
- package/lib/helper/TMToppyMessage.js +42 -0
- package/lib/helper/TMUtils.d.ts +26 -0
- package/lib/helper/TMUtils.js +212 -0
- package/lib/helper/dcmtsHelper.d.ts +8 -0
- package/lib/helper/dcmtsHelper.js +49 -0
- package/lib/helper/helpers.d.ts +84 -0
- package/lib/helper/helpers.js +826 -0
- package/lib/helper/index.d.ts +13 -0
- package/lib/helper/index.js +13 -0
- package/lib/helper/queryHelper.d.ts +19 -0
- package/lib/helper/queryHelper.js +336 -0
- package/lib/hooks/useDcmtOperations.d.ts +24 -0
- package/lib/hooks/useDcmtOperations.js +482 -0
- package/lib/hooks/useForm.d.ts +24 -0
- package/lib/hooks/useForm.js +157 -0
- package/lib/hooks/useInputDialog.d.ts +9 -0
- package/lib/hooks/useInputDialog.js +105 -0
- package/lib/hooks/useOutsideClick.d.ts +2 -0
- package/lib/hooks/useOutsideClick.js +38 -0
- package/lib/hooks/usePreventFileDrop.d.ts +3 -0
- package/lib/hooks/usePreventFileDrop.js +37 -0
- package/lib/hooks/useQueryParametersDialog.d.ts +2 -0
- package/lib/hooks/useQueryParametersDialog.js +71 -0
- package/lib/hooks/useRelatedDocuments.d.ts +72 -0
- package/lib/hooks/useRelatedDocuments.js +655 -0
- package/lib/hooks/useResizeObserver.d.ts +4 -0
- package/lib/hooks/useResizeObserver.js +22 -0
- package/lib/hooks/useWorkflowApprove.d.ts +11 -0
- package/lib/hooks/useWorkflowApprove.js +57 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +15 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.js +1 -0
- package/lib/services/platform_services.d.ts +18 -0
- package/lib/services/platform_services.js +492 -0
- package/lib/ts/index.d.ts +1 -0
- package/lib/ts/index.js +1 -0
- package/lib/ts/types.d.ts +310 -0
- package/lib/ts/types.js +100 -0
- package/lib/utils/theme.d.ts +69 -0
- package/lib/utils/theme.js +81 -0
- package/package.json +54 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useState, useCallback, useMemo, useEffect, useRef } from 'react';
|
|
3
|
+
import { generatePanelHierarchyMap, hideParentRecursively, showParentRecursively, redistributeDimensionsOnHide, redistributeDimensionsOnShow, getToolbarStates } from './utils';
|
|
4
|
+
import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
|
5
|
+
// Create a React context for the panel state and actions
|
|
6
|
+
const TMPanelManagerContext = createContext(undefined);
|
|
7
|
+
export const TMPanelManagerProvider = (props) => {
|
|
8
|
+
const { children, panels, initialVisibility, defaultDimensions, initialDimensions, initialMobilePanelId, isPersistenceEnabled = false } = props;
|
|
9
|
+
// Get the current device type (e.g., mobile, tablet, desktop) using a custom hook
|
|
10
|
+
const deviceType = useDeviceType();
|
|
11
|
+
// This avoids unnecessary re-renders by only recalculating when deviceType changes
|
|
12
|
+
let isMobile = useMemo(() => { return deviceType === DeviceType.MOBILE; }, [deviceType]);
|
|
13
|
+
// Ref to persist the initial panel dimensions across renders without causing re-renders
|
|
14
|
+
const defaultPanelDimensionsRef = useRef(defaultDimensions);
|
|
15
|
+
// Memoize the panel hierarchy map to avoid re-generating it on every render unless `panels` change
|
|
16
|
+
const hierarchyMap = useMemo(() => generatePanelHierarchyMap(panels), [panels]);
|
|
17
|
+
// State to track the dimensions (width and height) of each panel, initialized with props
|
|
18
|
+
const [panelDimensions, setPanelDimensions] = useState(initialDimensions);
|
|
19
|
+
// IDs of maximized panels, including their parents if present
|
|
20
|
+
const [maximizedPanels, setMaximizedPanels] = useState([]);
|
|
21
|
+
// State to track the visibility of each panel, keyed by panel ID
|
|
22
|
+
const [panelVisibility, setPanelVisibility] = useState({});
|
|
23
|
+
// State to track visibility of toolbar buttons, keyed by panel ID
|
|
24
|
+
const [toolbarButtonsVisibility, setToolbarButtonsVisibility] = useState({});
|
|
25
|
+
// State to track disabled status of toolbar buttons, keyed by panel ID
|
|
26
|
+
const [toolbarButtonsDisabled, setToolbarButtonsDisabled] = useState({});
|
|
27
|
+
// State to track if a resizing operation is currently active (mouse drag on gutter)
|
|
28
|
+
const [isResizingActive, setIsResizingActive] = useState(false);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const { visibilityMap, disabledMap } = getToolbarStates(panels);
|
|
31
|
+
setToolbarButtonsVisibility(visibilityMap);
|
|
32
|
+
setToolbarButtonsDisabled(disabledMap);
|
|
33
|
+
}, []);
|
|
34
|
+
// Callback to update the visibility state of a specific panel and its related hierarchy
|
|
35
|
+
const adjustPanelVisibilityAndSize = useCallback((id, isVisible, prevVisibility) => {
|
|
36
|
+
// Clone previous visibility state to work with
|
|
37
|
+
let updatedVisibility = { ...prevVisibility };
|
|
38
|
+
if (isMobile) {
|
|
39
|
+
if (isVisible) {
|
|
40
|
+
// On mobile, showing one panel hides all others first
|
|
41
|
+
updatedVisibility = Object.keys(prevVisibility).reduce((acc, key) => { acc[key] = false; return acc; }, {});
|
|
42
|
+
// Recursively determine and show parent panels
|
|
43
|
+
const parentsToShow = showParentRecursively(id, hierarchyMap);
|
|
44
|
+
parentsToShow.forEach(([pid, visible]) => { updatedVisibility[pid] = visible; });
|
|
45
|
+
// Show the target panel
|
|
46
|
+
updatedVisibility[id] = true;
|
|
47
|
+
// Redistribute dimensions to account for newly shown panel
|
|
48
|
+
setPanelDimensions(prev => redistributeDimensionsOnShow(id, prev, defaultPanelDimensionsRef.current, hierarchyMap, updatedVisibility));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Hide the panel
|
|
52
|
+
updatedVisibility[id] = false;
|
|
53
|
+
// Recursively hide parents
|
|
54
|
+
const parentsToHide = hideParentRecursively(id, hierarchyMap, updatedVisibility);
|
|
55
|
+
parentsToHide.forEach(([pid, visible]) => { updatedVisibility[pid] = visible; });
|
|
56
|
+
4;
|
|
57
|
+
// Redistribute dimensions after hiding
|
|
58
|
+
setPanelDimensions(prev => redistributeDimensionsOnHide(id, prev, hierarchyMap, updatedVisibility));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (isVisible) {
|
|
63
|
+
// On desktop, show panel and its parents without hiding others
|
|
64
|
+
const parentsToShow = showParentRecursively(id, hierarchyMap);
|
|
65
|
+
parentsToShow.forEach(([pid, visible]) => { updatedVisibility[pid] = visible; });
|
|
66
|
+
// Show the panel
|
|
67
|
+
updatedVisibility[id] = true;
|
|
68
|
+
// Adjust panel dimensions accordingly
|
|
69
|
+
setPanelDimensions(prev => redistributeDimensionsOnShow(id, prev, defaultPanelDimensionsRef.current, hierarchyMap, updatedVisibility));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Hide the panel
|
|
73
|
+
updatedVisibility[id] = false;
|
|
74
|
+
// Recursively hide parent panels
|
|
75
|
+
const parentsToHide = hideParentRecursively(id, hierarchyMap, updatedVisibility);
|
|
76
|
+
parentsToHide.forEach(([pid, visible]) => { updatedVisibility[pid] = visible; });
|
|
77
|
+
// Adjust dimensions after hiding
|
|
78
|
+
setPanelDimensions(prev => redistributeDimensionsOnHide(id, prev, hierarchyMap, updatedVisibility));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return updatedVisibility;
|
|
82
|
+
}, [hierarchyMap, isMobile]);
|
|
83
|
+
// On initial mount: initialize panel visibility using the provided `initialVisibility` config
|
|
84
|
+
// Each panel's visibility is processed through `updatePanelVisibility` to ensure hierarchy logic is applied
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
if (isPersistenceEnabled) {
|
|
87
|
+
// If persistence is enabled, visibility and dimensions are already synced from persisted state, so just set them directly
|
|
88
|
+
setPanelVisibility(initialVisibility);
|
|
89
|
+
setPanelDimensions(initialDimensions);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// If persistence is not enabled, recalculate visibility and dimensions based on the initial visibility, applying the hierarchy logic
|
|
93
|
+
let updated = { ...initialVisibility };
|
|
94
|
+
Object.entries(initialVisibility).forEach(([id, isVisible]) => {
|
|
95
|
+
updated = adjustPanelVisibilityAndSize(id, isVisible, updated);
|
|
96
|
+
});
|
|
97
|
+
// Update panel visibility state with recalculated values
|
|
98
|
+
setPanelVisibility(updated);
|
|
99
|
+
}
|
|
100
|
+
}, []);
|
|
101
|
+
// On mobile devices: automatically show the initial mobile panel when layout switches to mobile
|
|
102
|
+
// This ensures the correct panel is visible by default on smaller screens
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (isMobile) {
|
|
105
|
+
setPanelVisibility(prev => {
|
|
106
|
+
return adjustPanelVisibilityAndSize(initialMobilePanelId, true, prev);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
let updated = { ...initialVisibility };
|
|
111
|
+
Object.entries(initialVisibility).forEach(([id, isVisible]) => {
|
|
112
|
+
updated = adjustPanelVisibilityAndSize(id, isVisible, updated);
|
|
113
|
+
});
|
|
114
|
+
setPanelVisibility(updated);
|
|
115
|
+
}
|
|
116
|
+
}, [isMobile]);
|
|
117
|
+
// Function to maximize a panel (and its parent panels)
|
|
118
|
+
const maximizePanel = useCallback((id) => {
|
|
119
|
+
// Get all parent panel IDs recursively for the given panel ID
|
|
120
|
+
const parents = showParentRecursively(id, hierarchyMap).map(([pid]) => pid);
|
|
121
|
+
// Combine parents and the current panel ID into one array to maximize
|
|
122
|
+
const toMaximize = [...parents, id];
|
|
123
|
+
// Update state to track which panels are maximized
|
|
124
|
+
setMaximizedPanels(toMaximize);
|
|
125
|
+
// Update panel dimensions accordingly
|
|
126
|
+
setPanelDimensions(prev => {
|
|
127
|
+
const newDimensions = {};
|
|
128
|
+
Object.keys(prev).forEach(pid => {
|
|
129
|
+
if (toMaximize.includes(pid)) {
|
|
130
|
+
// For maximized panels (target + parents), set width and height to 100%
|
|
131
|
+
newDimensions[pid] = { width: '100%', height: '100%' };
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// For all other panels, collapse by setting dimensions to 0%
|
|
135
|
+
newDimensions[pid] = { width: '0%', height: '0%' };
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return newDimensions;
|
|
139
|
+
});
|
|
140
|
+
}, [hierarchyMap]);
|
|
141
|
+
// Restore all panels to their original dimensions
|
|
142
|
+
const resetMaximization = useCallback(() => {
|
|
143
|
+
// Clear the list of maximized panels to exit maximize mode
|
|
144
|
+
setMaximizedPanels([]);
|
|
145
|
+
// Clone the current visibility state of panels
|
|
146
|
+
let updatedVisibility = { ...panelVisibility };
|
|
147
|
+
// Start with the initial panel dimensions as the base for restoration
|
|
148
|
+
let nextDimensions = { ...defaultPanelDimensionsRef.current };
|
|
149
|
+
nextDimensions = Object.entries(updatedVisibility).reduce((acc, [id, isVisible]) => {
|
|
150
|
+
if (isVisible) {
|
|
151
|
+
// If the panel is visible, adjust dimensions to show it properly
|
|
152
|
+
acc = redistributeDimensionsOnShow(id, acc, defaultPanelDimensionsRef.current, hierarchyMap, updatedVisibility);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
// If the panel is hidden, adjust dimensions to hide it
|
|
156
|
+
acc = redistributeDimensionsOnHide(id, acc, hierarchyMap, updatedVisibility);
|
|
157
|
+
}
|
|
158
|
+
return acc;
|
|
159
|
+
}, defaultPanelDimensionsRef.current);
|
|
160
|
+
// Apply the recalculated dimensions to the panel state
|
|
161
|
+
setPanelDimensions(nextDimensions);
|
|
162
|
+
}, [panelVisibility, hierarchyMap]);
|
|
163
|
+
// Toggle the maximized state of a panel by its ID
|
|
164
|
+
const toggleMaximize = useCallback((id) => {
|
|
165
|
+
if (maximizedPanels.includes(id)) {
|
|
166
|
+
// If already maximized, restore
|
|
167
|
+
resetMaximization();
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Otherwise, maximize the selected panel and its parents
|
|
171
|
+
maximizePanel(id);
|
|
172
|
+
}
|
|
173
|
+
}, [maximizedPanels, maximizePanel, resetMaximization]);
|
|
174
|
+
// Toggles the visibility of a panel by its I
|
|
175
|
+
const togglePanelVisibility = useCallback((id) => {
|
|
176
|
+
// Check if the panel to toggle is currently maximized
|
|
177
|
+
if (maximizedPanels.length > 0) {
|
|
178
|
+
// If it is maximized, first reset all maximized panels to their original state
|
|
179
|
+
resetMaximization();
|
|
180
|
+
// Then update the visibility of the panel, toggling its current state
|
|
181
|
+
setPanelVisibility(prev => {
|
|
182
|
+
const isCurrentlyVisible = prev[id];
|
|
183
|
+
return adjustPanelVisibilityAndSize(id, !isCurrentlyVisible, prev);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// If the panel is not maximized, simply toggle its visibility
|
|
188
|
+
setPanelVisibility(prev => {
|
|
189
|
+
const isCurrentlyVisible = prev[id];
|
|
190
|
+
return adjustPanelVisibilityAndSize(id, !isCurrentlyVisible, prev);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}, [maximizedPanels, resetMaximization, adjustPanelVisibilityAndSize]);
|
|
194
|
+
// Sets the visibility of a panel by its ID to a specific value (true = show, false = hide)
|
|
195
|
+
const setPanelVisibilityById = useCallback((id, isVisible) => {
|
|
196
|
+
// If we are trying to hide a panel that is currently maximized, first reset the maximization to restore normal view before hiding
|
|
197
|
+
if (maximizedPanels.length > 0) {
|
|
198
|
+
resetMaximization();
|
|
199
|
+
}
|
|
200
|
+
// Then update the visibility state of the panel to the given value
|
|
201
|
+
setPanelVisibility(prev => adjustPanelVisibilityAndSize(id, isVisible, prev));
|
|
202
|
+
}, [maximizedPanels, resetMaximization, adjustPanelVisibilityAndSize]);
|
|
203
|
+
// Sets the dimensions (width and height) of a specific panel by its ID
|
|
204
|
+
const setPanelDimensionsById = useCallback((id, width, height) => {
|
|
205
|
+
// Update the ref holding the initial dimensions
|
|
206
|
+
defaultPanelDimensionsRef.current = { ...defaultPanelDimensionsRef.current, [id]: { width, height } };
|
|
207
|
+
// Update the panel dimensions state
|
|
208
|
+
setPanelDimensions(prev => ({ ...prev, [id]: { width, height } }));
|
|
209
|
+
}, []);
|
|
210
|
+
// Checks if there is at least one panel currently visible
|
|
211
|
+
const hasVisiblePanels = useCallback(() => {
|
|
212
|
+
// Returns true if any value in the visibility map is `true`
|
|
213
|
+
return Object.values(panelVisibility).some(isVisible => isVisible);
|
|
214
|
+
}, [panelVisibility]);
|
|
215
|
+
// Callback to update the visibility of a toolbar button by panel ID
|
|
216
|
+
const setToolbarButtonVisibility = useCallback((id, isVisible) => {
|
|
217
|
+
setToolbarButtonsVisibility(prev => ({ ...prev, [id]: isVisible }));
|
|
218
|
+
}, []);
|
|
219
|
+
// Callback to update the disabled state of a toolbar button by panel ID
|
|
220
|
+
const setToolbarButtonDisabled = useCallback((id, isDisabled) => {
|
|
221
|
+
setToolbarButtonsDisabled(prev => ({ ...prev, [id]: isDisabled }));
|
|
222
|
+
}, []);
|
|
223
|
+
const updateIsResizingActive = useCallback((isActive) => {
|
|
224
|
+
setIsResizingActive(isActive);
|
|
225
|
+
}, []);
|
|
226
|
+
// Counts how many panels are currently visible and are not parent panels
|
|
227
|
+
const countVisibleLeafPanels = useCallback(() => {
|
|
228
|
+
// Get panel IDs that are leaf nodes (i.e., have no children)
|
|
229
|
+
const leafPanelIds = Array.from(hierarchyMap.entries()).filter(([_, info]) => info.childrenIds.length === 0).map(([id]) => id);
|
|
230
|
+
// Count how many of those are currently visible
|
|
231
|
+
return leafPanelIds.filter(id => panelVisibility[id]).length;
|
|
232
|
+
}, [hierarchyMap, panelVisibility]);
|
|
233
|
+
return (_jsx(TMPanelManagerContext.Provider, { value: {
|
|
234
|
+
panelVisibility,
|
|
235
|
+
panelDimensions,
|
|
236
|
+
togglePanelVisibility,
|
|
237
|
+
setPanelVisibilityById,
|
|
238
|
+
setPanelDimensionsById,
|
|
239
|
+
hasVisiblePanels,
|
|
240
|
+
maximizedPanels,
|
|
241
|
+
toggleMaximize,
|
|
242
|
+
toolbarButtonsVisibility,
|
|
243
|
+
toolbarButtonsDisabled,
|
|
244
|
+
setToolbarButtonVisibility,
|
|
245
|
+
setToolbarButtonDisabled,
|
|
246
|
+
isResizingActive,
|
|
247
|
+
updateIsResizingActive,
|
|
248
|
+
countVisibleLeafPanels
|
|
249
|
+
}, children: children }));
|
|
250
|
+
};
|
|
251
|
+
export const useTMPanelManagerContext = () => {
|
|
252
|
+
const context = useContext(TMPanelManagerContext);
|
|
253
|
+
if (context === undefined) {
|
|
254
|
+
throw new Error('useTMPanelManagerContext must be used within a TMPanelManagerProvider');
|
|
255
|
+
}
|
|
256
|
+
return context;
|
|
257
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TMPanelDefinition } from './types';
|
|
3
|
+
export declare const StyledToolbarButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
|
|
4
|
+
$isActive?: boolean;
|
|
5
|
+
$isDisabled?: boolean;
|
|
6
|
+
}>> & string;
|
|
7
|
+
interface TMPanelManagerToolbarProps {
|
|
8
|
+
panels: Array<TMPanelDefinition>;
|
|
9
|
+
}
|
|
10
|
+
declare const TMPanelManagerToolbar: (props: TMPanelManagerToolbarProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default TMPanelManagerToolbar;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import { useTMPanelManagerContext } from './TMPanelManagerContext';
|
|
5
|
+
import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
|
6
|
+
import { flattenPanels } from './utils';
|
|
7
|
+
import TMTooltip from '../../base/TMTooltip';
|
|
8
|
+
export const StyledToolbarButton = styled.button `
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
height: 32px;
|
|
13
|
+
width: 32px;
|
|
14
|
+
border: none;
|
|
15
|
+
border-radius: 8px;
|
|
16
|
+
font-size: 18px;
|
|
17
|
+
padding: 0px;
|
|
18
|
+
color: #fff;
|
|
19
|
+
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
20
|
+
cursor: ${({ $isDisabled }) => ($isDisabled ? 'not-allowed' : 'pointer')};
|
|
21
|
+
opacity: ${({ $isDisabled }) => ($isDisabled ? 0.6 : 1)};
|
|
22
|
+
background: ${({ $isActive }) => $isActive ? 'rgba(255,255,255,0.35)' : 'transparent'};
|
|
23
|
+
position: relative;
|
|
24
|
+
&:hover {
|
|
25
|
+
background: ${({ $isDisabled }) => !$isDisabled ? 'rgba(255,255,255,0.35)' : undefined};
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const Badge = styled.span `
|
|
29
|
+
position: absolute;
|
|
30
|
+
top: 2px;
|
|
31
|
+
right: 2px;
|
|
32
|
+
background: ${(props) => props.$background || "#ff5252"};
|
|
33
|
+
color: white;
|
|
34
|
+
font-size: 10px;
|
|
35
|
+
min-width: 14px;
|
|
36
|
+
height: 14px;
|
|
37
|
+
padding: 0 4px;
|
|
38
|
+
border-radius: 999px;
|
|
39
|
+
display: flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
line-height: 1;
|
|
43
|
+
`;
|
|
44
|
+
const TMPanelManagerToolbar = (props) => {
|
|
45
|
+
const { panels } = props;
|
|
46
|
+
const { togglePanelVisibility, countVisibleLeafPanels, panelVisibility, toolbarButtonsDisabled, toolbarButtonsVisibility } = useTMPanelManagerContext();
|
|
47
|
+
const deviceType = useDeviceType();
|
|
48
|
+
let isMobile = useMemo(() => { return deviceType === DeviceType.MOBILE; }, [deviceType]);
|
|
49
|
+
const [visibleLeafPanels, setVisibleLeafPanels] = useState([]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const visibleLeafPanelsSorted = flattenPanels(panels)
|
|
52
|
+
.filter(panel => toolbarButtonsVisibility[panel.id] && !panel.children?.length)
|
|
53
|
+
.sort((a, b) => (a.toolbarOptions?.orderNumber ?? 0) - (b.toolbarOptions?.orderNumber ?? 0));
|
|
54
|
+
setVisibleLeafPanels(visibleLeafPanelsSorted);
|
|
55
|
+
}, [toolbarButtonsVisibility, panels]);
|
|
56
|
+
const onClickCallback = (panelId, isActive) => {
|
|
57
|
+
if (isActive && countVisibleLeafPanels() <= 1) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
togglePanelVisibility(panelId);
|
|
61
|
+
};
|
|
62
|
+
const formatCount = (count) => {
|
|
63
|
+
if (count > 999)
|
|
64
|
+
return "999+";
|
|
65
|
+
return count.toString();
|
|
66
|
+
};
|
|
67
|
+
return (_jsx("div", { style: {
|
|
68
|
+
display: 'flex',
|
|
69
|
+
flexDirection: isMobile ? 'row' : 'column',
|
|
70
|
+
gap: '6px',
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
justifyContent: isMobile ? 'center' : 'flex-start',
|
|
73
|
+
width: '100%',
|
|
74
|
+
height: '100%'
|
|
75
|
+
}, children: visibleLeafPanels.filter(panel => toolbarButtonsVisibility[panel.id]).map(visibleLeafPanel => {
|
|
76
|
+
const isActive = panelVisibility[visibleLeafPanel.id];
|
|
77
|
+
const isDisabled = toolbarButtonsDisabled[visibleLeafPanel.id];
|
|
78
|
+
const count = visibleLeafPanel.toolbarOptions?.count ?? 0;
|
|
79
|
+
const tooltip = visibleLeafPanel.toolbarOptions?.tooltip ?? '';
|
|
80
|
+
return _jsx(TMTooltip, { content: tooltip || (visibleLeafPanel.name + (count > 0 ? ": " + count : '')), position: isMobile ? 'top' : 'left', children: _jsxs(StyledToolbarButton, { disabled: isDisabled, "$isDisabled": isDisabled, onClick: () => onClickCallback(visibleLeafPanel.id, isActive), "$isActive": isActive || visibleLeafPanel.toolbarOptions?.alwaysActiveColor, children: [typeof visibleLeafPanel.toolbarOptions?.icon === 'string' ? (_jsx("i", { className: `dx-icon dx-icon-${visibleLeafPanel.toolbarOptions?.icon}` })) : (visibleLeafPanel.toolbarOptions?.icon), (!isActive && count > 0) && _jsxs(Badge, { "$background": visibleLeafPanel.toolbarOptions?.countBackgroundColor, children: [" ", formatCount(count), " "] })] }, visibleLeafPanel.id) }, visibleLeafPanel.id);
|
|
81
|
+
}) }));
|
|
82
|
+
};
|
|
83
|
+
export default TMPanelManagerToolbar;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { TMPanelDefinition, TMPanelDimensionsMap } from './types';
|
|
3
|
+
interface TMPanelManagerWithPersistenceProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
panels: Array<TMPanelDefinition>;
|
|
6
|
+
initialVisibility: {
|
|
7
|
+
[id: string]: boolean;
|
|
8
|
+
};
|
|
9
|
+
defaultDimensions: TMPanelDimensionsMap;
|
|
10
|
+
initialDimensions: TMPanelDimensionsMap;
|
|
11
|
+
initialMobilePanelId: string;
|
|
12
|
+
isPersistenceEnabled?: boolean;
|
|
13
|
+
persistPanelStates?: (state: Record<string, {
|
|
14
|
+
visible: boolean;
|
|
15
|
+
width: string;
|
|
16
|
+
height: string;
|
|
17
|
+
}>) => void;
|
|
18
|
+
persistedPanelStates?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export declare const TMPanelManagerWithPersistenceProvider: (props: TMPanelManagerWithPersistenceProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import { TMPanelManagerProvider, useTMPanelManagerContext } from './TMPanelManagerContext';
|
|
4
|
+
export const TMPanelManagerWithPersistenceProvider = (props) => {
|
|
5
|
+
const { children, panels, initialVisibility, defaultDimensions, initialDimensions, initialMobilePanelId, isPersistenceEnabled = false, persistedPanelStates, persistPanelStates } = props;
|
|
6
|
+
// Track when persisted state is loaded
|
|
7
|
+
const [loaded, setLoaded] = useState(false);
|
|
8
|
+
// State for visibility and dimensions based on persisted state (or fallback to props)
|
|
9
|
+
const [persistedInitialVisibility, setPersistedInitialVisibility] = useState(initialVisibility);
|
|
10
|
+
const [persistedInitialDimensions, setPersistedInitialDimensions] = useState(initialDimensions);
|
|
11
|
+
// Effect to initialize panel state from persisted data
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const loadPersistedState = () => {
|
|
14
|
+
if (persistedPanelStates && typeof persistedPanelStates === 'object' && Object.keys(persistedPanelStates).length > 0) {
|
|
15
|
+
try {
|
|
16
|
+
const visibility = {};
|
|
17
|
+
const dimensions = {};
|
|
18
|
+
for (const [key, panel] of Object.entries(persistedPanelStates)) {
|
|
19
|
+
visibility[key] = panel.visible;
|
|
20
|
+
dimensions[key] = { width: panel.width, height: panel.height };
|
|
21
|
+
}
|
|
22
|
+
setPersistedInitialVisibility(visibility);
|
|
23
|
+
setPersistedInitialDimensions(dimensions);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
console.warn('Error retrieving data', err);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Mark that initial load is complete (even if nothing is loaded)
|
|
30
|
+
setLoaded(true);
|
|
31
|
+
};
|
|
32
|
+
loadPersistedState();
|
|
33
|
+
}, []);
|
|
34
|
+
if (!loaded)
|
|
35
|
+
return null;
|
|
36
|
+
return (_jsxs(TMPanelManagerProvider, { panels: panels, initialVisibility: persistedInitialVisibility, defaultDimensions: defaultDimensions, initialDimensions: persistedInitialDimensions, initialMobilePanelId: initialMobilePanelId, isPersistenceEnabled: isPersistenceEnabled, children: [_jsx(PanelDimensionPersistenceEffect, { persistPanelStates: persistPanelStates }), children] }));
|
|
37
|
+
};
|
|
38
|
+
// Effect to watch for panel visibility and size changes and persist them
|
|
39
|
+
const PanelDimensionPersistenceEffect = (props) => {
|
|
40
|
+
const { persistPanelStates } = props;
|
|
41
|
+
const { panelDimensions, panelVisibility, maximizedPanels } = useTMPanelManagerContext();
|
|
42
|
+
// Track if this is the first time persistence effect runs after initialization
|
|
43
|
+
const didSkipFirstSave = React.useRef(false);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (Object.keys(panelVisibility).length === 0 || Object.keys(panelDimensions).length === 0)
|
|
46
|
+
return;
|
|
47
|
+
// Skip the very first save to avoid saving immediately after init
|
|
48
|
+
if (!didSkipFirstSave.current) {
|
|
49
|
+
didSkipFirstSave.current = true;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// If any panel is maximized, don't persist to avoid saving intermediate states
|
|
53
|
+
if (maximizedPanels.length > 0)
|
|
54
|
+
return;
|
|
55
|
+
const panelState = {};
|
|
56
|
+
for (const panelKey in panelVisibility) {
|
|
57
|
+
const visibility = panelVisibility[panelKey] ?? false;
|
|
58
|
+
const dimensions = panelDimensions[panelKey] ?? { width: "0%", height: "0%" };
|
|
59
|
+
panelState[panelKey] = { visible: visibility, width: dimensions.width, height: dimensions.height };
|
|
60
|
+
}
|
|
61
|
+
persistPanelStates?.(panelState);
|
|
62
|
+
}, [panelVisibility, panelDimensions, maximizedPanels]);
|
|
63
|
+
return null;
|
|
64
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TMPanelDefinition } from './types';
|
|
3
|
+
interface TMPanelWrapperProps {
|
|
4
|
+
panel: TMPanelDefinition;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare const TMPanelWrapper: (props: TMPanelWrapperProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export default TMPanelWrapper;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useMemo, useState, useEffect } from 'react';
|
|
3
|
+
import { useTMPanelManagerContext } from './TMPanelManagerContext';
|
|
4
|
+
import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
|
|
5
|
+
import TMPanel from '../../base/TMPanel';
|
|
6
|
+
const TMPanelWrapper = (props) => {
|
|
7
|
+
const { panel, children } = props;
|
|
8
|
+
const { panelVisibility, panelDimensions, togglePanelVisibility, maximizedPanels, toggleMaximize, countVisibleLeafPanels } = useTMPanelManagerContext();
|
|
9
|
+
// Default to true if isMaximizable or isClosable is undefined, ensuring safe and expected behavior
|
|
10
|
+
const isMaximizable = panel.contentOptions?.isMaximizable ?? true;
|
|
11
|
+
const isClosable = panel.contentOptions?.isClosable ?? true;
|
|
12
|
+
// Get the current device type (e.g., mobile, tablet, desktop) using a custom hook
|
|
13
|
+
const deviceType = useDeviceType();
|
|
14
|
+
// This avoids unnecessary re-renders by only recalculating when deviceType changes
|
|
15
|
+
let isMobile = useMemo(() => { return deviceType === DeviceType.MOBILE; }, [deviceType]);
|
|
16
|
+
// Extract panel dimensions based on panel id
|
|
17
|
+
const width = panelDimensions[panel.id]?.width ?? '0%';
|
|
18
|
+
const height = panelDimensions[panel.id]?.height ?? '0%';
|
|
19
|
+
// Determine visibility:
|
|
20
|
+
// - If any panels are maximized, only show those maximized panels
|
|
21
|
+
// - Otherwise, rely on the normal panel visibility state
|
|
22
|
+
const isCurrentlyVisible = maximizedPanels.length > 0 ? maximizedPanels.includes(panel.id) : panelVisibility[panel.id];
|
|
23
|
+
// NUOVO STATO: Traccia se il pannello è mai stato reso visibile
|
|
24
|
+
const [hasBeenRenderedOnce, setHasBeenRenderedOnce] = useState(isCurrentlyVisible);
|
|
25
|
+
// NUOVO useEffect: Aggiorna hasBeenRenderedOnce quando il pannello diventa visibile per la prima volta
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (isCurrentlyVisible && !hasBeenRenderedOnce) {
|
|
28
|
+
setHasBeenRenderedOnce(true);
|
|
29
|
+
}
|
|
30
|
+
}, [isCurrentlyVisible, hasBeenRenderedOnce]);
|
|
31
|
+
const panelStyles = {
|
|
32
|
+
margin: '0',
|
|
33
|
+
boxSizing: 'border-box',
|
|
34
|
+
// Applica 'flex' o 'none' solo se è già stato reso visibile almeno una volta
|
|
35
|
+
display: isCurrentlyVisible ? 'flex' : 'none',
|
|
36
|
+
flexDirection: 'column',
|
|
37
|
+
minWidth: '50px',
|
|
38
|
+
minHeight: '50px',
|
|
39
|
+
width: width,
|
|
40
|
+
height: height,
|
|
41
|
+
pointerEvents: 'auto',
|
|
42
|
+
};
|
|
43
|
+
// Rende il pannello solo se è attualmente visibile O se è già stato reso visibile una volta.
|
|
44
|
+
// Se non è mai stato reso visibile E non è attualmente visibile, non renderizza nulla (o un placeholder vuoto).
|
|
45
|
+
if (!isCurrentlyVisible && !hasBeenRenderedOnce) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
// Clona il child e passa una prop 'isVisible'
|
|
49
|
+
let childWithProps = children;
|
|
50
|
+
if (React.isValidElement(children) && typeof children.type === 'function') {
|
|
51
|
+
childWithProps = React.cloneElement(children, { isVisible: isCurrentlyVisible });
|
|
52
|
+
}
|
|
53
|
+
return (_jsx("div", { "data-panel-id": panel.id, style: panelStyles, children: panel.contentOptions?.panelContainer ?
|
|
54
|
+
_jsxs(TMPanel, { ...panel.contentOptions.panelContainer, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onHeaderDoubleClick: isMaximizable && countVisibleLeafPanels() > 1 ? () => toggleMaximize(panel.id) : undefined, onMaximize: isMaximizable && countVisibleLeafPanels() > 1 ? () => toggleMaximize(panel.id) : undefined, onClose: isClosable && countVisibleLeafPanels() > 1 ? () => togglePanelVisibility(panel.id) : undefined, children: [childWithProps, " "] })
|
|
55
|
+
:
|
|
56
|
+
childWithProps // Usa i children clonati
|
|
57
|
+
}));
|
|
58
|
+
};
|
|
59
|
+
export default TMPanelWrapper;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { ITMPanelProps } from "../../base/TMPanel";
|
|
3
|
+
export type TMPanelDirection = 'horizontal' | 'vertical';
|
|
4
|
+
export interface TMPanelDefinition {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
children?: Array<TMPanelDefinition>;
|
|
8
|
+
currentGroupDirection?: TMPanelDirection;
|
|
9
|
+
childrenGroupDirection?: TMPanelDirection;
|
|
10
|
+
contentOptions?: {
|
|
11
|
+
component: ReactNode;
|
|
12
|
+
isClosable?: boolean;
|
|
13
|
+
isMaximizable?: boolean;
|
|
14
|
+
panelContainer?: ITMPanelProps;
|
|
15
|
+
};
|
|
16
|
+
toolbarOptions?: {
|
|
17
|
+
icon: string | JSX.Element;
|
|
18
|
+
visible: boolean;
|
|
19
|
+
isActive: boolean;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
orderNumber?: number;
|
|
22
|
+
beginGroup?: boolean;
|
|
23
|
+
alwaysActiveColor?: boolean;
|
|
24
|
+
count?: number;
|
|
25
|
+
tooltip?: ReactNode | string;
|
|
26
|
+
countBackgroundColor?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface TMPanelHierarchyInfo {
|
|
30
|
+
groupDirection: TMPanelDirection;
|
|
31
|
+
parentId: string | undefined;
|
|
32
|
+
childrenIds: Array<string>;
|
|
33
|
+
siblingIds: Array<string>;
|
|
34
|
+
}
|
|
35
|
+
export type TMPanelHierarchyMap = Map<string, TMPanelHierarchyInfo>;
|
|
36
|
+
export type TMPanelDimensions = {
|
|
37
|
+
width: string;
|
|
38
|
+
height: string;
|
|
39
|
+
};
|
|
40
|
+
export type TMPanelDimensionsMap = {
|
|
41
|
+
[id: string]: TMPanelDimensions;
|
|
42
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TMPanelDefinition, TMPanelDimensionsMap, TMPanelHierarchyMap } from "./types";
|
|
2
|
+
export declare const flattenPanels: (panels: Array<TMPanelDefinition>) => Array<TMPanelDefinition>;
|
|
3
|
+
export declare function getToolbarStates(panels: Array<TMPanelDefinition>): {
|
|
4
|
+
visibilityMap: {
|
|
5
|
+
[id: string]: boolean;
|
|
6
|
+
};
|
|
7
|
+
disabledMap: {
|
|
8
|
+
[id: string]: boolean;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const generatePanelHierarchyMap: (panels: Array<TMPanelDefinition>) => TMPanelHierarchyMap;
|
|
12
|
+
export declare const showParentRecursively: (panelId: string, hierarchyMap: TMPanelHierarchyMap) => Array<[string, boolean]>;
|
|
13
|
+
export declare const hideParentRecursively: (panelId: string, hierarchyMap: TMPanelHierarchyMap, currentVisibility: {
|
|
14
|
+
[id: string]: boolean;
|
|
15
|
+
}) => Array<[string, boolean]>;
|
|
16
|
+
export declare const redistributeDimensionsOnHide: (hiddenPanelId: string, currentDimensions: TMPanelDimensionsMap, hierarchyMap: TMPanelHierarchyMap, panelVisibility: {
|
|
17
|
+
[id: string]: boolean;
|
|
18
|
+
}) => TMPanelDimensionsMap;
|
|
19
|
+
export declare const redistributeDimensionsOnShow: (shownPanelId: string, currentDimensions: TMPanelDimensionsMap, initialDimensions: TMPanelDimensionsMap, hierarchyMap: TMPanelHierarchyMap, panelVisibility: {
|
|
20
|
+
[id: string]: boolean;
|
|
21
|
+
}) => TMPanelDimensionsMap;
|