@farm-investimentos/front-mfe-components 15.2.2 → 15.2.3

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.2.2",
3
+ "version": "15.2.3",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -3,7 +3,7 @@
3
3
  <span
4
4
  :class="{
5
5
  'farm-checkbox': true,
6
- 'farm-checkbox--checked': isChecked,
6
+ 'farm-checkbox--checked': isChecked && (forceCheck === undefined || forceCheck),
7
7
  'farm-checkbox--disabled': disabled,
8
8
  'farm-checkbox--indeterminate': indeterminate,
9
9
  'farm-checkbox--lighten': variation === 'lighten',
@@ -92,12 +92,17 @@ export default Vue.extend({
92
92
  * Sets an indeterminate state for the simple checkbox
93
93
  */
94
94
  indeterminate: { type: Boolean, default: false },
95
+ /**
96
+ * Control if is check by prop
97
+ */
98
+ checked: { type: Boolean, default: undefined },
95
99
  },
96
100
  setup(props, { emit }) {
97
101
  const innerValue = ref(props.modelValue);
98
- const { label, disabled, rules } = toRefs(props);
102
+ const { label, disabled, rules, checked } = toRefs(props);
99
103
  const { errorBucket, valid, validatable } = validateFormStateBuilder();
100
104
  const isTouched = ref(false);
105
+ const forceCheck = ref(checked.value);
101
106
  let fieldValidator = validateFormFieldBuilder(rules.value);
102
107
 
103
108
  const toggleValue = () => {
@@ -154,6 +159,14 @@ export default Vue.extend({
154
159
  }
155
160
  );
156
161
 
162
+ watch(
163
+ () => props.checked,
164
+ newValue => {
165
+ forceCheck.value = newValue;
166
+ innerValue.value = newValue ? props.value : null;
167
+ }
168
+ );
169
+
157
170
  return {
158
171
  innerValue,
159
172
  label,
@@ -163,6 +176,7 @@ export default Vue.extend({
163
176
  validatable,
164
177
  hasError,
165
178
  isChecked,
179
+ forceCheck,
166
180
  toggleValue,
167
181
  reset,
168
182
  validate,
@@ -83,6 +83,7 @@ export const TableSampleData = () => ({
83
83
  </v-data-table>
84
84
  </div>`,
85
85
  });
86
+
86
87
  export const TableSampleDataWithCheckbox = () => ({
87
88
  components: { 'v-data-table': VDataTable },
88
89
  data() {
@@ -93,6 +94,7 @@ export const TableSampleDataWithCheckbox = () => ({
93
94
  { id: 2, name: 'name 2' },
94
95
  { id: 3, name: 'name 3' },
95
96
  ],
97
+ selectedItems: [],
96
98
  };
97
99
  },
98
100
  template: `<div>
@@ -102,8 +104,8 @@ export const TableSampleDataWithCheckbox = () => ({
102
104
  :headers="headers"
103
105
  :items="items"
104
106
  show-select
107
+ v-model="selectedItems"
105
108
  >
106
-
107
109
  </v-data-table>
108
110
  </div>`,
109
111
  });
@@ -161,18 +163,43 @@ export const TableSampleLocalPagination = () => ({
161
163
  </div>`,
162
164
  });
163
165
 
164
- TableNoData.story = {
165
- name: 'No data',
166
- };
167
-
168
- TableSampleData.story = {
169
- name: 'With data',
170
- };
171
-
172
- TableSampleDataWithCheckbox.story = {
173
- name: 'With data and checkbox',
174
- };
175
-
176
- TableSampleLocalPagination.story = {
177
- name: 'With data and local pagination',
178
- };
166
+ export const TableSampleDataWithFarmCheckbox = () => ({
167
+ components: { 'v-data-table': VDataTable },
168
+ data() {
169
+ return {
170
+ headers,
171
+ items: [
172
+ { id: 1, name: 'name 1' },
173
+ { id: 2, name: 'name 2' },
174
+ { id: 3, name: 'name 3' },
175
+ ],
176
+ selectedItems: [],
177
+ };
178
+ },
179
+ methods: {
180
+ onSelect({ item }) {
181
+ if (item.id === 2)
182
+ this.selectedItems = [...this.selectedItems].filter(
183
+ innerItem => innerItem.id !== 2
184
+ );
185
+ },
186
+ isItemSelected(item) {
187
+ return this.selectedItems.some(innerItem => innerItem.id === item.id);
188
+ },
189
+ },
190
+ template: `<div>{{selectedItems}}
191
+ <v-data-table
192
+ hide-default-footer
193
+ id="v-data-table--default"
194
+ v-model="selectedItems"
195
+ show-select
196
+ :headers="headers"
197
+ :items="items"
198
+ @item-selected="onSelect"
199
+ >
200
+ <template v-slot:item.data-table-select="{ isSelected, select, item }">
201
+ <farm-checkbox :value="item.id" :checked="isItemSelected(item)" @input="select($event)"/>
202
+ </template>
203
+ </v-data-table>
204
+ </div>`,
205
+ });