cx 26.4.2 → 26.4.4

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.
@@ -1,227 +1,234 @@
1
- @use "sass:math";
2
- @use "sass:map";
3
- @use "../variables" as *;
4
- @use "../maps" as *;
5
- @use "../../util/scss/add-rules.scss" as *;
6
- @use "../../util/scss/clockwise.scss" as *;
7
- @use "../../util/scss/besm.scss" as *;
8
- @use "../../util/scss/calc.scss" as *;
9
- @use "../../util/scss/include.scss" as *;
10
- @use "./Field.scss" as *;
11
-
12
- @mixin cx-lookupfield(
13
- $name: "lookupfield",
14
- $state-style-map: $cx-std-field-state-style-map,
15
- $placeholder: $cx-input-placeholder,
16
- $empty-text: $cx-empty-text,
17
- $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
18
- $clear-state-style-map: $cx-clear-state-style-map,
19
- $tool-state-style-map: $cx-input-right-icon-state-style-map,
20
- $icon-size: $cx-default-input-icon-size,
21
- $width: $cx-default-input-width,
22
- $tag-state-style-map: $cx-input-tag-state-style-map,
23
- $tag-clear-state-style-map: $cx-input-tag-clear-state-style-map,
24
- $besm: $cx-besm
25
- ) {
26
- $block: map.get($besm, block);
27
- $element: map.get($besm, element);
28
- $state: map.get($besm, state);
29
-
30
- $padding: cx-get-state-rule($state-style-map, default, padding);
31
- $border-radius-offset: cx-multiply(cx-get-state-rule($tag-state-style-map, default, border-radius), 0.25);
32
-
33
- .#{$block}#{$name} {
34
- cursor: pointer;
35
- width: $width;
36
- font: cx-get-state-rule($state-style-map, default, "font");
37
- font-size: cx-get-state-rule($state-style-map, default, "font-size");
38
-
39
- @include cxb-field($besm, $state-style-map, $input: false);
40
-
41
- &.#{$state}multiple {
42
- min-width: $cx-default-input-width;
43
- width: auto;
44
- }
45
-
46
- &.#{$state}readonly {
47
- pointer-events: none;
48
-
49
- & > .#{$element}#{$name}-input {
50
- padding-right: cx-right($padding);
51
- }
52
- }
53
-
54
- .#{$state}icon > .#{$element}#{$name}-input > .#{$element}#{$name}-tags {
55
- margin-left: 0;
56
- }
57
- }
58
-
59
- .#{$element}#{$name}-input {
60
- @include cxe-field-input(
61
- $besm,
62
- $state-style-map,
63
- $placeholder: $placeholder,
64
- $input: false,
65
- $overrides: (
66
- default: (
67
- width: 100%,
68
- display: inline-flex,
69
- text-overflow: null,
70
- padding: cx-top($padding)
71
- cx-calc(cx-right($padding), $cx-default-clear-size, $cx-default-input-tag-spacing) cx-bottom($padding)
72
- cx-left($padding),
73
- )
74
- )
75
- );
76
-
77
- .#{$state}single > & {
78
- overflow: hidden;
79
- text-overflow: ellipsis;
80
- white-space: nowrap;
81
- flex-basis: 0%;
82
- flex-grow: 1;
83
- }
84
-
85
- .#{$state}icon > & {
86
- padding-left: cx-calc(cx-top($padding), $cx-default-input-left-tool-size, $cx-default-input-left-tool-spacing);
87
- }
88
- }
89
-
90
- .#{$element}#{$name}-tags {
91
- display: flex;
92
- margin: cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-top($padding), -1))
93
- cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-right($padding), -1))
94
- cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-bottom($padding), -1))
95
- cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-left($padding), -1));
96
- align-items: center;
97
- flex-wrap: wrap;
98
- gap: $cx-default-input-tag-spacing;
99
- }
100
-
101
- .#{$element}#{$name}-tag {
102
- display: inline-block;
103
- position: relative;
104
- box-sizing: border-box;
105
-
106
- @include cx-add-state-rules($tag-state-style-map, default);
107
-
108
- &:hover {
109
- @include cx-add-state-rules($tag-state-style-map, hover);
110
- }
111
-
112
- &.#{$state}readonly {
113
- padding-right: cx-right($padding);
114
- pointer-events: none;
115
- }
116
- }
117
-
118
- .#{$element}#{$name}-placeholder {
119
- color: $cx-default-input-placeholder-color;
120
- }
121
-
122
- .#{$element}#{$name}-tag-value {
123
- padding: 0 cx-calc($cx-default-input-tag-spacing, $border-radius-offset);
124
- display: inline-block;
125
- }
126
-
127
- .#{$element}#{$name}-tag-clear {
128
- @include cxe-field-button($besm, $tag-clear-state-style-map);
129
- }
130
-
131
- .#{$element}#{$name}-lookup-options {
132
- padding: 0;
133
- margin: 0;
134
- min-width: 100%;
135
- width: 100%;
136
- }
137
-
138
- .#{$element}#{$name}-query {
139
- @include cxe-field-input(
140
- $besm,
141
- $state-style-map,
142
- $placeholder: $placeholder,
143
- $width: calc(100% - 10px),
144
- $overrides: (
145
- default: (
146
- margin: 5px,
147
- flex: 0 0 auto,
148
- height: auto,
149
- )
150
- )
151
- );
152
- //put query field down when placed up
153
- .#{$state}place-up-right &,
154
- .#{$state}place-up &,
155
- .#{$state}place-up-left & {
156
- order: 1;
157
- }
158
- }
159
-
160
- .#{$element}#{$name}-dropdown {
161
- display: flex;
162
- flex-direction: column;
163
- height: 100%;
164
-
165
- &:focus {
166
- outline: none;
167
- }
168
- }
169
-
170
- .#{$element}#{$name}-message {
171
- font-size: smaller;
172
- padding: 10px;
173
- color: gray;
174
- font-style: italic;
175
-
176
- &.#{$state}error {
177
- color: #9e2f2d;
178
- }
179
- }
180
-
181
- .#{$element}#{$name}-scroll-container {
182
- overflow: auto;
183
- flex: 1 1 auto;
184
- }
185
-
186
- .#{$element}#{$name}-clear {
187
- @include cxe-field-button($besm, $clear-state-style-map);
188
-
189
- .#{$state}focus > & {
190
- @include cx-add-state-rules($clear-state-style-map, focus);
191
- }
192
- .#{$state}error > & {
193
- @include cx-add-state-rules($clear-state-style-map, error);
194
- }
195
- }
196
-
197
- .#{$element}#{$name}-tool {
198
- @include cxe-field-button($besm, $tool-state-style-map);
199
-
200
- .#{$state}disabled > & {
201
- border-width: 0;
202
- @include cx-add-state-rules($state-style-map, disabled);
203
- }
204
- .#{$state}focus > & {
205
- @include cx-add-state-rules($tool-state-style-map, focus);
206
- }
207
- .#{$state}error > & {
208
- @include cx-add-state-rules($tool-state-style-map, error);
209
- }
210
- }
211
-
212
- .#{$element}#{$name}-left-icon {
213
- @include cxe-field-button($besm, $left-icon-state-style-map);
214
- }
215
-
216
- .#{$element}#{$name}-icon {
217
- @include cxe-field-button-icon($besm, $icon-size);
218
- }
219
-
220
- .#{$element}#{$name}-empty-text {
221
- @include cxe-field-empty-text($empty-text);
222
- }
223
- }
224
-
225
- @if (cx-should-include("cx/widgets/LookupField")) {
226
- @include cx-lookupfield();
227
- }
1
+ @use "sass:math";
2
+ @use "sass:map";
3
+ @use "../variables" as *;
4
+ @use "../maps" as *;
5
+ @use "../../util/scss/add-rules.scss" as *;
6
+ @use "../../util/scss/clockwise.scss" as *;
7
+ @use "../../util/scss/besm.scss" as *;
8
+ @use "../../util/scss/calc.scss" as *;
9
+ @use "../../util/scss/include.scss" as *;
10
+ @use "./Field.scss" as *;
11
+
12
+ @mixin cx-lookupfield(
13
+ $name: "lookupfield",
14
+ $state-style-map: $cx-std-field-state-style-map,
15
+ $placeholder: $cx-input-placeholder,
16
+ $empty-text: $cx-empty-text,
17
+ $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
18
+ $clear-state-style-map: $cx-clear-state-style-map,
19
+ $tool-state-style-map: $cx-input-right-icon-state-style-map,
20
+ $icon-size: $cx-default-input-icon-size,
21
+ $width: $cx-default-input-width,
22
+ $tag-state-style-map: $cx-input-tag-state-style-map,
23
+ $tag-clear-state-style-map: $cx-input-tag-clear-state-style-map,
24
+ $besm: $cx-besm
25
+ ) {
26
+ $block: map.get($besm, block);
27
+ $element: map.get($besm, element);
28
+ $state: map.get($besm, state);
29
+
30
+ $padding: cx-get-state-rule($state-style-map, default, padding);
31
+ $border-radius-offset: cx-multiply(cx-get-state-rule($tag-state-style-map, default, border-radius), 0.25);
32
+
33
+ .#{$block}#{$name} {
34
+ cursor: pointer;
35
+ width: $width;
36
+ font: cx-get-state-rule($state-style-map, default, "font");
37
+ font-size: cx-get-state-rule($state-style-map, default, "font-size");
38
+
39
+ @include cxb-field($besm, $state-style-map, $input: false);
40
+
41
+ &.#{$state}multiple {
42
+ min-width: $cx-default-input-width;
43
+ width: auto;
44
+ }
45
+
46
+ &.#{$state}readonly {
47
+ pointer-events: none;
48
+
49
+ & > .#{$element}#{$name}-input {
50
+ padding-right: cx-right($padding);
51
+ }
52
+ }
53
+
54
+ .#{$state}icon > .#{$element}#{$name}-input > .#{$element}#{$name}-tags {
55
+ margin-left: 0;
56
+ }
57
+ }
58
+
59
+ .#{$element}#{$name}-input {
60
+ @include cxe-field-input(
61
+ $besm,
62
+ $state-style-map,
63
+ $placeholder: $placeholder,
64
+ $input: false,
65
+ $overrides: (
66
+ default: (
67
+ width: 100%,
68
+ // inline-flex preserves baseline alignment with sibling fields/buttons; ellipsis is applied on the inner -text span
69
+ display: inline-flex,
70
+ text-overflow: null,
71
+ padding: cx-top($padding)
72
+ cx-calc(cx-right($padding), $cx-default-clear-size, $cx-default-input-tag-spacing) cx-bottom($padding)
73
+ cx-left($padding),
74
+ )
75
+ )
76
+ );
77
+
78
+ .#{$state}single > & {
79
+ flex-basis: 0%;
80
+ flex-grow: 1;
81
+ }
82
+
83
+ .#{$state}icon > & {
84
+ padding-left: cx-calc(cx-top($padding), $cx-default-input-left-tool-size, $cx-default-input-left-tool-spacing);
85
+ }
86
+ }
87
+
88
+ .#{$element}#{$name}-text {
89
+ overflow: hidden;
90
+ text-overflow: ellipsis;
91
+ white-space: nowrap;
92
+ min-width: 0;
93
+ flex-basis: 0%;
94
+ flex-grow: 1;
95
+ }
96
+
97
+ .#{$element}#{$name}-tags {
98
+ display: flex;
99
+ margin: cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-top($padding), -1))
100
+ cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-right($padding), -1))
101
+ cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-bottom($padding), -1))
102
+ cx-calc($cx-default-input-tag-spacing, cx-multiply(cx-left($padding), -1));
103
+ align-items: center;
104
+ flex-wrap: wrap;
105
+ gap: $cx-default-input-tag-spacing;
106
+ }
107
+
108
+ .#{$element}#{$name}-tag {
109
+ display: inline-block;
110
+ position: relative;
111
+ box-sizing: border-box;
112
+
113
+ @include cx-add-state-rules($tag-state-style-map, default);
114
+
115
+ &:hover {
116
+ @include cx-add-state-rules($tag-state-style-map, hover);
117
+ }
118
+
119
+ &.#{$state}readonly {
120
+ padding-right: cx-right($padding);
121
+ pointer-events: none;
122
+ }
123
+ }
124
+
125
+ .#{$element}#{$name}-placeholder {
126
+ color: $cx-default-input-placeholder-color;
127
+ }
128
+
129
+ .#{$element}#{$name}-tag-value {
130
+ padding: 0 cx-calc($cx-default-input-tag-spacing, $border-radius-offset);
131
+ display: inline-block;
132
+ }
133
+
134
+ .#{$element}#{$name}-tag-clear {
135
+ @include cxe-field-button($besm, $tag-clear-state-style-map);
136
+ }
137
+
138
+ .#{$element}#{$name}-lookup-options {
139
+ padding: 0;
140
+ margin: 0;
141
+ min-width: 100%;
142
+ width: 100%;
143
+ }
144
+
145
+ .#{$element}#{$name}-query {
146
+ @include cxe-field-input(
147
+ $besm,
148
+ $state-style-map,
149
+ $placeholder: $placeholder,
150
+ $width: calc(100% - 10px),
151
+ $overrides: (
152
+ default: (
153
+ margin: 5px,
154
+ flex: 0 0 auto,
155
+ height: auto,
156
+ )
157
+ )
158
+ );
159
+ //put query field down when placed up
160
+ .#{$state}place-up-right &,
161
+ .#{$state}place-up &,
162
+ .#{$state}place-up-left & {
163
+ order: 1;
164
+ }
165
+ }
166
+
167
+ .#{$element}#{$name}-dropdown {
168
+ display: flex;
169
+ flex-direction: column;
170
+ height: 100%;
171
+
172
+ &:focus {
173
+ outline: none;
174
+ }
175
+ }
176
+
177
+ .#{$element}#{$name}-message {
178
+ font-size: smaller;
179
+ padding: 10px;
180
+ color: gray;
181
+ font-style: italic;
182
+
183
+ &.#{$state}error {
184
+ color: #9e2f2d;
185
+ }
186
+ }
187
+
188
+ .#{$element}#{$name}-scroll-container {
189
+ overflow: auto;
190
+ flex: 1 1 auto;
191
+ }
192
+
193
+ .#{$element}#{$name}-clear {
194
+ @include cxe-field-button($besm, $clear-state-style-map);
195
+
196
+ .#{$state}focus > & {
197
+ @include cx-add-state-rules($clear-state-style-map, focus);
198
+ }
199
+ .#{$state}error > & {
200
+ @include cx-add-state-rules($clear-state-style-map, error);
201
+ }
202
+ }
203
+
204
+ .#{$element}#{$name}-tool {
205
+ @include cxe-field-button($besm, $tool-state-style-map);
206
+
207
+ .#{$state}disabled > & {
208
+ border-width: 0;
209
+ @include cx-add-state-rules($state-style-map, disabled);
210
+ }
211
+ .#{$state}focus > & {
212
+ @include cx-add-state-rules($tool-state-style-map, focus);
213
+ }
214
+ .#{$state}error > & {
215
+ @include cx-add-state-rules($tool-state-style-map, error);
216
+ }
217
+ }
218
+
219
+ .#{$element}#{$name}-left-icon {
220
+ @include cxe-field-button($besm, $left-icon-state-style-map);
221
+ }
222
+
223
+ .#{$element}#{$name}-icon {
224
+ @include cxe-field-button-icon($besm, $icon-size);
225
+ }
226
+
227
+ .#{$element}#{$name}-empty-text {
228
+ @include cxe-field-empty-text($empty-text);
229
+ }
230
+ }
231
+
232
+ @if (cx-should-include("cx/widgets/LookupField")) {
233
+ @include cx-lookupfield();
234
+ }
@@ -1099,9 +1099,12 @@ class LookupComponent extends VDOM.Component<
1099
1099
  text = this.getPlaceholder(data.placeholder);
1100
1100
  }
1101
1101
  } else {
1102
- text = !data.empty
1102
+ let content = !data.empty
1103
1103
  ? data.text || this.getPlaceholder()
1104
1104
  : this.getPlaceholder(data.placeholder);
1105
+ text = (
1106
+ <span className={CSS.element(baseClass, "text")}>{content}</span>
1107
+ );
1105
1108
  }
1106
1109
 
1107
1110
  let states = {