quasar-ui-danx 0.2.21 → 0.2.23

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar-ui-danx",
3
- "version": "0.2.21",
3
+ "version": "0.2.23",
4
4
  "author": "Dan <dan@flytedesk.com>",
5
5
  "description": "DanX Vue / Quasar component library",
6
6
  "license": "MIT",
@@ -4,7 +4,7 @@
4
4
  disabled
5
5
  min-width="0"
6
6
  max-width="18rem"
7
- name="admin-ads"
7
+ :name="name"
8
8
  @update:collapse="$emit('update:show-filters', !$event)"
9
9
  >
10
10
  <FilterFieldList
@@ -15,7 +15,7 @@
15
15
  </QBtn>
16
16
  </div>
17
17
  <a
18
- v-if="activeCount > 0"
18
+ v-if="activeCount > 0 && showFilters"
19
19
  class="text-blue-600 hover:text-blue-plus-1 text-sm ml-4"
20
20
  @click="$emit('update:filter', {})"
21
21
  >Clear All</a>
@@ -4,7 +4,7 @@
4
4
  :show-filters="showFilters"
5
5
  :filter="filter"
6
6
  class="border-r p-4 flex-shrink-0"
7
- @update:show-filters="$emit('update:show-filters', $event)"
7
+ @update:show-filters="onFilter"
8
8
  @update:filter="$emit('update:filter', $event)"
9
9
  />
10
10
 
@@ -22,12 +22,15 @@
22
22
  import { QSeparator } from "quasar";
23
23
  import { FilterListToggle } from "../Filters";
24
24
 
25
- defineEmits(["update:show-filters", "update:filter"]);
26
- defineProps({
25
+ const emit = defineEmits(["update:show-filters", "update:filter"]);
26
+ const props = defineProps({
27
27
  filter: {
28
28
  type: Object,
29
29
  default: null
30
30
  },
31
31
  showFilters: Boolean
32
32
  });
33
+ function onFilter() {
34
+ emit("update:show-filters", !props.showFilters);
35
+ }
33
36
  </script>
@@ -28,12 +28,17 @@ export function useListControls(name: string, {
28
28
  const pagedItems = ref(null);
29
29
  const filter = ref({});
30
30
  const globalFilter = ref({});
31
- const showFilters = ref(getItem(`${name}-show-filters`, true));
31
+ const showFilters = ref(false);
32
32
  const selectedRows = ref([]);
33
33
  const isLoadingList = ref(false);
34
34
  const isLoadingSummary = ref(false);
35
35
  const summary = ref(null);
36
36
 
37
+ // Filter fields are the field values available for the currently applied filter on Creative Groups
38
+ // (ie: all states available under the current filter)
39
+ const filterFieldOptions = ref({});
40
+ const isLoadingFilters = ref(false);
41
+
37
42
  const filterActiveCount = computed(() => Object.keys(filter.value).filter(key => filter.value[key] !== undefined).length);
38
43
 
39
44
  const PAGING_DEFAULT = {
@@ -87,15 +92,11 @@ export function useListControls(name: string, {
87
92
  isLoadingSummary.value = false;
88
93
  }
89
94
 
90
- // Filter fields are the field values available for the currently applied filter on Creative Groups
91
- // (ie: all states available under the current filter)
92
- const filterFieldOptions = ref({});
93
- const isLoadingFilters = ref(false);
94
-
95
- watch(() => showFilters.value, (show) => {
96
- setItem(`${name}-show-filters`, show);
97
- });
98
-
95
+ /**
96
+ * Loads the filter field options for the current filter.
97
+ *
98
+ * @returns {Promise<void>}
99
+ */
99
100
  async function loadFilterFieldOptions() {
100
101
  if (!filterFieldOptionsRoute || !isInitialized) return;
101
102
  isLoadingFilters.value = true;
@@ -46,6 +46,7 @@
46
46
  <script setup>
47
47
  import { ChevronLeftIcon as ToggleIcon } from "@heroicons/vue/outline";
48
48
  import { computed, onMounted, ref, watch } from "vue";
49
+ import { getItem, setItem } from "../../../helpers";
49
50
 
50
51
  const emit = defineEmits(["collapse", "update:collapse"]);
51
52
  const props = defineProps({
@@ -76,24 +77,19 @@ const props = defineProps({
76
77
  hideToggleOnCollapse: Boolean
77
78
  });
78
79
 
79
- const isCollapsed = ref(props.collapse);
80
+ const isCollapsed = ref(getItem(props.name + "-is-collapsed", props.collapse));
80
81
 
81
- const stored = localStorage.getItem(props.name + "-is-collapsed");
82
-
83
- if (stored !== null) {
84
- isCollapsed.value = stored === "1";
82
+ function setCollapse(state) {
83
+ isCollapsed.value = state;
84
+ setItem(props.name + "-is-collapsed", isCollapsed.value ? "1" : "");
85
85
  }
86
+
86
87
  function toggleCollapse() {
87
88
  setCollapse(!isCollapsed.value);
88
89
  emit("collapse", isCollapsed.value);
89
90
  emit("update:collapse", isCollapsed.value);
90
91
  }
91
92
 
92
- function setCollapse(state) {
93
- isCollapsed.value = state;
94
- localStorage.setItem(props.name + "-is-collapsed", isCollapsed.value ? "1" : "");
95
- }
96
-
97
93
  onMounted(() => {
98
94
  emit("collapse", isCollapsed.value);
99
95
  emit("update:collapse", isCollapsed.value);
@@ -8,9 +8,9 @@ export * from "./files";
8
8
  export * from "./FileUpload";
9
9
  export * from "./FlashMessages";
10
10
  export * from "./formats";
11
- export * from "./http";
12
11
  export * from "./multiFileUpload";
13
12
  export * from "./singleFileUpload";
14
13
  export * from "./storage";
15
14
  export * from "./styles";
16
15
  export * from "./utils";
16
+ export * from "./request";
@@ -1,6 +1,30 @@
1
+ import { ref, Ref, UnwrapRef } from "vue";
2
+
3
+ interface RequestOptions {
4
+ baseUrl: string;
5
+ }
6
+
7
+ const requestOptions: Ref<UnwrapRef<RequestOptions>> = ref({
8
+ baseUrl: ""
9
+ });
10
+ /**
11
+ * A simple request helper that wraps the fetch API
12
+ * to make GET and POST requests easier w/ JSON payloads
13
+ */
1
14
  export const request = {
2
- async get(url, options = {}) {
3
- return fetch(url, {
15
+ configure(options: RequestOptions) {
16
+ requestOptions.value = options;
17
+ },
18
+
19
+ url(url: string) {
20
+ if (url.startsWith("http")) {
21
+ return url;
22
+ }
23
+ return requestOptions.value.baseUrl + url;
24
+ },
25
+
26
+ async get(url: string, options = {}): Promise<object> {
27
+ return fetch(request.url(url), {
4
28
  method: "get",
5
29
  headers: {
6
30
  Accept: "application/json",
@@ -10,8 +34,8 @@ export const request = {
10
34
  }).then((r) => r.json());
11
35
  },
12
36
 
13
- async post(url, data = {}, options = {}) {
14
- return fetch(url, {
37
+ async post(url: string, data = {}, options = {}) {
38
+ return fetch(request.url(url), {
15
39
  method: "post",
16
40
  body: JSON.stringify(data),
17
41
  headers: {
@@ -29,34 +53,27 @@ export const request = {
29
53
  * also fetches that resource record from the endpoint, then adds it to the list if it
30
54
  * does not exist in the filtered list
31
55
  *
32
- * @param fetchFn
33
- * @param list
34
- * @param id
35
- * @param filter
36
- * @returns {Promise<void>}
37
56
  */
38
- export async function fetchResourceListWithSelected(fetchFn, list, id, filter) {
57
+ export async function fetchResourceListWithSelected(fetchFn: (filter: object) => Promise<any[]>, list: Ref, id: string, filter: object): Promise<void> {
39
58
  // First make sure we have the selected record, so we can always add it to the list
40
59
  let selectedResource;
41
60
  if (id) {
42
- selectedResource = list.value.find((c) => c.id === id) || (await fetchFn({ id }))[0];
61
+ selectedResource = list.value.find((c: { id: string }) => c.id === id) || (await fetchFn({ id }))[0];
43
62
  }
44
63
 
45
64
  // Get the filtered campaign list
46
65
  list.value = await fetchFn(filter);
47
66
 
48
67
  // If our selected campaign is not in the filtered list, add it
49
- if (selectedResource && !list.value.find((c) => c.id === id)) {
68
+ if (selectedResource && !list.value.find((c: { id: string }) => c.id === id)) {
50
69
  list.value.push(selectedResource);
51
70
  }
52
71
  }
53
72
 
54
73
  /**
55
74
  * Returns the value of the URL parameter (if it is set)
56
- * @param key
57
- * @param url
58
75
  */
59
- export function getUrlParam(key, url = undefined) {
76
+ export function getUrlParam(key: string, url?: string) {
60
77
  const params = new URLSearchParams(url?.replace(/.*\?/, "") || window.location.search);
61
78
  return params.get(key);
62
79
  }
package/tsconfig.json CHANGED
@@ -33,11 +33,7 @@
33
33
  "sourceMap": true,
34
34
  // Base directory to resolve non-relative module names,
35
35
  "baseUrl": "./",
36
- "paths": {
37
- "@/*": [
38
- "./src/*"
39
- ]
40
- }
36
+ "paths": {}
41
37
  },
42
38
  "include": [
43
39
  "src/**/*.ts",