@fieldia/map 0.18.0 → 0.19.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/README.md +53 -0
- package/package.json +4 -4
- package/src/index.d.mts +5 -0
- package/src/index.d.ts +5 -0
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs +2 -0
- package/src/index.mjs.map +1 -1
- package/src/lib/address-labels.d.mts +21 -0
- package/src/lib/address-labels.d.ts +21 -0
- package/src/lib/address-labels.js +16 -0
- package/src/lib/address-labels.js.map +1 -0
- package/src/lib/address-labels.mjs +12 -0
- package/src/lib/address-labels.mjs.map +1 -0
- package/src/lib/address-line.d.mts +2 -0
- package/src/lib/address-line.d.ts +2 -0
- package/src/lib/address-line.js +34 -0
- package/src/lib/address-line.js.map +1 -0
- package/src/lib/address-line.mjs +31 -0
- package/src/lib/address-line.mjs.map +1 -0
- package/src/lib/address-parts.d.mts +28 -0
- package/src/lib/address-parts.d.ts +28 -0
- package/src/lib/address-parts.js +47 -0
- package/src/lib/address-parts.js.map +1 -0
- package/src/lib/address-parts.mjs +38 -0
- package/src/lib/address-parts.mjs.map +1 -0
- package/src/lib/address-search.d.mts +21 -0
- package/src/lib/address-search.d.ts +21 -0
- package/src/lib/address-search.js +52 -0
- package/src/lib/address-search.js.map +1 -0
- package/src/lib/address-search.mjs +49 -0
- package/src/lib/address-search.mjs.map +1 -0
- package/src/lib/address-suggest.d.mts +18 -0
- package/src/lib/address-suggest.d.ts +18 -0
- package/src/lib/address-suggest.js +140 -0
- package/src/lib/address-suggest.js.map +1 -0
- package/src/lib/address-suggest.mjs +137 -0
- package/src/lib/address-suggest.mjs.map +1 -0
- package/src/lib/area-count.d.mts +47 -0
- package/src/lib/area-count.d.ts +47 -0
- package/src/lib/area-count.js +123 -0
- package/src/lib/area-count.js.map +1 -0
- package/src/lib/area-count.mjs +116 -0
- package/src/lib/area-count.mjs.map +1 -0
- package/src/lib/card.d.mts +14 -5
- package/src/lib/card.d.ts +14 -5
- package/src/lib/card.js +67 -12
- package/src/lib/card.js.map +1 -1
- package/src/lib/card.mjs +66 -12
- package/src/lib/card.mjs.map +1 -1
- package/src/lib/embed.d.mts +86 -0
- package/src/lib/embed.d.ts +86 -0
- package/src/lib/embed.js +96 -0
- package/src/lib/embed.js.map +1 -0
- package/src/lib/embed.mjs +93 -0
- package/src/lib/embed.mjs.map +1 -0
- package/src/lib/kinds.d.mts +6 -4
- package/src/lib/kinds.d.ts +6 -4
- package/src/lib/kinds.js +49 -2
- package/src/lib/kinds.js.map +1 -1
- package/src/lib/kinds.mjs +49 -2
- package/src/lib/kinds.mjs.map +1 -1
- package/src/lib/labels.d.mts +2 -0
- package/src/lib/labels.d.ts +2 -0
- package/src/lib/labels.js +4 -0
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +4 -0
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/list-view.d.mts +37 -1
- package/src/lib/list-view.d.ts +37 -1
- package/src/lib/list-view.js +97 -37
- package/src/lib/list-view.js.map +1 -1
- package/src/lib/list-view.mjs +97 -38
- package/src/lib/list-view.mjs.map +1 -1
- package/src/lib/map-core.d.mts +6 -1
- package/src/lib/map-core.d.ts +6 -1
- package/src/lib/map-core.js +13 -5
- package/src/lib/map-core.js.map +1 -1
- package/src/lib/map-core.mjs +13 -5
- package/src/lib/map-core.mjs.map +1 -1
- package/src/lib/pins.d.mts +20 -8
- package/src/lib/pins.d.ts +20 -8
- package/src/lib/pins.js +60 -15
- package/src/lib/pins.js.map +1 -1
- package/src/lib/pins.mjs +60 -17
- package/src/lib/pins.mjs.map +1 -1
- package/src/lib/place.js +2 -1
- package/src/lib/place.js.map +1 -1
- package/src/lib/place.mjs +2 -1
- package/src/lib/place.mjs.map +1 -1
- package/src/lib/providers.d.mts +10 -0
- package/src/lib/providers.d.ts +10 -0
- package/src/lib/providers.js +50 -40
- package/src/lib/providers.js.map +1 -1
- package/src/lib/providers.mjs +50 -40
- package/src/lib/providers.mjs.map +1 -1
- package/src/lib/regions.js +18 -1
- package/src/lib/regions.js.map +1 -1
- package/src/lib/regions.mjs +18 -1
- package/src/lib/regions.mjs.map +1 -1
- package/src/lib/search-box.d.mts +7 -1
- package/src/lib/search-box.d.ts +7 -1
- package/src/lib/search-box.js +15 -10
- package/src/lib/search-box.js.map +1 -1
- package/src/lib/search-box.mjs +15 -10
- package/src/lib/search-box.mjs.map +1 -1
- package/src/lib/settings.d.mts +19 -2
- package/src/lib/settings.d.ts +19 -2
- package/src/lib/styles.d.mts +12 -1
- package/src/lib/styles.d.ts +12 -1
- package/src/lib/styles.js +61 -3
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +59 -2
- package/src/lib/styles.mjs.map +1 -1
- package/src/lib/view-box.d.mts +18 -0
- package/src/lib/view-box.d.ts +18 -0
- package/src/lib/view-box.js +31 -0
- package/src/lib/view-box.js.map +1 -0
- package/src/lib/view-box.mjs +25 -0
- package/src/lib/view-box.mjs.map +1 -0
- package/src/lib/widgets.d.mts +3 -0
- package/src/lib/widgets.d.ts +3 -0
- package/src/lib/widgets.js +10 -1
- package/src/lib/widgets.js.map +1 -1
- package/src/lib/widgets.mjs +10 -1
- package/src/lib/widgets.mjs.map +1 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type DataSource, type Page, type RecordId, type ResolvedFilter, type SortOrder } from '@fieldia/core';
|
|
2
|
+
import type { ListViewPart } from '@fieldia/viewer';
|
|
3
|
+
import type { IconSet } from '@fieldia/widgets';
|
|
4
|
+
import type { LatLng } from './geo';
|
|
5
|
+
import { type MapSearch, type MapViewChange } from './list-view';
|
|
6
|
+
import type { MapRecord } from './pins';
|
|
7
|
+
import type { MapSettings } from './settings';
|
|
8
|
+
/**
|
|
9
|
+
* A list's map in a page of the app's own, outside the viewer: the page's
|
|
10
|
+
* own list, filters and address beside it, the map drawn by Fieldia. The
|
|
11
|
+
* app gives the page that describes the records (a list with `map`), where
|
|
12
|
+
* the records come from, the search they were found by, and what to do when
|
|
13
|
+
* the map asks for something; it gets the map back, to reload and destroy.
|
|
14
|
+
* The map brings its own base (its buttons, a part hidden, words for a
|
|
15
|
+
* screen reader) on its own element, and Fieldia's colours as tokens the
|
|
16
|
+
* page can set: none of it reaches the page round it.
|
|
17
|
+
*
|
|
18
|
+
* const map = mountListMap(element, {
|
|
19
|
+
* page, // a list page with "map"
|
|
20
|
+
* provider: azureMaps({ key }),
|
|
21
|
+
* dataSource, // or records: [...]
|
|
22
|
+
* filter: () => searchNow(), // the conditions the records are found by
|
|
23
|
+
* start: { center: { lat: 30.05, lng: 31.23 }, zoom: 12 }, // from the address, say
|
|
24
|
+
* onSearch: ({ kind, filter }) => { keep(kind, filter); map.reload(); },
|
|
25
|
+
* onViewChange: ({ center, zoom }) => history.replaceState(null, '', `?at=${center.lat},${center.lng},${zoom}`),
|
|
26
|
+
* onOpenRecord: (id) => location.assign(`/homes/${id}`),
|
|
27
|
+
* onHighlight: (id) => lightRow(id),
|
|
28
|
+
* });
|
|
29
|
+
*/
|
|
30
|
+
export interface ListMapOptions extends MapSettings {
|
|
31
|
+
/** The page that describes the records: their fields, and a list with `map` (where each is, its pin, its card, its height, its gestures). */
|
|
32
|
+
page: Page;
|
|
33
|
+
/** Where the records come from: a source with `list`, asked with the search, the list's order and the map's `limit`. */
|
|
34
|
+
dataSource?: DataSource;
|
|
35
|
+
/** Or the records themselves, found already: each `{ id, values }`, or a function giving them, asked again at each `reload()`. */
|
|
36
|
+
records?: readonly MapRecord[] | (() => readonly MapRecord[] | Promise<readonly MapRecord[]>);
|
|
37
|
+
/** The language: a tag such as `ar-EG`; Fieldia's words in English, Arabic, French or German, and the page's own `translations`. The document's language unless said. */
|
|
38
|
+
locale?: string;
|
|
39
|
+
/**
|
|
40
|
+
* The conditions the records are found by now, as a search bar's are: the
|
|
41
|
+
* map asks its source with them, draws the areas among them, and counts
|
|
42
|
+
* a view within them. A search the map asked for is among them once the app
|
|
43
|
+
* has taken it.
|
|
44
|
+
*/
|
|
45
|
+
filter?: readonly ResolvedFilter[] | (() => readonly ResolvedFilter[]);
|
|
46
|
+
/** The order the records come in: the map shows the same first ones as the page's own list. */
|
|
47
|
+
sort?: readonly SortOrder[] | (() => readonly SortOrder[]);
|
|
48
|
+
/** Where the map opens, from the page's address, say: there it fits no records at first, until the search changes. */
|
|
49
|
+
start?: {
|
|
50
|
+
center: LatLng;
|
|
51
|
+
zoom: number;
|
|
52
|
+
};
|
|
53
|
+
/** The app's icons for the pins, besides Fieldia's and the map's own. */
|
|
54
|
+
icons?: IconSet;
|
|
55
|
+
/** The page's buttons for one record, offered on its card: "Book a viewing". */
|
|
56
|
+
actions?: {
|
|
57
|
+
id: string;
|
|
58
|
+
label: string;
|
|
59
|
+
style?: 'primary' | 'secondary' | 'danger' | 'link';
|
|
60
|
+
}[];
|
|
61
|
+
/** A card's Open: the card has the button when this is given. */
|
|
62
|
+
onOpenRecord?: (id: RecordId) => void;
|
|
63
|
+
/** A pin under the pointer or the focus (null when none): light the record in the page's own list. */
|
|
64
|
+
onHighlight?: (id: RecordId | null) => void;
|
|
65
|
+
/**
|
|
66
|
+
* The map asks for a search: its view (`kind: 'view'`, "Search this area"),
|
|
67
|
+
* an area drawn (`drawn`), or a shaded area pressed (`region`). The app
|
|
68
|
+
* keeps one of each kind, a new one in the last one's place, as a search bar
|
|
69
|
+
* does, puts its conditions in `filter`, and calls `reload()`. Without it the
|
|
70
|
+
* map offers no search: no "Search this area", no tools to draw an area.
|
|
71
|
+
*/
|
|
72
|
+
onSearch?: (search: MapSearch) => void;
|
|
73
|
+
/** The map has stopped, after a move or a zoom: where it stands, to keep in the page's address. Each view once. */
|
|
74
|
+
onViewChange?: (view: MapViewChange) => void;
|
|
75
|
+
/** Whether a record is chosen, and a choice made on its card; the map keeps its own choice when these are not given. */
|
|
76
|
+
isChosen?: (id: RecordId) => boolean;
|
|
77
|
+
onChoose?: (id: RecordId, chosen: boolean) => void;
|
|
78
|
+
/** One of `actions` pressed on a record's card: the button is busy until it is done. */
|
|
79
|
+
onAction?: (id: string, ids: RecordId[]) => void | Promise<void>;
|
|
80
|
+
/** "Nearest first" pressed: the order the page's own list should take too (null: its own again). */
|
|
81
|
+
onSort?: (order: SortOrder[] | null) => void;
|
|
82
|
+
}
|
|
83
|
+
/** A list's map in a page: its element (already in the page), and what the page asks of it. */
|
|
84
|
+
export type ListMapHandle = ListViewPart;
|
|
85
|
+
/** Puts a list's map into `host`, loads its records, and hands it back. Throws when the page cannot be shown, saying why. */
|
|
86
|
+
export declare function mountListMap(host: HTMLElement, options: ListMapOptions): ListMapHandle;
|
package/src/lib/embed.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mountListMap = mountListMap;
|
|
4
|
+
const core_1 = require("@fieldia/core");
|
|
5
|
+
const list_view_1 = require("./list-view");
|
|
6
|
+
const styles_1 = require("./styles");
|
|
7
|
+
const OWN = ['en', 'ar', 'fr', 'de'];
|
|
8
|
+
/** Puts a list's map into `host`, loads its records, and hands it back. Throws when the page cannot be shown, saying why. */
|
|
9
|
+
function mountListMap(host, options) {
|
|
10
|
+
const doc = host.ownerDocument;
|
|
11
|
+
const checked = (0, core_1.checkPage)(options.page);
|
|
12
|
+
if (!checked.ok)
|
|
13
|
+
throw new Error(`This page cannot be shown:\n${checked.issues.map((i) => ` ${i.path}: ${i.message}`).join('\n')}`);
|
|
14
|
+
const tag = options.locale ?? (doc.documentElement.lang || checked.page.language || 'en');
|
|
15
|
+
const page = (0, core_1.localizePage)(checked.page, tag);
|
|
16
|
+
const node = page.layout;
|
|
17
|
+
if (node.type !== 'list' || !node.map)
|
|
18
|
+
throw new Error('mountListMap shows a list page with "map": its layout is a list, and its map says where each record is.');
|
|
19
|
+
const base = tag.split('-')[0].toLowerCase();
|
|
20
|
+
const locale = OWN.includes(base) ? base : 'en';
|
|
21
|
+
const read = (given, none) => (typeof given === 'function' ? given() : (given ?? none));
|
|
22
|
+
// The records given, as a source that hands them over as they are: the search found them already.
|
|
23
|
+
const given = options.records;
|
|
24
|
+
const dataSource = given
|
|
25
|
+
? {
|
|
26
|
+
async list() {
|
|
27
|
+
const records = [...(await read(given, []))];
|
|
28
|
+
return { records, total: records.length };
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
: options.dataSource;
|
|
32
|
+
const chosen = new Set();
|
|
33
|
+
let order = null;
|
|
34
|
+
let part = null;
|
|
35
|
+
(0, styles_1.installEmbedStyles)(doc);
|
|
36
|
+
part = (0, list_view_1.listMap)(options, {
|
|
37
|
+
page,
|
|
38
|
+
node,
|
|
39
|
+
dataSource,
|
|
40
|
+
document: doc,
|
|
41
|
+
locale,
|
|
42
|
+
...(options.icons ? { icons: options.icons } : {}),
|
|
43
|
+
...(options.start ? { start: options.start } : {}),
|
|
44
|
+
given: !!given,
|
|
45
|
+
searches: !!options.onSearch,
|
|
46
|
+
filter: () => [...read(options.filter, [])],
|
|
47
|
+
sort: () => order ?? [...read(options.sort, [])],
|
|
48
|
+
sortBy(next) {
|
|
49
|
+
order = next;
|
|
50
|
+
options.onSort?.(next);
|
|
51
|
+
void part?.reload();
|
|
52
|
+
},
|
|
53
|
+
isChosen: (id) => (options.isChosen ? options.isChosen(id) : chosen.has(id)),
|
|
54
|
+
choose(id, on) {
|
|
55
|
+
if (on)
|
|
56
|
+
chosen.add(id);
|
|
57
|
+
else
|
|
58
|
+
chosen.delete(id);
|
|
59
|
+
options.onChoose?.(id, on);
|
|
60
|
+
part?.chosenChanged();
|
|
61
|
+
},
|
|
62
|
+
...(options.onOpenRecord ? { open: options.onOpenRecord } : {}),
|
|
63
|
+
highlight: (id) => options.onHighlight?.(id),
|
|
64
|
+
addSearch: (search) => options.onSearch?.(search),
|
|
65
|
+
actions: options.actions ?? [],
|
|
66
|
+
async act(id, ids, button) {
|
|
67
|
+
button.setAttribute('aria-busy', 'true');
|
|
68
|
+
try {
|
|
69
|
+
await options.onAction?.(id, ids);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
button.removeAttribute('aria-busy');
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
const element = part.element;
|
|
77
|
+
element.classList.add('fd-map-embed');
|
|
78
|
+
const viewChanged = (event) => options.onViewChange?.(event.detail);
|
|
79
|
+
element.addEventListener('fd-map-view', viewChanged);
|
|
80
|
+
host.append(element);
|
|
81
|
+
void part.reload();
|
|
82
|
+
const shown = part;
|
|
83
|
+
return {
|
|
84
|
+
element,
|
|
85
|
+
reload: () => shown.reload(),
|
|
86
|
+
highlight: (id) => shown.highlight(id),
|
|
87
|
+
chosenChanged: () => shown.chosenChanged(),
|
|
88
|
+
shown: () => shown.shown(),
|
|
89
|
+
destroy() {
|
|
90
|
+
element.removeEventListener('fd-map-view', viewChanged);
|
|
91
|
+
shown.destroy();
|
|
92
|
+
element.remove();
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/embed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { checkPage, localizePage } from '@fieldia/core';
|
|
2
|
+
import { listMap } from './list-view.mjs';
|
|
3
|
+
import { installEmbedStyles } from './styles.mjs';
|
|
4
|
+
const OWN = ['en', 'ar', 'fr', 'de'];
|
|
5
|
+
/** Puts a list's map into `host`, loads its records, and hands it back. Throws when the page cannot be shown, saying why. */
|
|
6
|
+
export function mountListMap(host, options) {
|
|
7
|
+
const doc = host.ownerDocument;
|
|
8
|
+
const checked = checkPage(options.page);
|
|
9
|
+
if (!checked.ok)
|
|
10
|
+
throw new Error(`This page cannot be shown:\n${checked.issues.map((i) => ` ${i.path}: ${i.message}`).join('\n')}`);
|
|
11
|
+
const tag = options.locale ?? (doc.documentElement.lang || checked.page.language || 'en');
|
|
12
|
+
const page = localizePage(checked.page, tag);
|
|
13
|
+
const node = page.layout;
|
|
14
|
+
if (node.type !== 'list' || !node.map)
|
|
15
|
+
throw new Error('mountListMap shows a list page with "map": its layout is a list, and its map says where each record is.');
|
|
16
|
+
const base = tag.split('-')[0].toLowerCase();
|
|
17
|
+
const locale = OWN.includes(base) ? base : 'en';
|
|
18
|
+
const read = (given, none) => (typeof given === 'function' ? given() : (given ?? none));
|
|
19
|
+
// The records given, as a source that hands them over as they are: the search found them already.
|
|
20
|
+
const given = options.records;
|
|
21
|
+
const dataSource = given
|
|
22
|
+
? {
|
|
23
|
+
async list() {
|
|
24
|
+
const records = [...(await read(given, []))];
|
|
25
|
+
return { records, total: records.length };
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
: options.dataSource;
|
|
29
|
+
const chosen = new Set();
|
|
30
|
+
let order = null;
|
|
31
|
+
let part = null;
|
|
32
|
+
installEmbedStyles(doc);
|
|
33
|
+
part = listMap(options, {
|
|
34
|
+
page,
|
|
35
|
+
node,
|
|
36
|
+
dataSource,
|
|
37
|
+
document: doc,
|
|
38
|
+
locale,
|
|
39
|
+
...(options.icons ? { icons: options.icons } : {}),
|
|
40
|
+
...(options.start ? { start: options.start } : {}),
|
|
41
|
+
given: !!given,
|
|
42
|
+
searches: !!options.onSearch,
|
|
43
|
+
filter: () => [...read(options.filter, [])],
|
|
44
|
+
sort: () => order ?? [...read(options.sort, [])],
|
|
45
|
+
sortBy(next) {
|
|
46
|
+
order = next;
|
|
47
|
+
options.onSort?.(next);
|
|
48
|
+
void part?.reload();
|
|
49
|
+
},
|
|
50
|
+
isChosen: (id) => (options.isChosen ? options.isChosen(id) : chosen.has(id)),
|
|
51
|
+
choose(id, on) {
|
|
52
|
+
if (on)
|
|
53
|
+
chosen.add(id);
|
|
54
|
+
else
|
|
55
|
+
chosen.delete(id);
|
|
56
|
+
options.onChoose?.(id, on);
|
|
57
|
+
part?.chosenChanged();
|
|
58
|
+
},
|
|
59
|
+
...(options.onOpenRecord ? { open: options.onOpenRecord } : {}),
|
|
60
|
+
highlight: (id) => options.onHighlight?.(id),
|
|
61
|
+
addSearch: (search) => options.onSearch?.(search),
|
|
62
|
+
actions: options.actions ?? [],
|
|
63
|
+
async act(id, ids, button) {
|
|
64
|
+
button.setAttribute('aria-busy', 'true');
|
|
65
|
+
try {
|
|
66
|
+
await options.onAction?.(id, ids);
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
button.removeAttribute('aria-busy');
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
const element = part.element;
|
|
74
|
+
element.classList.add('fd-map-embed');
|
|
75
|
+
const viewChanged = (event) => options.onViewChange?.(event.detail);
|
|
76
|
+
element.addEventListener('fd-map-view', viewChanged);
|
|
77
|
+
host.append(element);
|
|
78
|
+
void part.reload();
|
|
79
|
+
const shown = part;
|
|
80
|
+
return {
|
|
81
|
+
element,
|
|
82
|
+
reload: () => shown.reload(),
|
|
83
|
+
highlight: (id) => shown.highlight(id),
|
|
84
|
+
chosenChanged: () => shown.chosenChanged(),
|
|
85
|
+
shown: () => shown.shown(),
|
|
86
|
+
destroy() {
|
|
87
|
+
element.removeEventListener('fd-map-view', viewChanged);
|
|
88
|
+
shown.destroy();
|
|
89
|
+
element.remove();
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=embed.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/embed.ts"],"names":[],"mappings":"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"}
|
package/src/lib/kinds.d.mts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Field, FieldNode, Locale, Page } from '@fieldia/core';
|
|
2
|
+
import { type AddressLabels } from './address-labels.mjs';
|
|
2
3
|
import { type MapLabels } from './labels.mjs';
|
|
3
4
|
/**
|
|
4
|
-
* The maps as kinds of field in Fieldia's designer: Place
|
|
5
|
-
* toolbox, each with its settings on the
|
|
5
|
+
* The maps as kinds of field in Fieldia's designer: Place, Area and an
|
|
6
|
+
* address with suggestions in its toolbox, each with its settings on the
|
|
7
|
+
* picked field. Pass them to the
|
|
6
8
|
* designer as `kinds`, and the widgets as `widgets`, as an app does its own
|
|
7
9
|
* kinds. Shaped as the designer's AppKind, without this package needing the
|
|
8
10
|
* designer.
|
|
@@ -28,8 +30,8 @@ export interface MapKind {
|
|
|
28
30
|
document: Document;
|
|
29
31
|
}): HTMLElement;
|
|
30
32
|
}
|
|
31
|
-
/** Place and
|
|
33
|
+
/** Place, Area and an address with suggestions for the designer, in its language. */
|
|
32
34
|
export declare function mapKinds(options?: {
|
|
33
35
|
locale?: Locale;
|
|
34
|
-
labels?: Partial<MapLabels>;
|
|
36
|
+
labels?: Partial<MapLabels & AddressLabels>;
|
|
35
37
|
}): MapKind[];
|
package/src/lib/kinds.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Field, FieldNode, Locale, Page } from '@fieldia/core';
|
|
2
|
+
import { type AddressLabels } from './address-labels';
|
|
2
3
|
import { type MapLabels } from './labels';
|
|
3
4
|
/**
|
|
4
|
-
* The maps as kinds of field in Fieldia's designer: Place
|
|
5
|
-
* toolbox, each with its settings on the
|
|
5
|
+
* The maps as kinds of field in Fieldia's designer: Place, Area and an
|
|
6
|
+
* address with suggestions in its toolbox, each with its settings on the
|
|
7
|
+
* picked field. Pass them to the
|
|
6
8
|
* designer as `kinds`, and the widgets as `widgets`, as an app does its own
|
|
7
9
|
* kinds. Shaped as the designer's AppKind, without this package needing the
|
|
8
10
|
* designer.
|
|
@@ -28,8 +30,8 @@ export interface MapKind {
|
|
|
28
30
|
document: Document;
|
|
29
31
|
}): HTMLElement;
|
|
30
32
|
}
|
|
31
|
-
/** Place and
|
|
33
|
+
/** Place, Area and an address with suggestions for the designer, in its language. */
|
|
32
34
|
export declare function mapKinds(options?: {
|
|
33
35
|
locale?: Locale;
|
|
34
|
-
labels?: Partial<MapLabels>;
|
|
36
|
+
labels?: Partial<MapLabels & AddressLabels>;
|
|
35
37
|
}): MapKind[];
|
package/src/lib/kinds.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mapKinds = mapKinds;
|
|
4
|
+
const widgets_1 = require("@fieldia/widgets");
|
|
5
|
+
const address_labels_1 = require("./address-labels");
|
|
4
6
|
const labels_1 = require("./labels");
|
|
5
7
|
const PIN_ICON = '<path d="M12 21s-6.5-6.2-6.5-11.2a6.5 6.5 0 0 1 13 0C18.5 14.8 12 21 12 21z" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="9.8" r="2.4" fill="none" stroke="currentColor" stroke-width="1.8"/>';
|
|
6
8
|
const AREA_ICON = '<path d="M4.5 8.5 11 4l8.5 5-2.5 10.5H7.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>';
|
|
@@ -51,7 +53,7 @@ function previewOf(doc, icon, words) {
|
|
|
51
53
|
element.append(words);
|
|
52
54
|
return element;
|
|
53
55
|
}
|
|
54
|
-
/** Place and
|
|
56
|
+
/** Place, Area and an address with suggestions for the designer, in its language. */
|
|
55
57
|
function mapKinds(options = {}) {
|
|
56
58
|
const words = (0, labels_1.mapLabels)(options.locale, options.labels);
|
|
57
59
|
const place = {
|
|
@@ -129,6 +131,51 @@ function mapKinds(options = {}) {
|
|
|
129
131
|
},
|
|
130
132
|
preview: ({ document: doc }) => previewOf(doc, AREA_ICON, words.areaKind),
|
|
131
133
|
};
|
|
132
|
-
return [place, area];
|
|
134
|
+
return [place, area, addressKind(options)];
|
|
135
|
+
}
|
|
136
|
+
// ---- an address with suggestions --------------------------------------------
|
|
137
|
+
const ADDRESS_ICON = '<path d="M8 20s-4.5-4.4-4.5-8a4.5 4.5 0 0 1 9 0c0 3.6-4.5 8-4.5 8z" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M15 8h6M15 12h6M15 16h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>';
|
|
138
|
+
/** A text field the provider suggests addresses for, its settings the fields a picked one also fills and the country it keeps to. */
|
|
139
|
+
function addressKind(options) {
|
|
140
|
+
const words = (0, address_labels_1.addressLabels)(options.locale, options.labels);
|
|
141
|
+
return {
|
|
142
|
+
id: 'map-address',
|
|
143
|
+
label: words.addressKind,
|
|
144
|
+
group: words.mapsGroup,
|
|
145
|
+
icon: ADDRESS_ICON,
|
|
146
|
+
widget: 'address-search',
|
|
147
|
+
field: (label) => ({ type: 'char', label }),
|
|
148
|
+
fits: (field) => field.type === 'char',
|
|
149
|
+
settings({ document: doc, set }) {
|
|
150
|
+
const [place, parts, country] = ['placeField', 'partsField', 'countries'].map((key) => {
|
|
151
|
+
const select = doc.createElement('select');
|
|
152
|
+
select.className = 'fd-inline-select';
|
|
153
|
+
// As wide as a field's name, not as the longest country's.
|
|
154
|
+
select.style.maxWidth = '16em';
|
|
155
|
+
select.addEventListener('change', () => set({ [key]: select.value || null }));
|
|
156
|
+
return select;
|
|
157
|
+
});
|
|
158
|
+
const element = settingsRow(doc);
|
|
159
|
+
element.append(row(doc, words.settingPlace, place), row(doc, words.settingParts, parts), row(doc, words.settingCountry, country));
|
|
160
|
+
return {
|
|
161
|
+
element,
|
|
162
|
+
refresh(page, node) {
|
|
163
|
+
// A place and an address's parts are kept in json fields: a place's, an address's.
|
|
164
|
+
const json = Object.entries(page.fields).filter(([, field]) => field.type === 'json');
|
|
165
|
+
for (const [select, key] of [[place, 'placeField'], [parts, 'partsField']]) {
|
|
166
|
+
select.replaceChildren(new Option(words.settingNowhere, ''), ...json.map(([name, field]) => new Option(field.label, name)));
|
|
167
|
+
select.value = String(node.options?.[key] ?? '');
|
|
168
|
+
}
|
|
169
|
+
// One country here; several, written on the page, are kept as they are.
|
|
170
|
+
const kept = node.options?.['countries'];
|
|
171
|
+
const codes = Array.isArray(kept) ? kept.join(',') : typeof kept === 'string' ? kept : '';
|
|
172
|
+
const listed = (0, widgets_1.countriesIn)(options.locale ?? 'en');
|
|
173
|
+
country.replaceChildren(new Option(words.anywhere, ''), ...(codes && !listed.some(([code]) => code === codes) ? [new Option(codes, codes)] : []), ...listed.map(([code, name]) => new Option(name, code)));
|
|
174
|
+
country.value = codes;
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
},
|
|
178
|
+
preview: ({ document: doc }) => previewOf(doc, ADDRESS_ICON, words.addressKind),
|
|
179
|
+
};
|
|
133
180
|
}
|
|
134
181
|
//# sourceMappingURL=kinds.js.map
|
package/src/lib/kinds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/kinds.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/kinds.ts"],"names":[],"mappings":"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"}
|
package/src/lib/kinds.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { countriesIn } from '@fieldia/widgets';
|
|
2
|
+
import { addressLabels } from './address-labels.mjs';
|
|
1
3
|
import { mapLabels } from './labels.mjs';
|
|
2
4
|
const PIN_ICON = '<path d="M12 21s-6.5-6.2-6.5-11.2a6.5 6.5 0 0 1 13 0C18.5 14.8 12 21 12 21z" fill="none" stroke="currentColor" stroke-width="1.8"/><circle cx="12" cy="9.8" r="2.4" fill="none" stroke="currentColor" stroke-width="1.8"/>';
|
|
3
5
|
const AREA_ICON = '<path d="M4.5 8.5 11 4l8.5 5-2.5 10.5H7.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>';
|
|
@@ -48,7 +50,7 @@ function previewOf(doc, icon, words) {
|
|
|
48
50
|
element.append(words);
|
|
49
51
|
return element;
|
|
50
52
|
}
|
|
51
|
-
/** Place and
|
|
53
|
+
/** Place, Area and an address with suggestions for the designer, in its language. */
|
|
52
54
|
export function mapKinds(options = {}) {
|
|
53
55
|
const words = mapLabels(options.locale, options.labels);
|
|
54
56
|
const place = {
|
|
@@ -126,6 +128,51 @@ export function mapKinds(options = {}) {
|
|
|
126
128
|
},
|
|
127
129
|
preview: ({ document: doc }) => previewOf(doc, AREA_ICON, words.areaKind),
|
|
128
130
|
};
|
|
129
|
-
return [place, area];
|
|
131
|
+
return [place, area, addressKind(options)];
|
|
132
|
+
}
|
|
133
|
+
// ---- an address with suggestions --------------------------------------------
|
|
134
|
+
const ADDRESS_ICON = '<path d="M8 20s-4.5-4.4-4.5-8a4.5 4.5 0 0 1 9 0c0 3.6-4.5 8-4.5 8z" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M15 8h6M15 12h6M15 16h4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>';
|
|
135
|
+
/** A text field the provider suggests addresses for, its settings the fields a picked one also fills and the country it keeps to. */
|
|
136
|
+
function addressKind(options) {
|
|
137
|
+
const words = addressLabels(options.locale, options.labels);
|
|
138
|
+
return {
|
|
139
|
+
id: 'map-address',
|
|
140
|
+
label: words.addressKind,
|
|
141
|
+
group: words.mapsGroup,
|
|
142
|
+
icon: ADDRESS_ICON,
|
|
143
|
+
widget: 'address-search',
|
|
144
|
+
field: (label) => ({ type: 'char', label }),
|
|
145
|
+
fits: (field) => field.type === 'char',
|
|
146
|
+
settings({ document: doc, set }) {
|
|
147
|
+
const [place, parts, country] = ['placeField', 'partsField', 'countries'].map((key) => {
|
|
148
|
+
const select = doc.createElement('select');
|
|
149
|
+
select.className = 'fd-inline-select';
|
|
150
|
+
// As wide as a field's name, not as the longest country's.
|
|
151
|
+
select.style.maxWidth = '16em';
|
|
152
|
+
select.addEventListener('change', () => set({ [key]: select.value || null }));
|
|
153
|
+
return select;
|
|
154
|
+
});
|
|
155
|
+
const element = settingsRow(doc);
|
|
156
|
+
element.append(row(doc, words.settingPlace, place), row(doc, words.settingParts, parts), row(doc, words.settingCountry, country));
|
|
157
|
+
return {
|
|
158
|
+
element,
|
|
159
|
+
refresh(page, node) {
|
|
160
|
+
// A place and an address's parts are kept in json fields: a place's, an address's.
|
|
161
|
+
const json = Object.entries(page.fields).filter(([, field]) => field.type === 'json');
|
|
162
|
+
for (const [select, key] of [[place, 'placeField'], [parts, 'partsField']]) {
|
|
163
|
+
select.replaceChildren(new Option(words.settingNowhere, ''), ...json.map(([name, field]) => new Option(field.label, name)));
|
|
164
|
+
select.value = String(node.options?.[key] ?? '');
|
|
165
|
+
}
|
|
166
|
+
// One country here; several, written on the page, are kept as they are.
|
|
167
|
+
const kept = node.options?.['countries'];
|
|
168
|
+
const codes = Array.isArray(kept) ? kept.join(',') : typeof kept === 'string' ? kept : '';
|
|
169
|
+
const listed = countriesIn(options.locale ?? 'en');
|
|
170
|
+
country.replaceChildren(new Option(words.anywhere, ''), ...(codes && !listed.some(([code]) => code === codes) ? [new Option(codes, codes)] : []), ...listed.map(([code, name]) => new Option(name, code)));
|
|
171
|
+
country.value = codes;
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
preview: ({ document: doc }) => previewOf(doc, ADDRESS_ICON, words.addressKind),
|
|
176
|
+
};
|
|
130
177
|
}
|
|
131
178
|
//# sourceMappingURL=kinds.mjs.map
|
package/src/lib/kinds.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kinds.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/kinds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"kinds.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/kinds.ts"],"names":[],"mappings":"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"}
|
package/src/lib/labels.d.mts
CHANGED
|
@@ -77,6 +77,8 @@ export interface ListMapLabels {
|
|
|
77
77
|
/** How the keys reach the pins. */
|
|
78
78
|
pinKeys: string;
|
|
79
79
|
searchThisArea: string;
|
|
80
|
+
/** "Search this area" with how many records the view holds, when that is known: `{label}` the button's words, `{n}` the count. */
|
|
81
|
+
searchThisAreaCount: string;
|
|
80
82
|
/** The search a map puts in the list's search bar. */
|
|
81
83
|
inThisArea: string;
|
|
82
84
|
openRecord: string;
|
package/src/lib/labels.d.ts
CHANGED
|
@@ -77,6 +77,8 @@ export interface ListMapLabels {
|
|
|
77
77
|
/** How the keys reach the pins. */
|
|
78
78
|
pinKeys: string;
|
|
79
79
|
searchThisArea: string;
|
|
80
|
+
/** "Search this area" with how many records the view holds, when that is known: `{label}` the button's words, `{n}` the count. */
|
|
81
|
+
searchThisAreaCount: string;
|
|
80
82
|
/** The search a map puts in the list's search bar. */
|
|
81
83
|
inThisArea: string;
|
|
82
84
|
openRecord: string;
|
package/src/lib/labels.js
CHANGED
|
@@ -266,6 +266,7 @@ exports.LIST_MAP_LABELS = {
|
|
|
266
266
|
en: {
|
|
267
267
|
pinKeys: 'Tab goes through the pins. Enter opens a pin’s card; Escape closes it.',
|
|
268
268
|
searchThisArea: 'Search this area',
|
|
269
|
+
searchThisAreaCount: '{label} ({n})',
|
|
269
270
|
inThisArea: 'In this area',
|
|
270
271
|
openRecord: 'Open',
|
|
271
272
|
choose: 'Choose',
|
|
@@ -285,6 +286,7 @@ exports.LIST_MAP_LABELS = {
|
|
|
285
286
|
ar: {
|
|
286
287
|
pinKeys: 'ينتقل Tab بين الدبابيس. يفتح Enter بطاقة الدبوس، ويغلقها Escape.',
|
|
287
288
|
searchThisArea: 'ابحث في هذه المنطقة',
|
|
289
|
+
searchThisAreaCount: '{label} ({n})',
|
|
288
290
|
inThisArea: 'في هذه المنطقة',
|
|
289
291
|
openRecord: 'فتح',
|
|
290
292
|
choose: 'اختيار',
|
|
@@ -304,6 +306,7 @@ exports.LIST_MAP_LABELS = {
|
|
|
304
306
|
fr: {
|
|
305
307
|
pinKeys: 'Tab parcourt les épingles. Entrée ouvre la fiche d’une épingle, Échap la ferme.',
|
|
306
308
|
searchThisArea: 'Rechercher dans cette zone',
|
|
309
|
+
searchThisAreaCount: '{label} ({n})',
|
|
307
310
|
inThisArea: 'Dans cette zone',
|
|
308
311
|
openRecord: 'Ouvrir',
|
|
309
312
|
choose: 'Choisir',
|
|
@@ -323,6 +326,7 @@ exports.LIST_MAP_LABELS = {
|
|
|
323
326
|
de: {
|
|
324
327
|
pinKeys: 'Tab springt von Nadel zu Nadel. Eingabe öffnet die Karte einer Nadel, Escape schließt sie.',
|
|
325
328
|
searchThisArea: 'In diesem Gebiet suchen',
|
|
329
|
+
searchThisAreaCount: '{label} ({n})',
|
|
326
330
|
inThisArea: 'In diesem Gebiet',
|
|
327
331
|
openRecord: 'Öffnen',
|
|
328
332
|
choose: 'Auswählen',
|