@saooti/octopus-sdk 40.2.19 → 41.0.1-SNAPSHOT

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 (204) hide show
  1. package/package.json +2 -3
  2. package/src/App.vue +68 -88
  3. package/src/components/composable/player/usePlayerLive.ts +12 -3
  4. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  5. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  6. package/src/components/composable/useInit.ts +2 -2
  7. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  8. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  9. package/src/components/display/categories/CategoryChooser.vue +142 -145
  10. package/src/components/display/categories/CategoryFilter.vue +172 -198
  11. package/src/components/display/categories/CategoryList.vue +122 -147
  12. package/src/components/display/comments/CommentInput.vue +100 -122
  13. package/src/components/display/comments/CommentList.vue +169 -191
  14. package/src/components/display/comments/CommentName.vue +35 -45
  15. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  16. package/src/components/display/comments/CommentPlayer.vue +38 -50
  17. package/src/components/display/comments/CommentSection.vue +85 -103
  18. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  19. package/src/components/display/comments/item/CommentItem.vue +101 -116
  20. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  21. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  22. package/src/components/display/comments/like/LikeButton.vue +36 -41
  23. package/src/components/display/comments/like/LikeSection.vue +128 -136
  24. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  25. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  26. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  27. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  28. package/src/components/display/edit/EditBox.vue +6 -9
  29. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  30. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  31. package/src/components/display/emission/EmissionItem.vue +57 -69
  32. package/src/components/display/emission/EmissionList.vue +192 -218
  33. package/src/components/display/emission/EmissionPlayerItem.vue +47 -64
  34. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  35. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  36. package/src/components/display/filter/AdvancedSearch.vue +154 -176
  37. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  38. package/src/components/display/filter/DateFilter.vue +76 -91
  39. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  40. package/src/components/display/filter/ProductorSearch.vue +87 -90
  41. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  42. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  43. package/src/components/display/filter/SearchOrder.vue +35 -35
  44. package/src/components/display/list/ListPaginate.vue +80 -93
  45. package/src/components/display/list/PaginateParams.vue +36 -40
  46. package/src/components/display/list/PaginateSection.vue +113 -124
  47. package/src/components/display/list/SwiperList.vue +97 -109
  48. package/src/components/display/live/CountDown.vue +15 -9
  49. package/src/components/display/live/CountdownOctopus.vue +16 -10
  50. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  51. package/src/components/display/live/LiveItem.vue +65 -73
  52. package/src/components/display/live/LiveList.vue +125 -137
  53. package/src/components/display/live/RadioCurrently.vue +66 -73
  54. package/src/components/display/live/RadioImage.vue +39 -50
  55. package/src/components/display/live/RadioItem.vue +9 -14
  56. package/src/components/display/live/RadioList.vue +39 -53
  57. package/src/components/display/live/RadioPlanning.vue +210 -222
  58. package/src/components/display/organisation/OrganisationChooser.vue +116 -122
  59. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  60. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  61. package/src/components/display/participant/ParticipantItem.vue +66 -74
  62. package/src/components/display/participant/ParticipantList.vue +119 -141
  63. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  64. package/src/components/display/playlist/PlaylistList.vue +118 -144
  65. package/src/components/display/playlist/PodcastList.vue +79 -101
  66. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  67. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  68. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  69. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  70. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  71. package/src/components/display/podcasts/PodcastFilterList.vue +48 -53
  72. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  73. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  74. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  75. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  76. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  78. package/src/components/display/podcasts/PodcastList.vue +183 -206
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  80. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  81. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  82. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  83. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  84. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  85. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  86. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  87. package/src/components/display/podcasts/TagList.vue +48 -50
  88. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  89. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  90. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  91. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  92. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  93. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  94. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  95. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  96. package/src/components/display/sharing/QrCode.vue +55 -67
  97. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  98. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  99. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  100. package/src/components/display/sharing/SharePlayer.vue +273 -295
  101. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  102. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  103. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  104. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  105. package/src/components/display/sharing/SubscribeButtons.vue +184 -207
  106. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  107. package/src/components/form/ClassicCheckbox.vue +26 -30
  108. package/src/components/form/ClassicContentEditable.vue +37 -33
  109. package/src/components/form/ClassicCopyButton.vue +40 -44
  110. package/src/components/form/ClassicDatePicker.vue +114 -114
  111. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  112. package/src/components/form/ClassicInputText.vue +116 -120
  113. package/src/components/form/ClassicLoading.vue +7 -12
  114. package/src/components/form/ClassicMultiselect.vue +106 -116
  115. package/src/components/form/ClassicRadio.vue +21 -16
  116. package/src/components/form/ClassicRadioLabel.vue +23 -22
  117. package/src/components/form/ClassicSearch.vue +24 -19
  118. package/src/components/form/ClassicSelect.vue +47 -38
  119. package/src/components/form/ClassicWysiwyg.vue +116 -123
  120. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  121. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  122. package/src/components/icons/BlueSkyIcon.vue +8 -11
  123. package/src/components/icons/DeezerIcon.vue +8 -11
  124. package/src/components/icons/EditFtpIcon.vue +8 -11
  125. package/src/components/icons/IHeartIcon.vue +8 -11
  126. package/src/components/icons/PlayVideoIcon.vue +7 -10
  127. package/src/components/icons/PlayerFmIcon.vue +7 -10
  128. package/src/components/icons/PocketCastIcon.vue +8 -11
  129. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  130. package/src/components/icons/RadiolineIcon.vue +8 -11
  131. package/src/components/icons/TuninIcon.vue +8 -11
  132. package/src/components/icons/XIcon.vue +7 -10
  133. package/src/components/misc/AcpmImage.vue +6 -7
  134. package/src/components/misc/ClassicAccordion.vue +26 -31
  135. package/src/components/misc/ClassicLazy.vue +86 -90
  136. package/src/components/misc/ClassicNav.vue +16 -20
  137. package/src/components/misc/ClassicPopover.vue +266 -282
  138. package/src/components/misc/ClassicSpinner.vue +5 -27
  139. package/src/components/misc/ErrorMessage.vue +11 -12
  140. package/src/components/misc/FooterGarSection.vue +33 -41
  141. package/src/components/misc/FooterSection.vue +109 -130
  142. package/src/components/misc/HomeDropdown.vue +83 -105
  143. package/src/components/misc/MobileMenu.vue +101 -111
  144. package/src/components/misc/ProgressBar.vue +53 -62
  145. package/src/components/misc/TopBar.vue +97 -120
  146. package/src/components/misc/TopBarMainContent.vue +114 -133
  147. package/src/components/misc/modal/ClassicModal.vue +40 -33
  148. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  149. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  150. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  151. package/src/components/misc/modal/MessageModal.vue +50 -47
  152. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  153. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  154. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  155. package/src/components/misc/player/PlayerCompact.vue +6 -4
  156. package/src/components/misc/player/PlayerComponent.vue +8 -9
  157. package/src/components/misc/player/PlayerLarge.vue +9 -8
  158. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  159. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  160. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  161. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  162. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  163. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  164. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  165. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  166. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  167. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  168. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  169. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  170. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  171. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  172. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  173. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  174. package/src/components/pages/CategoryPage.vue +28 -33
  175. package/src/components/pages/EmissionPage.vue +99 -132
  176. package/src/components/pages/EmissionsPage.vue +2 -0
  177. package/src/components/pages/Error403Page.vue +21 -20
  178. package/src/components/pages/HomePage.vue +91 -100
  179. package/src/components/pages/LivesPage.vue +35 -37
  180. package/src/components/pages/MapPage.vue +209 -241
  181. package/src/components/pages/PageLogout.vue +8 -11
  182. package/src/components/pages/PageNotFound.vue +9 -5
  183. package/src/components/pages/ParticipantPage.vue +82 -110
  184. package/src/components/pages/ParticipantsPage.vue +3 -0
  185. package/src/components/pages/PlaylistPage.vue +97 -115
  186. package/src/components/pages/PlaylistsPage.vue +9 -2
  187. package/src/components/pages/PodcastPage.vue +223 -238
  188. package/src/components/pages/PodcastsPage.vue +9 -2
  189. package/src/components/pages/RadioPage.vue +56 -70
  190. package/src/components/pages/RubriquePage.vue +7 -3
  191. package/src/components/pages/SearchPage.vue +31 -36
  192. package/src/components/pages/TagPage.vue +11 -9
  193. package/src/components/pages/VideoPage.vue +14 -11
  194. package/src/helper/displayHelper.ts +1 -1
  195. package/src/i18n.ts +2 -2
  196. package/src/main.ts +1 -1
  197. package/src/stores/class/general/player.ts +1 -0
  198. package/public/css/fonts/icomoon.eot +0 -0
  199. package/public/css/fonts/icomoon.svg +0 -113
  200. package/public/css/fonts/icomoon.ttf +0 -0
  201. package/public/css/fonts/icomoon.woff +0 -0
  202. package/public/css/fonts/icomoon.woff2 +0 -0
  203. package/public/css/fonts/style.css +0 -352
  204. package/sonarqube-scanner.js +0 -10
@@ -9,7 +9,7 @@
9
9
  :title="displayLabel ? '' : label"
10
10
  :data-selenium="selenium"
11
11
  :tabindex="isSwitch ? '-1' : '0'"
12
- @input="$emit('update:textInit', !textInit)"
12
+ @input="emit('update:textInit', !textInit)"
13
13
  @click="emitClickAction"
14
14
  />
15
15
  <button
@@ -29,39 +29,35 @@
29
29
  </div>
30
30
  </template>
31
31
 
32
- <script lang="ts">
33
- import { defineComponent } from "vue";
34
- export default defineComponent({
35
- name: "ClassicCheckbox",
32
+ <script setup lang="ts">
33
+ //Props
34
+ const props = defineProps({
35
+ idCheckbox: { default: "", type: String },
36
+ label: { default: "", type: String },
37
+ isDisabled: { default: false, type: Boolean },
38
+ textInit: { default: false, type: Boolean },
39
+ isSwitch: { default: false, type: Boolean },
40
+ displayLabel: { default: true, type: Boolean },
41
+ classLabel: { default: "", type: String },
42
+ selenium: { default: "", type: String },
43
+ })
36
44
 
37
- props: {
38
- idCheckbox: { default: "", type: String },
39
- label: { default: "", type: String },
40
- isDisabled: { default: false, type: Boolean },
41
- textInit: { default: false, type: Boolean },
42
- isSwitch: { default: false, type: Boolean },
43
- displayLabel: { default: true, type: Boolean },
44
- classLabel: { default: "", type: String },
45
- selenium: { default: "", type: String },
46
- },
47
- emits: ["update:textInit", "clickAction"],
48
- methods: {
49
- emitClickAction(): void {
50
- this.$emit("clickAction");
51
- },
52
- clickSlider() {
53
- if (!this.isDisabled) {
54
- this.$emit("update:textInit", !this.textInit);
55
- this.emitClickAction();
56
- }
57
- },
58
- },
59
- });
45
+ //Emits
46
+ const emit = defineEmits(["update:textInit", "clickAction"]);
47
+
48
+ //Methods
49
+ function emitClickAction(): void {
50
+ emit("clickAction");
51
+ }
52
+ function clickSlider() {
53
+ if (!props.isDisabled) {
54
+ emit("update:textInit", !props.textInit);
55
+ emitClickAction();
56
+ }
57
+ }
60
58
  </script>
61
59
 
62
60
  <style lang="scss">
63
-
64
-
65
61
  .octopus-app {
66
62
  .octopus-form-switch {
67
63
  position: relative;
@@ -10,40 +10,44 @@
10
10
  />
11
11
  </template>
12
12
 
13
- <script lang="ts">
14
- import { defineComponent } from "vue";
15
- export default defineComponent({
16
- name: "ClassicContentEditable",
17
- props: {
18
- tag: { default: "span", type: String },
19
- modelValue: { default: "", type: String },
20
- placeholder: { default: "", type: String },
21
- },
22
- emits: ["update:modelValue"],
23
- watch: {
24
- modelValue() {
25
- if ((this.$refs.element as HTMLElement).innerText !== this.modelValue) {
26
- this.updateContent(this.modelValue);
27
- }
28
- },
29
- },
30
- mounted() {
31
- this.updateContent(this.modelValue);
32
- },
33
- methods: {
34
- updateContent(newcontent: string) {
35
- (this.$refs.element as HTMLElement).innerText = newcontent;
36
- },
37
- emitUpdate() {
38
- if (null !== (this.$refs.element as HTMLElement)) {
39
- this.$emit(
40
- "update:modelValue",
41
- (this.$refs.element as HTMLElement).innerText,
42
- );
43
- }
44
- },
45
- },
13
+ <script setup lang="ts">
14
+ import { onMounted, useTemplateRef, watch } from 'vue';
15
+
16
+
17
+ //Props
18
+ const props = defineProps({
19
+ tag: { default: "span", type: String },
20
+ modelValue: { default: "", type: String },
21
+ placeholder: { default: "", type: String },
22
+ })
23
+
24
+ //Emits
25
+ const emit = defineEmits(["update:modelValue"]);
26
+
27
+ //Data
28
+ const elementRef = useTemplateRef('element');
29
+
30
+ //Watch
31
+ watch(()=>props.modelValue, () => {
32
+ const element = elementRef?.value as HTMLElement;
33
+ if (element.innerText !== props.modelValue) {
34
+ updateContent(props.modelValue);
35
+ }
46
36
  });
37
+
38
+ onMounted(()=>updateContent(props.modelValue))
39
+
40
+ //Methods
41
+ function updateContent(newcontent: string) {
42
+ const element = elementRef?.value as HTMLElement;
43
+ element.innerText = newcontent;
44
+ }
45
+ function emitUpdate() {
46
+ const element = elementRef?.value as HTMLElement;
47
+ if (null !== element) {
48
+ emit( "update:modelValue",element.innerText);
49
+ }
50
+ }
47
51
  </script>
48
52
  <style lang="scss">
49
53
 
@@ -14,52 +14,48 @@
14
14
  </div>
15
15
  </template>
16
16
 
17
- <script lang="ts">
17
+ <script setup lang="ts">
18
18
  import SnackBar from "../misc/SnackBar.vue";
19
19
  import displayHelper from "../../helper/displayHelper";
20
- import { defineComponent } from "vue";
21
- export default defineComponent({
22
- name: "ClassicCopyButton",
20
+ import { computed, ref, useTemplateRef } from "vue";
21
+ import { useI18n } from "vue-i18n";
23
22
 
24
- components: {
25
- SnackBar,
26
- },
27
23
 
28
- props: {
29
- text: { default: undefined, type: String },
30
- textAfterCopy: { default: undefined, type: String },
31
- dataToCopy: { default: undefined, type: String },
32
- snackbarText: { default: undefined, type: String },
33
- classBtn: { default: "btn btn-primary w-fit-content my-3", type: String },
34
- },
35
- data() {
36
- return {
37
- hasBeenCopied: false as boolean,
38
- lazyLoadingSnackbar: false as boolean,
39
- };
40
- },
41
- computed:{
42
- textDisplayed(){
43
- return this.hasBeenCopied ? this.textAfterCopy : this.text;
44
- }
45
- },
46
- methods: {
47
- onCopyCode(callback: () => void){
48
- displayHelper.onCopyCode(this.dataToCopy??"", callback);
49
- },
50
- afterCopy(): void {
51
- this.hasBeenCopied = true;
52
- if (!this.lazyLoadingSnackbar) {
53
- this.lazyLoadingSnackbar = true;
54
- setTimeout(() => {
55
- this.afterCopy();
56
- }, 500);
57
- } else {
58
- (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
59
- this.snackbarText ?? this.$t("Data in clipboard"),
60
- );
61
- }
62
- },
63
- },
64
- });
24
+ //Props
25
+ const props = defineProps({
26
+ text: { default: undefined, type: String },
27
+ textAfterCopy: { default: undefined, type: String },
28
+ dataToCopy: { default: undefined, type: String },
29
+ snackbarText: { default: undefined, type: String },
30
+ classBtn: { default: "btn btn-primary w-fit-content my-3", type: String },
31
+ })
32
+
33
+ //Data
34
+ const hasBeenCopied = ref(false);
35
+ const lazyLoadingSnackbar = ref(false);
36
+ const snackBarRef = useTemplateRef('snackbar');
37
+
38
+
39
+ //Composables
40
+ const { t } = useI18n();
41
+
42
+
43
+ //Computed
44
+ const textDisplayed = computed(() => hasBeenCopied.value ? props.textAfterCopy : props.text);
45
+
46
+ //Methods
47
+ function onCopyCode(callback: () => void){
48
+ displayHelper.onCopyCode(props.dataToCopy??"", callback);
49
+ }
50
+ function afterCopy(): void {
51
+ hasBeenCopied.value = true;
52
+ if (!lazyLoadingSnackbar.value) {
53
+ lazyLoadingSnackbar.value = true;
54
+ setTimeout(() => {
55
+ afterCopy();
56
+ }, 500);
57
+ } else {
58
+ (snackBarRef?.value as InstanceType<typeof SnackBar>).open(props.snackbarText ?? t("Data in clipboard"));
59
+ }
60
+ }
65
61
  </script>
@@ -15,7 +15,7 @@
15
15
  :text-input="true"
16
16
  :readonly="readonly"
17
17
  :teleport="useTeleport"
18
- :locale="formatLocale"
18
+ :locale="locale"
19
19
  :format="format"
20
20
  :auto-apply="true"
21
21
  :enable-seconds="displaySeconds"
@@ -38,128 +38,128 @@
38
38
  </div>
39
39
  </template>
40
40
 
41
- <script lang="ts">
41
+ <script setup lang="ts">
42
42
  import ClockOutlineIcon from "vue-material-design-icons/ClockOutline.vue";
43
43
  import dayjs from "dayjs";
44
44
  import VueDatePicker from "@vuepic/vue-datepicker";
45
- import { defineComponent } from "vue";
46
- export default defineComponent({
47
- components: {
48
- VueDatePicker,
49
- ClockOutlineIcon,
50
- },
51
- props: {
52
- id:{ default: undefined, type: String },
53
- time: {
54
- default: undefined,
55
- type: Object as () => { hours: number; minutes: number; seconds: number },
56
- },
57
- date: { default: undefined, type: Date },
58
- range: { default: undefined, type: Array as () => Array<Date> },
59
- isMaxDate: { default: false, type: Boolean },
60
- dateLimit: { default: undefined, type: Date },
61
- isMinDate: { default: false, type: Boolean },
62
- columnNumber: { default: 1, type: Number },
63
- displaySeconds: { default: false, type: Boolean },
64
- displayTimePicker: { default: true, type: Boolean },
65
- isTimePicker: { default: false, type: Boolean },
66
- useTeleport: { default: false, type: Boolean },
67
- templateClass: { default: undefined, type: String },
68
- readonly: { default: false, type: Boolean },
69
- maxTime: {
70
- default: null,
71
- type: Object as () => {
72
- hours?: number | string;
73
- minutes?: number | string;
74
- seconds?: number | string;
75
- },
76
- },
77
- forceFormat: { default: undefined, type: String },
78
- monthPicker: { default: false, type: Boolean },
79
- customPosition: { default: null, type: Function },
80
- isInline: { default: false, type: Boolean },
81
- timePickerInline: { default: false, type: Boolean },
82
- label: { default: undefined, type: String },
83
- displayLabel: { default: false, type: Boolean },
84
- },
45
+ import { computed, useTemplateRef } from "vue";
46
+ import { useI18n } from "vue-i18n";
85
47
 
86
- emits: ["updateDate", "update:date"],
87
- data() {
88
- return {};
48
+ //Props
49
+ const props = defineProps({
50
+ id:{ default: undefined, type: String },
51
+ time: {
52
+ default: undefined,
53
+ type: Object as () => { hours: number; minutes: number; seconds: number },
89
54
  },
90
- computed: {
91
- ariaLabels() {
92
- return {
93
- input: this.date ? this.formatDate(this.date) : undefined,
94
- day: (value: { value: Date }) => {
95
- return this.formatDate(value.value);
96
- },
97
- };
98
- },
99
- modelVal() {
100
- if (this.time) {
101
- return this.time;
102
- }
103
- if (this.range) {
104
- return this.range;
105
- }
106
- if (this.date && this.monthPicker) {
107
- return {
108
- month: this.date.getMonth(),
109
- year: this.date.getFullYear(),
110
- };
111
- }
112
- return this.date;
113
- },
114
- formatLocale() {
115
- return this.$i18n.locale;
116
- },
117
- format() {
118
- if (this.forceFormat) {
119
- return this.forceFormat;
120
- }
121
- if (this.monthPicker) {
122
- return "MM/yyyy";
123
- }
124
- let timeString = "";
125
- if (this.displayTimePicker || this.isTimePicker) {
126
- timeString = "HH:mm";
127
- if (this.displaySeconds) {
128
- timeString = "HH:mm:ss";
129
- }
130
- }
131
- const dayString = this.isTimePicker
132
- ? timeString
133
- : "dd/MM/yyyy " + timeString;
134
- return this.range ? dayString + " - " + dayString : dayString;
135
- },
136
- now(): Date {
137
- if (this.dateLimit) {
138
- return this.dateLimit;
139
- }
140
- return dayjs().toDate();
55
+ date: { default: undefined, type: Date },
56
+ range: { default: undefined, type: Array as () => Array<Date> },
57
+ isMaxDate: { default: false, type: Boolean },
58
+ dateLimit: { default: undefined, type: Date },
59
+ isMinDate: { default: false, type: Boolean },
60
+ columnNumber: { default: 1, type: Number },
61
+ displaySeconds: { default: false, type: Boolean },
62
+ displayTimePicker: { default: true, type: Boolean },
63
+ isTimePicker: { default: false, type: Boolean },
64
+ useTeleport: { default: false, type: Boolean },
65
+ templateClass: { default: undefined, type: String },
66
+ readonly: { default: false, type: Boolean },
67
+ maxTime: {
68
+ default: null,
69
+ type: Object as () => {
70
+ hours?: number | string;
71
+ minutes?: number | string;
72
+ seconds?: number | string;
141
73
  },
142
74
  },
143
- methods: {
144
- updateValue(date: Date) {
145
- if (!this.isInline) {
146
- this.$refs.divContainer?.focus();
147
- }
148
- this.$emit("updateDate", date);
149
- },
150
- formatDate(value: Date): string {
151
- const realMonth = value.getMonth() + 1;
152
- return (
153
- value.getDate() +
154
- "/" +
155
- (realMonth < 10 ? "0" : "") +
156
- realMonth +
157
- "/" +
158
- value.getFullYear()
159
- );
75
+ forceFormat: { default: undefined, type: String },
76
+ monthPicker: { default: false, type: Boolean },
77
+ customPosition: { default: null, type: Function },
78
+ isInline: { default: false, type: Boolean },
79
+ timePickerInline: { default: false, type: Boolean },
80
+ label: { default: undefined, type: String },
81
+ displayLabel: { default: false, type: Boolean },
82
+ })
83
+
84
+ //Emits
85
+ const emit = defineEmits(["updateDate", "update:date"]);
86
+
87
+ //Data
88
+ const divContainerRef = useTemplateRef('divContainer');
89
+
90
+ //Composables
91
+ const {locale} = useI18n();
92
+
93
+ //Computed
94
+ const ariaLabels = computed(() => {
95
+ return {
96
+ input: props.date ? formatDate(props.date) : undefined,
97
+ day: (value: { value: Date }) => {
98
+ return formatDate(value.value);
160
99
  },
161
- },
100
+ };
101
+ });
102
+ const modelVal = computed(() => {
103
+ if (props.time) {
104
+ return props.time;
105
+ }
106
+ if (props.range) {
107
+ return props.range;
108
+ }
109
+ if (props.date && props.monthPicker) {
110
+ return {
111
+ month: props.date.getMonth(),
112
+ year: props.date.getFullYear(),
113
+ };
114
+ }
115
+ return props.date;
116
+ });
117
+ const format = computed(() => {
118
+ if (props.forceFormat) {
119
+ return props.forceFormat;
120
+ }
121
+ if (props.monthPicker) {
122
+ return "MM/yyyy";
123
+ }
124
+ let timeString = "";
125
+ if (props.displayTimePicker || props.isTimePicker) {
126
+ timeString = "HH:mm";
127
+ if (props.displaySeconds) {
128
+ timeString = "HH:mm:ss";
129
+ }
130
+ }
131
+ const dayString = props.isTimePicker
132
+ ? timeString
133
+ : "dd/MM/yyyy " + timeString;
134
+ return props.range ? dayString + " - " + dayString : dayString;
135
+ });
136
+ const now = computed(() => {
137
+ if (props.dateLimit) {
138
+ return props.dateLimit;
139
+ }
140
+ return dayjs().toDate();
162
141
  });
142
+
143
+
144
+ //Methods
145
+ function updateValue(date: Date) {
146
+ if (!props.isInline) {
147
+ (divContainerRef?.value as HTMLElement)?.focus();
148
+ }
149
+ emit("updateDate", date);
150
+ }
151
+
152
+ function formatDate(value: Date): string {
153
+ const realMonth = value.getMonth() + 1;
154
+ return (
155
+ value.getDate() +
156
+ "/" +
157
+ (realMonth < 10 ? "0" : "") +
158
+ realMonth +
159
+ "/" +
160
+ value.getFullYear()
161
+ );
162
+ }
163
163
  </script>
164
164
  <style lang="scss">
165
165
  @use "@vuepic/vue-datepicker/dist/main.css";
@@ -4,7 +4,7 @@
4
4
  :id="'emoji-picker-dropdown'+id"
5
5
  ref="emojiButton"
6
6
  class="btn btn-transparent d-flex align-items-center justify-content-center"
7
- :title="$t('Pick your emoji')"
7
+ :title="t('Pick your emoji')"
8
8
  >
9
9
  <EmoticonExcitedOutlineIcon :size="34" />
10
10
  </button>
@@ -19,46 +19,38 @@
19
19
  >
20
20
  <Picker
21
21
  :data="emojiIndex"
22
- :title="$t('Pick your emoji')"
22
+ :title="t('Pick your emoji')"
23
23
  emoji="point_up"
24
- @select="$emit('emojiSelected', $event.native)"
24
+ @select="emit('emojiSelected', $event.native)"
25
25
  />
26
26
  </ClassicPopover>
27
27
  </div>
28
28
  </template>
29
29
 
30
- <script lang="ts">
30
+ <script setup lang="ts">
31
31
  import {useResizePhone} from "../composable/useResizePhone";
32
32
  import EmoticonExcitedOutlineIcon from "vue-material-design-icons/EmoticonExcitedOutline.vue";
33
33
  import ClassicPopover from "../misc/ClassicPopover.vue";
34
34
  import data from "emoji-mart-vue-fast/data/all.json";
35
35
  import "emoji-mart-vue-fast/css/emoji-mart.css";
36
36
  import { Picker, EmojiIndex } from "emoji-mart-vue-fast/src";
37
+ import { useI18n } from "vue-i18n";
38
+
39
+ //Props
40
+ defineProps({
41
+ popoverRelativeClass: { default: undefined, type: String },
42
+ isTopPosition: { default: false, type: Boolean },
43
+ id: { default: "", type: String },
44
+ })
45
+
46
+ //Emits
47
+ const emit = defineEmits(["emojiSelected"]);
48
+
49
+ //Data
37
50
  const emojiIndex = new EmojiIndex(data);
38
- import { defineComponent } from "vue";
39
- export default defineComponent({
40
- name: "ClassicEmojiPicker",
41
- components: {
42
- Picker,
43
- ClassicPopover,
44
- EmoticonExcitedOutlineIcon,
45
- },
46
- props: {
47
- popoverRelativeClass: { default: undefined, type: String },
48
- isTopPosition: { default: false, type: Boolean },
49
- id: { default: "", type: String },
50
- },
51
- emits: ["emojiSelected"],
52
- setup(){
53
- const { isPhone } = useResizePhone();
54
- return { isPhone }
55
- },
56
51
 
57
- data() {
58
- return {
59
- emojiIndex: emojiIndex,
60
- };
61
- },
62
- });
52
+ //Composables
53
+ const { t } = useI18n();
54
+ const { isPhone } = useResizePhone();
63
55
  </script>
64
56