data-primals-engine 1.3.4 → 1.4.1

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 (42) hide show
  1. package/README.md +72 -2
  2. package/client/README.md +20 -0
  3. package/client/package-lock.json +712 -147
  4. package/client/package.json +38 -37
  5. package/client/src/App.jsx +9 -10
  6. package/client/src/App.scss +7 -1
  7. package/client/src/Dashboard.jsx +349 -208
  8. package/client/src/DashboardView.jsx +569 -547
  9. package/client/src/DataEditor.jsx +20 -2
  10. package/client/src/DataLayout.jsx +24 -12
  11. package/client/src/DataTable.jsx +807 -760
  12. package/client/src/DataTable.scss +187 -90
  13. package/client/src/Field.jsx +1783 -1656
  14. package/client/src/ModelCreator.jsx +2 -2
  15. package/client/src/ModelCreatorField.jsx +906 -804
  16. package/client/src/ModelList.jsx +2 -2
  17. package/client/src/PackGallery.jsx +391 -290
  18. package/client/src/PackGallery.scss +231 -210
  19. package/client/src/constants.js +16 -4
  20. package/client/src/translations.js +16750 -16392
  21. package/package.json +14 -11
  22. package/src/core.js +9 -0
  23. package/src/defaultModels.js +18 -10
  24. package/src/email.js +2 -1
  25. package/src/gameObject.js +1 -1
  26. package/src/i18n.js +501 -28
  27. package/src/modules/auth-google/index.js +51 -0
  28. package/src/modules/auth-microsoft/index.js +82 -0
  29. package/src/modules/auth-saml/index.js +90 -0
  30. package/src/modules/data/data.core.js +5 -1
  31. package/src/modules/data/data.history.js +489 -489
  32. package/src/modules/data/data.js +86 -12
  33. package/src/modules/data/data.routes.js +1691 -1663
  34. package/src/modules/user.js +19 -0
  35. package/src/modules/workflow.js +2 -12
  36. package/src/providers.js +110 -1
  37. package/src/sso.js +194 -0
  38. package/test/data.integration.test.js +3 -0
  39. package/test/user.test.js +1 -1
  40. package/client/public/demo/26899917-d1ba-4df4-bb33-48d09a8778da.jpg +0 -0
  41. package/client/public/demo/4b9894c7-12cd-466d-8fd3-a2757b09ec96.jpg +0 -0
  42. package/client/public/demo/7ed369ac-a1a2-4b45-b0cd-4fd5bcf5a75a.jpg +0 -0
@@ -1,210 +1,231 @@
1
- .pack-gallery-container {
2
- width: 100%;
3
- max-width: 90vw;
4
- height: 80vh;
5
- display: flex;
6
- flex-direction: column;
7
-
8
- .gallery-header {
9
- display: flex;
10
- flex-wrap: wrap;
11
- gap: 1rem ;
12
- justify-content: space-between;
13
- align-items: center;
14
- padding-bottom: 1rem;
15
- border-bottom: 1px solid #e0e0e0;
16
- margin-bottom: 1rem;
17
-
18
- h1 {
19
- margin: 0;
20
- flex: 1; // Permet au titre de prendre l'espace disponible
21
- min-width: 200px; // Empêche le titre de devenir trop petit
22
- }
23
-
24
- .header-actions {
25
- display: flex;
26
- gap: 1rem;
27
- align-items: center;
28
-
29
- .sort-options {
30
- display: flex;
31
- gap: 0.5rem;
32
- align-items: center;
33
- flex-wrap: wrap; // Pour le responsive
34
-
35
- .btn.active {
36
- color: white;
37
- }
38
- }
39
-
40
- .add-pack-button {
41
- white-space: nowrap; // Empêche le texte du bouton de se casser
42
- }
43
- }
44
- }
45
-
46
- .pack-list {
47
- display: grid;
48
- gap: 1rem;
49
- padding: 0.5rem;
50
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
51
- @media only screen and (min-width: 480px) {
52
- overflow-y: auto;
53
- }
54
- }
55
-
56
- .pack-card {
57
- border: 1px solid #ddd;
58
- border-radius: 8px;
59
- padding: 1rem;
60
- cursor: pointer;
61
- transition: box-shadow 0.2s, transform 0.2s;
62
- background-color: #fff;
63
-
64
- &:hover {
65
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
66
- transform: translateY(-3px);
67
- }
68
-
69
- .pack-card-header {
70
- display: flex;
71
- justify-content: space-between;
72
- align-items: center;
73
- margin-bottom: 0.5rem;
74
- h3 {
75
- margin: 0;
76
- font-size: 1.2em;
77
- color: var(--primary-color);
78
- display: flex;
79
- align-items: center;
80
- gap: 0.5rem;
81
- }
82
- .pack-stars {
83
- display: flex;
84
- align-items: center;
85
- gap: 0.3rem;
86
- color: #f0ad4e;
87
- }
88
- }
89
-
90
- .pack-description {
91
- font-size: 0.9em;
92
- color: #666;
93
- min-height: 50px;
94
- }
95
-
96
- .pack-card-footer {
97
- margin-top: 1rem;
98
- padding-top: 0.5rem;
99
- border-top: 1px solid #eee;
100
- display: flex;
101
- justify-content: space-between;
102
- align-items: center;
103
- font-size: 0.8em;
104
- color: #888;
105
- .pack-author {
106
- display: flex;
107
- align-items: center;
108
- gap: 0.3rem;
109
- }
110
- .pack-tags {
111
- display: flex;
112
- flex-wrap: wrap;
113
- gap: 0.5rem;
114
- .tag {
115
- background-color: #f0f0f0;
116
- padding: 2px 6px;
117
- border-radius: 4px;
118
- display: flex;
119
- align-items: center;
120
- gap: 0.2rem;
121
- }
122
- }
123
- }
124
- }
125
-
126
- .pack-detail {
127
- display: flex;
128
- flex-direction: column;
129
- height: 100%;
130
- .back-button {
131
- align-self: flex-start;
132
- margin-bottom: 1rem;
133
- }
134
- .pack-detail-header {
135
- display: flex;
136
- justify-content: space-between;
137
- align-items: center;
138
- h1 { margin: 0; }
139
- }
140
- .pack-meta {
141
- display: flex;
142
- gap: 1rem;
143
- color: #777;
144
- margin: 0.5rem 0 1rem 0;
145
- span {
146
- display: flex;
147
- align-items: center;
148
- gap: 0.4rem;
149
- }
150
- }
151
- .pack-content {
152
- flex-grow: 1;
153
- overflow-y: auto;
154
- padding-right: 1rem;
155
- h2 {
156
- border-bottom: 1px solid #eee;
157
- padding-bottom: 0.3rem;
158
- margin-top: 1.5rem;
159
- }
160
- .data-preview {
161
- background-color: #2d2d2d;
162
- color: #f1f1f1;
163
- padding: 1rem;
164
- border-radius: 4px;
165
- max-height: 300px;
166
- overflow: auto;
167
- pre {
168
- margin: 0;
169
- font-size: 0.85em;
170
- }
171
- }
172
- }
173
- }
174
- }
175
-
176
- // À ajouter à la fin de votre fichier CSS
177
- .manual-install-dialog {
178
- width: 100%;
179
-
180
- p {
181
- margin-top: 0;
182
- color: #666;
183
- font-size: 0.9em;
184
- }
185
-
186
- textarea {
187
- width: 100%;
188
- padding: 1rem;
189
- border: 1px solid #ddd;
190
- border-radius: 4px;
191
- font-family: monospace;
192
- resize: vertical;
193
- min-height: 300px;
194
- background-color: #f9f9f9;
195
- color: #333;
196
-
197
- &:focus {
198
- outline: none;
199
- border-color: var(--primary-color);
200
- box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb), 0.2);
201
- }
202
- }
203
-
204
- .dialog-actions {
205
- display: flex;
206
- justify-content: flex-end;
207
- gap: 0.5rem;
208
- margin-top: 1rem;
209
- }
210
- }
1
+ .pack-gallery-container {
2
+ width: 100%;
3
+ max-width: 90vw;
4
+ height: 80vh;
5
+ display: flex;
6
+ flex-direction: column;
7
+
8
+ .gallery-header {
9
+ display: flex;
10
+ flex-wrap: wrap;
11
+ gap: 1rem ;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ padding-bottom: 1rem;
15
+ border-bottom: 1px solid #e0e0e0;
16
+ margin-bottom: 1rem;
17
+
18
+ h1 {
19
+ margin: 0;
20
+ flex: 1; // Permet au titre de prendre l'espace disponible
21
+ min-width: 200px; // Empêche le titre de devenir trop petit
22
+ }
23
+
24
+ .header-actions {
25
+ display: flex;
26
+ gap: 1rem;
27
+ align-items: center;
28
+
29
+ .sort-options {
30
+ display: flex;
31
+ gap: 0.5rem;
32
+ align-items: center;
33
+ flex-wrap: wrap; // Pour le responsive
34
+
35
+ .btn.active {
36
+ color: white;
37
+ }
38
+ }
39
+
40
+ .add-pack-button {
41
+ white-space: nowrap; // Empêche le texte du bouton de se casser
42
+ }
43
+ }
44
+ }
45
+
46
+ .pack-list {
47
+ display: grid;
48
+ gap: 1rem;
49
+ padding: 0.5rem;
50
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
51
+ @media only screen and (min-width: 480px) {
52
+ overflow-y: auto;
53
+ }
54
+ }
55
+
56
+ .pack-card {
57
+ border: 1px solid #ddd;
58
+ border-radius: 8px;
59
+ padding: 1rem;
60
+ cursor: pointer;
61
+ transition: box-shadow 0.2s, transform 0.2s;
62
+ background-color: #fff;
63
+
64
+ &:hover {
65
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
66
+ transform: translateY(-3px);
67
+ }
68
+
69
+ .pack-card-header {
70
+ display: flex;
71
+ justify-content: space-between;
72
+ align-items: center;
73
+ margin-bottom: 0.5rem;
74
+ h3 {
75
+ margin: 0;
76
+ font-size: 1.2em;
77
+ color: var(--primary-color);
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 0.5rem;
81
+ }
82
+ .pack-stars {
83
+ display: flex;
84
+ align-items: center;
85
+ gap: 0.3rem;
86
+ color: #f0ad4e;
87
+ }
88
+ }
89
+
90
+ .pack-description {
91
+ font-size: 0.9em;
92
+ color: #666;
93
+ min-height: 50px;
94
+ }
95
+
96
+ .pack-card-footer {
97
+ margin-top: 1rem;
98
+ padding-top: 0.5rem;
99
+ border-top: 1px solid #eee;
100
+ display: flex;
101
+ justify-content: space-between;
102
+ align-items: center;
103
+ font-size: 0.8em;
104
+ color: #888;
105
+ .pack-author {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 0.3rem;
109
+ }
110
+ .pack-tags {
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ gap: 0.5rem;
114
+ .tag {
115
+ background-color: #f0f0f0;
116
+ padding: 2px 6px;
117
+ border-radius: 4px;
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 0.2rem;
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ .pack-detail {
127
+ display: flex;
128
+ flex-direction: column;
129
+ height: 100%;
130
+ .back-button {
131
+ align-self: flex-start;
132
+ margin-bottom: 1rem;
133
+ }
134
+ .pack-detail-header {
135
+ display: flex;
136
+ justify-content: space-between;
137
+ align-items: center;
138
+ h1 { margin: 0; }
139
+
140
+ .pack-detail-actions {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 1rem;
144
+ }
145
+
146
+ .owner-actions {
147
+ display: flex;
148
+ align-items: center;
149
+ gap: 1rem; /* Espace entre l'indicateur et la case à cocher */
150
+ padding: 0.25rem 0.75rem;
151
+ border: 1px solid #e0e0e0;
152
+ border-radius: 8px;
153
+ background-color: #fafafa;
154
+ .my-pack-indicator {
155
+ display: flex;
156
+ align-items: center;
157
+ gap: 0.4rem;
158
+ }
159
+ }
160
+ }
161
+ .pack-meta {
162
+ display: flex;
163
+ gap: 1rem;
164
+ color: #777;
165
+ margin: 0.5rem 0 1rem 0;
166
+ span {
167
+ display: flex;
168
+ align-items: center;
169
+ gap: 0.4rem;
170
+ }
171
+ }
172
+ .pack-content {
173
+ flex-grow: 1;
174
+ overflow-y: auto;
175
+ padding-right: 1rem;
176
+ h2 {
177
+ border-bottom: 1px solid #eee;
178
+ padding-bottom: 0.3rem;
179
+ margin-top: 1.5rem;
180
+ }
181
+ .data-preview {
182
+ background-color: #2d2d2d;
183
+ color: #f1f1f1;
184
+ padding: 1rem;
185
+ border-radius: 4px;
186
+ max-height: 300px;
187
+ overflow: auto;
188
+ pre {
189
+ margin: 0;
190
+ font-size: 0.85em;
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+
197
+ // À ajouter à la fin de votre fichier CSS
198
+ .manual-install-dialog {
199
+ width: 100%;
200
+
201
+ p {
202
+ margin-top: 0;
203
+ color: #666;
204
+ font-size: 0.9em;
205
+ }
206
+
207
+ textarea {
208
+ width: 100%;
209
+ padding: 1rem;
210
+ border: 1px solid #ddd;
211
+ border-radius: 4px;
212
+ font-family: monospace;
213
+ resize: vertical;
214
+ min-height: 300px;
215
+ background-color: #f9f9f9;
216
+ color: #333;
217
+
218
+ &:focus {
219
+ outline: none;
220
+ border-color: var(--primary-color);
221
+ box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb), 0.2);
222
+ }
223
+ }
224
+
225
+ .dialog-actions {
226
+ display: flex;
227
+ justify-content: flex-end;
228
+ gap: 0.5rem;
229
+ margin-top: 1rem;
230
+ }
231
+ }
@@ -51,10 +51,22 @@ export const MONGO_OPERATORS = {
51
51
  };
52
52
 
53
53
  export const profiles = {
54
- 'personal': ['contact', 'location', 'imageGallery', 'budget', 'currency', 'taxonomy'], // budget,
55
- 'developer': ['alert','endpoint','request','webpage', 'content', 'taxonomy', 'resource', 'translation', 'contact', 'location', 'channel', 'lang', 'token', 'message', 'ticket', 'user', 'permission', 'role'],
56
- 'company': ['alert','request','location', 'order', 'currency', 'product', 'cart', 'cartItem', 'invoice', 'message', 'user', 'role', 'permission', 'token','translation', 'lang', 'webpage', 'content', 'taxonomy', 'contact', 'resource', 'accountingExercise', 'accountingLineItem', 'accountingEntry', 'employee', 'kpi', 'dashboard'],
57
- 'engineer': ['alert','endpoint','request','dashboard', 'kpi', 'user', 'role', 'token', 'permission', 'workflow', 'workflowRun', 'workflowStep', "channel", "message", 'workflowAction', 'workflowTrigger']
54
+ 'personal': {
55
+ "packs": [],
56
+ "models": ['contact', 'location', 'imageGallery', 'budget', 'currency', 'taxonomy']
57
+ }, // budget,
58
+ 'developer': {
59
+ "packs": ["Multilingual starter pack", "Website Starter Pack"],
60
+ "models": ['alert','endpoint','request','webpage', 'content', 'taxonomy', 'resource', 'translation', 'contact', 'location', 'channel', 'lang', 'token', 'message', 'ticket', 'user', 'permission', 'role']
61
+ },
62
+ 'company': {
63
+ "packs": ["E-commerce Starter Kit"],
64
+ "models": ['alert','request','location', 'order', 'currency', 'product', 'cart', 'cartItem', 'invoice', 'message', 'user', 'role', 'permission', 'token','translation', 'lang', 'webpage', 'content', 'taxonomy', 'contact', 'resource', 'accountingExercise', 'accountingLineItem', 'accountingEntry', 'employee', 'kpi', 'dashboard']
65
+ },
66
+ 'engineer': {
67
+ "packs": ["AI Content Generation - Starter Pack"],
68
+ "models":['alert','endpoint','request','dashboard', 'kpi', 'user', 'role', 'token', 'permission', 'workflow', 'workflowRun', 'workflowStep', "channel", "message", 'workflowAction', 'workflowTrigger']
69
+ }
58
70
  }
59
71
 
60
72
  export const OPERAND_TYPES = {