@vitrosoftware/common-ui-ts 1.1.15 → 1.1.17

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.
Files changed (76) hide show
  1. package/css/common.css +1 -1
  2. package/css/std/controls/action-handler/action-handler.css +14 -3
  3. package/css/std/controls/avatar/avatar.css +3 -0
  4. package/css/std/controls/command-menu/command-menu-dropdown-button.css +9 -4
  5. package/css/std/controls/dropdown-button/dropdown-button.css +126 -0
  6. package/css/std/controls/issue-tile/issue-tile-footer.css +31 -0
  7. package/css/std/controls/issue-tile/issue-tile-header.css +62 -0
  8. package/css/std/controls/issue-tile/issue-tile.css +24 -0
  9. package/css/std/controls/lookup-picker/lookup-picker.css +3 -5
  10. package/css/std/controls/pdf-viewer/compare-side-by-side.css +260 -0
  11. package/css/std/controls/pdf-viewer/compare.css +504 -0
  12. package/css/std/controls/pdf-viewer/custom.css +339 -0
  13. package/css/std/controls/pdf-viewer/debugger.css +113 -0
  14. package/css/std/controls/pdf-viewer/form.css +133 -0
  15. package/css/std/controls/pdf-viewer/img/close-compare-viewer.png +0 -0
  16. package/css/std/controls/pdf-viewer/img/close-compare-viewer_active.png +0 -0
  17. package/css/std/controls/pdf-viewer/img/compare-overlay.png +0 -0
  18. package/css/std/controls/pdf-viewer/img/compare-side-by-side.png +0 -0
  19. package/css/std/controls/pdf-viewer/img/delete-active.png +0 -0
  20. package/css/std/controls/pdf-viewer/img/delete.png +0 -0
  21. package/css/std/controls/pdf-viewer/img/dlg-compare-ico.png +0 -0
  22. package/css/std/controls/pdf-viewer/img/do-compare.png +0 -0
  23. package/css/std/controls/pdf-viewer/img/draw-annotation.png +0 -0
  24. package/css/std/controls/pdf-viewer/img/finish-align.png +0 -0
  25. package/css/std/controls/pdf-viewer/img/finish-align_active.png +0 -0
  26. package/css/std/controls/pdf-viewer/img/fit-to-view.png +0 -0
  27. package/css/std/controls/pdf-viewer/img/fit-to-view_active.png +0 -0
  28. package/css/std/controls/pdf-viewer/img/hide-annotation.png +0 -0
  29. package/css/std/controls/pdf-viewer/img/hide-colors.png +0 -0
  30. package/css/std/controls/pdf-viewer/img/hide-colors_active.png +0 -0
  31. package/css/std/controls/pdf-viewer/img/layer-unvisible.png +0 -0
  32. package/css/std/controls/pdf-viewer/img/layer-visible.png +0 -0
  33. package/css/std/controls/pdf-viewer/img/overlay.png +0 -0
  34. package/css/std/controls/pdf-viewer/img/overlay_active.png +0 -0
  35. package/css/std/controls/pdf-viewer/img/pan.png +0 -0
  36. package/css/std/controls/pdf-viewer/img/pan_active.png +0 -0
  37. package/css/std/controls/pdf-viewer/img/panel-visibility.png +0 -0
  38. package/css/std/controls/pdf-viewer/img/panel-visibility_active.png +0 -0
  39. package/css/std/controls/pdf-viewer/img/show-annotation.png +0 -0
  40. package/css/std/controls/pdf-viewer/img/side-by-side.png +0 -0
  41. package/css/std/controls/pdf-viewer/img/side-by-side_active.png +0 -0
  42. package/css/std/controls/pdf-viewer/img/sidebar-notes-toggle.png +0 -0
  43. package/css/std/controls/pdf-viewer/img/zoom.png +0 -0
  44. package/css/std/controls/pdf-viewer/img/zoom_active.png +0 -0
  45. package/css/std/controls/pdf-viewer/pdf-viewer.css +676 -0
  46. package/css/std/controls/pdf-viewer/print.css +52 -0
  47. package/css/std/controls/pdf-viewer/sketchpad.css +16 -0
  48. package/css/std/controls/pdf-viewer/viewer-theme.css +82 -0
  49. package/css/std/controls/pdf-viewer/viewer.css +3066 -0
  50. package/css/std/controls/pdf-viewer/zoom.css +14 -0
  51. package/css/std/controls/table-view/treegrid.css +121 -2
  52. package/dist/constants/Ctrl.d.ts +2 -0
  53. package/dist/controls/ActionHandler/ActionHandler.d.ts +1 -1
  54. package/dist/controls/ActionHandler/ActionHandlerConstants.d.ts +1 -0
  55. package/dist/controls/Avatar/Avatar.d.ts +1 -0
  56. package/dist/controls/CommandMenu/CommandMenuDropdownButton.d.ts +1 -1
  57. package/dist/controls/CommandMenu/CommandMenuSubItem.d.ts +1 -1
  58. package/dist/controls/DropdownButton/DropdownButton.d.ts +11 -0
  59. package/dist/controls/DropdownButton/DropdownItem.d.ts +11 -0
  60. package/dist/controls/IssueTile/IssueTile.d.ts +26 -0
  61. package/dist/controls/IssueTile/IssueTileConstants.d.ts +3 -0
  62. package/dist/controls/IssueTile/IssueTileFooter.d.ts +8 -0
  63. package/dist/controls/IssueTile/IssueTileHeader.d.ts +18 -0
  64. package/dist/controls/PdfViewer/PdfViewerContext.d.ts +6 -0
  65. package/dist/controls/TableView/TableViewConstants.d.ts +7 -1
  66. package/dist/controls/TelerikUploader/TelerikUploader.d.ts +2 -0
  67. package/dist/controls/TelerikUploader/TelerikUploaderContextImpl.d.ts +2 -1
  68. package/dist/index.css +296 -35
  69. package/dist/index.d.ts +5 -0
  70. package/dist/index.js +1487 -384
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.modern.js +1486 -384
  73. package/dist/index.modern.js.map +1 -1
  74. package/lib/third-party.js +0 -178024
  75. package/package.json +3 -3
  76. package/src/controls/PdfViewer/js/pdf-viewer.js +329 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitrosoftware/common-ui-ts",
3
- "version": "1.1.15",
3
+ "version": "1.1.17",
4
4
  "description": "vitro software common ui ts",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "node": ">=10"
13
13
  },
14
14
  "scripts": {
15
- "build": "microbundle-crl --no-compress --format modern,cjs --css-modules _[name]_[local]_[hash:base64:7] && concat-glob-cli -f lib/**/*.js -o lib/third-party.js && node src/controls/PdfViewer/build.js",
15
+ "build": "node clean.js && microbundle-crl --no-compress --format modern,cjs --css-modules _[name]_[local]_[hash:base64:7] && concat-glob-cli -f lib/**/*.js -o lib/third-party.js && node src/controls/PdfViewer/build.js",
16
16
  "start": "microbundle-crl watch --no-compress --format modern,cjs",
17
17
  "prepare": "run-s build",
18
18
  "test": "run-s test:unit test:lint test:build",
@@ -74,7 +74,7 @@
74
74
  "rollup-plugin-postcss": "^3.1.3",
75
75
  "inversify": "6.0.1",
76
76
  "inversify-react": "1.0.2",
77
- "@vitrosoftware/common-ui": "1.1.15",
77
+ "@vitrosoftware/common-ui": "1.1.17",
78
78
  "react-router-bootstrap": "^0.24.4"
79
79
  }
80
80
  }
@@ -2854,13 +2854,13 @@ function webViewerPageRendered({
2854
2854
  error
2855
2855
  }) {
2856
2856
 
2857
-
2858
- if (pageNumber === PDFViewerApplication.page) {
2859
- // @TODO.SA: Add SA-custom event
2860
- setTimeout(function () {
2861
- $(document).trigger('webViewerPageRendered', [pageNumber]);
2862
- }, 50);
2857
+ // @TODO.SA: Add SA-custom event
2858
+ setTimeout(function () {
2859
+ $(document).trigger('webViewerPageRendered', [pageNumber]);
2860
+ }, 50);
2863
2861
  // ***
2862
+ if (pageNumber === PDFViewerApplication.page) {
2863
+
2864
2864
  PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
2865
2865
  }
2866
2866
  if (PDFViewerApplication.pdfSidebar.visibleView === _ui_utils.SidebarView.THUMBS) {
@@ -16499,11 +16499,332 @@ function bindSelectList() {
16499
16499
  });
16500
16500
  }
16501
16501
 
16502
+ var strokeColorVal = '#EBECF0';
16503
+
16504
+ function bindBtnToggleSidebarNotes() {
16505
+ $(document).on('click', '#btnToggleSidebarNotes', function () {
16506
+ $(this).toggleClass('toggled');
16507
+
16508
+ if ($(this).hasClass('toggled')) {
16509
+ if (!$('.body__sidebar').is(':visible')) {
16510
+ context.initIssueList();
16511
+ expandSidebarNotes();
16512
+ }
16513
+ } else {
16514
+ $('.body__sidebar').hide();
16515
+ }
16516
+ });
16517
+ }
16518
+
16519
+ function saveNote(pageNr, $triggerElement, clickEvent, hasSvg, svgData) {
16520
+
16521
+ var noteOptions = getNoteOptionsForSave('', pageNr, $triggerElement, clickEvent, hasSvg, svgData);
16522
+
16523
+ context.onCreateIssue(noteOptions);
16524
+
16525
+ $('#btnToggleSidebarNotes').click();
16526
+ }
16527
+
16528
+ function doAddNote(noteOptions) {
16529
+ createNote(noteOptions.pageNr, getNewNoteIndex(noteOptions.pageNr), noteOptions);
16530
+
16531
+ if ($('.body__sidebar').is(':visible')) {
16532
+ context.initIssueList();
16533
+ expandSidebarNotes();
16534
+ highlightSidebarNote(noteOptions.id)
16535
+ }
16536
+ }
16537
+
16538
+ async function getNewNoteIndex(pageNr) {
16539
+ let list = await context.getIssueList();
16540
+
16541
+ if (list) {
16542
+ return list.length;
16543
+ } else {
16544
+ return 0;
16545
+ }
16546
+ }
16547
+
16548
+ function initMarkupData(issue) {
16549
+ if (issue.markup) {
16550
+ var markupData = JSON.parse(issue.markup);
16551
+ markupData.svg.stroke.color = issue.statusColor || strokeColorVal;
16552
+ markupData.svg.id = issue.id;
16553
+ markupData.id = issue.id;
16554
+
16555
+ return markupData;
16556
+ }
16557
+
16558
+ return null;
16559
+ }
16560
+
16561
+ function doInitNotesByPageNr(pageNr) {
16562
+ context.getIssueList().then(list => {
16563
+ $.each(list, function (index, issue) {
16564
+ let markup = initMarkupData(issue);
16565
+ if (markup && markup.pageNr == pageNr) {
16566
+ createNote(pageNr, index, issue);
16567
+ loadSvgShape(markup.svg);
16568
+ }
16569
+ });
16570
+ });
16571
+ }
16572
+
16573
+ function removePageAllNotes(pageNr) {
16574
+ var notes = $('#viewer').find('.page[data-page-number="' + pageNr + '"]').find('.pdf-note');
16575
+ notes.remove();
16576
+ }
16577
+
16578
+ function createNote(pageNr, index, issue) {
16579
+ var note = $('<a class="pdf-note"></a>');
16580
+
16581
+ note.data('pageNr', pageNr);
16582
+ note.data('noteIndex', index);
16583
+ note.data('noteId', issue.id);
16584
+
16585
+ note.attr('id', issue.id);
16586
+
16587
+ note.html(issue.id);
16588
+
16589
+ var currentScale = getPdfCanvasScale();
16590
+ //var scalledOptions = initMarkupData(issue, issue.id, issue.statusColor);
16591
+ var scalledOptions = initMarkupData(issue);
16592
+
16593
+ scalledOptions.position.x = scalledOptions.position.x * currentScale;
16594
+ scalledOptions.position.y = scalledOptions.position.y * currentScale;
16595
+
16596
+ var noteCssPosLeft = scalledOptions.position.x;
16597
+ var noteCssPosTop = scalledOptions.position.y;
16598
+ var noteCssTransform = 'scale(' + currentScale + ')';
16599
+
16600
+ var pagesRotation = getPdfPagesRotation();
16601
+
16602
+ if (pagesRotation > 0) {
16603
+ var noteNormalizedPosition = getNoteLabelPositionWithRotation({ pageNr: pageNr, position: scalledOptions.position }, pagesRotation);
16604
+ noteCssPosLeft = noteNormalizedPosition.x;
16605
+ noteCssPosTop = noteNormalizedPosition.y;
16606
+ noteCssTransform += ' rotate(' + pagesRotation + 'deg)';
16607
+ }
16608
+
16609
+ note.css('left', noteCssPosLeft + 'px');
16610
+ note.css('top', noteCssPosTop + 'px');
16611
+ note.css('background', scalledOptions.svg.stroke.color);
16612
+
16613
+ var pageElm = $('.page[data-page-number="' + pageNr + '"]');
16614
+ note.css('transform', noteCssTransform);
16615
+
16616
+ bindOnClickNote(note);
16617
+
16618
+ pageElm.append(note);
16619
+ }
16620
+
16621
+ function highlightSidebarNote(noteId) {
16622
+ context.initIssueList();
16623
+ $('.body__sidebar-note-wrap').removeClass('active');
16624
+ $('.body__sidebar-content').children().removeClass('vitro-active');
16625
+ var notetWrap = $('#vitro-issue-tile-' + noteId);
16626
+ notetWrap.addClass('vitro-active');
16627
+ autosize(notetWrap.find('textarea'));
16628
+ var sidebarContent = $('.body__sidebar-content');
16629
+ var sidebarOffsetTop = parseInt(sidebarContent[0].offsetTop);
16630
+ var sidebarScrollTop = parseInt(sidebarContent[0].scrollTop);
16631
+ sidebarContent.animate({
16632
+ scrollTop: notetWrap.position().top - sidebarOffsetTop + sidebarScrollTop
16633
+ }, 1000);
16634
+ }
16635
+
16636
+ function getNoteCreator() {
16637
+ return '';
16638
+ }
16639
+
16640
+ function initDlgForSvg(svgData) {
16641
+ saveNote(false, false, false, true, svgData);
16642
+ }
16643
+
16644
+ function setDrawNodes(pageNr, nodeId, node, posX, posY, width, height, shapeType, color) {
16645
+ var scale = getPdfCanvasScale();
16646
+ drawNodes[nodeId] = {
16647
+ data: {
16648
+ id: nodeId,
16649
+ pageNr: pageNr,
16650
+ type: shapeType,
16651
+ position: {
16652
+ x: posX / scale,
16653
+ y: posY / scale,
16654
+ },
16655
+ width: width / scale,
16656
+ height: height / scale,
16657
+ stroke: {
16658
+ color: color,
16659
+ width: strokeWidthVal
16660
+ },
16661
+ fill: fillVal,
16662
+ },
16663
+ nodeObj: node
16664
+ };
16665
+ }
16666
+
16667
+ function getShapeSettings(nodeId, color) {
16668
+ var settings = {
16669
+ fill: fillVal,
16670
+ stroke: color || strokeColorVal,
16671
+ strokeWidth: strokeWidthVal,
16672
+ id: 'svg-' + nodeId
16673
+ };
16674
+
16675
+ return settings;
16676
+ }
16677
+
16678
+ function loadSvgShape(svgData) {
16679
+ if (typeof svgData === 'object' && svgData !== null && svgData !== false) {
16680
+
16681
+ var scale = getPdfCanvasScale();
16682
+
16683
+ var node = null;
16684
+ var settings = getShapeSettings(svgData.id, svgData.stroke.color);
16685
+
16686
+ var pagesRotation = getPdfPagesRotation();
16687
+ var nodeSvgData = svgData;
16688
+
16689
+ if (pagesRotation > 0) {
16690
+ nodeSvgData = getSvgDataWithRotation(svgData, pagesRotation, scale);
16691
+ }
16692
+
16693
+ if (drawNodes[svgData.id]) {
16694
+ sketchpad[svgData.pageNr].remove(drawNodes[svgData.id].nodeObj);
16695
+ }
16696
+
16697
+ node = sketchpad[nodeSvgData.pageNr].rect(nodeSvgData.position.x * scale, nodeSvgData.position.y * scale, nodeSvgData.width * scale, nodeSvgData.height * scale, settings);
16698
+ setDrawNodes(svgData.pageNr, svgData.id, node, svgData.position.x, svgData.position.y, svgData.width, svgData.height, svgData.type, svgData.stroke.color);
16699
+ }
16700
+ }
16701
+
16702
+ function bindUpdatePage() {
16703
+ if (context.deleteIssueEvent) {
16704
+ window.addEventListener(context.deleteIssueEvent, updatePage);
16705
+ }
16706
+
16707
+ if (context.updateIssueEvent) {
16708
+ window.addEventListener(context.updateIssueEvent, updatePage);
16709
+ }
16710
+ }
16711
+
16712
+ function updatePage(e) {
16713
+ let item = e.detail.itemList[0];
16714
+ let markup = JSON.parse(item.fieldValueMap.markup);
16715
+ let page = markup ? markup.pageNr : null;
16716
+
16717
+ if (e.type === context.deleteIssueEvent && markup) {
16718
+ let markupData = { id: item.itemId, pageNr: page };
16719
+ removeSvg(markupData);
16720
+ }
16721
+
16722
+ let newMarkupKeyList = Object.keys(drawNodes).filter(key => key.includes('new-'));
16723
+ if (newMarkupKeyList) {
16724
+ newMarkupKeyList.forEach(key => removeSvg({ id: key, pageNr: page }));
16725
+ }
16726
+
16727
+ if (page) {
16728
+ initNotesByPageNr(page);
16729
+ }
16730
+
16731
+ context.initIssueList();
16732
+ }
16733
+
16734
+ function bindSketchpadBtnOnclilckHandler() {
16735
+ $(document).on('click', '#btnDrawRectangle', function () {
16736
+ var svgsketchWrap = $('.svgsketch-wrap');
16737
+ $(this).toggleClass('toggled');
16738
+ svgsketchWrap.toggleClass('active');
16739
+
16740
+ if (svgsketchWrap.eq(0).hasClass('active')) {
16741
+ isSketchpadActive = true;
16742
+ } else {
16743
+ removeNewSvg();
16744
+ context.toggleIssueDetail(false);
16745
+ isSketchpadActive = false;
16746
+ }
16747
+ });
16748
+ }
16749
+
16750
+ function removeNewSvg() {
16751
+ $('[id^="svg-new-"]').remove();
16752
+ }
16753
+
16754
+ function drawShape(x1, y1, x2, y2, pageNr) {
16755
+
16756
+ var left = Math.min(x1, x2);
16757
+ var top = Math.min(y1, y2);
16758
+ var right = Math.max(x1, x2);
16759
+ var bottom = Math.max(y1, y2);
16760
+
16761
+ var nodeId = 'new-' + Date.now();
16762
+ var settings = getShapeSettings(nodeId);
16763
+ var shape = 'rect';
16764
+
16765
+ var node = null;
16766
+ if (shape == 'rect') {
16767
+ node = sketchpad[pageNr].rect(left, top, right - left, bottom - top, settings);
16768
+ }
16769
+ else if (shape == 'circle') {
16770
+ var r = Math.min(right - left, bottom - top) / 2;
16771
+ node = sketchpad[pageNr].circle(left + r, top + r, r, settings);
16772
+ }
16773
+ else if (shape == 'ellipse') {
16774
+ var rx = (right - left) / 2;
16775
+ var ry = (bottom - top) / 2;
16776
+ node = sketchpad[pageNr].ellipse(left + rx, top + ry, rx, ry, settings);
16777
+ }
16778
+ else if (shape == 'line') {
16779
+ node = sketchpad[pageNr].line(x1, y1, x2, y2, settings);
16780
+ }
16781
+ else if (shape == 'polyline') {
16782
+ node = sketchpad[pageNr].polyline([[(x1 + x2) / 2, y1], [x2, y2],
16783
+ [x1, (y1 + y2) / 2], [x2, (y1 + y2) / 2], [x1, y2],
16784
+ [(x1 + x2) / 2, y1]], $.extend(settings, { fill: 'none' }));
16785
+ }
16786
+ else if (shape == 'polygon') {
16787
+ node = sketchpad[pageNr].polygon([[(x1 + x2) / 2, y1], [x2, y1], [x2, y2],
16788
+ [(x1 + x2) / 2, y2], [x1, (y1 + y2) / 2]], settings);
16789
+ }
16790
+
16791
+ var width = right - left;
16792
+ var height = bottom - top;
16793
+
16794
+ var pagesRotation = getPdfPagesRotation();
16795
+ if (pagesRotation > 0) {
16796
+ var svgData = {
16797
+ pageNr: pageNr,
16798
+ position: {
16799
+ x: left,
16800
+ y: top
16801
+ },
16802
+ width: width,
16803
+ height: height
16804
+ };
16805
+ var nodeSvgData = getNormalizedSvgData(svgData, pagesRotation);
16806
+ setDrawNodes(pageNr, nodeId, node, nodeSvgData.position.x, nodeSvgData.position.y, nodeSvgData.width, nodeSvgData.height, shape);
16807
+ } else {
16808
+ setDrawNodes(pageNr, nodeId, node, left, top, width, height, shape);
16809
+ }
16810
+
16811
+ $(node).mousedown(function (e) {
16812
+ startDrag(e, pageNr);
16813
+ }).mousemove(function (e) {
16814
+ dragging(e, pageNr);
16815
+ }).mouseup(function (e) {
16816
+ endDrag(e, pageNr);
16817
+ });
16818
+
16819
+ $('#svgsketch-' + [pageNr]).focus();
16820
+
16821
+ initDlgForSvg(drawNodes[nodeId]);
16822
+ }
16823
+
16502
16824
  $(document).ready(function () {
16503
16825
  context.openFile();
16504
16826
 
16505
16827
  bindAddNoteEventHandler();
16506
- bindDeleteNoteEventHandler();
16507
16828
  bindToggleNotes();
16508
16829
  initContextMenu();
16509
16830
 
@@ -16513,6 +16834,7 @@ $(document).ready(function () {
16513
16834
  initNotes();
16514
16835
  bindSidebarNotesClose();
16515
16836
  bindBtnToggleSidebarNotes();
16837
+ bindUpdatePage();
16516
16838
 
16517
16839
  bindSelectList();
16518
16840