@saooti/octopus-sdk 30.0.5 → 30.0.9
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/README.md +5 -0
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +17 -25
- package/src/assets/form.scss +7 -52
- package/src/assets/general.scss +56 -170
- package/src/assets/live.scss +39 -0
- package/src/assets/modal.scss +14 -18
- package/src/assets/multiselect.scss +30 -77
- package/src/assets/octopus-library.scss +1 -0
- package/src/assets/share.scss +149 -267
- package/src/assets/transition.scss +95 -1
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryList.vue +2 -4
- package/src/components/display/comments/CommentInput.vue +2 -2
- package/src/components/display/comments/CommentItem.vue +7 -6
- package/src/components/display/comments/CommentParentInfo.vue +1 -1
- package/src/components/display/comments/CommentPlayer.vue +1 -1
- package/src/components/display/edit/EditCommentBox.vue +8 -16
- package/src/components/display/emission/EmissionChooser.vue +1 -3
- package/src/components/display/emission/EmissionInlineList.vue +12 -3
- package/src/components/display/emission/EmissionItem.vue +22 -64
- package/src/components/display/emission/EmissionList.vue +59 -68
- package/src/components/display/emission/EmissionPlayerItem.vue +10 -9
- package/src/components/display/filter/AdvancedSearch.vue +50 -150
- package/src/components/display/filter/CategoryFilter.vue +9 -13
- package/src/components/display/filter/MonetizableFilter.vue +3 -5
- package/src/components/display/filter/ProductorSearch.vue +20 -40
- package/src/components/display/filter/RubriqueChoice.vue +6 -8
- package/src/components/display/filter/RubriqueFilter.vue +8 -13
- package/src/components/display/live/CountDown.vue +4 -2
- package/src/components/display/live/LiveHorizontalList.vue +1 -1
- package/src/components/display/live/LiveItem.vue +4 -4
- package/src/components/display/live/LiveList.vue +84 -214
- package/src/components/display/organisation/OrganisationChooser.vue +5 -23
- package/src/components/display/organisation/OrganisationChooserLight.vue +8 -2
- package/src/components/display/participant/ParticipantItem.vue +7 -19
- package/src/components/display/participant/ParticipantList.vue +39 -52
- package/src/components/display/playlist/PlaylistItem.vue +2 -2
- package/src/components/display/playlist/PlaylistList.vue +8 -14
- package/src/components/display/playlist/PodcastList.vue +21 -40
- package/src/components/display/podcasts/AnimatorsItem.vue +0 -1
- package/src/components/display/podcasts/ParticipantDescription.vue +5 -16
- package/src/components/display/podcasts/PodcastFilterList.vue +20 -63
- package/src/components/display/podcasts/PodcastImage.vue +27 -84
- package/src/components/display/podcasts/PodcastInlineList.vue +14 -36
- package/src/components/display/podcasts/PodcastItem.vue +5 -5
- package/src/components/display/podcasts/PodcastList.vue +7 -14
- package/src/components/display/podcasts/PodcastModuleBox.vue +9 -28
- package/src/components/display/podcasts/TagList.vue +2 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
- package/src/components/display/rubriques/RubriqueList.vue +5 -25
- package/src/components/display/sharing/PlayerParameters.vue +30 -71
- package/src/components/display/sharing/ShareButtons.vue +22 -46
- package/src/components/display/sharing/ShareDistribution.vue +1 -7
- package/src/components/display/sharing/SharePlayer.vue +10 -19
- package/src/components/display/sharing/SharePlayerColors.vue +4 -8
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
- package/src/components/display/sharing/SubscribeButtons.vue +2 -4
- package/src/components/form/ClassicCheckbox.vue +61 -0
- package/src/components/form/ClassicLoading.vue +28 -0
- package/src/components/form/ClassicRadio.vue +61 -0
- package/src/components/form/ClassicSearch.vue +82 -0
- package/src/components/misc/ErrorMessage.vue +4 -1
- package/src/components/misc/Footer.vue +26 -35
- package/src/components/misc/HomeDropdown.vue +42 -91
- package/src/components/misc/LeftMenu.vue +108 -141
- package/src/components/misc/Player.vue +15 -29
- package/src/components/misc/PlayerButtons.vue +14 -37
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +15 -50
- package/src/components/misc/Popover.vue +8 -2
- package/src/components/misc/TopBar.vue +140 -222
- package/src/components/misc/modal/NewsletterModal.vue +13 -27
- package/src/components/pages/Category.vue +3 -8
- package/src/components/pages/Emission.vue +12 -24
- package/src/components/pages/Emissions.vue +8 -17
- package/src/components/pages/Home.vue +1 -3
- package/src/components/pages/Lives.vue +1 -4
- package/src/components/pages/Participant.vue +19 -27
- package/src/components/pages/Participants.vue +7 -15
- package/src/components/pages/Playlist.vue +16 -29
- package/src/components/pages/Playlists.vue +1 -11
- package/src/components/pages/Podcast.vue +16 -30
- package/src/components/pages/Podcasts.vue +9 -23
- package/src/components/pages/Search.vue +26 -64
- package/src/sass/_variables.scss +0 -1
- package/src/store/class/general/media.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="module-box text-center-mobile
|
|
3
|
-
<div class="d-flex align-items-center mb-3
|
|
2
|
+
<div class="module-box text-center-mobile">
|
|
3
|
+
<div class="d-flex align-items-center mb-3">
|
|
4
4
|
<h3
|
|
5
5
|
v-if="
|
|
6
6
|
!bigRound &&
|
|
@@ -13,14 +13,13 @@
|
|
|
13
13
|
<span
|
|
14
14
|
v-if="authenticated"
|
|
15
15
|
id="popover-share-help"
|
|
16
|
-
|
|
17
|
-
class="saooti-help
|
|
16
|
+
tabindex="-1"
|
|
17
|
+
class="saooti-help ms-2"
|
|
18
18
|
:aria-label="$t('Help')"
|
|
19
19
|
/>
|
|
20
20
|
<Popover
|
|
21
21
|
v-if="authenticated"
|
|
22
22
|
target="popover-share-help"
|
|
23
|
-
triggers="hover"
|
|
24
23
|
placement="right"
|
|
25
24
|
>
|
|
26
25
|
{{ $t('Share this page without edit and share blocks') }}
|
|
@@ -30,12 +29,12 @@
|
|
|
30
29
|
class="d-flex"
|
|
31
30
|
:class="[
|
|
32
31
|
bigRound && !audioUrl ? 'justify-content-center' : '',
|
|
33
|
-
verticalDisplay ? 'flex-
|
|
32
|
+
verticalDisplay ? 'd-flex-row' : '',
|
|
34
33
|
]"
|
|
35
34
|
>
|
|
36
35
|
<a
|
|
37
36
|
v-if="audioUrl"
|
|
38
|
-
class="btn btn-
|
|
37
|
+
class="btn btn-big-round"
|
|
39
38
|
:title="$t('Downloading')"
|
|
40
39
|
:href="audioUrl"
|
|
41
40
|
rel="noopener"
|
|
@@ -50,8 +49,8 @@
|
|
|
50
49
|
target="_blank"
|
|
51
50
|
:href="facebookURL"
|
|
52
51
|
:class="[
|
|
53
|
-
bigRound ? 'btn btn-
|
|
54
|
-
verticalDisplay ? '' : '
|
|
52
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-facebook share-btn mb-2',
|
|
53
|
+
verticalDisplay ? '' : 'mx-2',
|
|
55
54
|
]"
|
|
56
55
|
title="Facebook"
|
|
57
56
|
aria-label="Facebook"
|
|
@@ -69,8 +68,8 @@
|
|
|
69
68
|
rel="noopener"
|
|
70
69
|
target="_blank"
|
|
71
70
|
:class="[
|
|
72
|
-
bigRound ? 'btn btn-
|
|
73
|
-
verticalDisplay ? '' : '
|
|
71
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-twitter share-btn mb-2',
|
|
72
|
+
verticalDisplay ? '' : 'mx-2',
|
|
74
73
|
]"
|
|
75
74
|
:href="twitterURL"
|
|
76
75
|
title="Twitter"
|
|
@@ -89,8 +88,8 @@
|
|
|
89
88
|
rel="noopener"
|
|
90
89
|
target="_blank"
|
|
91
90
|
:class="[
|
|
92
|
-
bigRound ? 'btn btn-
|
|
93
|
-
verticalDisplay ? '' : '
|
|
91
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-linkedin share-btn mb-2',
|
|
92
|
+
verticalDisplay ? '' : 'mx-2',
|
|
94
93
|
]"
|
|
95
94
|
:href="linkedinURL"
|
|
96
95
|
title="Linkedin"
|
|
@@ -110,8 +109,8 @@
|
|
|
110
109
|
rel="noopener"
|
|
111
110
|
target="_blank"
|
|
112
111
|
:class="[
|
|
113
|
-
bigRound ? 'btn btn-
|
|
114
|
-
verticalDisplay ? '' : '
|
|
112
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-rss share-btn mb-2',
|
|
113
|
+
verticalDisplay ? '' : 'mx-2',
|
|
115
114
|
]"
|
|
116
115
|
:href="rssUrl"
|
|
117
116
|
:title="$t('Subscribe to this emission')"
|
|
@@ -131,8 +130,8 @@
|
|
|
131
130
|
rel="noopener"
|
|
132
131
|
target="_blank"
|
|
133
132
|
:class="[
|
|
134
|
-
bigRound ? 'btn btn-
|
|
135
|
-
verticalDisplay ? '' : '
|
|
133
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-rss share-btn mb-2',
|
|
134
|
+
verticalDisplay ? '' : 'mx-2',
|
|
136
135
|
]"
|
|
137
136
|
aria-label="copy"
|
|
138
137
|
:title="$t('Copy this page URL')"
|
|
@@ -152,8 +151,8 @@
|
|
|
152
151
|
rel="noopener"
|
|
153
152
|
target="_blank"
|
|
154
153
|
:class="[
|
|
155
|
-
bigRound ? 'btn btn-
|
|
156
|
-
verticalDisplay ? '' : '
|
|
154
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-rss share-btn mb-2',
|
|
155
|
+
verticalDisplay ? '' : 'mx-2',
|
|
157
156
|
]"
|
|
158
157
|
:aria-label="$t('Share newsletter')"
|
|
159
158
|
:title="$t('Share newsletter')"
|
|
@@ -173,8 +172,8 @@
|
|
|
173
172
|
rel="noopener"
|
|
174
173
|
target="_blank"
|
|
175
174
|
:class="[
|
|
176
|
-
bigRound ? 'btn btn-
|
|
177
|
-
verticalDisplay ? '' : '
|
|
175
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-rss share-btn mb-2',
|
|
176
|
+
verticalDisplay ? '' : 'mx-2',
|
|
178
177
|
]"
|
|
179
178
|
:aria-label="$t('Share QR Code')"
|
|
180
179
|
:title="$t('Share QR Code')"
|
|
@@ -195,8 +194,8 @@
|
|
|
195
194
|
target="_blank"
|
|
196
195
|
:href="whatsappURL"
|
|
197
196
|
:class="[
|
|
198
|
-
bigRound ? 'btn btn-
|
|
199
|
-
verticalDisplay ? '' : '
|
|
197
|
+
bigRound ? 'btn btn-big-round' : 'btn btn-whatsapp share-btn mb-2',
|
|
198
|
+
verticalDisplay ? '' : 'mx-2',
|
|
200
199
|
]"
|
|
201
200
|
aria-label="Whatsapp"
|
|
202
201
|
title="Whatsapp"
|
|
@@ -348,26 +347,3 @@ export default defineComponent({
|
|
|
348
347
|
},
|
|
349
348
|
})
|
|
350
349
|
</script>
|
|
351
|
-
|
|
352
|
-
<style lang="scss">
|
|
353
|
-
.share-button-page {
|
|
354
|
-
.saooti-Whatsapp{
|
|
355
|
-
width: 25px;
|
|
356
|
-
height: 25px;
|
|
357
|
-
}
|
|
358
|
-
@media (max-width: 960px) {
|
|
359
|
-
.flex-column {
|
|
360
|
-
flex-direction: row !important;
|
|
361
|
-
}
|
|
362
|
-
.btn {
|
|
363
|
-
margin-right: 0.5rem;
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
@media (max-width: 450px) {
|
|
367
|
-
.flex-column {
|
|
368
|
-
flex-direction: row !important;
|
|
369
|
-
flex-wrap: wrap;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
</style>
|
|
@@ -131,7 +131,6 @@ export default defineComponent({
|
|
|
131
131
|
data() {
|
|
132
132
|
return {
|
|
133
133
|
emission: undefined as Emission|undefined,
|
|
134
|
-
error: false as boolean,
|
|
135
134
|
rss: '' as string,
|
|
136
135
|
};
|
|
137
136
|
},
|
|
@@ -143,12 +142,7 @@ export default defineComponent({
|
|
|
143
142
|
|
|
144
143
|
methods: {
|
|
145
144
|
async getEmissionDetails(): Promise<void> {
|
|
146
|
-
|
|
147
|
-
const data = await octopusApi.fetchEmission(this.emissionId);
|
|
148
|
-
this.emission = data;
|
|
149
|
-
} catch {
|
|
150
|
-
this.error = true;
|
|
151
|
-
}
|
|
145
|
+
this.emission = await octopusApi.fetchEmission(this.emissionId);
|
|
152
146
|
},
|
|
153
147
|
getRSS(): void {
|
|
154
148
|
if (!this.$props.emissionId || this.$props.emissionId <= 0) return;
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
frameborder="0"
|
|
19
19
|
:width="iFrameWidth"
|
|
20
20
|
:height="iFrameHeight"
|
|
21
|
-
class="
|
|
21
|
+
class="max-iframe"
|
|
22
22
|
/>
|
|
23
23
|
<div class="d-flex flex-column">
|
|
24
24
|
<button
|
|
@@ -40,23 +40,12 @@
|
|
|
40
40
|
v-model:color="color"
|
|
41
41
|
v-model:theme="theme"
|
|
42
42
|
/>
|
|
43
|
-
<
|
|
43
|
+
<ClassicCheckbox
|
|
44
44
|
v-if="isPodcastNotVisible || playlist"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
id="isVisibleCheckbox"
|
|
50
|
-
v-model="isVisible"
|
|
51
|
-
type="checkbox"
|
|
52
|
-
class="form-check-input"
|
|
53
|
-
>
|
|
54
|
-
<label
|
|
55
|
-
class="form-check-label me-2"
|
|
56
|
-
for="isVisibleCheckbox"
|
|
57
|
-
>{{ titleStillAvailable }}</label>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
45
|
+
v-model:textInit="isVisible"
|
|
46
|
+
id-checkbox="is-visible-checkbox"
|
|
47
|
+
:label="titleStillAvailable"
|
|
48
|
+
/>
|
|
60
49
|
</div>
|
|
61
50
|
<PlayerParameters
|
|
62
51
|
v-if="isPlayerParameter"
|
|
@@ -99,12 +88,14 @@ const ShareModalPlayer = defineAsyncComponent(() => import('../../misc/modal/Sha
|
|
|
99
88
|
const PlayerParameters = defineAsyncComponent(() => import('./PlayerParameters.vue'));
|
|
100
89
|
const SharePlayerTypes = defineAsyncComponent(() => import('./SharePlayerTypes.vue'));
|
|
101
90
|
const SharePlayerColors = defineAsyncComponent(() => import('./SharePlayerColors.vue'));
|
|
91
|
+
const ClassicCheckbox = defineAsyncComponent(() => import('../../form/ClassicCheckbox.vue'));
|
|
102
92
|
export default defineComponent({
|
|
103
93
|
components: {
|
|
104
94
|
ShareModalPlayer,
|
|
105
95
|
SharePlayerColors,
|
|
106
96
|
PlayerParameters,
|
|
107
|
-
SharePlayerTypes
|
|
97
|
+
SharePlayerTypes,
|
|
98
|
+
ClassicCheckbox
|
|
108
99
|
},
|
|
109
100
|
|
|
110
101
|
props: {
|
|
@@ -388,7 +379,7 @@ export default defineComponent({
|
|
|
388
379
|
box-shadow: 2px 8px 4px -6px hsla(0, 0%, 0%, 0.3);
|
|
389
380
|
}
|
|
390
381
|
}
|
|
391
|
-
.
|
|
382
|
+
.max-iframe {
|
|
392
383
|
max-width: 300px;
|
|
393
384
|
}
|
|
394
385
|
</style>
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="d-flex justify-content-around mt-3
|
|
3
|
-
<div class="d-flex flex-column align-items-center flex-shrink me-3">
|
|
4
|
-
<div
|
|
5
|
-
{{ $t('Choose color') }}
|
|
6
|
-
</div>
|
|
2
|
+
<div class="d-flex justify-content-around mt-3 w-100">
|
|
3
|
+
<div class="d-flex flex-column align-items-center flex-shrink-0 me-3">
|
|
4
|
+
<div>{{ $t('Choose color') }}</div>
|
|
7
5
|
<VSwatches
|
|
8
6
|
v-model="internColor"
|
|
9
7
|
class="c-hand input-no-outline"
|
|
@@ -14,9 +12,7 @@
|
|
|
14
12
|
/>
|
|
15
13
|
</div>
|
|
16
14
|
<div class="d-flex flex-column align-items-center">
|
|
17
|
-
<div
|
|
18
|
-
{{ $t('Choose theme') }}
|
|
19
|
-
</div>
|
|
15
|
+
<div>{{ $t('Choose theme') }}</div>
|
|
20
16
|
<VSwatches
|
|
21
17
|
v-model="internTheme"
|
|
22
18
|
class="c-hand input-no-outline"
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
<div class="d-flex flex-column">
|
|
3
3
|
<label
|
|
4
4
|
for="iframe-select"
|
|
5
|
-
class="d-inline"
|
|
6
5
|
aria-label="select miniplayer"
|
|
7
6
|
/>
|
|
8
7
|
<select
|
|
9
8
|
id="iframe-select"
|
|
10
9
|
:value="iFrameModel"
|
|
11
|
-
class="
|
|
10
|
+
class="input-no-outline"
|
|
12
11
|
@change="$emit('update:iFrameModel',$event.target.value)"
|
|
13
12
|
>
|
|
14
13
|
<option value="default">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="module-box flex-
|
|
2
|
+
<div class="module-box flex-grow-0">
|
|
3
3
|
<div class="d-flex align-items-center mb-3">
|
|
4
|
-
<h3 class="mb-0
|
|
4
|
+
<h3 class="mb-0">
|
|
5
5
|
{{ $t('Subscribe emission') }}
|
|
6
6
|
</h3>
|
|
7
7
|
</div>
|
|
@@ -197,5 +197,3 @@ export default defineComponent({
|
|
|
197
197
|
},
|
|
198
198
|
})
|
|
199
199
|
</script>
|
|
200
|
-
|
|
201
|
-
<style lang="scss"></style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="form-check"
|
|
4
|
+
:class="isSwitch?'form-switch':''"
|
|
5
|
+
>
|
|
6
|
+
<input
|
|
7
|
+
:id="idCheckbox"
|
|
8
|
+
v-model="textValue"
|
|
9
|
+
type="checkbox"
|
|
10
|
+
class="form-check-input"
|
|
11
|
+
:disabled="isDisabled"
|
|
12
|
+
@click="emitClickAction"
|
|
13
|
+
>
|
|
14
|
+
<label
|
|
15
|
+
class="form-check-label"
|
|
16
|
+
:for="idCheckbox"
|
|
17
|
+
>{{ label }}</label>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue';
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'ClassicCheckbox',
|
|
25
|
+
|
|
26
|
+
props: {
|
|
27
|
+
idCheckbox: { default: '', type: String },
|
|
28
|
+
label: { default: '', type: String },
|
|
29
|
+
isDisabled: { default: false, type: Boolean },
|
|
30
|
+
textInit: { default: false, type: Boolean },
|
|
31
|
+
isSwitch:{default:false, type:Boolean}
|
|
32
|
+
},
|
|
33
|
+
emits: ['update:textInit', 'clickAction'],
|
|
34
|
+
|
|
35
|
+
data() {
|
|
36
|
+
return {
|
|
37
|
+
textValue: false as boolean,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
watch: {
|
|
41
|
+
textValue(){
|
|
42
|
+
if(this.textInit !== this.textValue){
|
|
43
|
+
this.$emit('update:textInit', this.textValue)
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
textInit(){
|
|
47
|
+
if(this.textInit !== this.textValue){
|
|
48
|
+
this.textValue =this.textInit;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
mounted(){
|
|
53
|
+
this.textValue = this.textInit;
|
|
54
|
+
},
|
|
55
|
+
methods:{
|
|
56
|
+
emitClickAction():void{
|
|
57
|
+
this.$emit('clickAction');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
</script>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
v-if="loadingText"
|
|
4
|
+
class="d-flex justify-content-center"
|
|
5
|
+
>
|
|
6
|
+
<div class="spinner-border me-3" />
|
|
7
|
+
<h3 class="mt-2">
|
|
8
|
+
{{ loadingText }}
|
|
9
|
+
</h3>
|
|
10
|
+
</div>
|
|
11
|
+
<div
|
|
12
|
+
v-else-if="errorText"
|
|
13
|
+
class="text-center"
|
|
14
|
+
>
|
|
15
|
+
<h3>{{ errorText }}</h3>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script lang="ts">
|
|
20
|
+
import { defineComponent } from 'vue';
|
|
21
|
+
export default defineComponent({
|
|
22
|
+
name: "ClassicLoading",
|
|
23
|
+
props: {
|
|
24
|
+
loadingText: { default: undefined, type: String},
|
|
25
|
+
errorText: { default: undefined, type: String},
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
</script>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="d-flex flex-column">
|
|
3
|
+
<div
|
|
4
|
+
v-for="option in options"
|
|
5
|
+
:key="option.title"
|
|
6
|
+
class="form-check"
|
|
7
|
+
>
|
|
8
|
+
<input
|
|
9
|
+
:id="idRadio + option.value"
|
|
10
|
+
v-model="textValue"
|
|
11
|
+
class="form-check-input"
|
|
12
|
+
type="radio"
|
|
13
|
+
:name="idRadio"
|
|
14
|
+
:value="option.value"
|
|
15
|
+
:disabled="isDisabled"
|
|
16
|
+
>
|
|
17
|
+
<label
|
|
18
|
+
class="form-check-label"
|
|
19
|
+
:for="idRadio + option.value"
|
|
20
|
+
>{{
|
|
21
|
+
option.title
|
|
22
|
+
}}</label>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts">
|
|
28
|
+
import { defineComponent } from 'vue';
|
|
29
|
+
export default defineComponent({
|
|
30
|
+
name: 'ClassicRadio',
|
|
31
|
+
|
|
32
|
+
props: {
|
|
33
|
+
idRadio: { default: '', type: String },
|
|
34
|
+
isDisabled: { default: false, type: Boolean },
|
|
35
|
+
options: { default: ()=>[], type: Array as () => Array<{title: string, value: string|undefined}> },
|
|
36
|
+
textInit: { default: undefined, type: String },
|
|
37
|
+
},
|
|
38
|
+
emits: ['update:textInit'],
|
|
39
|
+
|
|
40
|
+
data() {
|
|
41
|
+
return {
|
|
42
|
+
textValue: undefined as string|undefined,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
watch: {
|
|
46
|
+
textValue(){
|
|
47
|
+
if(this.textInit !== this.textValue){
|
|
48
|
+
this.$emit('update:textInit', this.textValue)
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
textInit(){
|
|
52
|
+
if(this.textInit !== this.textValue){
|
|
53
|
+
this.textValue =this.textInit;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
mounted(){
|
|
58
|
+
this.textValue = this.textInit;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
</script>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="position-relative champs-searchPage static-height">
|
|
3
|
+
<input
|
|
4
|
+
:id="idSearch"
|
|
5
|
+
ref="search"
|
|
6
|
+
v-model="textValue"
|
|
7
|
+
type="text"
|
|
8
|
+
class="search-input w-100 p-2 input-no-outline"
|
|
9
|
+
:placeholder="label"
|
|
10
|
+
:autofocus="autofocus"
|
|
11
|
+
>
|
|
12
|
+
<label
|
|
13
|
+
:for="idSearch"
|
|
14
|
+
:aria-label="label"
|
|
15
|
+
/>
|
|
16
|
+
<div
|
|
17
|
+
v-if="!textValue"
|
|
18
|
+
class="saooti-search-bounty search-icon-container"
|
|
19
|
+
/>
|
|
20
|
+
<div
|
|
21
|
+
v-else
|
|
22
|
+
class="saooti-cross search-icon-container c-hand"
|
|
23
|
+
@click="textValue = ''"
|
|
24
|
+
/>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script lang="ts">
|
|
29
|
+
import { defineComponent } from 'vue';
|
|
30
|
+
export default defineComponent({
|
|
31
|
+
name: 'ClassicSearch',
|
|
32
|
+
props: {
|
|
33
|
+
idSearch: { default: '', type: String },
|
|
34
|
+
label: { default: '', type: String },
|
|
35
|
+
textInit: { default: '', type: String },
|
|
36
|
+
autofocus: { default: false, type: Boolean },
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
emits: ['update:textInit'],
|
|
40
|
+
|
|
41
|
+
data() {
|
|
42
|
+
return {
|
|
43
|
+
textValue: '' as string,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
watch: {
|
|
47
|
+
textValue(){
|
|
48
|
+
if(this.textInit !== this.textValue){
|
|
49
|
+
this.$emit('update:textInit', this.textValue)
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
textInit(){
|
|
53
|
+
if(this.textInit !== this.textValue){
|
|
54
|
+
this.textValue =this.textInit;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
mounted(){
|
|
59
|
+
this.textValue = this.textInit;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
</script>
|
|
63
|
+
<style lang="scss" scoped>
|
|
64
|
+
.champs-searchPage input {
|
|
65
|
+
border: 2px solid #dee2e6;
|
|
66
|
+
border-radius: 10px;
|
|
67
|
+
margin: 0 !important;
|
|
68
|
+
}
|
|
69
|
+
.saooti-search-bounty,
|
|
70
|
+
.saooti-cross {
|
|
71
|
+
font-size: 1rem;
|
|
72
|
+
}
|
|
73
|
+
.search-icon-container {
|
|
74
|
+
position: absolute;
|
|
75
|
+
top: 0;
|
|
76
|
+
bottom: 0;
|
|
77
|
+
right: 0;
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
margin: 1rem;
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
class="d-flex"
|
|
5
5
|
>
|
|
6
6
|
<div
|
|
7
|
-
class="d-flex align-items-center bg-error-message p-2 rounded
|
|
7
|
+
class="d-flex align-items-center bg-error-message p-2 rounded my-1"
|
|
8
8
|
>
|
|
9
9
|
<img
|
|
10
10
|
src="/img/caution.png"
|
|
@@ -31,4 +31,7 @@ export default defineComponent({
|
|
|
31
31
|
.bg-error-message {
|
|
32
32
|
background-color: #ffd84a9c;
|
|
33
33
|
}
|
|
34
|
+
.alert-text{
|
|
35
|
+
color: darkred;
|
|
36
|
+
}
|
|
34
37
|
</style>
|