mumineen-ui-plugins 1.7.0 → 1.8.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/dist/qasr/QasrNamaaz.css +105 -2
- package/dist/qasr/QasrNamaaz.d.ts +7 -2
- package/dist/qasr/QasrNamaaz.js +59 -3
- package/package.json +1 -1
package/dist/qasr/QasrNamaaz.css
CHANGED
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
font-family: "DM Sans", sans-serif;
|
|
27
27
|
background: var(--bg);
|
|
28
28
|
color: var(--text);
|
|
29
|
-
min-height: 100vh;
|
|
30
29
|
display: flex;
|
|
31
30
|
flex-direction: column;
|
|
32
31
|
align-items: center;
|
|
@@ -119,7 +118,7 @@
|
|
|
119
118
|
background: var(--bg-card);
|
|
120
119
|
border: 1px solid var(--border);
|
|
121
120
|
border-radius: var(--radius);
|
|
122
|
-
padding:
|
|
121
|
+
padding: 10px;
|
|
123
122
|
margin-bottom: 20px;
|
|
124
123
|
box-shadow: 0 4px 24px var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
125
124
|
}
|
|
@@ -1135,6 +1134,92 @@
|
|
|
1135
1134
|
margin-top: 1px;
|
|
1136
1135
|
}
|
|
1137
1136
|
|
|
1137
|
+
/* ── Results overlay layer ── */
|
|
1138
|
+
.qasr-namaaz .overlay-layer {
|
|
1139
|
+
position: absolute;
|
|
1140
|
+
inset: 0;
|
|
1141
|
+
z-index: 10;
|
|
1142
|
+
background: var(--bg);
|
|
1143
|
+
border-radius: var(--radius);
|
|
1144
|
+
display: flex;
|
|
1145
|
+
flex-direction: column;
|
|
1146
|
+
animation: qasr-fadeUp 0.3s ease both;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
.qasr-namaaz .overlay-header {
|
|
1150
|
+
display: flex;
|
|
1151
|
+
align-items: center;
|
|
1152
|
+
justify-content: space-between;
|
|
1153
|
+
gap: 10px;
|
|
1154
|
+
padding: 14px 16px;
|
|
1155
|
+
background: var(--bg-card);
|
|
1156
|
+
border-bottom: 1px solid var(--border);
|
|
1157
|
+
border-radius: var(--radius) var(--radius) 0 0;
|
|
1158
|
+
flex-shrink: 0;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
.qasr-namaaz .overlay-addresses {
|
|
1162
|
+
display: flex;
|
|
1163
|
+
align-items: center;
|
|
1164
|
+
gap: 10px;
|
|
1165
|
+
flex: 1;
|
|
1166
|
+
min-width: 0;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.qasr-namaaz .overlay-addr {
|
|
1170
|
+
display: flex;
|
|
1171
|
+
align-items: center;
|
|
1172
|
+
gap: 6px;
|
|
1173
|
+
min-width: 0;
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
.qasr-namaaz .overlay-addr-icon {
|
|
1177
|
+
color: var(--gold);
|
|
1178
|
+
font-size: 14px;
|
|
1179
|
+
flex-shrink: 0;
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
.qasr-namaaz .overlay-addr-text {
|
|
1183
|
+
font-size: 12px;
|
|
1184
|
+
color: var(--text);
|
|
1185
|
+
font-weight: 500;
|
|
1186
|
+
white-space: nowrap;
|
|
1187
|
+
overflow: hidden;
|
|
1188
|
+
text-overflow: ellipsis;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
.qasr-namaaz .overlay-arrow {
|
|
1192
|
+
color: var(--grey-light);
|
|
1193
|
+
font-size: 14px;
|
|
1194
|
+
flex-shrink: 0;
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
.qasr-namaaz .overlay-dismiss {
|
|
1198
|
+
width: 32px;
|
|
1199
|
+
height: 32px;
|
|
1200
|
+
border-radius: 8px;
|
|
1201
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
1202
|
+
background: rgba(0, 0, 0, 0.03);
|
|
1203
|
+
color: rgba(0, 0, 0, 0.65);
|
|
1204
|
+
cursor: pointer;
|
|
1205
|
+
display: flex;
|
|
1206
|
+
align-items: center;
|
|
1207
|
+
justify-content: center;
|
|
1208
|
+
font-size: 15px;
|
|
1209
|
+
flex-shrink: 0;
|
|
1210
|
+
transition: background 0.18s;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
.qasr-namaaz .overlay-dismiss:hover {
|
|
1214
|
+
background: rgba(0, 0, 0, 0.07);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
.qasr-namaaz .overlay-body {
|
|
1218
|
+
flex: 1 1 auto;
|
|
1219
|
+
padding: 10px;
|
|
1220
|
+
min-height: 0;
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1138
1223
|
/* ── PAC autocomplete (global — dropdown renders outside component) ── */
|
|
1139
1224
|
.pac-container {
|
|
1140
1225
|
background: #fff !important;
|
|
@@ -1239,6 +1324,24 @@
|
|
|
1239
1324
|
.qasr-namaaz .border-route-link {
|
|
1240
1325
|
font-size: 11px;
|
|
1241
1326
|
}
|
|
1327
|
+
|
|
1328
|
+
.qasr-namaaz .overlay-addresses {
|
|
1329
|
+
flex-direction: column;
|
|
1330
|
+
align-items: flex-start;
|
|
1331
|
+
gap: 4px;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
.qasr-namaaz .overlay-arrow {
|
|
1335
|
+
display: none;
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
.qasr-namaaz .overlay-header {
|
|
1339
|
+
padding: 12px 14px;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
.qasr-namaaz .overlay-body {
|
|
1343
|
+
padding: 16px 14px;
|
|
1344
|
+
}
|
|
1242
1345
|
}
|
|
1243
1346
|
|
|
1244
1347
|
@media (max-width: 360px) {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import "./QasrNamaaz.css";
|
|
3
|
-
|
|
3
|
+
interface QasrNamaazProps {
|
|
4
4
|
googleMapsApiKey: string;
|
|
5
|
-
|
|
5
|
+
defaultOrigin?: string;
|
|
6
|
+
defaultDestination?: string;
|
|
7
|
+
showResultsAsOverlay?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const QasrNamaaz: React.FC<QasrNamaazProps>;
|
|
10
|
+
export {};
|
package/dist/qasr/QasrNamaaz.js
CHANGED
|
@@ -4,7 +4,8 @@ exports.QasrNamaaz = void 0;
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
require("./QasrNamaaz.css");
|
|
6
6
|
const qasr_engine_1 = require("./qasr-engine");
|
|
7
|
-
exports.QasrNamaaz = React.memo(({ googleMapsApiKey }) => {
|
|
7
|
+
exports.QasrNamaaz = React.memo(({ googleMapsApiKey, defaultOrigin, defaultDestination, showResultsAsOverlay }) => {
|
|
8
|
+
var _a, _b;
|
|
8
9
|
const [scriptsLoaded, setScriptsLoaded] = React.useState(false);
|
|
9
10
|
const [results, setResults] = React.useState([]);
|
|
10
11
|
const [loading, setLoading] = React.useState(false);
|
|
@@ -18,6 +19,7 @@ exports.QasrNamaaz = React.memo(({ googleMapsApiKey }) => {
|
|
|
18
19
|
const [openCards, setOpenCards] = React.useState({});
|
|
19
20
|
const [activeTabs, setActiveTabs] = React.useState({});
|
|
20
21
|
const [fsMap, setFsMap] = React.useState(null);
|
|
22
|
+
const [showOverlay, setShowOverlay] = React.useState(false);
|
|
21
23
|
const originRef = React.useRef(null);
|
|
22
24
|
const destRef = React.useRef(null);
|
|
23
25
|
const resultsRef = React.useRef(null);
|
|
@@ -107,6 +109,39 @@ exports.QasrNamaaz = React.memo(({ googleMapsApiKey }) => {
|
|
|
107
109
|
makeAC(originRef.current, "origin");
|
|
108
110
|
makeAC(destRef.current, "dest");
|
|
109
111
|
}, [scriptsLoaded]);
|
|
112
|
+
// Geocode default addresses after scripts are ready
|
|
113
|
+
React.useEffect(() => {
|
|
114
|
+
if (!scriptsLoaded)
|
|
115
|
+
return;
|
|
116
|
+
const gc = new ((0, qasr_engine_1.gm)().maps.Geocoder)();
|
|
117
|
+
const geocodeDefault = (address, which) => {
|
|
118
|
+
gc.geocode({ address }, (results, status) => {
|
|
119
|
+
if (status !== "OK" || !(results === null || results === void 0 ? void 0 : results.length))
|
|
120
|
+
return;
|
|
121
|
+
const p = results[0];
|
|
122
|
+
if (!p.geometry)
|
|
123
|
+
return;
|
|
124
|
+
const co = (0, qasr_engine_1.getCounty)(p), st = (0, qasr_engine_1.getState)(p);
|
|
125
|
+
const text = co ? co + " County, " + st : st;
|
|
126
|
+
if (which === "origin") {
|
|
127
|
+
if (originRef.current)
|
|
128
|
+
originRef.current.value = address;
|
|
129
|
+
(0, qasr_engine_1.setOriginPlace)(p);
|
|
130
|
+
setOriginBadge({ text, visible: true });
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (destRef.current)
|
|
134
|
+
destRef.current.value = address;
|
|
135
|
+
(0, qasr_engine_1.setDestPlace)(p);
|
|
136
|
+
setDestBadge({ text, visible: true });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
if (defaultOrigin)
|
|
141
|
+
geocodeDefault(defaultOrigin, "origin");
|
|
142
|
+
if (defaultDestination)
|
|
143
|
+
geocodeDefault(defaultDestination, "dest");
|
|
144
|
+
}, [scriptsLoaded]);
|
|
110
145
|
// Init Leaflet maps when Map tab is opened
|
|
111
146
|
React.useEffect(() => {
|
|
112
147
|
Object.entries(activeTabs).forEach(([idxStr, tab]) => {
|
|
@@ -197,7 +232,12 @@ exports.QasrNamaaz = React.memo(({ googleMapsApiKey }) => {
|
|
|
197
232
|
setActiveTabs({});
|
|
198
233
|
setShowResults(true);
|
|
199
234
|
setProgress({ pct: 100, label: "Done!" });
|
|
200
|
-
|
|
235
|
+
if (showResultsAsOverlay) {
|
|
236
|
+
setShowOverlay(true);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
setTimeout(() => { var _a; return (_a = resultsRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth", block: "start" }); }, 100);
|
|
240
|
+
}
|
|
201
241
|
}
|
|
202
242
|
catch (e) {
|
|
203
243
|
setError("Error: " + e.message);
|
|
@@ -431,11 +471,27 @@ exports.QasrNamaaz = React.memo(({ googleMapsApiKey }) => {
|
|
|
431
471
|
React.createElement("div", { className: "prog-fill", style: { width: progress.pct + "%" } })),
|
|
432
472
|
React.createElement("div", { className: "prog-lbl" }, progress.label || "Starting")),
|
|
433
473
|
React.createElement("div", { className: "err" + (error ? " on" : "") }, error)),
|
|
434
|
-
React.createElement("div", { className: "results-wrap" + (showResults ? " on" : ""), ref: resultsRef },
|
|
474
|
+
!showResultsAsOverlay && (React.createElement("div", { className: "results-wrap" + (showResults ? " on" : ""), ref: resultsRef },
|
|
435
475
|
React.createElement("div", { className: "results-hd" },
|
|
436
476
|
React.createElement("h2", null, "Route Results"),
|
|
437
477
|
React.createElement("span", { className: "results-ct" }, resultCountText)),
|
|
438
478
|
React.createElement("div", null, results.map((r, i) => renderRouteCard(r, i))))),
|
|
479
|
+
showResultsAsOverlay && showOverlay && showResults && (React.createElement("div", { className: "overlay-layer" },
|
|
480
|
+
React.createElement("div", { className: "overlay-header" },
|
|
481
|
+
React.createElement("div", { className: "overlay-addresses" },
|
|
482
|
+
React.createElement("div", { className: "overlay-addr" },
|
|
483
|
+
React.createElement("span", { className: "overlay-addr-icon" }, "\u29BF"),
|
|
484
|
+
React.createElement("span", { className: "overlay-addr-text" }, ((_a = originRef.current) === null || _a === void 0 ? void 0 : _a.value) || "Origin")),
|
|
485
|
+
React.createElement("div", { className: "overlay-arrow" }, "\u2192"),
|
|
486
|
+
React.createElement("div", { className: "overlay-addr" },
|
|
487
|
+
React.createElement("span", { className: "overlay-addr-icon" }, "\u25CE"),
|
|
488
|
+
React.createElement("span", { className: "overlay-addr-text" }, ((_b = destRef.current) === null || _b === void 0 ? void 0 : _b.value) || "Destination"))),
|
|
489
|
+
React.createElement("button", { className: "overlay-dismiss", onClick: () => setShowOverlay(false) }, "\u2715")),
|
|
490
|
+
React.createElement("div", { className: "overlay-body", ref: resultsRef },
|
|
491
|
+
React.createElement("div", { className: "results-hd" },
|
|
492
|
+
React.createElement("h2", null, "Route Results"),
|
|
493
|
+
React.createElement("span", { className: "results-ct" }, resultCountText)),
|
|
494
|
+
React.createElement("div", null, results.map((r, i) => renderRouteCard(r, i))))))),
|
|
439
495
|
fsMap && (React.createElement("div", { className: "fs-overlay", onClick: e => {
|
|
440
496
|
if (e.target === e.currentTarget)
|
|
441
497
|
setFsMap(null);
|