@saooti/octopus-sdk 30.0.27 → 30.0.28

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
@@ -524,4 +524,5 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
524
524
  * 30.0.24 Css + Accessibilité
525
525
  * 30.0.25 Css + Accessibilité
526
526
  * 30.0.26 Css + Accessibilité
527
- * 30.0.27 Top bar responsive
527
+ * 30.0.27 Top bar responsive
528
+ * 30.0.28 Limiter caractères des commentaires
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "30.0.27",
3
+ "version": "30.0.28",
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
+ });
@@ -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"
@@ -48,7 +54,7 @@
48
54
  <button
49
55
  v-if="!sending"
50
56
  class="btn btn-link m-1"
51
- :disabled="name.length <= 2"
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
  },