@saooti/octopus-sdk 1.0.0 → 29.0.2

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 (230) hide show
  1. package/README.md +73 -0
  2. package/index.d.ts +4 -0
  3. package/index.ts +12 -0
  4. package/package.json +61 -39
  5. package/public/css/fonts/saooti-ui.eot +0 -0
  6. package/public/css/fonts/saooti-ui.svg +30 -19
  7. package/public/css/fonts/saooti-ui.ttf +0 -0
  8. package/public/css/fonts/saooti-ui.woff +0 -0
  9. package/public/css/fonts/style.css +48 -5
  10. package/public/img/ACPM.png +0 -0
  11. package/public/img/article.png +0 -0
  12. package/src/App.vue +97 -31
  13. package/src/api/comments.ts +3 -1
  14. package/src/api/emissions.ts +5 -2
  15. package/src/api/initialize.ts +3 -2
  16. package/src/api/podcasts.ts +5 -2
  17. package/src/api/profile.ts +4 -2
  18. package/src/api/studio.ts +12 -1
  19. package/src/assets/bootstrap-diff.scss +265 -0
  20. package/src/assets/form.scss +23 -0
  21. package/src/assets/general.scss +47 -20
  22. package/src/assets/modal.scss +9 -10
  23. package/src/assets/multiselect.scss +19 -2
  24. package/src/assets/octopus-library.scss +16 -4
  25. package/src/assets/share.scss +343 -0
  26. package/src/components/display/aggregator/RssSection.vue +4 -4
  27. package/src/components/display/categories/CategoryChooser.vue +152 -105
  28. package/src/components/display/categories/CategoryFilter.vue +108 -0
  29. package/src/components/display/categories/CategoryList.vue +138 -109
  30. package/src/components/display/comments/AddCommentModal.vue +104 -87
  31. package/src/components/display/comments/CommentInput.vue +137 -118
  32. package/src/components/display/comments/CommentItem.vue +155 -137
  33. package/src/components/display/comments/CommentList.vue +142 -120
  34. package/src/components/display/comments/CommentParentInfo.vue +39 -35
  35. package/src/components/display/comments/CommentPlayer.vue +54 -48
  36. package/src/components/display/comments/CommentSection.vue +57 -58
  37. package/src/components/display/edit/EditBox.vue +4 -4
  38. package/src/components/display/edit/EditCommentBox.vue +25 -31
  39. package/src/components/display/emission/EmissionChooser.vue +82 -80
  40. package/src/components/display/emission/EmissionInlineList.vue +118 -105
  41. package/src/components/display/emission/EmissionItem.vue +66 -167
  42. package/src/components/display/emission/EmissionList.vue +96 -122
  43. package/src/components/display/emission/EmissionPlayerItem.vue +131 -126
  44. package/src/components/display/filter/AdvancedSearch.vue +306 -372
  45. package/src/components/display/filter/CategoryFilter.vue +117 -0
  46. package/src/components/display/filter/MonetizableFilter.vue +24 -10
  47. package/src/components/display/filter/ProductorSearch.vue +131 -135
  48. package/src/components/display/filter/RubriqueChoice.vue +104 -0
  49. package/src/components/display/filter/RubriqueFilter.vue +235 -0
  50. package/src/components/display/live/CountDown.vue +30 -29
  51. package/src/components/display/live/LiveHorizontalList.vue +40 -34
  52. package/src/components/display/live/LiveItem.vue +146 -158
  53. package/src/components/display/live/LiveList.vue +167 -154
  54. package/src/components/display/organisation/OrganisationChooser.vue +125 -124
  55. package/src/components/display/organisation/OrganisationChooserLight.vue +40 -47
  56. package/src/components/display/participant/ParticipantItem.vue +92 -108
  57. package/src/components/display/participant/ParticipantList.vue +76 -69
  58. package/src/components/display/playlist/PlaylistItem.vue +45 -56
  59. package/src/components/display/playlist/PlaylistList.vue +57 -48
  60. package/src/components/display/playlist/PodcastList.vue +94 -70
  61. package/src/components/display/podcasts/AnimatorsItem.vue +26 -23
  62. package/src/components/display/podcasts/ParticipantDescription.vue +115 -0
  63. package/src/components/display/podcasts/PodcastFilterList.vue +84 -85
  64. package/src/components/display/podcasts/PodcastImage.vue +244 -208
  65. package/src/components/display/podcasts/PodcastInlineList.vue +145 -207
  66. package/src/components/display/podcasts/PodcastItem.vue +150 -132
  67. package/src/components/display/podcasts/PodcastList.vue +89 -110
  68. package/src/components/display/podcasts/TagList.vue +23 -16
  69. package/src/components/display/rubriques/RubriqueChooser.vue +137 -123
  70. package/src/components/display/rubriques/RubriqueList.vue +227 -0
  71. package/src/components/display/sharing/PlayerParameters.vue +154 -106
  72. package/src/components/display/sharing/QrCode.vue +58 -0
  73. package/src/components/display/sharing/ShareButtons.vue +214 -92
  74. package/src/components/display/sharing/ShareDistribution.vue +110 -121
  75. package/src/components/display/sharing/SharePlayer.vue +245 -190
  76. package/src/components/display/sharing/SubscribeButtons.vue +130 -66
  77. package/src/components/display/studio/RecordingItemButton.vue +4 -4
  78. package/src/components/misc/ErrorMessage.vue +21 -16
  79. package/src/components/misc/Footer.vue +131 -66
  80. package/src/components/misc/HomeDropdown.vue +166 -123
  81. package/src/components/misc/LeftMenu.vue +151 -134
  82. package/src/components/misc/Player.vue +332 -328
  83. package/src/components/misc/Snackbar.vue +27 -29
  84. package/src/components/misc/TopBar.vue +204 -174
  85. package/src/components/misc/modal/ClipboardModal.vue +46 -26
  86. package/src/components/misc/modal/MessageModal.vue +67 -51
  87. package/src/components/misc/modal/NewsletterModal.vue +179 -136
  88. package/src/components/misc/modal/QrCodeModal.vue +83 -0
  89. package/src/components/misc/modal/ShareModalPlayer.vue +133 -74
  90. package/src/components/mixins/functions.ts +21 -18
  91. package/src/components/mixins/init.ts +24 -0
  92. package/src/components/mixins/organisationFilter.ts +24 -0
  93. package/src/components/pages/Category.vue +26 -26
  94. package/src/components/pages/Emission.vue +120 -92
  95. package/src/components/pages/Emissions.vue +109 -86
  96. package/src/components/pages/Home.vue +70 -16
  97. package/src/components/pages/Lives.vue +57 -47
  98. package/src/components/pages/Participant.vue +93 -77
  99. package/src/components/pages/Participants.vue +44 -31
  100. package/src/components/pages/Playlist.vue +63 -52
  101. package/src/components/pages/Playlists.vue +41 -39
  102. package/src/components/pages/Podcast.vue +265 -251
  103. package/src/components/pages/Podcasts.vue +135 -104
  104. package/src/components/pages/Rubrique.vue +25 -19
  105. package/src/components/pages/Search.vue +71 -67
  106. package/src/helper/dom.ts +2 -2
  107. package/src/helper/duration.ts +18 -8
  108. package/src/locale/educationen.ts +14 -0
  109. package/src/locale/en.ts +299 -1
  110. package/src/locale/fr.ts +25 -10
  111. package/src/locale/messages.ts +3 -2
  112. package/src/main.ts +54 -32
  113. package/src/router/router.ts +184 -159
  114. package/src/shims-tsx.d.ts +13 -0
  115. package/src/shims-vue-recaptcha-v3.d.ts +9 -0
  116. package/src/shims-vue.d.ts +5 -6
  117. package/src/store/AppStore.ts +36 -171
  118. package/src/store/class/category.ts +8 -0
  119. package/src/store/class/comment.ts +17 -0
  120. package/src/store/class/conference.ts +27 -0
  121. package/src/store/class/customPlayer.ts +8 -0
  122. package/src/store/class/emission.ts +20 -0
  123. package/src/store/class/fetchParam.ts +16 -0
  124. package/src/store/class/media.ts +13 -0
  125. package/src/store/class/organisation.ts +19 -0
  126. package/src/store/class/participant.ts +12 -0
  127. package/src/store/class/person.ts +13 -0
  128. package/src/store/class/player.ts +12 -0
  129. package/src/store/class/playlist.ts +15 -0
  130. package/src/store/class/podcast.ts +37 -0
  131. package/src/store/class/rubriquage.ts +9 -0
  132. package/src/store/class/rubriquageFilter.ts +5 -0
  133. package/src/store/class/rubrique.ts +8 -0
  134. package/src/store/paramStore.ts +70 -29
  135. package/src/store/typeAppStore.ts +171 -237
  136. package/src/vuex-shim.d.ts +8 -0
  137. package/tsconfig.json +4 -0
  138. package/vue.config.js +14 -0
  139. package/public/img/ACPM.PNG +0 -0
  140. package/src/assets/bootstrap_scss/_alert.scss +0 -51
  141. package/src/assets/bootstrap_scss/_badge.scss +0 -54
  142. package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
  143. package/src/assets/bootstrap_scss/_button-group.scss +0 -164
  144. package/src/assets/bootstrap_scss/_buttons.scss +0 -291
  145. package/src/assets/bootstrap_scss/_card.scss +0 -278
  146. package/src/assets/bootstrap_scss/_carousel.scss +0 -197
  147. package/src/assets/bootstrap_scss/_close.scss +0 -41
  148. package/src/assets/bootstrap_scss/_code.scss +0 -48
  149. package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
  150. package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
  151. package/src/assets/bootstrap_scss/_forms.scss +0 -352
  152. package/src/assets/bootstrap_scss/_functions.scss +0 -134
  153. package/src/assets/bootstrap_scss/_grid.scss +0 -69
  154. package/src/assets/bootstrap_scss/_images.scss +0 -42
  155. package/src/assets/bootstrap_scss/_input-group.scss +0 -191
  156. package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
  157. package/src/assets/bootstrap_scss/_list-group.scss +0 -158
  158. package/src/assets/bootstrap_scss/_media.scss +0 -8
  159. package/src/assets/bootstrap_scss/_mixins.scss +0 -47
  160. package/src/assets/bootstrap_scss/_modal.scss +0 -243
  161. package/src/assets/bootstrap_scss/_nav.scss +0 -120
  162. package/src/assets/bootstrap_scss/_navbar.scss +0 -324
  163. package/src/assets/bootstrap_scss/_pagination.scss +0 -74
  164. package/src/assets/bootstrap_scss/_popover.scss +0 -170
  165. package/src/assets/bootstrap_scss/_print.scss +0 -141
  166. package/src/assets/bootstrap_scss/_progress.scss +0 -46
  167. package/src/assets/bootstrap_scss/_reboot.scss +0 -482
  168. package/src/assets/bootstrap_scss/_root.scss +0 -20
  169. package/src/assets/bootstrap_scss/_spinners.scss +0 -55
  170. package/src/assets/bootstrap_scss/_tables.scss +0 -185
  171. package/src/assets/bootstrap_scss/_toasts.scss +0 -44
  172. package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
  173. package/src/assets/bootstrap_scss/_transitions.scss +0 -20
  174. package/src/assets/bootstrap_scss/_type.scss +0 -125
  175. package/src/assets/bootstrap_scss/_utilities.scss +0 -17
  176. package/src/assets/bootstrap_scss/_variables.scss +0 -1145
  177. package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
  178. package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
  179. package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
  180. package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
  181. package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
  182. package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
  183. package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
  184. package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
  185. package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
  186. package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
  187. package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
  188. package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
  189. package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
  190. package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
  191. package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
  192. package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
  193. package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
  194. package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
  195. package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
  196. package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
  197. package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
  198. package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
  199. package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
  200. package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
  201. package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
  202. package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
  203. package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
  204. package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
  205. package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
  206. package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
  207. package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
  208. package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
  209. package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
  210. package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
  211. package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
  212. package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
  213. package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
  214. package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
  215. package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
  216. package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
  217. package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
  218. package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
  219. package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
  220. package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
  221. package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
  222. package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
  223. package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
  224. package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
  225. package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
  226. package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
  227. package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
  228. package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
  229. package/src/shims-vuex.d.ts +0 -7
  230. package/src/views/Home.vue +0 -18
@@ -2,29 +2,23 @@
2
2
  <div class="module-box text-center-mobile share-button-page">
3
3
  <div class="d-flex align-items-center mb-3 share-button-title">
4
4
  <h3
5
- class="mb-0"
6
5
  v-if="
7
6
  !bigRound &&
8
7
  (authenticated || participantId || organisationId || notExclusive)
9
8
  "
9
+ class="mb-0"
10
10
  >
11
11
  {{ $t('Share') }}
12
12
  </h3>
13
13
  <span
14
- class="saooti-help ml-2"
15
- id="popover-share-help"
16
- :aria-label="$t('Help')"
17
14
  v-if="authenticated"
18
- ></span>
19
- <b-popover
20
- target="popover-share-help"
21
- triggers="hover"
22
- placement="right"
23
- custom-class="wizard-help"
24
- v-if="authenticated"
25
- >
26
- {{ $t('Share this page without edit and share blocks') }}
27
- </b-popover>
15
+ id="share-button-popover"
16
+ class="saooti-help ms-2 c-hand"
17
+ data-bs-toggle="popover"
18
+ data-bs-trigger="hover focus"
19
+ :aria-label="$t('Help')"
20
+ :data-bs-content="$t('Share this page without edit and share blocks')"
21
+ />
28
22
  </div>
29
23
  <div
30
24
  class="d-flex"
@@ -34,100 +28,198 @@
34
28
  ]"
35
29
  >
36
30
  <a
31
+ v-if="audioUrl"
37
32
  class="btn btn-bigRound"
38
33
  :title="$t('Downloading')"
39
34
  :href="audioUrl"
35
+ rel="noopener"
40
36
  target="_blank"
41
37
  download
42
- v-if="audioUrl"
43
38
  :aria-label="$t('Downloading')"
44
39
  >
45
- <div class="saooti-download-bounty"></div>
40
+ <div class="saooti-download-bounty" />
46
41
  </a>
47
42
  <a
43
+ rel="noopener"
48
44
  target="_blank"
49
45
  :href="facebookURL"
50
46
  :class="[
51
47
  bigRound ? 'btn btn-bigRound' : 'btn btn-facebook share-btn mb-2',
52
- verticalDisplay ? '' : 'mr-2 ml-2',
48
+ verticalDisplay ? '' : 'me-2 ms-2',
53
49
  ]"
50
+ title="Facebook"
54
51
  aria-label="Facebook"
55
52
  >
56
- <span class="saooti-facebook-bounty" v-if="!bigRound"></span>
57
- <div class="saooti-facebook-bounty" v-else></div>
53
+ <span
54
+ v-if="!bigRound"
55
+ class="saooti-facebook-bounty"
56
+ />
57
+ <div
58
+ v-else
59
+ class="saooti-facebook-bounty"
60
+ />
58
61
  </a>
59
62
  <a
63
+ rel="noopener"
60
64
  target="_blank"
61
65
  :class="[
62
66
  bigRound ? 'btn btn-bigRound' : 'btn btn-twitter share-btn mb-2',
63
- verticalDisplay ? '' : 'mr-2 ml-2',
67
+ verticalDisplay ? '' : 'me-2 ms-2',
64
68
  ]"
65
69
  :href="twitterURL"
70
+ title="Twitter"
66
71
  aria-label="Twitter"
67
72
  >
68
- <span class="saooti-twitter-bounty" v-if="!bigRound"></span>
69
- <div class="saooti-twitter-bounty" v-else></div>
73
+ <span
74
+ v-if="!bigRound"
75
+ class="saooti-twitter-bounty"
76
+ />
77
+ <div
78
+ v-else
79
+ class="saooti-twitter-bounty"
80
+ />
70
81
  </a>
71
82
  <a
83
+ rel="noopener"
72
84
  target="_blank"
73
85
  :class="[
74
86
  bigRound ? 'btn btn-bigRound' : 'btn btn-linkedin share-btn mb-2',
75
- verticalDisplay ? '' : 'mr-2 ml-2',
87
+ verticalDisplay ? '' : 'me-2 ms-2',
76
88
  ]"
77
89
  :href="linkedinURL"
90
+ title="Linkedin"
78
91
  aria-label="Linkedin"
79
92
  >
80
- <span class="saooti-linkedin1" v-if="!bigRound"></span>
81
- <div class="saooti-linkedin1" v-else></div>
93
+ <span
94
+ v-if="!bigRound"
95
+ class="saooti-linkedin1"
96
+ />
97
+ <div
98
+ v-else
99
+ class="saooti-linkedin1"
100
+ />
82
101
  </a>
83
102
  <a
103
+ v-if="''!==rssUrl"
104
+ rel="noopener"
84
105
  target="_blank"
85
106
  :class="[
86
107
  bigRound ? 'btn btn-bigRound' : 'btn btn-rss share-btn mb-2',
87
- verticalDisplay ? '' : 'mr-2 ml-2',
108
+ verticalDisplay ? '' : 'me-2 ms-2',
88
109
  ]"
89
- @click.prevent="openPopup()"
90
110
  :href="rssUrl"
91
111
  :title="$t('Subscribe to this emission')"
92
112
  aria-label="RSS"
93
- v-if="rssUrl"
113
+ @click.prevent="openPopup()"
94
114
  >
95
- <span class="saooti-rss-bounty" v-if="!bigRound"></span>
96
- <div class="saooti-rss-bounty" v-else></div>
115
+ <span
116
+ v-if="!bigRound"
117
+ class="saooti-rss-bounty"
118
+ />
119
+ <div
120
+ v-else
121
+ class="saooti-rss-bounty"
122
+ />
97
123
  </a>
98
124
  <a
125
+ rel="noopener"
99
126
  target="_blank"
100
127
  :class="[
101
128
  bigRound ? 'btn btn-bigRound' : 'btn btn-rss share-btn mb-2',
102
- verticalDisplay ? '' : 'mr-2 ml-2',
129
+ verticalDisplay ? '' : 'me-2 ms-2',
103
130
  ]"
104
131
  aria-label="copy"
105
- @click="onCopyCode(window.location.href, afterCopy)"
132
+ :title="$t('Copy this page URL')"
133
+ @click="onCopyCode(urlPage,afterCopy)"
106
134
  >
107
- <span class="saooti-link" v-if="!bigRound"></span>
108
- <div class="saooti-link" v-else></div>
135
+ <span
136
+ v-if="!bigRound"
137
+ class="saooti-link"
138
+ />
139
+ <div
140
+ v-else
141
+ class="saooti-link"
142
+ />
109
143
  </a>
110
144
  <a
111
- target="_blank"
112
145
  v-if="podcast"
146
+ rel="noopener"
147
+ target="_blank"
113
148
  :class="[
114
149
  bigRound ? 'btn btn-bigRound' : 'btn btn-rss share-btn mb-2',
115
- verticalDisplay ? '' : 'mr-2 ml-2',
150
+ verticalDisplay ? '' : 'me-2 ms-2',
116
151
  ]"
117
152
  :aria-label="$t('Share newsletter')"
153
+ :title="$t('Share newsletter')"
118
154
  @click="newsletter = true"
119
155
  >
120
- <span class="saooti-mail-bounty" v-if="!bigRound"></span>
121
- <div class="saooti-mail-bounty" v-else></div>
156
+ <span
157
+ v-if="!bigRound"
158
+ class="saooti-newsletter"
159
+ />
160
+ <div
161
+ v-else
162
+ class="saooti-newsletter"
163
+ />
164
+ </a>
165
+ <a
166
+ v-if="podcast ||emission"
167
+ rel="noopener"
168
+ target="_blank"
169
+ :class="[
170
+ bigRound ? 'btn btn-bigRound' : 'btn btn-rss share-btn mb-2',
171
+ verticalDisplay ? '' : 'me-2 ms-2',
172
+ ]"
173
+ :aria-label="$t('Share QR Code')"
174
+ :title="$t('Share QR Code')"
175
+ @click="qrCode = true"
176
+ >
177
+ <span
178
+ v-if="!bigRound"
179
+ class="saooti-qrcode"
180
+ />
181
+ <div
182
+ v-else
183
+ class="saooti-qrcode"
184
+ />
185
+ </a>
186
+ <a
187
+ v-if="isMobile"
188
+ rel="noopener"
189
+ target="_blank"
190
+ :href="whatsappURL"
191
+ :class="[
192
+ bigRound ? 'btn btn-bigRound' : 'btn btn-whatsapp share-btn mb-2',
193
+ verticalDisplay ? '' : 'me-2 ms-2',
194
+ ]"
195
+ aria-label="Whatsapp"
196
+ title="Whatsapp"
197
+ >
198
+ <span
199
+ v-if="!bigRound"
200
+ class="saooti-Whatsapp"
201
+ >
202
+ <div class="path1" />
203
+ <div class="path2" />
204
+ <div class="path3" />
205
+ </span>
206
+ <div
207
+ v-else
208
+ class="saooti-Whatsapp"
209
+ >
210
+ <div class="path1" />
211
+ <div class="path2" />
212
+ <div class="path3" />
213
+ </div>
122
214
  </a>
123
215
  </div>
124
216
  <ClipboardModal
125
217
  v-if="dataRSSSave"
126
218
  :closable="true"
127
- @close="closeModal()"
128
219
  :link="rssUrl"
129
220
  :emission="emission"
130
221
  :title="$t('RSS Link')"
222
+ @close="closeModal()"
131
223
  />
132
224
  <NewsletterModal
133
225
  v-if="newsletter"
@@ -135,75 +227,69 @@
135
227
  :podcast="podcast"
136
228
  @close="newsletter = false"
137
229
  />
138
- <Snackbar ref="snackbar" position="bottom-left"></Snackbar>
230
+ <QrCodeModal
231
+ v-if="qrCode"
232
+ :closable="true"
233
+ :podcast="podcast"
234
+ :emission="emission"
235
+ @close="qrCode = false"
236
+ />
237
+ <Snackbar
238
+ ref="snackbar"
239
+ position="bottom-left"
240
+ />
139
241
  </div>
140
242
  </template>
141
243
 
142
- <style lang="scss">
143
- .share-button-page {
144
- @media (max-width: 960px) {
145
- .flex-column {
146
- flex-direction: row !important;
147
- }
148
- .btn {
149
- margin-right: 0.5rem;
150
- }
151
- }
152
- @media (max-width: 450px) {
153
- .flex-column {
154
- flex-direction: row !important;
155
- flex-wrap: wrap;
156
- }
157
- }
158
- }
159
- .share-button-title {
160
- height: 2rem;
161
- }
162
- </style>
163
-
164
244
  <script lang="ts">
245
+ import { Emission } from '@/store/class/emission';
246
+ import { Podcast } from '@/store/class/podcast';
165
247
  import { state } from '../../../store/paramStore';
166
- import ClipboardModal from '../../misc/modal/ClipboardModal.vue';
167
- import NewsletterModal from '../../misc/modal/NewsletterModal.vue';
168
248
  import Snackbar from '../../misc/Snackbar.vue';
169
249
  import { displayMethods } from '../../mixins/functions';
170
- import { defineComponent } from 'vue'
250
+ const bootstrap = require('bootstrap/dist/js/bootstrap.esm.min.js');
251
+ import { defineComponent, defineAsyncComponent } from 'vue';
252
+ const ClipboardModal = defineAsyncComponent(() => import('../../misc/modal/ClipboardModal.vue'));
253
+ const NewsletterModal = defineAsyncComponent(() => import('../../misc/modal/NewsletterModal.vue'));
254
+ const QrCodeModal = defineAsyncComponent(() => import('../../misc/modal/QrCodeModal.vue'));
171
255
  export default defineComponent({
172
- props: [
173
- 'podcast',
174
- 'emission',
175
- 'participantId',
176
- 'organisationId',
177
- 'bigRound',
178
- 'audioUrl',
179
- 'notExclusive',
180
- ],
181
-
182
256
  components: {
183
257
  ClipboardModal,
184
258
  NewsletterModal,
259
+ QrCodeModal,
185
260
  Snackbar,
186
261
  },
187
262
 
188
263
  mixins: [displayMethods],
189
264
 
190
- mounted() {},
265
+ props: {
266
+ podcast: { default: undefined, type: Object as ()=> Podcast},
267
+ emission: { default: undefined, type: Object as ()=> Emission},
268
+ participantId: { default: undefined, type: Number},
269
+ organisationId: { default: undefined, type: String},
270
+ bigRound: { default: false, type: Boolean},
271
+ audioUrl: { default: undefined, type: String},
272
+ notExclusive: { default: true, type: Boolean},
273
+ },
191
274
 
192
275
  data() {
193
276
  return {
194
- facebookURL: `https://www.facebook.com/sharer/sharer.php?u=${window.location.href}`,
195
- twitterURL: `https://twitter.com/intent/tweet?text=${window.location.href}`,
196
- linkedinURL: `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`,
197
- dataRSSSave: false,
198
- newsletter: false,
277
+ facebookURL: `https://www.facebook.com/sharer/sharer.php?u=${window.location.href}` as string,
278
+ twitterURL: `https://twitter.com/intent/tweet?text=${window.location.href}` as string,
279
+ linkedinURL: `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}` as string,
280
+ whatsappURL: `whatsapp://send?text=${window.location.href}` as string,
281
+ dataRSSSave: false as boolean,
282
+ newsletter: false as boolean,
283
+ isMobile: false as boolean,
284
+ qrCode: false as boolean
199
285
  };
200
286
  },
201
287
 
202
288
  computed: {
203
- snackbarRef():any {
204
- return this.$refs.snackbar;
289
+ urlPage(): string{
290
+ return window.location.href;
205
291
  },
206
- verticalDisplay():boolean {
292
+ verticalDisplay(): boolean {
207
293
  return (
208
294
  !this.authenticated &&
209
295
  !this.participantId &&
@@ -211,10 +297,10 @@ export default defineComponent({
211
297
  !this.notExclusive
212
298
  );
213
299
  },
214
- authenticated():boolean {
300
+ authenticated(): boolean {
215
301
  return state.generalParameters.authenticated;
216
302
  },
217
- rssUrl():any {
303
+ rssUrl(): string {
218
304
  if (this.emission)
219
305
  return (
220
306
  state.generalParameters.ApiUri +
@@ -233,20 +319,56 @@ export default defineComponent({
233
319
  'rss/participant/' +
234
320
  this.participantId
235
321
  );
236
- return null;
322
+ return '';
237
323
  },
238
324
  },
239
325
 
326
+ created(){
327
+ this.isMobile = this.checkIfDeviceMobile();
328
+ },
329
+ mounted(){
330
+ new bootstrap.Popover(document.querySelector('#share-button-popover'),{
331
+ trigger: 'hover focus'
332
+ });
333
+ },
240
334
  methods: {
241
- openPopup() {
335
+ openPopup(): void {
242
336
  this.dataRSSSave = !this.dataRSSSave;
243
337
  },
244
- closeModal() {
338
+ closeModal(): void {
245
339
  this.dataRSSSave = false;
246
340
  },
247
- afterCopy(){
248
- this.snackbarRef.open(this.$t('Link in clipboard'));
341
+ afterCopy(): void{
342
+ (this.$refs.snackbar as any).open(this.$t('Link in clipboard'));
343
+ },
344
+ checkIfDeviceMobile(): boolean{
345
+ let check = false;
346
+ (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent);
347
+ return check;
249
348
  }
250
349
  },
251
- });
350
+ })
252
351
  </script>
352
+
353
+ <style lang="scss">
354
+ .share-button-page {
355
+ .saooti-Whatsapp{
356
+ width: 25px;
357
+ height: 25px;
358
+ }
359
+ @media (max-width: 960px) {
360
+ .flex-column {
361
+ flex-direction: row !important;
362
+ }
363
+ .btn {
364
+ margin-right: 0.5rem;
365
+ }
366
+ }
367
+ @media (max-width: 450px) {
368
+ .flex-column {
369
+ flex-direction: row !important;
370
+ flex-wrap: wrap;
371
+ }
372
+ }
373
+ }
374
+ </style>