@dialpad/dialtone 9.53.0 → 9.54.0
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/dist/css/dialtone.css +71 -47
- package/dist/css/dialtone.min.css +1 -1
- package/dist/tokens/css/variables-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-light.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-light.css +1 -1
- package/dist/tokens/css/variables-light.css +1 -1
- package/dist/tokens/css/variables-tmo-dark.css +1 -1
- package/dist/tokens/css/variables-tmo-light.css +1 -1
- package/dist/tokens/less/variables-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-light.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-light.less +1 -1
- package/dist/tokens/less/variables-light.less +1 -1
- package/dist/tokens/less/variables-tmo-dark.less +1 -1
- package/dist/tokens/less/variables-tmo-light.less +1 -1
- package/dist/vue2/component-documentation.json +1 -1
- package/dist/vue2/lib/input.cjs +56 -79
- package/dist/vue2/lib/input.cjs.map +1 -1
- package/dist/vue2/lib/input.js +56 -79
- package/dist/vue2/lib/input.js.map +1 -1
- package/dist/vue2/types/components/input/input.vue.d.ts +5 -39
- package/dist/vue2/types/components/input/input.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/input/input_constants.d.ts +69 -0
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/lib/input.cjs +67 -93
- package/dist/vue3/lib/input.cjs.map +1 -1
- package/dist/vue3/lib/input.js +67 -93
- package/dist/vue3/lib/input.js.map +1 -1
- package/dist/vue3/types/components/input/input.vue.d.ts +5 -39
- package/dist/vue3/types/components/input/input.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/input/input_constants.d.ts +69 -0
- package/package.json +2 -1
package/dist/vue3/lib/input.cjs
CHANGED
|
@@ -25,6 +25,50 @@ const INPUT_SIZES = {
|
|
|
25
25
|
LARGE: "lg",
|
|
26
26
|
EXTRA_LARGE: "xl"
|
|
27
27
|
};
|
|
28
|
+
const INPUT_ICON_SIZES = {
|
|
29
|
+
xs: "100",
|
|
30
|
+
sm: "200",
|
|
31
|
+
md: "200",
|
|
32
|
+
lg: "400",
|
|
33
|
+
xl: "500"
|
|
34
|
+
};
|
|
35
|
+
const INPUT_SIZE_CLASSES = {
|
|
36
|
+
input: {
|
|
37
|
+
xs: "d-input--xs",
|
|
38
|
+
sm: "d-input--sm",
|
|
39
|
+
lg: "d-input--lg",
|
|
40
|
+
xl: "d-input--xl"
|
|
41
|
+
},
|
|
42
|
+
textarea: {
|
|
43
|
+
xs: "d-textarea--xs",
|
|
44
|
+
sm: "d-textarea--sm",
|
|
45
|
+
lg: "d-textarea--lg",
|
|
46
|
+
xl: "d-textarea--xl"
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const INPUT_STATE_CLASSES = {
|
|
50
|
+
input: {
|
|
51
|
+
error: "d-input--error",
|
|
52
|
+
warning: "d-input--warning",
|
|
53
|
+
success: "d-input--success"
|
|
54
|
+
},
|
|
55
|
+
textarea: {
|
|
56
|
+
error: "d-textarea--error",
|
|
57
|
+
warning: "d-textarea--warning",
|
|
58
|
+
success: "d-textarea--success"
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const DESCRIPTION_SIZE_CLASSES = {
|
|
62
|
+
lg: "d-description--lg",
|
|
63
|
+
xl: "d-description--xl"
|
|
64
|
+
};
|
|
65
|
+
const LABEL_SIZE_CLASSES = {
|
|
66
|
+
xs: "d-label--xs",
|
|
67
|
+
sm: "d-label--sm",
|
|
68
|
+
md: "d-label--md",
|
|
69
|
+
lg: "d-label--lg",
|
|
70
|
+
xl: "d-label--xl"
|
|
71
|
+
};
|
|
28
72
|
const _sfc_main = {
|
|
29
73
|
name: "DtInput",
|
|
30
74
|
components: { DtValidationMessages: lib_validationMessages.DtValidationMessages },
|
|
@@ -88,21 +132,11 @@ const _sfc_main = {
|
|
|
88
132
|
},
|
|
89
133
|
/**
|
|
90
134
|
* Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
|
|
91
|
-
* @values
|
|
135
|
+
* @values xs, sm, md, lg, xl
|
|
92
136
|
*/
|
|
93
137
|
size: {
|
|
94
138
|
type: String,
|
|
95
|
-
default:
|
|
96
|
-
validator: (t) => Object.values(INPUT_SIZES).includes(t)
|
|
97
|
-
},
|
|
98
|
-
/**
|
|
99
|
-
* Size of the icon. One of `xs`, `sm`, `md`, `lg`, `xl`. If you do not set this the icon will size relative
|
|
100
|
-
* to the input size
|
|
101
|
-
* @values null, xs, sm, md, lg, xl
|
|
102
|
-
*/
|
|
103
|
-
iconSize: {
|
|
104
|
-
type: String,
|
|
105
|
-
default: null,
|
|
139
|
+
default: "md",
|
|
106
140
|
validator: (t) => Object.values(INPUT_SIZES).includes(t)
|
|
107
141
|
},
|
|
108
142
|
/**
|
|
@@ -222,17 +256,6 @@ const _sfc_main = {
|
|
|
222
256
|
],
|
|
223
257
|
data() {
|
|
224
258
|
return {
|
|
225
|
-
descriptionSizeClasses: {
|
|
226
|
-
lg: "d-description--lg",
|
|
227
|
-
xl: "d-description--xl"
|
|
228
|
-
},
|
|
229
|
-
labelSizeClasses: {
|
|
230
|
-
xs: "d-label--xs",
|
|
231
|
-
sm: "d-label--sm",
|
|
232
|
-
md: "d-label--md",
|
|
233
|
-
lg: "d-label--lg",
|
|
234
|
-
xl: "d-label--xl"
|
|
235
|
-
},
|
|
236
259
|
isInputFocused: false,
|
|
237
260
|
isInvalid: false,
|
|
238
261
|
defaultLength: 0,
|
|
@@ -246,11 +269,8 @@ const _sfc_main = {
|
|
|
246
269
|
isDefaultSize() {
|
|
247
270
|
return this.size === INPUT_SIZES.DEFAULT;
|
|
248
271
|
},
|
|
249
|
-
|
|
250
|
-
return this.
|
|
251
|
-
},
|
|
252
|
-
iconSizeComputed() {
|
|
253
|
-
return this.iconSize ? this.iconSize : this.size;
|
|
272
|
+
iconSize() {
|
|
273
|
+
return INPUT_ICON_SIZES[this.size];
|
|
254
274
|
},
|
|
255
275
|
isValidSize() {
|
|
256
276
|
return Object.values(INPUT_SIZES).includes(this.size);
|
|
@@ -343,36 +363,10 @@ const _sfc_main = {
|
|
|
343
363
|
if (this.isDefaultSize || !this.isValidSize) {
|
|
344
364
|
return "";
|
|
345
365
|
}
|
|
346
|
-
|
|
347
|
-
input: {
|
|
348
|
-
xs: "d-input--xs",
|
|
349
|
-
sm: "d-input--sm",
|
|
350
|
-
lg: "d-input--lg",
|
|
351
|
-
xl: "d-input--xl"
|
|
352
|
-
},
|
|
353
|
-
textarea: {
|
|
354
|
-
xs: "d-textarea--xs",
|
|
355
|
-
sm: "d-textarea--sm",
|
|
356
|
-
lg: "d-textarea--lg",
|
|
357
|
-
xl: "d-textarea--xl"
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
return sizeClasses[this.inputComponent][this.size];
|
|
366
|
+
return INPUT_SIZE_CLASSES[this.inputComponent][this.size];
|
|
361
367
|
},
|
|
362
368
|
stateClass() {
|
|
363
|
-
|
|
364
|
-
input: {
|
|
365
|
-
error: "d-input--error base-input__input--error",
|
|
366
|
-
warning: "d-input--warning base-input__input--warning",
|
|
367
|
-
success: "d-input--success base-input__input--success"
|
|
368
|
-
},
|
|
369
|
-
textarea: {
|
|
370
|
-
error: "d-textarea--error base-input__input--error",
|
|
371
|
-
warning: "d-textarea--warning base-input__input--warning",
|
|
372
|
-
success: "d-textarea--success base-input__input--success"
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
return [inputStateClasses[this.inputComponent][this.inputState]];
|
|
369
|
+
return [INPUT_STATE_CLASSES[this.inputComponent][this.inputState]];
|
|
376
370
|
}
|
|
377
371
|
},
|
|
378
372
|
watch: {
|
|
@@ -391,10 +385,13 @@ const _sfc_main = {
|
|
|
391
385
|
}
|
|
392
386
|
}
|
|
393
387
|
},
|
|
388
|
+
beforeMount() {
|
|
389
|
+
this.descriptionSizeClasses = DESCRIPTION_SIZE_CLASSES;
|
|
390
|
+
this.labelSizeClasses = LABEL_SIZE_CLASSES;
|
|
391
|
+
},
|
|
394
392
|
methods: {
|
|
395
393
|
inputClasses() {
|
|
396
394
|
return [
|
|
397
|
-
"base-input__input",
|
|
398
395
|
this.inputComponent === "input" ? "d-input" : "d-textarea",
|
|
399
396
|
{
|
|
400
397
|
[this.stateClass]: this.showInputState,
|
|
@@ -427,24 +424,6 @@ const _sfc_main = {
|
|
|
427
424
|
type: this.inputLengthState
|
|
428
425
|
};
|
|
429
426
|
},
|
|
430
|
-
inputIconClasses(side) {
|
|
431
|
-
const iconSizeClasses = {
|
|
432
|
-
xs: "d-input-icon--xs",
|
|
433
|
-
sm: "d-input-icon--sm",
|
|
434
|
-
lg: "d-input-icon--lg",
|
|
435
|
-
xl: "d-input-icon--xl"
|
|
436
|
-
};
|
|
437
|
-
const iconOrientationClasses = {
|
|
438
|
-
left: "base-input__icon--left d-input-icon--left",
|
|
439
|
-
right: "base-input__icon--right d-input-icon--right"
|
|
440
|
-
};
|
|
441
|
-
return [
|
|
442
|
-
iconOrientationClasses[side],
|
|
443
|
-
"d-input-icon",
|
|
444
|
-
{ [iconSizeClasses[this.iconSizeComputed]]: !this.isDefaultIconSize },
|
|
445
|
-
this.sizeModifierClass
|
|
446
|
-
];
|
|
447
|
-
},
|
|
448
427
|
onBlur(e) {
|
|
449
428
|
var _a;
|
|
450
429
|
if (!((_a = this.$refs.container) == null ? void 0 : _a.contains(e.relatedTarget))) {
|
|
@@ -487,11 +466,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
487
466
|
const _component_dt_validation_messages = vue.resolveComponent("dt-validation-messages");
|
|
488
467
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
489
468
|
ref: "container",
|
|
490
|
-
class: vue.normalizeClass(
|
|
469
|
+
class: vue.normalizeClass({ "d-input--hidden": $props.hidden }),
|
|
491
470
|
"data-qa": "dt-input"
|
|
492
471
|
}, [
|
|
493
472
|
vue.createElementVNode("label", {
|
|
494
|
-
class: "base-input__label",
|
|
495
473
|
"aria-details": _ctx.$slots.description || $props.description ? $options.descriptionKey : void 0,
|
|
496
474
|
"data-qa": "dt-input-label-wrapper"
|
|
497
475
|
}, [
|
|
@@ -501,9 +479,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
501
479
|
ref: "label",
|
|
502
480
|
"data-qa": "dt-input-label",
|
|
503
481
|
class: vue.normalizeClass([
|
|
504
|
-
"base-input__label-text",
|
|
505
482
|
"d-label",
|
|
506
|
-
|
|
483
|
+
_ctx.labelSizeClasses[$props.size]
|
|
507
484
|
])
|
|
508
485
|
}, vue.toDisplayString($props.label), 3)) : vue.createCommentVNode("", true)
|
|
509
486
|
]),
|
|
@@ -512,9 +489,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
512
489
|
id: $options.descriptionKey,
|
|
513
490
|
ref: "description",
|
|
514
491
|
class: vue.normalizeClass([
|
|
515
|
-
"base-input__description",
|
|
516
492
|
"d-description",
|
|
517
|
-
|
|
493
|
+
_ctx.descriptionSizeClasses[$props.size]
|
|
518
494
|
]),
|
|
519
495
|
"data-qa": "dt-input-description"
|
|
520
496
|
}, [
|
|
@@ -529,16 +505,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
529
505
|
class: vue.normalizeClass($options.inputWrapperClasses()),
|
|
530
506
|
"read-only": $props.disabled === true ? true : void 0
|
|
531
507
|
}, [
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
class: vue.normalizeClass($options.inputIconClasses("left")),
|
|
508
|
+
vue.createElementVNode("span", {
|
|
509
|
+
class: "d-input-icon d-input-icon--left",
|
|
535
510
|
"data-qa": "dt-input-left-icon-wrapper",
|
|
536
511
|
onFocusout: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args))
|
|
537
512
|
}, [
|
|
538
|
-
vue.renderSlot(_ctx.$slots, "leftIcon")
|
|
539
|
-
],
|
|
513
|
+
vue.renderSlot(_ctx.$slots, "leftIcon", { iconSize: $options.iconSize })
|
|
514
|
+
], 32),
|
|
540
515
|
$options.isTextarea ? (vue.openBlock(), vue.createElementBlock("textarea", vue.mergeProps({
|
|
541
|
-
key:
|
|
516
|
+
key: 0,
|
|
542
517
|
ref: "input",
|
|
543
518
|
value: $props.modelValue,
|
|
544
519
|
name: $props.name,
|
|
@@ -548,7 +523,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
548
523
|
maxlength: $options.shouldLimitMaxLength ? $options.validationProps.length.max : null,
|
|
549
524
|
"data-qa": "dt-input-input"
|
|
550
525
|
}, _ctx.$attrs, vue.toHandlers($options.inputListeners, true)), null, 16, _hoisted_6)) : (vue.openBlock(), vue.createElementBlock("input", vue.mergeProps({
|
|
551
|
-
key:
|
|
526
|
+
key: 1,
|
|
552
527
|
ref: "input",
|
|
553
528
|
value: $props.modelValue,
|
|
554
529
|
name: $props.name,
|
|
@@ -559,14 +534,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
559
534
|
maxlength: $options.shouldLimitMaxLength ? $options.validationProps.length.max : null,
|
|
560
535
|
"data-qa": "dt-input-input"
|
|
561
536
|
}, _ctx.$attrs, vue.toHandlers($options.inputListeners, true)), null, 16, _hoisted_7)),
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
class: vue.normalizeClass($options.inputIconClasses("right")),
|
|
537
|
+
vue.createElementVNode("span", {
|
|
538
|
+
class: "d-input-icon d-input-icon--right",
|
|
565
539
|
"data-qa": "dt-input-right-icon-wrapper",
|
|
566
540
|
onFocusout: _cache[1] || (_cache[1] = (...args) => $options.onBlur && $options.onBlur(...args))
|
|
567
541
|
}, [
|
|
568
|
-
vue.renderSlot(_ctx.$slots, "rightIcon")
|
|
569
|
-
],
|
|
542
|
+
vue.renderSlot(_ctx.$slots, "rightIcon", { iconSize: $options.iconSize })
|
|
543
|
+
], 32)
|
|
570
544
|
], 10, _hoisted_5)
|
|
571
545
|
], 8, _hoisted_1),
|
|
572
546
|
vue.createVNode(_component_dt_validation_messages, vue.mergeProps({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.cjs","sources":["../../components/input/input_constants.js","../../components/input/input.vue"],"sourcesContent":["// Valid input types, any other input types (for example: 'radio' or 'checkbox') should\n// use the respective base vue components (radio.vue and checkout.vue).\nexport const INPUT_TYPES = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n PASSWORD: 'password',\n EMAIL: 'email',\n NUMBER: 'number',\n DATE: 'date',\n TIME: 'time',\n FILE: 'file',\n TEL: 'tel',\n};\n\nexport const INPUT_SIZES = {\n EXTRA_SMALL: 'xs',\n SMALL: 'sm',\n DEFAULT: 'md',\n LARGE: 'lg',\n EXTRA_LARGE: 'xl',\n};\n\nexport default {\n INPUT_TYPES,\n INPUT_SIZES,\n};\n","<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n ref=\"container\"\n :class=\"['base-input', { 'd-vi-hidden': hidden }]\"\n data-qa=\"dt-input\"\n >\n <label\n class=\"base-input__label\"\n :aria-details=\"$slots.description || description ? descriptionKey : undefined\"\n data-qa=\"dt-input-label-wrapper\"\n >\n <!-- @slot slot for label, defaults to label prop -->\n <slot name=\"labelSlot\">\n <div\n v-if=\"labelVisible && label\"\n ref=\"label\"\n data-qa=\"dt-input-label\"\n :class=\"[\n 'base-input__label-text',\n 'd-label',\n labelSizeClasses[size],\n ]\"\n >\n {{ label }}\n </div>\n </slot>\n <div\n v-if=\"hasSlotContent($slots.description) || description || shouldValidateLength\"\n :id=\"descriptionKey\"\n ref=\"description\"\n :class=\"[\n 'base-input__description',\n 'd-description',\n descriptionSizeClasses[size],\n ]\"\n data-qa=\"dt-input-description\"\n >\n <div\n v-if=\"hasSlotContent($slots.description) || description\"\n >\n <!-- @slot slot for description, defaults to description prop -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <div\n v-if=\"shouldValidateLength\"\n data-qa=\"dt-input-length-description\"\n class=\"d-input__length-description\"\n >\n {{ validationProps.length.description }}\n </div>\n </div>\n <div\n :class=\"inputWrapperClasses()\"\n :read-only=\"disabled === true ? true : undefined\"\n >\n <span\n v-if=\"hasSlotContent($slots.leftIcon)\"\n :class=\"inputIconClasses('left')\"\n data-qa=\"dt-input-left-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for left icon -->\n <slot name=\"leftIcon\" />\n </span>\n <textarea\n v-if=\"isTextarea\"\n ref=\"input\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n data-qa=\"dt-input-input\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n />\n <input\n v-else\n ref=\"input\"\n :value=\"modelValue\"\n :name=\"name\"\n :type=\"type\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n data-qa=\"dt-input-input\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n >\n <span\n v-if=\"hasSlotContent($slots.rightIcon)\"\n :class=\"inputIconClasses('right')\"\n data-qa=\"dt-input-right-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for right icon -->\n <slot name=\"rightIcon\" />\n </span>\n </div>\n </label>\n <dt-validation-messages\n :validation-messages=\"validationMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-input-messages\"\n />\n </div>\n</template>\n\n<script>\nimport { DESCRIPTION_SIZE_TYPES, VALIDATION_MESSAGE_TYPES } from '@/common/constants';\nimport { INPUT_TYPES, INPUT_SIZES } from './input_constants';\nimport {\n getUniqueString,\n getValidationState,\n hasSlotContent,\n} from '@/common/utils';\nimport { DtValidationMessages } from '@/components/validation_messages';\nimport { MessagesMixin } from '@/common/mixins/input';\n\n/**\n * An input field is an input control that allows users to enter alphanumeric information.\n * It can have a range of options and supports single line and multi-line lengths,\n * as well as varying formats, including numbers, masked passwords, etc.\n * @property {Boolean} placeholder attribute\n * @see https://dialtone.dialpad.com/components/input.html\n */\nexport default {\n name: 'DtInput',\n\n components: { DtValidationMessages },\n\n mixins: [MessagesMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Name property of the input element\n */\n name: {\n type: String,\n default: '',\n },\n\n /**\n * Type of the input.\n * When `textarea` a `<textarea>` element will be rendered instead of an `<input>` element.\n * @values text, password, email, number, textarea, date, time, file, tel\n * @default 'text'\n */\n type: {\n type: String,\n default: INPUT_TYPES.TEXT,\n validator: (t) => Object.values(INPUT_TYPES).includes(t),\n },\n\n /**\n * Value of the input\n */\n modelValue: {\n type: [String, Number],\n default: '',\n },\n\n /**\n * Disables the input\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Label for the input\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values null, xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: null,\n validator: (t) => Object.values(INPUT_SIZES).includes(t),\n },\n\n /**\n * Size of the icon. One of `xs`, `sm`, `md`, `lg`, `xl`. If you do not set this the icon will size relative\n * to the input size\n * @values null, xs, sm, md, lg, xl\n */\n iconSize: {\n type: String,\n default: null,\n validator: (t) => Object.values(INPUT_SIZES).includes(t),\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The current character length that the user has entered into the input.\n * This will only need to be used if you are using `validate.length` and\n * the string contains abnormal characters.\n * For example, an emoji could take up many characters in the input, but should only count as 1 character.\n * If no number is provided, a built-in length calculation will be used for the length validation.\n */\n currentLength: {\n type: Number,\n default: null,\n },\n\n /**\n * Whether the input will continue to display a warning validation message even if the input has lost focus.\n */\n retainWarning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Validation for the input. Supports maximum length validation with the structure:\n * `{ \"length\": {\"description\": string, \"max\": number, \"warn\": number, \"message\": string,\n * \"limitMaxLength\": boolean }}`\n */\n validate: {\n type: Object,\n default: null,\n },\n\n /**\n * hidden allows to use input without the element visually present in DOM\n */\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String}\n */\n 'input',\n\n /**\n * Native input blur event\n *\n * @event blur\n * @type {FocusEvent}\n */\n 'blur',\n\n /**\n * Input clear event\n *\n * @event clear\n */\n 'clear',\n\n /**\n * Native input focus event\n *\n * @event focus\n * @type {FocusEvent}\n */\n 'focus',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event update:modelValue\n */\n 'update:modelValue',\n\n /**\n * Length of the input when currentLength prop is not passed\n *\n * @event update:length\n * @type {Number}\n */\n 'update:length',\n\n /**\n * Result of the input validation\n *\n * @event update:invalid\n * @type {Boolean}\n */\n 'update:invalid',\n ],\n\n data () {\n return {\n descriptionSizeClasses: {\n lg: 'd-description--lg',\n xl: 'd-description--xl',\n },\n\n labelSizeClasses: {\n xs: 'd-label--xs',\n sm: 'd-label--sm',\n md: 'd-label--md',\n lg: 'd-label--lg',\n xl: 'd-label--xl',\n },\n\n isInputFocused: false,\n isInvalid: false,\n defaultLength: 0,\n hasSlotContent,\n };\n },\n\n computed: {\n\n isTextarea () {\n return this.type === INPUT_TYPES.TEXTAREA;\n },\n\n isDefaultSize () {\n return this.size === INPUT_SIZES.DEFAULT;\n },\n\n isDefaultIconSize () {\n return this.iconSizeComputed === INPUT_SIZES.DEFAULT;\n },\n\n iconSizeComputed () {\n return this.iconSize ? this.iconSize : this.size;\n },\n\n isValidSize () {\n return Object.values(INPUT_SIZES).includes(this.size);\n },\n\n isValidDescriptionSize () {\n return Object.values(DESCRIPTION_SIZE_TYPES).includes(this.size);\n },\n\n inputComponent () {\n if (this.isTextarea) {\n return 'textarea';\n }\n\n return 'input';\n },\n\n inputListeners () {\n return {\n input: async event => {\n let val = event.target.value;\n if (this.type === INPUT_TYPES.FILE) {\n const files = Array.from(event.target.files);\n val = files.map(file => file.name);\n }\n this.$emit('input', val);\n this.$emit('update:modelValue', val);\n },\n\n blur: event => {\n this.isInputFocused = false;\n this.onBlur(event);\n },\n\n focus: event => {\n this.isInputFocused = true;\n this.$emit('focus', event);\n },\n\n focusin: event => this.$emit('focusin', event),\n focusout: event => this.$emit('focusout', event),\n };\n },\n\n descriptionKey () {\n return `input-description-${getUniqueString()}`;\n },\n\n inputState () {\n return getValidationState(this.validationMessages);\n },\n\n defaultLengthCalculation () {\n return this.calculateLength(this.modelValue);\n },\n\n validationProps () {\n return {\n length: {\n description: this?.validate?.length?.description,\n max: this?.validate?.length?.max,\n warn: this?.validate?.length?.warn,\n message: this?.validate?.length?.message,\n limitMaxLength: this?.validate?.length?.limitMaxLength ? this.validate.length.limitMaxLength : false,\n },\n };\n },\n\n validationMessages () {\n // Add length validation message if exists\n if (this.showLengthLimitValidation) {\n return this.formattedMessages.concat([this.inputLengthErrorMessage()]);\n }\n\n return this.formattedMessages;\n },\n\n showInputState () {\n return this.showMessages && this.inputState;\n },\n\n inputLength () {\n return this.currentLength ? this.currentLength : this.defaultLengthCalculation;\n },\n\n inputLengthState () {\n if (this.inputLength < this.validationProps.length.warn) {\n return null;\n } else if (this.inputLength <= this.validationProps.length.max) {\n return this.validationProps.length.warn ? VALIDATION_MESSAGE_TYPES.WARNING : null;\n } else {\n return VALIDATION_MESSAGE_TYPES.ERROR;\n }\n },\n\n shouldValidateLength () {\n return !!(\n this.validationProps.length.description &&\n this.validationProps.length.max\n );\n },\n\n shouldLimitMaxLength () {\n return this.shouldValidateLength && this.validationProps.length.limitMaxLength;\n },\n\n // eslint-disable-next-line complexity\n showLengthLimitValidation () {\n return (\n this.shouldValidateLength &&\n this.inputLengthState !== null &&\n this.validationProps.length.message &&\n (this.retainWarning || this.isInputFocused || this.isInvalid)\n );\n },\n\n sizeModifierClass () {\n if (this.isDefaultSize || !this.isValidSize) {\n return '';\n }\n\n const sizeClasses = {\n input: {\n xs: 'd-input--xs',\n sm: 'd-input--sm',\n lg: 'd-input--lg',\n xl: 'd-input--xl',\n },\n\n textarea: {\n xs: 'd-textarea--xs',\n sm: 'd-textarea--sm',\n lg: 'd-textarea--lg',\n xl: 'd-textarea--xl',\n },\n };\n\n return sizeClasses[this.inputComponent][this.size];\n },\n\n stateClass () {\n const inputStateClasses = {\n input: {\n error: 'd-input--error base-input__input--error',\n warning: 'd-input--warning base-input__input--warning',\n success: 'd-input--success base-input__input--success',\n },\n\n textarea: {\n error: 'd-textarea--error base-input__input--error',\n warning: 'd-textarea--warning base-input__input--warning',\n success: 'd-textarea--success base-input__input--success',\n },\n };\n return [inputStateClasses[this.inputComponent][this.inputState]];\n },\n },\n\n watch: {\n isInvalid (val) {\n this.$emit('update:invalid', val);\n },\n\n modelValue: {\n immediate: true,\n handler (newValue) {\n if (this.shouldValidateLength) {\n this.validateLength(this.inputLength);\n }\n\n if (this.currentLength == null) {\n this.$emit('update:length', this.calculateLength(newValue));\n }\n },\n },\n },\n\n methods: {\n inputClasses () {\n return [\n 'base-input__input',\n this.inputComponent === 'input' ? 'd-input' : 'd-textarea',\n {\n [this.stateClass]: this.showInputState,\n 'd-input-icon--left': this.$slots.leftIcon,\n 'd-input-icon--right': this.$slots.rightIcon,\n },\n this.sizeModifierClass,\n this.inputClass,\n ];\n },\n\n inputWrapperClasses () {\n if (this.hidden) {\n return [];\n }\n return [\n 'd-input__wrapper',\n { [this.stateClass]: this.showInputState },\n this.inputWrapperClass,\n ];\n },\n\n calculateLength (value) {\n if (typeof value !== 'string') {\n return 0;\n }\n\n return [...value].length;\n },\n\n inputLengthErrorMessage () {\n return {\n message: this.validationProps.length.message,\n type: this.inputLengthState,\n };\n },\n\n inputIconClasses (side) {\n const iconSizeClasses = {\n xs: 'd-input-icon--xs',\n sm: 'd-input-icon--sm',\n lg: 'd-input-icon--lg',\n xl: 'd-input-icon--xl',\n };\n const iconOrientationClasses = {\n left: 'base-input__icon--left d-input-icon--left',\n right: 'base-input__icon--right d-input-icon--right',\n };\n\n return [\n iconOrientationClasses[side],\n 'd-input-icon',\n { [iconSizeClasses[this.iconSizeComputed]]: !this.isDefaultIconSize },\n this.sizeModifierClass,\n ];\n },\n\n onBlur (e) {\n // Do not emit a blur event if the target element is a child of this component\n if (!this.$refs.container?.contains(e.relatedTarget)) {\n this.$emit('blur', e);\n }\n },\n\n clear () {\n this.$emit('input', '');\n this.$emit('clear');\n },\n\n blur () {\n this.$refs.input.blur();\n },\n\n focus () {\n this.$refs.input.focus();\n },\n\n select () {\n this.$refs.input.select();\n },\n\n getMessageKey (type, index) {\n return `message-${type}-${index}`;\n },\n\n validateLength (length) {\n this.isInvalid = (length > this.validationProps.length.max);\n },\n },\n};\n</script>\n"],"names":["DtValidationMessages","MessagesMixin","hasSlotContent","DESCRIPTION_SIZE_TYPES","getUniqueString","getValidationState","VALIDATION_MESSAGE_TYPES","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","_openBlock","_toDisplayString","_mergeProps","_toHandlers","_createVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.cjs","sources":["../../components/input/input_constants.js","../../components/input/input.vue"],"sourcesContent":["// Valid input types, any other input types (for example: 'radio' or 'checkbox') should\n// use the respective base vue components (radio.vue and checkout.vue).\nexport const INPUT_TYPES = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n PASSWORD: 'password',\n EMAIL: 'email',\n NUMBER: 'number',\n DATE: 'date',\n TIME: 'time',\n FILE: 'file',\n TEL: 'tel',\n};\n\nexport const INPUT_SIZES = {\n EXTRA_SMALL: 'xs',\n SMALL: 'sm',\n DEFAULT: 'md',\n LARGE: 'lg',\n EXTRA_LARGE: 'xl',\n};\n\nexport const INPUT_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '200',\n lg: '400',\n xl: '500',\n};\n\nexport const INPUT_SIZE_CLASSES = {\n input: {\n xs: 'd-input--xs',\n sm: 'd-input--sm',\n lg: 'd-input--lg',\n xl: 'd-input--xl',\n },\n\n textarea: {\n xs: 'd-textarea--xs',\n sm: 'd-textarea--sm',\n lg: 'd-textarea--lg',\n xl: 'd-textarea--xl',\n },\n};\n\nexport const INPUT_STATE_CLASSES = {\n input: {\n error: 'd-input--error',\n warning: 'd-input--warning',\n success: 'd-input--success',\n },\n\n textarea: {\n error: 'd-textarea--error',\n warning: 'd-textarea--warning',\n success: 'd-textarea--success',\n },\n};\n\nexport const DESCRIPTION_SIZE_CLASSES = {\n lg: 'd-description--lg',\n xl: 'd-description--xl',\n};\n\nexport const LABEL_SIZE_CLASSES = {\n xs: 'd-label--xs',\n sm: 'd-label--sm',\n md: 'd-label--md',\n lg: 'd-label--lg',\n xl: 'd-label--xl',\n};\n\nexport default {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_ICON_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n};\n","<template>\n <div\n ref=\"container\"\n :class=\"{ 'd-input--hidden': hidden }\"\n data-qa=\"dt-input\"\n >\n <label\n :aria-details=\"$slots.description || description ? descriptionKey : undefined\"\n data-qa=\"dt-input-label-wrapper\"\n >\n <!-- @slot Slot for label, defaults to label prop -->\n <slot name=\"labelSlot\">\n <div\n v-if=\"labelVisible && label\"\n ref=\"label\"\n data-qa=\"dt-input-label\"\n :class=\"[\n 'd-label',\n labelSizeClasses[size],\n ]\"\n >\n {{ label }}\n </div>\n </slot>\n <div\n v-if=\"hasSlotContent($slots.description) || description || shouldValidateLength\"\n :id=\"descriptionKey\"\n ref=\"description\"\n :class=\"[\n 'd-description',\n descriptionSizeClasses[size],\n ]\"\n data-qa=\"dt-input-description\"\n >\n <div\n v-if=\"hasSlotContent($slots.description) || description\"\n >\n <!-- @slot Slot for description, defaults to description prop -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <div\n v-if=\"shouldValidateLength\"\n data-qa=\"dt-input-length-description\"\n class=\"d-input__length-description\"\n >\n {{ validationProps.length.description }}\n </div>\n </div>\n <div\n :class=\"inputWrapperClasses()\"\n :read-only=\"disabled === true ? true : undefined\"\n >\n <span\n class=\"d-input-icon d-input-icon--left\"\n data-qa=\"dt-input-left-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for left icon -->\n <slot\n name=\"leftIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <textarea\n v-if=\"isTextarea\"\n ref=\"input\"\n :value=\"modelValue\"\n :name=\"name\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n data-qa=\"dt-input-input\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n />\n <input\n v-else\n ref=\"input\"\n :value=\"modelValue\"\n :name=\"name\"\n :type=\"type\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n data-qa=\"dt-input-input\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n >\n <span\n class=\"d-input-icon d-input-icon--right\"\n data-qa=\"dt-input-right-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for right icon -->\n <slot\n name=\"rightIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n </div>\n </label>\n <dt-validation-messages\n :validation-messages=\"validationMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-input-messages\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DESCRIPTION_SIZE_TYPES, VALIDATION_MESSAGE_TYPES } from '@/common/constants';\nimport {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_ICON_SIZES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n} from './input_constants';\nimport {\n getUniqueString,\n getValidationState,\n hasSlotContent,\n} from '@/common/utils';\nimport { DtValidationMessages } from '@/components/validation_messages';\nimport { MessagesMixin } from '@/common/mixins/input';\n\n/**\n * An input field is an input control that allows users to enter alphanumeric information.\n * It can have a range of options and supports single line and multi-line lengths,\n * as well as varying formats, including numbers, masked passwords, etc.\n * @property {Boolean} placeholder attribute\n * @see https://dialtone.dialpad.com/components/input.html\n */\nexport default {\n name: 'DtInput',\n\n components: { DtValidationMessages },\n\n mixins: [MessagesMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Name property of the input element\n */\n name: {\n type: String,\n default: '',\n },\n\n /**\n * Type of the input.\n * When `textarea` a `<textarea>` element will be rendered instead of an `<input>` element.\n * @values text, password, email, number, textarea, date, time, file, tel\n * @default 'text'\n */\n type: {\n type: String,\n default: INPUT_TYPES.TEXT,\n validator: (t) => Object.values(INPUT_TYPES).includes(t),\n },\n\n /**\n * Value of the input\n */\n modelValue: {\n type: [String, Number],\n default: '',\n },\n\n /**\n * Disables the input\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Label for the input\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (t) => Object.values(INPUT_SIZES).includes(t),\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The current character length that the user has entered into the input.\n * This will only need to be used if you are using `validate.length` and\n * the string contains abnormal characters.\n * For example, an emoji could take up many characters in the input, but should only count as 1 character.\n * If no number is provided, a built-in length calculation will be used for the length validation.\n */\n currentLength: {\n type: Number,\n default: null,\n },\n\n /**\n * Whether the input will continue to display a warning validation message even if the input has lost focus.\n */\n retainWarning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Validation for the input. Supports maximum length validation with the structure:\n * `{ \"length\": {\"description\": string, \"max\": number, \"warn\": number, \"message\": string,\n * \"limitMaxLength\": boolean }}`\n */\n validate: {\n type: Object,\n default: null,\n },\n\n /**\n * hidden allows to use input without the element visually present in DOM\n */\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String}\n */\n 'input',\n\n /**\n * Native input blur event\n *\n * @event blur\n * @type {FocusEvent}\n */\n 'blur',\n\n /**\n * Input clear event\n *\n * @event clear\n */\n 'clear',\n\n /**\n * Native input focus event\n *\n * @event focus\n * @type {FocusEvent}\n */\n 'focus',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event update:modelValue\n */\n 'update:modelValue',\n\n /**\n * Length of the input when currentLength prop is not passed\n *\n * @event update:length\n * @type {Number}\n */\n 'update:length',\n\n /**\n * Result of the input validation\n *\n * @event update:invalid\n * @type {Boolean}\n */\n 'update:invalid',\n ],\n\n data () {\n return {\n isInputFocused: false,\n isInvalid: false,\n defaultLength: 0,\n hasSlotContent,\n };\n },\n\n computed: {\n\n isTextarea () {\n return this.type === INPUT_TYPES.TEXTAREA;\n },\n\n isDefaultSize () {\n return this.size === INPUT_SIZES.DEFAULT;\n },\n\n iconSize () {\n return INPUT_ICON_SIZES[this.size];\n },\n\n isValidSize () {\n return Object.values(INPUT_SIZES).includes(this.size);\n },\n\n isValidDescriptionSize () {\n return Object.values(DESCRIPTION_SIZE_TYPES).includes(this.size);\n },\n\n inputComponent () {\n if (this.isTextarea) {\n return 'textarea';\n }\n\n return 'input';\n },\n\n inputListeners () {\n return {\n input: async event => {\n let val = event.target.value;\n if (this.type === INPUT_TYPES.FILE) {\n const files = Array.from(event.target.files);\n val = files.map(file => file.name);\n }\n this.$emit('input', val);\n this.$emit('update:modelValue', val);\n },\n\n blur: event => {\n this.isInputFocused = false;\n this.onBlur(event);\n },\n\n focus: event => {\n this.isInputFocused = true;\n this.$emit('focus', event);\n },\n\n focusin: event => this.$emit('focusin', event),\n focusout: event => this.$emit('focusout', event),\n };\n },\n\n descriptionKey () {\n return `input-description-${getUniqueString()}`;\n },\n\n inputState () {\n return getValidationState(this.validationMessages);\n },\n\n defaultLengthCalculation () {\n return this.calculateLength(this.modelValue);\n },\n\n validationProps () {\n return {\n length: {\n description: this?.validate?.length?.description,\n max: this?.validate?.length?.max,\n warn: this?.validate?.length?.warn,\n message: this?.validate?.length?.message,\n limitMaxLength: this?.validate?.length?.limitMaxLength ? this.validate.length.limitMaxLength : false,\n },\n };\n },\n\n validationMessages () {\n // Add length validation message if exists\n if (this.showLengthLimitValidation) {\n return this.formattedMessages.concat([this.inputLengthErrorMessage()]);\n }\n\n return this.formattedMessages;\n },\n\n showInputState () {\n return this.showMessages && this.inputState;\n },\n\n inputLength () {\n return this.currentLength ? this.currentLength : this.defaultLengthCalculation;\n },\n\n inputLengthState () {\n if (this.inputLength < this.validationProps.length.warn) {\n return null;\n } else if (this.inputLength <= this.validationProps.length.max) {\n return this.validationProps.length.warn ? VALIDATION_MESSAGE_TYPES.WARNING : null;\n } else {\n return VALIDATION_MESSAGE_TYPES.ERROR;\n }\n },\n\n shouldValidateLength () {\n return !!(\n this.validationProps.length.description &&\n this.validationProps.length.max\n );\n },\n\n shouldLimitMaxLength () {\n return this.shouldValidateLength && this.validationProps.length.limitMaxLength;\n },\n\n // eslint-disable-next-line complexity\n showLengthLimitValidation () {\n return (\n this.shouldValidateLength &&\n this.inputLengthState !== null &&\n this.validationProps.length.message &&\n (this.retainWarning || this.isInputFocused || this.isInvalid)\n );\n },\n\n sizeModifierClass () {\n if (this.isDefaultSize || !this.isValidSize) {\n return '';\n }\n\n return INPUT_SIZE_CLASSES[this.inputComponent][this.size];\n },\n\n stateClass () {\n return [INPUT_STATE_CLASSES[this.inputComponent][this.inputState]];\n },\n },\n\n watch: {\n isInvalid (val) {\n this.$emit('update:invalid', val);\n },\n\n modelValue: {\n immediate: true,\n handler (newValue) {\n if (this.shouldValidateLength) {\n this.validateLength(this.inputLength);\n }\n\n if (this.currentLength == null) {\n this.$emit('update:length', this.calculateLength(newValue));\n }\n },\n },\n },\n\n beforeMount () {\n this.descriptionSizeClasses = DESCRIPTION_SIZE_CLASSES;\n this.labelSizeClasses = LABEL_SIZE_CLASSES;\n },\n\n methods: {\n inputClasses () {\n return [\n this.inputComponent === 'input' ? 'd-input' : 'd-textarea',\n {\n [this.stateClass]: this.showInputState,\n 'd-input-icon--left': this.$slots.leftIcon,\n 'd-input-icon--right': this.$slots.rightIcon,\n },\n this.sizeModifierClass,\n this.inputClass,\n ];\n },\n\n inputWrapperClasses () {\n if (this.hidden) {\n return [];\n }\n return [\n 'd-input__wrapper',\n { [this.stateClass]: this.showInputState },\n this.inputWrapperClass,\n ];\n },\n\n calculateLength (value) {\n if (typeof value !== 'string') {\n return 0;\n }\n\n return [...value].length;\n },\n\n inputLengthErrorMessage () {\n return {\n message: this.validationProps.length.message,\n type: this.inputLengthState,\n };\n },\n\n onBlur (e) {\n // Do not emit a blur event if the target element is a child of this component\n if (!this.$refs.container?.contains(e.relatedTarget)) {\n this.$emit('blur', e);\n }\n },\n\n clear () {\n this.$emit('input', '');\n this.$emit('clear');\n },\n\n blur () {\n this.$refs.input.blur();\n },\n\n focus () {\n this.$refs.input.focus();\n },\n\n select () {\n this.$refs.input.select();\n },\n\n getMessageKey (type, index) {\n return `message-${type}-${index}`;\n },\n\n validateLength (length) {\n this.isInvalid = (length > this.validationProps.length.max);\n },\n },\n};\n</script>\n"],"names":["DtValidationMessages","MessagesMixin","hasSlotContent","DESCRIPTION_SIZE_TYPES","getUniqueString","getValidationState","VALIDATION_MESSAGE_TYPES","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","_openBlock","_toDisplayString","_mergeProps","_toHandlers","_createVNode"],"mappings":"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"}
|
package/dist/vue3/lib/input.js
CHANGED
|
@@ -23,6 +23,50 @@ const INPUT_SIZES = {
|
|
|
23
23
|
LARGE: "lg",
|
|
24
24
|
EXTRA_LARGE: "xl"
|
|
25
25
|
};
|
|
26
|
+
const INPUT_ICON_SIZES = {
|
|
27
|
+
xs: "100",
|
|
28
|
+
sm: "200",
|
|
29
|
+
md: "200",
|
|
30
|
+
lg: "400",
|
|
31
|
+
xl: "500"
|
|
32
|
+
};
|
|
33
|
+
const INPUT_SIZE_CLASSES = {
|
|
34
|
+
input: {
|
|
35
|
+
xs: "d-input--xs",
|
|
36
|
+
sm: "d-input--sm",
|
|
37
|
+
lg: "d-input--lg",
|
|
38
|
+
xl: "d-input--xl"
|
|
39
|
+
},
|
|
40
|
+
textarea: {
|
|
41
|
+
xs: "d-textarea--xs",
|
|
42
|
+
sm: "d-textarea--sm",
|
|
43
|
+
lg: "d-textarea--lg",
|
|
44
|
+
xl: "d-textarea--xl"
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const INPUT_STATE_CLASSES = {
|
|
48
|
+
input: {
|
|
49
|
+
error: "d-input--error",
|
|
50
|
+
warning: "d-input--warning",
|
|
51
|
+
success: "d-input--success"
|
|
52
|
+
},
|
|
53
|
+
textarea: {
|
|
54
|
+
error: "d-textarea--error",
|
|
55
|
+
warning: "d-textarea--warning",
|
|
56
|
+
success: "d-textarea--success"
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const DESCRIPTION_SIZE_CLASSES = {
|
|
60
|
+
lg: "d-description--lg",
|
|
61
|
+
xl: "d-description--xl"
|
|
62
|
+
};
|
|
63
|
+
const LABEL_SIZE_CLASSES = {
|
|
64
|
+
xs: "d-label--xs",
|
|
65
|
+
sm: "d-label--sm",
|
|
66
|
+
md: "d-label--md",
|
|
67
|
+
lg: "d-label--lg",
|
|
68
|
+
xl: "d-label--xl"
|
|
69
|
+
};
|
|
26
70
|
const _sfc_main = {
|
|
27
71
|
name: "DtInput",
|
|
28
72
|
components: { DtValidationMessages },
|
|
@@ -86,21 +130,11 @@ const _sfc_main = {
|
|
|
86
130
|
},
|
|
87
131
|
/**
|
|
88
132
|
* Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
|
|
89
|
-
* @values
|
|
133
|
+
* @values xs, sm, md, lg, xl
|
|
90
134
|
*/
|
|
91
135
|
size: {
|
|
92
136
|
type: String,
|
|
93
|
-
default:
|
|
94
|
-
validator: (t) => Object.values(INPUT_SIZES).includes(t)
|
|
95
|
-
},
|
|
96
|
-
/**
|
|
97
|
-
* Size of the icon. One of `xs`, `sm`, `md`, `lg`, `xl`. If you do not set this the icon will size relative
|
|
98
|
-
* to the input size
|
|
99
|
-
* @values null, xs, sm, md, lg, xl
|
|
100
|
-
*/
|
|
101
|
-
iconSize: {
|
|
102
|
-
type: String,
|
|
103
|
-
default: null,
|
|
137
|
+
default: "md",
|
|
104
138
|
validator: (t) => Object.values(INPUT_SIZES).includes(t)
|
|
105
139
|
},
|
|
106
140
|
/**
|
|
@@ -220,17 +254,6 @@ const _sfc_main = {
|
|
|
220
254
|
],
|
|
221
255
|
data() {
|
|
222
256
|
return {
|
|
223
|
-
descriptionSizeClasses: {
|
|
224
|
-
lg: "d-description--lg",
|
|
225
|
-
xl: "d-description--xl"
|
|
226
|
-
},
|
|
227
|
-
labelSizeClasses: {
|
|
228
|
-
xs: "d-label--xs",
|
|
229
|
-
sm: "d-label--sm",
|
|
230
|
-
md: "d-label--md",
|
|
231
|
-
lg: "d-label--lg",
|
|
232
|
-
xl: "d-label--xl"
|
|
233
|
-
},
|
|
234
257
|
isInputFocused: false,
|
|
235
258
|
isInvalid: false,
|
|
236
259
|
defaultLength: 0,
|
|
@@ -244,11 +267,8 @@ const _sfc_main = {
|
|
|
244
267
|
isDefaultSize() {
|
|
245
268
|
return this.size === INPUT_SIZES.DEFAULT;
|
|
246
269
|
},
|
|
247
|
-
|
|
248
|
-
return this.
|
|
249
|
-
},
|
|
250
|
-
iconSizeComputed() {
|
|
251
|
-
return this.iconSize ? this.iconSize : this.size;
|
|
270
|
+
iconSize() {
|
|
271
|
+
return INPUT_ICON_SIZES[this.size];
|
|
252
272
|
},
|
|
253
273
|
isValidSize() {
|
|
254
274
|
return Object.values(INPUT_SIZES).includes(this.size);
|
|
@@ -341,36 +361,10 @@ const _sfc_main = {
|
|
|
341
361
|
if (this.isDefaultSize || !this.isValidSize) {
|
|
342
362
|
return "";
|
|
343
363
|
}
|
|
344
|
-
|
|
345
|
-
input: {
|
|
346
|
-
xs: "d-input--xs",
|
|
347
|
-
sm: "d-input--sm",
|
|
348
|
-
lg: "d-input--lg",
|
|
349
|
-
xl: "d-input--xl"
|
|
350
|
-
},
|
|
351
|
-
textarea: {
|
|
352
|
-
xs: "d-textarea--xs",
|
|
353
|
-
sm: "d-textarea--sm",
|
|
354
|
-
lg: "d-textarea--lg",
|
|
355
|
-
xl: "d-textarea--xl"
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
return sizeClasses[this.inputComponent][this.size];
|
|
364
|
+
return INPUT_SIZE_CLASSES[this.inputComponent][this.size];
|
|
359
365
|
},
|
|
360
366
|
stateClass() {
|
|
361
|
-
|
|
362
|
-
input: {
|
|
363
|
-
error: "d-input--error base-input__input--error",
|
|
364
|
-
warning: "d-input--warning base-input__input--warning",
|
|
365
|
-
success: "d-input--success base-input__input--success"
|
|
366
|
-
},
|
|
367
|
-
textarea: {
|
|
368
|
-
error: "d-textarea--error base-input__input--error",
|
|
369
|
-
warning: "d-textarea--warning base-input__input--warning",
|
|
370
|
-
success: "d-textarea--success base-input__input--success"
|
|
371
|
-
}
|
|
372
|
-
};
|
|
373
|
-
return [inputStateClasses[this.inputComponent][this.inputState]];
|
|
367
|
+
return [INPUT_STATE_CLASSES[this.inputComponent][this.inputState]];
|
|
374
368
|
}
|
|
375
369
|
},
|
|
376
370
|
watch: {
|
|
@@ -389,10 +383,13 @@ const _sfc_main = {
|
|
|
389
383
|
}
|
|
390
384
|
}
|
|
391
385
|
},
|
|
386
|
+
beforeMount() {
|
|
387
|
+
this.descriptionSizeClasses = DESCRIPTION_SIZE_CLASSES;
|
|
388
|
+
this.labelSizeClasses = LABEL_SIZE_CLASSES;
|
|
389
|
+
},
|
|
392
390
|
methods: {
|
|
393
391
|
inputClasses() {
|
|
394
392
|
return [
|
|
395
|
-
"base-input__input",
|
|
396
393
|
this.inputComponent === "input" ? "d-input" : "d-textarea",
|
|
397
394
|
{
|
|
398
395
|
[this.stateClass]: this.showInputState,
|
|
@@ -425,24 +422,6 @@ const _sfc_main = {
|
|
|
425
422
|
type: this.inputLengthState
|
|
426
423
|
};
|
|
427
424
|
},
|
|
428
|
-
inputIconClasses(side) {
|
|
429
|
-
const iconSizeClasses = {
|
|
430
|
-
xs: "d-input-icon--xs",
|
|
431
|
-
sm: "d-input-icon--sm",
|
|
432
|
-
lg: "d-input-icon--lg",
|
|
433
|
-
xl: "d-input-icon--xl"
|
|
434
|
-
};
|
|
435
|
-
const iconOrientationClasses = {
|
|
436
|
-
left: "base-input__icon--left d-input-icon--left",
|
|
437
|
-
right: "base-input__icon--right d-input-icon--right"
|
|
438
|
-
};
|
|
439
|
-
return [
|
|
440
|
-
iconOrientationClasses[side],
|
|
441
|
-
"d-input-icon",
|
|
442
|
-
{ [iconSizeClasses[this.iconSizeComputed]]: !this.isDefaultIconSize },
|
|
443
|
-
this.sizeModifierClass
|
|
444
|
-
];
|
|
445
|
-
},
|
|
446
425
|
onBlur(e) {
|
|
447
426
|
var _a;
|
|
448
427
|
if (!((_a = this.$refs.container) == null ? void 0 : _a.contains(e.relatedTarget))) {
|
|
@@ -485,11 +464,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
485
464
|
const _component_dt_validation_messages = resolveComponent("dt-validation-messages");
|
|
486
465
|
return openBlock(), createElementBlock("div", {
|
|
487
466
|
ref: "container",
|
|
488
|
-
class: normalizeClass(
|
|
467
|
+
class: normalizeClass({ "d-input--hidden": $props.hidden }),
|
|
489
468
|
"data-qa": "dt-input"
|
|
490
469
|
}, [
|
|
491
470
|
createElementVNode("label", {
|
|
492
|
-
class: "base-input__label",
|
|
493
471
|
"aria-details": _ctx.$slots.description || $props.description ? $options.descriptionKey : void 0,
|
|
494
472
|
"data-qa": "dt-input-label-wrapper"
|
|
495
473
|
}, [
|
|
@@ -499,9 +477,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
499
477
|
ref: "label",
|
|
500
478
|
"data-qa": "dt-input-label",
|
|
501
479
|
class: normalizeClass([
|
|
502
|
-
"base-input__label-text",
|
|
503
480
|
"d-label",
|
|
504
|
-
|
|
481
|
+
_ctx.labelSizeClasses[$props.size]
|
|
505
482
|
])
|
|
506
483
|
}, toDisplayString($props.label), 3)) : createCommentVNode("", true)
|
|
507
484
|
]),
|
|
@@ -510,9 +487,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
510
487
|
id: $options.descriptionKey,
|
|
511
488
|
ref: "description",
|
|
512
489
|
class: normalizeClass([
|
|
513
|
-
"base-input__description",
|
|
514
490
|
"d-description",
|
|
515
|
-
|
|
491
|
+
_ctx.descriptionSizeClasses[$props.size]
|
|
516
492
|
]),
|
|
517
493
|
"data-qa": "dt-input-description"
|
|
518
494
|
}, [
|
|
@@ -527,16 +503,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
527
503
|
class: normalizeClass($options.inputWrapperClasses()),
|
|
528
504
|
"read-only": $props.disabled === true ? true : void 0
|
|
529
505
|
}, [
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
class: normalizeClass($options.inputIconClasses("left")),
|
|
506
|
+
createElementVNode("span", {
|
|
507
|
+
class: "d-input-icon d-input-icon--left",
|
|
533
508
|
"data-qa": "dt-input-left-icon-wrapper",
|
|
534
509
|
onFocusout: _cache[0] || (_cache[0] = (...args) => $options.onBlur && $options.onBlur(...args))
|
|
535
510
|
}, [
|
|
536
|
-
renderSlot(_ctx.$slots, "leftIcon")
|
|
537
|
-
],
|
|
511
|
+
renderSlot(_ctx.$slots, "leftIcon", { iconSize: $options.iconSize })
|
|
512
|
+
], 32),
|
|
538
513
|
$options.isTextarea ? (openBlock(), createElementBlock("textarea", mergeProps({
|
|
539
|
-
key:
|
|
514
|
+
key: 0,
|
|
540
515
|
ref: "input",
|
|
541
516
|
value: $props.modelValue,
|
|
542
517
|
name: $props.name,
|
|
@@ -546,7 +521,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
546
521
|
maxlength: $options.shouldLimitMaxLength ? $options.validationProps.length.max : null,
|
|
547
522
|
"data-qa": "dt-input-input"
|
|
548
523
|
}, _ctx.$attrs, toHandlers($options.inputListeners, true)), null, 16, _hoisted_6)) : (openBlock(), createElementBlock("input", mergeProps({
|
|
549
|
-
key:
|
|
524
|
+
key: 1,
|
|
550
525
|
ref: "input",
|
|
551
526
|
value: $props.modelValue,
|
|
552
527
|
name: $props.name,
|
|
@@ -557,14 +532,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
557
532
|
maxlength: $options.shouldLimitMaxLength ? $options.validationProps.length.max : null,
|
|
558
533
|
"data-qa": "dt-input-input"
|
|
559
534
|
}, _ctx.$attrs, toHandlers($options.inputListeners, true)), null, 16, _hoisted_7)),
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
class: normalizeClass($options.inputIconClasses("right")),
|
|
535
|
+
createElementVNode("span", {
|
|
536
|
+
class: "d-input-icon d-input-icon--right",
|
|
563
537
|
"data-qa": "dt-input-right-icon-wrapper",
|
|
564
538
|
onFocusout: _cache[1] || (_cache[1] = (...args) => $options.onBlur && $options.onBlur(...args))
|
|
565
539
|
}, [
|
|
566
|
-
renderSlot(_ctx.$slots, "rightIcon")
|
|
567
|
-
],
|
|
540
|
+
renderSlot(_ctx.$slots, "rightIcon", { iconSize: $options.iconSize })
|
|
541
|
+
], 32)
|
|
568
542
|
], 10, _hoisted_5)
|
|
569
543
|
], 8, _hoisted_1),
|
|
570
544
|
createVNode(_component_dt_validation_messages, mergeProps({
|