@itwin/core-frontend 5.3.0-dev.9 → 5.4.0-dev.2

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 (130) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/lib/cjs/IModelApp.d.ts +4 -0
  3. package/lib/cjs/IModelApp.d.ts.map +1 -1
  4. package/lib/cjs/IModelApp.js +4 -0
  5. package/lib/cjs/IModelApp.js.map +1 -1
  6. package/lib/cjs/SubCategoriesCache.d.ts +1 -1
  7. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  8. package/lib/cjs/SubCategoriesCache.js +3 -3
  9. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  10. package/lib/cjs/ViewManager.d.ts +4 -2
  11. package/lib/cjs/ViewManager.d.ts.map +1 -1
  12. package/lib/cjs/ViewManager.js +3 -1
  13. package/lib/cjs/ViewManager.js.map +1 -1
  14. package/lib/cjs/Viewport.d.ts.map +1 -1
  15. package/lib/cjs/Viewport.js +9 -3
  16. package/lib/cjs/Viewport.js.map +1 -1
  17. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  18. package/lib/cjs/common/imdl/ParseImdlDocument.js +1 -43
  19. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  20. package/lib/cjs/common/internal/Symbols.d.ts +1 -0
  21. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  22. package/lib/cjs/common/internal/Symbols.js +1 -0
  23. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  24. package/lib/cjs/internal/cross-package.d.ts +4 -0
  25. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  26. package/lib/cjs/internal/cross-package.js +3 -1
  27. package/lib/cjs/internal/cross-package.js.map +1 -1
  28. package/lib/cjs/internal/render/RenderAreaPattern.d.ts +1 -0
  29. package/lib/cjs/internal/render/RenderAreaPattern.d.ts.map +1 -1
  30. package/lib/cjs/internal/render/RenderAreaPattern.js.map +1 -1
  31. package/lib/cjs/internal/render/RenderGeometry.d.ts +3 -1
  32. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -1
  33. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  34. package/lib/cjs/internal/render/RenderPlan.d.ts +3 -1
  35. package/lib/cjs/internal/render/RenderPlan.d.ts.map +1 -1
  36. package/lib/cjs/internal/render/RenderPlan.js.map +1 -1
  37. package/lib/cjs/internal/render/webgl/System.d.ts +1 -1
  38. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  39. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  40. package/lib/cjs/internal/tile/DynamicIModelTile.d.ts +2 -0
  41. package/lib/cjs/internal/tile/DynamicIModelTile.d.ts.map +1 -1
  42. package/lib/cjs/internal/tile/DynamicIModelTile.js +3 -0
  43. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  44. package/lib/cjs/internal/tile/IModelTileTree.d.ts +2 -0
  45. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  46. package/lib/cjs/internal/tile/IModelTileTree.js +5 -0
  47. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  48. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  49. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -0
  50. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  51. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +4 -0
  52. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -1
  53. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  54. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +13 -1
  55. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  56. package/lib/cjs/tile/map/MapLayerImageryProvider.js +25 -1
  57. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  58. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +82 -26
  59. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  60. package/lib/cjs/tools/AccuDrawViewportUI.js +171 -87
  61. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  62. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  63. package/lib/cjs/tools/ToolAdmin.js +3 -0
  64. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  65. package/lib/esm/IModelApp.d.ts +4 -0
  66. package/lib/esm/IModelApp.d.ts.map +1 -1
  67. package/lib/esm/IModelApp.js +4 -0
  68. package/lib/esm/IModelApp.js.map +1 -1
  69. package/lib/esm/SubCategoriesCache.d.ts +1 -1
  70. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  71. package/lib/esm/SubCategoriesCache.js +3 -3
  72. package/lib/esm/SubCategoriesCache.js.map +1 -1
  73. package/lib/esm/ViewManager.d.ts +4 -2
  74. package/lib/esm/ViewManager.d.ts.map +1 -1
  75. package/lib/esm/ViewManager.js +3 -1
  76. package/lib/esm/ViewManager.js.map +1 -1
  77. package/lib/esm/Viewport.d.ts.map +1 -1
  78. package/lib/esm/Viewport.js +9 -3
  79. package/lib/esm/Viewport.js.map +1 -1
  80. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  81. package/lib/esm/common/imdl/ParseImdlDocument.js +1 -43
  82. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  83. package/lib/esm/common/internal/Symbols.d.ts +1 -0
  84. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  85. package/lib/esm/common/internal/Symbols.js +1 -0
  86. package/lib/esm/common/internal/Symbols.js.map +1 -1
  87. package/lib/esm/internal/cross-package.d.ts +4 -0
  88. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  89. package/lib/esm/internal/cross-package.js +1 -0
  90. package/lib/esm/internal/cross-package.js.map +1 -1
  91. package/lib/esm/internal/render/RenderAreaPattern.d.ts +1 -0
  92. package/lib/esm/internal/render/RenderAreaPattern.d.ts.map +1 -1
  93. package/lib/esm/internal/render/RenderAreaPattern.js.map +1 -1
  94. package/lib/esm/internal/render/RenderGeometry.d.ts +3 -1
  95. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -1
  96. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  97. package/lib/esm/internal/render/RenderPlan.d.ts +3 -1
  98. package/lib/esm/internal/render/RenderPlan.d.ts.map +1 -1
  99. package/lib/esm/internal/render/RenderPlan.js.map +1 -1
  100. package/lib/esm/internal/render/webgl/System.d.ts +1 -1
  101. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  102. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  103. package/lib/esm/internal/tile/DynamicIModelTile.d.ts +2 -0
  104. package/lib/esm/internal/tile/DynamicIModelTile.d.ts.map +1 -1
  105. package/lib/esm/internal/tile/DynamicIModelTile.js +3 -0
  106. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  107. package/lib/esm/internal/tile/IModelTileTree.d.ts +2 -0
  108. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  109. package/lib/esm/internal/tile/IModelTileTree.js +5 -0
  110. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  111. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  112. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -0
  113. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  114. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +4 -0
  115. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -1
  116. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  117. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +13 -1
  118. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  119. package/lib/esm/tile/map/MapLayerImageryProvider.js +25 -1
  120. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  121. package/lib/esm/tools/AccuDrawViewportUI.d.ts +82 -26
  122. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  123. package/lib/esm/tools/AccuDrawViewportUI.js +171 -87
  124. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  125. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  126. package/lib/esm/tools/ToolAdmin.js +3 -0
  127. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  128. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  129. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  130. package/package.json +21 -21
@@ -38,37 +38,93 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
38
38
  simplifiedInput: true,
39
39
  /** Enable simple math operations not supported by quantity parser. */
40
40
  mathOperations: true,
41
- /** Number of visible characters to show in text input fields. */
42
- fieldSize: 12,
43
- /** Row spacing of text input fields for vertical arrangement. */
44
- rowSpacingFactor: 1.2,
45
- /** Column spacing of text input fields and buttons for horizontal arrangement. */
46
- columnSpacingFactor: 1.1,
47
- /** Corner radius of text input fields and locks buttons. */
48
- borderRadius: "0.5em",
49
- /** Background color of unfocused text input fields and unlocked buttons. */
50
- backgroundColor: "rgba(150, 150, 150, 0.5)",
51
- /** Settings specific to text input fields and lock button labels. */
52
- text: {
53
- /** Font family to use for text input field values and button labels. */
54
- fontFamily: "sans-serif",
55
- /** Font size to use for text input field values and button labels. */
56
- fontSize: "9pt",
57
- /** Font color to use for text input field values and button labels. */
58
- color: "white",
59
- /** Background color of focused text input field. */
60
- focusColor: "rgba(50, 50, 200, 0.75)",
41
+ /** Settings that apply to both text input fields and lock buttons. */
42
+ field: {
43
+ /** Number of visible characters to show in text input fields. */
44
+ size: 12,
45
+ /** Height of text input fields and lock buttons. */
46
+ height: "var(--iui-component-height-small, 1.75em)",
47
+ /** Border settings for text input fields and lock buttons. */
48
+ border: {
49
+ /** Border width to use for text input fields and lock buttons. */
50
+ width: "1px",
51
+ /** Border style to use for text input fields and lock buttons. */
52
+ style: "solid",
53
+ /** Corner radius of text input fields and locks buttons. */
54
+ radius: "var(--iui-border-radius-1, 0.25rem)",
55
+ },
56
+ /** Settings specific to text input fields and lock button labels. */
57
+ text: {
58
+ /** Font family to use for text input field values and button labels. */
59
+ fontFamily: "var(--iui-font-sans, sans-serif)",
60
+ /** Font size to use for text input field values and button labels. */
61
+ fontSize: "var(--iui-font-size-1, 0.875rem)",
62
+ },
63
+ },
64
+ /** Settings specific to text input fields. */
65
+ input: {
66
+ /** Font color to use for text input field values. */
67
+ color: "var(--iui-color-white, white)",
68
+ /** Padding applied to text input fields. */
69
+ padding: "0 var(--iui-size-s, 0.5rem)",
70
+ /** Settings applied to text input fields when they have focus. */
71
+ focused: {
72
+ /** Background color for focused text input fields. */
73
+ backgroundColor: "hsl(var(--iui-color-accent-hsl, 166 96% 30.7%) / var(--iui-opacity-2, 85%))",
74
+ /** Inner stroke for focused text input fields. */
75
+ innerStroke: `inset 0px 0px 0px 1px var(--iui-color-background, #333c41)`,
76
+ /** Border settings for focused text input fields. */
77
+ border: {
78
+ /** Border color for focused text input fields. */
79
+ color: "hsl(var(--iui-color-accent-hsl, 166 96% 51%))",
80
+ },
81
+ },
82
+ /** Settings applied to text input fields when they do not have focus. */
83
+ unfocused: {
84
+ /** Background color for unfocused text input fields. */
85
+ backgroundColor: "hsl(var(--iui-color-background-hsl, 203 6% 21.25%) / var(--iui-opacity-2, 85%))",
86
+ /** Border settings for unfocused text input fields. */
87
+ border: {
88
+ /** Border color for unfocused text input fields. */
89
+ color: "var(--iui-color-border, hsla(215, 8%, 30%))",
90
+ },
91
+ },
61
92
  },
62
93
  /** Settings specific to lock buttons. */
63
94
  button: {
64
- /** Background color of locked buttons. */
65
- pressedColor: "rgba(50, 50, 50, 0.75)",
66
- /** Margin to use on left and right to position relative to text input field. */
67
- margin: "0.25em",
68
- /** Width of border outline. */
69
- outlineWidth: "thin",
70
- /** Shadow shown when unlocked to make it appear raised. */
71
- shadow: "0.25em 0.25em 0.2em rgb(75, 75, 75)",
95
+ /** Padding applied to lock buttons. */
96
+ padding: "var(--iui-size-2xs, 0.25rem)",
97
+ /** Settings applied to lock buttons when they are unlocked. */
98
+ unlocked: {
99
+ /** Text color for unlocked lock buttons. */
100
+ color: "var(--iui-color-text-muted, #cccccc)",
101
+ /** Background color for unlocked lock buttons. */
102
+ backgroundColor: "hsl(var(--iui-color-background-hsl, 203 6% 21.25%) / var(--iui-opacity-2, 85%))",
103
+ /** Border settings for unlocked lock buttons. */
104
+ border: {
105
+ /** Border color for unlocked lock buttons. */
106
+ color: "var(--iui-color-border, hsla(215, 8%, 30%))",
107
+ },
108
+ },
109
+ /** Settings applied to lock buttons when they are locked. */
110
+ locked: {
111
+ /** Text color for locked lock buttons. */
112
+ color: "hsla(0, 0%, 100%, 1)",
113
+ /** Background color for locked lock buttons. */
114
+ backgroundColor: "hsla(0, 0%, 100%, 0.16)",
115
+ /** Border settings for locked lock buttons. */
116
+ border: {
117
+ /** Border color for locked lock buttons. */
118
+ color: "hsla(0, 0%, 100%, 1)",
119
+ },
120
+ },
121
+ },
122
+ /** Spacing between fields within a control and between rows of controls. */
123
+ spacing: {
124
+ /** Spacing between input field and lock button within each field group. */
125
+ gap: "var(--iui-size-2xs, 0.25rem)",
126
+ /** Spacing between field groups (distance/angle, x, y, z controls). */
127
+ margin: "var(--iui-size-s, 0.75rem)",
72
128
  },
73
129
  };
74
130
  /** Create a new instance of this class to set as [[IModelAppOptions.accuDraw]] for this session. */
@@ -320,7 +376,9 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
320
376
  if (itemField.selectionStart !== (moveLeft ? operatorPosIns + this._expression.operator.length : operatorPosIns))
321
377
  break;
322
378
  // Treat expression operator string as a single character when moving the text insertion cursor...
323
- itemField.selectionStart = itemField.selectionEnd = (moveLeft ? operatorPosIns : operatorPosIns + this._expression.operator.length);
379
+ itemField.selectionStart = itemField.selectionEnd = moveLeft
380
+ ? operatorPosIns
381
+ : operatorPosIns + this._expression.operator.length;
324
382
  ev.preventDefault();
325
383
  return true;
326
384
  case "Backspace":
@@ -431,10 +489,18 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
431
489
  div.className = "accudraw-controls";
432
490
  const style = div.style;
433
491
  style.pointerEvents = "none";
434
- style.overflow = "visible"; // Don't clip/hide outline or shadow...
435
492
  style.position = "absolute";
436
- style.top = style.left = "0";
437
- style.height = style.width = "100%";
493
+ style.display = "flex";
494
+ const isHorizontal = AccuDrawViewportUI.controlProps.horizontalArrangement;
495
+ style.flexDirection = isHorizontal ? "row" : "column";
496
+ if (isHorizontal) {
497
+ // Make the space between each control group bigger than the space between fields within a group
498
+ style.columnGap = AccuDrawViewportUI.controlProps.spacing.margin;
499
+ }
500
+ else {
501
+ // Make the space between each control group equal than the space between fields within a group
502
+ style.rowGap = AccuDrawViewportUI.controlProps.spacing.gap;
503
+ }
438
504
  return div;
439
505
  }
440
506
  updateItemFieldKeyinStatus(itemField, item) {
@@ -450,27 +516,52 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
450
516
  }
451
517
  updateItemFieldLock(itemLock, item) {
452
518
  const locked = this.getFieldLock(item);
453
- itemLock.style.outlineStyle = locked ? "inset" : "outset";
454
- itemLock.style.boxShadow = locked ? "none" : AccuDrawViewportUI.controlProps.button.shadow;
455
- itemLock.style.backgroundColor = locked ? AccuDrawViewportUI.controlProps.button.pressedColor : AccuDrawViewportUI.controlProps.backgroundColor;
519
+ itemLock.style.backgroundColor = locked
520
+ ? AccuDrawViewportUI.controlProps.button.locked.backgroundColor
521
+ : AccuDrawViewportUI.controlProps.button.unlocked.backgroundColor;
522
+ itemLock.style.border = `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${locked
523
+ ? AccuDrawViewportUI.controlProps.button.locked.border.color
524
+ : AccuDrawViewportUI.controlProps.button.unlocked.border.color}`;
525
+ itemLock.style.color = locked
526
+ ? AccuDrawViewportUI.controlProps.button.locked.color
527
+ : AccuDrawViewportUI.controlProps.button.unlocked.color;
456
528
  }
457
529
  initializeItemStyle(style, isButton) {
458
530
  style.pointerEvents = "none"; // Don't receive pointer events...
459
- style.position = "absolute";
460
531
  style.textWrap = "nowrap";
461
532
  style.textAnchor = "top";
462
- style.textAlign = isButton ? "center" : "left";
533
+ style.boxSizing = "border-box";
463
534
  const controlProps = AccuDrawViewportUI.controlProps;
464
- style.fontFamily = controlProps.text.fontFamily;
465
- style.fontSize = controlProps.text.fontSize;
466
- style.color = controlProps.text.color;
467
- style.backgroundColor = controlProps.backgroundColor;
468
- style.borderRadius = controlProps.borderRadius;
535
+ style.height = controlProps.field.height;
536
+ const baseBorder = `${controlProps.field.border.width} ${controlProps.field.border.style} `;
537
+ switch (isButton) {
538
+ case true:
539
+ style.display = "flex";
540
+ style.justifyContent = "center";
541
+ style.alignItems = "center";
542
+ style.backgroundColor = controlProps.button.unlocked.backgroundColor;
543
+ style.padding = controlProps.button.padding;
544
+ style.border = baseBorder + controlProps.button.unlocked.border.color;
545
+ style.color = controlProps.button.unlocked.color;
546
+ style.aspectRatio = "1";
547
+ break;
548
+ case false:
549
+ style.backgroundColor = controlProps.input.unfocused.backgroundColor;
550
+ style.outline = "none";
551
+ style.padding = controlProps.input.padding;
552
+ style.border = baseBorder + controlProps.input.unfocused.border.color;
553
+ style.color = controlProps.input.color;
554
+ style.width = "120px";
555
+ break;
556
+ }
557
+ style.fontFamily = controlProps.field.text.fontFamily;
558
+ style.fontSize = controlProps.field.text.fontSize;
559
+ style.borderRadius = controlProps.field.border.radius;
469
560
  }
470
561
  createItemField(item) {
471
562
  const itemField = document.createElement("input");
472
563
  itemField.contentEditable = "true";
473
- itemField.size = AccuDrawViewportUI.controlProps.fieldSize;
564
+ itemField.size = AccuDrawViewportUI.controlProps.field.size;
474
565
  const style = itemField.style;
475
566
  this.initializeItemStyle(style, false);
476
567
  this.updateItemFieldValue(itemField, item);
@@ -478,7 +569,6 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
478
569
  itemField.onkeyup = async (ev) => { await this.onKeyboardEvent(ev, false); };
479
570
  itemField.onfocus = (ev) => { this.onFocusChange(ev, item, true); };
480
571
  itemField.onblur = (ev) => { this.onFocusChange(ev, item, false); };
481
- ;
482
572
  return itemField;
483
573
  }
484
574
  createItemFieldLock(item) {
@@ -506,10 +596,6 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
506
596
  const style = itemLock.style;
507
597
  this.initializeItemStyle(style, true);
508
598
  this.updateItemFieldLock(itemLock, item);
509
- const button = AccuDrawViewportUI.controlProps.button;
510
- style.paddingLeft = style.paddingRight = "0";
511
- style.marginLeft = style.marginRight = button.margin;
512
- style.outlineWidth = button.outlineWidth;
513
599
  return itemLock;
514
600
  }
515
601
  /** Called after the controls have been removed from the view. */
@@ -530,18 +616,23 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
530
616
  updateControlVisibility(isPolar, is3d) {
531
617
  if (undefined === this._controls)
532
618
  return;
533
- this._controls.itemFields[AccuDraw_1.ItemField.ANGLE_Item].hidden = !isPolar;
534
- this._controls.itemLocks[AccuDraw_1.ItemField.ANGLE_Item].hidden = !isPolar;
535
- this._controls.itemFields[AccuDraw_1.ItemField.DIST_Item].hidden = !isPolar;
536
- this._controls.itemLocks[AccuDraw_1.ItemField.DIST_Item].hidden = !isPolar;
537
- this._controls.itemFields[AccuDraw_1.ItemField.X_Item].hidden = isPolar;
538
- this._controls.itemLocks[AccuDraw_1.ItemField.X_Item].hidden = isPolar;
539
- this._controls.itemFields[AccuDraw_1.ItemField.Y_Item].hidden = isPolar;
540
- this._controls.itemLocks[AccuDraw_1.ItemField.Y_Item].hidden = isPolar;
619
+ const angleWrapper = this._controls.itemFields[AccuDraw_1.ItemField.ANGLE_Item]
620
+ .parentElement;
621
+ const distWrapper = this._controls.itemFields[AccuDraw_1.ItemField.DIST_Item]
622
+ .parentElement;
623
+ const xWrapper = this._controls.itemFields[AccuDraw_1.ItemField.X_Item]
624
+ .parentElement;
625
+ const yWrapper = this._controls.itemFields[AccuDraw_1.ItemField.Y_Item]
626
+ .parentElement;
627
+ const zWrapper = this._controls.itemFields[AccuDraw_1.ItemField.Z_Item]
628
+ .parentElement;
629
+ angleWrapper.style.display = !isPolar ? "none" : "flex";
630
+ distWrapper.style.display = !isPolar ? "none" : "flex";
631
+ xWrapper.style.display = isPolar ? "none" : "flex";
632
+ yWrapper.style.display = isPolar ? "none" : "flex";
541
633
  if (undefined === is3d)
542
634
  return;
543
- this._controls.itemFields[AccuDraw_1.ItemField.Z_Item].hidden = !is3d;
544
- this._controls.itemLocks[AccuDraw_1.ItemField.Z_Item].hidden = !is3d;
635
+ zWrapper.style.display = !is3d ? "none" : "flex";
545
636
  }
546
637
  updateControls(ev) {
547
638
  const vp = ev.viewport;
@@ -553,43 +644,28 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
553
644
  if (undefined === this._controls) {
554
645
  const overlay = vp.addNewDiv("accudraw-overlay", true, 35);
555
646
  const div = this.createControlDiv();
556
- const is3dLayout = this.is3dCompass(vp);
557
- const isHorizontalLayout = props.horizontalArrangement;
558
647
  overlay.appendChild(div);
559
648
  const createFieldAndLock = (item) => {
560
- const itemField = itemFields[item] = this.createItemField(item);
561
- itemField.style.top = isHorizontalLayout ? "0" : `${rowOffset}px`;
562
- itemField.style.left = isHorizontalLayout ? `${columnOffset}px` : "0";
563
- div.appendChild(itemField);
564
- if (is3dLayout || AccuDraw_1.ItemField.Z_Item !== item)
565
- rowOffset += itemField.offsetHeight * props.rowSpacingFactor;
566
- itemWidth = itemField.offsetWidth;
567
- itemHeight = itemField.offsetHeight;
568
- const itemLock = itemLocks[item] = this.createItemFieldLock(item);
569
- itemLock.style.top = itemField.style.top;
570
- itemLock.style.left = isHorizontalLayout ? `${columnOffset + itemWidth}px` : `${itemWidth}px`;
571
- itemLock.style.width = itemLock.style.height = `${itemHeight}px`; // Make square of same height as text field...
572
- div.appendChild(itemLock);
573
- lockWidth = itemLock.offsetWidth;
574
- if (is3dLayout || AccuDraw_1.ItemField.Z_Item !== item)
575
- columnOffset += (itemWidth + lockWidth) * props.columnSpacingFactor;
649
+ const fieldWrapper = document.createElement("div");
650
+ fieldWrapper.style.display = "flex";
651
+ fieldWrapper.style.flexDirection = "row";
652
+ fieldWrapper.style.alignItems = "center";
653
+ fieldWrapper.style.justifyContent = "center";
654
+ fieldWrapper.style.columnGap = AccuDrawViewportUI.controlProps.spacing.gap;
655
+ fieldWrapper.style.rowGap = AccuDrawViewportUI.controlProps.spacing.gap;
656
+ const itemField = (itemFields[item] = this.createItemField(item));
657
+ fieldWrapper.appendChild(itemField);
658
+ const itemLock = (itemLocks[item] = this.createItemFieldLock(item));
659
+ fieldWrapper.appendChild(itemLock);
660
+ div.appendChild(fieldWrapper);
576
661
  };
577
- let rowOffset = 0;
578
- let columnOffset = 0;
579
- let itemWidth = 0;
580
- let itemHeight = 0;
581
- let lockWidth = 0;
582
662
  const itemFields = [];
583
663
  const itemLocks = [];
584
664
  createFieldAndLock(AccuDraw_1.ItemField.DIST_Item);
585
665
  createFieldAndLock(AccuDraw_1.ItemField.ANGLE_Item);
586
- rowOffset = 0;
587
- columnOffset = 0;
588
666
  createFieldAndLock(AccuDraw_1.ItemField.X_Item);
589
667
  createFieldAndLock(AccuDraw_1.ItemField.Y_Item);
590
668
  createFieldAndLock(AccuDraw_1.ItemField.Z_Item); // Both polar and rectangular modes support Z in 3d views...
591
- div.style.width = isHorizontalLayout ? `${columnOffset}px` : `${itemWidth + lockWidth + 5}px`;
592
- div.style.height = isHorizontalLayout ? `${itemHeight * props.rowSpacingFactor}px` : `${rowOffset}px`;
593
669
  this._controls = { overlay, div, itemFields, itemLocks };
594
670
  this.updateControlVisibility(AccuDraw_1.CompassMode.Polar === this.compassMode, this.is3dCompass(vp));
595
671
  this.setFocusItem(this._focusItem);
@@ -600,7 +676,7 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
600
676
  const position = vp.worldToView(ev.point);
601
677
  if (props.fixedLocation) {
602
678
  position.x = (viewRect.left + ((viewRect.width - this._controls.div.offsetWidth) * 0.5));
603
- position.y = (viewRect.bottom - this._controls.div.offsetHeight);
679
+ position.y = (viewRect.bottom - this._controls.div.offsetHeight * 1.2);
604
680
  }
605
681
  else {
606
682
  position.x += Math.floor(vp.pixelsFromInches(props.cursorOffset.x)) + 0.5;
@@ -667,7 +743,15 @@ class AccuDrawViewportUI extends AccuDraw_1.AccuDraw {
667
743
  return;
668
744
  // NOTE: Using "setSelectionRange" while value is changing in dynamics isn't pretty, use background+caret color instead...
669
745
  const itemField = this._controls.itemFields[item];
670
- itemField.style.backgroundColor = (focusIn ? AccuDrawViewportUI.controlProps.text.focusColor : AccuDrawViewportUI.controlProps.backgroundColor);
746
+ itemField.style.backgroundColor = focusIn
747
+ ? AccuDrawViewportUI.controlProps.input.focused.backgroundColor
748
+ : AccuDrawViewportUI.controlProps.input.unfocused.backgroundColor;
749
+ itemField.style.border = focusIn
750
+ ? `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${AccuDrawViewportUI.controlProps.input.focused.border.color}`
751
+ : `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${AccuDrawViewportUI.controlProps.input.unfocused.border.color}`;
752
+ itemField.style.boxShadow = focusIn
753
+ ? AccuDrawViewportUI.controlProps.input.focused.innerStroke
754
+ : "none";
671
755
  this.updateItemFieldKeyinStatus(itemField, item);
672
756
  if (!focusIn)
673
757
  this.setDynamicKeyinStatus(item);