toggle-components-library 1.33.0-beta.11 → 1.33.0-beta.12

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.
@@ -3,58 +3,29 @@
3
3
  <div>
4
4
 
5
5
  <table class="toggle-table">
6
- <thead :class="{'toggle-table-any-search-active': anySearchActive}">
6
+ <thead :class="{'toggle-table-any-search-active': searchActive}">
7
7
  <tr class="toggle-tablee-tr">
8
- <th
9
- scope="col"
10
- :class="['toggle-table-th', {'toggle-table-search-active': tableSearchActive(field), 'toggle-table-searchable':field.filterable}]"
11
- v-for="(field, index) in headers"
12
- :colspan="field.colspan"
8
+ <th
9
+ scope="col"
10
+ :class="['toggle-table-th', {'toggle-table-search-active': tableSearchActive(field), 'toggle-table-searchable':field.filterable}]"
11
+ v-for="(field, index) in headers"
13
12
  :key="index"
14
13
  :style="'width:'+field.width"
15
14
  @click="activateSearch(field)"
16
15
  >
17
- <div class="toggle-table-th-inner" @transitionend="handleTransitionEnd">
18
-
16
+ <div class="toggle-table-th-inner">
19
17
  <span class="toggle-table-th-title">{{field.label}}</span>
20
18
  <span class="toggle-table-close-search" v-on:click.stop @click="closeSearch(field)"></span>
19
+ <ToggleInputText type="text" :ref="field.key+'-input'" v-model="searchModels[field.key]" @input="searchChange(field)"
20
+ v-if="field.type == 'text' && (searchModels[field.key] || editingInput == field.key)" />
21
+ <ToggleInputSelect style="margin-top:2px;" size="small" v-if="field.type == 'select' && (searchModels[field.key] || editingInput == field.key)" :options="field.select_options" v-model="searchModels[field.key]" @input="val=>searchChange(val, field)"/>
21
22
 
22
- <ToggleInputText
23
- v-if="field.type === 'text' && (searchModels[field.key] || editingInput === field.key)"
24
- type="text"
25
- :ref="field.key+'-input'"
26
- v-model="searchModels[field.key]"
27
- @input="searchChange(field)"
28
- @bail="closeSearch(field)"
29
- :applyFocus="applyFocus"
30
- />
31
- <ToggleInputSelect
32
- style="margin-top:2px;"
33
- :size="'small'"
34
- v-if="field.type === 'select' && (searchModels[field.key] || editingInput === field.key)"
35
- :applyFocus="applyFocus"
36
- :options="field.select_options"
37
- v-model="searchModels[field.key]"
38
- @input="val=>searchChange(val, field)"
39
- />
40
- <ToggleDateRangePicker
41
- v-if="field.type === 'date_range' && (searchModels[field.key].start || searchModels[field.key].end || editingInput === field.key)"
42
- name="date_range"
43
- v-model="searchModels[field.key]"
44
- @input="val=>searchChange(val, field)"
45
- />
23
+ <ToggleDateRangePicker v-if="field.type == 'date' && (searchModels[field.key].start || searchModels[field.key].end || editingInput == field.key)" name="date" v-model="searchModels[field.key]" @input="val=>searchChange(val, field)" />
46
24
  </div>
47
25
  </th>
48
-
26
+
49
27
  </tr>
50
28
  </thead>
51
- <tr class="empty-table" v-if="(items && items.length === 0) && !loading">
52
- <td :colspan="headers.length">
53
- <div class="full">
54
- <div class="empty-area"><p>{{ emptyTableMessage }}</p></div>
55
- </div>
56
- </td>
57
- </tr>
58
29
  <tbody v-if="!$slots.default || !$slots.default.length">
59
30
  <ToggleTableRow v-for="(item, index) in items" :key="index" >
60
31
  <ToggleTableColumn v-for="(column, column_index) in item" :key="column_index">{{column}}</ToggleTableColumn>
@@ -91,34 +62,20 @@ export default {
91
62
  type: [Array]
92
63
  },
93
64
  total:{
94
- type: [Number]
65
+ type: [Number]
95
66
  },
96
67
  per_page:{
97
- type: [Number]
68
+ type: [Number]
98
69
  },
99
70
  page:{
100
71
  type: [Number],
101
72
  default:1
102
- },
103
- loading: {
104
- type: Boolean
105
- },
106
- emptyTableMessage: {
107
- type: String,
108
- default: "No rows returned."
109
- },
110
- searchDebounce: {
111
- type: [Number],
112
- default: 500
113
73
  }
114
- },
74
+ },
115
75
  data : function(){
116
76
  return {
117
77
  editingInput:false,
118
- searchModels:{},
119
- anySearchActive: false,
120
- applyFocus: false,
121
- searchTimeout: null
78
+ searchModels:{}
122
79
  };
123
80
  },
124
81
  computed: {
@@ -140,23 +97,36 @@ export default {
140
97
 
141
98
  headers() {
142
99
  if(!this.fields){
143
- return Object.keys(this.items[0]);
100
+ return Object.keys(this.items[0]);
144
101
  }
145
102
  return this.fields;
146
103
  },
147
104
 
105
+ searchActive() {
106
+ if(this.editingInput) {
107
+ return true;
108
+ }
109
+ for(let col in this.searchModels){
110
+ if(!this.searchModels[col])
111
+ return false;
112
+ if (this.searchModels[col].start !== undefined) {
113
+ return true;
114
+ }
115
+ else if(this.searchModels[col]) return true;
116
+ }
117
+ return false;
118
+ },
119
+
120
+
148
121
  },
149
122
  created : function(){
150
123
 
151
124
  if(this.fields){
152
-
153
125
  for (let i = 0; i < this.fields.length; i++) {
154
- let value = this.fields[i].type == 'date_range' ? this.setInitialDate(i) : (this.fields[i].value ?? '');
155
-
126
+ let value = this.fields[i].type == 'date' ? this.setInitialDate(i) : this.fields[i].value;
156
127
  let field_name = this.fields[i].key;
157
128
  this.$set( this.searchModels, field_name, value )
158
129
  if(value){
159
- this.applyFocus = true;
160
130
  // if date has an initial value set, show it.
161
131
  if(typeof value.start !== 'undefined'){
162
132
  if(value.start.length) this.activateSearch(this.fields[i]);
@@ -167,29 +137,20 @@ export default {
167
137
  this.searchChange();
168
138
  }
169
139
  }
170
-
140
+
171
141
  },
172
142
 
173
143
  beforeDestroy: function () {
144
+ },
145
+ watch:{
146
+
174
147
  },
175
148
  mounted : function ()
176
149
  {
177
150
 
178
151
  },
179
-
152
+
180
153
  methods:{
181
-
182
- handleTransitionEnd(event){
183
- if(event.propertyName === 'height'){
184
- if(this.anySearchActive && !this.applyFocus){
185
- this.applyFocus = true;
186
- }
187
- if(!this.anySearchActive && this.applyFocus){
188
- this.applyFocus = false;
189
- }
190
- }
191
- },
192
-
193
154
  // set initial date
194
155
  setInitialDate(index){
195
156
  let value = this.fields[index].value;
@@ -199,64 +160,36 @@ export default {
199
160
 
200
161
  tableSearchActive(field)
201
162
  {
202
- if(field.type === 'date_range'){
203
- return (this.searchModels[field.key].start || this.searchModels[field.key].end || this.editingInput === field.key);
163
+ if(field.type == 'date'){
164
+ return (this.searchModels[field.key].start || this.searchModels[field.key].end || this.editingInput == field.key);
204
165
  }
205
- return (this.searchModels[field.key] || this.editingInput === field.key);
166
+ return (this.searchModels[field.key] || this.editingInput == field.key);
206
167
 
207
168
  },
208
169
 
209
-
210
- getSearchModelTypeFromKey(key){
211
- for(let i=0; i<this.fields.length; i++){
212
- if(this.fields[i].key === key){
213
- return this.fields[i].type;
214
- }
215
- }
216
- return null;
217
- },
218
-
219
170
  closeSearch(field){
220
-
221
171
  this.editingInput = false;
222
- this.searchModels[field.key] = field.type === 'date_range' ? { start: false, end: false} : '' ;
223
-
224
- // check if any search is active; if not, close/shrink header
225
- let is_active = false;
226
- for(const key in this.searchModels){
227
-
228
- if(this.getSearchModelTypeFromKey(key) === 'date_range'){
229
- if (this.searchModels[key].start || this.searchModels[key].end){
230
- is_active = true;
231
- break;
232
- }
233
- }else if(this.searchModels[key] && this.searchModels[key] !== ''){
234
- is_active = true;
235
- break;
236
- }
237
- }
238
- this.anySearchActive = is_active;
172
+ this.searchModels[field.key] = field.type == 'date' ? { start: false, end: false} : '' ;
239
173
  this.searchChange();
240
174
  },
241
175
 
242
176
  searchChange(){
243
- clearTimeout(this.searchTimeout);
244
- this.searchTimeout = setTimeout(()=>{
245
- this.$emit('search', this.fieldsWithSearch);
246
- },this.searchDebounce);
247
-
177
+ this.$emit('search', this.fieldsWithSearch);
248
178
  },
249
179
 
250
180
  /* activateSearch
251
181
  * When a user clicks a searchable column name, show it as active, and focus the child input field (unless it's already active)
252
182
  */
253
183
  activateSearch(field){
254
- if(!field.filterable || field.readonly) return;
184
+ if(!field.filterable) return;
185
+ if(field.type === 'date'){
186
+ this.datePickerOpen = true;
187
+ }
255
188
  this.editingInput = field.key;
256
- this.anySearchActive = true;
189
+ //this.$nextTick(() => this.$refs[this.editingInput + '-input'].focus())
257
190
  },
258
191
 
259
-
192
+
260
193
 
261
194
  }
262
195
  }
package/src/index.js CHANGED
@@ -4,7 +4,6 @@ import ToggleInputText from "./components/forms/ToggleInputText.vue";
4
4
  import ToggleInputEditableText from "./components/forms/ToggleInputEditableText.vue";
5
5
  import ToggleInputWebsite from "./components/forms/ToggleInputWebsite.vue";
6
6
  import ToggleDatePicker from "./components/forms/ToggleDatePicker.vue";
7
- import ToggleDateRangePicker from "./components/forms/ToggleDateRangePicker.vue";
8
7
  import ToggleInputSelect from "./components/forms/ToggleInputSelect.vue";
9
8
  import ToggleInputPercentage from "./components/forms/ToggleInputPercentage.vue";
10
9
  import ToggleInputCurrency from "./components/forms/ToggleInputCurrency.vue";
@@ -104,14 +103,13 @@ const Components = {
104
103
  ToggleInputEditableText,
105
104
  ToggleInputWebsite,
106
105
  ToggleDatePicker,
107
- ToggleDateRangePicker,
108
106
  ToggleInputSelect,
109
107
  ToggleInputPercentage,
110
108
  ToggleInputCurrency,
111
109
  ToggleInputRadioButtons,
112
110
  ToggleInputTextArea,
113
111
  ToggleInputCheckboxContainer,
114
- ToggleInputCheckbox,
112
+ ToggleInputCheckbox,
115
113
  ToggleInputCheckboxInline,
116
114
  ToggleFillLoader,
117
115
  ToggleProgressLoader,