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 / public / css / mlsimport-multiselect.css

mlsimport-multiselect.css in MLSImport: IDX Plugin & MLS Plugin for Real Estate Listings 7.2.1, at public/css/mlsimport-multiselect.css

222 lines 5.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * mlsimport-multiselect — dropdown multi-select styling (front end + admin).
3 * Enhances <select multiple class="mlsimport-multiselect">; the native select is
4 * visually removed but kept for form submission. Modeled on the WPResidence search
5 * dropdowns: a chip control, a searchable checkbox panel.
6 */
7
8 .mlsimport-ms {
9 position: relative;
10 }
11
12 /* Keep a search field locked to its flex basis: a flex item defaults to
13 min-width:auto (its content width), so wide chips would widen the column and
14 shift the whole form. min-width:0 lets the control clip instead of grow. */
15 .mlsimport-search__field,
16 .mlsimport-search-form__field {
17 min-width: 0;
18 }
19
20 /* Shown in place of the chips when they don't fit — keeps the control one line. */
21 .mlsimport-ms__summary {
22 color: inherit;
23 white-space: nowrap;
24 overflow: hidden;
25 text-overflow: ellipsis;
26 }
27
28 .mlsimport-ms__native {
29 position: absolute;
30 width: 1px;
31 height: 1px;
32 margin: -1px;
33 padding: 0;
34 overflow: hidden;
35 clip: rect(0 0 0 0);
36 border: 0;
37 opacity: 0;
38 pointer-events: none;
39 }
40
41 /* Before the JS enhances it (data-ms-init is set in enhance()), a native
42 <select multiple> paints its option rows — the flash on a cold load. Hide it
43 outright; the 40px box keeps the enhanced control's footprint so nothing
44 shifts when the widget replaces it. */
45 select.mlsimport-multiselect:not( [data-ms-init] ) {
46 visibility: hidden;
47 display: block;
48 width: 100%;
49 height: 40px;
50 box-sizing: border-box;
51 }
52
53 /* :hover/:focus repeat the resting selector so an aggressive theme button reset
54 (Hello Elementor's reset.css paints `button:hover`/`:focus` pink #c36 at 0,2,0)
55 can't repaint the control on those states. The plugin's own state rules below
56 (accent border on :focus / .is-open) are declared later and still win. */
57 .mlsimport-ms__control,
58 .mlsimport-ms__control:hover,
59 .mlsimport-ms__control:focus {
60 display: flex;
61 flex-wrap: nowrap;
62 align-items: center;
63 gap: 4px;
64 width: 100%;
65 height: 40px;
66 margin: 0;
67 padding: 5px 30px 5px 10px;
68 border: 1px solid #e2e2e2;
69 border-radius: 6px;
70 background: #fff;
71 font: inherit;
72 line-height: 1.4;
73 color: inherit;
74 text-align: left;
75 cursor: pointer;
76 box-sizing: border-box;
77 position: relative;
78 overflow: hidden;
79 }
80
81 /* Chips stay on one line; the control's fixed height never grows. When they run
82 past the edge they're clipped, and this fade signals there are more (it sits over
83 white when nothing overflows, so it's invisible until chips reach it). */
84 .mlsimport-ms__control::after {
85 content: '';
86 position: absolute;
87 top: 1px;
88 bottom: 1px;
89 right: 24px;
90 width: 24px;
91 background: linear-gradient( to right, rgba( 255, 255, 255, 0 ), #fff 75% );
92 pointer-events: none;
93 }
94
95 /* 2px accent border on focus, matching every other field — see the focus block in
96 mlsimport-listings.css. Set here too so it wins regardless of stylesheet order.
97
98 `.is-open` is in the selector because clicking this control opens the dropdown and
99 moves focus into the search input inside it, so :focus alone stops matching and
100 the border dropped straight back to grey the moment you clicked. */
101 .mlsimport-ms__control:focus,
102 .mlsimport-ms.is-open .mlsimport-ms__control {
103 outline: none;
104 border-color: var(--mli-accent);
105 }
106
107 .mlsimport-ms__placeholder {
108 color: #8a8a8a;
109 }
110
111 .mlsimport-ms__chip {
112 display: inline-flex;
113 align-items: center;
114 flex: 0 0 auto;
115 gap: 6px;
116 padding: 2px 7px 2px 10px;
117 background: #eef1f5;
118 border-radius: 12px;
119 font-size: 13px;
120 line-height: 1.7;
121 white-space: nowrap;
122 }
123
124 .mlsimport-ms__chip-x {
125 display: inline-flex;
126 cursor: pointer;
127 color: #8a8a8a;
128 font-size: 15px;
129 line-height: 1;
130 }
131
132 .mlsimport-ms__chip-x:hover {
133 color: #c0392b;
134 }
135
136 /* Keep in sync with .mlsimport-range__toggle::after / .mlsimport-bedsbaths__toggle::after
137 in mlsimport-search-popups.css — every closed search control carries the same caret. */
138 .mlsimport-ms__caret {
139 position: absolute;
140 right: 12px;
141 top: 50%;
142 width: 5px;
143 height: 5px;
144 border-right: 1.5px solid #8a8a8a;
145 border-bottom: 1.5px solid #8a8a8a;
146 transform: translateY( -65% ) rotate( 45deg );
147 pointer-events: none;
148 }
149
150 .mlsimport-ms__dropdown {
151 display: none;
152 position: absolute;
153 z-index: 60;
154 left: 0;
155 right: 0;
156 top: calc( 100% + 4px );
157 background: #fff;
158 border: 1px solid #e2e2e2;
159 border-radius: 6px;
160 box-shadow: 0 6px 22px rgba( 0, 0, 0, 0.13 );
161 overflow: hidden;
162 }
163
164 .mlsimport-ms.is-open .mlsimport-ms__dropdown {
165 display: block;
166 }
167
168 .mlsimport-ms__search {
169 width: 100%;
170 box-sizing: border-box;
171 padding: 9px 11px;
172 border: 0;
173 border-bottom: 1px solid #eee;
174 font: inherit;
175 outline: none;
176 }
177
178 .mlsimport-ms__options {
179 max-height: 240px;
180 overflow-y: auto;
181 }
182
183 .mlsimport-ms__option {
184 display: flex;
185 align-items: center;
186 gap: 9px;
187 padding: 8px 11px;
188 cursor: pointer;
189 font-size: 14px;
190 }
191
192 .mlsimport-ms__option:hover {
193 background: #f3f5f8;
194 }
195
196 .mlsimport-ms__check {
197 flex: 0 0 16px;
198 width: 16px;
199 height: 16px;
200 border: 1px solid #c4c4c4;
201 border-radius: 4px;
202 background: #fff;
203 position: relative;
204 }
205
206 .mlsimport-ms__option.is-selected .mlsimport-ms__check {
207 background: var(--mli-accent);
208 border-color: var(--mli-accent);
209 }
210
211 .mlsimport-ms__option.is-selected .mlsimport-ms__check::after {
212 content: '';
213 position: absolute;
214 left: 5px;
215 top: 2px;
216 width: 4px;
217 height: 8px;
218 border: solid #fff;
219 border-width: 0 2px 2px 0;
220 transform: rotate( 45deg );
221 }
222