@farm-investimentos/front-mfe-components 15.4.5 → 15.4.7

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": "@farm-investimentos/front-mfe-components",
3
- "version": "15.4.5",
3
+ "version": "15.4.7",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -46,6 +46,18 @@ export const InitialValue = () => ({
46
46
  </div>`,
47
47
  });
48
48
 
49
+ export const readOnly = () => ({
50
+ data() {
51
+ return {
52
+ date: ['2023-08-01', '2023-08-05'],
53
+ };
54
+ },
55
+ template: `<div style='max-width: 320px'>
56
+ <RangeDatePicker readonly inputId="input-custom-id" :value="date" />
57
+ date: {{ date }}
58
+ </div>`,
59
+ });
60
+
49
61
  export const MinMax = () => ({
50
62
  template: `<RangeDatePicker inputId="input-custom-id" min="2022-01-17" max="2022-02-15" />`,
51
63
  });
@@ -40,13 +40,16 @@
40
40
  Confirmar <farm-icon>check</farm-icon>
41
41
  </farm-btn>
42
42
  </v-date-picker>
43
- <template v-slot:activator="{}">
43
+ <template v-slot:activator>
44
44
  <farm-textfield-v2
45
45
  v-model="fieldRange"
46
46
  icon="calendar"
47
- readonly
47
+ ref="inputCalendar"
48
+ :readonly="readonly"
48
49
  :id="inputId"
49
- :rules="required ? [requiredRule] : []"
50
+ :mask="`${readonly ? [''] : ['##/##/####' + ' a ' + '##/##/####']}`"
51
+ :rules="[checkDateValid, checkRequire]"
52
+ @keyup="keyUpInput"
50
53
  />
51
54
  </template>
52
55
  </farm-contextmenu>
@@ -54,7 +57,11 @@
54
57
  <script>
55
58
  import { defineComponent } from 'vue';
56
59
  import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
57
- import { defaultFormat as dateDefaultFormatter } from '../../helpers/date';
60
+ import {
61
+ defaultFormat as dateDefaultFormatter,
62
+ convertDate,
63
+ checkDateValid,
64
+ } from '../../helpers/date';
58
65
  import { formatDatePickerHeader } from '../../helpers';
59
66
 
60
67
  /**
@@ -101,6 +108,13 @@ export default defineComponent({
101
108
  type: Boolean,
102
109
  default: false,
103
110
  },
111
+ /**
112
+ * Readonly field
113
+ */
114
+ readonly: {
115
+ type: Boolean,
116
+ default: false,
117
+ },
104
118
  },
105
119
  data() {
106
120
  const s = this.formatDateRange(this.value);
@@ -108,8 +122,16 @@ export default defineComponent({
108
122
  menuField: false,
109
123
  dateField: this.value || [],
110
124
  fieldRange: s,
111
- requiredRule: value => {
112
- return !!value || value != '' || 'Campo obrigatório';
125
+ checkRequire: value => {
126
+ return this.required ? !!value || value != '' || 'Campo obrigatório' : true;
127
+ },
128
+ checkDateValid: value => {
129
+ if (value.length) {
130
+ const checkPartOne = checkDateValid(value.slice(0, 10));
131
+ const checkPartTwo = checkDateValid(value.slice(13));
132
+ return checkPartOne && checkPartTwo ? true : 'Data inválida';
133
+ }
134
+ return true;
113
135
  },
114
136
  };
115
137
  },
@@ -136,6 +158,11 @@ export default defineComponent({
136
158
  return dateDefaultFormatter(dateStart) + ' a ' + dateDefaultFormatter(dateEnd);
137
159
  },
138
160
  save() {
161
+ if (this.readonly) {
162
+ this.menuField = false;
163
+ this.closeDatepicker();
164
+ return;
165
+ }
139
166
  this.formatDateRange(this.dateField);
140
167
  this.inputVal = this.dateField;
141
168
  this.menuField = false;
@@ -144,6 +171,7 @@ export default defineComponent({
144
171
  clear() {
145
172
  this.dateField = [];
146
173
  this.save();
174
+ this.$refs.inputCalendar.reset();
147
175
  },
148
176
  openDatepicker() {
149
177
  this.menuField = true;
@@ -153,7 +181,7 @@ export default defineComponent({
153
181
  this.$refs.contextmenu.inputValue = false;
154
182
  },
155
183
  sortDates(dates) {
156
- if(dates?.length !== 2) {
184
+ if (dates?.length !== 2) {
157
185
  return dates;
158
186
  }
159
187
  const firstDate = new Date(dates[0]);
@@ -165,6 +193,24 @@ export default defineComponent({
165
193
 
166
194
  return [dates[1], dates[0]];
167
195
  },
196
+ validation(date) {
197
+ const pattern =
198
+ /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/gm;
199
+ return pattern.test(date);
200
+ },
201
+ keyUpInput(event) {
202
+ let newValue = event.target.value;
203
+ if (newValue.length === 23) {
204
+ const partOne = newValue.slice(0, 10);
205
+ const partTwo = newValue.slice(13);
206
+ if (this.validation(partOne) && this.validation(partTwo)) {
207
+ const partOneDate = convertDate(partOne);
208
+ const partTwoDate = convertDate(partTwo);
209
+ this.dateField = [partOneDate, partTwoDate];
210
+ this.save();
211
+ }
212
+ }
213
+ },
168
214
  formatDatePickerHeader,
169
215
  },
170
216
  computed: {
@@ -36,7 +36,14 @@
36
36
  }
37
37
 
38
38
  &--disabled {
39
+ .farm-textarea--textarea {
40
+ background-color: var(--farm-neutral-lighten);
41
+ border-color: var(--farm-gray-lighten);
42
+ color: var(--farm-bw-black-30);
43
+ }
39
44
  textarea {
45
+ background-color: var(--farm-neutral-lighten);
46
+ border-color: var(--farm-gray-lighten);
40
47
  color: var(--farm-bw-black-30);
41
48
  }
42
49
  }
@@ -44,9 +44,18 @@
44
44
  }
45
45
 
46
46
  &--disabled {
47
+ .farm-textfield--input {
48
+ background-color: var(--farm-neutral-lighten);
49
+ border-color: var(--farm-gray-lighten);
50
+ color: var(--farm-bw-black-30);
51
+ }
52
+
47
53
  input {
54
+ background-color: var(--farm-neutral-lighten);
55
+ border-color: var(--farm-gray-lighten);
48
56
  color: var(--farm-bw-black-30);
49
57
  }
58
+
50
59
  .farm-icon {
51
60
  color: var(--farm-bw-black-30);
52
61
  cursor: default;
@@ -62,7 +71,6 @@
62
71
  }
63
72
  }
64
73
 
65
-
66
74
  .farm-textfield--touched.farm-textfield--blured.farm-textfield--validatable {
67
75
  &.farm-textfield--error {
68
76
  .farm-textfield {