@jetbrains/ring-ui 5.0.15 → 5.0.18

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.
@@ -108,7 +108,7 @@ class ButtonController extends RingAngularComponent {
108
108
  this.element.className = classNames(
109
109
  foreignClasses,
110
110
  getButtonClasses({
111
- height: ControlsHeight.S,
111
+ height: $attrs.height || ControlsHeight.S,
112
112
  className: styles.button,
113
113
  active: this.getAttrValue($attrs.active),
114
114
  disabled: this.getAttrValue($attrs.disabled),
@@ -36,7 +36,7 @@ export const basic = () => {
36
36
  <div class="ring-form__group">
37
37
  <label for="ring-form-2" class="ring-form__label">Medium Input</label>
38
38
  <div class="ring-form__control">
39
- <input class="ring-input ring-input-size_md" id="ring-form-2"
39
+ <input class="ring-input ring-input-size_m" id="ring-form-2"
40
40
  type="text">
41
41
  </div>
42
42
  </div>
@@ -44,7 +44,7 @@ export const basic = () => {
44
44
  <div class="ring-form__group">
45
45
  <label for="ring-form-3" class="ring-form__label">Medium Input & Error</label>
46
46
  <div class="ring-form__control">
47
- <input class="ring-input ring-input_error ring-input-size_md"
47
+ <input class="ring-input ring-input_error ring-input-size_m"
48
48
  id="ring-form-3" type="text">
49
49
  <div class="ring-error-bubble active">Error bubble</div>
50
50
  </div>
@@ -75,7 +75,7 @@ export const basic = () => {
75
75
  <div class="ring-form__group">
76
76
  <label for="ring-form-7" class="ring-form__label">Textarea</label>
77
77
  <div class="ring-form__control">
78
- <textarea class="ring-input ring-input-size_md"
78
+ <textarea class="ring-input ring-input-size_m"
79
79
  id="ring-form-7"></textarea>
80
80
  </div>
81
81
  </div>
@@ -101,7 +101,7 @@ export const basic = () => {
101
101
  <label for="ring-form-11" class="ring-form__label">Input in
102
102
  a small container</label>
103
103
  <div class="ring-form__control ring-form__control_small">
104
- <input class="ring-input ring-input-size_md" id="ring-form-11"
104
+ <input class="ring-input ring-input-size_m" id="ring-form-11"
105
105
  type="text">
106
106
  </div>
107
107
  </div>
@@ -110,7 +110,7 @@ export const basic = () => {
110
110
  <label for="ring-form-12" class="ring-form__label">Textarea in
111
111
  a small container</label>
112
112
  <div class="ring-form__control ring-form__control_small">
113
- <textarea class="ring-input ring-input-size_md"
113
+ <textarea class="ring-input ring-input-size_m"
114
114
  id="ring-form-12"></textarea>
115
115
  </div>
116
116
  </div>
@@ -39,6 +39,16 @@
39
39
 
40
40
  /* M */
41
41
 
42
+ :global(.ring-input-size_m.ring-input-size_m) {
43
+ display: inline-block;
44
+
45
+ width: var(--ring-input-m);
46
+ }
47
+
48
+ :global(.ring-input-size_m.ring-input-size_m ~ .ring-error-bubble) {
49
+ left: calc(var(--ring-input-m) + 2px);
50
+ }
51
+
42
52
  :global(.ring-input-size_md.ring-input-size_md) {
43
53
  display: inline-block;
44
54
 
@@ -46,7 +46,7 @@ export const basic = () => {
46
46
  </div>
47
47
  <div class="ring-error-bubble-wrapper">
48
48
  <rg-query-assist
49
- class="ring-input-size_md"
49
+ class="ring-input-size_m"
50
50
  x-data-source="exampleCtrl.dataSource"
51
51
  glass="true"
52
52
  placeholder="'Medium'">
@@ -89,7 +89,7 @@ export const basic = () => {
89
89
  <div class="ring-error-bubble active">Short Select</div>
90
90
  </div>
91
91
  <div class="ring-error-bubble-wrapper">
92
- <rg-select class="ring-input-size_md"
92
+ <rg-select class="ring-input-size_m"
93
93
  ng-model="exampleCtrl.selected"
94
94
  options="item in exampleCtrl.options"
95
95
  label="Select item"></rg-select>
@@ -129,7 +129,7 @@ export const basic = () => {
129
129
  <div class="ring-error-bubble active">Short Select</div>
130
130
  </div>
131
131
  <div class="ring-error-bubble-wrapper">
132
- <rg-select class="ring-input-size_md"
132
+ <rg-select class="ring-input-size_m"
133
133
  type="input"
134
134
  ng-model="exampleCtrl.selected"
135
135
  options="item in exampleCtrl.options"
@@ -164,7 +164,7 @@ export const basic = () => {
164
164
  <label for="short-input" class="ring-error-bubble active">Short Input</label>
165
165
  </div>
166
166
  <div class="ring-error-bubble-wrapper">
167
- <input id="medium-input" type="number" class="ring-input ring-input-size_md">
167
+ <input id="medium-input" type="number" class="ring-input ring-input-size_m">
168
168
  <label for="medium-input" class="ring-error-bubble active">Medium Input</label>
169
169
  </div>
170
170
  <div class="ring-error-bubble-wrapper">
@@ -188,7 +188,7 @@ export const basic = () => {
188
188
  <label for="short-textarea" class="ring-error-bubble active">Short Textarea</label>
189
189
  </div>
190
190
  <div class="ring-error-bubble-wrapper">
191
- <textarea id="medium-textarea" class="ring-input ring-input-size_md"></textarea>
191
+ <textarea id="medium-textarea" class="ring-input ring-input-size_m"></textarea>
192
192
  <label for="medium-textarea" class="ring-error-bubble active">Medium Textarea</label>
193
193
  </div>
194
194
  <div class="ring-error-bubble-wrapper">
@@ -147,6 +147,9 @@ export default class Pager extends PureComponent {
147
147
  getPagerContent() {
148
148
  const { currentPage, visiblePagesLimit } = this.props;
149
149
  const totalPages = this.getTotal();
150
+ if (totalPages < this.props.currentPage) {
151
+ this.props.onPageChange?.(totalPages);
152
+ }
150
153
  if (totalPages < 2 && !this.props.openTotal) {
151
154
  return null;
152
155
  }
@@ -8,7 +8,7 @@
8
8
  position: relative;
9
9
 
10
10
  margin-top: calc(unit * 2);
11
- padding: calc(unit * 1.5) 0 calc(unit * 2) calc(unit * 2);
11
+ padding: calc(unit * 2) calc(unit * 4) calc(unit * 4);
12
12
 
13
13
  border-top: 1px solid var(--ring-popup-border-color);
14
14
 
@@ -1,273 +1,162 @@
1
1
  @import "../global/variables.css";
2
+ @import "../button/button.css";
2
3
 
3
- @value dark from "../global/variables_dark.css";
4
4
  @value unit from "../global/global.css";
5
5
  @value overInputZIndex: 2;
6
6
  @value inputGap: calc(unit * 3);
7
7
 
8
8
  .queryAssist {
9
- height: calc(unit * 3);
9
+ --ring-input-icon-offset: calc(unit * 2.5);
10
+ --ring-input-padding-inline: unit;
11
+ --ring-input-padding-block: 3px;
12
+ --ring-input-padding-start: var(--ring-input-padding-inline);
13
+ --ring-input-padding-end: var(--ring-input-padding-inline);
10
14
 
11
- background: var(--ring-content-background-color);
12
- }
13
-
14
- .input {
15
- height: calc(unit * 3 - 2px);
16
-
17
- box-shadow: 0 0 0 1px var(--ring-borders-color);
18
-
19
- /* stylelint-disable-next-line selector-max-specificity */
20
- &:not([disabled]):active,
21
- &:not([disabled]):focus {
22
- border-color: transparent;
23
- box-shadow: 0 0 0 1px var(--ring-main-color);
24
- }
25
- }
26
-
27
- .placeholder {
28
- color: var(--ring-secondary-color);
29
- }
30
-
31
- .letter-text {
32
- color: var(--ring-warning-color);
33
- }
34
-
35
- .letterDefault,
36
- .letter-field-name {
37
- color: var(--ring-text-color);
38
- }
39
-
40
- .letter-field-value {
41
- color: var(--ring-link-color);
42
- }
15
+ position: relative;
43
16
 
44
- .letter-operator {
45
- color: var(--ring-secondary-color);
46
- }
17
+ display: flex;
47
18
 
48
- .letter-error {
49
- padding-bottom: 1px;
19
+ box-sizing: border-box;
50
20
 
51
- border-bottom: 1px solid var(--ring-icon-error-color);
52
- }
21
+ font-size: var(--ring-font-size);
22
+ line-height: var(--ring-line-height);
53
23
 
54
- .iconInner {
55
- color: var(--ring-icon-secondary-color);
56
- }
57
-
58
- .highlight {
59
- font-weight: 600;
60
- }
61
-
62
- .service {
63
- color: var(--ring-secondary-color);
24
+ & * {
25
+ box-sizing: border-box;
26
+ }
64
27
  }
65
28
 
66
- .dark {
67
- & .queryAssist {
68
- height: calc(unit * 4);
69
-
70
- font-size: 16px;
71
- }
29
+ .huge {
30
+ --ring-input-padding-block: 5px;
72
31
 
73
32
  & .input {
74
- top: 0;
75
-
76
- height: calc(unit * 4 - 2px);
77
-
78
- color: var(--ring-search-color);
79
-
80
- border-top-width: 5px;
81
- background: var(--ring-selected-background-color);
82
-
83
- &:active,
84
- &:focus {
85
- border-color: var(--ring-navigation-background-color);
86
-
87
- background-color: var(--ring-navigation-background-color);
88
- }
33
+ border-right: 0;
34
+ border-top-right-radius: 0;
35
+ border-bottom-right-radius: 0;
89
36
  }
90
37
 
91
- & .placeholder {
92
- top: 6px;
38
+ & .actions {
39
+ right: calc(var(--ring-input-padding-inline) + 34px);
40
+ }
41
+ }
93
42
 
94
- color: var(--ring-icon-color);
43
+ .input {
44
+ width: 100%;
95
45
 
96
- @nest & :-ms-input-placeholder,
97
- :root & {
98
- top: 7px;
99
- }
46
+ margin: 0;
47
+ padding-top: var(--ring-input-padding-block);
48
+ padding-right: var(--ring-input-padding-end);
49
+ padding-bottom: var(--ring-input-padding-block);
50
+ padding-left: var(--ring-input-padding-start);
100
51
 
101
- @supports (-ms-ime-align:auto) {
102
- & {
103
- top: 7px;
104
- }
105
- }
106
- }
52
+ transition: border-color var(--ring-ease);
107
53
 
108
- & .letter-text {
109
- color: var(--ring-warning-color);
110
- }
54
+ color: var(--ring-text-color);
55
+ border: 1px solid var(--ring-borders-color);
56
+ border-radius: var(--ring-border-radius);
57
+ outline: none;
58
+ background: transparent;
111
59
 
112
- & .letterDefault,
113
- & .letter-field-name {
114
- color: var(--ring-search-color);
115
- }
60
+ font: inherit;
116
61
 
117
- & .letter-field-value {
118
- color: var(--ring-active-text-color);
119
- }
62
+ caret-color: var(--ring-main-color);
120
63
 
121
- & .letter-operator {
122
- color: var(--ring-secondary-color);
64
+ @nest [dir=rtl] & {
65
+ padding-right: var(--ring-input-padding-start);
66
+ padding-left: var(--ring-input-padding-end);
123
67
  }
124
68
 
125
- & .letter-error {
126
- padding-bottom: 1px;
69
+ &:hover {
70
+ transition: none;
127
71
 
128
- border-bottom: 1px solid var(--ring-icon-error-color);
72
+ border-color: var(--ring-border-hover-color);
129
73
  }
130
74
 
131
- & .icon {
132
- top: 7px;
75
+ @nest .error & {
76
+ border-color: var(--ring-icon-error-color);
133
77
  }
134
78
 
135
- & .iconInner {
136
- color: var(--ring-icon-color);
137
- }
138
-
139
- & .loader {
140
- top: 6px;
141
- }
79
+ &:focus {
80
+ transition: none;
142
81
 
143
- & .highlight {
144
- font-weight: 600;
82
+ border-color: var(--ring-main-color);
145
83
  }
146
84
 
147
- & .service {
148
- color: var(--ring-secondary-color);
149
- }
85
+ &[disabled] {
86
+ color: var(--ring-disabled-color);
87
+ border-color: var(--ring-border-disabled-color);
88
+ background-color: var(--ring-disabled-background-color);
150
89
 
151
- & .actions {
152
- background-color: var(--ring-selected-background-color);
90
+ -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */
153
91
  }
154
92
 
155
- /* stylelint-disable-next-line selector-max-specificity */
156
- & .input:focus ~ .actions {
157
- background-color: var(--ring-navigation-background-color);
93
+ /*
94
+ Kill yellow/blue webkit autocomplete
95
+ https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/
96
+ */
97
+ &:-webkit-autofill {
98
+ &,
99
+ &:hover,
100
+ &:focus {
101
+ transition: background-color 50000s ease-in-out 0s;
102
+ }
158
103
  }
159
104
  }
160
105
 
161
- .queryAssist {
162
- composes: font from "../global/global.css";
163
-
164
- position: relative;
165
-
166
- box-sizing: border-box;
167
-
168
- line-height: normal;
106
+ .withIcon {
107
+ --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));
169
108
  }
170
109
 
171
- .input {
172
- position: relative;
173
-
174
- top: 1px;
175
- left: 1px;
176
-
177
- overflow: auto;
178
-
179
- box-sizing: border-box;
180
-
181
- width: calc(100% - 2px);
182
- margin: 0;
183
-
184
- padding: 2px calc(unit / 2) 3px;
185
-
186
- white-space: nowrap;
187
-
188
- border-width: 0;
189
- border-style: solid;
190
- border-color: transparent;
191
- background: transparent;
192
-
193
- line-height: 16px;
194
-
195
- scrollbar-width: none;
196
-
197
- &:active,
198
- &:focus {
199
- outline: 0;
200
- }
201
-
202
- @nest & :-ms-input-placeholder,
203
- :root & {
204
- line-height: 17px;
205
- }
110
+ .letter-text {
111
+ color: var(--ring-warning-color);
112
+ }
206
113
 
207
- @supports (-ms-ime-align:auto) {
208
- & {
209
- line-height: 17px;
210
- }
211
- }
114
+ .letterDefault,
115
+ .letter-field-name {
116
+ color: var(--ring-text-color);
117
+ }
212
118
 
213
- & .iconInner {
214
- color: var(--ring-icon-color);
215
- }
119
+ .letter-field-value {
120
+ color: var(--ring-link-color);
121
+ }
216
122
 
217
- &.inputGap {
218
- border-right-width: inputGap;
219
- }
123
+ .letter-operator {
124
+ color: var(--ring-secondary-color);
125
+ }
220
126
 
221
- &.inputGap2 {
222
- border-right-width: calc(2 * inputGap);
223
- }
127
+ .letter-error {
128
+ padding-bottom: 1px;
224
129
 
225
- &.inputLeftGap {
226
- border-left-width: inputGap;
227
- }
130
+ border-bottom: 1px solid var(--ring-icon-error-color);
131
+ }
228
132
 
229
- &.inputDisabled {
230
- border-color: var(--ring-line-color);
231
- box-shadow: 0 0 0 1px var(--ring-line-color);
232
- }
133
+ .highlight {
134
+ font-weight: 600;
135
+ }
233
136
 
234
- &.inputDisabled span > span {
235
- color: var(--ring-disabled-color);
236
- }
137
+ .service {
138
+ color: var(--ring-secondary-color);
237
139
  }
238
140
 
239
141
  .placeholder {
240
142
  composes: resetButton from "../global/global.css";
241
143
 
242
144
  position: absolute;
243
- top: 3px;
244
-
245
- left: 5px;
145
+ top: calc(var(--ring-input-padding-block) + 1px);
146
+ left: 1px;
246
147
 
247
148
  display: block;
248
149
 
249
150
  overflow: hidden;
250
151
 
251
152
  width: calc(100% - unit * 4);
153
+ padding-left: var(--ring-input-padding-start);
252
154
 
253
155
  text-overflow: ellipsis;
254
156
 
255
157
  pointer-events: none;
256
158
 
257
- &.placeholderSpaced {
258
- left: calc(unit * 3 + 5px);
259
- }
260
-
261
- @nest & :-ms-input-placeholder,
262
- :root & {
263
- top: 4px;
264
- }
265
-
266
- @supports (-ms-ime-align:auto) {
267
- & {
268
- top: 4px;
269
- }
270
- }
159
+ color: var(--ring-disabled-color);
271
160
  }
272
161
 
273
162
  .letter {
@@ -276,41 +165,63 @@
276
165
 
277
166
  .actions {
278
167
  position: absolute;
279
- z-index: overInputZIndex;
280
- top: 4px;
281
- right: 1px;
168
+ top: calc(var(--ring-input-padding-block) - 2px);
169
+ right: var(--ring-input-padding-inline);
282
170
 
283
- background-color: var(--ring-content-background-color);
171
+ height: auto;
172
+
173
+ line-height: inherit;
174
+
175
+ @nest [dir=rtl] & {
176
+ right: auto;
177
+ left: unit;
178
+ }
284
179
  }
285
180
 
286
181
  .icon {
287
182
  position: absolute;
288
- z-index: overInputZIndex;
289
- top: 3px;
183
+ top: calc(var(--ring-input-padding-block) + 1px);
184
+ left: var(--ring-input-padding-inline);
290
185
 
291
- box-sizing: border-box;
186
+ color: var(--ring-icon-secondary-color);
292
187
 
293
- width: calc(unit * 3);
294
- height: calc(unit * 2);
188
+ @nest [dir=rtl] & {
189
+ right: unit;
190
+ left: auto;
191
+ }
192
+ }
295
193
 
296
- padding: 0 4px;
194
+ .rightSearchButton {
195
+ padding: 5px 9px;
297
196
 
298
197
  cursor: pointer;
299
- user-select: none;
300
198
 
301
- line-height: normal;
199
+ transition: border-color var(--ring-ease);
200
+
201
+ color: var(--ring-icon-secondary-color);
202
+
203
+ border: 1px solid var(--ring-borders-color);
204
+ border-radius: var(--ring-border-radius);
205
+ border-top-left-radius: 0;
206
+ border-bottom-left-radius: 0;
302
207
 
303
- & svg {
304
- vertical-align: baseline;
208
+ @nest .queryAssist.queryAssist:focus-within & {
209
+ transition: none;
210
+
211
+ border-color: var(--ring-main-color);
305
212
  }
306
213
 
307
- @nest .actions & {
308
- position: relative;
309
- top: 0;
310
- left: -1px;
214
+ @nest .queryAssist:hover & {
215
+ transition: none;
216
+
217
+ border-color: var(--ring-border-hover-color);
311
218
  }
312
219
  }
313
220
 
221
+ .clear {
222
+ padding-right: 0;
223
+ }
224
+
314
225
  .loaderOnTheRight {
315
226
  right: 1px;
316
227
 
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import Caret, { Position } from '../caret/caret';
4
4
  import PopupMenu from '../popup-menu/popup-menu';
5
5
  import Button from '../button/button';
6
+ import Icon from '../icon/icon';
6
7
  import { ShortcutsMap } from '../shortcuts/core';
7
8
  import { QueryAssistSuggestion, SuggestionItem } from './query-assist__suggestions';
8
9
  declare function noop(): void;
@@ -57,6 +58,7 @@ export interface QueryAssistProps {
57
58
  useCustomItemRender?: boolean | null | undefined;
58
59
  actions?: ReactNode[] | null | undefined;
59
60
  'data-test'?: string | null | undefined;
61
+ huge?: boolean | null | undefined;
60
62
  }
61
63
  export interface StyleRange {
62
64
  style: string;
@@ -207,6 +209,7 @@ export default class QueryAssist extends Component<QueryAssistProps> {
207
209
  translations: PropTypes.Requireable<object>;
208
210
  actions: PropTypes.Requireable<any[]>;
209
211
  'data-test': PropTypes.Requireable<string>;
212
+ huge: PropTypes.Requireable<boolean>;
210
213
  };
211
214
  static defaultProps: {
212
215
  onApply: typeof noop;
@@ -280,8 +283,8 @@ export default class QueryAssist extends Component<QueryAssistProps> {
280
283
  popupRef: (node: PopupMenu<SuggestionItem> | null) => void;
281
284
  placeholder?: HTMLElement | null;
282
285
  placeholderRef: (node: HTMLElement | null) => void;
283
- glass?: ComponentRef<typeof Button> | null;
284
- glassRef: (node: ComponentRef<typeof Button> | null) => void;
286
+ glass?: ComponentRef<typeof Icon> | null;
287
+ glassRef: (node: ComponentRef<typeof Icon> | null) => void;
285
288
  loader?: HTMLElement | null;
286
289
  loaderRef: (node: HTMLElement | null) => void;
287
290
  clear?: ComponentRef<typeof Button> | null;