@jetbrains/ring-ui 5.0.16 → 5.0.19

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
  }
@@ -1,273 +1,164 @@
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);
29
+ .huge {
30
+ --ring-input-padding-block: 5px;
69
31
 
70
- font-size: 16px;
71
- }
32
+ width: 100%;
72
33
 
73
34
  & .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
- }
35
+ border-right: 0;
36
+ border-top-right-radius: 0;
37
+ border-bottom-right-radius: 0;
89
38
  }
90
39
 
91
- & .placeholder {
92
- top: 6px;
40
+ & .actions {
41
+ right: calc(var(--ring-input-padding-inline) + 34px);
42
+ }
43
+ }
93
44
 
94
- color: var(--ring-icon-color);
45
+ .input {
46
+ width: 100%;
95
47
 
96
- @nest & :-ms-input-placeholder,
97
- :root & {
98
- top: 7px;
99
- }
48
+ margin: 0;
49
+ padding-top: var(--ring-input-padding-block);
50
+ padding-right: var(--ring-input-padding-end);
51
+ padding-bottom: var(--ring-input-padding-block);
52
+ padding-left: var(--ring-input-padding-start);
100
53
 
101
- @supports (-ms-ime-align:auto) {
102
- & {
103
- top: 7px;
104
- }
105
- }
106
- }
54
+ transition: border-color var(--ring-ease);
107
55
 
108
- & .letter-text {
109
- color: var(--ring-warning-color);
110
- }
56
+ color: var(--ring-text-color);
57
+ border: 1px solid var(--ring-borders-color);
58
+ border-radius: var(--ring-border-radius);
59
+ outline: none;
60
+ background: transparent;
111
61
 
112
- & .letterDefault,
113
- & .letter-field-name {
114
- color: var(--ring-search-color);
115
- }
62
+ font: inherit;
116
63
 
117
- & .letter-field-value {
118
- color: var(--ring-active-text-color);
119
- }
64
+ caret-color: var(--ring-main-color);
120
65
 
121
- & .letter-operator {
122
- color: var(--ring-secondary-color);
66
+ @nest [dir=rtl] & {
67
+ padding-right: var(--ring-input-padding-start);
68
+ padding-left: var(--ring-input-padding-end);
123
69
  }
124
70
 
125
- & .letter-error {
126
- padding-bottom: 1px;
127
-
128
- border-bottom: 1px solid var(--ring-icon-error-color);
129
- }
71
+ &:hover {
72
+ transition: none;
130
73
 
131
- & .icon {
132
- top: 7px;
74
+ border-color: var(--ring-border-hover-color);
133
75
  }
134
76
 
135
- & .iconInner {
136
- color: var(--ring-icon-color);
77
+ @nest .error & {
78
+ border-color: var(--ring-icon-error-color);
137
79
  }
138
80
 
139
- & .loader {
140
- top: 6px;
141
- }
81
+ &:focus {
82
+ transition: none;
142
83
 
143
- & .highlight {
144
- font-weight: 600;
84
+ border-color: var(--ring-main-color);
145
85
  }
146
86
 
147
- & .service {
148
- color: var(--ring-secondary-color);
149
- }
87
+ &[disabled] {
88
+ color: var(--ring-disabled-color);
89
+ border-color: var(--ring-border-disabled-color);
90
+ background-color: var(--ring-disabled-background-color);
150
91
 
151
- & .actions {
152
- background-color: var(--ring-selected-background-color);
92
+ -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */
153
93
  }
154
94
 
155
- /* stylelint-disable-next-line selector-max-specificity */
156
- & .input:focus ~ .actions {
157
- background-color: var(--ring-navigation-background-color);
95
+ /*
96
+ Kill yellow/blue webkit autocomplete
97
+ https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/
98
+ */
99
+ &:-webkit-autofill {
100
+ &,
101
+ &:hover,
102
+ &:focus {
103
+ transition: background-color 50000s ease-in-out 0s;
104
+ }
158
105
  }
159
106
  }
160
107
 
161
- .queryAssist {
162
- composes: font from "../global/global.css";
163
-
164
- position: relative;
165
-
166
- box-sizing: border-box;
167
-
168
- line-height: normal;
108
+ .withIcon {
109
+ --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));
169
110
  }
170
111
 
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
- }
112
+ .letter-text {
113
+ color: var(--ring-warning-color);
114
+ }
206
115
 
207
- @supports (-ms-ime-align:auto) {
208
- & {
209
- line-height: 17px;
210
- }
211
- }
116
+ .letterDefault,
117
+ .letter-field-name {
118
+ color: var(--ring-text-color);
119
+ }
212
120
 
213
- & .iconInner {
214
- color: var(--ring-icon-color);
215
- }
121
+ .letter-field-value {
122
+ color: var(--ring-link-color);
123
+ }
216
124
 
217
- &.inputGap {
218
- border-right-width: inputGap;
219
- }
125
+ .letter-operator {
126
+ color: var(--ring-secondary-color);
127
+ }
220
128
 
221
- &.inputGap2 {
222
- border-right-width: calc(2 * inputGap);
223
- }
129
+ .letter-error {
130
+ padding-bottom: 1px;
224
131
 
225
- &.inputLeftGap {
226
- border-left-width: inputGap;
227
- }
132
+ border-bottom: 1px solid var(--ring-icon-error-color);
133
+ }
228
134
 
229
- &.inputDisabled {
230
- border-color: var(--ring-line-color);
231
- box-shadow: 0 0 0 1px var(--ring-line-color);
232
- }
135
+ .highlight {
136
+ font-weight: 600;
137
+ }
233
138
 
234
- &.inputDisabled span > span {
235
- color: var(--ring-disabled-color);
236
- }
139
+ .service {
140
+ color: var(--ring-secondary-color);
237
141
  }
238
142
 
239
143
  .placeholder {
240
144
  composes: resetButton from "../global/global.css";
241
145
 
242
146
  position: absolute;
243
- top: 3px;
244
-
245
- left: 5px;
147
+ top: calc(var(--ring-input-padding-block) + 1px);
148
+ left: 1px;
246
149
 
247
150
  display: block;
248
151
 
249
152
  overflow: hidden;
250
153
 
251
154
  width: calc(100% - unit * 4);
155
+ padding-left: var(--ring-input-padding-start);
252
156
 
253
157
  text-overflow: ellipsis;
254
158
 
255
159
  pointer-events: none;
256
160
 
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
- }
161
+ color: var(--ring-disabled-color);
271
162
  }
272
163
 
273
164
  .letter {
@@ -276,41 +167,63 @@
276
167
 
277
168
  .actions {
278
169
  position: absolute;
279
- z-index: overInputZIndex;
280
- top: 4px;
281
- right: 1px;
170
+ top: calc(var(--ring-input-padding-block) - 2px);
171
+ right: var(--ring-input-padding-inline);
282
172
 
283
- background-color: var(--ring-content-background-color);
173
+ height: auto;
174
+
175
+ line-height: inherit;
176
+
177
+ @nest [dir=rtl] & {
178
+ right: auto;
179
+ left: unit;
180
+ }
284
181
  }
285
182
 
286
183
  .icon {
287
184
  position: absolute;
288
- z-index: overInputZIndex;
289
- top: 3px;
185
+ top: calc(var(--ring-input-padding-block) + 1px);
186
+ left: var(--ring-input-padding-inline);
290
187
 
291
- box-sizing: border-box;
188
+ color: var(--ring-icon-secondary-color);
292
189
 
293
- width: calc(unit * 3);
294
- height: calc(unit * 2);
190
+ @nest [dir=rtl] & {
191
+ right: unit;
192
+ left: auto;
193
+ }
194
+ }
295
195
 
296
- padding: 0 4px;
196
+ .rightSearchButton {
197
+ padding: 5px 9px;
297
198
 
298
199
  cursor: pointer;
299
- user-select: none;
300
200
 
301
- line-height: normal;
201
+ transition: border-color var(--ring-ease);
202
+
203
+ color: var(--ring-icon-secondary-color);
204
+
205
+ border: 1px solid var(--ring-borders-color);
206
+ border-radius: var(--ring-border-radius);
207
+ border-top-left-radius: 0;
208
+ border-bottom-left-radius: 0;
302
209
 
303
- & svg {
304
- vertical-align: baseline;
210
+ @nest .queryAssist.queryAssist:focus-within & {
211
+ transition: none;
212
+
213
+ border-color: var(--ring-main-color);
305
214
  }
306
215
 
307
- @nest .actions & {
308
- position: relative;
309
- top: 0;
310
- left: -1px;
216
+ @nest .queryAssist:hover & {
217
+ transition: none;
218
+
219
+ border-color: var(--ring-border-hover-color);
311
220
  }
312
221
  }
313
222
 
223
+ .clear {
224
+ padding-right: 0;
225
+ }
226
+
314
227
  .loaderOnTheRight {
315
228
  right: 1px;
316
229
 
@@ -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;