@itwin/components-react 5.0.0-dev.2 → 5.0.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components-react/_target.scss +10 -0
- package/lib/cjs/components-react/datepicker/DateField.scss +19 -0
- package/lib/cjs/components-react/datepicker/DatePicker.scss +179 -0
- package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +56 -0
- package/lib/cjs/components-react/datepicker/TimeField.scss +72 -0
- package/lib/cjs/components-react/editors/BooleanEditor.scss +22 -0
- package/lib/cjs/components-react/editors/CustomNumberEditor.scss +19 -0
- package/lib/cjs/components-react/editors/DateTimeEditor.scss +9 -0
- package/lib/cjs/components-react/editors/EditorContainer.scss +7 -0
- package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +141 -0
- package/lib/cjs/components-react/editors/EnumEditor.scss +21 -0
- package/lib/cjs/components-react/editors/IconEditor.scss +14 -0
- package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +24 -0
- package/lib/cjs/components-react/editors/NumericInputEditor.scss +13 -0
- package/lib/cjs/components-react/editors/PopupButton.scss +112 -0
- package/lib/cjs/components-react/editors/SliderEditor.scss +14 -0
- package/lib/cjs/components-react/editors/TextEditor.scss +19 -0
- package/lib/cjs/components-react/editors/TextareaEditor.scss +13 -0
- package/lib/cjs/components-react/editors/ToggleEditor.scss +17 -0
- package/lib/cjs/components-react/editors/variables.scss +10 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +40 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +35 -0
- package/lib/cjs/components-react/filtering/FilteringInput.scss +58 -0
- package/lib/cjs/components-react/filtering/ResultSelector.scss +66 -0
- package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +74 -0
- package/lib/cjs/components-react/inputs/ParsedInput.scss +20 -0
- package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +25 -0
- package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -0
- package/lib/cjs/components-react/properties/renderers/PropertyView.scss +110 -0
- package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +87 -0
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +55 -0
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +100 -0
- package/lib/cjs/components-react/selectable-content/SelectableContent.scss +20 -0
- package/lib/cjs/components-react/toolbar/Item.scss +94 -0
- package/lib/cjs/components-react/toolbar/ItemWrapper.scss +10 -0
- package/lib/cjs/components-react/toolbar/Items.scss +96 -0
- package/lib/cjs/components-react/toolbar/Overflow.scss +57 -0
- package/lib/cjs/components-react/toolbar/OverflowPanel.scss +37 -0
- package/lib/cjs/components-react/toolbar/PopupItem.scss +81 -0
- package/lib/cjs/components-react/toolbar/Toolbar.scss +16 -0
- package/lib/cjs/components-react/toolbar/_variables.scss +34 -0
- package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +44 -0
- package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +9 -0
- package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +10 -0
- package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +15 -0
- package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +33 -0
- package/lib/cjs/components-react/toolbar/groupPanel/_variables.scss +17 -0
- package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.scss +30 -0
- package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +117 -0
- package/lib/cjs/components-react/toolbar/groupPanel/tool/_variables.scss +15 -0
- package/lib/cjs/components-react/tree/HighlightingEngine.scss +8 -0
- package/lib/cjs/components-react/tree/controlled/component/ControlledTree.scss +102 -0
- package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +27 -0
- package/lib/components-react/common/Links.d.ts +4 -0
- package/lib/components-react/common/Links.d.ts.map +1 -1
- package/lib/components-react/common/Links.js +20 -0
- package/lib/components-react/common/Links.js.map +1 -1
- package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
- package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.js +2 -10
- package/lib/components-react/properties/renderers/value/UrlPropertyValueRenderer.js.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
- package/lib/components-react/propertygrid/component/PropertyGridCommons.js +4 -9
- package/lib/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/esm/components-react/_target.scss +10 -0
- package/lib/esm/components-react/datepicker/DateField.scss +19 -0
- package/lib/esm/components-react/datepicker/DatePicker.scss +179 -0
- package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +56 -0
- package/lib/esm/components-react/datepicker/TimeField.scss +72 -0
- package/lib/esm/components-react/editors/BooleanEditor.scss +22 -0
- package/lib/esm/components-react/editors/CustomNumberEditor.scss +19 -0
- package/lib/esm/components-react/editors/DateTimeEditor.scss +9 -0
- package/lib/esm/components-react/editors/EditorContainer.scss +7 -0
- package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +141 -0
- package/lib/esm/components-react/editors/EnumEditor.scss +21 -0
- package/lib/esm/components-react/editors/IconEditor.scss +14 -0
- package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +24 -0
- package/lib/esm/components-react/editors/NumericInputEditor.scss +13 -0
- package/lib/esm/components-react/editors/PopupButton.scss +112 -0
- package/lib/esm/components-react/editors/SliderEditor.scss +14 -0
- package/lib/esm/components-react/editors/TextEditor.scss +19 -0
- package/lib/esm/components-react/editors/TextareaEditor.scss +13 -0
- package/lib/esm/components-react/editors/ToggleEditor.scss +17 -0
- package/lib/esm/components-react/editors/variables.scss +10 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +40 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +35 -0
- package/lib/esm/components-react/filtering/FilteringInput.scss +58 -0
- package/lib/esm/components-react/filtering/ResultSelector.scss +66 -0
- package/lib/esm/components-react/iconpicker/IconPickerButton.scss +74 -0
- package/lib/esm/components-react/inputs/ParsedInput.scss +20 -0
- package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +25 -0
- package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +17 -0
- package/lib/esm/components-react/properties/renderers/PropertyView.scss +110 -0
- package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +87 -0
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +55 -0
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +100 -0
- package/lib/esm/components-react/selectable-content/SelectableContent.scss +20 -0
- package/lib/esm/components-react/toolbar/Item.scss +94 -0
- package/lib/esm/components-react/toolbar/ItemWrapper.scss +10 -0
- package/lib/esm/components-react/toolbar/Items.scss +96 -0
- package/lib/esm/components-react/toolbar/Overflow.scss +57 -0
- package/lib/esm/components-react/toolbar/OverflowPanel.scss +37 -0
- package/lib/esm/components-react/toolbar/PopupItem.scss +81 -0
- package/lib/esm/components-react/toolbar/Toolbar.scss +16 -0
- package/lib/esm/components-react/toolbar/_variables.scss +34 -0
- package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +44 -0
- package/lib/esm/components-react/toolbar/groupPanel/Column.scss +9 -0
- package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +10 -0
- package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +15 -0
- package/lib/esm/components-react/toolbar/groupPanel/Title.scss +33 -0
- package/lib/esm/components-react/toolbar/groupPanel/_variables.scss +17 -0
- package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.scss +30 -0
- package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +117 -0
- package/lib/esm/components-react/toolbar/groupPanel/tool/_variables.scss +15 -0
- package/lib/esm/components-react/tree/HighlightingEngine.scss +8 -0
- package/lib/esm/components-react/tree/controlled/component/ControlledTree.scss +102 -0
- package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +27 -0
- package/package.json +9 -14
|
@@ -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
|
+
}
|
|
@@ -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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlPropertyValueRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/properties/renderers/value/UrlPropertyValueRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"UrlPropertyValueRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/properties/renderers/value/UrlPropertyValueRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,+BAA+B,CAAC;AAKvC;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IACrE,uDAAuD;IAChD,SAAS,CAAC,MAAM,EAAE,cAAc;IAWvC,iEAAiE;IAC1D,MAAM,CACX,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,4BAA4B;CAWzC"}
|
|
@@ -9,6 +9,7 @@ import * as React from "react";
|
|
|
9
9
|
import { PropertyValueFormat, StandardTypeNames } from "@itwin/appui-abstract";
|
|
10
10
|
import { PrimitivePropertyValueRendererImpl } from "./PrimitivePropertyValueRenderer.js";
|
|
11
11
|
import { convertRecordToString } from "./Common.js";
|
|
12
|
+
import { openLink } from "../../../common/Links.js";
|
|
12
13
|
/**
|
|
13
14
|
* URL property value renderer that renders the whole value as a URL without matching it
|
|
14
15
|
* against URL regex.
|
|
@@ -30,16 +31,7 @@ export class UrlPropertyValueRenderer {
|
|
|
30
31
|
return (React.createElement(PrimitivePropertyValueRendererImpl, { record: record, context: context, stringValueCalculator: convertRecordToString, linksHandler: URI_PROPERTY_LINK_HANDLER }));
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
function handleClick(text) {
|
|
34
|
-
if (text.startsWith("mailto:")) {
|
|
35
|
-
location.href = text;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
const windowOpen = window.open(text, "_blank");
|
|
39
|
-
windowOpen?.focus();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
34
|
const URI_PROPERTY_LINK_HANDLER = {
|
|
43
|
-
onClick:
|
|
35
|
+
onClick: openLink,
|
|
44
36
|
};
|
|
45
37
|
//# sourceMappingURL=UrlPropertyValueRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlPropertyValueRenderer.js","sourceRoot":"","sources":["../../../../../src/components-react/properties/renderers/value/UrlPropertyValueRenderer.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/E,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IACnC,uDAAuD;IAChD,SAAS,CAAC,MAAsB;QACrC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,mBAAmB,CAAC,SAAS;YAC1D;gBACE,iBAAiB,CAAC,GAAG;gBACrB,iBAAiB,CAAC,MAAM;gBACxB,iBAAiB,CAAC,IAAI;aACvB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAA6B,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,iEAAiE;IAC1D,MAAM,CACX,MAAsB,EACtB,OAAsC;QAEtC,OAAO,CACL,oBAAC,kCAAkC,IACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,yBAAyB,GACvC,CACH,CAAC;IACJ,CAAC;CACF;AAED,
|
|
1
|
+
{"version":3,"file":"UrlPropertyValueRenderer.js","sourceRoot":"","sources":["../../../../../src/components-react/properties/renderers/value/UrlPropertyValueRenderer.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/E,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IACnC,uDAAuD;IAChD,SAAS,CAAC,MAAsB;QACrC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,mBAAmB,CAAC,SAAS;YAC1D;gBACE,iBAAiB,CAAC,GAAG;gBACrB,iBAAiB,CAAC,MAAM;gBACxB,iBAAiB,CAAC,IAAI;aACvB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAA6B,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,iEAAiE;IAC1D,MAAM,CACX,MAAsB,EACtB,OAAsC;QAEtC,OAAO,CACL,oBAAC,kCAAkC,IACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,yBAAyB,GACvC,CACH,CAAC;IACJ,CAAC;CACF;AAED,MAAM,yBAAyB,GAAqB;IAClD,OAAO,EAAE,QAAQ;CAClB,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 Properties\n */\n\nimport * as React from \"react\";\nimport type { LinkElementsInfo, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\nimport type {\n IPropertyValueRenderer,\n PropertyValueRendererContext,\n} from \"../../ValueRendererManager.js\";\nimport { PrimitivePropertyValueRendererImpl } from \"./PrimitivePropertyValueRenderer.js\";\nimport { convertRecordToString } from \"./Common.js\";\nimport { openLink } from \"../../../common/Links.js\";\n\n/**\n * URL property value renderer that renders the whole value as a URL without matching it\n * against URL regex.\n *\n * @public\n */\nexport class UrlPropertyValueRenderer implements IPropertyValueRenderer {\n /** Checks if the renderer can handle given property */\n public canRender(record: PropertyRecord) {\n return (\n record.value.valueFormat === PropertyValueFormat.Primitive &&\n [\n StandardTypeNames.URL,\n StandardTypeNames.String,\n StandardTypeNames.Text,\n ].includes(record.property.typename as StandardTypeNames)\n );\n }\n\n /** Method that returns a JSX representation of PropertyRecord */\n public render(\n record: PropertyRecord,\n context?: PropertyValueRendererContext\n ) {\n return (\n <PrimitivePropertyValueRendererImpl\n record={record}\n context={context}\n stringValueCalculator={convertRecordToString}\n linksHandler={URI_PROPERTY_LINK_HANDLER}\n />\n );\n }\n}\n\nconst URI_PROPERTY_LINK_HANDLER: LinkElementsInfo = {\n onClick: openLink,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyGridCommons.d.ts","sourceRoot":"","sources":["../../../../src/components-react/propertygrid/component/PropertyGridCommons.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAE7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mCAAmC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,sDAAsD;IACtD,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;CACzB;AAED;;;GAGG;AAEH,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,iGAAiG;IACjG,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAEpE,0CAA0C;IAC1C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,2DAA2D;IAC3D,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,qCAAqC;IACrC,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAEhE,wCAAwC;IACxC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,gBAAgB,KACvB,IAAI,CAAC;IACV,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,gBAAgB,KACvB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,6CAA6C;IAC7C,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAE5D,uIAAuI;IACvI,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0GAA0G;IAC1G,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,iCACf,SAAQ,0BAA0B;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,gBAAgB;AAChB,qBAAa,mBAAmB;WAChB,qBAAqB,CACjC,KAAK,EAAE,MAAM,EACb,oBAAoB,CAAC,EAAE,WAAW,EAClC,kBAAkB,CAAC,EAAE,OAAO,EAC5B,6BAA6B,CAAC,EAAE,MAAM,GACrC,WAAW;IAWd;;;OAGG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"PropertyGridCommons.d.ts","sourceRoot":"","sources":["../../../../src/components-react/propertygrid/component/PropertyGridCommons.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module PropertyGrid
|
|
7
7
|
*/
|
|
8
|
-
import { matchLinks } from "../../common/Links.js";
|
|
8
|
+
import { matchLinks, openLink } from "../../common/Links.js";
|
|
9
9
|
import { Orientation } from "../../common/Orientation.js";
|
|
10
10
|
/** @internal */
|
|
11
11
|
export class PropertyGridCommons {
|
|
@@ -28,15 +28,10 @@ export class PropertyGridCommons {
|
|
|
28
28
|
if (linksArray.length <= 0)
|
|
29
29
|
return;
|
|
30
30
|
const foundLink = linksArray[0];
|
|
31
|
-
if (foundLink
|
|
32
|
-
|
|
33
|
-
location.href = foundLink.url;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
const windowOpen = window.open(foundLink.url, "_blank");
|
|
37
|
-
windowOpen?.focus();
|
|
38
|
-
}
|
|
31
|
+
if (!foundLink || !foundLink.url) {
|
|
32
|
+
return;
|
|
39
33
|
}
|
|
34
|
+
openLink(foundLink.url);
|
|
40
35
|
}
|
|
41
36
|
}
|
|
42
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyGridCommons.js","sourceRoot":"","sources":["../../../../src/components-react/propertygrid/component/PropertyGridCommons.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"PropertyGridCommons.js","sourceRoot":"","sources":["../../../../src/components-react/propertygrid/component/PropertyGridCommons.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAKH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AA4F1D,gBAAgB;AAChB,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,qBAAqB,CACjC,KAAa,EACb,oBAAkC,EAClC,kBAA4B,EAC5B,6BAAsC;QAEtC,MAAM,WAAW,GAAG,oBAAoB,IAAI,WAAW,CAAC,UAAU,CAAC;QACnE,IAAI,kBAAkB;YAAE,OAAO,WAAW,CAAC;QAE3C,6BAA6B,GAAG,6BAA6B,IAAI,GAAG,CAAC;QACrE,wCAAwC;QACxC,IAAI,KAAK,GAAG,6BAA6B;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC;QAEvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,eAAe,CAAC,IAAY;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;;AAED;;;GAGG;AACW,4BAAQ,GAAG,CACvB,KAAa,EAC0B,EAAE;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAC1B,CAAC,QAA8C,EAAE,EAAE;QACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC5D,CAAC,CACF,CAAC;AACJ,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 PropertyGrid\n */\n\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { HighlightingComponentProps } from \"../../common/HighlightingComponentProps.js\";\nimport { matchLinks, openLink } from \"../../common/Links.js\";\nimport type { PropertyUpdatedArgs } from \"../../editors/EditorContainer.js\";\nimport type { ActionButtonRenderer } from \"../../properties/renderers/ActionButtonRenderer.js\";\nimport type { PropertyValueRendererManager } from \"../../properties/ValueRendererManager.js\";\nimport type { FilteredType } from \"../dataproviders/filterers/PropertyDataFiltererBase.js\";\nimport type { PropertyCategory } from \"../PropertyDataProvider.js\";\nimport { Orientation } from \"../../common/Orientation.js\";\n\n/** Arguments for the Property Editing event callback\n * @public\n */\nexport interface PropertyEditingArgs {\n /** PropertyRecord being edited */\n propertyRecord: PropertyRecord;\n /** Unique key of currently edited property */\n propertyKey?: string;\n}\n\n/** Arguments for `PropertyGridProps.onPropertyContextMenu` callback\n * @public\n */\nexport interface PropertyGridContextMenuArgs {\n /** PropertyRecord being edited */\n propertyRecord: PropertyRecord;\n /** An event which caused the context menu callback */\n event: React.MouseEvent;\n}\n\n/**\n * Common Property Grid Props to be used by Property Grid Variants\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CommonPropertyGridProps extends CommonProps {\n /** Grid orientation. When not defined, it is chosen automatically based on width of the grid. */\n orientation?: Orientation;\n\n /** Enables/disables property hovering effect */\n isPropertyHoverEnabled?: boolean;\n\n /** Called to show a context menu when properties are right-clicked */\n onPropertyContextMenu?: (args: PropertyGridContextMenuArgs) => void;\n\n /** Enables/disables property selection */\n isPropertySelectionEnabled?: boolean;\n /** Enables/disables property selection with right click */\n isPropertySelectionOnRightClickEnabled?: boolean;\n /** Callback to property selection */\n onPropertySelectionChanged?: (property: PropertyRecord) => void;\n\n /** Enables/disables property editing */\n isPropertyEditingEnabled?: boolean;\n /** Callback for when properties are being edited */\n onPropertyEditing?: (\n args: PropertyEditingArgs,\n category: PropertyCategory\n ) => void;\n /** Callback for when properties are updated */\n onPropertyUpdated?: (\n args: PropertyUpdatedArgs,\n category: PropertyCategory\n ) => Promise<boolean>;\n\n /** Custom property value renderer manager */\n propertyValueRendererManager?: PropertyValueRendererManager;\n\n /** Indicates whether the orientation is fixed and does not auto-switch to Vertical when the width is too narrow. Defaults to false. */\n isOrientationFixed?: boolean;\n /** The minimum width before the auto-switch to Vertical when the width is too narrow. Defaults to 300. */\n horizontalOrientationMinWidth?: number;\n\n /** Minimum allowed label column width, after which resizing stops */\n minLabelWidth?: number;\n /** Minimum allowed value column width, after which resizing stops */\n minValueWidth?: number;\n /** Fixed action button column width */\n actionButtonWidth?: number;\n\n /**\n * Array of action button renderers. Each renderer is called for each property and can decide\n * to render an action button for the property or not.\n */\n actionButtonRenderers?: ActionButtonRenderer[];\n}\n\n/**\n * Properties for highlighting text in property grid.\n * @public\n */\nexport interface PropertyGridContentHighlightProps\n extends HighlightingComponentProps {\n /**\n * Specifies what the highlighting should be applied on - category labels, property labels and / or property values.\n * Defaults to \"nowhere\".\n */\n filteredTypes?: FilteredType[];\n}\n\n/** @internal */\nexport class PropertyGridCommons {\n public static getCurrentOrientation(\n width: number,\n preferredOrientation?: Orientation,\n isOrientationFixed?: boolean,\n horizontalOrientationMinWidth?: number\n ): Orientation {\n const orientation = preferredOrientation ?? Orientation.Horizontal;\n if (isOrientationFixed) return orientation;\n\n horizontalOrientationMinWidth = horizontalOrientationMinWidth ?? 300;\n // Switch to Vertical if width too small\n if (width < horizontalOrientationMinWidth) return Orientation.Vertical;\n\n return orientation;\n }\n\n /**\n * Helper method to handle link clicks\n * @internal\n */\n public static handleLinkClick(text: string) {\n const linksArray = matchLinks(text);\n if (linksArray.length <= 0) return;\n const foundLink = linksArray[0];\n if (!foundLink || !foundLink.url) {\n return;\n }\n\n openLink(foundLink.url);\n }\n\n /**\n * A helper method to get links from string.\n * @internal\n */\n public static getLinks = (\n value: string\n ): Array<{ start: number; end: number }> => {\n return matchLinks(value).map(\n (linkInfo: { index: number; lastIndex: number }) => {\n return { start: linkInfo.index, end: linkInfo.lastIndex };\n }\n );\n };\n}\n"]}
|
|
@@ -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
|
+
@mixin components-internal-targeted {
|
|
6
|
+
&:hover,
|
|
7
|
+
&.components-targeted {
|
|
8
|
+
@content;
|
|
9
|
+
}
|
|
10
|
+
}
|