@saooti/octopus-sdk 33.1.3 → 33.2.1

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.
Files changed (69) hide show
  1. package/README.md +1 -0
  2. package/index.ts +5 -0
  3. package/package.json +1 -3
  4. package/src/App.vue +1 -1
  5. package/src/assets/_utilities.scss +532 -0
  6. package/src/assets/bootstrap.scss +231 -0
  7. package/src/assets/form.scss +3 -46
  8. package/src/assets/general.scss +10 -58
  9. package/src/assets/multiselect.scss +8 -3
  10. package/src/assets/octopus-library.scss +2 -4
  11. package/src/components/display/categories/CategoryChooser.vue +2 -2
  12. package/src/components/display/categories/CategoryFilter.vue +60 -46
  13. package/src/components/display/categories/CategoryList.vue +22 -19
  14. package/src/components/display/comments/AddCommentModal.vue +60 -67
  15. package/src/components/display/comments/CommentBasicView.vue +3 -4
  16. package/src/components/display/comments/CommentInput.vue +4 -4
  17. package/src/components/display/comments/CommentItem.vue +2 -2
  18. package/src/components/display/comments/CommentPlayer.vue +2 -2
  19. package/src/components/display/emission/EmissionChooser.vue +1 -1
  20. package/src/components/display/emission/EmissionItem.vue +2 -1
  21. package/src/components/display/emission/EmissionPlayerItem.vue +0 -11
  22. package/src/components/display/filter/AdvancedSearch.vue +2 -2
  23. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  24. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  25. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  26. package/src/components/display/participant/ParticipantItem.vue +2 -1
  27. package/src/components/display/playlist/PlaylistItem.vue +3 -2
  28. package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
  29. package/src/components/display/podcasts/PodcastImage.vue +3 -3
  30. package/src/components/display/podcasts/PodcastInlineList.vue +1 -1
  31. package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
  32. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +6 -2
  33. package/src/components/display/podcasts/PodcastItemInfo.vue +2 -2
  34. package/src/components/display/podcasts/PodcastPlayBar.vue +9 -35
  35. package/src/components/display/podcasts/TagList.vue +0 -2
  36. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  37. package/src/components/display/rubriques/RubriqueList.vue +25 -20
  38. package/src/components/display/sharing/PlayerParameters.vue +76 -99
  39. package/src/components/display/sharing/ShareButtons.vue +3 -5
  40. package/src/components/display/sharing/ShareButtonsIntern.vue +1 -1
  41. package/src/components/display/sharing/ShareDistribution.vue +11 -10
  42. package/src/components/display/sharing/SharePlayer.vue +3 -0
  43. package/src/components/display/sharing/SubscribeButtons.vue +1 -1
  44. package/src/components/form/ClassicCheckbox.vue +73 -14
  45. package/src/components/form/ClassicLoading.vue +5 -1
  46. package/src/components/form/ClassicRadio.vue +12 -3
  47. package/src/components/form/ClassicSelect.vue +2 -9
  48. package/src/components/misc/Accordion.vue +76 -0
  49. package/src/components/misc/ErrorMessage.vue +2 -1
  50. package/src/components/misc/HomeDropdown.vue +66 -63
  51. package/src/components/misc/Nav.vue +99 -0
  52. package/src/components/misc/Popover.vue +139 -98
  53. package/src/components/misc/ProgressBar.vue +96 -0
  54. package/src/components/misc/Spinner.vue +37 -0
  55. package/src/components/misc/TopBar.vue +1 -1
  56. package/src/components/misc/modal/ClassicModal.vue +140 -0
  57. package/src/components/misc/modal/ClipboardModal.vue +25 -40
  58. package/src/components/misc/modal/MessageModal.vue +45 -60
  59. package/src/components/misc/modal/NewsletterModal.vue +85 -94
  60. package/src/components/misc/modal/QrCodeModal.vue +19 -36
  61. package/src/components/misc/modal/ShareModalPlayer.vue +72 -133
  62. package/src/components/misc/player/Player.vue +0 -6
  63. package/src/components/misc/player/PlayerCompact.vue +5 -4
  64. package/src/components/misc/player/PlayerLarge.vue +13 -9
  65. package/src/components/misc/player/PlayerProgressBar.vue +10 -48
  66. package/src/components/mixins/player/playerLogic.ts +3 -3
  67. package/src/components/pages/Podcast.vue +1 -1
  68. package/src/assets/bootstrap-diff.scss +0 -195
  69. package/src/assets/modal.scss +0 -49
@@ -1,84 +1,77 @@
1
1
  <template>
2
- <div
3
- id="add-comment-modal"
4
- class="modal"
2
+ <ClassicModal
3
+ id-modal="add-comment-modal"
4
+ :title-modal="$t('Welcome, thanks for your comment')"
5
+ :closable="false"
6
+ @close="closePopup"
5
7
  >
6
- <div class="modal-backdrop" />
7
- <div class="modal-dialog">
8
- <div class="modal-content">
9
- <div class="modal-header">
10
- <h5 class="modal-title">
11
- {{ $t('Welcome, thanks for your comment') }}
12
- </h5>
8
+ <template #body>
9
+ <template v-if="!sending">
10
+ <div>{{ $t("Let's get acquainted :") }}</div>
11
+ <input
12
+ v-model="name"
13
+ class="form-input"
14
+ type="text"
15
+ :placeholder="$t('Your name')"
16
+ :class="{ 'border border-danger': 0 === countName || !validName }"
17
+ >
18
+ <p
19
+ class="d-flex justify-content-end h6"
20
+ :class="{ 'text-danger': !validName }"
21
+ >
22
+ {{ countName + ' / ' + maxName }}
23
+ </p>
24
+ <div
25
+ v-if="''!==errorText"
26
+ class="mt-1 text-danger"
27
+ >
28
+ {{ errorText }}
13
29
  </div>
14
- <div class="modal-body">
15
- <template v-if="!sending">
16
- <div>{{ $t("Let's get acquainted :") }}</div>
17
- <input
18
- v-model="name"
19
- class="form-input"
20
- type="text"
21
- :placeholder="$t('Your name')"
22
- :class="{ 'border border-danger': 0 === countName || !validName }"
23
- >
24
- <p
25
- class="d-flex justify-content-end small-text"
26
- :class="{ 'text-danger': !validName }"
27
- >
28
- {{ countName + ' / ' + maxName }}
29
- </p>
30
- <div
31
- v-if="''!==errorText"
32
- class="mt-1 text-danger"
33
- >
34
- {{ errorText }}
35
- </div>
36
- </template>
37
- <template v-else>
38
- <div>{{ $t('Send in progress') }}</div>
39
- </template>
40
- </div>
41
- <div class="modal-footer">
42
- <button
43
- class="btn m-1"
44
- @click="closePopup"
45
- >
46
- {{ $t('Close') }}
47
- </button>
48
- <vue-recaptcha
49
- v-if="!isVerify"
50
- ref="invisibleRecaptcha"
51
- :load-recaptcha-script="true"
52
- @verify="handleSuccess"
53
- @expired="handleError"
54
- size="invisible"
55
- sitekey="6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh"
56
- >
57
- </vue-recaptcha>
58
- <button
59
- v-if="!sending"
60
- class="btn btn-primary m-1"
61
- :disabled="0 === countName || !validName"
62
- @click="submit"
63
- >
64
- {{ $t('Validate') }}
65
- </button>
66
- </div>
67
- </div>
68
- </div>
69
- </div>
30
+ </template>
31
+ <template v-else>
32
+ <div>{{ $t('Send in progress') }}</div>
33
+ </template>
34
+ </template>
35
+ <template #footer>
36
+ <button
37
+ class="btn m-1"
38
+ @click="closePopup"
39
+ >
40
+ {{ $t('Close') }}
41
+ </button>
42
+ <vue-recaptcha
43
+ v-if="!isVerify"
44
+ ref="invisibleRecaptcha"
45
+ :load-recaptcha-script="true"
46
+ size="invisible"
47
+ sitekey="6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh"
48
+ @verify="handleSuccess"
49
+ @expired="handleError"
50
+ />
51
+ <button
52
+ v-if="!sending"
53
+ class="btn btn-primary m-1"
54
+ :disabled="0 === countName || !validName"
55
+ @click="submit"
56
+ >
57
+ {{ $t('Validate') }}
58
+ </button>
59
+ </template>
60
+ </ClassicModal>
70
61
  </template>
71
62
 
72
63
  <script lang="ts">
73
64
  import Constants from '../../../../public/config';
74
65
  import { state } from '../../../store/paramStore';
66
+ import ClassicModal from '../../misc/modal/ClassicModal.vue';
75
67
  import api from '@/api/initialize';
76
68
  import { VueRecaptcha } from 'vue-recaptcha';
77
69
  import { defineComponent } from 'vue';
78
70
  export default defineComponent({
79
71
  name: 'AddCommentModal',
80
72
  components:{
81
- VueRecaptcha
73
+ VueRecaptcha,
74
+ ClassicModal
82
75
  },
83
76
 
84
77
  props: {},
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div class="d-flex small-text">
3
+ <div class="d-flex h6">
4
4
  <strong
5
5
  v-if="recordingInLive && ('Live' === comment.phase || 'Prelive' === comment.phase)"
6
6
  class="recording-bg me-1 text-light p-1"
@@ -17,9 +17,8 @@
17
17
  <Popover
18
18
  :disable="editRight || isValid"
19
19
  :target="'popover-comment' + comment.comId"
20
- >
21
- {{ $t('Comment waiting') }}
22
- </Popover>
20
+ :content="$t('Comment waiting')"
21
+ />
23
22
  <span
24
23
  v-if="comment.certified"
25
24
  class="saooti-certified"
@@ -5,7 +5,7 @@
5
5
  >
6
6
  <strong
7
7
  v-if="knownIdentity && !editName"
8
- class="small-text mt-1 c-hand"
8
+ class="h6 mt-1 c-hand"
9
9
  @click="changeIdentity"
10
10
  >{{ knownIdentity }}</strong>
11
11
  <div
@@ -15,12 +15,12 @@
15
15
  <div class="d-flex flex-column">
16
16
  <input
17
17
  v-model="temporaryName"
18
- class="small-text mt-1"
18
+ class="h6 mt-1"
19
19
  type="text"
20
20
  :class="{ 'border border-danger': 0 === countName || !validName }"
21
21
  >
22
22
  <p
23
- class="d-flex justify-content-end small-text mb-0"
23
+ class="d-flex justify-content-end h6 mb-0"
24
24
  :class="{ 'text-danger': !validName }"
25
25
  >
26
26
  {{ countName + ' / ' + maxName }}
@@ -51,7 +51,7 @@
51
51
  />
52
52
  <template v-if="textareaFocus">
53
53
  <p
54
- class="d-flex justify-content-end small-text"
54
+ class="d-flex justify-content-end h6"
55
55
  :class="{ 'text-danger': !validComment }"
56
56
  >
57
57
  {{ countComment + ' / ' + maxComment }}
@@ -15,7 +15,7 @@
15
15
  :class="{ 'border border-danger': 0 === countName || !validName }"
16
16
  >
17
17
  <p
18
- class="d-flex justify-content-end small-text"
18
+ class="d-flex justify-content-end h6"
19
19
  :class="{ 'text-danger': !validName }"
20
20
  >
21
21
  {{ countName + ' / ' + maxName }}
@@ -27,7 +27,7 @@
27
27
  type="text"
28
28
  />
29
29
  <p
30
- class="d-flex justify-content-end small-text"
30
+ class="d-flex justify-content-end h6"
31
31
  :class="{ 'text-danger': !validComment }"
32
32
  >
33
33
  {{ countComment + ' / ' + maxComment }}
@@ -20,9 +20,9 @@
20
20
  </div>
21
21
  <div
22
22
  v-if="displayContent"
23
- class="small-text mt-auto"
23
+ class="h6 mt-auto"
24
24
  >
25
- <div class="primary-color flex-shrink-0">
25
+ <div class="text-primary flex-shrink-0">
26
26
  {{ displayContent.name }}
27
27
  </div>
28
28
  <div class="ms-1 me-1">
@@ -71,7 +71,7 @@
71
71
  <template #caret="">
72
72
  <div class="position-relative">
73
73
  <span
74
- class="saooti-down octopus-arrow-down"
74
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
75
75
  />
76
76
  </div>
77
77
  </template>
@@ -22,7 +22,8 @@
22
22
  <span
23
23
  v-if="!activeEmission && !isPodcastmaker && editRight"
24
24
  :title="$t('Emission have not podcasts')"
25
- class="saooti-warning text-danger me-1"/>
25
+ class="saooti-warning text-danger me-1"
26
+ />
26
27
  <div
27
28
  class="emission-name"
28
29
  >
@@ -251,17 +251,6 @@ export default defineComponent({
251
251
  height: min-content;
252
252
  border-radius: 0.8rem;
253
253
  overflow: hidden;
254
- .progress{
255
- height: 6px;
256
- }
257
- .progress-bar-cursor{
258
- width: 10px;
259
- height: 10px;
260
- border-radius: 50%;
261
- background: black;
262
- align-self: center;
263
- position: absolute;
264
- }
265
254
  .emission-item-border-color {
266
255
  border-color: #ddd;
267
256
  }
@@ -15,7 +15,7 @@
15
15
  class="advanced-search-container"
16
16
  >
17
17
  <div class="d-flex flex-column">
18
- <div class="primary-darker mb-2">
18
+ <div class="text-primary mb-2">
19
19
  {{ $t('Filter') }}
20
20
  </div>
21
21
  <MonetizableFilter
@@ -59,7 +59,7 @@
59
59
  </div>
60
60
  </div>
61
61
  <div class="d-flex flex-column">
62
- <div class="primary-darker mb-2">
62
+ <div class="text-primary mb-2">
63
63
  {{ $t('Sort') }}
64
64
  </div>
65
65
  <SearchOrder
@@ -12,7 +12,7 @@
12
12
  <option value="YES">{{ $t('Authorized advertising') }}</option>
13
13
  <option value="NO">{{ $t('Prohibited advertising') }}</option>
14
14
  </select>
15
- <div class="saooti-down octopus-arrow-down" />
15
+ <div class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
16
16
  </label>
17
17
  </div>
18
18
  </template>
@@ -13,7 +13,7 @@
13
13
  >{{ rubriquage.title }}</option>
14
14
  </select>
15
15
  <div
16
- class="saooti-down octopus-arrow-down"
16
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
17
17
  />
18
18
  </label>
19
19
  <template v-if="rubriquageId">
@@ -100,7 +100,7 @@
100
100
  class="position-relative"
101
101
  >
102
102
  <span
103
- class="saooti-down octopus-arrow-down"
103
+ class="saooti-down octopus-arrow-down octopus-arrow-down-absolute"
104
104
  />
105
105
  </div>
106
106
  </template>
@@ -22,7 +22,8 @@
22
22
  <span
23
23
  v-if="!activeParticipant && !isPodcastmaker && editRight"
24
24
  :title="$t('Participant have not podcasts')"
25
- class="saooti-warning text-danger me-1"/>
25
+ class="saooti-warning text-danger me-1"
26
+ />
26
27
  <div class="participant-name">
27
28
  {{ name }}
28
29
  </div>
@@ -23,7 +23,8 @@
23
23
  <span
24
24
  v-if="!activePlaylist && !isPodcastmaker"
25
25
  :title="$t('Playlist have not podcasts')"
26
- class="saooti-warning text-danger me-1"/>
26
+ class="saooti-warning text-danger me-1"
27
+ />
27
28
  <div class="emission-name">
28
29
  {{ name }}
29
30
  </div>
@@ -49,7 +50,7 @@
49
50
  }"
50
51
  class="text-dark"
51
52
  >
52
- <div class="emission-producer primary-darker">
53
+ <div class="emission-producer text-primary">
53
54
  © {{ playlist.organisation.name }}
54
55
  </div>
55
56
  </router-link>
@@ -13,6 +13,7 @@
13
13
  />
14
14
  <span class="mx-1">:</span>
15
15
  <Popover
16
+ :title="$t('Animated by')"
16
17
  :target="idPopover"
17
18
  >
18
19
  <div
@@ -24,7 +25,7 @@
24
25
  <!-- eslint-disable vue/no-v-html -->
25
26
  <div
26
27
  v-if="participant.description"
27
- class="h6 participant-desc html-wysiwyg-content"
28
+ class="participant-desc html-wysiwyg-content"
28
29
  v-html="participant.description"
29
30
  />
30
31
  <!-- eslint-enable -->
@@ -42,7 +42,7 @@
42
42
  <div
43
43
  v-show="!playingPodcast"
44
44
  :title="$t('Play')"
45
- class="saooti-play primary-color"
45
+ class="saooti-play text-primary"
46
46
  />
47
47
  <div
48
48
  v-if="!classicPodcastPlay"
@@ -70,14 +70,14 @@
70
70
  </div>
71
71
  <div
72
72
  v-if="!classicPodcastPlay"
73
- class="small-text mt-3 fw-bolder"
73
+ class="h6 mt-3 fw-bolder"
74
74
  >
75
75
  {{ textVisible }}
76
76
  </div>
77
77
  </button>
78
78
  <div
79
79
  v-if="displayDescription && isMobile"
80
- class="background-icon primary-bg saooti-arrow-up"
80
+ class="background-icon bg-primary saooti-arrow-up"
81
81
  :class="isDescription ? 'saooti-arrow-down':'saooti-arrow-up'"
82
82
  :title="isDescription ? $t('Hide description'):$t('Show description')"
83
83
  @click="showDescription"
@@ -14,7 +14,7 @@
14
14
  :rubriquage-id="rubriquageId"
15
15
  :no-rubriquage-id="noRubriquageId"
16
16
  :query="query"
17
- :podcastId="podcastId"
17
+ :podcast-id="podcastId"
18
18
  @update:isArrow="$emit('update:isArrow',$event)"
19
19
  />
20
20
  <PodcastSwiperList
@@ -12,7 +12,7 @@
12
12
  :previous-available="previousAvailable"
13
13
  :next-available="nextAvailable"
14
14
  :no-rubriquage-id="noRubriquageId"
15
- :podcastId="podcastId"
15
+ :podcast-id="podcastId"
16
16
  @sortChrono="sortChrono"
17
17
  @sortPopular="sortPopular"
18
18
  @displayPrevious="displayPrevious"
@@ -4,7 +4,8 @@
4
4
  >
5
5
  <div
6
6
  class="d-flex align-items-center"
7
- :class="podcastId?'mb-4':'mb-2'">
7
+ :class="podcastId?'mb-4':'mb-2'"
8
+ >
8
9
  <h2 class="mb-0">
9
10
  {{ title }}
10
11
  </h2>
@@ -16,7 +17,10 @@
16
17
  @click="handleSeeMoreButton"
17
18
  />
18
19
  </div>
19
- <div class="d-flex justify-content-between" v-if="!podcastId">
20
+ <div
21
+ v-if="!podcastId"
22
+ class="d-flex justify-content-between"
23
+ >
20
24
  <div class="d-flex">
21
25
  <button
22
26
  class="btn btn-underline"
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <div class="d-contents podcast-item-info">
3
3
  <div class="d-flex justify-content-between flex-wrap text-secondary mb-3">
4
- <div class="me-3 small-text">
4
+ <div class="me-3 h6">
5
5
  {{ date }}
6
6
  </div>
7
7
  <div
8
8
  v-if="0 !== durationString.length"
9
- class="small-text"
9
+ class="h6"
10
10
  >
11
11
  {{ durationString }}
12
12
  </div>
@@ -7,23 +7,11 @@
7
7
  {{ playedTime }}
8
8
  </div>
9
9
  <div class="position-relative flex-grow-1">
10
- <div
11
- class="progress flex-grow-1 c-hand"
10
+ <ProgressBar
11
+ :main-progress="percentProgress"
12
+ class="medium"
12
13
  @mouseup="seekTo"
13
- >
14
- <div
15
- class="progress-bar primary-bg"
16
- role="progressbar"
17
- aria-valuenow="0"
18
- aria-valuemin="0"
19
- aria-valuemax="100"
20
- :style="'width: ' + percentProgress + '%'"
21
- />
22
- <div
23
- class="progress-bar-cursor"
24
- :style="'left:' + percentProgress + '%'"
25
- />
26
- </div>
14
+ />
27
15
  </div>
28
16
  <div class="ms-2">
29
17
  {{ totalTime }}
@@ -32,12 +20,16 @@
32
20
  </template>
33
21
 
34
22
  <script lang="ts">
23
+ import ProgressBar from '../../misc/ProgressBar.vue';
35
24
  import DurationHelper from '../../../helper/duration';
36
25
  import displayMethods from '../../mixins/displayMethods';
37
26
  import { state } from '../../../store/paramStore';
38
27
  import { defineComponent } from 'vue'
39
28
  export default defineComponent({
40
29
  name: 'PodcastPlayBar',
30
+ components:{
31
+ ProgressBar
32
+ },
41
33
  mixins: [displayMethods],
42
34
  props: {
43
35
  podcastId: { default: undefined, type: Number},
@@ -80,22 +72,4 @@ export default defineComponent({
80
72
  }
81
73
  },
82
74
  })
83
- </script>
84
-
85
- <style lang="scss">
86
- .octopus-app{
87
- .podcast-play-bar {
88
- .progress{
89
- height: 6px;
90
- }
91
- .progress-bar-cursor{
92
- width: 10px;
93
- height: 10px;
94
- border-radius: 50%;
95
- background: black;
96
- align-self: center;
97
- position: absolute;
98
- }
99
- }
100
- }
101
- </style>
75
+ </script>
@@ -26,9 +26,7 @@
26
26
  <Popover
27
27
  v-if="isOuestFranceTag(tag)"
28
28
  :target="'tag-list-from-podcast-page'+index"
29
- triggers="hover"
30
29
  :content="tag.substring(4,tag.length)"
31
- placement="bottom"
32
30
  />
33
31
  </div>
34
32
  </div>
@@ -47,7 +47,7 @@
47
47
  <div
48
48
  v-if="undefined!==option"
49
49
  class="multiselect-octopus-proposition"
50
- :class="option.rubriqueId <= 0 ? 'primary-darker' : ''"
50
+ :class="option.rubriqueId <= 0 ? 'text-primary' : ''"
51
51
  :data-selenium="'rubric-chooser-' + seleniumFormat(option.name)"
52
52
  >
53
53
  <span class="option__title">{{ option.name }}</span>
@@ -60,7 +60,7 @@
60
60
  {{ $t('No elements found. Consider changing the search query.') }}
61
61
  </template>
62
62
  <template #caret>
63
- <span class="saooti-down octopus-arrow-down" />
63
+ <span class="saooti-down octopus-arrow-down octopus-arrow-down-absolute" />
64
64
  </template>
65
65
  </VueMultiselect>
66
66
  </div>
@@ -7,7 +7,7 @@
7
7
  <label
8
8
  for="rubrique-list-select"
9
9
  class="hid"
10
- >{{$t('By topic')}}</label>
10
+ >{{ $t('By topic') }}</label>
11
11
  <select
12
12
  id="rubrique-list-select"
13
13
  v-model="rubriquage"
@@ -32,31 +32,32 @@
32
32
  {{ rubrique.name }}
33
33
  </button>
34
34
  </div>
35
- <div
35
+ <button
36
36
  v-show="hidenRubriques.length"
37
- class="dropdown btn-group"
37
+ id="rubriques-dropdown"
38
+ class="btn admin-button saooti-more"
39
+ :title="$t('See more')"
40
+ />
41
+ <Popover
42
+ target="rubriques-dropdown"
43
+ :only-click="true"
44
+ :is-fixed="true"
45
+ :left-pos="true"
38
46
  >
39
47
  <button
40
- class="btn dropdown-toggle admin-button dropdown-toggle-no-caret saooti-more"
41
- data-bs-toggle="dropdown"
42
- aria-expanded="false"
43
- :title="$t('See more')"
44
- />
45
- <div class="dropdown-menu dropdown-menu-right px-4">
46
- <div
47
- v-for="rubrique in hidenRubriques"
48
- :key="rubrique.rubriqueId"
49
- class="me-3 dropdown-item"
50
- @click="addFilter(rubrique)"
51
- >
52
- {{ rubrique.name }}
53
- </div>
54
- </div>
55
- </div>
48
+ v-for="rubrique in hidenRubriques"
49
+ :key="rubrique.rubriqueId"
50
+ class="me-3 octopus-dropdown-item"
51
+ @mousedown="addFilter(rubrique)"
52
+ >
53
+ {{ rubrique.name }}
54
+ </button>
55
+ </Popover>
56
56
  </div>
57
57
  </template>
58
58
 
59
59
  <script lang="ts">
60
+ import Popover from '../../misc/Popover.vue';
60
61
  import { Rubrique } from '@/store/class/rubrique/rubrique';
61
62
  import { Rubriquage } from '@/store/class/rubrique/rubriquage';
62
63
  import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
@@ -64,9 +65,14 @@ import { defineComponent } from 'vue'
64
65
  export default defineComponent({
65
66
  name: 'RubriqueList',
66
67
 
68
+ components:{
69
+ Popover
70
+ },
71
+
67
72
  props: {
68
73
  rubriquages: { default: () => [], type: Array as ()=>Array<Rubriquage>},
69
74
  },
75
+
70
76
 
71
77
  data() {
72
78
  return {
@@ -114,7 +120,6 @@ export default defineComponent({
114
120
  window.removeEventListener('resize', this.resizeWindow);
115
121
  },
116
122
  methods: {
117
-
118
123
  initRubriques(): void{
119
124
  if(!this.rubriquage){ return ;}
120
125
  this.$store.commit('filterRubriqueDisplay', this.rubriquage.rubriques);