cozy-ui 128.9.0 → 128.10.0
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/CHANGELOG.md +8 -0
- package/assets/icons/ui/matrix.svg +1 -0
- package/package.json +1 -1
- package/react/Contacts/AddModal/ContactForm/contactToFormValues.js +7 -0
- package/react/Contacts/AddModal/ContactForm/contactToFormValues.spec.js +5 -0
- package/react/Contacts/AddModal/ContactForm/fieldsConfig.jsx +6 -0
- package/react/Contacts/AddModal/ContactForm/formValuesToContact.js +3 -0
- package/react/Contacts/AddModal/ContactForm/formValuesToContact.spec.js +57 -0
- package/react/Contacts/AddModal/ContactForm/helpers.js +41 -0
- package/react/Contacts/AddModal/ContactForm/helpers.spec.js +138 -0
- package/react/Contacts/AddModal/ContactForm/index.spec.jsx +12 -0
- package/react/Contacts/AddModal/ContactForm/locales/en.json +1 -0
- package/react/Contacts/AddModal/ContactForm/locales/fr.json +1 -0
- package/react/Contacts/AddModal/Readme.md +1 -1
- package/react/Contacts/AddModal/mocks.js +40 -1
- package/react/Icon/Readme.md +3 -1
- package/react/Icons/Matrix.jsx +12 -0
- package/transpiled/react/Contacts/AddModal/ContactForm/contactToFormValues.js +7 -0
- package/transpiled/react/Contacts/AddModal/ContactForm/fieldsConfig.js +5 -0
- package/transpiled/react/Contacts/AddModal/ContactForm/formValuesToContact.js +3 -1
- package/transpiled/react/Contacts/AddModal/ContactForm/helpers.d.ts +6 -0
- package/transpiled/react/Contacts/AddModal/ContactForm/helpers.js +39 -0
- package/transpiled/react/Contacts/AddModal/ContactForm/locales/index.js +2 -0
- package/transpiled/react/Contacts/AddModal/mocks.d.ts +19 -0
- package/transpiled/react/Contacts/AddModal/mocks.js +32 -0
- package/transpiled/react/Icon/icons-sprite.d.ts +1 -1
- package/transpiled/react/Icon/icons-sprite.js +1 -1
- package/transpiled/react/Icons/Matrix.d.ts +2 -0
- package/transpiled/react/Icons/Matrix.js +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# [128.10.0](https://github.com/cozy/cozy-ui/compare/v128.9.0...v128.10.0) (2025-09-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **Contacts/AddModal:** Add matrix ID input ([db8f522](https://github.com/cozy/cozy-ui/commit/db8f522))
|
|
7
|
+
* **Icons:** Add matrix ([4838a1f](https://github.com/cozy/cozy-ui/commit/4838a1f))
|
|
8
|
+
|
|
1
9
|
# [128.9.0](https://github.com/cozy/cozy-ui/compare/v128.8.0...v128.9.0) (2025-09-16)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="16" height="10" viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg"><path d="M3 1.111H1.333V8.89H3V10H0V0h3v1.111ZM16 10h-3V8.889h1.667V1.11H13V0h3v10ZM9.807 3.667c.587 0 1.043.167 1.368.503.328.332.492.79.492 1.374V9h-1.23V5.72c0-.688-.311-1.032-.931-1.032a.983.983 0 0 0-.531.162.945.945 0 0 0-.36.372V9h-1.23V5.53c0-.258-.08-.462-.241-.612-.161-.153-.387-.23-.68-.23-.153 0-.323.057-.507.171-.18.114-.312.24-.394.377V9h-1.23V3.765h.847l.25.459c.342-.372.784-.557 1.325-.557.699 0 1.226.188 1.58.566.154-.172.369-.309.644-.41.276-.104.552-.156.828-.156Z"/></svg>
|
package/package.json
CHANGED
|
@@ -25,6 +25,7 @@ const contactToFormValues = (contact, t) => {
|
|
|
25
25
|
jobTitle,
|
|
26
26
|
cozy,
|
|
27
27
|
email,
|
|
28
|
+
impp,
|
|
28
29
|
name,
|
|
29
30
|
note,
|
|
30
31
|
phone
|
|
@@ -62,6 +63,11 @@ const contactToFormValues = (contact, t) => {
|
|
|
62
63
|
emailLabel: makeItemLabel(item)
|
|
63
64
|
}))
|
|
64
65
|
: [undefined]
|
|
66
|
+
const matrixValue =
|
|
67
|
+
impp && impp.length > 0
|
|
68
|
+
? impp.find(item => item.label === 'work' && item.protocol === 'matrix')
|
|
69
|
+
?.uri || undefined
|
|
70
|
+
: undefined
|
|
65
71
|
const phoneValue =
|
|
66
72
|
phone && phone.length > 0
|
|
67
73
|
? movePrimaryToHead(phone).map(item => ({
|
|
@@ -81,6 +87,7 @@ const contactToFormValues = (contact, t) => {
|
|
|
81
87
|
familyName: name?.familyName,
|
|
82
88
|
phone: phoneValue,
|
|
83
89
|
email: emailValue,
|
|
90
|
+
matrix: matrixValue,
|
|
84
91
|
address: addressValue,
|
|
85
92
|
cozy: cozyValue,
|
|
86
93
|
cozyLabel: cozyLabel,
|
|
@@ -16,6 +16,7 @@ describe('contactToFormValues function', () => {
|
|
|
16
16
|
cozy: undefined,
|
|
17
17
|
cozyLabel: undefined,
|
|
18
18
|
email: [undefined],
|
|
19
|
+
matrix: undefined,
|
|
19
20
|
familyName: undefined,
|
|
20
21
|
givenName: undefined,
|
|
21
22
|
note: undefined,
|
|
@@ -59,6 +60,7 @@ describe('contactToFormValues function', () => {
|
|
|
59
60
|
jobTitle: undefined,
|
|
60
61
|
cozy: undefined,
|
|
61
62
|
email: undefined,
|
|
63
|
+
impp: undefined,
|
|
62
64
|
name: {
|
|
63
65
|
givenName: 'Jane',
|
|
64
66
|
familyName: 'Doe'
|
|
@@ -76,6 +78,7 @@ describe('contactToFormValues function', () => {
|
|
|
76
78
|
cozy: undefined,
|
|
77
79
|
cozyLabel: undefined,
|
|
78
80
|
email: [undefined],
|
|
81
|
+
matrix: undefined,
|
|
79
82
|
givenName: 'Jane',
|
|
80
83
|
familyName: 'Doe',
|
|
81
84
|
note: undefined,
|
|
@@ -101,6 +104,7 @@ describe('contactToFormValues function', () => {
|
|
|
101
104
|
jobTitle: undefined,
|
|
102
105
|
cozy: undefined,
|
|
103
106
|
email: undefined,
|
|
107
|
+
impp: undefined,
|
|
104
108
|
name: undefined,
|
|
105
109
|
note: 'Eligendi velit eos ab libero molestiae consequatur autem sed.',
|
|
106
110
|
phone: []
|
|
@@ -115,6 +119,7 @@ describe('contactToFormValues function', () => {
|
|
|
115
119
|
cozy: undefined,
|
|
116
120
|
cozyLabel: undefined,
|
|
117
121
|
email: [undefined],
|
|
122
|
+
matrix: undefined,
|
|
118
123
|
givenName: undefined,
|
|
119
124
|
familyName: undefined,
|
|
120
125
|
note: 'Eligendi velit eos ab libero molestiae consequatur autem sed.',
|
|
@@ -8,6 +8,7 @@ import CommentIcon from '../../../Icons/Comment'
|
|
|
8
8
|
import CompanyIcon from '../../../Icons/Company'
|
|
9
9
|
import EmailIcon from '../../../Icons/Email'
|
|
10
10
|
import LocationIcon from '../../../Icons/Location'
|
|
11
|
+
import MatrixIcon from '../../../Icons/Matrix'
|
|
11
12
|
import PeopleIcon from '../../../Icons/People'
|
|
12
13
|
import RelationshipIcon from '../../../Icons/Relationship'
|
|
13
14
|
import TelephoneIcon from '../../../Icons/Telephone'
|
|
@@ -140,6 +141,11 @@ export const fields = [
|
|
|
140
141
|
]
|
|
141
142
|
}
|
|
142
143
|
},
|
|
144
|
+
{
|
|
145
|
+
name: 'matrix',
|
|
146
|
+
icon: MatrixIcon,
|
|
147
|
+
type: 'text'
|
|
148
|
+
},
|
|
143
149
|
{
|
|
144
150
|
name: 'address',
|
|
145
151
|
icon: LocationIcon,
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
removeRelatedContactRelationships,
|
|
6
6
|
createAddress,
|
|
7
7
|
getRelatedContactRelationships,
|
|
8
|
+
makeImppValues,
|
|
8
9
|
makeTypeAndLabel
|
|
9
10
|
} from './helpers'
|
|
10
11
|
|
|
@@ -18,6 +19,7 @@ const formValuesToContact = ({ formValues, oldContact, t }) => {
|
|
|
18
19
|
phone,
|
|
19
20
|
email,
|
|
20
21
|
address,
|
|
22
|
+
matrix,
|
|
21
23
|
cozy,
|
|
22
24
|
company,
|
|
23
25
|
jobTitle,
|
|
@@ -62,6 +64,7 @@ const formValuesToContact = ({ formValues, oldContact, t }) => {
|
|
|
62
64
|
primary: index === 0
|
|
63
65
|
}))
|
|
64
66
|
: [],
|
|
67
|
+
impp: makeImppValues(oldContactCleaned, matrix),
|
|
65
68
|
address: createAddress({ address, oldContact: oldContactCleaned, t }),
|
|
66
69
|
phone: phone
|
|
67
70
|
? phone
|
|
@@ -83,6 +83,14 @@ describe('formValuesToContact', () => {
|
|
|
83
83
|
label: undefined
|
|
84
84
|
}
|
|
85
85
|
],
|
|
86
|
+
impp: [
|
|
87
|
+
{
|
|
88
|
+
uri: 'john@doe.matrix.net',
|
|
89
|
+
protocol: 'matrix',
|
|
90
|
+
label: 'work',
|
|
91
|
+
primary: true
|
|
92
|
+
}
|
|
93
|
+
],
|
|
86
94
|
fullname: 'John J. Doe',
|
|
87
95
|
indexes: {
|
|
88
96
|
byFamilyNameGivenNameEmailCozyUrl:
|
|
@@ -160,6 +168,7 @@ describe('formValuesToContact', () => {
|
|
|
160
168
|
emailLabel: undefined
|
|
161
169
|
}
|
|
162
170
|
],
|
|
171
|
+
matrix: 'john@doe.matrix.net',
|
|
163
172
|
familyName: 'Doe',
|
|
164
173
|
givenName: 'Jane',
|
|
165
174
|
note: undefined,
|
|
@@ -182,6 +191,14 @@ describe('formValuesToContact', () => {
|
|
|
182
191
|
cozy: [],
|
|
183
192
|
displayName: 'Jane Doe',
|
|
184
193
|
email: [],
|
|
194
|
+
impp: [
|
|
195
|
+
{
|
|
196
|
+
uri: 'john@doe.matrix.net',
|
|
197
|
+
protocol: 'matrix',
|
|
198
|
+
label: 'work',
|
|
199
|
+
primary: true
|
|
200
|
+
}
|
|
201
|
+
],
|
|
185
202
|
fullname: 'Jane Doe',
|
|
186
203
|
indexes: { byFamilyNameGivenNameEmailCozyUrl: 'doejane' },
|
|
187
204
|
jobTitle: '',
|
|
@@ -294,6 +311,7 @@ describe('formValuesToContact', () => {
|
|
|
294
311
|
birthplace: undefined,
|
|
295
312
|
note: undefined,
|
|
296
313
|
address: [undefined],
|
|
314
|
+
matrix: undefined,
|
|
297
315
|
email: [undefined],
|
|
298
316
|
phone: [undefined],
|
|
299
317
|
cozy: undefined,
|
|
@@ -307,6 +325,25 @@ describe('formValuesToContact', () => {
|
|
|
307
325
|
jobTitle: '',
|
|
308
326
|
address: [],
|
|
309
327
|
email: [],
|
|
328
|
+
impp: [
|
|
329
|
+
{
|
|
330
|
+
uri: 'john.doe@xmpp.net',
|
|
331
|
+
protocol: 'xmpp',
|
|
332
|
+
label: 'home',
|
|
333
|
+
primary: false
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
uri: 'john.doe@xmpp.net',
|
|
337
|
+
protocol: 'xmpp',
|
|
338
|
+
label: 'work',
|
|
339
|
+
primary: false
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
uri: 'john@doe.matrix.home',
|
|
343
|
+
protocol: 'matrix',
|
|
344
|
+
label: 'home'
|
|
345
|
+
}
|
|
346
|
+
],
|
|
310
347
|
cozy: [],
|
|
311
348
|
phone: [],
|
|
312
349
|
birthday: '',
|
|
@@ -335,6 +372,7 @@ describe('formValuesToContact', () => {
|
|
|
335
372
|
birthplace: '',
|
|
336
373
|
note: '',
|
|
337
374
|
address: [{}],
|
|
375
|
+
matrix: '',
|
|
338
376
|
email: [{}],
|
|
339
377
|
phone: [{}],
|
|
340
378
|
cozy: '',
|
|
@@ -348,6 +386,25 @@ describe('formValuesToContact', () => {
|
|
|
348
386
|
jobTitle: '',
|
|
349
387
|
address: [],
|
|
350
388
|
email: [],
|
|
389
|
+
impp: [
|
|
390
|
+
{
|
|
391
|
+
uri: 'john.doe@xmpp.net',
|
|
392
|
+
protocol: 'xmpp',
|
|
393
|
+
label: 'home',
|
|
394
|
+
primary: false
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
uri: 'john.doe@xmpp.net',
|
|
398
|
+
protocol: 'xmpp',
|
|
399
|
+
label: 'work',
|
|
400
|
+
primary: false
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
uri: 'john@doe.matrix.home',
|
|
404
|
+
protocol: 'matrix',
|
|
405
|
+
label: 'home'
|
|
406
|
+
}
|
|
407
|
+
],
|
|
351
408
|
cozy: [],
|
|
352
409
|
phone: [],
|
|
353
410
|
birthday: '',
|
|
@@ -281,6 +281,47 @@ export const makeCustomLabel = (value, t) => {
|
|
|
281
281
|
return firstString + secondString || null
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
+
/**
|
|
285
|
+
*
|
|
286
|
+
* @param {import('cozy-client/types/types').IOCozyContact} oldContact - Contact to be modified
|
|
287
|
+
* @param {string?} value - New URI value to add to the Contact
|
|
288
|
+
* @returns {{ uri: string, protocol: string, label: string, primary?: boolean }[]}
|
|
289
|
+
*/
|
|
290
|
+
export const makeImppValues = (oldContact, value) => {
|
|
291
|
+
const _value = value?.trim() || ''
|
|
292
|
+
const oldImppValues = oldContact?.impp
|
|
293
|
+
|
|
294
|
+
if (_value) {
|
|
295
|
+
if (!oldImppValues || oldImppValues.length === 0) {
|
|
296
|
+
return [
|
|
297
|
+
{
|
|
298
|
+
uri: _value,
|
|
299
|
+
protocol: 'matrix',
|
|
300
|
+
label: 'work',
|
|
301
|
+
primary: true
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
return oldImppValues.map(el => {
|
|
307
|
+
if (el.protocol === 'matrix' && el.label === 'work') {
|
|
308
|
+
return { ...el, uri: _value }
|
|
309
|
+
}
|
|
310
|
+
return el
|
|
311
|
+
})
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return (
|
|
315
|
+
oldImppValues
|
|
316
|
+
?.map(el => {
|
|
317
|
+
if (el.protocol !== 'matrix' || el.label !== 'work') {
|
|
318
|
+
return el
|
|
319
|
+
}
|
|
320
|
+
})
|
|
321
|
+
.filter(Boolean) || []
|
|
322
|
+
)
|
|
323
|
+
}
|
|
324
|
+
|
|
284
325
|
/**
|
|
285
326
|
*
|
|
286
327
|
* @param {string} name
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
moveToHead,
|
|
3
3
|
makeItemLabel,
|
|
4
4
|
makeTypeAndLabel,
|
|
5
|
+
makeImppValues,
|
|
5
6
|
makeInitialCustomValue
|
|
6
7
|
} from './helpers'
|
|
7
8
|
|
|
@@ -73,6 +74,143 @@ describe('makeTypeAndLabel', () => {
|
|
|
73
74
|
})
|
|
74
75
|
})
|
|
75
76
|
|
|
77
|
+
describe('makeImppValues', () => {
|
|
78
|
+
it('should replace only uri for {label: "work", protocol: "matrix"}', () => {
|
|
79
|
+
const res = makeImppValues(
|
|
80
|
+
{
|
|
81
|
+
impp: [
|
|
82
|
+
{
|
|
83
|
+
uri: 'john.doe@xmpp.net',
|
|
84
|
+
protocol: 'xmpp',
|
|
85
|
+
label: 'home',
|
|
86
|
+
primary: false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
uri: 'john.doe@xmpp.net',
|
|
90
|
+
protocol: 'xmpp',
|
|
91
|
+
label: 'work',
|
|
92
|
+
primary: false
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
uri: 'john@doe.matrix.net',
|
|
96
|
+
protocol: 'matrix',
|
|
97
|
+
label: 'work',
|
|
98
|
+
primary: true
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
uri: 'john@doe.matrix.home',
|
|
102
|
+
protocol: 'matrix',
|
|
103
|
+
label: 'home'
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
'newMatrixURI'
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
expect(res).toStrictEqual([
|
|
111
|
+
{
|
|
112
|
+
uri: 'john.doe@xmpp.net',
|
|
113
|
+
protocol: 'xmpp',
|
|
114
|
+
label: 'home',
|
|
115
|
+
primary: false
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
uri: 'john.doe@xmpp.net',
|
|
119
|
+
protocol: 'xmpp',
|
|
120
|
+
label: 'work',
|
|
121
|
+
primary: false
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
uri: 'newMatrixURI',
|
|
125
|
+
protocol: 'matrix',
|
|
126
|
+
label: 'work',
|
|
127
|
+
primary: true
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
uri: 'john@doe.matrix.home',
|
|
131
|
+
protocol: 'matrix',
|
|
132
|
+
label: 'home'
|
|
133
|
+
}
|
|
134
|
+
])
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
it('should remove correctly', () => {
|
|
138
|
+
const res = makeImppValues(
|
|
139
|
+
{
|
|
140
|
+
impp: [
|
|
141
|
+
{
|
|
142
|
+
uri: 'john.doe@xmpp.net',
|
|
143
|
+
protocol: 'xmpp',
|
|
144
|
+
label: 'home',
|
|
145
|
+
primary: false
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
uri: 'john.doe@xmpp.net',
|
|
149
|
+
protocol: 'xmpp',
|
|
150
|
+
label: 'work',
|
|
151
|
+
primary: false
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
uri: 'john@doe.matrix.net',
|
|
155
|
+
protocol: 'matrix',
|
|
156
|
+
label: 'work',
|
|
157
|
+
primary: true
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
uri: 'john@doe.matrix.home',
|
|
161
|
+
protocol: 'matrix',
|
|
162
|
+
label: 'home'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
''
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
expect(res).toStrictEqual([
|
|
170
|
+
{
|
|
171
|
+
uri: 'john.doe@xmpp.net',
|
|
172
|
+
protocol: 'xmpp',
|
|
173
|
+
label: 'home',
|
|
174
|
+
primary: false
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
uri: 'john.doe@xmpp.net',
|
|
178
|
+
protocol: 'xmpp',
|
|
179
|
+
label: 'work',
|
|
180
|
+
primary: false
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
uri: 'john@doe.matrix.home',
|
|
184
|
+
protocol: 'matrix',
|
|
185
|
+
label: 'home'
|
|
186
|
+
}
|
|
187
|
+
])
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
it('should add the matrix impp values for the first time if no impp attribute', () => {
|
|
191
|
+
const expected = [
|
|
192
|
+
{
|
|
193
|
+
uri: 'newMatrixURI',
|
|
194
|
+
protocol: 'matrix',
|
|
195
|
+
label: 'work',
|
|
196
|
+
primary: true
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
|
|
200
|
+
expect(makeImppValues({ impp: undefined }, 'newMatrixURI')).toStrictEqual(
|
|
201
|
+
expected
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
expect(makeImppValues({ impp: [] }, 'newMatrixURI')).toStrictEqual(expected)
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
it('should not add empty object if value is empty', () => {
|
|
208
|
+
expect(makeImppValues({ impp: undefined }, '')).toStrictEqual([])
|
|
209
|
+
|
|
210
|
+
expect(makeImppValues({ impp: [] }, '')).toStrictEqual([])
|
|
211
|
+
})
|
|
212
|
+
})
|
|
213
|
+
|
|
76
214
|
describe('makeInitialCustomValue', () => {
|
|
77
215
|
it('should return undefined if no name', () => {
|
|
78
216
|
const res = makeInitialCustomValue(
|
|
@@ -21,6 +21,7 @@ const labels = [
|
|
|
21
21
|
'Phone',
|
|
22
22
|
'Email',
|
|
23
23
|
'Address',
|
|
24
|
+
'Matrix ID',
|
|
24
25
|
'Twake URL',
|
|
25
26
|
'Company',
|
|
26
27
|
'Job title',
|
|
@@ -54,6 +55,7 @@ describe('ContactForm', () => {
|
|
|
54
55
|
expect(screen.queryByDisplayValue(contact.name.familyName)).not.toBeNull()
|
|
55
56
|
expect(screen.queryByDisplayValue(contact.phone[0].number)).not.toBeNull()
|
|
56
57
|
expect(screen.queryByDisplayValue(contact.email[0].address)).not.toBeNull()
|
|
58
|
+
expect(screen.queryByDisplayValue(contact.impp[2].uri)).not.toBeNull()
|
|
57
59
|
expect(
|
|
58
60
|
screen.queryByDisplayValue(contact.address[0].formattedAddress)
|
|
59
61
|
).not.toBeNull()
|
|
@@ -78,6 +80,14 @@ describe('ContactForm', () => {
|
|
|
78
80
|
type: undefined
|
|
79
81
|
}
|
|
80
82
|
],
|
|
83
|
+
impp: [
|
|
84
|
+
{
|
|
85
|
+
uri: '123-matrixID-456',
|
|
86
|
+
protocol: 'matrix',
|
|
87
|
+
label: 'work',
|
|
88
|
+
primary: true
|
|
89
|
+
}
|
|
90
|
+
],
|
|
81
91
|
birthday: '2015-12-31',
|
|
82
92
|
birthplace: 'somewhere',
|
|
83
93
|
gender: 'male',
|
|
@@ -124,6 +134,7 @@ describe('ContactForm', () => {
|
|
|
124
134
|
additionalName: '',
|
|
125
135
|
'phone[0].phone': '+33678987654',
|
|
126
136
|
'email[0].email': 'jcvc@cozy.cloud',
|
|
137
|
+
matrix: '123-matrixID-456',
|
|
127
138
|
cozy: 'https://jcvd.cozy.cloud',
|
|
128
139
|
company: 'Cozy CLoud',
|
|
129
140
|
jobTitle: 'Dreamer',
|
|
@@ -171,6 +182,7 @@ describe('ContactForm', () => {
|
|
|
171
182
|
Lastname: 'Van Cozy',
|
|
172
183
|
Phone: '+33678987654',
|
|
173
184
|
Email: 'jcvc@cozy.cloud',
|
|
185
|
+
Matrix: '123-matrixID-456',
|
|
174
186
|
Address: '18 rue des fleurs, Pecado',
|
|
175
187
|
'Twake URL': 'https://jcvd.cozy.cloud',
|
|
176
188
|
Company: 'Cozy CLoud',
|
|
@@ -8,7 +8,7 @@ import ContactsAddModal from 'cozy-ui/transpiled/react/Contacts/AddModal'
|
|
|
8
8
|
import DemoProvider from 'cozy-ui/docs/components/DemoProvider'
|
|
9
9
|
import AlertProvider from 'cozy-ui/transpiled/react/providers/Alert'
|
|
10
10
|
import Button from 'cozy-ui/transpiled/react/Buttons'
|
|
11
|
-
import { johnDoeContact
|
|
11
|
+
import { johnDoeContact } from 'cozy-ui/transpiled/react/Contacts/AddModal/mocks'
|
|
12
12
|
import contacts from 'cozy-ui/transpiled/react/ContactsList/_mockContacts.json'
|
|
13
13
|
import Variants from 'cozy-ui/docs/components/Variants'
|
|
14
14
|
|
|
@@ -30,6 +30,31 @@ export const johnDoeContact = {
|
|
|
30
30
|
primary: true
|
|
31
31
|
}
|
|
32
32
|
],
|
|
33
|
+
impp: [
|
|
34
|
+
{
|
|
35
|
+
uri: 'john.doe@xmpp.net',
|
|
36
|
+
protocol: 'xmpp',
|
|
37
|
+
label: 'home',
|
|
38
|
+
primary: false
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
uri: 'john.doe@xmpp.net',
|
|
42
|
+
protocol: 'xmpp',
|
|
43
|
+
label: 'work',
|
|
44
|
+
primary: false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
uri: 'john@doe.matrix.net',
|
|
48
|
+
protocol: 'matrix',
|
|
49
|
+
label: 'work',
|
|
50
|
+
primary: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
uri: 'john@doe.matrix.home',
|
|
54
|
+
protocol: 'matrix',
|
|
55
|
+
label: 'home'
|
|
56
|
+
}
|
|
57
|
+
],
|
|
33
58
|
birthday: '1999-5-1',
|
|
34
59
|
birthplace: 'somewhere',
|
|
35
60
|
gender: 'male',
|
|
@@ -71,6 +96,7 @@ export const johnDoeFormValues = {
|
|
|
71
96
|
gender: 'male',
|
|
72
97
|
cozy: 'https://johndoe.mycozy.cloud',
|
|
73
98
|
cozyLabel: '{"type":"MyCozy"}',
|
|
99
|
+
matrix: 'john@doe.matrix.net',
|
|
74
100
|
address: [
|
|
75
101
|
{
|
|
76
102
|
fieldId: 'fieldId_1',
|
|
@@ -167,6 +193,20 @@ export const johnDoeContactWithRelated = {
|
|
|
167
193
|
type: 'Work'
|
|
168
194
|
}
|
|
169
195
|
],
|
|
196
|
+
impp: [
|
|
197
|
+
{
|
|
198
|
+
uri: 'john.doe@xmpp.net',
|
|
199
|
+
protocol: 'xmpp',
|
|
200
|
+
label: 'home',
|
|
201
|
+
primary: false
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
uri: 'john@doe.matrix.net',
|
|
205
|
+
protocol: 'matrix',
|
|
206
|
+
label: 'work',
|
|
207
|
+
primary: true
|
|
208
|
+
}
|
|
209
|
+
],
|
|
170
210
|
email: [
|
|
171
211
|
{
|
|
172
212
|
address: 'john.doe@posteo.net',
|
|
@@ -211,7 +251,6 @@ export const johnDoeContactWithRelated = {
|
|
|
211
251
|
primary: false
|
|
212
252
|
}
|
|
213
253
|
],
|
|
214
|
-
|
|
215
254
|
relationships: {
|
|
216
255
|
accounts: { data: [] },
|
|
217
256
|
groups: { data: [] },
|
package/react/Icon/Readme.md
CHANGED
|
@@ -229,6 +229,7 @@ import Logout from 'cozy-ui/transpiled/react/Icons/Logout'
|
|
|
229
229
|
import MagicTrick from 'cozy-ui/transpiled/react/Icons/MagicTrick'
|
|
230
230
|
import Magnet from 'cozy-ui/transpiled/react/Icons/Magnet'
|
|
231
231
|
import Magnifier from 'cozy-ui/transpiled/react/Icons/Magnifier'
|
|
232
|
+
import Matrix from 'cozy-ui/transpiled/react/Icons/Matrix'
|
|
232
233
|
import Merge from 'cozy-ui/transpiled/react/Icons/Merge'
|
|
233
234
|
import Moped from 'cozy-ui/transpiled/react/Icons/Moped'
|
|
234
235
|
import Mosaic from 'cozy-ui/transpiled/react/Icons/Mosaic'
|
|
@@ -512,6 +513,7 @@ const icons = [
|
|
|
512
513
|
MagicTrick,
|
|
513
514
|
Magnet,
|
|
514
515
|
Magnifier,
|
|
516
|
+
Matrix,
|
|
515
517
|
Merge,
|
|
516
518
|
Moped,
|
|
517
519
|
Mosaic,
|
|
@@ -992,7 +994,7 @@ import Typography from 'cozy-ui/transpiled/react/Typography'
|
|
|
992
994
|
|
|
993
995
|
const colors = ['#297EF2', '#08b442', '#B449E7', '#F52D2D', '#FF962F']
|
|
994
996
|
let i = 0
|
|
995
|
-
const availableIcons = ['album-add','album-remove','album','answer','apple','archive','arrowUp','assign-admin','assign-moderator','attachment','attention','bank-check','bank','banking-add','banking','bell','benefit','bike','bill','bottom','browser-brave','browser-chrome','browser-duckduckgo','browser-edge','browser-edge-chromium','browser-firefox','browser-ie','browser-opera','browser-safari','burger','bus','calendar','camera','car','carbonCopy','carpooling','categories','certified','check-circle','check-list','check-square','check','checkbox','chess','child','circle-filled','clock','clock-outline','cloud-happy','cloud-rainbow','cloud-plus-outlined','cloud','cloud2','collect','cocktail','comment','company','compare','compass','connector','contract','contrast','copy','cozy-circle','cozy-laugh', 'cozy-lock', 'cozy-text', 'cozy-release', 'credit-card-add','credit-card','credit','crop','cross-circle-outline','cross-circle','cross-medium','cross-small','cross','cube','dash','dashboard','data-control','debit','desktop-download','devices','discuss','dots','down','download','drawing-arrow-up','dropdown-close','dropdown-open','dropdown','dropup','electric-bike','electric-car','electric-scooter','email-notification','email-open','email','eu','euro','exchange','eye-closed','eye','face-id','file-add','file-duotone','file-new','file-none','file-outline','file','filter','fingerprint','fitness','flag-outlined','flag','flash-auto','flashlight','folder-add','folder-moveto','folder-open','folder','forbidden','from-user','gear','globe','gouv','graph-circle','grid','group-list','groups','growth','hand','heart','help','help-outlined','history','home','hourglass','image','info-outlined','info','justice','key','key2','label-outlined','laudry','laptop','left','library','lightbulb','lightning','link-out','link','list','list-min','location','lock', 'lock-screen', 'logout','magic-trick','magnet','magnifier','merge','moped','mosaic','mosaic-min','motorcycle','mountain','movement-in','movement-out','mouvement','moveto','multi-files','music','new','next','note','notification-email','number','offline','online', 'openapp', 'openwith','palette','paper','paperplane','password','pen','people','peoples','percent-circle','percent','person-add','personal-data','phone-download','phone-upload','phone','pie-chart','pin','plane','plus-small','plus', 'pop-inside', 'previous','printer','qualify','radio-checked','radio-unchecked','refresh','relationship','remboursement','rename','repare','reply','restaurant','restore-straight','restore','right','rise','rotate-left','rotate-right','sad-cozy','safe','school','scooter','secutiry','select-all','server','setting','share-circle','share','shield','shop','sound','spinner','sport-bag','stack','star','star-outline','stats','stop', 'subway', 'support', 'swap', 'sync-cozy','sync','tab','tag','target','task','team','telecom','telephone','text','text-info','to-the-cloud','top','train','tram','trash','trophy', 'uncloud', 'unknow','unlink','unlock','up','upload','videos','walk','wallet-add','wallet-new','wallet','warn','warning-circle','warning','water','wrench-circle','work']
|
|
997
|
+
const availableIcons = ['album-add','album-remove','album','answer','apple','archive','arrowUp','assign-admin','assign-moderator','attachment','attention','bank-check','bank','banking-add','banking','bell','benefit','bike','bill','bottom','browser-brave','browser-chrome','browser-duckduckgo','browser-edge','browser-edge-chromium','browser-firefox','browser-ie','browser-opera','browser-safari','burger','bus','calendar','camera','car','carbonCopy','carpooling','categories','certified','check-circle','check-list','check-square','check','checkbox','chess','child','circle-filled','clock','clock-outline','cloud-happy','cloud-rainbow','cloud-plus-outlined','cloud','cloud2','collect','cocktail','comment','company','compare','compass','connector','contract','contrast','copy','cozy-circle','cozy-laugh', 'cozy-lock', 'cozy-text', 'cozy-release', 'credit-card-add','credit-card','credit','crop','cross-circle-outline','cross-circle','cross-medium','cross-small','cross','cube','dash','dashboard','data-control','debit','desktop-download','devices','discuss','dots','down','download','drawing-arrow-up','dropdown-close','dropdown-open','dropdown','dropup','electric-bike','electric-car','electric-scooter','email-notification','email-open','email','eu','euro','exchange','eye-closed','eye','face-id','file-add','file-duotone','file-new','file-none','file-outline','file','filter','fingerprint','fitness','flag-outlined','flag','flash-auto','flashlight','folder-add','folder-moveto','folder-open','folder','forbidden','from-user','gear','globe','gouv','graph-circle','grid','group-list','groups','growth','hand','heart','help','help-outlined','history','home','hourglass','image','info-outlined','info','justice','key','key2','label-outlined','laudry','laptop','left','library','lightbulb','lightning','link-out','link','list','list-min','location','lock', 'lock-screen', 'logout','magic-trick','magnet','magnifier','matrix','merge','moped','mosaic','mosaic-min','motorcycle','mountain','movement-in','movement-out','mouvement','moveto','multi-files','music','new','next','note','notification-email','number','offline','online', 'openapp', 'openwith','palette','paper','paperplane','password','pen','people','peoples','percent-circle','percent','person-add','personal-data','phone-download','phone-upload','phone','pie-chart','pin','plane','plus-small','plus', 'pop-inside', 'previous','printer','qualify','radio-checked','radio-unchecked','refresh','relationship','remboursement','rename','repare','reply','restaurant','restore-straight','restore','right','rise','rotate-left','rotate-right','sad-cozy','safe','school','scooter','secutiry','select-all','server','setting','share-circle','share','shield','shop','sound','spinner','sport-bag','stack','star','star-outline','stats','stop', 'subway', 'support', 'swap', 'sync-cozy','sync','tab','tag','target','task','team','telecom','telephone','text','text-info','to-the-cloud','top','train','tram','trash','trophy', 'uncloud', 'unknow','unlink','unlock','up','upload','videos','walk','wallet-add','wallet-new','wallet','warn','warning-circle','warning','water','wrench-circle','work']
|
|
996
998
|
;
|
|
997
999
|
|
|
998
1000
|
<Grid container spacing={2}>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Automatically created, please run `scripts/generate-svgr-icon.sh assets/icons/ui/matrix.svg` to regenerate;
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
function SvgMatrix(props) {
|
|
5
|
+
return (
|
|
6
|
+
<svg viewBox="0 0 16 10" {...props}>
|
|
7
|
+
<path d="M3 1.111H1.333V8.89H3V10H0V0h3v1.111zM16 10h-3V8.889h1.667V1.11H13V0h3v10zM9.807 3.667c.587 0 1.043.167 1.368.503.328.332.492.79.492 1.374V9h-1.23V5.72c0-.688-.311-1.032-.931-1.032a.983.983 0 00-.531.162.945.945 0 00-.36.372V9h-1.23V5.53c0-.258-.08-.462-.241-.612-.161-.153-.387-.23-.68-.23-.153 0-.323.057-.507.171-.18.114-.312.24-.394.377V9h-1.23V3.765h.847l.25.459c.342-.372.784-.557 1.325-.557.699 0 1.226.188 1.58.566.154-.172.369-.309.644-.41.276-.104.552-.156.828-.156z" />
|
|
8
|
+
</svg>
|
|
9
|
+
)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default SvgMatrix
|
|
@@ -13,6 +13,8 @@ var contactToFormValues = function contactToFormValues(contact, t) {
|
|
|
13
13
|
}, {});
|
|
14
14
|
|
|
15
15
|
if (contact) {
|
|
16
|
+
var _impp$find;
|
|
17
|
+
|
|
16
18
|
var gender = contact.gender,
|
|
17
19
|
address = contact.address,
|
|
18
20
|
birthday = contact.birthday,
|
|
@@ -21,6 +23,7 @@ var contactToFormValues = function contactToFormValues(contact, t) {
|
|
|
21
23
|
jobTitle = contact.jobTitle,
|
|
22
24
|
cozy = contact.cozy,
|
|
23
25
|
email = contact.email,
|
|
26
|
+
impp = contact.impp,
|
|
24
27
|
name = contact.name,
|
|
25
28
|
note = contact.note,
|
|
26
29
|
phone = contact.phone;
|
|
@@ -54,6 +57,9 @@ var contactToFormValues = function contactToFormValues(contact, t) {
|
|
|
54
57
|
emailLabel: makeItemLabel(item)
|
|
55
58
|
};
|
|
56
59
|
}) : [undefined];
|
|
60
|
+
var matrixValue = impp && impp.length > 0 ? ((_impp$find = impp.find(function (item) {
|
|
61
|
+
return item.label === 'work' && item.protocol === 'matrix';
|
|
62
|
+
})) === null || _impp$find === void 0 ? void 0 : _impp$find.uri) || undefined : undefined;
|
|
57
63
|
var phoneValue = phone && phone.length > 0 ? movePrimaryToHead(phone).map(function (item) {
|
|
58
64
|
return {
|
|
59
65
|
fieldId: uniqueId('fieldId_'),
|
|
@@ -70,6 +76,7 @@ var contactToFormValues = function contactToFormValues(contact, t) {
|
|
|
70
76
|
familyName: name === null || name === void 0 ? void 0 : name.familyName,
|
|
71
77
|
phone: phoneValue,
|
|
72
78
|
email: emailValue,
|
|
79
|
+
matrix: matrixValue,
|
|
73
80
|
address: addressValue,
|
|
74
81
|
cozy: cozyValue,
|
|
75
82
|
cozyLabel: cozyLabel,
|