@webitel/ui-sdk 2.0.5-2 → 2.0.5-5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-sdk",
3
- "version": "2.0.5-2",
3
+ "version": "2.0.5-5",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve-lib": "vue-cli-service serve",
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div
3
- class="wt-input"
4
3
  :class="{
5
4
  'wt-input--outline': outline,
6
5
  'wt-input--disabled': disabled,
7
6
  'wt-input--invalid': invalid,
8
7
  }"
8
+ class="wt-input"
9
9
  >
10
10
  <wt-label
11
11
  v-if="hasLabel"
12
- :for="name"
13
- :outline="outline"
14
12
  :disabled="disabled"
13
+ :for="name"
15
14
  :invalid="invalid"
15
+ :outline="outline"
16
16
  v-bind="labelProps"
17
17
  >
18
18
  <!-- @slot Custom input label -->
@@ -21,22 +21,22 @@
21
21
  <div class="wt-input__wrapper">
22
22
  <input
23
23
  :id="name"
24
- class="wt-input__input"
24
+ ref="wt-input"
25
25
  :class="{
26
26
  'wt-input--is-password': isPassword,
27
27
  }"
28
- ref="wt-input"
29
- :value="value"
30
- :type="inputType"
31
- :placeholder="placeholder || label"
32
28
  :disabled="disabled"
33
- :min="numberMin"
34
29
  :max="numberMax"
30
+ :min="numberMin"
31
+ :placeholder="placeholder || label"
32
+ :type="inputType"
33
+ :value="value"
34
+ class="wt-input__input"
35
35
  v-on="listeners"
36
36
  >
37
37
  <div
38
- class="wt-input__after-wrapper"
39
38
  ref="after-wrapper"
39
+ class="wt-input__after-wrapper"
40
40
  >
41
41
  <slot
42
42
  name="after-input"
@@ -50,8 +50,8 @@
50
50
  }"
51
51
  >
52
52
  <wt-icon-btn
53
- class="wt-input__password-button"
54
53
  :icon="showPasswordIcon"
54
+ class="wt-input__password-button"
55
55
  @click.native="switchVisibilityPassword"
56
56
  ></wt-icon-btn>
57
57
  </slot>
@@ -69,255 +69,258 @@
69
69
  import validationMixin from '../../../mixins/validationMixin/validationMixin';
70
70
 
71
71
  export default {
72
- name: 'wt-input',
73
- mixins: [validationMixin],
74
- props: {
75
- /**
76
- * Current input value (`v-model`)
77
- */
78
- value: {
79
- type: [String, Number],
80
- default: '',
81
- },
82
- /**
83
- * Form input label
84
- */
85
- label: {
86
- type: String,
87
- default: '',
88
- },
89
- /**
90
- * Form input placeholder
91
- */
92
- placeholder: {
93
- type: String,
94
- },
95
- /**
96
- * Form input name
97
- */
98
- name: {
99
- type: String,
100
- default: '',
101
- },
102
- /**
103
- * Form input type
104
- */
105
- type: {
106
- type: String,
107
- default: 'text',
108
- },
109
- /**
110
- * Native input required attribute
111
- */
112
- required: {
113
- type: Boolean,
114
- default: false,
115
- description: 'Native input required attribute',
116
- },
117
- /**
118
- * Native input disabled attribute
119
- */
120
- disabled: {
121
- type: Boolean,
122
- default: false,
123
- description: 'Native input disabled attribute',
124
- },
125
- /**
126
- * Status of show password icon display
127
- */
128
- hasShowPassword: {
129
- type: Boolean,
130
- default: false,
131
- },
72
+ name: 'wt-input',
73
+ mixins: [validationMixin],
74
+ props: {
75
+ /**
76
+ * Current input value (`v-model`)
77
+ */
78
+ value: {
79
+ type: [String, Number],
80
+ default: '',
81
+ },
82
+ /**
83
+ * Form input label
84
+ */
85
+ label: {
86
+ type: String,
87
+ default: '',
88
+ },
89
+ /**
90
+ * Form input placeholder
91
+ */
92
+ placeholder: {
93
+ type: String,
94
+ },
95
+ /**
96
+ * Form input name
97
+ */
98
+ name: {
99
+ type: String,
100
+ default: '',
101
+ },
102
+ /**
103
+ * Form input type
104
+ */
105
+ type: {
106
+ type: String,
107
+ default: 'text',
108
+ },
109
+ /**
110
+ * Native input required attribute
111
+ */
112
+ required: {
113
+ type: Boolean,
114
+ default: false,
115
+ description: 'Native input required attribute',
116
+ },
117
+ /**
118
+ * Native input disabled attribute
119
+ */
120
+ disabled: {
121
+ type: Boolean,
122
+ default: false,
123
+ description: 'Native input disabled attribute',
124
+ },
125
+ /**
126
+ * Status of show password icon display
127
+ */
128
+ hasShowPassword: {
129
+ type: Boolean,
130
+ default: false,
131
+ },
132
132
 
133
- /**
134
- * Native number input restrictions
135
- */
136
- numberMin: {
137
- type: Number,
138
- default: 0,
139
- },
133
+ /**
134
+ * Native number input restrictions
135
+ */
136
+ numberMin: {
137
+ type: Number,
138
+ default: 0,
139
+ },
140
140
 
141
- /**
142
- * Native number input restrictions
143
- */
144
- numberMax: {
145
- type: Number,
146
- },
141
+ /**
142
+ * Native number input restrictions
143
+ */
144
+ numberMax: {
145
+ type: Number,
146
+ },
147
147
 
148
- outline: {
149
- type: Boolean,
150
- default: false,
151
- },
148
+ outline: {
149
+ type: Boolean,
150
+ default: false,
151
+ },
152
152
 
153
- labelProps: {
154
- type: Object,
155
- description: 'Object with props, passed down to wt-label as props',
156
- },
153
+ labelProps: {
154
+ type: Object,
155
+ description: 'Object with props, passed down to wt-label as props',
157
156
  },
157
+ },
158
158
 
159
- data: () => ({
160
- inputType: '',
161
- isPasswordVisible: false,
162
- }),
159
+ data: () => ({
160
+ inputType: '',
161
+ isPasswordVisible: false,
162
+ }),
163
163
 
164
- watch: {
165
- type: {
166
- immediate: true,
167
- handler(type) {
168
- let inputType = type;
169
- // Safari has bug for number input
170
- if (typeof window !== 'undefined' || typeof document !== 'undefined') {
171
- const ua = navigator.userAgent.toLocaleLowerCase();
172
- if (
173
- ua.indexOf('safari') !== -1
174
- && ua.indexOf('chrome') === -1
175
- && type === 'number'
176
- ) {
177
- this.isNumberTypeSafari = true;
178
- inputType = 'text';
179
- }
164
+ watch: {
165
+ type: {
166
+ immediate: true,
167
+ handler(type) {
168
+ let inputType = type;
169
+ // Safari has bug for number input
170
+ if (typeof window !== 'undefined' || typeof document !== 'undefined') {
171
+ const ua = navigator.userAgent.toLocaleLowerCase();
172
+ if (
173
+ ua.indexOf('safari') !== -1
174
+ && ua.indexOf('chrome') === -1
175
+ && type === 'number'
176
+ ) {
177
+ this.isNumberTypeSafari = true;
178
+ inputType = 'text';
180
179
  }
181
- this.inputType = inputType;
182
- },
180
+ }
181
+ this.inputType = inputType;
183
182
  },
184
183
  },
184
+ },
185
185
 
186
- computed: {
187
- hasLabel() {
188
- return !!(this.label || this.$slots.label);
189
- },
186
+ computed: {
187
+ hasLabel() {
188
+ return !!(this.label || this.$slots.label);
189
+ },
190
190
 
191
- requiredLabel() {
192
- return this.required ? `${this.label}*` : this.label;
193
- },
191
+ requiredLabel() {
192
+ return this.required ? `${this.label}*` : this.label;
193
+ },
194
194
 
195
- isPassword() {
196
- return this.type === 'password' && this.hasShowPassword;
197
- },
195
+ isPassword() {
196
+ return this.type === 'password' && this.hasShowPassword;
197
+ },
198
198
 
199
- showPasswordIcon() {
200
- return this.isPasswordVisible ? 'eye--closed' : 'eye--opened';
201
- },
199
+ showPasswordIcon() {
200
+ return this.isPasswordVisible ? 'eye--closed' : 'eye--opened';
201
+ },
202
202
 
203
- listeners() {
204
- return {
205
- ...this.$listeners,
206
- input: this.inputHandler,
207
- };
208
- },
203
+ listeners() {
204
+ return {
205
+ ...this.$listeners,
206
+ input: this.inputHandler,
207
+ };
208
+ },
209
+ },
210
+ methods: {
211
+ inputHandler(event) {
212
+ this.$emit('input', event.target.value.trim());
209
213
  },
210
- methods: {
211
- inputHandler(event) {
212
- this.$emit('input', event.target.value.trim());
213
- },
214
214
 
215
- switchVisibilityPassword() {
216
- this.isPasswordVisible = !this.isPasswordVisible;
217
- this.inputType = this.isPasswordVisible ? 'text' : 'password';
218
- },
215
+ switchVisibilityPassword() {
216
+ this.isPasswordVisible = !this.isPasswordVisible;
217
+ this.inputType = this.isPasswordVisible ? 'text' : 'password';
218
+ },
219
219
 
220
- updateInputPaddings() {
220
+ async updateInputPaddings() {
221
+ console.info(1);
222
+ this.setTimeout(() => {
221
223
  // cant test this thing cause vue test utils doesnt render elements width :/
222
224
  const afterWrapperWidth = this.$refs['after-wrapper'].offsetWidth;
223
225
  const inputEl = this.$refs['wt-input'];
224
226
  const defaultInputPadding = getComputedStyle(document.documentElement)
225
227
  .getPropertyValue('--input-padding');
226
- console.info('ipnut:', defaultInputPadding, afterWrapperWidth, defaultInputPadding*2+afterWrapperWidth);
228
+ console.info('ipnut:', defaultInputPadding, afterWrapperWidth, defaultInputPadding * 2 + afterWrapperWidth);
227
229
  inputEl.style.paddingRight = `calc(${defaultInputPadding} * 2 + ${afterWrapperWidth}px)`;
228
- },
229
- },
230
- mounted() {
231
- this.updateInputPaddings();
230
+ }, 100);
232
231
  },
232
+ },
233
+ mounted() {
234
+ this.updateInputPaddings();
235
+ },
233
236
  };
234
237
  </script>
235
238
 
236
239
  <style lang="scss" scoped>
237
- .wt-input {
238
- cursor: text;
240
+ .wt-input {
241
+ cursor: text;
239
242
 
240
- &--disabled {
241
- pointer-events: none;
242
- }
243
+ &--disabled {
244
+ pointer-events: none;
243
245
  }
246
+ }
244
247
 
245
- .wt-input__wrapper {
246
- position: relative;
247
- }
248
+ .wt-input__wrapper {
249
+ position: relative;
250
+ }
248
251
 
249
- .wt-label {
250
- .wt-input:hover &,
251
- .wt-input:focus-within & {
252
- color: var(--form-label--hover-color);
253
- }
252
+ .wt-label {
253
+ .wt-input:hover &,
254
+ .wt-input:focus-within & {
255
+ color: var(--form-label--hover-color);
256
+ }
254
257
 
255
- .wt-input--invalid:hover &,
256
- .wt-input--invalid:focus-within & {
257
- color: var(--label--invalid-color);
258
- }
258
+ .wt-input--invalid:hover &,
259
+ .wt-input--invalid:focus-within & {
260
+ color: var(--label--invalid-color);
259
261
  }
262
+ }
260
263
 
261
- .wt-input__input {
262
- @extend %typo-body-1;
263
- @include wt-placeholder;
264
+ .wt-input__input {
265
+ @extend %typo-body-1;
266
+ @include wt-placeholder;
264
267
 
265
- display: block;
266
- width: 100%;
267
- box-sizing: border-box;
268
- padding: var(--input-padding);
269
- color: var(--form-input-color);
270
- border: var(--input-border);
271
- border-color: var(--form-border-color);
272
- border-radius: var(--border-radius);
273
- transition: var(--transition);
268
+ display: block;
269
+ box-sizing: border-box;
270
+ width: 100%;
271
+ padding: var(--input-padding);
272
+ transition: var(--transition);
273
+ color: var(--form-input-color);
274
+ border: var(--input-border);
275
+ border-color: var(--form-border-color);
276
+ border-radius: var(--border-radius);
274
277
 
275
- &:focus {
276
- @include wt-placeholder('focus');
277
- border-color: var(--form-border--hover-color);
278
- }
278
+ &:focus {
279
+ @include wt-placeholder('focus');
280
+ border-color: var(--form-border--hover-color);
281
+ }
279
282
 
280
- .wt-input--outline & {
281
- border-color: var(--form-outline-border-color);
282
- }
283
+ .wt-input--outline & {
284
+ border-color: var(--form-outline-border-color);
285
+ }
283
286
 
284
- .wt-input--outline:hover &,
285
- .wt-input--outline &:focus {
286
- border-color: var(--form-outline-border--hover-color);
287
- }
287
+ .wt-input--outline:hover &,
288
+ .wt-input--outline &:focus {
289
+ border-color: var(--form-outline-border--hover-color);
290
+ }
288
291
 
289
- .wt-input--invalid &,
290
- .wt-input--invalid:hover & {
291
- border-color: var(--false-color);
292
- outline: none; // prevent outline overlapping false color
293
- }
292
+ .wt-input--invalid &,
293
+ .wt-input--invalid:hover & {
294
+ border-color: var(--false-color);
295
+ outline: none; // prevent outline overlapping false color
296
+ }
294
297
 
295
- .wt-input--disabled & {
296
- @include wt-placeholder('disabled');
297
- background: var(--form-border--disabled-color);
298
- border-color: var(--form-border--disabled-color);
299
- }
298
+ .wt-input--disabled & {
299
+ @include wt-placeholder('disabled');
300
+ border-color: var(--form-border--disabled-color);
301
+ background: var(--form-border--disabled-color);
300
302
  }
303
+ }
301
304
 
302
- .wt-input__after-wrapper {
303
- display: flex;
304
- gap: var(--input-after-wrapper-gap);
305
- align-items: center;
306
- position: absolute;
307
- top: 50%;
308
- right: var(--input-icon-margin);
309
- transform: translateY(-50%);
310
- pointer-events: auto; // override --disabled p-events none
305
+ .wt-input__after-wrapper {
306
+ position: absolute;
307
+ top: 50%;
308
+ right: var(--input-icon-margin);
309
+ display: flex;
310
+ align-items: center;
311
+ transform: translateY(-50%);
312
+ pointer-events: auto; // override --disabled p-events none
313
+ gap: var(--input-after-wrapper-gap);
311
314
 
312
- .wt-input__password-button {
313
- .wt-input--disabled & ::v-deep .wt-icon__icon {
314
- fill: var(--icon-color-disabled);
315
- }
315
+ .wt-input__password-button {
316
+ .wt-input--disabled & ::v-deep .wt-icon__icon {
317
+ fill: var(--icon-color-disabled);
318
+ }
316
319
 
317
- .wt-input:hover & ::v-deep .wt-icon__icon,
318
- .wt-input:focus-within & ::v-deep .wt-icon__icon {
319
- fill: var(--icon-color--hover);
320
- }
320
+ .wt-input:hover & ::v-deep .wt-icon__icon,
321
+ .wt-input:focus-within & ::v-deep .wt-icon__icon {
322
+ fill: var(--icon-color--hover);
321
323
  }
322
324
  }
325
+ }
323
326
  </style>