sprintify-ui 0.6.69 → 0.6.71

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": "sprintify-ui",
3
- "version": "0.6.69",
3
+ "version": "0.6.71",
4
4
  "scripts": {
5
5
  "build": "rimraf dist && vue-tsc && vite build",
6
6
  "build-fast": "rimraf dist && vite build",
@@ -44,7 +44,7 @@
44
44
  </template>
45
45
 
46
46
  <script lang="ts" setup>
47
- import { isEqual } from 'lodash';
47
+ import { debounce, isEqual } from 'lodash';
48
48
  import { Option } from '@/types';
49
49
  import { config } from '@/index';
50
50
  import { PropType } from 'vue';
@@ -128,38 +128,43 @@ watch(
128
128
 
129
129
  watch(
130
130
  () => props.modelValue,
131
- (newValue, oldValue) => {
131
+ debounce(() => fetchModels(), 300),
132
+ { immediate: true }
133
+ );
132
134
 
133
- if (props.currentModels !== undefined) {
134
- return;
135
- }
135
+ function fetchModels() {
136
+ if (props.currentModels !== undefined) {
137
+ return;
138
+ }
136
139
 
137
- if (props.showRouteUrl == null) {
138
- return;
139
- }
140
+ if (props.showRouteUrl == null) {
141
+ return;
142
+ }
140
143
 
141
- if (!props.modelValue) {
142
- models.value = [];
143
- return;
144
- }
144
+ if (!props.modelValue) {
145
+ models.value = [];
146
+ return;
147
+ }
145
148
 
146
- if (newValue == oldValue) {
147
- return;
148
- }
149
+ // Do not fetch if the modelValue is the same as the local models
149
150
 
150
- const ids = props.modelValue.map((id) => id.toString());
151
+ const ids = props.modelValue.map((id: number | string) => id.toString());
151
152
 
152
- http
153
- .get(props.showRouteUrl(ids))
154
- .then((response: AxiosResponse) => {
155
- models.value = response.data.data.filter((i: any) => {
156
- return ids.includes(i[props.primaryKey]);
157
- });
158
- })
159
- .catch((e: Error) => e);
160
- },
161
- { immediate: true }
162
- );
153
+ const localModelIds = models.value.map((m) => m[props.primaryKey]);
154
+
155
+ if (isEqual(ids, localModelIds)) {
156
+ return;
157
+ }
158
+
159
+ http
160
+ .get(props.showRouteUrl(ids))
161
+ .then((response: AxiosResponse) => {
162
+ models.value = response.data.data.filter((i: any) => {
163
+ return ids.includes(i[props.primaryKey]);
164
+ });
165
+ })
166
+ .catch((e: Error) => e);
167
+ }
163
168
 
164
169
  function onUpdate(newModels: Option[]) {
165
170
  models.value = newModels;