@saooti/octopus-sdk 30.0.25 → 30.0.29

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 CHANGED
@@ -522,4 +522,8 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
522
522
  * 30.0.22 Accessibilité
523
523
  * 30.0.23 Css + Accessibilité
524
524
  * 30.0.24 Css + Accessibilité
525
- * 30.0.25 Css + Accessibilité
525
+ * 30.0.25 Css + Accessibilité
526
+ * 30.0.26 Css + Accessibilité
527
+ * 30.0.27 Top bar responsive
528
+ * 30.0.28 Limiter caractères des commentaires
529
+ * 30.0.29 Pour podcastmaker sudPresse
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "30.0.25",
3
+ "version": "30.0.29",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -0,0 +1,4 @@
1
+ export default Object.freeze({
2
+ MAX_COMMENT : 4096,
3
+ MAX_COMMENT_NAME : 127
4
+ });
@@ -82,8 +82,6 @@
82
82
  border: 2px solid $octopus-primary-dark;
83
83
  color: white;
84
84
  font-weight: bold;
85
- width: fit-content;
86
- align-self: center;
87
85
  &:focus,
88
86
  &:hover,
89
87
  &:active,
@@ -19,8 +19,14 @@
19
19
  class="form-input"
20
20
  type="text"
21
21
  :placeholder="$t('Your name')"
22
- :class="{ 'border border-danger': name.length < 2 }"
22
+ :class="{ 'border border-danger': 0 === countName || !validName }"
23
23
  >
24
+ <p
25
+ class="d-flex justify-content-end small-text"
26
+ :class="{ 'text-danger': !validName }"
27
+ >
28
+ {{ countName + ' / ' + maxName }}
29
+ </p>
24
30
  <div
25
31
  v-if="sendError"
26
32
  class="mt-1 text-danger"
@@ -47,8 +53,8 @@
47
53
  </button>
48
54
  <button
49
55
  v-if="!sending"
50
- class="btn btn-primary m-1"
51
- :disabled="name.length <= 2"
56
+ class="btn btn-link m-1"
57
+ :disabled="0 === countName || !validName"
52
58
  @click="validateName"
53
59
  >
54
60
  {{ $t('Validate') }}
@@ -61,6 +67,7 @@
61
67
 
62
68
  <script lang="ts">
63
69
  import { IReCaptchaComposition, useReCaptcha } from 'vue-recaptcha-v3';
70
+ import Constants from '../../../../public/config';
64
71
  import { state } from '../../../store/paramStore';
65
72
  import api from '@/api/initialize';
66
73
  import { defineComponent } from 'vue'
@@ -76,10 +83,17 @@ export default defineComponent({
76
83
  sending: false as boolean,
77
84
  needVerify: true as boolean,
78
85
  sendError: false as boolean,
86
+ maxName : Constants.MAX_COMMENT_NAME as number
79
87
  };
80
88
  },
81
89
 
82
90
  computed: {
91
+ validName(): boolean{
92
+ return this.countName <= this.maxName;
93
+ },
94
+ countName(): number{
95
+ return this.name.length;
96
+ },
83
97
  isCaptchaTest(): boolean {
84
98
  return (state.generalParameters.isCaptchaTest as boolean);
85
99
  },
@@ -12,21 +12,29 @@
12
12
  v-if="editName"
13
13
  class="d-flex"
14
14
  >
15
- <input
16
- v-model="temporaryName"
17
- class="small-text mt-1"
18
- type="text"
19
- :class="{ 'border border-danger': temporaryName.length < 2 }"
20
- >
15
+ <div class="d-flex flex-column">
16
+ <input
17
+ v-model="temporaryName"
18
+ class="small-text mt-1"
19
+ type="text"
20
+ :class="{ 'border border-danger': 0 === countName || !validName }"
21
+ >
22
+ <p
23
+ class="d-flex justify-content-end small-text mb-0"
24
+ :class="{ 'text-danger': !validName }"
25
+ >
26
+ {{ countName + ' / ' + maxName }}
27
+ </p>
28
+ </div>
21
29
  <button
22
- class="btn"
30
+ class="btn m-1"
23
31
  @click="editName = false"
24
32
  >
25
33
  {{ $t('Cancel') }}
26
34
  </button>
27
35
  <button
28
- class="btn btn-link"
29
- :disabled="temporaryName.length < 2"
36
+ class="btn btn-link m-1"
37
+ :disabled="0 === countName || !validName"
30
38
  @click="validEdit"
31
39
  >
32
40
  {{ $t('Validate') }}
@@ -41,24 +49,29 @@
41
49
  @focus="textareaFocus = true"
42
50
  @blur="textareaFocus = false"
43
51
  />
44
- <div
45
- v-if="textareaFocus"
46
- class="d-flex justify-content-end mt-1"
47
- >
48
- <button
49
- class="btn me-2"
50
- @mousedown="cancelAction"
51
- >
52
- {{ $t('Cancel') }}
53
- </button>
54
- <button
55
- class="btn btn-link"
56
- :disabled="0 === newComment.trim().length"
57
- @mousedown="requestToSend"
52
+ <template v-if="textareaFocus">
53
+ <p
54
+ class="d-flex justify-content-end small-text"
55
+ :class="{ 'text-danger': !validComment }"
58
56
  >
59
- {{ placeholder }}
60
- </button>
61
- </div>
57
+ {{ countComment + ' / ' + maxComment }}
58
+ </p>
59
+ <div class="d-flex justify-content-end mt-1">
60
+ <button
61
+ class="btn me-2"
62
+ @mousedown="cancelAction"
63
+ >
64
+ {{ $t('Cancel') }}
65
+ </button>
66
+ <button
67
+ class="btn btn-link"
68
+ :disabled="0 === countComment || !validComment"
69
+ @mousedown="requestToSend"
70
+ >
71
+ {{ placeholder }}
72
+ </button>
73
+ </div>
74
+ </template>
62
75
  <AddCommentModal
63
76
  v-if="checkIdentityModal"
64
77
  @validate="postComment"
@@ -83,7 +96,7 @@ import { state } from '../../../store/paramStore';
83
96
  import { Podcast } from '@/store/class/general/podcast';
84
97
  import { Conference } from '@/store/class/conference/conference';
85
98
  import { CommentPodcast } from '@/store/class/general/comment';
86
-
99
+ import Constants from '../../../../public/config';
87
100
  import { defineComponent, defineAsyncComponent } from 'vue';
88
101
  const AddCommentModal = defineAsyncComponent(() => import('./AddCommentModal.vue'));
89
102
  const MessageModal = defineAsyncComponent(() => import('../../misc/modal/MessageModal.vue'));
@@ -113,10 +126,24 @@ export default defineComponent({
113
126
  isOneLine: true as boolean,
114
127
  editName: false as boolean,
115
128
  temporaryName: '' as string,
129
+ maxComment : Constants.MAX_COMMENT as number,
130
+ maxName : Constants.MAX_COMMENT_NAME as number
116
131
  };
117
132
  },
118
133
 
119
134
  computed: {
135
+ validName(): boolean{
136
+ return this.countName <= this.maxName;
137
+ },
138
+ countName(): number{
139
+ return this.temporaryName.length;
140
+ },
141
+ validComment(): boolean{
142
+ return this.countComment <= this.maxComment;
143
+ },
144
+ countComment(): number{
145
+ return this.newComment.length;
146
+ },
120
147
  isPresent(): boolean {
121
148
  if (!this.podcast) return true;
122
149
  let podcastComment = 'INHERIT';
@@ -9,16 +9,28 @@
9
9
  <template v-else>
10
10
  <input
11
11
  v-model="temporaryName"
12
- class="form-input me-2 mb-2 width-auto"
12
+ class="form-input"
13
13
  type="text"
14
- :class="{ 'border border-danger': temporaryName.length < 2 }"
14
+ :class="{ 'border border-danger': 0 === countName || !validName }"
15
+ >
16
+ <p
17
+ class="d-flex justify-content-end small-text"
18
+ :class="{ 'text-danger': !validName }"
15
19
  >
20
+ {{ countName + ' / ' + maxName }}
21
+ </p>
16
22
  <textarea
17
23
  v-model="temporaryContent"
18
- :class="{ 'border border-danger': 0===temporaryContent.length }"
24
+ :class="{ 'border border-danger': 0 === countComment || !validComment }"
19
25
  class="form-input"
20
26
  type="text"
21
27
  />
28
+ <p
29
+ class="d-flex justify-content-end small-text"
30
+ :class="{ 'text-danger': !validComment }"
31
+ >
32
+ {{ countComment + ' / ' + maxComment }}
33
+ </p>
22
34
  <div class="d-flex justify-content-end">
23
35
  <button
24
36
  class="btn m-1"
@@ -28,7 +40,7 @@
28
40
  </button>
29
41
  <button
30
42
  class="btn btn-link m-1"
31
- :disabled="0 === temporaryContent.length || temporaryName.length < 2"
43
+ :disabled="0 === countComment || !validComment || 0 === countName || !validName"
32
44
  @click="validEdit"
33
45
  >
34
46
  {{ $t('Validate') }}
@@ -122,6 +134,7 @@ import { CommentPodcast } from '@/store/class/general/comment';
122
134
  import { Podcast } from '@/store/class/general/podcast';
123
135
  import { Conference } from '@/store/class/conference/conference';
124
136
  import CommentBasicView from './CommentBasicView.vue';
137
+ import Constants from '../../../../public/config';
125
138
  import { defineComponent, defineAsyncComponent } from 'vue';
126
139
  const CommentInput = defineAsyncComponent(() => import('./CommentInput.vue'));
127
140
  const CommentParentInfo = defineAsyncComponent(() => import('./CommentParentInfo.vue'));
@@ -157,9 +170,23 @@ export default defineComponent({
157
170
  isEditing: false as boolean,
158
171
  temporaryContent: '' as string,
159
172
  temporaryName: '' as string,
173
+ maxComment : Constants.MAX_COMMENT as number,
174
+ maxName : Constants.MAX_COMMENT_NAME as number
160
175
  };
161
176
  },
162
177
  computed: {
178
+ validName(): boolean{
179
+ return this.countName <= this.maxName;
180
+ },
181
+ countName(): number{
182
+ return this.temporaryName.length;
183
+ },
184
+ validComment(): boolean{
185
+ return this.countComment <= this.maxComment;
186
+ },
187
+ countComment(): number{
188
+ return this.temporaryContent.length;
189
+ },
163
190
  myOrganisationId(): string|undefined {
164
191
  return state.generalParameters.organisationId;
165
192
  },
@@ -57,7 +57,7 @@
57
57
  <router-link
58
58
  v-if="!overflowScroll"
59
59
  :to="href"
60
- class="btn btn-link m-4"
60
+ class="btn btn-link align-self-center width-fit-content m-4"
61
61
  >
62
62
  {{
63
63
  buttonText
@@ -257,31 +257,34 @@ export default defineComponent({
257
257
  </script>
258
258
 
259
259
  <style lang="scss">
260
- .list-episode {
261
- padding: 2rem 0rem 1rem !important;
262
- @media (max-width: 450px) {
263
- padding: 0.5rem 0rem 1rem !important;
260
+ .octopus-app{
261
+ .list-episode {
262
+ padding: 2rem 0rem 1rem !important;
263
+ @media (max-width: 450px) {
264
+ padding: 0.5rem 0rem 1rem !important;
265
+ }
266
+ h2 {
267
+ margin-bottom: 1rem;
268
+ }
269
+ }
270
+ .element-list-inline.overflowScroll {
271
+ display: flex;
272
+ flex-wrap: wrap;
273
+ -webkit-overflow-scrolling: touch;
274
+ scroll-behavior: smooth;
275
+ padding-bottom: 1rem;
276
+ width: 100%;
277
+ height: 80vh;
278
+ overflow-y: auto;
279
+ grid-gap: inherit;
280
+ @media (max-width: 960px) {
281
+ overflow-x: hidden;
282
+ flex-direction: column;
283
+ flex-wrap: nowrap;
264
284
  }
265
- h2 {
266
- margin-bottom: 1rem;
285
+ .item-phone-margin {
286
+ margin: 1rem 0.5rem !important;
267
287
  }
268
- }
269
- .element-list-inline.overflowScroll {
270
- display: flex;
271
- flex-wrap: wrap;
272
- -webkit-overflow-scrolling: touch;
273
- scroll-behavior: smooth;
274
- padding-bottom: 1rem;
275
- width: 100%;
276
- height: 80vh;
277
- overflow-y: auto;
278
- @media (max-width: 960px) {
279
- overflow-x: hidden;
280
- flex-direction: column;
281
- flex-wrap: nowrap;
282
- }
283
- .item-phone-margin {
284
- margin: 1rem 0.5rem !important;
285
288
  }
286
289
  }
287
290
  </style>
@@ -41,7 +41,7 @@
41
41
  <button
42
42
  v-show="!allFetched"
43
43
  class="btn"
44
- :class="buttonPlus ? 'btn-link m-4' : 'btn-more'"
44
+ :class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4' : 'btn-more'"
45
45
  :disabled="loading"
46
46
  :title="$t('See more')"
47
47
  @click="fetchContent(false)"
@@ -16,7 +16,7 @@
16
16
  <button
17
17
  v-show="!allFetched"
18
18
  class="btn"
19
- :class="buttonPlus ? 'btn-link m-4 mt-3' : 'btn-more'"
19
+ :class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4 mt-3' : 'btn-more'"
20
20
  :disabled="inFetching"
21
21
  :title="$t('See more')"
22
22
  @click="displayMore"
@@ -19,7 +19,7 @@
19
19
  <button
20
20
  v-show="!allFetched && loaded"
21
21
  class="btn"
22
- :class="buttonPlus ? 'btn-link m-4':'btn-more'"
22
+ :class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4':'btn-more'"
23
23
  :disabled="inFetching"
24
24
  :title="$t('See more')"
25
25
  @click="displayMore"
@@ -40,7 +40,7 @@
40
40
  <button
41
41
  v-show="size < podcasts.length && loaded"
42
42
  class="btn"
43
- :class="buttonPlus ? 'btn-link m-4':'btn-more'"
43
+ :class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4':'btn-more'"
44
44
  :title="$t('See more')"
45
45
  @click="displayMore"
46
46
  >
@@ -62,7 +62,7 @@
62
62
  />
63
63
  </transition-group>
64
64
  <router-link
65
- class="btn btn-link m-4"
65
+ class="btn btn-link align-self-center width-fit-content m-4"
66
66
  :to="refTo"
67
67
  >
68
68
  {{ buttonText }}
@@ -23,7 +23,7 @@
23
23
  <button
24
24
  v-show="!allFetched && loaded"
25
25
  class="btn"
26
- :class="buttonPlus ? 'btn-link m-4' : 'btn-more'"
26
+ :class="buttonPlus ? 'btn-link align-self-center width-fit-content m-4' : 'btn-more'"
27
27
  :disabled="inFetching"
28
28
  :title="$t('See more')"
29
29
  @click="displayMore"
@@ -4,7 +4,7 @@
4
4
  >
5
5
  <button
6
6
  v-if="authenticated"
7
- class="btn btn-primary m-1"
7
+ class="btn btn-primary hide-phone m-1"
8
8
  @click="goToUrl('/main/priv/backoffice')"
9
9
  >
10
10
  {{ $t('My space') }}
@@ -325,8 +325,13 @@ export default defineComponent({
325
325
  height: 2rem;
326
326
  }
327
327
  }
328
- @media (max-width: 290px) {
328
+ @media (max-width: 380px) {
329
329
  .top-bar-logo img{
330
+ height: 1rem;
331
+ }
332
+ }
333
+ @media (max-width: 290px) {
334
+ .top-bar-logo{
330
335
  display: none;
331
336
  }
332
337
  }