@paris-ias/list 1.0.192 → 1.0.194

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/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@paris-ias/list",
3
3
  "configKey": "list",
4
- "version": "1.0.192",
4
+ "version": "1.0.194",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "0.8.4",
7
7
  "unbuild": "2.0.0"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover py-2">
2
+ <ListMoleculesDenseItemContainer>
3
3
  <v-col v-if="mdAndUp" cols="1">
4
4
  <MiscAtomsDateStamp
5
5
  v-if="item.start"
@@ -21,7 +21,7 @@
21
21
  />
22
22
  </v-col>
23
23
 
24
- <v-col align-self="start" class="pl-4">
24
+ <v-col align-self="start" class="pl-md-4">
25
25
  <v-skeleton-loader v-if="loading" type="chip" class="mr-3" width="120" />
26
26
  <v-chip
27
27
  v-else
@@ -82,14 +82,7 @@
82
82
  )}`"
83
83
  />
84
84
  </v-col>
85
-
86
- <!-- <v-col align-self="center" cols="auto">
87
- <v-skeleton-loader v-if="loading" type="button" />
88
- <div v-else>
89
- <EventsBadges :item />
90
- </div>
91
- </v-col> -->
92
- </v-row>
85
+ </ListMoleculesDenseItemContainer>
93
86
  </template>
94
87
 
95
88
  <script setup>
@@ -124,6 +117,4 @@ const props = defineProps({
124
117
  default: false,
125
118
  },
126
119
  })
127
-
128
- // const loading = computed(() => rootStore.loading || props.loading)
129
120
  </script>
@@ -1,19 +1,17 @@
1
1
  <template>
2
- <v-row
3
- v-ripple
4
- no-gutters
5
- class="cursor-pointer highlight-on-hover pt-2 pl-md-2"
6
- >
2
+ <ListMoleculesDenseItemContainer>
7
3
  <v-col
8
4
  v-if="mdAndUp"
9
- cols="1"
5
+ cols="auto"
10
6
  class="align-center"
11
7
  :offset="name.startsWith('search') ? 1 : 0"
12
8
  >
13
9
  <MiscAtomsImageContainer
14
10
  cover
15
11
  :loading="loading"
16
- :src="item?.image?.url || '/default.png'"
12
+ :src="
13
+ item && item.image && item.image.url ? item.image.url : '/default.png'
14
+ "
17
15
  :ratio="1 / 1"
18
16
  :width="100"
19
17
  />
@@ -21,8 +19,7 @@
21
19
 
22
20
  <v-col
23
21
  :cols="mdAndUp ? 8 : undefined"
24
- class="text-h5 dense d-flex flex-column ml-md-2"
25
- :offset="name.startsWith('search') ? 1 : 0"
22
+ class="text-h5 dense d-flex flex-column"
26
23
  >
27
24
  <v-skeleton-loader
28
25
  v-if="loading"
@@ -37,6 +34,7 @@
37
34
  ? highlightAndTruncate(300, item.name, searchQuery.split(' '))
38
35
  : item.name
39
36
  "
37
+ class="pl-md-4"
40
38
  />
41
39
  <FellowshipsBadges :item="item" :loading="loading" />
42
40
 
@@ -60,7 +58,7 @@
60
58
  </template>
61
59
  </v-col>
62
60
 
63
- <v-col v-if="mdAndUp" class="d-flex flex-column">
61
+ <v-col v-if="mdAndUp" class="d-flex flex-column" cols="1">
64
62
  <v-skeleton-loader v-if="loading" type="chip" width="260" class="mt-2" />
65
63
  <MiscMoleculesChipContainer
66
64
  v-else
@@ -72,7 +70,7 @@
72
70
  class="mt-2"
73
71
  />
74
72
  </v-col>
75
- </v-row>
73
+ </ListMoleculesDenseItemContainer>
76
74
  </template>
77
75
 
78
76
  <script setup>
@@ -81,7 +79,7 @@ import { useNuxtApp, useRoute, computed } from "#imports"
81
79
  import { highlightAndTruncate } from "../../composables/useUtils"
82
80
  const { $rootStore, $stores } = useNuxtApp()
83
81
  const { name } = useRoute()
84
- const { mdAndUp, mdAndDown } = useDisplay()
82
+ const { mdAndUp, mdAndDown, smAndDown } = useDisplay()
85
83
  const searchQuery = computed(() =>
86
84
  name.startsWith("search")
87
85
  ? $rootStore.search
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover pa-2">
3
+ <slot />
4
+ </v-row>
5
+ </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="d-flex align-center">
3
3
  <v-menu
4
- v-if="filter"
4
+ v-if="filter && mdAndUp"
5
5
  v-model="filterMenuOpen"
6
6
  :close-on-content-click="false"
7
7
  location="bottom end"
@@ -150,8 +150,14 @@ const allFilterOptions = computed(() => ({
150
150
  people: { value: "people", label: capitalize(t("items.people", 2)) },
151
151
  events: { value: "events", label: capitalize(t("items.events", 2)) },
152
152
  news: { value: "news", label: capitalize(t("items.news", 2)) },
153
- publications: { value: "publications", label: capitalize(t("items.publications", 2)) },
154
- fellowships: { value: "fellowships", label: capitalize(t("items.fellowships", 2)) },
153
+ publications: {
154
+ value: "publications",
155
+ label: capitalize(t("items.publications", 2)),
156
+ },
157
+ fellowships: {
158
+ value: "fellowships",
159
+ label: capitalize(t("items.fellowships", 2)),
160
+ },
155
161
  projects: { value: "projects", label: capitalize(t("items.projects", 2)) },
156
162
  }))
157
163
 
@@ -159,7 +165,9 @@ const filterOptions = computed(() => {
159
165
  const map = allFilterOptions.value
160
166
  if (props.filterOrder.length > 0) {
161
167
  const ordered = props.filterOrder.filter((k) => map[k]).map((k) => map[k])
162
- const rest = Object.values(map).filter((o) => !props.filterOrder.includes(o.value))
168
+ const rest = Object.values(map).filter(
169
+ (o) => !props.filterOrder.includes(o.value),
170
+ )
163
171
  return [...ordered, ...rest]
164
172
  }
165
173
  return Object.values(map)
@@ -2,6 +2,7 @@
2
2
  <div>
3
3
  <div class="d-flex align-center justify-space-between my-2">
4
4
  <v-btn
5
+ v-if="mdAndUp"
5
6
  variant="text"
6
7
  class="mr-2"
7
8
  @click="$emit('toggle', type)"
@@ -16,6 +17,7 @@
16
17
  @click="$emit('toggle', type)"
17
18
  >
18
19
  <h3
20
+ class="mt-4 mb-0"
19
21
  :class="
20
22
  $rootStore.results[type] && $rootStore.results[type].total > 0
21
23
  ? 'black'
@@ -24,7 +26,7 @@
24
26
  >
25
27
  {{ capitalize($t("items." + props.type, 2)) }}
26
28
  </h3>
27
- <div class="text-overline">
29
+ <div class="text-overline mb-3">
28
30
  {{
29
31
  feminine
30
32
  ? $t(
@@ -83,8 +85,11 @@
83
85
  </template>
84
86
  <script setup>
85
87
  import { useNuxtApp, useLocalePath } from "#imports"
88
+ import { useDisplay } from "vuetify"
86
89
  const localePath = useLocalePath()
87
90
 
91
+ const { mdAndUp } = useDisplay()
92
+
88
93
  // Utility function to capitalize first letter
89
94
  const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1)
90
95
 
@@ -61,14 +61,16 @@ import {
61
61
  computed,
62
62
  watch,
63
63
  } from "#imports"
64
+ import { useRootStore } from "../../../stores/root"
64
65
  import SEARCH from "@paris-ias/trees/dist/graphql/client/misc/query.search.all.gql"
65
66
 
66
67
  const { $rootStore } = useNuxtApp()
68
+ const rootStore = useRootStore()
67
69
  const appConfig = useAppConfig()
68
70
  const { locale } = useI18n()
69
71
  const route = useRoute()
70
72
  if (route.query.search) {
71
- $rootStore.search = route.query.search
73
+ rootStore.search = String(route.query.search)
72
74
  }
73
75
 
74
76
  const open = reactive(
@@ -109,16 +111,15 @@ const searchTerm = computed(() => $rootStore.search || "")
109
111
  const currentLocale = computed(() => locale.value)
110
112
 
111
113
  const { data, pending, error } = useAsyncQuery(
112
- SEARCH,
113
- computed(() => ({
114
- search: searchTerm.value,
115
- appId: "iea",
116
- lang: currentLocale.value,
117
- })),
118
114
  {
119
- server: false,
120
- enabled: computed(() => searchTerm.value.length > 0),
115
+ query: SEARCH,
116
+ variables: computed(() => ({
117
+ search: searchTerm.value,
118
+ appId: "iea",
119
+ lang: currentLocale.value,
120
+ })),
121
121
  },
122
+ { server: false },
122
123
  )
123
124
 
124
125
  watch(data, (newData) => {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover pa-2">
2
+ <ListMoleculesDenseItemContainer>
3
3
  <v-col v-if="mdAndUp" cols="1">
4
4
  <MiscAtomsDateStamp
5
5
  v-if="item.date"
@@ -8,7 +8,7 @@
8
8
  class="mr-4"
9
9
  />
10
10
  </v-col>
11
- <v-col v-if="mdAndUp" align-self="start" cols="1">
11
+ <v-col v-if="mdAndUp" align-self="start" cols="auto">
12
12
  <MiscAtomsImageContainer
13
13
  cover
14
14
  :loading="loading"
@@ -19,7 +19,7 @@
19
19
  :width="100"
20
20
  />
21
21
  </v-col>
22
- <v-col align-self="start" class="text-h5 dense pl-4 paragraph">
22
+ <v-col align-self="start" class="text-h5 dense pl-md-4 paragraph">
23
23
  <v-skeleton-loader v-if="loading" type="heading" />
24
24
  <template v-else>
25
25
  <v-skeleton-loader
@@ -67,7 +67,7 @@
67
67
  />
68
68
  </template>
69
69
  </v-col>
70
- </v-row>
70
+ </ListMoleculesDenseItemContainer>
71
71
  </template>
72
72
 
73
73
  <script setup>
@@ -1,6 +1,10 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover">
3
- <v-col v-if="mdAndUp" cols="1" :offset="name.startsWith('search') ? 1 : 0">
2
+ <ListMoleculesDenseItemContainer>
3
+ <v-col
4
+ v-if="mdAndUp"
5
+ cols="auto"
6
+ :offset="name.startsWith('search') ? 1 : 0"
7
+ >
4
8
  <MiscAtomsImageContainer
5
9
  cover
6
10
  :loading="loading"
@@ -12,11 +16,11 @@
12
16
  class="ma-1"
13
17
  />
14
18
  </v-col>
15
- <v-col align-self="start" class="text-sm-h6 dense ml-4">
19
+ <v-col align-self="start" class="dense ml-md-4">
16
20
  <v-skeleton-loader v-if="loading" type="heading" />
17
21
  <div
18
22
  v-else
19
- class="d-flex justify-space-between text-title text-md-h5 align-center"
23
+ class="d-flex justify-space-between text-title text-h5 align-center pt-md-2"
20
24
  >
21
25
  <span
22
26
  v-html="
@@ -63,7 +67,7 @@
63
67
  "
64
68
  />
65
69
  </v-col>
66
- </v-row>
70
+ </ListMoleculesDenseItemContainer>
67
71
  </template>
68
72
 
69
73
  <script setup>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover">
2
+ <ListMoleculesDenseItemContainer>
3
3
  <v-col
4
4
  v-if="mdAndUp"
5
5
  align-self="start"
@@ -16,7 +16,7 @@
16
16
  :width="100"
17
17
  />
18
18
  </v-col>
19
- <v-col align-self="center" class="text-h5 dense pt-2 pl-4">
19
+ <v-col align-self="start" class="text-h5 dense pl-md-4">
20
20
  <v-skeleton-loader v-if="loading" type="heading" width="50%" />
21
21
  <span
22
22
  v-else
@@ -44,7 +44,7 @@
44
44
  )}`"
45
45
  />
46
46
  </v-col>
47
- </v-row>
47
+ </ListMoleculesDenseItemContainer>
48
48
  </template>
49
49
 
50
50
  <script setup>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-row v-ripple no-gutters class="cursor-pointer highlight-on-hover my-2">
2
+ <ListMoleculesDenseItemContainer>
3
3
  <v-col v-if="mdAndUp" cols="1">
4
4
  <MiscAtomsDateStamp
5
5
  v-if="item.date"
@@ -8,7 +8,7 @@
8
8
  class="mr-4"
9
9
  />
10
10
  </v-col>
11
- <v-col v-if="mdAndUp" cols="1" class="align-center">
11
+ <v-col v-if="mdAndUp" cols="auto" class="align-center">
12
12
  <MiscAtomsImageContainer
13
13
  cover
14
14
  :loading="loading"
@@ -19,8 +19,8 @@
19
19
  :width="100"
20
20
  />
21
21
  </v-col>
22
- <v-col class="pl-4">
23
- <div class="inline-flex flex-row flex-wrap">
22
+ <v-col class="" cols="8">
23
+ <div class="inline-flex flex-row flex-wrap pl-md-4">
24
24
  <v-skeleton-loader v-if="loading" :type="heading" />
25
25
 
26
26
  <template v-else>
@@ -69,7 +69,7 @@
69
69
  )}`"
70
70
  />
71
71
  </div> </v-col
72
- ></v-row>
72
+ ></ListMoleculesDenseItemContainer>
73
73
  </template>
74
74
 
75
75
  <script setup>
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "license": "AGPL-3.0-only",
3
3
  "main": "./dist/module.mjs",
4
- "version": "1.0.192",
4
+ "version": "1.0.194",
5
5
  "name": "@paris-ias/list",
6
6
  "repository": {
7
7
  "url": "git+https://github.com/IEA-Paris/list.git",
8
8
  "type": "git"
9
9
  },
10
10
  "dependencies": {
11
- "@paris-ias/trees": "^2.0.48"
11
+ "@paris-ias/trees": "^2.0.49"
12
12
  },
13
13
  "description": "Paris IAS List Module",
14
14
  "peerDependencies": {