PluginProbe
MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings / 7.2.1
MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings v7.2.1
7.2.1 7.2 7.1.2 7.1.1 7.1 7.0.4 7.0.6 7.0.7 6.3.8 6.3.7 6.3.6 6.3.5 6.3.4 6.3.3 6.3.1 trunk 5.7.3 5.7.5 5.8.1 5.8.2 5.8.3 5.8.4 5.8.6 6.0.4 6.0.5 All 36 releases
mlsimport / admin / css / mlsimport-field-selector.css

mlsimport-field-selector.css in MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings 7.2.1, at admin/css/mlsimport-field-selector.css

476 lines 10.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MLS Import Field Selector Styles
3 *
4 * Styles for the MLS field selection interface with tabular layout,
5 * filtering controls, and interactive elements.
6 *
7 * @package MLSImport
8 * @subpackage MLSImport/css
9 * @since 1.0.0
10 *
11 * Layout notes: a rounded card wraps a save-status line, stats and filter bars,
12 * a fixed-layout table of RESO fields, and jQuery-UI sortable styling.
13 * Brand accent colour throughout is #e85d3c (warm orange).
14 */
15
16 /* Container for the entire field selector interface */
17 .mlsimport-field-selector-container {
18 margin: 20px 0;
19 max-width: 100%;
20 background: #fff;
21 box-shadow: 0 0 0 1px rgba(28, 25, 23, 0.05), 0 5px 22px rgba(28, 25, 23, 0.05);
22 border-radius: 18px;
23
24 }
25
26 /* Stats bar styles */
27 .mlsimport-field-stats {
28 padding: 15px;
29 border-top-right-radius: 18px;
30 border-top-left-radius: 18px;
31 background: #f3efe7;
32 border-bottom: 1px solid rgba(28, 25, 23, 0.18);
33 display: flex;
34 align-content: center;
35 align-items: center;
36 flex-wrap: nowrap;
37 gap: 10px;
38 justify-content: space-between;
39 }
40
41 .mlsimport-button-action-wrapper{
42 display: flex;
43 gap: 10px;
44 flex-direction: row;
45 flex-wrap: wrap;
46 }
47
48
49 .mlsimport-field-stats ul {
50 display: flex;
51 margin: 0;
52 padding: 0;
53 list-style: none;
54 }
55
56 .mlsimport-field-stats li {
57 margin-right: 30px;
58 font-weight: 500;
59 font-size: 14px;
60 }
61
62 /* Filter bar styles */
63 .mlsimport-field-filters {
64 display: flex;
65 align-items: center;
66 padding: 15px;
67 background: #f3efe7;
68 border-bottom: 1px solid rgba(28, 25, 23, 0.18);
69 margin-bottom: 0px;
70 }
71
72 .mlsimport-field-filter {
73 margin-right: 15px;
74 max-width: 250px;
75 }
76
77
78 /* Alphabetical filter styles */
79 .mlsimport-alpha-filters {
80 display: flex;
81 flex-wrap: wrap;
82 padding: 10px 15px;
83 background: #f3efe7;
84 border-bottom: 1px solid rgba(28, 25, 23, 0.18);
85 }
86
87 .mlsimport-alpha-filter {
88 display: inline-block;
89 margin: 2px;
90 padding: 5px 8px;
91 background: #fff;
92 border: 1px solid rgba(28, 25, 23, 0.12);
93 border-radius: 999px;
94 text-decoration: none;
95 color: #e85d3c;
96 font-size: 13px;
97 }
98
99 /* Currently selected letter: filled orange. */
100 .mlsimport-alpha-filter.active {
101 background: #e85d3c;
102 border-color: #e85d3c;
103 color: #fff;
104 }
105
106 .mlsimport-alpha-filter:hover {
107 background: #f3efe7;
108 color: #e85d3c;
109 }
110
111 .mlsimport-alpha-filter.active:hover {
112 background: #e85d3c;
113 border-color: #e85d3c;
114 color: #fff;
115 }
116
117 .mlsimport-reset-filter {
118 display: inline-block;
119 margin: 2px 0 2px 10px;
120 padding: 5px 8px;
121 background: #f3efe7;
122 border: 1px solid rgba(28, 25, 23, 0.18);
123 border-radius: 999px;
124 text-decoration: none;
125 color: #6b6358;
126 font-size: 13px;
127 }
128
129 .mlsimport-reset-filter:hover {
130 background: #f3efe7;
131 border-color: rgba(28, 25, 23, 0.18);
132 color: #1c1917;
133 }
134
135 /* Table styles */
136 .mlsimport-fields-table {
137 width: 100%;
138 border-collapse: collapse;
139 border-spacing: 0;
140 table-layout: fixed;
141 }
142
143 /* Sticky table header: stays pinned 32px down to clear the WP admin bar,
144 raised above rows with z-index so it overlaps content while scrolling. */
145 .mlsimport-fields-table thead {
146 background: #f3efe7;
147 position: sticky;
148 top: 32px; /* Account for WP admin bar */
149 z-index: 10;
150 }
151
152
153
154 /* Inside the onboarding wizard there's no admin bar offset, so pin at 0. */
155 .mlsimport-wizard-wrap .mlsimport-fields-table thead{
156 top:0px;
157 }
158
159 .mlsimport-fields-table th {
160 padding: 15px;
161 text-align: left;
162 color: #6b6358;
163 font-weight: 500;
164 font-size: 13px;
165 }
166
167 .mlsimport-fields-table td {
168 padding: 17px 15px;
169 border-bottom: 1px solid rgba(28, 25, 23, 0.12);
170 vertical-align: middle;
171 word-break: break-word;
172 overflow-wrap: break-word;
173 }
174
175 .mlsimport-fields-table tr:hover td {
176 background: #f3efe7;
177 }
178
179 .mlsimport-row-actions .field-name{
180 display: inline-block;
181 }
182
183
184 .save-indicator{
185 width: 16px;
186 height: 16px;
187 }
188
189 /* Mandatory field styles */
190 /* Required RESO fields get a light-peach row tint (and a darker hover). */
191 .mlsimport-mandatory-row {
192 background-color: #fde4d8;
193 }
194
195 .mlsimport-mandatory-row:hover td {
196 background-color: rgba(232, 93, 60, 0.18) !important;
197 }
198
199 .mlsimport-mandatory-indicator {
200 color: #e85d3c;
201 margin-right: 5px;
202 font-size: 14px;
203 }
204
205 /* Column widths (table-layout is fixed, so these percentages/px are enforced). */
206 .mlsimport-field-name {
207 width: 30%;
208 }
209
210 .mlsimport-field-import,
211 .mlsimport-field-admin {
212 width: 75px;
213 text-align: left;
214 }
215
216 .mlsimport-field-label,
217 .mlsimport-field-postmeta {
218 width: 20%;
219 }
220
221 .mlsimport-field-taxonomy {
222 width: 20%;
223 }
224
225 .mlsimport-field-actions {
226 width: 140px;
227 text-align: center;
228 }
229
230 /* Form input styles */
231 .mlsimport-fields-table input[type="text"] {
232 width: 90%;
233 padding: 8px;
234 border: 1px solid rgba(28, 25, 23, 0.12);
235 border-radius: 10px;
236 }
237
238 .mlsimport-fields-table select {
239 width: 90%;
240
241 }
242
243 /* Field name and explanation */
244 .mlsimport-field-name {
245 position: relative;
246 }
247 .mlsimport-field-name .field-name{
248 display: inline-block;
249 width: auto;
250 }
251
252 .field-name {
253 display: block;
254 font-weight: 500;
255 margin-bottom: 5px;
256 font-size: 13px;
257 }
258
259 .field-explanation {
260 font-size: 12px;
261 color: #6b6358;
262 line-height: 1.4;
263 margin-top: 5px;
264 padding: 5px 0;
265 }
266
267 /* Bulk action buttons */
268 .mlsimport-bulk-actions {
269 display: flex;
270 flex-wrap: wrap;
271 gap: 10px;
272 padding: 15px;
273 background: #f3efe7;
274 border-bottom: 1px solid rgba(28, 25, 23, 0.18);
275 }
276
277 .mlsimport-bulk-button {
278 padding: 8px 15px;
279 background: #1c1917;
280 border: none;
281 border-radius: 999px;
282 color: #fff;
283 cursor: pointer;
284 font-size: 13px;
285 }
286
287 .mlsimport-bulk-button.secondary {
288 background: #fff;
289 border: 1px solid rgba(28, 25, 23, 0.12);
290 color: #1c1917;
291 }
292
293 .mlsimport-bulk-button:hover {
294 background: #33302b;
295 box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .45);
296 }
297
298 .mlsimport-bulk-button.secondary:hover {
299 background: #f3efe7;
300 border-color: rgba(28, 25, 23, 0.18);
301 }
302
303 /* Routine saving/saved feedback stays hidden because each edited control has
304 its own inline indicator. The queue-level container is reserved for failures
305 that pause all later commands and require an administrator decision. */
306 .mlsimport-field-save-status {
307 display: none;
308 }
309
310 .mlsimport-field-save-status.is-error {
311 /* JavaScript appends Retry or Reload here after preserving the failed head
312 command. Override the routine hidden state so that recovery control is
313 reachable instead of leaving the queue permanently paused. */
314 display: block;
315 color: #c02617;
316 }
317
318 /* Per-control save feedback: an inline spinner next to the edited control
319 while the change is on the wire, then a fading green tick on success or a
320 persistent red cross on failure. */
321 .mlsimport-save-indicator {
322 box-sizing: border-box;
323 display: inline-block;
324 margin-left: 5px;
325 width: 16px;
326 height: 16px;
327 vertical-align: middle;
328 text-align: center;
329 line-height: 16px;
330 }
331
332 .mlsimport-save-indicator.is-spinning {
333 border: 2px solid #e85d3c;
334 border-top-color: transparent;
335 border-radius: 50%;
336 animation: mlsimport-field-save-spin 1s linear infinite;
337 }
338
339 .mlsimport-save-indicator.is-success {
340 color: #2faa6a;
341 font-size: 16px;
342 }
343
344 .mlsimport-save-indicator.is-error {
345 color: #c02617;
346 font-size: 16px;
347 }
348
349 @keyframes mlsimport-field-save-spin {
350 0% { transform: rotate(0deg); }
351 100% { transform: rotate(360deg); }
352 }
353
354 .mlsimport-field-save-recovery {
355 margin-left: 8px !important;
356 }
357
358 .mlsimport-no-fields td {
359 padding: 30px;
360 text-align: center;
361 color: #9a9285;
362 }
363
364 /* Drag and drop styles */
365 /* jQuery-UI sortable: the row being dragged (helper). */
366 .ui-sortable-helper {
367 background: #fff;
368 border: 1px solid #e85d3c;
369 box-shadow: 0 2px 5px rgba(28, 25, 23, 0.15);
370 }
371
372 /* Dashed drop-target gap; forced visible to show where the row will land. */
373 .ui-sortable-placeholder {
374 visibility: visible !important;
375 background: #fde4d8;
376 border: 1px dashed #e85d3c;
377 height: 50px;
378 }
379
380 /* Responsive styles */
381 /* At WP's 782px mobile breakpoint: stack the stats/filters vertically and let
382 the wide fields table scroll horizontally instead of overflowing. */
383 @media screen and (max-width: 782px) {
384 .mlsimport-field-stats ul {
385 flex-direction: column;
386 }
387
388 .mlsimport-field-stats li {
389 margin-right: 0;
390 margin-bottom: 10px;
391 }
392
393 .mlsimport-field-filters {
394 flex-direction: column;
395 align-items: stretch;
396 }
397
398 .mlsimport-field-filter {
399 margin-right: 0;
400 margin-bottom: 10px;
401 max-width: 100%;
402 }
403
404 .mlsimport-fields-table {
405 display: block;
406 overflow-x: auto;
407 }
408 }
409
410
411
412 /* row oers */
413 /* Per-row reorder controls: inline, no-wrap group of move buttons. */
414 .mlsimport-row-actions {
415 text-align: center;
416 white-space: nowrap;
417 display: inline;
418 margin-right: 10px;
419 }
420
421 .mlsimport-move-btn {
422 display: inline-block;
423 width: 28px;
424 height: 28px;
425 margin: 0 2px;
426 padding: 0;
427 background: #f3efe7;
428 border: 1px solid rgba(28, 25, 23, 0.18);
429 border-radius: 999px;
430 color: #6b6358;
431 text-align: center;
432
433 cursor: pointer;
434 }
435
436 .mlsimport-move-btn:hover {
437 background: #e85d3c;
438 border-color: #e85d3c;
439 color:#fff;
440 }
441
442 /* Tooltip styling for move buttons */
443 /* JS-positioned tooltip for the up/down move buttons; very high z-index keeps
444 it above the sticky table header and card chrome. */
445 .mlsimport-move-tooltip {
446 background: #1c1917;
447 color: #fff;
448 padding: 6px 10px;
449 border-radius: 10px;
450 box-shadow: 0 2px 5px rgba(28, 25, 23, 0.3);
451 font-size: 12px;
452 /* max-width: 200px; */
453 z-index: 10000;
454 width: auto;
455 max-width: none;
456 display: flex;
457 width: auto;
458 float: left;
459 transition: all 1s ease-out;
460 }
461
462 /* Per-connection scope selector (multi-MLS): which MLS's fields this tab
463 edits. Sits above the field table in the shared "2025" control style. */
464 .mlsimport-field-scope {
465 margin: 0 0 16px;
466 display: flex;
467 align-items: center;
468 gap: 8px;
469 font-weight: 600;
470 }
471
472 .mlsimport-field-scope select {
473 border-radius: 8px;
474 min-width: 260px;
475 }
476