@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
@@ -0,0 +1,343 @@
1
+ @import '../sass/_variables.scss';
2
+
3
+ .search-icon-container {
4
+ position: absolute;
5
+ top: 0;
6
+ bottom: 0;
7
+ right: 0;
8
+ display: flex;
9
+ align-items: center;
10
+ }
11
+ .share-container {
12
+ @media (max-width: 960px) {
13
+ flex-grow: 1;
14
+ }
15
+ }
16
+ .icon-caution {
17
+ margin-right: 5px;
18
+ margin-bottom: 2px;
19
+ height: 25px;
20
+ }
21
+ .flex-no-grow {
22
+ flex-grow: 0 !important;
23
+ }
24
+ .custom-radio .custom-control-label {
25
+ cursor: pointer;
26
+ }
27
+ .input-share-player {
28
+ border: 1px solid #ddd;
29
+ border-radius: 50px;
30
+ &#number-input {
31
+ margin: 0 1rem;
32
+ width: 60px;
33
+ }
34
+ }
35
+ .vue-swatches__container {
36
+ padding: 0 !important;
37
+ background-color: transparent !important;
38
+ }
39
+ .vue-swatches__swatch--selected {
40
+ border: 2px #40a372 solid !important;
41
+ box-shadow: unset !important;
42
+ -webkit-box-shadow: unset !important;
43
+ }
44
+ .vue-swatches__trigger{
45
+ border: solid 1px black;
46
+ }
47
+ .share-button-title {
48
+ height: 2rem;
49
+ }
50
+
51
+ .podcast-list {
52
+ align-self: stretch;
53
+ flex-grow: 1;
54
+ margin: 1em 0 0;
55
+ padding: 0;
56
+ /*For ie11 */
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ /* end */
60
+ display: grid; /* 1 */
61
+ grid-template-columns: repeat(auto-fill, 13rem); /* 2 */
62
+ grid-gap: 1rem; /* 3 */
63
+ justify-content: space-between; /* 4 */
64
+ }
65
+ /** PHONES*/
66
+ @media (max-width: 960px) {
67
+ .podcast-list {
68
+ align-self: auto;
69
+ justify-items: center;
70
+ display: flex;
71
+ justify-content: space-around;
72
+ }
73
+ }
74
+ .list-episode {
75
+ padding: 2rem 0rem 1rem !important;
76
+ @media (max-width: 450px) {
77
+ padding: 0.5rem 0rem 1rem !important;
78
+ }
79
+ h2 {
80
+ margin-bottom: 1rem;
81
+ }
82
+ }
83
+ .podcast-list-inline {
84
+ align-self: stretch;
85
+ flex-grow: 1;
86
+ margin: 0;
87
+ padding: 0;
88
+ display: flex;
89
+ flex-wrap: nowrap;
90
+ justify-content: space-between;
91
+ display: grid;
92
+ grid-auto-flow: column;
93
+ grid-gap: 1rem;
94
+ grid-row: 1;
95
+ }
96
+ .out-left-enter-active,
97
+ .out-left-leave-active,
98
+ .out-right-enter-active,
99
+ .out-right-leave-active {
100
+ transition: all 0.3s ease;
101
+ }
102
+
103
+ .out-left-leave-to,
104
+ .out-right-enter {
105
+ transform: translateX(-110%);
106
+ opacity: 0;
107
+ }
108
+
109
+ .out-left-enter,
110
+ .out-right-leave-to {
111
+ transform: translateX(110%);
112
+ opacity: 0;
113
+ }
114
+
115
+ .out-left-leave-to,
116
+ .out-right-leave-to {
117
+ position: absolute;
118
+ }
119
+ .out-right-leave-to {
120
+ right: 5rem;
121
+ z-index: -1;
122
+ }
123
+ /** PHONES*/
124
+ @media (max-width: 960px) {
125
+ .podcast-list-inline {
126
+ display: flex;
127
+ flex-wrap: nowrap;
128
+ overflow-y: scroll;
129
+ -webkit-overflow-scrolling: touch;
130
+ scroll-behavior: smooth;
131
+ padding-bottom: 1rem;
132
+ width: 100%;
133
+ .item-phone-margin {
134
+ margin: 0 0.5rem !important;
135
+ }
136
+ }
137
+ }
138
+
139
+ .arrow-transform {
140
+ transform: rotate(180deg);
141
+ }
142
+ .no-border-round {
143
+ border-radius: 0;
144
+ }
145
+ .text-ellipsis {
146
+ white-space: nowrap;
147
+ overflow: hidden;
148
+ text-overflow: ellipsis;
149
+ }
150
+ .emission-list {
151
+ align-self: stretch;
152
+ flex-grow: 1;
153
+ margin: 0;
154
+ padding: 0;
155
+ /*For ie11 */
156
+ display: flex;
157
+ flex-wrap: wrap;
158
+ /* end */
159
+
160
+ display: grid; /* 1 */
161
+ grid-gap: 1rem; /* 3 */
162
+ justify-content: space-between; /* 4 */
163
+ }
164
+ .twoEmissions {
165
+ grid-template-columns: repeat(auto-fill, 49%); /* 2 */
166
+ }
167
+
168
+ .threeEmissions {
169
+ grid-template-columns: repeat(auto-fill, 32%); /* 2 */
170
+ }
171
+
172
+ /** PHONES*/
173
+ @media (max-width: 1200px) {
174
+ .emission-list {
175
+ grid-template-columns: auto;
176
+ }
177
+ }
178
+ .emission-item-container {
179
+ list-style: none;
180
+ background: #fff;
181
+ border-radius: 2rem;
182
+ display: flex;
183
+ width: 100%;
184
+ margin: 1rem 0;
185
+ .img-box {
186
+ border-radius: 2rem !important;
187
+ }
188
+ }
189
+ .emission-light-max-size {
190
+ width: 300px;
191
+ border-bottom: 1px solid #ddd;
192
+ }
193
+ .emission-light-title {
194
+ color: #333 !important;
195
+ align-self: flex-end;
196
+ text-transform: none;
197
+ font-size: 1.5em;
198
+ font-weight: normal;
199
+ white-space: nowrap;
200
+ overflow: hidden;
201
+ text-overflow: ellipsis;
202
+ }
203
+
204
+ .emission-item-text {
205
+ padding: 1rem;
206
+ display: flex;
207
+ flex-direction: column;
208
+ max-height: 13rem;
209
+
210
+ .emission-name {
211
+ font-size: 0.9rem;
212
+ font-weight: 600;
213
+ overflow: hidden;
214
+ display: -webkit-box;
215
+ -webkit-line-clamp: 2;
216
+ -webkit-box-orient: vertical;
217
+ word-break: break-word;
218
+ }
219
+
220
+ .emission-description {
221
+ overflow: hidden;
222
+ margin-top: 0.5em;
223
+ word-break: break-word;
224
+ max-height: 7rem;
225
+ position: relative;
226
+ &.after-emission-description:after {
227
+ content: '...';
228
+ position: absolute;
229
+ padding-left: 1rem;
230
+ right: 0;
231
+ bottom: 0;
232
+ width: 100%;
233
+ font-size: 1rem;
234
+ font-weight: bolder;
235
+ text-align: center;
236
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 40%);
237
+ }
238
+ }
239
+
240
+ .emission-small-description {
241
+ -webkit-line-clamp: 2;
242
+ border-top: 1px solid #ddd;
243
+ word-break: break-word;
244
+ }
245
+
246
+ .emission-producer {
247
+ font-weight: 300;
248
+ font-size: 0.6rem;
249
+ }
250
+ }
251
+
252
+ button.btn.btn-primary.share-btn.m-3 {
253
+ font-size: 1rem;
254
+ width: 2.5rem;
255
+ height: 2.5rem !important;
256
+ margin: 0 0.8rem 0 0 !important;
257
+ }
258
+ /** PHONES*/
259
+ @media (max-width: 680px) {
260
+ .emission-item-container {
261
+ flex-wrap: wrap;
262
+ width: auto;
263
+ margin: 0;
264
+ padding: 1rem;
265
+ justify-content: center;
266
+ }
267
+ }
268
+
269
+ @media (max-width: 450px) {
270
+ .emission-item-text {
271
+ padding: 0.5rem 0;
272
+ text-align: center;
273
+ }
274
+ }
275
+
276
+ .comment-item-container {
277
+ .btn-circle {
278
+ width: 32px;
279
+ height: 32px;
280
+ background: $octopus-secondary-color;
281
+ padding: 0;
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ }
286
+ .status-Pending {
287
+ background: #eb7d22;
288
+ }
289
+ .status-Invalid {
290
+ background: #d40303;
291
+ }
292
+ .status-Valid {
293
+ background: $octopus-primary-color;
294
+ }
295
+
296
+ .status-Valid, .status-Invalid, .status-Pending {
297
+ width: 14px;
298
+ height: 14px;
299
+ border-radius: 50%;
300
+ }
301
+ .icon-certified {
302
+ height: 15px;
303
+ margin-right: 0.5rem;
304
+ }
305
+ .btn-answer {
306
+ padding: 0.1rem 0.75rem;
307
+ }
308
+ .collapsed > .when-opened,
309
+ :not(.collapsed) > .when-closed {
310
+ display: none !important;
311
+ }
312
+ }
313
+ .live-image-status {
314
+ text-align: center;
315
+ width: 100%;
316
+ font-size: 0.6rem;
317
+ padding: 0.2rem 0;
318
+ color: white;
319
+ text-transform: uppercase;
320
+ }
321
+
322
+ .saooti-stitcher-logo,
323
+ .saooti-google-podcasts,
324
+ .saooti-amazon,
325
+ .saooti-Whatsapp {
326
+ position: relative;
327
+ div {
328
+ position: absolute;
329
+ right: 0;
330
+ }
331
+ }
332
+ .saooti-stitcher-logo,.saooti-amazon {
333
+ font-size: 1.7rem !important;
334
+ div {
335
+ top: -7px;
336
+ }
337
+ }
338
+ .share-btn{
339
+ .saooti-stitcher-logo, .saooti-amazon {
340
+ top: -0.5rem;
341
+ left: 0.8rem;
342
+ }
343
+ }
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <div></div>
2
+ <div />
3
3
  </template>
4
4
 
5
- <style lang="scss"></style>
6
-
7
5
  <script lang="ts">
8
6
  import { defineComponent } from 'vue'
9
- export default defineComponent({});
7
+ export default defineComponent({})
10
8
  </script>
9
+
10
+ <style lang="scss"></style>
@@ -1,14 +1,21 @@
1
1
  <template>
2
- <div class="w-100" :style="{ width: width }">
3
- <label :for="id" class="d-inline" aria-label="select category"></label>
4
- <Multiselect
5
- v-model="category"
6
- :disabled="isDisabled"
2
+ <div
3
+ class="default-multiselect-width"
4
+ :style="{ width: width }"
5
+ >
6
+ <label
7
+ :for="id"
8
+ class="d-inline"
9
+ aria-label="select category"
10
+ />
11
+ <VueMultiselect
7
12
  :id="id"
13
+ ref="multiselectRef"
14
+ v-model="model"
15
+ :disabled="isDisabled"
8
16
  label="name"
9
17
  track-by="id"
10
18
  :placeholder="$t('Type string to filter by categories')"
11
- ref="multiselectRef"
12
19
  :options="categories"
13
20
  :multiple="multiple"
14
21
  :searchable="true"
@@ -24,110 +31,148 @@
24
31
  @open="clearAll"
25
32
  @search-change="onSearchCategory"
26
33
  @close="onClose"
27
- @select="onEmissionSelected"
34
+ @select="onCategorySelected"
28
35
  >
29
- <template v-slot:singleLabel="props" >
36
+ <template #singleLabel="{ option }">
30
37
  <div class="multiselect-octopus-proposition">
31
38
  <span class="option__title">
32
- {{ props.option.name }}
39
+ {{ option.name }}
33
40
  </span>
34
41
  </div>
35
42
  </template>
36
- <template v-slot:option="props" >
43
+ <template #option="{ option }">
37
44
  <div class="multiselect-octopus-proposition">
38
- <span class="option__title">{{ props.option.name }}</span>
45
+ <span class="option__title">{{ option.name }}</span>
39
46
  </div>
40
47
  </template>
41
- <template v-slot:noOptions>{{ $t('List is empty') }}</template>
42
- <template v-slot:noResult>
43
- <span>
44
- {{ $t('No elements found. Consider changing the search query.') }}
45
- </span>
48
+ <template #noOptions="">
49
+ {{ $t('List is empty') }}
46
50
  </template>
47
- <template v-slot:caret>
48
- <div class="position-relative">
49
- <span
50
- class="saooti-arrow_down octopus-arrow-down-2 octopus-arrow-down-top"
51
- ></span>
52
- </div>
51
+ <template #noResult="">
52
+ <span>
53
+ {{ $t('No elements found. Consider changing the search query.') }}
54
+ </span>
53
55
  </template>
54
- </Multiselect>
56
+ <template #caret="">
57
+ <div class="position-relative">
58
+ <span
59
+ class="saooti-arrow_down octopus-arrow-down-2 octopus-arrow-down-top"
60
+ />
61
+ </div>
62
+ </template>
63
+ </VueMultiselect>
55
64
  </div>
56
65
  </template>
57
66
 
58
- <style lang="scss"></style>
59
67
  <script lang="ts">
60
- import Multiselect from 'vue-multiselect';
61
- import { state } from '../../../store/paramStore';
68
+ //@ts-ignore
69
+ import VueMultiselect from 'vue-multiselect';
62
70
 
63
- const getDefaultCategory = (defaultName: any) => {
64
- if (undefined !== defaultName) return { name: defaultName, id: 0 };
65
- return '';
71
+ const getDefaultCategory = (defaultName: string) => {
72
+ if ('' === defaultName){
73
+ return undefined;
74
+ }
75
+ return { name: defaultName, id: 0 };
66
76
  };
67
77
 
68
- import { defineComponent, ref } from 'vue'
78
+ import { Category } from '@/store/class/category';
79
+ import { defineComponent } from 'vue'
69
80
  export default defineComponent({
70
81
  components: {
71
- Multiselect,
82
+ VueMultiselect
72
83
  },
73
-
74
84
  props: {
75
- width: { default: '100%' },
76
- defaultanswer: { default: undefined as any },
77
- categorySelected: { default: undefined as any },
78
- multiple: { default: false },
79
- categoryArray: { default: undefined as any },
80
- displayAllCategories: { default: false },
81
- isDisabled: { default: false },
85
+ width: { default: '100%', type: String },
86
+ defaultanswer: { default: '', type: String },
87
+ categorySelected: { default: undefined, type: Number },
88
+ multiple: { default: false, type: Boolean },
89
+ categoryArray: { default: undefined, type: Array as ()=>Array<number> },
90
+ displayAllCategories: { default: false, type: Boolean },
91
+ isDisabled: { default: false, type: Boolean },
92
+ initCategories: { default: undefined, type: Array as ()=>Array<Category> },
93
+ },
94
+ emits: ['update:categorySelected','selected'],
95
+ data() {
96
+ return {
97
+ categories: [] as Array<Category>,
98
+ category: getDefaultCategory(this.defaultanswer) as Category|undefined,
99
+ categoryForArray: [getDefaultCategory(this.defaultanswer)] as Array<Category>|undefined,
100
+ isLoading: false as boolean,
101
+ totalCategories: [] as Array<Category>,
102
+ init: true as boolean,
103
+ initArray: false as boolean,
104
+ };
82
105
  },
83
- emits: ['update:categorySelected', 'selected'],
106
+
84
107
 
85
108
  computed: {
86
- allCategories() {
87
- return state.generalParameters.allCategories.sort((a:any, b:any) =>
109
+ categoriesChosen(): Array<Category>{
110
+ if(this.initCategories){
111
+ return this.initCategories;
112
+ }
113
+ return this.$store.state.categories;
114
+ },
115
+ allCategories(): Array<Category> {
116
+ return [...this.categoriesChosen].sort((a: Category, b: Category) =>
88
117
  a.name > b.name ? 1 : -1
89
118
  );
90
119
  },
91
- id():string {
120
+ id(): string {
92
121
  if (this.multiple) return 'categoryChooser' + this.multiple;
93
122
  return 'categoryChooser';
94
123
  },
95
- },
124
+ model: {
125
+ get(): Category| Array<Category>|undefined{
126
+ if(false===this.initArray){
127
+ return this.category;
128
+ }
129
+ return this.categoryForArray;
130
+ },
131
+ set(value: any): void{
132
+ if(false===this.initArray){
133
+ this.category = value;
134
+ return
135
+ }
136
+ this.categoryForArray = value;
137
+ }
96
138
 
97
- data() {
98
- return {
99
- categories: [] as any,
100
- category: getDefaultCategory(this.defaultanswer) as any,
101
- isLoading: false,
102
- totalCategories: undefined as any,
103
- init: true,
104
- };
139
+ }
105
140
  },
106
-
107
- setup() {
108
- const multiselect : any = ref(null);
109
- return {
110
- multiselect,
111
- };
141
+ watch: {
142
+ categorySelected(): void {
143
+ if(this.categorySelected){
144
+ this.initCategorySelected(this.categorySelected);
145
+ }
146
+ },
147
+ model(): void {
148
+ if(undefined===this.categoryArray ||undefined === this.categoryForArray){
149
+ return;
150
+ }
151
+ const idsArray: Array<number> = [];
152
+ this.categoryForArray.forEach((el: Category) => {
153
+ idsArray.push(el.id);
154
+ });
155
+ this.$emit('selected', idsArray);
156
+ },
112
157
  },
113
-
158
+
114
159
  mounted() {
115
160
  if (undefined !== this.categorySelected) {
116
161
  this.initCategorySelected(this.categorySelected);
117
162
  }
118
163
  if (undefined !== this.categoryArray) {
119
164
  this.initCategoryArray(this.categoryArray);
165
+ this.initArray=true;
120
166
  }
121
167
  },
122
-
123
168
  methods: {
124
- clearAll() {
125
- this.multiselect.$refs.search.setAttribute(
169
+ clearAll(): void {
170
+ (this.$refs.multiselectRef as any).$refs.search.setAttribute(
126
171
  'autocomplete',
127
172
  'off'
128
173
  );
129
174
  if (undefined === this.categoryArray) {
130
- this.category = '';
175
+ this.category = undefined;
131
176
  }
132
177
  if (
133
178
  undefined !== this.categorySelected ||
@@ -136,75 +181,77 @@ export default defineComponent({
136
181
  ) {
137
182
  this.totalCategories = this.allCategories;
138
183
  } else {
139
- this.totalCategories = this.allCategories.filter((c: { podcastCount: any; }) => {
184
+ this.totalCategories = this.allCategories.filter((c: Category) => {
140
185
  return c.podcastCount;
141
186
  });
142
187
  }
143
- if (undefined !== this.defaultanswer) {
144
- this.categories = [getDefaultCategory(this.defaultanswer)].concat(
145
- this.totalCategories
146
- );
188
+ if ('' !== this.defaultanswer) {
189
+ const categoryDefault = getDefaultCategory(this.defaultanswer);
190
+ if(categoryDefault){
191
+ this.categories = [categoryDefault].concat(
192
+ this.totalCategories
193
+ );
194
+ }
147
195
  } else {
148
196
  this.categories = this.totalCategories;
149
197
  }
150
198
  },
151
-
152
- onClose() {
199
+ onClose(): void {
153
200
  if (!this.category && undefined === this.categoryArray) {
154
201
  this.category = getDefaultCategory(this.defaultanswer);
155
- this.onEmissionSelected(this.category);
202
+ if(this.category){
203
+ this.onCategorySelected(this.category);
204
+ }
156
205
  }
157
206
  },
158
-
159
- onSearchCategory(query: string) {
207
+ onSearchCategory(query: string): void {
160
208
  this.isLoading = true;
161
- let list = [getDefaultCategory(this.defaultanswer)].concat(
162
- this.totalCategories
163
- );
164
- if (undefined === this.defaultanswer) {
165
- list = this.totalCategories;
209
+ const categoryDefault = getDefaultCategory(this.defaultanswer);
210
+ if(categoryDefault){
211
+ let list: Array<Category> = [categoryDefault].concat(
212
+ this.totalCategories
213
+ );
214
+ if ('' === this.defaultanswer) {
215
+ list = this.totalCategories;
216
+ }
217
+ this.categories = list.filter((item: Category) => {
218
+ return item.name.toUpperCase().includes(query.toUpperCase());
219
+ });
166
220
  }
167
- this.categories = list.filter((item:any) => {
168
- return item.name.toUpperCase().includes(query.toUpperCase());
169
- });
170
221
  this.isLoading = false;
171
222
  },
172
-
173
- onEmissionSelected(category: any) {
223
+ onCategorySelected(category: Category): void {
174
224
  if (undefined !== this.categorySelected) {
175
225
  this.$emit('update:categorySelected', category.id);
176
226
  } else if (undefined === this.categoryArray) {
177
227
  this.$emit('selected', category);
178
228
  }
179
229
  },
180
- initCategorySelected(val: any) {
181
- this.category = state.generalParameters.allCategories.find((el: { id: any; }) => {
230
+ initCategorySelected(val: number): void {
231
+ let categorySelected = this.categoriesChosen.find((el: Category) => {
182
232
  return el.id === val;
183
233
  });
234
+ if(!categorySelected){
235
+ categorySelected = getDefaultCategory(this.defaultanswer);
236
+ }
237
+ this.category = categorySelected;
184
238
  },
185
- initCategoryArray(val: any[]) {
186
- this.category.length = 0;
187
- val.forEach((element: any) => {
188
- let item = state.generalParameters.allCategories.find((el: { id: any; }) => {
239
+ initCategoryArray(val: Array<number>): void {
240
+ if(!this.categoryForArray){
241
+ return;
242
+ }
243
+ this.categoryForArray.length = 0;
244
+ val.forEach((element: number) => {
245
+ const item = this.categoriesChosen.find((el: Category) => {
189
246
  return el.id === element;
190
247
  });
191
- this.category.push(item);
248
+ if(this.categoryForArray && item){
249
+ this.categoryForArray.push(item);
250
+ }
192
251
  });
193
252
  },
194
253
  },
195
- watch: {
196
- categorySelected(newVal) {
197
- this.initCategorySelected(newVal);
198
- },
199
- category(newVal) {
200
- if (undefined === this.categoryArray) return;
201
-
202
- let idsArray: any[] = [];
203
- newVal.forEach((el: { id: any; }) => {
204
- idsArray.push(el.id);
205
- });
206
- this.$emit('selected', idsArray);
207
- },
208
- },
209
- });
254
+ })
210
255
  </script>
256
+
257
+ <style lang="scss"></style>