@saooti/octopus-sdk 40.2.19 → 41.0.0-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
@@ -5,9 +5,9 @@
5
5
  :option-chosen="model"
6
6
  option-label="name"
7
7
  :display-label="displayLabel"
8
- :label="label ?? $t('By category')"
8
+ :label="label ?? t('By category')"
9
9
  :text-danger="textDanger"
10
- :placeholder="$t('Type string to filter by categories')"
10
+ :placeholder="t('Type string to filter by categories')"
11
11
  :max-element="maxElement"
12
12
  :in-modal="inModal"
13
13
  :multiple="multiple"
@@ -21,158 +21,155 @@
21
21
  />
22
22
  </template>
23
23
 
24
- <script lang="ts">
24
+ <script setup lang="ts">
25
25
  import { useGeneralStore } from "../../../stores/GeneralStore";
26
- import { mapState } from "pinia";
27
26
  import ClassicMultiselect from "../../form/ClassicMultiselect.vue";
28
27
  import { Category } from "@/stores/class/general/category";
29
- import { defineComponent } from "vue";
30
- export default defineComponent({
31
- components: {
32
- ClassicMultiselect,
33
- },
34
- props: {
35
- defaultanswer: { default: "", type: String },
36
- width: { default: "100%", type: String },
37
- multiple: { default: false, type: Boolean },
38
- isDisabled: { default: false, type: Boolean },
39
- initCategories: {
40
- default: undefined,
41
- type: Array as () => Array<Category>,
42
- },
43
- displayAllCategories: { default: false, type: Boolean },
44
- categorySelected: { default: undefined, type: Number },
45
- categorySelectedArray: {
46
- default: undefined,
47
- type: Array as () => Array<number>,
48
- },
49
- inModal: { default: false, type: Boolean },
50
- noDeselect: { default: true, type: Boolean },
51
- label:{default: undefined, type: String },
52
- displayLabel: { default: false, type: Boolean },
53
- textDanger :{ default: undefined, type: String },
54
- displayRequired: { default: false, type: Boolean },
28
+ import { computed, onMounted, Ref, ref, useTemplateRef, watch } from "vue";
29
+ import { useI18n } from "vue-i18n";
30
+
31
+ //Props
32
+ const props = defineProps({
33
+ defaultanswer: { default: "", type: String },
34
+ width: { default: "100%", type: String },
35
+ multiple: { default: false, type: Boolean },
36
+ isDisabled: { default: false, type: Boolean },
37
+ initCategories: {
38
+ default: undefined,
39
+ type: Array as () => Array<Category>,
55
40
  },
56
- emits: [
57
- "update:categorySelected",
58
- "update:categorySelectedArray",
59
- "selected",
60
- ],
61
- data() {
62
- return {
63
- maxElement: 50 as number,
64
- category: undefined as Category | undefined,
65
- categoryForArray: [] as Array<Category> | undefined,
66
- };
41
+ displayAllCategories: { default: false, type: Boolean },
42
+ categorySelected: { default: undefined, type: Number },
43
+ categorySelectedArray: {
44
+ default: undefined,
45
+ type: Array as () => Array<number>,
67
46
  },
47
+ inModal: { default: false, type: Boolean },
48
+ noDeselect: { default: true, type: Boolean },
49
+ label:{default: undefined, type: String },
50
+ displayLabel: { default: false, type: Boolean },
51
+ textDanger :{ default: undefined, type: String },
52
+ displayRequired: { default: false, type: Boolean },
53
+ })
68
54
 
69
- computed: {
70
- ...mapState(useGeneralStore, ["storedCategories"]),
71
- categoriesChosen(): Array<Category> {
72
- if (this.initCategories) {
73
- return this.initCategories;
74
- }
75
- return this.storedCategories;
76
- },
77
- categoriesOrdered(): Array<Category> {
78
- let allCategoriesOrdered = this.categoriesChosen.toSorted(
79
- (a: Category, b: Category) => (a.name > b.name ? 1 : -1),
80
- );
81
- if (!this.displayAllCategories) {
82
- allCategoriesOrdered = allCategoriesOrdered.filter((c: Category) => {
83
- return c.podcastCount;
84
- });
85
- }
86
- if (this.getDefaultCategory) {
87
- allCategoriesOrdered.unshift(this.getDefaultCategory);
88
- }
89
- return allCategoriesOrdered;
90
- },
91
- getDefaultCategory(): Category | undefined {
92
- if ("" === this.defaultanswer) {
93
- return undefined;
94
- }
95
- return { id: 0, name: this.defaultanswer };
96
- },
97
- idClassicMultiselect(): string {
98
- if (this.multiple) return "categoryChooser" + this.multiple;
99
- return "categoryChooser";
100
- },
55
+ //Emits
56
+ const emit = defineEmits([
57
+ "update:categorySelected",
58
+ "update:categorySelectedArray",
59
+ "selected"
60
+ ]);
101
61
 
102
- model: {
103
- get(): Category | Array<Category> | undefined {
104
- return this.multiple ? this.categoryForArray : this.category;
105
- },
106
- set(value: Category | Array<Category> | undefined): void {
107
- if (!this.multiple) {
108
- this.category = value as Category | undefined;
109
- return;
110
- }
111
- this.categoryForArray = value as Array<Category> | undefined;
112
- },
113
- },
114
- },
115
- watch: {
116
- categorySelected: {
117
- immediate: true,
118
- handler() {
119
- if (this.categorySelected) {
120
- this.initCategorySelected();
121
- } else {
122
- this.category = this.getDefaultCategory;
123
- }
124
- },
125
- },
126
- },
127
62
 
128
- mounted() {
129
- this.initCategoryArray();
63
+ //Data
64
+ const maxElement = ref(50);
65
+ const category: Ref<Category | undefined> = ref(undefined);
66
+ const categoryForArray: Ref<Array<Category> | undefined> = ref([]);
67
+ const selectCategoryRef=useTemplateRef('selectCategory');
68
+
69
+ //Composables
70
+ const { t } = useI18n();
71
+ const generalStore = useGeneralStore();
72
+
73
+
74
+ //Computed
75
+ const categoriesChosen = computed(() => {
76
+ if (props.initCategories) {
77
+ return props.initCategories;
78
+ }
79
+ return generalStore.storedCategories;
80
+ });
81
+ const categoriesOrdered = computed(() => {
82
+ let allCategoriesOrdered = categoriesChosen.value.toSorted(
83
+ (a: Category, b: Category) => (a.name > b.name ? 1 : -1),
84
+ );
85
+ if (!props.displayAllCategories) {
86
+ allCategoriesOrdered = allCategoriesOrdered.filter((c: Category) => {
87
+ return c.podcastCount;
88
+ });
89
+ }
90
+ if (getDefaultCategory.value) {
91
+ allCategoriesOrdered.unshift(getDefaultCategory.value);
92
+ }
93
+ return allCategoriesOrdered;
94
+ });
95
+ const getDefaultCategory = computed(() => {
96
+ if ("" === props.defaultanswer) {
97
+ return undefined;
98
+ }
99
+ return { id: 0, name: props.defaultanswer };
100
+ });
101
+ const idClassicMultiselect = computed(() => {
102
+ if (props.multiple) return "categoryChooser" + props.multiple;
103
+ return "categoryChooser";
104
+ });
105
+ const model = computed({
106
+ get(): Category | Array<Category> | undefined {
107
+ return props.multiple ? categoryForArray.value :category.value;
130
108
  },
131
- methods: {
132
- async onSearchCategory(query?: string): Promise<void> {
133
- let categories = this.categoriesOrdered;
134
- if (query) {
135
- categories = categories.filter((item: Category) => {
136
- return item.name.toUpperCase().includes(query.toUpperCase());
137
- });
138
- }
139
- (
140
- this.$refs.selectCategory as InstanceType<typeof ClassicMultiselect>
141
- ).afterSearch(categories, categories.length);
142
- },
143
- onCategorySelected(category: Category | Array<Category>): void {
144
- if (undefined !== this.categorySelected) {
145
- this.$emit("update:categorySelected", (category as Category).id);
146
- } else if (undefined !== this.categorySelectedArray) {
147
- const idsArray: Array<number> = [];
148
- (category as Array<Category>).forEach((el: Category) => {
149
- idsArray.push(el.id);
150
- });
151
- this.$emit("update:categorySelectedArray", idsArray);
152
- } else {
153
- this.$emit("selected", category);
154
- }
155
- },
156
- initCategorySelected(): void {
157
- this.category =
158
- this.categoriesChosen.find((el: Category) => {
159
- return el.id === this.categorySelected;
160
- }) ?? this.getDefaultCategory;
161
- },
162
- initCategoryArray(): void {
163
- if (!this.categoryForArray || !this.categorySelectedArray) {
164
- return;
165
- }
166
- this.categoryForArray.length = 0;
167
- this.categorySelectedArray.forEach((element: number) => {
168
- const item = this.categoriesChosen.find((el: Category) => {
169
- return el.id === element;
170
- });
171
- if (this.categoryForArray && item) {
172
- this.categoryForArray.push(item);
173
- }
174
- });
175
- },
109
+ set(value: Category | Array<Category> | undefined): void {
110
+ if (!props.multiple) {
111
+ category.value = value as Category | undefined;
112
+ return;
113
+ }
114
+ categoryForArray.value = value as Array<Category> | undefined;
176
115
  },
177
116
  });
117
+
118
+
119
+ //Watch
120
+ watch(()=>props.categorySelected, async () => {
121
+ if (props.categorySelected) {
122
+ initCategorySelected();
123
+ } else {
124
+ category.value = getDefaultCategory.value;
125
+ }
126
+ }, {immediate: true});
127
+
128
+
129
+ onMounted(()=>initCategoryArray())
130
+
131
+
132
+ //Methods
133
+ async function onSearchCategory(query?: string): Promise<void> {
134
+ let categories = categoriesOrdered.value;
135
+ if (query) {
136
+ categories = categories.filter((item: Category) => {
137
+ return item.name.toUpperCase().includes(query.toUpperCase());
138
+ });
139
+ }
140
+ (selectCategoryRef?.value as InstanceType<typeof ClassicMultiselect>).afterSearch(categories, categories.length);
141
+ }
142
+ function onCategorySelected(category: Category | Array<Category>): void {
143
+ if (undefined !== props.categorySelected) {
144
+ emit("update:categorySelected", (category as Category).id);
145
+ } else if (undefined !== props.categorySelectedArray) {
146
+ const idsArray: Array<number> = [];
147
+ (category as Array<Category>).forEach((el: Category) => {
148
+ idsArray.push(el.id);
149
+ });
150
+ emit("update:categorySelectedArray", idsArray);
151
+ } else {
152
+ emit("selected", category);
153
+ }
154
+ }
155
+ function initCategorySelected(): void {
156
+ category.value =
157
+ categoriesChosen.value.find((el: Category) => {
158
+ return el.id === props.categorySelected;
159
+ }) ?? getDefaultCategory.value;
160
+ }
161
+ function initCategoryArray(): void {
162
+ if (!categoryForArray.value || !props.categorySelectedArray) {
163
+ return;
164
+ }
165
+ categoryForArray.value.length = 0;
166
+ props.categorySelectedArray.forEach((element: number) => {
167
+ const item = categoriesChosen.value.find((el: Category) => {
168
+ return el.id === element;
169
+ });
170
+ if (categoryForArray.value && item) {
171
+ categoryForArray.value.push(item);
172
+ }
173
+ });
174
+ }
178
175
  </script>