contacts-pane 3.0.2 → 3.0.3
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 +53 -1
- package/dist/contactsPane.js +6487 -763
- package/dist/contactsPane.js.map +1 -1
- package/dist/contactsPane.min.js +2 -0
- package/dist/contactsPane.min.js.map +1 -0
- package/dist/styles/contactsPane.css +602 -0
- package/dist/styles/contactsRDFFormsEnforced.css +513 -0
- package/dist/styles/groupMembership.css +115 -0
- package/dist/styles/individual.css +12 -0
- package/dist/styles/localUtils.css +49 -0
- package/dist/styles/mugshotGallery.css +17 -0
- package/dist/styles/toolsPane.css +43 -0
- package/dist/styles/utilities.css +69 -0
- package/dist/styles/webidControl.css +90 -0
- package/package.json +23 -17
- package/dist/autocompleteBar.d.ts +0 -3
- package/dist/autocompleteBar.d.ts.map +0 -1
- package/dist/autocompleteBar.js +0 -90
- package/dist/autocompleteBar.js.map +0 -1
- package/dist/autocompleteField.d.ts +0 -20
- package/dist/autocompleteField.d.ts.map +0 -1
- package/dist/autocompleteField.js +0 -165
- package/dist/autocompleteField.js.map +0 -1
- package/dist/autocompletePicker.d.ts +0 -15
- package/dist/autocompletePicker.d.ts.map +0 -1
- package/dist/autocompletePicker.js +0 -253
- package/dist/autocompletePicker.js.map +0 -1
- package/dist/contactLogic.js +0 -223
- package/dist/contactLogic.js.map +0 -1
- package/dist/groupMembershipControl.js +0 -107
- package/dist/groupMembershipControl.js.map +0 -1
- package/dist/individual.js +0 -115
- package/dist/individual.js.map +0 -1
- package/dist/mintNewAddressBook.js +0 -145
- package/dist/mintNewAddressBook.js.map +0 -1
- package/dist/mugshotGallery.js +0 -264
- package/dist/mugshotGallery.js.map +0 -1
- package/dist/publicData.d.ts +0 -82
- package/dist/publicData.d.ts.map +0 -1
- package/dist/publicData.js +0 -421
- package/dist/publicData.js.map +0 -1
- package/dist/toolsPane.js +0 -671
- package/dist/toolsPane.js.map +0 -1
- package/dist/webidControl.js +0 -320
- package/dist/webidControl.js.map +0 -1
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
/* Solid-UI form */
|
|
2
|
+
|
|
3
|
+
/* Vertically center autocomplete input in .formFieldValue */
|
|
4
|
+
.individualPane .formFieldValue > div[style*="flex-direction: row"],
|
|
5
|
+
.contactPane .formFieldValue > div[style*="flex-direction: row"] {
|
|
6
|
+
align-items: center;
|
|
7
|
+
display: flex;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.individualPane .formFieldValue input[data-testid="autocomplete-input"],
|
|
11
|
+
.contactPane .formFieldValue input[data-testid="autocomplete-input"] {
|
|
12
|
+
vertical-align: middle;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.individualPane .hoverControl,
|
|
16
|
+
.contactPane .hoverControl {
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* In contactPane, hover controls in table cells may contain a link + delete icon.
|
|
21
|
+
Make the cell grow and keep the delete icon right-aligned (no overlap). */
|
|
22
|
+
.contactPane td.hoverControl:has(> a) {
|
|
23
|
+
width: auto !important;
|
|
24
|
+
min-width: 4em !important;
|
|
25
|
+
justify-content: space-between !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.contactPane td.hoverControl:has(> a) > a {
|
|
29
|
+
flex: 1 1 auto;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
overflow-wrap: anywhere;
|
|
32
|
+
word-break: break-word;
|
|
33
|
+
white-space: normal;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.individualPane .hoverControl:has(> img:first-child),
|
|
37
|
+
.contactPane .hoverControl:has(> img:first-child) {
|
|
38
|
+
background-color: transparent !important;
|
|
39
|
+
border: none !important;
|
|
40
|
+
margin: 0 !important;
|
|
41
|
+
border-radius: 0 !important;
|
|
42
|
+
padding: var(--spacing-btn) !important;
|
|
43
|
+
min-height: var(--min-touch-target);
|
|
44
|
+
min-width: var(--min-touch-target);
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
justify-content: center;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.individualPane .hoverControl:has(> img:first-child) > span,
|
|
52
|
+
.contactPane .hoverControl:has(> img:first-child) > span {
|
|
53
|
+
display: inline-flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
margin-left: var(--spacing-xxs);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.individualPane div[style*="padding: 0.5em"]:has(> img),
|
|
59
|
+
.contactPane div[style*="padding: 0.5em"]:has(> img) {
|
|
60
|
+
display: inline-flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.individualPane div[style*="padding: 0.5em"]:has(> img) > span,
|
|
65
|
+
.contactPane div[style*="padding: 0.5em"]:has(> img) > span {
|
|
66
|
+
margin-left: var(--spacing-xxs);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.individualPane .hoverControl:has(> img:first-child):hover,
|
|
70
|
+
.contactPane .hoverControl:has(> img:first-child):hover {
|
|
71
|
+
background-color: var(--color-section-bg) !important;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.individualPane button:has(> img[src$=".svg"]),
|
|
75
|
+
.contactPane button:has(> img[src$=".svg"]) {
|
|
76
|
+
background-color: var(--color-section-bg) !important;
|
|
77
|
+
border: none !important;
|
|
78
|
+
margin: 0 !important;
|
|
79
|
+
border-radius: 0 !important;
|
|
80
|
+
box-shadow: none !important;
|
|
81
|
+
transition: background-color 0.2s ease, box-shadow 0.2s ease;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Ensure certain icon images render at a consistent size and align nicely when adjacent. */
|
|
85
|
+
img[src$="red.svg"],
|
|
86
|
+
img[src$="go-to-this.png"] {
|
|
87
|
+
width: 1.2em !important;
|
|
88
|
+
height: 1.2em !important;
|
|
89
|
+
max-width: none !important;
|
|
90
|
+
max-height: none !important;
|
|
91
|
+
object-fit: contain;
|
|
92
|
+
display: inline-block;
|
|
93
|
+
vertical-align: middle;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* If the SVG button is inside a statsLog wrapper, add pink background to the button only. */
|
|
97
|
+
.individualPane .statsLog button:has(> img[src$=".svg"]),
|
|
98
|
+
.contactPane .statsLog button:has(> img[src$=".svg"]) {
|
|
99
|
+
background-color: var(--color-info-bg) !important;
|
|
100
|
+
border: initial !important;
|
|
101
|
+
margin: initial !important;
|
|
102
|
+
border-radius: initial !important;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Hide the “Continue” icon button that Solid-UI sometimes renders below textareas. */
|
|
106
|
+
.individualPane button:has(> img[title="Continue"]),
|
|
107
|
+
.contactPane button:has(> img[title="Continue"]) {
|
|
108
|
+
display: none !important;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.contactPane .detailSection .detailsSectionContent button:has(> img[title="Continue"]),
|
|
112
|
+
.contactPane .detailSection .detailsSectionContent img[title="Continue"] {
|
|
113
|
+
display: inline-flex !important;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.contactPane .detailSection .detailsSectionContent img[title="Continue"] {
|
|
117
|
+
width: 2em !important;
|
|
118
|
+
height: 2em !important;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* Allow “Continue” buttons inside contactFormContainer to be visible. */
|
|
122
|
+
.individualPane .contactFormContainer button:has(> img[src$="noun_1180158.svg"]),
|
|
123
|
+
.contactPane .contactFormContainer button:has(> img[src$="noun_1180158.svg"]),
|
|
124
|
+
.individualPane .contactFormContainer button:has(> img[title="Continue"]),
|
|
125
|
+
.contactPane .contactFormContainer button:has(> img[title="Continue"]) {
|
|
126
|
+
display: inline-flex !important;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Exception: allow “Continue” buttons inside statsLog to remain visible. */
|
|
130
|
+
.individualPane .statsLog button:has(> img[title="Continue"]),
|
|
131
|
+
.contactPane .statsLog button:has(> img[title="Continue"]),
|
|
132
|
+
.individualPane .webidControl button:has(> img[title="Continue"]),
|
|
133
|
+
.contactPane .webidControl button:has(> img[title="Continue"]){
|
|
134
|
+
display: inline-flex !important;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.individualPane button,
|
|
138
|
+
.contactPane button {
|
|
139
|
+
min-height: var(--min-touch-target);
|
|
140
|
+
min-width: var(--min-touch-target);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.individualPane input:not([type="color"]),
|
|
144
|
+
.contactPane input:not([type="color"]) {
|
|
145
|
+
width: 99%;
|
|
146
|
+
max-width: 99%;
|
|
147
|
+
min-width: 0;
|
|
148
|
+
box-sizing: border-box;
|
|
149
|
+
font: inherit;
|
|
150
|
+
color: var(--color-text);
|
|
151
|
+
background-color: var(--color-card-bg) !important;
|
|
152
|
+
border: 1px solid var(--color-border-pale);
|
|
153
|
+
margin-left: 0 !important;
|
|
154
|
+
margin-right: 0 !important;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.individualPane textarea,
|
|
158
|
+
.contactPane textarea,
|
|
159
|
+
.individualPane .formFieldValue textarea,
|
|
160
|
+
.contactPane .formFieldValue textarea {
|
|
161
|
+
appearance: none;
|
|
162
|
+
-webkit-appearance: none;
|
|
163
|
+
border-radius: var(--border-radius-sm) !important;
|
|
164
|
+
border: var(--border-width-xthin) solid var(--color-border-accent) !important;
|
|
165
|
+
width: 99%;
|
|
166
|
+
max-width: 99%;
|
|
167
|
+
box-sizing: border-box;
|
|
168
|
+
font: inherit;
|
|
169
|
+
color: var(--color-text);
|
|
170
|
+
background-color: var(--color-card-bg) !important;
|
|
171
|
+
margin: 0 !important;
|
|
172
|
+
margin-top: var(--spacing-xs);
|
|
173
|
+
margin-left: 0 !important;
|
|
174
|
+
margin-right: 0 !important;
|
|
175
|
+
padding: var(--spacing-xs) !important;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.individualPane select,
|
|
179
|
+
.contactPane select {
|
|
180
|
+
max-width: 99%;
|
|
181
|
+
min-width: 0;
|
|
182
|
+
box-sizing: border-box;
|
|
183
|
+
font: inherit;
|
|
184
|
+
color: var(--color-text);
|
|
185
|
+
background-color: var(--color-card-bg) !important;
|
|
186
|
+
border: 1px solid var(--color-border-pale);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.individualPane input[type="date"],
|
|
190
|
+
.contactPane input[type="date"],
|
|
191
|
+
.individualPane input[type="month"],
|
|
192
|
+
.contactPane input[type="month"],
|
|
193
|
+
.individualPane input[type="week"],
|
|
194
|
+
.contactPane input[type="week"],
|
|
195
|
+
.individualPane input[type="time"],
|
|
196
|
+
.contactPane input[type="time"],
|
|
197
|
+
.individualPane input[type="datetime-local"],
|
|
198
|
+
.contactPane input[type="datetime-local"] {
|
|
199
|
+
min-height: var(--min-touch-target);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.individualPane .hoverControl:has(> img:first-child):focus-visible,
|
|
203
|
+
.contactPane .hoverControl:has(> img:first-child):focus-visible,
|
|
204
|
+
.individualPane button:focus-visible,
|
|
205
|
+
.contactPane button:focus-visible,
|
|
206
|
+
.individualPane input:not([type="color"]):focus-visible,
|
|
207
|
+
.contactPane input:not([type="color"]):focus-visible,
|
|
208
|
+
.individualPane textarea:focus-visible,
|
|
209
|
+
.contactPane textarea:focus-visible,
|
|
210
|
+
.individualPane select:focus-visible,
|
|
211
|
+
.contactPane select:focus-visible {
|
|
212
|
+
outline: var(--focus-ring-width) solid var(--color-primary) !important;
|
|
213
|
+
outline-offset: 2px;
|
|
214
|
+
box-shadow: 0 0 0 1px var(--color-background);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.individualPane input[type="url"],
|
|
218
|
+
.contactPane input[type="url"] {
|
|
219
|
+
width: 99%;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.individualPane .formFieldValue,
|
|
223
|
+
.contactPane .formFieldValue {
|
|
224
|
+
min-width: 0;
|
|
225
|
+
margin-bottom: var(--spacing-sm);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.individualPane .formFieldValue table,
|
|
229
|
+
.contactPane .formFieldValue table {
|
|
230
|
+
margin: 0 !important;
|
|
231
|
+
padding: 0 !important;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.individualPane .formFieldValue td,
|
|
235
|
+
.contactPane .formFieldValue td {
|
|
236
|
+
padding: 0 !important;
|
|
237
|
+
vertical-align: middle;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.individualPane .formFieldValue table[data-testid="autocomplete-table"],
|
|
241
|
+
.contactPane .formFieldValue table[data-testid="autocomplete-table"] {
|
|
242
|
+
height: 100%;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.individualPane .formFieldValue input:not([type="color"]),
|
|
246
|
+
.contactPane .formFieldValue input:not([type="color"]),
|
|
247
|
+
.individualPane .formFieldValue textarea,
|
|
248
|
+
.contactPane .formFieldValue textarea {
|
|
249
|
+
width: 99% !important;
|
|
250
|
+
max-width: 99%;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Email and phone value inputs: do not stretch full width */
|
|
254
|
+
.individualPane .formFieldName:has(a[href="http://www.w3.org/2006/vcard/ns#value"]) + .formFieldValue input:not([type="color"]),
|
|
255
|
+
.contactPane .formFieldName:has(a[href="http://www.w3.org/2006/vcard/ns#value"]) + .formFieldValue input:not([type="color"]) {
|
|
256
|
+
width: 98% !important;
|
|
257
|
+
max-width: 98%;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.individualPane .formFieldValue select,
|
|
261
|
+
.contactPane .formFieldValue select {
|
|
262
|
+
width: 99%;
|
|
263
|
+
display: inline-block;
|
|
264
|
+
max-width: none !important;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.individualPane select#formSelect,
|
|
268
|
+
.contactPane select#formSelect {
|
|
269
|
+
width: 99%;
|
|
270
|
+
max-width: 98%;
|
|
271
|
+
box-sizing: border-box;
|
|
272
|
+
margin-left: 0 !important;
|
|
273
|
+
margin-right: 0 !important;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.individualPane span select,
|
|
277
|
+
.contactPane span select {
|
|
278
|
+
max-width: 96% !important;
|
|
279
|
+
box-sizing: border-box;
|
|
280
|
+
margin: 0 !important;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.individualPane .formFieldValue span select,
|
|
284
|
+
.contactPane .formFieldValue span select {
|
|
285
|
+
margin-left: 0 !important;
|
|
286
|
+
margin-right: 0 !important;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* Remove border/padding from the first wrapper div (and its first child wrapper). */
|
|
290
|
+
.individualPane > div:first-of-type,
|
|
291
|
+
.contactPane > div:first-of-type,
|
|
292
|
+
.individualPane > div:first-of-type > div:first-of-type,
|
|
293
|
+
.contactPane > div:first-of-type > div:first-of-type {
|
|
294
|
+
border: none !important;
|
|
295
|
+
padding: 0 !important;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* In contactPane, remove border/padding from all direct child divs. */
|
|
299
|
+
.individualPane > div,
|
|
300
|
+
.contactPane > div {
|
|
301
|
+
border: none !important;
|
|
302
|
+
padding: 0 !important;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */
|
|
306
|
+
.individualPane :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue),
|
|
307
|
+
.contactPane :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) {
|
|
308
|
+
display: flex;
|
|
309
|
+
align-items: baseline;
|
|
310
|
+
margin-bottom: var(--spacing-sm);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/* for the Resume inside corporation choice */
|
|
314
|
+
/* Add space between classifierBox label and select box */
|
|
315
|
+
.individualPane .choiceBox .classifierBox-label,
|
|
316
|
+
.contactPane .choiceBox .classifierBox-label {
|
|
317
|
+
margin-right: 0;
|
|
318
|
+
padding-left: var(--spacing-xxs);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.individualPane .choiceBox .choiceBox-selectBox select,
|
|
322
|
+
.contactPane .choiceBox .choiceBox-selectBox select {
|
|
323
|
+
margin-left: 2.1em !important;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* for the Resume orga details */
|
|
327
|
+
/* Add space between classifierBox label and select box */
|
|
328
|
+
.individualPane .classifierBox .classifierBox-label,
|
|
329
|
+
.contactPane .classifierBox .classifierBox-label {
|
|
330
|
+
margin-right: 0;
|
|
331
|
+
padding-left: var(--spacing-xxs);
|
|
332
|
+
width: 8em;
|
|
333
|
+
padding: var(--spacing-xxs);
|
|
334
|
+
vertical-align: middle;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.individualPane .classifierBox .classifierBox-selectBox,
|
|
338
|
+
.contactPane .classifierBox .classifierBox-selectBox {
|
|
339
|
+
margin-left: 0 !important;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.individualPane .classifierBox .classifierBox-selectBox select,
|
|
343
|
+
.contactPane .classifierBox .classifierBox-selectBox select {
|
|
344
|
+
margin-left: 0 !important;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.individualPane .formFieldValue > span > select,
|
|
348
|
+
.contactPane .formFieldValue > span > select {
|
|
349
|
+
margin-left: 0 !important;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.individualPane :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue,
|
|
353
|
+
.contactPane :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue {
|
|
354
|
+
margin-bottom: 0;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),
|
|
358
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),
|
|
359
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),
|
|
360
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),
|
|
361
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),
|
|
362
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),
|
|
363
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),
|
|
364
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),
|
|
365
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]),
|
|
366
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {
|
|
367
|
+
display: inline-flex;
|
|
368
|
+
align-items: center;
|
|
369
|
+
vertical-align: middle;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,
|
|
373
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,
|
|
374
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,
|
|
375
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,
|
|
376
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,
|
|
377
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,
|
|
378
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,
|
|
379
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,
|
|
380
|
+
.individualPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue,
|
|
381
|
+
.contactPane :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {
|
|
382
|
+
display: inline-flex;
|
|
383
|
+
align-items: center;
|
|
384
|
+
vertical-align: middle;
|
|
385
|
+
flex: 1;
|
|
386
|
+
min-width: 0;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/* Center textarea label vertically in flex rows. */
|
|
390
|
+
.individualPane div[style*="display: flex"][style*="flex-direction: row"]:has(textarea),
|
|
391
|
+
.contactPane div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {
|
|
392
|
+
align-items: flex-start;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.individualPane div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a),
|
|
396
|
+
.contactPane div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {
|
|
397
|
+
padding-left: var(--spacing-xs);
|
|
398
|
+
padding-top: var(--spacing-sm);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* Keep autocomplete/table-based fields (e.g. Occupation) aligned to label text baseline. */
|
|
402
|
+
.individualPane :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]),
|
|
403
|
+
.contactPane :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) {
|
|
404
|
+
align-items: flex-start;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.individualPane :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName,
|
|
408
|
+
.contactPane :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName {
|
|
409
|
+
padding-top: var(--spacing-xs) !important;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.individualPane .formFieldValue:has(input[data-testid="autocomplete-input"]),
|
|
413
|
+
.contactPane .formFieldValue:has(input[data-testid="autocomplete-input"]) {
|
|
414
|
+
align-self: flex-start;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.individualPane .formFieldValue table[data-testid="autocomplete-table"],
|
|
418
|
+
.contactPane .formFieldValue table[data-testid="autocomplete-table"],
|
|
419
|
+
.individualPane .formFieldValue input[data-testid="autocomplete-input"],
|
|
420
|
+
.contactPane .formFieldValue input[data-testid="autocomplete-input"] {
|
|
421
|
+
margin: 0 !important;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.individualPane .formFieldValue table[data-testid="autocomplete-table"],
|
|
425
|
+
.contactPane .formFieldValue table[data-testid="autocomplete-table"] {
|
|
426
|
+
vertical-align: baseline;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.individualPane input:disabled,
|
|
430
|
+
.contactPane input:disabled,
|
|
431
|
+
.individualPane textarea:disabled,
|
|
432
|
+
.contactPane textarea:disabled,
|
|
433
|
+
.individualPane select:disabled,
|
|
434
|
+
.contactPane select:disabled,
|
|
435
|
+
.individualPane input[readonly],
|
|
436
|
+
.contactPane input[readonly],
|
|
437
|
+
.individualPane textarea[readonly],
|
|
438
|
+
.contactPane textarea[readonly],
|
|
439
|
+
.individualPane input:read-only,
|
|
440
|
+
.contactPane input:read-only,
|
|
441
|
+
.individualPane textarea:read-only,
|
|
442
|
+
.contactPane textarea:read-only {
|
|
443
|
+
background-color: var(--color-background) !important;
|
|
444
|
+
cursor: not-allowed;
|
|
445
|
+
opacity: var(--opacity-input-disabled);
|
|
446
|
+
border: var(--border-width-xthin) solid var(--color-background) !important;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.contactPane .webidControl table td div.contactPane.namedPane {
|
|
450
|
+
border: none !important;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/* ------------------------------------------------------------------ */
|
|
454
|
+
/* inline popup used for small confirmation flows (like the new confirmDialog) */
|
|
455
|
+
/* apply the class `rdf-inline-modal` on the outer wrapper and give the
|
|
456
|
+
inner box the class `popup` instead of using the old inline styles. */
|
|
457
|
+
|
|
458
|
+
/* selectors that match the old inline-styled markup when no classes can be added */
|
|
459
|
+
|
|
460
|
+
/* Delete pop up */
|
|
461
|
+
/* Remove the intermediate positioned ancestor so the popup anchors to .hoverControl instead */
|
|
462
|
+
.individualPane div[style*="position: relative"]:has(> div[style*="display: grid"]) {
|
|
463
|
+
position: static !important;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.individualPane div[style*="position: relative"] > div[style*="display: grid"] {
|
|
467
|
+
/* override inline values with theme variables */
|
|
468
|
+
position: absolute !important;
|
|
469
|
+
top: 0 !important;
|
|
470
|
+
right: 0 !important;
|
|
471
|
+
left: auto !important;
|
|
472
|
+
z-index: 9999 !important;
|
|
473
|
+
display: grid !important;
|
|
474
|
+
pointer-events: auto !important;
|
|
475
|
+
opacity: 1 !important;
|
|
476
|
+
visibility: visible !important;
|
|
477
|
+
padding: var(--spacing-btn) !important;
|
|
478
|
+
background: var(--color-background) !important;
|
|
479
|
+
border: var(--border-width-sm) solid var(--color-primary) !important;
|
|
480
|
+
border-radius: var(--border-radius-base) !important;
|
|
481
|
+
box-shadow: var(--box-shadow-popup) !important;
|
|
482
|
+
grid-template-columns: auto auto !important;
|
|
483
|
+
gap: var(--spacing-xxs) !important;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.individualPane .hoverControl img.hoverControlHide,
|
|
487
|
+
.individualPane .hoverControl [data-testid="deleteButtonWithCheck"] {
|
|
488
|
+
position: absolute !important;
|
|
489
|
+
right: var(--spacing-xxxs) !important;
|
|
490
|
+
width: 1.5em !important;
|
|
491
|
+
height: 1.5em !important;
|
|
492
|
+
display: none !important;
|
|
493
|
+
align-items: center;
|
|
494
|
+
justify-content: center;
|
|
495
|
+
margin: 0 !important;
|
|
496
|
+
float: none !important;
|
|
497
|
+
z-index: 2 !important;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/* Show delete icon only on hover */
|
|
501
|
+
.individualPane .hoverControl:hover img.hoverControlHide,
|
|
502
|
+
.individualPane .hoverControl:hover [data-testid="deleteButtonWithCheck"] {
|
|
503
|
+
display: inline-flex !important;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/* If the hoverControl has exactly one div + the delete icon, keep the icon vertically centered but right-aligned */
|
|
507
|
+
.individualPane .hoverControl:has(> div:nth-child(1):nth-last-child(2)):hover > img.hoverControlHide,
|
|
508
|
+
.individualPane .hoverControl:has(> div:nth-child(1):nth-last-child(2)):hover > [data-testid="deleteButtonWithCheck"] {
|
|
509
|
+
top: 50% !important;
|
|
510
|
+
right: var(--spacing-xxxs) !important;
|
|
511
|
+
left: auto !important;
|
|
512
|
+
transform: translateY(-50%) !important;
|
|
513
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* ── Group Membership Section ──────────────────────────────── */
|
|
2
|
+
|
|
3
|
+
.contactPane .group-membership-container {
|
|
4
|
+
padding: var(--spacing-sm) 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Grid wrapper — matches detailsSectionContent groupButtonsList */
|
|
8
|
+
.contactPane .group-pills-wrapper {
|
|
9
|
+
display: grid !important;
|
|
10
|
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
|
|
11
|
+
gap: var(--spacing-sm) !important;
|
|
12
|
+
list-style: none;
|
|
13
|
+
padding: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
width: 100% !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.contactPane .group-pills-wrapper span {
|
|
19
|
+
width: max-content !important;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Each group item: button on top, toolbar below */
|
|
23
|
+
.contactPane .group-membership-item {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
align-items: stretch;
|
|
27
|
+
max-width: 256px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.contactPane .group-membership-item > button {
|
|
31
|
+
width: 100%;
|
|
32
|
+
text-align: center;
|
|
33
|
+
border-radius: var(--border-radius-base);
|
|
34
|
+
word-wrap: break-word;
|
|
35
|
+
overflow-wrap: break-word;
|
|
36
|
+
min-height: var(--min-touch-target);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Toolbar with link icon and delete button below each group button */
|
|
40
|
+
.contactPane .group-membership-item .group-membership-toolbar {
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: var(--spacing-xs);
|
|
44
|
+
padding: var(--spacing-xs) 0 0 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.contactPane .group-membership-item .group-membership-toolbar a {
|
|
48
|
+
margin: 0.3em;
|
|
49
|
+
margin-left: 1em;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.contactPane .group-membership-item .group-membership-toolbar a img {
|
|
53
|
+
width: 1.3em;
|
|
54
|
+
height: 1em;
|
|
55
|
+
margin: 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Cancel float:right and any absolute positioning injected by solid-ui */
|
|
59
|
+
.contactPane .group-membership-item .group-membership-toolbar > img.hoverControlHide,
|
|
60
|
+
.contactPane .group-membership-item .group-membership-toolbar > [data-testid="deleteButtonWithCheck"] {
|
|
61
|
+
float: none !important;
|
|
62
|
+
display: inline-flex !important;
|
|
63
|
+
visibility: hidden !important;
|
|
64
|
+
margin: 0 !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.contactPane .group-membership-item .group-membership-toolbar:hover > img.hoverControlHide,
|
|
68
|
+
.contactPane .group-membership-item .group-membership-toolbar:hover > [data-testid="deleteButtonWithCheck"] {
|
|
69
|
+
visibility: visible !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.contactPane .detailsSectionContent .group-membership-item .group-membership-toolbar > div[style*="position: relative"] {
|
|
73
|
+
position: absolute !important;
|
|
74
|
+
top: 0 !important;
|
|
75
|
+
left: 50% !important;
|
|
76
|
+
transform: translateX(-50%) !important;
|
|
77
|
+
width: min(90vw, 440px) !important;
|
|
78
|
+
min-width: 280px !important;
|
|
79
|
+
max-width: 90vw !important;
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
z-index: 1000;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.contactPane .detailsSectionContent .group-membership-item .group-membership-toolbar > div[style*="position: relative"] > div {
|
|
87
|
+
position: relative !important;
|
|
88
|
+
top: auto !important;
|
|
89
|
+
min-width: 280px !important;
|
|
90
|
+
background: var(--color-background);
|
|
91
|
+
border-radius: var(--border-radius-full);
|
|
92
|
+
padding: var(--spacing-lg);
|
|
93
|
+
box-shadow: var(--box-shadow-overlay);
|
|
94
|
+
z-index: 1001;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@media (max-width: 599px) {
|
|
98
|
+
.contactPane .group-membership-item .group-pills-wrapper {
|
|
99
|
+
grid-template-columns: repeat(2, 1fr) !important;
|
|
100
|
+
gap: var(--spacing-xs) !important;
|
|
101
|
+
max-width: 100% !important;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.contactPane .group-membership-item .group-membership-item > button {
|
|
105
|
+
font-size: var(--font-size-sm) !important;
|
|
106
|
+
border-radius: var(--border-radius-base) !important;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@media (min-width: 900px) {
|
|
111
|
+
.contactPane .group-membership-item .group-pills-wrapper {
|
|
112
|
+
grid-template-columns: repeat(3, 1fr) !important;
|
|
113
|
+
gap: var(--spacing-sm) !important;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* individual.js styles — extracted from inline styles */
|
|
2
|
+
|
|
3
|
+
/* ── Individual pane container ───────────────────────────────── */
|
|
4
|
+
|
|
5
|
+
.individualPane {
|
|
6
|
+
padding: var(--spacing-xs) var(--spacing-lg) var(--spacing-md) var(--spacing-lg);
|
|
7
|
+
background: var(--color-section-bg);
|
|
8
|
+
border-radius: var(--border-radius-full);
|
|
9
|
+
box-shadow: var(--box-shadow);
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
max-width: 100%;
|
|
12
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* CSS for the accessible modal dialogs created by localUtils.js */
|
|
2
|
+
|
|
3
|
+
/* backdrop / focus trap container */
|
|
4
|
+
.focus-trap {
|
|
5
|
+
position: fixed;
|
|
6
|
+
top: 0;
|
|
7
|
+
left: 0;
|
|
8
|
+
width: 100%;
|
|
9
|
+
height: 100%;
|
|
10
|
+
z-index: 9999;
|
|
11
|
+
background: var(--overlay-bg);
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
align-items: center;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* inner dialog box */
|
|
18
|
+
.focus-trap .modal {
|
|
19
|
+
background: var(--color-background);
|
|
20
|
+
padding: var(--spacing-lg);
|
|
21
|
+
border-radius: var(--border-radius-base);
|
|
22
|
+
max-width: 90%;
|
|
23
|
+
box-shadow: var(--box-shadow-modal);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* button container: center buttons horizontally (uses id in markup) */
|
|
27
|
+
#contacts-modal #modal-buttons {
|
|
28
|
+
margin-top: var(--spacing-md);
|
|
29
|
+
display: flex;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
gap: var(--spacing-sm);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* buttons themselves use the shared btn-primary rules */
|
|
35
|
+
#contacts-modal .modal button {
|
|
36
|
+
min-height: var(--min-touch-target);
|
|
37
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
|
38
|
+
border: 1px solid var(--color-primary);
|
|
39
|
+
border-radius: var(--border-radius-base);
|
|
40
|
+
font-weight: 600;
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
transition: all var(--animation-duration) ease;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#contacts-modal .modal button:disabled {
|
|
46
|
+
opacity: var(--opacity-disabled);
|
|
47
|
+
cursor: not-allowed;
|
|
48
|
+
transform: none;
|
|
49
|
+
}
|