@itwin/components-react 5.0.0-dev.2 → 5.0.0

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 (144) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/lib/cjs/components-react/_target.scss +10 -0
  3. package/lib/cjs/components-react/datepicker/DateField.scss +19 -0
  4. package/lib/cjs/components-react/datepicker/DatePicker.scss +179 -0
  5. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +56 -0
  6. package/lib/cjs/components-react/datepicker/TimeField.scss +72 -0
  7. package/lib/cjs/components-react/editors/BooleanEditor.scss +22 -0
  8. package/lib/cjs/components-react/editors/CustomNumberEditor.scss +19 -0
  9. package/lib/cjs/components-react/editors/DateTimeEditor.scss +9 -0
  10. package/lib/cjs/components-react/editors/EditorContainer.scss +7 -0
  11. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +141 -0
  12. package/lib/cjs/components-react/editors/EnumEditor.scss +21 -0
  13. package/lib/cjs/components-react/editors/IconEditor.scss +14 -0
  14. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +24 -0
  15. package/lib/cjs/components-react/editors/NumericInputEditor.scss +13 -0
  16. package/lib/cjs/components-react/editors/PopupButton.scss +112 -0
  17. package/lib/cjs/components-react/editors/SliderEditor.scss +14 -0
  18. package/lib/cjs/components-react/editors/TextEditor.scss +19 -0
  19. package/lib/cjs/components-react/editors/TextareaEditor.scss +13 -0
  20. package/lib/cjs/components-react/editors/ToggleEditor.scss +17 -0
  21. package/lib/cjs/components-react/editors/variables.scss +10 -0
  22. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +40 -0
  23. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +35 -0
  24. package/lib/cjs/components-react/filtering/FilteringInput.scss +58 -0
  25. package/lib/cjs/components-react/filtering/ResultSelector.scss +66 -0
  26. package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +74 -0
  27. package/lib/cjs/components-react/inputs/ParsedInput.scss +20 -0
  28. package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +25 -0
  29. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -0
  30. package/lib/cjs/components-react/properties/renderers/PropertyView.scss +110 -0
  31. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +87 -0
  32. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +55 -0
  33. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +100 -0
  34. package/lib/cjs/components-react/selectable-content/SelectableContent.scss +20 -0
  35. package/lib/cjs/components-react/toolbar/Item.scss +94 -0
  36. package/lib/cjs/components-react/toolbar/ItemWrapper.scss +10 -0
  37. package/lib/cjs/components-react/toolbar/Items.scss +96 -0
  38. package/lib/cjs/components-react/toolbar/Overflow.scss +57 -0
  39. package/lib/cjs/components-react/toolbar/OverflowPanel.scss +37 -0
  40. package/lib/cjs/components-react/toolbar/PopupItem.scss +81 -0
  41. package/lib/cjs/components-react/toolbar/Toolbar.scss +16 -0
  42. package/lib/cjs/components-react/toolbar/_variables.scss +34 -0
  43. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +44 -0
  44. package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +9 -0
  45. package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +10 -0
  46. package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +15 -0
  47. package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +33 -0
  48. package/lib/cjs/components-react/toolbar/groupPanel/_variables.scss +17 -0
  49. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.scss +30 -0
  50. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +117 -0
  51. package/lib/cjs/components-react/toolbar/groupPanel/tool/_variables.scss +15 -0
  52. package/lib/cjs/components-react/tree/HighlightingEngine.scss +8 -0
  53. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.scss +102 -0
  54. package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +27 -0
  55. package/lib/components-react/common/Links.d.ts +4 -0
  56. package/lib/components-react/common/Links.d.ts.map +1 -1
  57. package/lib/components-react/common/Links.js +20 -0
  58. package/lib/components-react/common/Links.js.map +1 -1
  59. package/lib/components-react/editors/EditorContainer.d.ts +2 -0
  60. package/lib/components-react/editors/EditorContainer.d.ts.map +1 -1
  61. package/lib/components-react/editors/EditorContainer.js +7 -3
  62. package/lib/components-react/editors/EditorContainer.js.map +1 -1
  63. package/lib/components-react/editors/EnumButtonGroupEditor.d.ts.map +1 -1
  64. package/lib/components-react/editors/EnumButtonGroupEditor.js +3 -3
  65. package/lib/components-react/editors/EnumButtonGroupEditor.js.map +1 -1
  66. package/lib/components-react/properties/renderers/PropertyRenderer.d.ts +4 -0
  67. package/lib/components-react/properties/renderers/PropertyRenderer.d.ts.map +1 -1
  68. package/lib/components-react/properties/renderers/PropertyRenderer.js +12 -3
  69. package/lib/components-react/properties/renderers/PropertyRenderer.js.map +1 -1
  70. package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  71. package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.js +2 -10
  72. package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
  73. package/lib/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.d.ts.map +1 -1
  74. package/lib/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +5 -3
  75. package/lib/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  76. package/lib/components-react/propertygrid/component/PropertyGridCommons.d.ts +2 -0
  77. package/lib/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
  78. package/lib/components-react/propertygrid/component/PropertyGridCommons.js +4 -9
  79. package/lib/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  80. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  81. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  82. package/lib/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  83. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +2 -0
  84. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  85. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js +3 -1
  86. package/lib/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  87. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +3 -0
  88. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
  89. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +9 -5
  90. package/lib/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  91. package/lib/esm/components-react/_target.scss +10 -0
  92. package/lib/esm/components-react/datepicker/DateField.scss +19 -0
  93. package/lib/esm/components-react/datepicker/DatePicker.scss +179 -0
  94. package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +56 -0
  95. package/lib/esm/components-react/datepicker/TimeField.scss +72 -0
  96. package/lib/esm/components-react/editors/BooleanEditor.scss +22 -0
  97. package/lib/esm/components-react/editors/CustomNumberEditor.scss +19 -0
  98. package/lib/esm/components-react/editors/DateTimeEditor.scss +9 -0
  99. package/lib/esm/components-react/editors/EditorContainer.scss +7 -0
  100. package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +141 -0
  101. package/lib/esm/components-react/editors/EnumEditor.scss +21 -0
  102. package/lib/esm/components-react/editors/IconEditor.scss +14 -0
  103. package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +24 -0
  104. package/lib/esm/components-react/editors/NumericInputEditor.scss +13 -0
  105. package/lib/esm/components-react/editors/PopupButton.scss +112 -0
  106. package/lib/esm/components-react/editors/SliderEditor.scss +14 -0
  107. package/lib/esm/components-react/editors/TextEditor.scss +19 -0
  108. package/lib/esm/components-react/editors/TextareaEditor.scss +13 -0
  109. package/lib/esm/components-react/editors/ToggleEditor.scss +17 -0
  110. package/lib/esm/components-react/editors/variables.scss +10 -0
  111. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +40 -0
  112. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +35 -0
  113. package/lib/esm/components-react/filtering/FilteringInput.scss +58 -0
  114. package/lib/esm/components-react/filtering/ResultSelector.scss +66 -0
  115. package/lib/esm/components-react/iconpicker/IconPickerButton.scss +74 -0
  116. package/lib/esm/components-react/inputs/ParsedInput.scss +20 -0
  117. package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +25 -0
  118. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -0
  119. package/lib/esm/components-react/properties/renderers/PropertyView.scss +110 -0
  120. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +87 -0
  121. package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +55 -0
  122. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +100 -0
  123. package/lib/esm/components-react/selectable-content/SelectableContent.scss +20 -0
  124. package/lib/esm/components-react/toolbar/Item.scss +94 -0
  125. package/lib/esm/components-react/toolbar/ItemWrapper.scss +10 -0
  126. package/lib/esm/components-react/toolbar/Items.scss +96 -0
  127. package/lib/esm/components-react/toolbar/Overflow.scss +57 -0
  128. package/lib/esm/components-react/toolbar/OverflowPanel.scss +37 -0
  129. package/lib/esm/components-react/toolbar/PopupItem.scss +81 -0
  130. package/lib/esm/components-react/toolbar/Toolbar.scss +16 -0
  131. package/lib/esm/components-react/toolbar/_variables.scss +34 -0
  132. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +44 -0
  133. package/lib/esm/components-react/toolbar/groupPanel/Column.scss +9 -0
  134. package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +10 -0
  135. package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +15 -0
  136. package/lib/esm/components-react/toolbar/groupPanel/Title.scss +33 -0
  137. package/lib/esm/components-react/toolbar/groupPanel/_variables.scss +17 -0
  138. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.scss +30 -0
  139. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +117 -0
  140. package/lib/esm/components-react/toolbar/groupPanel/tool/_variables.scss +15 -0
  141. package/lib/esm/components-react/tree/HighlightingEngine.scss +8 -0
  142. package/lib/esm/components-react/tree/controlled/component/ControlledTree.scss +102 -0
  143. package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +27 -0
  144. package/package.json +9 -16
@@ -0,0 +1,44 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "sass:math";
6
+ @use "../../target" as *;
7
+ @use "variables" as *;
8
+
9
+ .components-toolbar-item-expandable-group-backArrow {
10
+ $border: solid $back-arrow-thickness currentColor;
11
+ $size: math.sqrt($back-arrow-size-val * $back-arrow-size-val * 8) * 0.5 + px;
12
+
13
+ width: 15px;
14
+ height: 20px;
15
+
16
+ @include components-internal-targeted {
17
+ cursor: pointer;
18
+
19
+ &:after {
20
+ color: var(--iui-color-text-accent);
21
+ }
22
+ }
23
+
24
+ &:after {
25
+ content: "";
26
+ display: block;
27
+ position: relative;
28
+ left: 3px;
29
+ top: 3px;
30
+ color: var(--iui-color-text);
31
+ width: $size;
32
+ height: $size;
33
+ border-top: $border;
34
+ border-left: $border;
35
+ margin-left: $back-arrow-thickness;
36
+ margin-top: $back-arrow-thickness;
37
+ box-sizing: border-box;
38
+ transform: rotate(-45deg);
39
+ }
40
+
41
+ &:focus {
42
+ outline: none;
43
+ }
44
+ }
@@ -0,0 +1,9 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ .components-toolbar-item-expandable-group-column {
6
+ > *:not(:last-child) {
7
+ margin-bottom: 9px;
8
+ }
9
+ }
@@ -0,0 +1,10 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ .components-toolbar-item-expandable-group-columns {
6
+ display: grid;
7
+ grid-auto-columns: 1fr;
8
+ grid-gap: 12px;
9
+ grid-auto-flow: column;
10
+ }
@@ -0,0 +1,15 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "variables" as *;
6
+
7
+ .components-toolbar-item-expandable-group-panel {
8
+ line-height: normal;
9
+ background: var(--iui-color-background);
10
+ padding: 8px;
11
+ border-radius: var(--iui-border-radius-1);
12
+ pointer-events: auto;
13
+ border: 1px solid var(--iui-color-border);
14
+ font-size: $font-size;
15
+ }
@@ -0,0 +1,33 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "variables" as *;
6
+
7
+ .components-toolbar-item-expandable-group-title {
8
+ white-space: nowrap;
9
+ text-align: center;
10
+ color: var(--iui-color-text);
11
+ margin-bottom: 9px;
12
+ margin-left: $title-horizontal-margin;
13
+ margin-right: $title-horizontal-margin;
14
+
15
+ @include title;
16
+ }
17
+
18
+ .components-toolbar-item-expandable-group-nested {
19
+ position: relative;
20
+
21
+ .components-back {
22
+ position: absolute;
23
+ left: 10px;
24
+ top: 8px;
25
+ }
26
+
27
+ > .components-toolbar-item-expandable-group-title {
28
+ /* Contributes to space available for back arrow */
29
+ min-height: 14px;
30
+ margin-left: $title-horizontal-back-arrow-margin;
31
+ margin-right: $title-horizontal-back-arrow-margin;
32
+ }
33
+ }
@@ -0,0 +1,17 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @forward "~@itwin/core-react/lib/core-react/style/themecolors";
6
+ @forward "~@itwin/core-react/lib/core-react/typography";
7
+ @forward "../variables";
8
+
9
+ $panel-padding-left: 16px;
10
+ $panel-padding-right: 8px;
11
+ $panel-padding-top: $panel-padding-right;
12
+ $panel-padding-bottom: 12px;
13
+ $title-color: var(--iui-color-text);
14
+ $back-arrow-thickness: 2px;
15
+ $back-arrow-size-val: 6;
16
+ $title-horizontal-margin: 20px;
17
+ $title-horizontal-back-arrow-margin: 28px;
@@ -0,0 +1,30 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "sass:math";
6
+ @use "variables" as *;
7
+
8
+ .components-toolbar-item-expandable-group-tool-expander {
9
+ > .components-expansion-indicator {
10
+ $border: solid $expander-arrow-thickness currentColor;
11
+ $size: math.sqrt($expander-arrow-size-val * $expander-arrow-size-val * 8) *
12
+ 0.5 + px;
13
+
14
+ width: $size;
15
+ height: $size;
16
+ border-top: $border;
17
+ border-left: $border;
18
+ margin-left: $expander-arrow-thickness;
19
+ margin-top: $expander-arrow-thickness;
20
+ margin-right: $space-after-expander;
21
+ box-sizing: border-box;
22
+ transform: rotate(135deg);
23
+ }
24
+
25
+ &:active:not(.components-disabled) {
26
+ > .components-expansion-indicator {
27
+ filter: $no-shadow;
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,117 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "~@itwin/core-react/lib/core-react/typography" as *;
6
+ @use "../../../target" as *;
7
+ @use "variables" as *;
8
+
9
+ .components-toolbar-item-expandable-group-tool-item {
10
+ $item-height: 32px;
11
+ $item-border-width: 2px;
12
+ $active-tool-stripe-height: 22px;
13
+ $active-tool-stripe-width: 2px;
14
+ $icon-size: 16px;
15
+ $space-between-icon-and-label: 32px - 16px;
16
+
17
+ white-space: nowrap;
18
+ height: $item-height;
19
+ color: var(--iui-color-text);
20
+ cursor: pointer;
21
+ border-radius: var(--iui-border-radius-1);
22
+ display: flex;
23
+ align-items: center;
24
+
25
+ @include body1;
26
+
27
+ @mixin components-active-tool {
28
+ &:not(.components-disabled) {
29
+ background: var(--iui-color-background-hover);
30
+ color: var(--iui-color-text-accent-hover);
31
+ }
32
+ }
33
+
34
+ > .components-icon {
35
+ width: $icon-size;
36
+ height: $icon-size;
37
+ display: inline-block;
38
+ margin-right: $space-between-icon-and-label;
39
+ margin-left: 8px;
40
+ position: relative;
41
+
42
+ > .components-badge {
43
+ position: absolute;
44
+ top: -8px;
45
+ left: -8px;
46
+ }
47
+ }
48
+
49
+ > .components-label {
50
+ display: inline-block;
51
+ margin-right: $space-after-label;
52
+ line-height: $item-height;
53
+
54
+ &:after {
55
+ display: block;
56
+ content: attr(title);
57
+ font-weight: bold;
58
+ height: 1px;
59
+ color: transparent;
60
+ overflow: hidden;
61
+ visibility: hidden;
62
+ }
63
+ }
64
+
65
+ @include components-internal-targeted {
66
+ &:not(.components-disabled) {
67
+ color: var(--iui-color-text-hover);
68
+
69
+ @include body1;
70
+ }
71
+ }
72
+
73
+ &:active {
74
+ @include components-active-tool;
75
+ }
76
+
77
+ &:focus {
78
+ outline: none;
79
+ }
80
+
81
+ &.components-pointer-up {
82
+ @include components-internal-targeted {
83
+ @include components-active-tool;
84
+ }
85
+ }
86
+
87
+ &.components-focused:not(.components-disabled) {
88
+ color: var(--iui-color-text-accent);
89
+ border-color: var(--iui-color-border-accent);
90
+ border-width: $item-border-width;
91
+ border-style: solid;
92
+
93
+ @include body1;
94
+ }
95
+
96
+ &.components-active:not(.components-disabled) {
97
+ color: var(--iui-color-text-accent);
98
+
99
+ @include body1;
100
+
101
+ &::before {
102
+ content: "";
103
+ background-color: var(--iui-color-border-accent);
104
+ display: block;
105
+ position: relative;
106
+ top: 0;
107
+ left: $item-border-width + 1;
108
+ width: $active-tool-stripe-width;
109
+ height: $active-tool-stripe-height;
110
+ border-radius: 2px;
111
+ }
112
+ }
113
+
114
+ &.components-disabled {
115
+ color: var(--iui-color-text-disabled);
116
+ }
117
+ }
@@ -0,0 +1,15 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @forward "~@itwin/core-react/lib/core-react/style/themecolors";
6
+
7
+ $no-shadow: none;
8
+ $shadow: drop-shadow(
9
+ 0 1px 0 hsl(var(--iui-color-background-hsl) / var(--iui-opacity-2))
10
+ );
11
+ $space-after-label: 16px;
12
+
13
+ $expander-arrow-thickness: 2px;
14
+ $expander-arrow-size-val: 6;
15
+ $space-after-expander: 10px;
@@ -0,0 +1,8 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ .components-activehighlight {
7
+ background-color: orange;
8
+ }
@@ -0,0 +1,102 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @use "~@itwin/core-react/lib/core-react/scrollbar" as *;
6
+
7
+ .components-controlledTree-loader {
8
+ position: relative;
9
+ display: block;
10
+ left: calc(50% - 24px);
11
+ top: calc(50% - 24px);
12
+ height: 48px;
13
+ width: 48px;
14
+ }
15
+
16
+ .components-controlledTree-errorMessage {
17
+ font-style: italic;
18
+ color: var(--iui-color-text-muted);
19
+ margin: 0 20%;
20
+ text-align: center;
21
+ }
22
+
23
+ .components-controlledTree {
24
+ color: var(--iui-color-text);
25
+ background-color: var(--iui-color-background);
26
+
27
+ /**
28
+ * Workaround for horizontal scroll issue.
29
+ * based on https://github.com/bvaughn/react-window/issues/681
30
+ */
31
+ .ReactVirtualized__Grid,
32
+ .ReactWindow__VariableSizeList {
33
+ overflow: scroll !important;
34
+ background-color: inherit;
35
+
36
+ @include uicore-scrollbar;
37
+
38
+ &:focus {
39
+ outline: none;
40
+ }
41
+
42
+ > div {
43
+ overflow: visible !important;
44
+ max-width: none !important;
45
+ }
46
+ }
47
+
48
+ .node-wrapper {
49
+ // The virtualized list wants to use absolute layout, but we
50
+ // need the inner container to grow in width based on the widest
51
+ // node. To workaround, we use relative layout with 0 heigh nodes.
52
+ position: relative !important;
53
+ height: 0 !important;
54
+ width: fit-content !important;
55
+ min-width: 100% !important;
56
+ overflow: visible !important;
57
+
58
+ &.is-selected {
59
+ // Prevent selected node's borders from being overdrawn by non-selected neighbors
60
+ z-index: 1;
61
+ }
62
+
63
+ .core-tree-node {
64
+ &.is-focused,
65
+ &:focus {
66
+ outline: none;
67
+ }
68
+ }
69
+ }
70
+
71
+ @mixin enable-border($edge) {
72
+ border-#{$edge}: 1px solid var(--iui-color-icon-accent);
73
+ padding-#{$edge}: 0;
74
+ }
75
+
76
+ .node-wrapper.is-selected {
77
+ .core-tree-node {
78
+ background: var(--iui-color-background-accent-muted);
79
+ @include enable-border("left");
80
+ @include enable-border("right");
81
+ }
82
+ }
83
+
84
+ .node-wrapper.is-selected:first-child,
85
+ .node-wrapper:not(.is-selected) + .node-wrapper.is-selected {
86
+ .core-tree-node {
87
+ @include enable-border("top");
88
+ }
89
+ }
90
+
91
+ .node-wrapper.is-selected + .node-wrapper:not(.is-selected) {
92
+ .core-tree-node {
93
+ @include enable-border("top");
94
+ }
95
+ }
96
+
97
+ .node-wrapper.is-selected:last-child {
98
+ .core-tree-node {
99
+ @include enable-border("bottom");
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,27 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ .components-controlledTree-node-description {
7
+ color: var(--iui-color-text-muted);
8
+ font-size: var(--iui-font-size-0);
9
+ margin-top: 4px;
10
+
11
+ &.with-editor {
12
+ margin: 0;
13
+ padding-top: 1px;
14
+ }
15
+ }
16
+
17
+ .components-controlledTree-node-content {
18
+ height: 24px;
19
+ line-height: var(--iui-font-size-0);
20
+ display: flex;
21
+ flex-direction: column;
22
+ justify-content: center;
23
+
24
+ &.with-description {
25
+ height: 43px;
26
+ }
27
+ }
@@ -10,4 +10,8 @@ export declare const matchLinks: (text: string) => Array<{
10
10
  schema: string;
11
11
  url: string;
12
12
  }>;
13
+ /**
14
+ * @internal
15
+ */
16
+ export declare const openLink: (url: string) => void;
13
17
  //# sourceMappingURL=Links.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Links.d.ts","sourceRoot":"","sources":["../../../src/components-react/common/Links.ts"],"names":[],"mappings":"AAIA;;GAEG;AA4DH;;GAEG;AACH,eAAO,MAAM,UAAU,SACf,MAAM,KACX,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAmBzE,CAAC"}
1
+ {"version":3,"file":"Links.d.ts","sourceRoot":"","sources":["../../../src/components-react/common/Links.ts"],"names":[],"mappings":"AAIA;;GAEG;AA4DH;;GAEG;AACH,eAAO,MAAM,UAAU,SACf,MAAM,KACX,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAmBzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAS,MAAM,SAmBnC,CAAC"}
@@ -62,4 +62,24 @@ export const matchLinks = (text) => {
62
62
  ? matches
63
63
  : [];
64
64
  };
65
+ /**
66
+ * @internal
67
+ */
68
+ export const openLink = (url) => {
69
+ if (url.startsWith("mailto:")) {
70
+ location.href = url;
71
+ return;
72
+ }
73
+ const openAndFocus = (link) => {
74
+ const windowOpen = window.open(link, "_blank");
75
+ windowOpen?.focus();
76
+ };
77
+ if (url.startsWith("pw:")) {
78
+ // remove // or \\ from the link. Links with custom schema should use opaque path like `schema:path` instead of `schema://path`
79
+ const validUrl = url.replace(/pw:\/\/|pw:\\\\/g, "pw:");
80
+ openAndFocus(validUrl);
81
+ return;
82
+ }
83
+ openAndFocus(url);
84
+ };
65
85
  //# sourceMappingURL=Links.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Links.js","sourceRoot":"","sources":["../../../src/components-react/common/Links.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,wBAAwB;AAExB,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAEpD,OAAO;KACJ,GAAG,CAAC,KAAK,EAAE;IACV,QAAQ,EAAE,CACR,IAAY,EACZ,GAAW,EACX,IAAyB,EACjB,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,MAAM,CACrB,gBAAgB,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG;gBACjC,sHAAsH;gBACtH,oEAAoE,EACtE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF,CAAC;IACF;wHACoH;KACnH,GAAG,CAAC,MAAM,EAAE;IACX,QAAQ,EAAE,CACR,IAAY,EACZ,GAAW,EACX,IAAyB,EACjB,EAAE;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,CACtB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EACxE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS,EAAE,CAAC,KAAsB,EAAE,EAAE;QACpC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,KAAK,CAAC,GAAG,GAAG,UAAU,KAAK,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;CACF,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAY,EAC8D,EAAE;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;QACxC,OAAO,KAAK,CAAC;YACX,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO;QACZ,CAAC,CAAE,OAKE;QACL,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\n// cSpell:ignore linkify\n\nimport LinkifyIt from \"linkify-it\";\n\nconst linkify = new LinkifyIt({ fuzzyLink: false });\n\nlinkify\n .add(\"pw:\", {\n validate: (\n text: string,\n pos: number,\n self: LinkifyIt.LinkifyIt\n ): number => {\n const tail = text.slice(pos);\n\n if (!self.re.pw) {\n self.re.pw = new RegExp(\n `(//|\\\\\\\\\\\\\\\\)${self.re.src_host}:` +\n // Regex for path according to RFC 3986 standards plus the possibility to write '{}' brackets for ProjectWise monikers\n `([a-zA-Z0-9-._~!$&'()*+,;=@%{}]+/)+[a-zA-Z0-9-._~!$&'()*+,;=@%{}]*`,\n \"i\"\n );\n }\n if (self.re.pw.test(tail)) {\n const matches = tail.match(self.re.pw);\n if (matches !== null) return matches[0].length;\n }\n return 0;\n },\n })\n /* Adding a custom schema for links that start with `www.`.\n With fuzzyLink option set to true it matches text without `www.` as a prefix, which is not wanted in our case. */\n .add(\"www.\", {\n validate: (\n text: string,\n pos: number,\n self: LinkifyIt.LinkifyIt\n ): number => {\n const tail = text.slice(pos);\n\n if (!self.re.www) {\n self.re.www = new RegExp(\n `^${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`,\n \"i\"\n );\n }\n if (self.re.www.test(tail)) {\n const matches = tail.match(self.re.www);\n if (matches !== null) return matches[0].length;\n }\n return 0;\n },\n normalize: (match: LinkifyIt.Match) => {\n match.schema = \"http:\";\n match.url = `http://${match.url}`;\n },\n });\n\n/** Returns a list of links from a text\n * @public\n */\nexport const matchLinks = (\n text: string\n): Array<{ index: number; lastIndex: number; schema: string; url: string }> => {\n const head = text.slice(0, 5);\n if (head === \"pw://\" || head === \"pw:\\\\\\\\\")\n return Array({\n index: 0,\n lastIndex: text.length,\n schema: \"pw:\",\n url: text,\n });\n\n const matches = linkify.match(text);\n return matches\n ? (matches as Array<{\n index: number;\n lastIndex: number;\n schema: string;\n url: string;\n }>)\n : [];\n};\n"]}
1
+ {"version":3,"file":"Links.js","sourceRoot":"","sources":["../../../src/components-react/common/Links.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Common\n */\n\n// cSpell:ignore linkify\n\nimport LinkifyIt from \"linkify-it\";\n\nconst linkify = new LinkifyIt({ fuzzyLink: false });\n\nlinkify\n .add(\"pw:\", {\n validate: (\n text: string,\n pos: number,\n self: LinkifyIt.LinkifyIt\n ): number => {\n const tail = text.slice(pos);\n\n if (!self.re.pw) {\n self.re.pw = new RegExp(\n `(//|\\\\\\\\\\\\\\\\)${self.re.src_host}:` +\n // Regex for path according to RFC 3986 standards plus the possibility to write '{}' brackets for ProjectWise monikers\n `([a-zA-Z0-9-._~!$&'()*+,;=@%{}]+/)+[a-zA-Z0-9-._~!$&'()*+,;=@%{}]*`,\n \"i\"\n );\n }\n if (self.re.pw.test(tail)) {\n const matches = tail.match(self.re.pw);\n if (matches !== null) return matches[0].length;\n }\n return 0;\n },\n })\n /* Adding a custom schema for links that start with `www.`.\n With fuzzyLink option set to true it matches text without `www.` as a prefix, which is not wanted in our case. */\n .add(\"www.\", {\n validate: (\n text: string,\n pos: number,\n self: LinkifyIt.LinkifyIt\n ): number => {\n const tail = text.slice(pos);\n\n if (!self.re.www) {\n self.re.www = new RegExp(\n `^${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`,\n \"i\"\n );\n }\n if (self.re.www.test(tail)) {\n const matches = tail.match(self.re.www);\n if (matches !== null) return matches[0].length;\n }\n return 0;\n },\n normalize: (match: LinkifyIt.Match) => {\n match.schema = \"http:\";\n match.url = `http://${match.url}`;\n },\n });\n\n/** Returns a list of links from a text\n * @public\n */\nexport const matchLinks = (\n text: string\n): Array<{ index: number; lastIndex: number; schema: string; url: string }> => {\n const head = text.slice(0, 5);\n if (head === \"pw://\" || head === \"pw:\\\\\\\\\")\n return Array({\n index: 0,\n lastIndex: text.length,\n schema: \"pw:\",\n url: text,\n });\n\n const matches = linkify.match(text);\n return matches\n ? (matches as Array<{\n index: number;\n lastIndex: number;\n schema: string;\n url: string;\n }>)\n : [];\n};\n\n/**\n * @internal\n */\nexport const openLink = (url: string) => {\n if (url.startsWith(\"mailto:\")) {\n location.href = url;\n return;\n }\n\n const openAndFocus = (link: string) => {\n const windowOpen = window.open(link, \"_blank\");\n windowOpen?.focus();\n };\n\n if (url.startsWith(\"pw:\")) {\n // remove // or \\\\ from the link. Links with custom schema should use opaque path like `schema:path` instead of `schema://path`\n const validUrl = url.replace(/pw:\\/\\/|pw:\\\\\\\\/g, \"pw:\");\n openAndFocus(validUrl);\n return;\n }\n\n openAndFocus(url);\n};\n"]}
@@ -49,6 +49,8 @@ export interface EditorContainerProps extends CommonProps {
49
49
  onCancel: () => void;
50
50
  /** Indicates whether the Property Editor should set focus */
51
51
  setFocus?: boolean;
52
+ /** Handler for click */
53
+ onClick?: () => void;
52
54
  /** @internal */
53
55
  ignoreEditorBlur?: boolean;
54
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContainer.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/EditorContainer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAGV,cAAc,EACd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,uBAAuB;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,kCAAkC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9C,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,gBAAgB;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAC3D,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAmL1D"}
1
+ {"version":3,"file":"EditorContainer.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/EditorContainer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAGV,cAAc,EACd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,uBAAuB;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,kCAAkC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9C,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,gBAAgB;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAC3D,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAwL1D"}
@@ -15,10 +15,14 @@ import { PropertyEditorManager } from "./PropertyEditorManager.js";
15
15
  */
16
16
  // eslint-disable-next-line deprecation/deprecation
17
17
  export function EditorContainer(props) {
18
- const { ignoreEditorBlur, title, shouldCommitOnChange, propertyRecord, setFocus, onCommit, onCancel, ...rest } = props;
18
+ const { ignoreEditorBlur, title, shouldCommitOnChange, propertyRecord, setFocus, onCommit, onCancel, onClick, ...rest } = props;
19
19
  const editorRef = React.useRef();
20
20
  const propertyEditorRef = React.useRef();
21
- const handleClick = (e) => e.stopPropagation();
21
+ const handleClick = (e) => {
22
+ onClick?.();
23
+ e.stopPropagation();
24
+ };
25
+ const handleContextMenu = (e) => e.stopPropagation();
22
26
  const handleContainerBlur = (e) => e.stopPropagation();
23
27
  const handleEditorCommit = (args) => void commit(args);
24
28
  const handleContainerCommit = async () => {
@@ -134,7 +138,7 @@ export function EditorContainer(props) {
134
138
  const clonedNode = React.isValidElement(propertyEditorRef.current.reactNode)
135
139
  ? React.cloneElement(propertyEditorRef.current.reactNode, editorProps)
136
140
  : undefined;
137
- return (React.createElement("span", { className: "components-editor-container", onBlur: handleContainerBlur, onKeyDown: handleKeyDown, onClick: handleClick, onContextMenu: handleClick, title: title, "data-testid": "editor-container", role: "presentation" }, clonedNode));
141
+ return (React.createElement("span", { className: "components-editor-container", onBlur: handleContainerBlur, onKeyDown: handleKeyDown, onClick: handleClick, onContextMenu: handleContextMenu, title: title, "data-testid": "editor-container", role: "presentation" }, clonedNode));
138
142
  }
139
143
  function arePrimitiveValuesEqual(oldValue, newValue) {
140
144
  if (typeof oldValue !== typeof newValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContainer.js","sourceRoot":"","sources":["../../../src/components-react/editors/EditorContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\nimport \"./EditorContainer.scss\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n Primitives,\n PrimitiveValue,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, UiAdmin } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type {\n AsyncErrorMessage,\n PropertyEditorBase,\n} from \"./PropertyEditorManager.js\";\nimport { PropertyEditorManager } from \"./PropertyEditorManager.js\";\n\n/** Arguments for the Property Updated event callback\n * @public\n */\nexport interface PropertyUpdatedArgs {\n /** The property being updated. */\n propertyRecord: PropertyRecord;\n /** The new value for the property. */\n newValue: PropertyValue;\n}\n\n/** Properties for a property editor component\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface PropertyEditorProps extends CommonProps {\n /** The property being updated. */\n propertyRecord?: PropertyRecord;\n /** Handler for commit */\n onCommit?: (args: PropertyUpdatedArgs) => void;\n /** Handler for cancel */\n onCancel?: () => void;\n /** Handler for blur */\n onBlur?: (event: React.FocusEvent) => void;\n /** Indicates whether the Property Editor should set focus */\n setFocus?: boolean;\n /**\n * Indicates whether value change should call onCommit().\n * @internal\n */\n shouldCommitOnChange?: boolean;\n}\n\n/** [[EditorContainer]] React component properties\n * @public\n * @deprecated in 4.17.0. Use `React.ComponentProps<typeof EditorContainer>`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface EditorContainerProps extends CommonProps {\n /** The property being updated. */\n propertyRecord: PropertyRecord;\n /** Tooltip text */\n title?: string;\n /** Handler for commit */\n onCommit: (args: PropertyUpdatedArgs) => void;\n /** Handler for cancel */\n onCancel: () => void;\n /** Indicates whether the Property Editor should set focus */\n setFocus?: boolean;\n\n /** @internal */\n ignoreEditorBlur?: boolean;\n /**\n * Indicates whether value change should call onCommit().\n * @internal\n */\n shouldCommitOnChange?: boolean;\n}\n\ninterface CloneProps extends PropertyEditorProps {\n ref: (ref: TypeEditor | null) => void;\n}\n\n/** Interface implemented by React based type editors\n * @public\n */\nexport interface TypeEditor {\n getPropertyValue: () => Promise<PropertyValue | undefined>;\n htmlElement: HTMLElement | null;\n hasFocus: boolean;\n}\n\n/** EditorContainer React component used by the Tree and PropertyGrid for cell editing.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function EditorContainer(props: EditorContainerProps) {\n const {\n ignoreEditorBlur,\n title,\n shouldCommitOnChange,\n propertyRecord,\n setFocus,\n onCommit,\n onCancel,\n ...rest\n } = props;\n\n const editorRef = React.useRef<TypeEditor | undefined>();\n const propertyEditorRef = React.useRef<PropertyEditorBase | undefined>();\n\n const handleClick = (e: React.MouseEvent) => e.stopPropagation();\n const handleContainerBlur = (e: React.FocusEvent) => e.stopPropagation();\n const handleEditorCommit = (args: PropertyUpdatedArgs) => void commit(args);\n\n const handleContainerCommit = async () => {\n const newValue = editorRef && (await editorRef.current?.getPropertyValue());\n if (newValue === undefined) return;\n void commit({\n propertyRecord,\n newValue,\n });\n };\n\n const onPressEscape = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesEscape) return;\n e.stopPropagation();\n onCancel();\n };\n\n const onPressEnter = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesEnter) return;\n if (editorRef?.current?.hasFocus) e.stopPropagation();\n void handleContainerCommit();\n };\n\n const onPressTab = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesTab) return;\n e.stopPropagation();\n e.preventDefault();\n void handleContainerCommit();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n onPressEscape(e);\n break;\n case Key.Enter.valueOf():\n onPressEnter(e);\n break;\n case Key.Tab.valueOf():\n onPressTab(e);\n break;\n default:\n if (propertyEditorRef.current?.containerStopsKeydownPropagation)\n e.stopPropagation();\n }\n };\n\n const handleEditorBlur = () => {\n if (ignoreEditorBlur) return;\n if (!propertyEditorRef.current?.containerHandlesBlur) return;\n void handleContainerCommit();\n };\n\n const isNewValueValid = async (value: PropertyValue) => {\n if (!propertyEditorRef.current) return false;\n if (!propertyRecord) return false;\n\n const validateResult = await propertyEditorRef.current.validateValue(\n value,\n propertyRecord\n );\n\n if (validateResult.encounteredError) {\n displayOutputMessage(validateResult.errorMessage);\n return false;\n }\n\n return true;\n };\n\n const displayOutputMessage = (\n errorMessage: AsyncErrorMessage | undefined\n ) => {\n if (!errorMessage) return;\n if (!editorRef) return;\n\n const htmlElement = editorRef.current?.htmlElement;\n if (htmlElement)\n UiAdmin.messagePresenter.displayInputFieldMessage(\n htmlElement,\n errorMessage.severity,\n errorMessage.briefMessage,\n errorMessage.detailedMessage\n );\n else\n UiAdmin.messagePresenter.displayMessage(\n errorMessage.severity,\n errorMessage.briefMessage,\n errorMessage.detailedMessage,\n errorMessage.messageType\n );\n };\n\n const commit = async (args: PropertyUpdatedArgs) => {\n const oldValue = args.propertyRecord.value;\n const newValue = args.newValue;\n\n if (!shouldCommit(oldValue, newValue)) {\n return;\n }\n\n const isValid = await isNewValueValid(newValue);\n if (!isValid) return;\n\n if (propertyEditorRef.current && args.propertyRecord) {\n const commitResult = await propertyEditorRef.current.commitValue(\n newValue,\n args.propertyRecord\n );\n if (commitResult.encounteredError) {\n displayOutputMessage(commitResult.errorMessage);\n return;\n }\n }\n\n onCommit(args);\n };\n\n const editorProps: CloneProps = {\n ref: (ref) => {\n editorRef.current = ref ?? undefined;\n },\n onCommit: handleEditorCommit,\n onCancel,\n onBlur: handleEditorBlur,\n setFocus: setFocus !== undefined ? setFocus : true,\n propertyRecord,\n shouldCommitOnChange,\n ...rest,\n };\n\n const propDescription = propertyRecord.property;\n\n const editorName =\n propDescription.editor !== undefined\n ? propDescription.editor.name\n : undefined;\n\n propertyEditorRef.current = PropertyEditorManager.createEditor(\n propDescription.typename,\n editorName,\n propDescription.dataController\n );\n\n const clonedNode = React.isValidElement(propertyEditorRef.current.reactNode)\n ? React.cloneElement(propertyEditorRef.current.reactNode, editorProps)\n : undefined;\n\n return (\n <span\n className=\"components-editor-container\"\n onBlur={handleContainerBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n onContextMenu={handleClick}\n title={title}\n data-testid=\"editor-container\"\n role=\"presentation\"\n >\n {clonedNode}\n </span>\n );\n}\n\nfunction arePrimitiveValuesEqual(\n oldValue: Primitives.Value,\n newValue: Primitives.Value\n): boolean {\n if (typeof oldValue !== typeof newValue) {\n return false;\n }\n // directly compare simple types\n if (typeof newValue !== \"object\" || newValue instanceof Date) {\n return newValue === oldValue;\n }\n // compare all members of arrays\n if (newValue instanceof Array) {\n if (!(oldValue instanceof Array)) {\n return false;\n }\n if (newValue.length !== oldValue.length) {\n return false;\n }\n for (let i = 0; i < newValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n }\n // compare `Point2d` and `Point3d` types\n if (\"x\" in newValue) {\n if (typeof oldValue !== \"object\" || !(\"x\" in oldValue)) {\n return false;\n }\n if (\"z\" in newValue) {\n if (!(\"z\" in oldValue)) {\n return false;\n }\n return (\n newValue.x === oldValue.x &&\n newValue.y === oldValue.y &&\n newValue.z === oldValue.z\n );\n } else if (\"z\" in oldValue) {\n return false;\n }\n return newValue.x === oldValue.x && newValue.y === oldValue.y;\n }\n // compare instance keys\n if (\"className\" in newValue) {\n if (typeof oldValue !== \"object\" || !(\"className\" in oldValue)) {\n return false;\n }\n return (\n oldValue.className === newValue.className && oldValue.id === newValue.id\n );\n }\n return false;\n}\n\nfunction shouldCommit(oldValue: PropertyValue, newValue: PropertyValue) {\n if (\n oldValue.valueFormat !== newValue.valueFormat ||\n newValue.valueFormat !== PropertyValueFormat.Primitive\n ) {\n return true;\n }\n const oldPrimitiveValue = oldValue as PrimitiveValue;\n if (!oldPrimitiveValue.value && !newValue.value) {\n return false;\n }\n if (\n (!oldPrimitiveValue.value && newValue.value) ||\n (oldPrimitiveValue.value && !newValue.value)\n ) {\n return true;\n }\n return !arePrimitiveValuesEqual(oldPrimitiveValue.value!, newValue.value!);\n}\n"]}
1
+ {"version":3,"file":"EditorContainer.js","sourceRoot":"","sources":["../../../src/components-react/editors/EditorContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyEditors\n */\n\nimport \"./EditorContainer.scss\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n Primitives,\n PrimitiveValue,\n PropertyRecord,\n PropertyValue,\n} from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, UiAdmin } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type {\n AsyncErrorMessage,\n PropertyEditorBase,\n} from \"./PropertyEditorManager.js\";\nimport { PropertyEditorManager } from \"./PropertyEditorManager.js\";\n\n/** Arguments for the Property Updated event callback\n * @public\n */\nexport interface PropertyUpdatedArgs {\n /** The property being updated. */\n propertyRecord: PropertyRecord;\n /** The new value for the property. */\n newValue: PropertyValue;\n}\n\n/** Properties for a property editor component\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface PropertyEditorProps extends CommonProps {\n /** The property being updated. */\n propertyRecord?: PropertyRecord;\n /** Handler for commit */\n onCommit?: (args: PropertyUpdatedArgs) => void;\n /** Handler for cancel */\n onCancel?: () => void;\n /** Handler for blur */\n onBlur?: (event: React.FocusEvent) => void;\n /** Indicates whether the Property Editor should set focus */\n setFocus?: boolean;\n /**\n * Indicates whether value change should call onCommit().\n * @internal\n */\n shouldCommitOnChange?: boolean;\n}\n\n/** [[EditorContainer]] React component properties\n * @public\n * @deprecated in 4.17.0. Use `React.ComponentProps<typeof EditorContainer>`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface EditorContainerProps extends CommonProps {\n /** The property being updated. */\n propertyRecord: PropertyRecord;\n /** Tooltip text */\n title?: string;\n /** Handler for commit */\n onCommit: (args: PropertyUpdatedArgs) => void;\n /** Handler for cancel */\n onCancel: () => void;\n /** Indicates whether the Property Editor should set focus */\n setFocus?: boolean;\n /** Handler for click */\n onClick?: () => void;\n\n /** @internal */\n ignoreEditorBlur?: boolean;\n /**\n * Indicates whether value change should call onCommit().\n * @internal\n */\n shouldCommitOnChange?: boolean;\n}\n\ninterface CloneProps extends PropertyEditorProps {\n ref: (ref: TypeEditor | null) => void;\n}\n\n/** Interface implemented by React based type editors\n * @public\n */\nexport interface TypeEditor {\n getPropertyValue: () => Promise<PropertyValue | undefined>;\n htmlElement: HTMLElement | null;\n hasFocus: boolean;\n}\n\n/** EditorContainer React component used by the Tree and PropertyGrid for cell editing.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function EditorContainer(props: EditorContainerProps) {\n const {\n ignoreEditorBlur,\n title,\n shouldCommitOnChange,\n propertyRecord,\n setFocus,\n onCommit,\n onCancel,\n onClick,\n ...rest\n } = props;\n\n const editorRef = React.useRef<TypeEditor | undefined>();\n const propertyEditorRef = React.useRef<PropertyEditorBase | undefined>();\n\n const handleClick = (e: React.MouseEvent) => {\n onClick?.();\n e.stopPropagation();\n };\n const handleContextMenu = (e: React.MouseEvent) => e.stopPropagation();\n const handleContainerBlur = (e: React.FocusEvent) => e.stopPropagation();\n const handleEditorCommit = (args: PropertyUpdatedArgs) => void commit(args);\n\n const handleContainerCommit = async () => {\n const newValue = editorRef && (await editorRef.current?.getPropertyValue());\n if (newValue === undefined) return;\n void commit({\n propertyRecord,\n newValue,\n });\n };\n\n const onPressEscape = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesEscape) return;\n e.stopPropagation();\n onCancel();\n };\n\n const onPressEnter = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesEnter) return;\n if (editorRef?.current?.hasFocus) e.stopPropagation();\n void handleContainerCommit();\n };\n\n const onPressTab = (e: React.KeyboardEvent) => {\n if (!propertyEditorRef.current?.containerHandlesTab) return;\n e.stopPropagation();\n e.preventDefault();\n void handleContainerCommit();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n onPressEscape(e);\n break;\n case Key.Enter.valueOf():\n onPressEnter(e);\n break;\n case Key.Tab.valueOf():\n onPressTab(e);\n break;\n default:\n if (propertyEditorRef.current?.containerStopsKeydownPropagation)\n e.stopPropagation();\n }\n };\n\n const handleEditorBlur = () => {\n if (ignoreEditorBlur) return;\n if (!propertyEditorRef.current?.containerHandlesBlur) return;\n void handleContainerCommit();\n };\n\n const isNewValueValid = async (value: PropertyValue) => {\n if (!propertyEditorRef.current) return false;\n if (!propertyRecord) return false;\n\n const validateResult = await propertyEditorRef.current.validateValue(\n value,\n propertyRecord\n );\n\n if (validateResult.encounteredError) {\n displayOutputMessage(validateResult.errorMessage);\n return false;\n }\n\n return true;\n };\n\n const displayOutputMessage = (\n errorMessage: AsyncErrorMessage | undefined\n ) => {\n if (!errorMessage) return;\n if (!editorRef) return;\n\n const htmlElement = editorRef.current?.htmlElement;\n if (htmlElement)\n UiAdmin.messagePresenter.displayInputFieldMessage(\n htmlElement,\n errorMessage.severity,\n errorMessage.briefMessage,\n errorMessage.detailedMessage\n );\n else\n UiAdmin.messagePresenter.displayMessage(\n errorMessage.severity,\n errorMessage.briefMessage,\n errorMessage.detailedMessage,\n errorMessage.messageType\n );\n };\n\n const commit = async (args: PropertyUpdatedArgs) => {\n const oldValue = args.propertyRecord.value;\n const newValue = args.newValue;\n\n if (!shouldCommit(oldValue, newValue)) {\n return;\n }\n\n const isValid = await isNewValueValid(newValue);\n if (!isValid) return;\n\n if (propertyEditorRef.current && args.propertyRecord) {\n const commitResult = await propertyEditorRef.current.commitValue(\n newValue,\n args.propertyRecord\n );\n if (commitResult.encounteredError) {\n displayOutputMessage(commitResult.errorMessage);\n return;\n }\n }\n\n onCommit(args);\n };\n\n const editorProps: CloneProps = {\n ref: (ref) => {\n editorRef.current = ref ?? undefined;\n },\n onCommit: handleEditorCommit,\n onCancel,\n onBlur: handleEditorBlur,\n setFocus: setFocus !== undefined ? setFocus : true,\n propertyRecord,\n shouldCommitOnChange,\n ...rest,\n };\n\n const propDescription = propertyRecord.property;\n\n const editorName =\n propDescription.editor !== undefined\n ? propDescription.editor.name\n : undefined;\n\n propertyEditorRef.current = PropertyEditorManager.createEditor(\n propDescription.typename,\n editorName,\n propDescription.dataController\n );\n\n const clonedNode = React.isValidElement(propertyEditorRef.current.reactNode)\n ? React.cloneElement(propertyEditorRef.current.reactNode, editorProps)\n : undefined;\n\n return (\n <span\n className=\"components-editor-container\"\n onBlur={handleContainerBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n title={title}\n data-testid=\"editor-container\"\n role=\"presentation\"\n >\n {clonedNode}\n </span>\n );\n}\n\nfunction arePrimitiveValuesEqual(\n oldValue: Primitives.Value,\n newValue: Primitives.Value\n): boolean {\n if (typeof oldValue !== typeof newValue) {\n return false;\n }\n // directly compare simple types\n if (typeof newValue !== \"object\" || newValue instanceof Date) {\n return newValue === oldValue;\n }\n // compare all members of arrays\n if (newValue instanceof Array) {\n if (!(oldValue instanceof Array)) {\n return false;\n }\n if (newValue.length !== oldValue.length) {\n return false;\n }\n for (let i = 0; i < newValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n }\n // compare `Point2d` and `Point3d` types\n if (\"x\" in newValue) {\n if (typeof oldValue !== \"object\" || !(\"x\" in oldValue)) {\n return false;\n }\n if (\"z\" in newValue) {\n if (!(\"z\" in oldValue)) {\n return false;\n }\n return (\n newValue.x === oldValue.x &&\n newValue.y === oldValue.y &&\n newValue.z === oldValue.z\n );\n } else if (\"z\" in oldValue) {\n return false;\n }\n return newValue.x === oldValue.x && newValue.y === oldValue.y;\n }\n // compare instance keys\n if (\"className\" in newValue) {\n if (typeof oldValue !== \"object\" || !(\"className\" in oldValue)) {\n return false;\n }\n return (\n oldValue.className === newValue.className && oldValue.id === newValue.id\n );\n }\n return false;\n}\n\nfunction shouldCommit(oldValue: PropertyValue, newValue: PropertyValue) {\n if (\n oldValue.valueFormat !== newValue.valueFormat ||\n newValue.valueFormat !== PropertyValueFormat.Primitive\n ) {\n return true;\n }\n const oldPrimitiveValue = oldValue as PrimitiveValue;\n if (!oldPrimitiveValue.value && !newValue.value) {\n return false;\n }\n if (\n (!oldPrimitiveValue.value && newValue.value) ||\n (oldPrimitiveValue.value && !newValue.value)\n ) {\n return true;\n }\n return !arePrimitiveValuesEqual(oldPrimitiveValue.value!, newValue.value!);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EnumButtonGroupEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/EnumButtonGroupEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EAGd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKhE,gBAAgB;AAChB,UAAU,0BAA0B;IAClC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,qBACX,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,0BAA0B,CACvE,YAAW,UAAU;IAErB,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAAqC;IAExD,SAAyB,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAIlE;IAEW,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAenE,IAAW,WAAW,IAAI,WAAW,GAAG,IAAI,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAK7B;IAEe,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE,mBAAmB;YAMnD,iBAAiB;IA0D/B,OAAO,CAAC,kBAAkB,CAoBxB;IAEF,OAAO,CAAC,SAAS;IAkCD,MAAM;CAkBvB;AAED;;;GAGG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,IAAW,SAAS,IAAI,KAAK,CAAC,SAAS,CAEtC;CACF"}
1
+ {"version":3,"file":"EnumButtonGroupEditor.d.ts","sourceRoot":"","sources":["../../../src/components-react/editors/EnumButtonGroupEditor.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EAGd,aAAa,EACd,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKhE,gBAAgB;AAChB,UAAU,0BAA0B;IAClC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,qBACX,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,0BAA0B,CACvE,YAAW,UAAU;IAErB,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAAqC;IAExD,SAAyB,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAIlE;IAEW,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAenE,IAAW,WAAW,IAAI,WAAW,GAAG,IAAI,CAE3C;IAED,IAAW,QAAQ,IAAI,OAAO,CAK7B;IAEe,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE,mBAAmB;YAMnD,iBAAiB;IA0D/B,OAAO,CAAC,kBAAkB,CAoBxB;IAEF,OAAO,CAAC,SAAS;IA0CD,MAAM;CAkBvB;AAED;;;GAGG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,IAAW,SAAS,IAAI,KAAK,CAAC,SAAS,CAEtC;CACF"}