@webitel/ui-sdk 2.0.5-3 → 2.0.5-6

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-3",
3
+ "version": "2.0.5-6",
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,256 +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
- async updateInputPaddings() {
221
- await this.$nextTick();
220
+ async updateInputPaddings() {
221
+ console.info(1);
222
+ setTimeout(() => {
222
223
  // cant test this thing cause vue test utils doesnt render elements width :/
223
224
  const afterWrapperWidth = this.$refs['after-wrapper'].offsetWidth;
224
225
  const inputEl = this.$refs['wt-input'];
225
226
  const defaultInputPadding = getComputedStyle(document.documentElement)
226
227
  .getPropertyValue('--input-padding');
227
- console.info('ipnut:', defaultInputPadding, afterWrapperWidth, defaultInputPadding*2+afterWrapperWidth);
228
+ console.info('ipnut:', defaultInputPadding, afterWrapperWidth, defaultInputPadding * 2 + afterWrapperWidth);
228
229
  inputEl.style.paddingRight = `calc(${defaultInputPadding} * 2 + ${afterWrapperWidth}px)`;
229
- },
230
- },
231
- mounted() {
232
- this.updateInputPaddings();
230
+ }, 100);
233
231
  },
232
+ },
233
+ mounted() {
234
+ this.updateInputPaddings();
235
+ },
234
236
  };
235
237
  </script>
236
238
 
237
239
  <style lang="scss" scoped>
238
- .wt-input {
239
- cursor: text;
240
+ .wt-input {
241
+ cursor: text;
240
242
 
241
- &--disabled {
242
- pointer-events: none;
243
- }
243
+ &--disabled {
244
+ pointer-events: none;
244
245
  }
246
+ }
245
247
 
246
- .wt-input__wrapper {
247
- position: relative;
248
- }
248
+ .wt-input__wrapper {
249
+ position: relative;
250
+ }
249
251
 
250
- .wt-label {
251
- .wt-input:hover &,
252
- .wt-input:focus-within & {
253
- color: var(--form-label--hover-color);
254
- }
252
+ .wt-label {
253
+ .wt-input:hover &,
254
+ .wt-input:focus-within & {
255
+ color: var(--form-label--hover-color);
256
+ }
255
257
 
256
- .wt-input--invalid:hover &,
257
- .wt-input--invalid:focus-within & {
258
- color: var(--label--invalid-color);
259
- }
258
+ .wt-input--invalid:hover &,
259
+ .wt-input--invalid:focus-within & {
260
+ color: var(--label--invalid-color);
260
261
  }
262
+ }
261
263
 
262
- .wt-input__input {
263
- @extend %typo-body-1;
264
- @include wt-placeholder;
264
+ .wt-input__input {
265
+ @extend %typo-body-1;
266
+ @include wt-placeholder;
265
267
 
266
- display: block;
267
- width: 100%;
268
- box-sizing: border-box;
269
- padding: var(--input-padding);
270
- color: var(--form-input-color);
271
- border: var(--input-border);
272
- border-color: var(--form-border-color);
273
- border-radius: var(--border-radius);
274
- 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);
275
277
 
276
- &:focus {
277
- @include wt-placeholder('focus');
278
- border-color: var(--form-border--hover-color);
279
- }
278
+ &:focus {
279
+ @include wt-placeholder('focus');
280
+ border-color: var(--form-border--hover-color);
281
+ }
280
282
 
281
- .wt-input--outline & {
282
- border-color: var(--form-outline-border-color);
283
- }
283
+ .wt-input--outline & {
284
+ border-color: var(--form-outline-border-color);
285
+ }
284
286
 
285
- .wt-input--outline:hover &,
286
- .wt-input--outline &:focus {
287
- border-color: var(--form-outline-border--hover-color);
288
- }
287
+ .wt-input--outline:hover &,
288
+ .wt-input--outline &:focus {
289
+ border-color: var(--form-outline-border--hover-color);
290
+ }
289
291
 
290
- .wt-input--invalid &,
291
- .wt-input--invalid:hover & {
292
- border-color: var(--false-color);
293
- outline: none; // prevent outline overlapping false color
294
- }
292
+ .wt-input--invalid &,
293
+ .wt-input--invalid:hover & {
294
+ border-color: var(--false-color);
295
+ outline: none; // prevent outline overlapping false color
296
+ }
295
297
 
296
- .wt-input--disabled & {
297
- @include wt-placeholder('disabled');
298
- background: var(--form-border--disabled-color);
299
- border-color: var(--form-border--disabled-color);
300
- }
298
+ .wt-input--disabled & {
299
+ @include wt-placeholder('disabled');
300
+ border-color: var(--form-border--disabled-color);
301
+ background: var(--form-border--disabled-color);
301
302
  }
303
+ }
302
304
 
303
- .wt-input__after-wrapper {
304
- display: flex;
305
- gap: var(--input-after-wrapper-gap);
306
- align-items: center;
307
- position: absolute;
308
- top: 50%;
309
- right: var(--input-icon-margin);
310
- transform: translateY(-50%);
311
- 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);
312
314
 
313
- .wt-input__password-button {
314
- .wt-input--disabled & ::v-deep .wt-icon__icon {
315
- fill: var(--icon-color-disabled);
316
- }
315
+ .wt-input__password-button {
316
+ .wt-input--disabled & ::v-deep .wt-icon__icon {
317
+ fill: var(--icon-color-disabled);
318
+ }
317
319
 
318
- .wt-input:hover & ::v-deep .wt-icon__icon,
319
- .wt-input:focus-within & ::v-deep .wt-icon__icon {
320
- fill: var(--icon-color--hover);
321
- }
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);
322
323
  }
323
324
  }
325
+ }
324
326
  </style>