@farm-investimentos/front-mfe-components 11.4.6 → 11.5.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/front-mfe-components.common.js +592 -384
- package/dist/front-mfe-components.common.js.map +1 -1
- package/dist/front-mfe-components.css +1 -1
- package/dist/front-mfe-components.umd.js +592 -384
- package/dist/front-mfe-components.umd.js.map +1 -1
- package/dist/front-mfe-components.umd.min.js +1 -1
- package/dist/front-mfe-components.umd.min.js.map +1 -1
- package/package.json +3 -2
- package/src/components/CopyToClipboard/CopyToClipboard.stories.js +7 -0
- package/src/components/CopyToClipboard/CopyToClipboard.vue +11 -3
- package/src/components/Form/Form.stories.js +16 -2
- package/src/components/Form/Form.vue +4 -2
- package/src/components/IdCaption/IdCaption.vue +1 -1
- package/src/components/RadioGroup/RadioGroup.vue +14 -2
- package/src/components/Switcher/Switcher.scss +16 -12
- package/src/components/Switcher/Switcher.stories.js +24 -2
- package/src/components/Switcher/Switcher.vue +5 -3
- package/src/components/TableContextMenu/TableContextMenu.vue +3 -1
- package/src/components/TextFieldV2/TextFieldV2.scss +64 -0
- package/src/components/TextFieldV2/TextFieldV2.stories.js +176 -2
- package/src/components/TextFieldV2/TextFieldV2.vue +143 -5
- package/src/components/TextFieldV2/__tests__/TextFieldV2.spec.js +21 -0
- package/src/components/Typography/BodyText/BodyText.vue +1 -1
- package/src/components/Typography/Caption/Caption.vue +1 -1
- package/src/components/Typography/Heading/Heading.vue +1 -1
- package/src/components/Typography/Subtitle/Subtitle.stories.js +4 -4
- package/src/components/Typography/Subtitle/Subtitle.vue +1 -1
- package/src/components/Typography/Typography.vue +14 -1
- package/src/components/layout/Col/Col.scss +1 -1
- package/src/components/layout/Line/Line.vue +4 -1
- package/src/examples/VuetifyDialog.stories.js +119 -0
- package/src/examples/ConfirmDialog.stories.js +0 -43
- package/src/examples/Modal.stories.js +0 -181
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farm-investimentos/front-mfe-components",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.5.0",
|
|
4
4
|
"author": "farm investimentos",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./dist/front-mfe-components.common.js",
|
|
@@ -49,8 +49,9 @@
|
|
|
49
49
|
"sass": "~1.32.0",
|
|
50
50
|
"sass-loader": "^10.0.0",
|
|
51
51
|
"storybook-addon-designs": "^6.2.1",
|
|
52
|
+
"text-mask-addons": "^3.8.0",
|
|
52
53
|
"typescript": "~4.1.5",
|
|
53
|
-
"v-mask": "
|
|
54
|
+
"v-mask": "2.3.0",
|
|
54
55
|
"vue-template-compiler": "2.7.10"
|
|
55
56
|
},
|
|
56
57
|
"browserslist": [
|
|
@@ -23,3 +23,10 @@ export const Primary = () => ({
|
|
|
23
23
|
<farm-copytoclipboard toCopy="To be copied" />
|
|
24
24
|
</div>`,
|
|
25
25
|
});
|
|
26
|
+
|
|
27
|
+
export const NoIcon = () => ({
|
|
28
|
+
components: { 'farm-copytoclipboard': CopyToClipboard },
|
|
29
|
+
template: `<div style="max-width: 480px; padding-top: 80px; padding-left: 80px;">
|
|
30
|
+
<farm-copytoclipboard toCopy="To be copied" :isIcon="false" />
|
|
31
|
+
</div>`,
|
|
32
|
+
});
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
<farm-tooltip v-model="show">
|
|
3
3
|
{{ feedbackMessage }}
|
|
4
4
|
<template v-slot:activator="{}">
|
|
5
|
-
<farm-btn icon :disabled="disabled" @click="onClick">
|
|
5
|
+
<farm-btn v-if="isIcon" title="Copiar" icon :disabled="disabled" @click="onClick">
|
|
6
6
|
<farm-icon size="xs">content-copy</farm-icon>
|
|
7
7
|
</farm-btn>
|
|
8
|
+
<farm-btn v-else outlined title="Copiar" :disabled="disabled" @click="onClick">
|
|
9
|
+
<farm-icon>content-copy</farm-icon>
|
|
10
|
+
Copiar
|
|
11
|
+
</farm-btn>
|
|
8
12
|
</template>
|
|
9
13
|
</farm-tooltip>
|
|
10
14
|
</template>
|
|
@@ -20,12 +24,16 @@ export default Vue.extend({
|
|
|
20
24
|
* Content to be copied to clipboard
|
|
21
25
|
*/
|
|
22
26
|
toCopy: { type: String, required: true },
|
|
27
|
+
/**
|
|
28
|
+
* Is button with icon?
|
|
29
|
+
*/
|
|
30
|
+
isIcon: { type: Boolean, default: true },
|
|
23
31
|
},
|
|
24
32
|
setup(props) {
|
|
25
33
|
const show = ref(false);
|
|
26
34
|
const feedbackMessage = ref('');
|
|
27
35
|
const disabled = ref(false);
|
|
28
|
-
const { toCopy } = toRefs(props);
|
|
36
|
+
const { toCopy, isIcon } = toRefs(props);
|
|
29
37
|
|
|
30
38
|
const onClick = async () => {
|
|
31
39
|
disabled.value = true;
|
|
@@ -45,6 +53,7 @@ export default Vue.extend({
|
|
|
45
53
|
|
|
46
54
|
return {
|
|
47
55
|
show,
|
|
56
|
+
isIcon,
|
|
48
57
|
feedbackMessage,
|
|
49
58
|
disabled,
|
|
50
59
|
onClick,
|
|
@@ -52,4 +61,3 @@ export default Vue.extend({
|
|
|
52
61
|
},
|
|
53
62
|
});
|
|
54
63
|
</script>
|
|
55
|
-
|
|
@@ -33,13 +33,19 @@ export const Primary = () => ({
|
|
|
33
33
|
document: 'Document',
|
|
34
34
|
name: 'Name',
|
|
35
35
|
checkbox: true,
|
|
36
|
-
birthDate: new Date('1980/09/20').toISOString()
|
|
36
|
+
birthDate: new Date('1980/09/20').toISOString(),
|
|
37
|
+
selectId: 1,
|
|
37
38
|
},
|
|
38
39
|
validForm: false,
|
|
39
40
|
rules: {
|
|
40
41
|
required: value => !!value || 'Campo obrigatório',
|
|
41
42
|
checked: value => !!value || 'Deve estar marcado',
|
|
42
43
|
},
|
|
44
|
+
items: [
|
|
45
|
+
{ value: null, text: '' },
|
|
46
|
+
{ value: 1, text: 'label 1' },
|
|
47
|
+
{ value: 2, text: 'label 2' },
|
|
48
|
+
],
|
|
43
49
|
styles,
|
|
44
50
|
};
|
|
45
51
|
},
|
|
@@ -55,6 +61,9 @@ export const Primary = () => ({
|
|
|
55
61
|
<farm-label :required="true">True/false</farm-label>
|
|
56
62
|
<farm-checkbox v-model="form.checkbox" :rules="[rules.checked]" />
|
|
57
63
|
|
|
64
|
+
<farm-label :required="true">Select</farm-label>
|
|
65
|
+
<v-select :rules="[rules.required]" :items="items" v-model="form.selectId"/>
|
|
66
|
+
|
|
58
67
|
<farm-label :required="true">Birthdate:</farm-label>
|
|
59
68
|
<DatePicker
|
|
60
69
|
ref="birthDate"
|
|
@@ -87,6 +96,11 @@ export const Secondary = () => ({
|
|
|
87
96
|
required: value => !!value || 'Campo obrigatório',
|
|
88
97
|
},
|
|
89
98
|
styles,
|
|
99
|
+
items: [
|
|
100
|
+
{ value: null, text: '' },
|
|
101
|
+
{ value: 1, text: 'label 1' },
|
|
102
|
+
{ value: 2, text: 'label 2' },
|
|
103
|
+
],
|
|
90
104
|
};
|
|
91
105
|
},
|
|
92
106
|
template: `
|
|
@@ -220,4 +234,4 @@ export const DatePickers = () => ({
|
|
|
220
234
|
</div>
|
|
221
235
|
</farm-form>
|
|
222
236
|
`,
|
|
223
|
-
});
|
|
237
|
+
});
|
|
@@ -9,7 +9,7 @@ type ErrorsBag = Record<number, boolean>;
|
|
|
9
9
|
export default Vue.extend({
|
|
10
10
|
name: 'farm-form',
|
|
11
11
|
props: {
|
|
12
|
-
value: { type: [Boolean]
|
|
12
|
+
value: { type: [Boolean] },
|
|
13
13
|
},
|
|
14
14
|
inheritAttrs: true,
|
|
15
15
|
setup(props, { emit }) {
|
|
@@ -42,7 +42,9 @@ export default Vue.extend({
|
|
|
42
42
|
|
|
43
43
|
const recursiveFormField = $node => {
|
|
44
44
|
$node.$children.forEach($leaf => {
|
|
45
|
-
if
|
|
45
|
+
if($leaf.validate) {
|
|
46
|
+
validationFields.push($leaf);
|
|
47
|
+
} else if ($leaf.$children.length > 1) {
|
|
46
48
|
recursiveFormField($leaf);
|
|
47
49
|
} else if ($leaf.$children[0] && $leaf.$children[0].validate) {
|
|
48
50
|
validationFields.push($leaf.$children[0]);
|
|
@@ -52,9 +52,21 @@ export default Vue.extend({
|
|
|
52
52
|
default: false,
|
|
53
53
|
},
|
|
54
54
|
color: {
|
|
55
|
-
type: String
|
|
55
|
+
type: String as PropType<
|
|
56
|
+
| 'primary'
|
|
57
|
+
| 'secondary'
|
|
58
|
+
| 'neutral'
|
|
59
|
+
| 'info'
|
|
60
|
+
| 'success'
|
|
61
|
+
| 'error'
|
|
62
|
+
| 'warning'
|
|
63
|
+
| 'success'
|
|
64
|
+
| 'extra-1'
|
|
65
|
+
| 'extra-2'
|
|
66
|
+
| 'gray'
|
|
67
|
+
>,
|
|
56
68
|
default: 'primary',
|
|
57
|
-
}
|
|
69
|
+
}
|
|
58
70
|
},
|
|
59
71
|
setup(props, { emit }) {
|
|
60
72
|
const innerValue = ref(props.value);
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
.farm-switch--selected {
|
|
2
|
-
background-color: var(--
|
|
2
|
+
background-color: var(--farm-primary-base);
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
.farm-switch--idle {
|
|
6
|
-
background-color: var(--
|
|
6
|
+
background-color: var(--farm-neutral-base);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.farm-switch--disabled-on {
|
|
10
|
+
background-color: var(--farm-primary-lighten);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.farm-switch--disabled-off {
|
|
14
|
+
background-color: var(--farm-neutral-lighten);
|
|
7
15
|
}
|
|
8
16
|
|
|
9
17
|
.farm-switch {
|
|
10
18
|
display: inline-block;
|
|
11
19
|
position: relative;
|
|
12
20
|
cursor: pointer;
|
|
13
|
-
width:
|
|
14
|
-
height:
|
|
21
|
+
width: 24px;
|
|
22
|
+
height: 16px;
|
|
15
23
|
border-radius: 9999px;
|
|
16
24
|
|
|
17
25
|
&:focus {
|
|
@@ -22,10 +30,6 @@
|
|
|
22
30
|
display: block;
|
|
23
31
|
}
|
|
24
32
|
|
|
25
|
-
&--disabled {
|
|
26
|
-
opacity: 0.6;
|
|
27
|
-
cursor: default;
|
|
28
|
-
}
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
.farm-switch__background {
|
|
@@ -40,10 +44,10 @@
|
|
|
40
44
|
|
|
41
45
|
.farm-switch__indicator {
|
|
42
46
|
position: absolute;
|
|
43
|
-
height:
|
|
44
|
-
width:
|
|
45
|
-
left: -
|
|
46
|
-
top: -
|
|
47
|
+
height: 16px;
|
|
48
|
+
width: 16px;
|
|
49
|
+
left: -4px;
|
|
50
|
+
top: -2px;
|
|
47
51
|
background-color: #ffffff;
|
|
48
52
|
border-radius: 9999px;
|
|
49
53
|
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.16);
|
|
@@ -8,7 +8,7 @@ export default {
|
|
|
8
8
|
export const Primary = () => ({
|
|
9
9
|
data() {
|
|
10
10
|
return {
|
|
11
|
-
selectedValue:
|
|
11
|
+
selectedValue: true,
|
|
12
12
|
};
|
|
13
13
|
},
|
|
14
14
|
template: `<div>
|
|
@@ -16,7 +16,29 @@ export const Primary = () => ({
|
|
|
16
16
|
</div>`,
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
export const
|
|
19
|
+
export const OnDisabled = () => ({
|
|
20
|
+
data() {
|
|
21
|
+
return {
|
|
22
|
+
selectedValue: true,
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
template: `<div>
|
|
26
|
+
<farm-switcher v-model="selectedValue" block :disabled="true" />
|
|
27
|
+
</div>`,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export const Off = () => ({
|
|
31
|
+
data() {
|
|
32
|
+
return {
|
|
33
|
+
selectedValue: false,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
template: `<div>
|
|
37
|
+
<farm-switcher v-model="selectedValue" block :disabled="false" />
|
|
38
|
+
</div>`,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export const OffDisabled = () => ({
|
|
20
42
|
data() {
|
|
21
43
|
return {
|
|
22
44
|
selectedValue: false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
:class="{ 'farm-switch': true
|
|
3
|
+
:class="{ 'farm-switch': true }"
|
|
4
4
|
role="checkbox"
|
|
5
5
|
@click="toggle"
|
|
6
6
|
@keydown.space.prevent="toggle"
|
|
@@ -35,8 +35,10 @@ export default Vue.extend({
|
|
|
35
35
|
computed: {
|
|
36
36
|
backgroundStyles() {
|
|
37
37
|
return {
|
|
38
|
-
'farm-switch--selected': this.value,
|
|
39
|
-
'farm-switch--idle': !this.value,
|
|
38
|
+
'farm-switch--selected': this.value && !this.isDisabled,
|
|
39
|
+
'farm-switch--idle': !this.value && !this.isDisabled,
|
|
40
|
+
'farm-switch--disabled-on': this.value && this.isDisabled,
|
|
41
|
+
'farm-switch--disabled-off': !this.value && this.isDisabled,
|
|
40
42
|
};
|
|
41
43
|
},
|
|
42
44
|
indicatorStyles() {
|
|
@@ -40,6 +40,9 @@ export default Vue.extend({
|
|
|
40
40
|
name: 'farm-context-menu',
|
|
41
41
|
components: {},
|
|
42
42
|
props: {
|
|
43
|
+
/**
|
|
44
|
+
* Items to populate the context menu
|
|
45
|
+
*/
|
|
43
46
|
items: {
|
|
44
47
|
type: Array as PropType<Array<IContextMenuOption>>,
|
|
45
48
|
required: true,
|
|
@@ -54,7 +57,6 @@ export default Vue.extend({
|
|
|
54
57
|
onClick(handler) {
|
|
55
58
|
if (handler !== undefined) {
|
|
56
59
|
this.$emit(handler);
|
|
57
|
-
// handler();
|
|
58
60
|
}
|
|
59
61
|
},
|
|
60
62
|
toggleValue() {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.farm-textfield {
|
|
2
|
+
height: 64px;
|
|
3
|
+
&--input {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: 8px;
|
|
7
|
+
border: 1px solid;
|
|
8
|
+
border-color: var(--farm-gray-lighten);
|
|
9
|
+
height: 36px;
|
|
10
|
+
border-radius: 5px;
|
|
11
|
+
padding: 8px;
|
|
12
|
+
margin-bottom: 8px;
|
|
13
|
+
|
|
14
|
+
> button {
|
|
15
|
+
display: flex;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&>input {
|
|
19
|
+
flex: 1;
|
|
20
|
+
outline: none;
|
|
21
|
+
color: var(--farm-neutral-darken);
|
|
22
|
+
font-size: 12px;
|
|
23
|
+
font-weight: 400;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
width: 100%;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.farm-caption {
|
|
30
|
+
line-height: 12px;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.farm-textfield--touched.farm-textfield--validatable {
|
|
35
|
+
&.farm-textfield--error {
|
|
36
|
+
.farm-textfield {
|
|
37
|
+
&--input {
|
|
38
|
+
border-color: var(--farm-error-base);
|
|
39
|
+
|
|
40
|
+
&>input {
|
|
41
|
+
color: var(--farm-neutral-darken);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.farm-icon {
|
|
45
|
+
color: var(--farm-error-base);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.farm-textfield--blured.farm-textfield--validatable:not(.farm-textfield--error) {
|
|
53
|
+
.farm-textfield--input {
|
|
54
|
+
border-color: var(--farm-primary-base);
|
|
55
|
+
|
|
56
|
+
&>input {
|
|
57
|
+
color: var(--farm-neutral-darken);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.farm-icon {
|
|
61
|
+
color: var(--farm-primary-base);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { withDesign } from 'storybook-addon-designs';
|
|
2
2
|
import TextFieldV2 from './TextFieldV2.vue';
|
|
3
3
|
|
|
4
|
+
import createNumberMask from 'text-mask-addons/dist/createNumberMask';
|
|
5
|
+
const currencyMask = createNumberMask({
|
|
6
|
+
prefix: 'R$',
|
|
7
|
+
allowDecimal: true,
|
|
8
|
+
includeThousandsSeparator: true,
|
|
9
|
+
thousandsSeparatorSymbol: '.',
|
|
10
|
+
decimalSymbol: ',',
|
|
11
|
+
allowNegative: false,
|
|
12
|
+
});
|
|
13
|
+
|
|
4
14
|
export default {
|
|
5
15
|
title: 'Form/TextFieldV2',
|
|
6
16
|
component: TextFieldV2,
|
|
@@ -25,11 +35,175 @@ export default {
|
|
|
25
35
|
export const Primary = () => ({
|
|
26
36
|
data() {
|
|
27
37
|
return {
|
|
28
|
-
v: '
|
|
38
|
+
v: 'input text',
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
template: `<div style="width: 480px">
|
|
42
|
+
<farm-textfield-v2 v-model="v" />
|
|
43
|
+
v-model: {{ v }}
|
|
44
|
+
</div>`,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export const Disabled = () => ({
|
|
48
|
+
data() {
|
|
49
|
+
return {
|
|
50
|
+
v: 'input text',
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
template: `<div style="width: 480px">
|
|
54
|
+
<farm-textfield-v2 v-model="v" disabled />
|
|
55
|
+
</div>`,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const Readonly = () => ({
|
|
59
|
+
data() {
|
|
60
|
+
return {
|
|
61
|
+
v: 'input text',
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
template: `<div style="width: 480px">
|
|
65
|
+
<farm-textfield-v2 v-model="v" readonly />
|
|
66
|
+
</div>`,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export const Validate = () => ({
|
|
70
|
+
data() {
|
|
71
|
+
return {
|
|
72
|
+
v1: 'input 1',
|
|
73
|
+
v2: '',
|
|
74
|
+
v3: '',
|
|
75
|
+
v4: '',
|
|
76
|
+
rules: {
|
|
77
|
+
required: value => !!value || 'Required field',
|
|
78
|
+
email: v =>
|
|
79
|
+
/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'Must be an e-mail',
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
template: `<div style="width: 480px">
|
|
84
|
+
<farm-label required>Required field</farm-label>
|
|
85
|
+
<farm-textfield-v2 v-model="v1" :rules="[rules.required]" />
|
|
86
|
+
|
|
87
|
+
<farm-label>E-mail</farm-label>
|
|
88
|
+
<farm-textfield-v2 v-model="v2" :rules="[rules.email]" />
|
|
89
|
+
|
|
90
|
+
<farm-label required>Required and e-mail</farm-label>
|
|
91
|
+
<farm-textfield-v2 v-model="v3" :rules="[rules.required, rules.email]" />
|
|
92
|
+
|
|
93
|
+
<farm-label required>Required field with hint</farm-label>
|
|
94
|
+
<farm-textfield-v2 v-model="v4" :rules="[rules.required]" hint="hint text" />
|
|
95
|
+
|
|
96
|
+
</div>`,
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
export const Icon = () => ({
|
|
100
|
+
data() {
|
|
101
|
+
return {
|
|
102
|
+
v: '',
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
methods: {
|
|
106
|
+
show() {
|
|
107
|
+
alert('On icon click');
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
template: `<div style="width: 480px">
|
|
111
|
+
<farm-textfield-v2 v-model="v" icon="eye" onClickIcon="this.show" />
|
|
112
|
+
<farm-textfield-v2 v-model="v" icon="eye" icon-position="left" onClickIcon="this.show" />
|
|
113
|
+
</div>`,
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
export const HintText = () => ({
|
|
117
|
+
data() {
|
|
118
|
+
return {
|
|
119
|
+
v: 'input text',
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
template: `<div style="width: 480px; display: flex;">
|
|
123
|
+
<farm-textfield-v2 v-model="v" hint="Hint text" />
|
|
124
|
+
</div>`,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
export const UpdateValue = () => ({
|
|
128
|
+
data() {
|
|
129
|
+
return {
|
|
130
|
+
counter: 1,
|
|
131
|
+
v: '1',
|
|
29
132
|
};
|
|
30
133
|
},
|
|
134
|
+
methods: {
|
|
135
|
+
onClick() {
|
|
136
|
+
this.counter++;
|
|
137
|
+
this.v = this.counter;
|
|
138
|
+
},
|
|
139
|
+
},
|
|
31
140
|
template: `<div style="width: 480px">
|
|
32
141
|
<farm-textfield-v2 v-model="v" />
|
|
33
|
-
|
|
142
|
+
<farm-btn @click="onClick">Add 1 to counter and update v-model</farm-btn>
|
|
143
|
+
<br />counter: {{ counter }}
|
|
144
|
+
<br />v-model: {{ v }}
|
|
145
|
+
</div>`,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
export const Types = () => ({
|
|
149
|
+
data() {
|
|
150
|
+
return {
|
|
151
|
+
types: ['text', 'password', 'email', 'date', 'search', 'color', 'tel', 'url'],
|
|
152
|
+
};
|
|
153
|
+
},
|
|
154
|
+
template: `<div style="width: 480px">
|
|
155
|
+
<div v-for="type in types" :key="'input_type_' + type">
|
|
156
|
+
<farm-label>Type: {{ type }}</farm-label>
|
|
157
|
+
<farm-textfield-v2 :type="type" />
|
|
158
|
+
</div>
|
|
159
|
+
</div>`,
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
export const Reset = () => ({
|
|
163
|
+
data() {
|
|
164
|
+
return {
|
|
165
|
+
v: 'input text',
|
|
166
|
+
rules: {
|
|
167
|
+
required: value => !!value || 'Required field',
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
methods: {
|
|
172
|
+
reset() {
|
|
173
|
+
this.$refs.input.reset();
|
|
174
|
+
this.$refs.inputValidatable.reset();
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
template: `<div style="width: 480px">
|
|
178
|
+
|
|
179
|
+
<farm-label>Not Required</farm-label>
|
|
180
|
+
<farm-textfield-v2 v-model="v" ref="input" />
|
|
181
|
+
|
|
182
|
+
<farm-label required>Required</farm-label>
|
|
183
|
+
<farm-textfield-v2 v-model="v" ref="inputValidatable" :rules="[rules.required]" />
|
|
184
|
+
|
|
185
|
+
<farm-btn @click="reset">reset</farm-btn>
|
|
186
|
+
|
|
187
|
+
</div>`,
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
export const Mask = () => ({
|
|
191
|
+
data() {
|
|
192
|
+
return {
|
|
193
|
+
v: '',
|
|
194
|
+
v2: '',
|
|
195
|
+
mask: '###.###.###/##',
|
|
196
|
+
currencyMask,
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
template: `<div style="width: 480px">
|
|
200
|
+
<farm-label>CPF Mask ({{ mask }})</farm-label>
|
|
201
|
+
<farm-textfield-v2 v-model="v" :v-mask="mask" />
|
|
202
|
+
v-model: {{ v }}
|
|
203
|
+
|
|
204
|
+
<farm-label>Number Mask (R$ ##.###.###,##)</farm-label>
|
|
205
|
+
<farm-textfield-v2 v-model="v2" :v-mask="currencyMask" />
|
|
206
|
+
v-model: {{ v2 }}
|
|
207
|
+
|
|
34
208
|
</div>`,
|
|
35
209
|
});
|