@wix/himalaya-cli 0.1026.0 → 0.1027.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/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/builder.d.ts +9 -0
- package/dist/cli.mjs +1052 -653
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/app-config.md +6 -0
- package/guides/headless-loop.md +3 -1
- package/package.json +2 -2
- package/templates/beauty-salon/dev/index.ts +331 -199
- package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/beauty-salon-owner/dev/index.ts +857 -458
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/branded-lite/dev/index.ts +1539 -623
- package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/branded-lite/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/community-club/dev/index.ts +237 -142
- package/templates/community-club/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/community-club/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/community-club-owner/dev/index.ts +857 -458
- package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/events-meetups/dev/index.ts +202 -129
- package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/events-meetups/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/events-meetups-owner/dev/index.ts +815 -458
- package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/gym-fitness/dev/index.ts +461 -212
- package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/gym-fitness-owner/dev/index.ts +758 -338
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/himi-chat/dev/index.ts +26 -1
- package/templates/nonprofit-cause/dev/index.ts +246 -153
- package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/nonprofit-cause-owner/dev/index.ts +716 -338
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/owner-lite/dev/index.ts +758 -338
- package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/owner-lite/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/podcast-creator/dev/index.ts +255 -164
- package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/podcast-creator-owner/dev/index.ts +857 -458
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/portfolio-creative/dev/index.ts +287 -175
- package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/portfolio-creative-owner/dev/index.ts +857 -458
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/restaurant/dev/index.ts +200 -126
- package/templates/restaurant/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/restaurant/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/restaurant-owner/dev/index.ts +758 -338
- package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/retail-store/dev/index.ts +113 -138
- package/templates/retail-store/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/retail-store/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/retail-store-owner/dev/index.ts +716 -338
- package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/surface-showcase/dev/index.ts +27 -0
- package/templates/yoga-studio/dev/index.ts +427 -198
- package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +28 -3
- package/templates/yoga-studio-owner/dev/index.ts +716 -338
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +18 -8
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +28 -3
|
@@ -8,6 +8,9 @@ export interface CollectionConfig {
|
|
|
8
8
|
image?: string;
|
|
9
9
|
filter?: string;
|
|
10
10
|
filterValues?: string[];
|
|
11
|
+
/** A state key holding `{ label }` rows (e.g. a worker's full category list) whose
|
|
12
|
+
* labels are filter choices even when no loaded row carries them yet. */
|
|
13
|
+
filterValuesFrom?: string;
|
|
11
14
|
searchPlaceholder?: string;
|
|
12
15
|
sortLabels?: { default: string; az: string; za: string };
|
|
13
16
|
metadata?: string[];
|
|
@@ -20,15 +23,22 @@ export interface CollectionConfig {
|
|
|
20
23
|
reviewSelectedAction?: string;
|
|
21
24
|
/** Optional comfortable grid media height for immersive visual catalogs. */
|
|
22
25
|
gridImageHeight?: number;
|
|
26
|
+
/** The card's primary verb, shown as a visible button beside the overflow.
|
|
27
|
+
* `screenId` opens that screen with the row id; without it the verb reuses the
|
|
28
|
+
* row's own tap action (the detail screen that owns the verb). */
|
|
29
|
+
primaryVerb?: { label: string; screenId?: string };
|
|
23
30
|
}
|
|
31
|
+
/** At or below this many records, with no query/filter narrowing them and no further
|
|
32
|
+
* page, the list/grid toggle, Refine, chips, search and count are noise. */
|
|
33
|
+
export const COLLECTION_CHROME_MIN_ITEMS = 4;
|
|
24
34
|
export const COLLECTIONS: Record<string, CollectionConfig> = {
|
|
25
35
|
himiStoreShop: { rows: 'results', title: 'name', subtitle: 'subtitle', image: 'image', view: 'grid', backendQuery: true },
|
|
26
|
-
himiBookingServices: { rows: 'results', title: 'name', subtitle: 'subtitle', image: 'image', filter: 'category', view: 'grid', backendQuery: true, searchPlaceholder: 'Service name starts with…' },
|
|
36
|
+
himiBookingServices: { rows: 'results', title: 'name', subtitle: 'subtitle', image: 'image', filter: 'category', view: 'grid', backendQuery: true, searchPlaceholder: 'Service name starts with…', primaryVerb: { label: 'Book', screenId: 'himi_time' } },
|
|
27
37
|
himiBookingBookings: { rows: 'rows', title: 'title', subtitle: 'subtitle', metadata: ['status'], view: 'list', backendQuery: true,
|
|
28
38
|
defaultFilter: 'value:Upcoming', searchPlaceholder: 'Exact booking ID', filterValues: ['Upcoming', 'Past', 'Cancelled'],
|
|
29
39
|
sortLabels: { default: 'Soonest', az: 'Oldest', za: 'Latest' } },
|
|
30
|
-
himiEvents: { rows: 'results', title: 'title', subtitle: 'dateLine', image: 'image', view: 'grid', backendQuery: true, searchPlaceholder: 'Exact event title', filterValues: ['Upcoming', 'Past'], sortLabels: { default: 'Date', az: 'Title A–Z', za: 'Title Z–A' } },
|
|
31
|
-
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', view: 'grid' },
|
|
40
|
+
himiEvents: { rows: 'results', title: 'title', subtitle: 'dateLine', image: 'image', view: 'grid', backendQuery: true, searchPlaceholder: 'Exact event title', filterValues: ['Upcoming', 'Past'], sortLabels: { default: 'Date', az: 'Title A–Z', za: 'Title Z–A' }, primaryVerb: { label: 'Register' } },
|
|
41
|
+
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid' },
|
|
32
42
|
himiOwnerLiteProducts: { rows: 'products', title: 'name', subtitle: 'price', image: 'image', view: 'grid', backendQuery: true },
|
|
33
43
|
himiOwnerModules: { instanceInput: 'module', rows: 'rows', title: 'title', subtitle: 'subtitle', image: 'image', filter: 'statusLabel', view: 'list', paged: true, reviewAction: 'prepareRecord', reviewSelectedAction: 'prepareSelected' },
|
|
34
44
|
himiOwnerLiteServices: { rows: 'services', title: 'name', subtitle: 'subtitle', view: 'list', backendQuery: true, searchPlaceholder: 'Service name starts with…' },
|
|
@@ -45,14 +55,14 @@ export const COLLECTIONS: Record<string, CollectionConfig> = {
|
|
|
45
55
|
sortLabels: { default: 'Newest', az: 'Oldest', za: 'Order # ↓' } },
|
|
46
56
|
himiBrandedPlans: { rows: 'rows', title: 'name', subtitle: 'description', metadata: ['priceLine', 'periodLine', 'trialBadge', 'perk1', 'perk2', 'perk3'], view: 'grid' },
|
|
47
57
|
himiBrandedPrograms: { rows: 'rows', title: 'name', subtitle: 'description', image: 'image', view: 'grid' },
|
|
48
|
-
himiBrandedCoupons: { rows: 'coupons', title: 'name', subtitle: 'subtitle', view: 'list' },
|
|
58
|
+
himiBrandedCoupons: { rows: 'coupons', title: 'name', subtitle: 'subtitle', view: 'list', primaryVerb: { label: 'Get code' } },
|
|
49
59
|
himiBrandedNotifications: { rows: 'items', title: 'name', subtitle: 'subtitle', image: 'photo', metadata: ['unreadDot'], view: 'list' },
|
|
50
|
-
himiBrandedLoyalty: { rows: 'rewards', title: 'name', subtitle: 'description', view: 'grid' },
|
|
60
|
+
himiBrandedLoyalty: { rows: 'rewards', title: 'name', subtitle: 'description', view: 'grid', primaryVerb: { label: 'Redeem' } },
|
|
51
61
|
himiBrandedReviews: { rows: 'reviews', title: 'title', subtitle: 'body', metadata: ['author', 'stars'], view: 'list' },
|
|
52
62
|
himiBrandedPortfolio: { rows: 'projects', title: 'title', subtitle: 'subtitle', image: 'image', view: 'grid', gridImageHeight: 180 },
|
|
53
63
|
himiBrandedInvoices: { rows: 'invoices', title: 'title', subtitle: 'subtitle', view: 'list' },
|
|
54
64
|
himiBrandedBadges: { rows: 'badges', title: 'name', subtitle: 'description', view: 'grid' },
|
|
55
|
-
himiBrandedDonations: { rows: 'campaigns', title: 'name', subtitle: 'description', view: 'grid' },
|
|
65
|
+
himiBrandedDonations: { rows: 'campaigns', title: 'name', subtitle: 'description', view: 'grid', primaryVerb: { label: 'Donate' } },
|
|
56
66
|
himiBrandedGiftCards: { rows: 'cards', title: 'name', subtitle: 'description', view: 'grid' },
|
|
57
67
|
himiBrandedVideos: { rows: 'channels', title: 'title', subtitle: 'description', view: 'grid' },
|
|
58
68
|
himiBrandedPodcasts: { rows: 'episodes', title: 'title', subtitle: 'subtitle', image: 'image', metadata: ['progressLabel'], view: 'list' },
|
|
@@ -114,7 +124,7 @@ export function collectionTitle(row: CollectionRow, config: CollectionConfig): s
|
|
|
114
124
|
return scalar(row[config.title]) || scalar(row.title) || scalar(row.name) || scalar(row.display) || scalar(row.label);
|
|
115
125
|
}
|
|
116
126
|
/** Does not mutate domain rows, paging, or domain-derived state. */
|
|
117
|
-
export function projectCollection(source: CollectionRow[], config: CollectionConfig, prefs: CollectionPreferences, backendQuery = false) {
|
|
127
|
+
export function projectCollection(source: CollectionRow[], config: CollectionConfig, prefs: CollectionPreferences, backendQuery = false, knownFilters: string[] = []) {
|
|
118
128
|
const query = prefs.query.trim().toLocaleLowerCase();
|
|
119
129
|
const unique = new Set<string>();
|
|
120
130
|
// Menu sections describe their following items; they are not actionable
|
|
@@ -130,7 +140,7 @@ export function projectCollection(source: CollectionRow[], config: CollectionCon
|
|
|
130
140
|
if (unique.has(id)) return false;
|
|
131
141
|
unique.add(id); return true;
|
|
132
142
|
});
|
|
133
|
-
const filters = config.filterValues ?? [...new Set(rows.map(row => config.filter ? scalar(row[config.filter]) : '').filter(Boolean))].sort();
|
|
143
|
+
const filters = config.filterValues ?? [...new Set([...knownFilters, ...rows.map(row => config.filter ? scalar(row[config.filter]) : '')].filter(Boolean))].sort();
|
|
134
144
|
const visible = rows.filter(row => {
|
|
135
145
|
if (backendQuery) return true;
|
|
136
146
|
if (prefs.filter === 'saved' && !prefs.savedIds.includes(collectionId(row))) return false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineService as register, type ServiceDefinition } from '@himalaya/state';
|
|
2
|
-
import { COLLECTIONS, normalizeCollection, projectCollection, collectionId, type CollectionRow } from './collection-contract.js';
|
|
2
|
+
import { COLLECTIONS, COLLECTION_CHROME_MIN_ITEMS, initialCollection, normalizeCollection, projectCollection, collectionId, type CollectionRow } from './collection-contract.js';
|
|
3
3
|
import { localPreferences, type PreferenceRuntime } from './local-preferences.js';
|
|
4
4
|
import { copyParam, stashCopy } from './himi-copy.js';
|
|
5
5
|
import { createCollectionQuery, type CollectionQuerySource, type CollectionQueryState } from './collection-query.js';
|
|
@@ -54,6 +54,14 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
54
54
|
/** Navigation can open a collection in a useful, reviewable context. Keep
|
|
55
55
|
* this input additive and constrained to the same criteria the collection UI
|
|
56
56
|
* can select; arbitrary route values must never become backend filters. */
|
|
57
|
+
/** Labels of the worker-listed filter choices (`filterValuesFrom`), minus the "All" row. */
|
|
58
|
+
const listedFilters = (state: State): string[] => config.filterValuesFrom && Array.isArray(state[config.filterValuesFrom])
|
|
59
|
+
? (state[config.filterValuesFrom] as unknown[]).flatMap(row => {
|
|
60
|
+
const r = row && typeof row === 'object' ? row as Record<string, unknown> : {};
|
|
61
|
+
return typeof r.label === 'string' && r.id !== '' ? [r.label] : [];
|
|
62
|
+
})
|
|
63
|
+
: [];
|
|
64
|
+
let pendingFilter = '';
|
|
57
65
|
const applyNavigationCriteria = (arg: unknown, state: State): boolean => {
|
|
58
66
|
const input = object(arg);
|
|
59
67
|
let changed = false;
|
|
@@ -70,9 +78,14 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
70
78
|
const configured = config.filterValues ?? [];
|
|
71
79
|
const rows = Array.isArray(state[config.rows]) ? state[config.rows] as CollectionRow[] : [];
|
|
72
80
|
const derived = config.filter ? rows.map(row => String(row[config.filter!] ?? '')).filter(Boolean) : [];
|
|
81
|
+
const known = listedFilters(state);
|
|
73
82
|
const allowed = filter === 'all' || filter === 'saved' ||
|
|
74
|
-
(filter.startsWith('value:') && [...configured, ...derived].includes(filter.slice(6)));
|
|
83
|
+
(filter.startsWith('value:') && [...configured, ...derived, ...known].includes(filter.slice(6)));
|
|
75
84
|
if (allowed) { prefs.filter = filter; changed = true; }
|
|
85
|
+
// A worker-listed choice (e.g. a blog category) may not have loaded yet at boot:
|
|
86
|
+
// hold it and settle it against the list once the list arrives, instead of
|
|
87
|
+
// discarding a valid deep link before load().
|
|
88
|
+
else if (filter.startsWith('value:') && config.filterValuesFrom && known.length === 0) pendingFilter = filter;
|
|
76
89
|
}
|
|
77
90
|
if (changed) {
|
|
78
91
|
prefs.selectedIds = [];
|
|
@@ -90,7 +103,12 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
90
103
|
const derive = (s: State): State => {
|
|
91
104
|
syncSaved();
|
|
92
105
|
const rows = Array.isArray(s[config.rows]) ? (s[config.rows] as CollectionRow[]).filter(x => x && typeof x === 'object') : [];
|
|
93
|
-
const
|
|
106
|
+
const known = listedFilters(s);
|
|
107
|
+
if (pendingFilter && known.length) {
|
|
108
|
+
if (known.includes(pendingFilter.slice(6))) { prefs.filter = pendingFilter; persisted.write(prefs); }
|
|
109
|
+
pendingFilter = '';
|
|
110
|
+
}
|
|
111
|
+
const projected = projectCollection(rows, config, prefs, !!backend && config.backendQuery === true, known);
|
|
94
112
|
projected.items.forEach(row => { row.collectionSelectLabel = row.collectionSelected ? copyParam('collection.selected', 'Selected') : copyParam('collection.select', 'Select'); });
|
|
95
113
|
if (previewId && !rows.some(row => collectionId(row) === previewId)) previewId = '';
|
|
96
114
|
const filterChoices = [{ id: 'all', label: copyParam('collection.all', 'All') }, { id: 'saved', label: copyParam('collection.saved', 'Saved') },
|
|
@@ -106,7 +124,14 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
106
124
|
const queryError = typeof backendState?.error === 'string' ? backendState.error.trim() : '';
|
|
107
125
|
const errorMessage = queryError || domainError || copyParam('collection.loadError', 'This collection could not load. Try again.');
|
|
108
126
|
const canRetry = !!backend || typeof def.actions?.refresh === 'function' || typeof def.actions?.load === 'function' || typeof def.actions?.collectionRetry === 'function';
|
|
127
|
+
// A default view is what the screen opens on; anything else is the member's own
|
|
128
|
+
// narrowing, which keeps the chrome (and the Clear that undoes it) on screen.
|
|
129
|
+
// "All" and the collection's own default (e.g. Upcoming) are both un-narrowed: Clear
|
|
130
|
+
// resets to "All", so showing it on either would offer a reset that changes nothing.
|
|
131
|
+
const narrowed = !!prefs.query.trim() || (prefs.filter !== 'all' && prefs.filter !== initialCollection(config).filter);
|
|
132
|
+
const hideChrome = !narrowed && !s.nextCursor && projected.loaded < COLLECTION_CHROME_MIN_ITEMS;
|
|
109
133
|
return { ...s, collection: { ...prefs, ...projected,
|
|
134
|
+
hideChrome, noActiveCriteria: !narrowed,
|
|
110
135
|
viewName, viewMessage, saveMessage, noSavedViews: prefs.savedViews.length === 0,
|
|
111
136
|
cursor: s.pageError === true || s.loadingMore === true ? '' : s.nextCursor,
|
|
112
137
|
noMore: !s.nextCursor || s.pageError === true || s.loadingMore === true,
|
|
@@ -4784,6 +4784,9 @@ const SCREENS = runtimeSetting({
|
|
|
4784
4784
|
},
|
|
4785
4785
|
"value": "$service:himiBrandedMenus.collection.query"
|
|
4786
4786
|
}
|
|
4787
|
+
},
|
|
4788
|
+
"modifiers": {
|
|
4789
|
+
"hiddenPath": "$service:himiBrandedMenus.collection.hideChrome"
|
|
4787
4790
|
}
|
|
4788
4791
|
},
|
|
4789
4792
|
{
|
|
@@ -4961,6 +4964,7 @@ const SCREENS = runtimeSetting({
|
|
|
4961
4964
|
}
|
|
4962
4965
|
},
|
|
4963
4966
|
"modifiers": {
|
|
4967
|
+
"hiddenPath": "$service:himiBrandedMenus.collection.hideChrome",
|
|
4964
4968
|
"padding": {
|
|
4965
4969
|
"bottom": 12
|
|
4966
4970
|
}
|
|
@@ -4998,37 +5002,55 @@ const SCREENS = runtimeSetting({
|
|
|
4998
5002
|
"actionId": "tier5.himiBrandedMenus.collectionFilter"
|
|
4999
5003
|
}
|
|
5000
5004
|
}
|
|
5005
|
+
},
|
|
5006
|
+
"modifiers": {
|
|
5007
|
+
"weight": 1
|
|
5001
5008
|
}
|
|
5002
5009
|
},
|
|
5003
5010
|
{
|
|
5004
|
-
"id": "",
|
|
5005
|
-
"body": {
|
|
5006
|
-
"package": "himalaya",
|
|
5007
|
-
"type": "Spacer",
|
|
5008
|
-
"props": {}
|
|
5009
|
-
}
|
|
5010
|
-
},
|
|
5011
|
-
{
|
|
5012
|
-
"id": "",
|
|
5011
|
+
"id": "himi_menu.rows.collection.clear",
|
|
5013
5012
|
"body": {
|
|
5014
5013
|
"package": "himalaya",
|
|
5015
|
-
"type": "
|
|
5014
|
+
"type": "Button",
|
|
5016
5015
|
"props": {
|
|
5017
|
-
"
|
|
5018
|
-
"style": "
|
|
5019
|
-
"
|
|
5016
|
+
"title": "Clear",
|
|
5017
|
+
"style": "plain",
|
|
5018
|
+
"fullWidth": false,
|
|
5019
|
+
"action": {
|
|
5020
|
+
"actionId": "tier5.himiBrandedMenus.collectionClear"
|
|
5021
|
+
}
|
|
5020
5022
|
}
|
|
5023
|
+
},
|
|
5024
|
+
"modifiers": {
|
|
5025
|
+
"hiddenPath": "$service:himiBrandedMenus.collection.noActiveCriteria"
|
|
5021
5026
|
}
|
|
5022
5027
|
}
|
|
5023
5028
|
]
|
|
5024
5029
|
}
|
|
5025
5030
|
},
|
|
5026
5031
|
"modifiers": {
|
|
5032
|
+
"hiddenPath": "$service:himiBrandedMenus.collection.hideChrome",
|
|
5027
5033
|
"padding": {
|
|
5028
5034
|
"bottom": 12
|
|
5029
5035
|
}
|
|
5030
5036
|
}
|
|
5031
5037
|
},
|
|
5038
|
+
{
|
|
5039
|
+
"id": "himi_menu.rows.collection.summary",
|
|
5040
|
+
"body": {
|
|
5041
|
+
"package": "himalaya",
|
|
5042
|
+
"type": "Text",
|
|
5043
|
+
"props": {
|
|
5044
|
+
"text": "$service:himiBrandedMenus.collection.summary",
|
|
5045
|
+
"style": "caption",
|
|
5046
|
+
"color": "textSecondary",
|
|
5047
|
+
"maxLines": 1
|
|
5048
|
+
}
|
|
5049
|
+
},
|
|
5050
|
+
"modifiers": {
|
|
5051
|
+
"hiddenPath": "$service:himiBrandedMenus.collection.hideChrome"
|
|
5052
|
+
}
|
|
5053
|
+
},
|
|
5032
5054
|
{
|
|
5033
5055
|
"id": "",
|
|
5034
5056
|
"body": {
|
|
@@ -7862,6 +7884,9 @@ const SCREENS = runtimeSetting({
|
|
|
7862
7884
|
},
|
|
7863
7885
|
"value": "$service:himiEvents.collection.query"
|
|
7864
7886
|
}
|
|
7887
|
+
},
|
|
7888
|
+
"modifiers": {
|
|
7889
|
+
"hiddenPath": "$service:himiEvents.collection.hideChrome"
|
|
7865
7890
|
}
|
|
7866
7891
|
},
|
|
7867
7892
|
{
|
|
@@ -8118,6 +8143,7 @@ const SCREENS = runtimeSetting({
|
|
|
8118
8143
|
}
|
|
8119
8144
|
},
|
|
8120
8145
|
"modifiers": {
|
|
8146
|
+
"hiddenPath": "$service:himiEvents.collection.hideChrome",
|
|
8121
8147
|
"padding": {
|
|
8122
8148
|
"bottom": 12
|
|
8123
8149
|
}
|
|
@@ -8155,37 +8181,55 @@ const SCREENS = runtimeSetting({
|
|
|
8155
8181
|
"actionId": "tier5.himiEvents.collectionFilter"
|
|
8156
8182
|
}
|
|
8157
8183
|
}
|
|
8184
|
+
},
|
|
8185
|
+
"modifiers": {
|
|
8186
|
+
"weight": 1
|
|
8158
8187
|
}
|
|
8159
8188
|
},
|
|
8160
8189
|
{
|
|
8161
|
-
"id": "",
|
|
8162
|
-
"body": {
|
|
8163
|
-
"package": "himalaya",
|
|
8164
|
-
"type": "Spacer",
|
|
8165
|
-
"props": {}
|
|
8166
|
-
}
|
|
8167
|
-
},
|
|
8168
|
-
{
|
|
8169
|
-
"id": "",
|
|
8190
|
+
"id": "himi_events.list.collection.clear",
|
|
8170
8191
|
"body": {
|
|
8171
8192
|
"package": "himalaya",
|
|
8172
|
-
"type": "
|
|
8193
|
+
"type": "Button",
|
|
8173
8194
|
"props": {
|
|
8174
|
-
"
|
|
8175
|
-
"style": "
|
|
8176
|
-
"
|
|
8195
|
+
"title": "Clear",
|
|
8196
|
+
"style": "plain",
|
|
8197
|
+
"fullWidth": false,
|
|
8198
|
+
"action": {
|
|
8199
|
+
"actionId": "tier5.himiEvents.collectionClear"
|
|
8200
|
+
}
|
|
8177
8201
|
}
|
|
8202
|
+
},
|
|
8203
|
+
"modifiers": {
|
|
8204
|
+
"hiddenPath": "$service:himiEvents.collection.noActiveCriteria"
|
|
8178
8205
|
}
|
|
8179
8206
|
}
|
|
8180
8207
|
]
|
|
8181
8208
|
}
|
|
8182
8209
|
},
|
|
8183
8210
|
"modifiers": {
|
|
8211
|
+
"hiddenPath": "$service:himiEvents.collection.hideChrome",
|
|
8184
8212
|
"padding": {
|
|
8185
8213
|
"bottom": 12
|
|
8186
8214
|
}
|
|
8187
8215
|
}
|
|
8188
8216
|
},
|
|
8217
|
+
{
|
|
8218
|
+
"id": "himi_events.list.collection.summary",
|
|
8219
|
+
"body": {
|
|
8220
|
+
"package": "himalaya",
|
|
8221
|
+
"type": "Text",
|
|
8222
|
+
"props": {
|
|
8223
|
+
"text": "$service:himiEvents.collection.summary",
|
|
8224
|
+
"style": "caption",
|
|
8225
|
+
"color": "textSecondary",
|
|
8226
|
+
"maxLines": 1
|
|
8227
|
+
}
|
|
8228
|
+
},
|
|
8229
|
+
"modifiers": {
|
|
8230
|
+
"hiddenPath": "$service:himiEvents.collection.hideChrome"
|
|
8231
|
+
}
|
|
8232
|
+
},
|
|
8189
8233
|
{
|
|
8190
8234
|
"id": "",
|
|
8191
8235
|
"body": {
|
|
@@ -8482,6 +8526,25 @@ const SCREENS = runtimeSetting({
|
|
|
8482
8526
|
"hiddenPath": "$service:himiEvents.collection.noSelection"
|
|
8483
8527
|
}
|
|
8484
8528
|
},
|
|
8529
|
+
{
|
|
8530
|
+
"id": "himi_events.list.collection.list.$item.collectionId/primary",
|
|
8531
|
+
"body": {
|
|
8532
|
+
"package": "himalaya",
|
|
8533
|
+
"type": "Button",
|
|
8534
|
+
"props": {
|
|
8535
|
+
"title": "Register",
|
|
8536
|
+
"style": "secondary",
|
|
8537
|
+
"fullWidth": false,
|
|
8538
|
+
"action": {
|
|
8539
|
+
"actionId": "himi.open",
|
|
8540
|
+
"params": {
|
|
8541
|
+
"screenId": "$item.detailScreenId",
|
|
8542
|
+
"id": "$item.id"
|
|
8543
|
+
}
|
|
8544
|
+
}
|
|
8545
|
+
}
|
|
8546
|
+
}
|
|
8547
|
+
},
|
|
8485
8548
|
{
|
|
8486
8549
|
"id": "himi_events.list.collection.list.$item.collectionId/actions",
|
|
8487
8550
|
"body": {
|
|
@@ -8811,6 +8874,25 @@ const SCREENS = runtimeSetting({
|
|
|
8811
8874
|
"hiddenPath": "$service:himiEvents.collection.noSelection"
|
|
8812
8875
|
}
|
|
8813
8876
|
},
|
|
8877
|
+
{
|
|
8878
|
+
"id": "himi_events.list.collection.grid.$item.collectionId/primary",
|
|
8879
|
+
"body": {
|
|
8880
|
+
"package": "himalaya",
|
|
8881
|
+
"type": "Button",
|
|
8882
|
+
"props": {
|
|
8883
|
+
"title": "Register",
|
|
8884
|
+
"style": "secondary",
|
|
8885
|
+
"fullWidth": false,
|
|
8886
|
+
"action": {
|
|
8887
|
+
"actionId": "himi.open",
|
|
8888
|
+
"params": {
|
|
8889
|
+
"screenId": "$item.detailScreenId",
|
|
8890
|
+
"id": "$item.id"
|
|
8891
|
+
}
|
|
8892
|
+
}
|
|
8893
|
+
}
|
|
8894
|
+
}
|
|
8895
|
+
},
|
|
8814
8896
|
{
|
|
8815
8897
|
"id": "",
|
|
8816
8898
|
"body": {
|
|
@@ -9133,6 +9215,25 @@ const SCREENS = runtimeSetting({
|
|
|
9133
9215
|
"hiddenPath": "$service:himiEvents.collection.noSelection"
|
|
9134
9216
|
}
|
|
9135
9217
|
},
|
|
9218
|
+
{
|
|
9219
|
+
"id": "himi_events.list.collection.compact-list.$item.collectionId/primary",
|
|
9220
|
+
"body": {
|
|
9221
|
+
"package": "himalaya",
|
|
9222
|
+
"type": "Button",
|
|
9223
|
+
"props": {
|
|
9224
|
+
"title": "Register",
|
|
9225
|
+
"style": "secondary",
|
|
9226
|
+
"fullWidth": false,
|
|
9227
|
+
"action": {
|
|
9228
|
+
"actionId": "himi.open",
|
|
9229
|
+
"params": {
|
|
9230
|
+
"screenId": "$item.detailScreenId",
|
|
9231
|
+
"id": "$item.id"
|
|
9232
|
+
}
|
|
9233
|
+
}
|
|
9234
|
+
}
|
|
9235
|
+
}
|
|
9236
|
+
},
|
|
9136
9237
|
{
|
|
9137
9238
|
"id": "himi_events.list.collection.compact-list.$item.collectionId/actions",
|
|
9138
9239
|
"body": {
|
|
@@ -9462,6 +9563,25 @@ const SCREENS = runtimeSetting({
|
|
|
9462
9563
|
"hiddenPath": "$service:himiEvents.collection.noSelection"
|
|
9463
9564
|
}
|
|
9464
9565
|
},
|
|
9566
|
+
{
|
|
9567
|
+
"id": "himi_events.list.collection.compact-grid.$item.collectionId/primary",
|
|
9568
|
+
"body": {
|
|
9569
|
+
"package": "himalaya",
|
|
9570
|
+
"type": "Button",
|
|
9571
|
+
"props": {
|
|
9572
|
+
"title": "Register",
|
|
9573
|
+
"style": "secondary",
|
|
9574
|
+
"fullWidth": false,
|
|
9575
|
+
"action": {
|
|
9576
|
+
"actionId": "himi.open",
|
|
9577
|
+
"params": {
|
|
9578
|
+
"screenId": "$item.detailScreenId",
|
|
9579
|
+
"id": "$item.id"
|
|
9580
|
+
}
|
|
9581
|
+
}
|
|
9582
|
+
}
|
|
9583
|
+
}
|
|
9584
|
+
},
|
|
9465
9585
|
{
|
|
9466
9586
|
"id": "",
|
|
9467
9587
|
"body": {
|
|
@@ -10148,6 +10268,25 @@ const SCREENS = runtimeSetting({
|
|
|
10148
10268
|
"hiddenPath": "$service:himiEvents.collection.noSelection"
|
|
10149
10269
|
}
|
|
10150
10270
|
},
|
|
10271
|
+
{
|
|
10272
|
+
"id": "himi_events.list.collection.preview.$item.collectionId/primary",
|
|
10273
|
+
"body": {
|
|
10274
|
+
"package": "himalaya",
|
|
10275
|
+
"type": "Button",
|
|
10276
|
+
"props": {
|
|
10277
|
+
"title": "Register",
|
|
10278
|
+
"style": "secondary",
|
|
10279
|
+
"fullWidth": false,
|
|
10280
|
+
"action": {
|
|
10281
|
+
"actionId": "himi.open",
|
|
10282
|
+
"params": {
|
|
10283
|
+
"screenId": "$item.detailScreenId",
|
|
10284
|
+
"id": "$item.id"
|
|
10285
|
+
}
|
|
10286
|
+
}
|
|
10287
|
+
}
|
|
10288
|
+
}
|
|
10289
|
+
},
|
|
10151
10290
|
{
|
|
10152
10291
|
"id": "",
|
|
10153
10292
|
"body": {
|
|
@@ -11049,59 +11188,9 @@ const SCREENS = runtimeSetting({
|
|
|
11049
11188
|
},
|
|
11050
11189
|
"value": "$service:himiBlogFeed.collection.query"
|
|
11051
11190
|
}
|
|
11052
|
-
}
|
|
11053
|
-
|
|
11054
|
-
|
|
11055
|
-
"id": "himi_blog.categories",
|
|
11056
|
-
"body": {
|
|
11057
|
-
"package": "himalaya",
|
|
11058
|
-
"type": "Grid",
|
|
11059
|
-
"props": {
|
|
11060
|
-
"columns": 2,
|
|
11061
|
-
"spacing": 8,
|
|
11062
|
-
"itemsPath": "$service:himiBlogFeed.categories",
|
|
11063
|
-
"items": [
|
|
11064
|
-
{
|
|
11065
|
-
"id": "",
|
|
11066
|
-
"body": {
|
|
11067
|
-
"package": "himalaya",
|
|
11068
|
-
"type": "Text",
|
|
11069
|
-
"props": {
|
|
11070
|
-
"text": "$item.label",
|
|
11071
|
-
"style": "footnote",
|
|
11072
|
-
"color": "textPrimary",
|
|
11073
|
-
"maxLines": 1
|
|
11074
|
-
}
|
|
11075
|
-
},
|
|
11076
|
-
"modifiers": {
|
|
11077
|
-
"background": {
|
|
11078
|
-
"token": "accentSurface"
|
|
11079
|
-
},
|
|
11080
|
-
"border": {
|
|
11081
|
-
"width": 1,
|
|
11082
|
-
"color": {
|
|
11083
|
-
"token": "border"
|
|
11084
|
-
}
|
|
11085
|
-
},
|
|
11086
|
-
"cornerRadius": 8,
|
|
11087
|
-
"padding": {
|
|
11088
|
-
"leading": 12,
|
|
11089
|
-
"trailing": 12,
|
|
11090
|
-
"top": 9,
|
|
11091
|
-
"bottom": 9
|
|
11092
|
-
},
|
|
11093
|
-
"onTap": {
|
|
11094
|
-
"actionId": "tier5.himiBlogFeed.selectCategory",
|
|
11095
|
-
"params": {
|
|
11096
|
-
"categoryId": "$item.id"
|
|
11097
|
-
}
|
|
11098
|
-
},
|
|
11099
|
-
"pressFeedback": "scale",
|
|
11100
|
-
"haptic": "light"
|
|
11101
|
-
}
|
|
11102
|
-
}
|
|
11103
|
-
]
|
|
11104
|
-
}
|
|
11191
|
+
},
|
|
11192
|
+
"modifiers": {
|
|
11193
|
+
"hiddenPath": "$service:himiBlogFeed.collection.hideChrome"
|
|
11105
11194
|
}
|
|
11106
11195
|
},
|
|
11107
11196
|
{
|
|
@@ -11296,40 +11385,6 @@ const SCREENS = runtimeSetting({
|
|
|
11296
11385
|
"spacing": 12,
|
|
11297
11386
|
"alignment": "leading",
|
|
11298
11387
|
"children": [
|
|
11299
|
-
{
|
|
11300
|
-
"id": "",
|
|
11301
|
-
"body": {
|
|
11302
|
-
"package": "himalaya",
|
|
11303
|
-
"type": "HStack",
|
|
11304
|
-
"props": {
|
|
11305
|
-
"spacing": 8,
|
|
11306
|
-
"children": [
|
|
11307
|
-
{
|
|
11308
|
-
"id": "",
|
|
11309
|
-
"body": {
|
|
11310
|
-
"package": "himalaya",
|
|
11311
|
-
"type": "Spacer",
|
|
11312
|
-
"props": {}
|
|
11313
|
-
}
|
|
11314
|
-
},
|
|
11315
|
-
{
|
|
11316
|
-
"id": "himi_blog.clear",
|
|
11317
|
-
"body": {
|
|
11318
|
-
"package": "himalaya",
|
|
11319
|
-
"type": "Button",
|
|
11320
|
-
"props": {
|
|
11321
|
-
"title": "Clear",
|
|
11322
|
-
"style": "secondary",
|
|
11323
|
-
"action": {
|
|
11324
|
-
"actionId": "tier5.himiBlogFeed.clearFilters"
|
|
11325
|
-
}
|
|
11326
|
-
}
|
|
11327
|
-
}
|
|
11328
|
-
}
|
|
11329
|
-
]
|
|
11330
|
-
}
|
|
11331
|
-
}
|
|
11332
|
-
},
|
|
11333
11388
|
{
|
|
11334
11389
|
"id": "himi_blog.list.collection.toolbar",
|
|
11335
11390
|
"body": {
|
|
@@ -11392,6 +11447,7 @@ const SCREENS = runtimeSetting({
|
|
|
11392
11447
|
}
|
|
11393
11448
|
},
|
|
11394
11449
|
"modifiers": {
|
|
11450
|
+
"hiddenPath": "$service:himiBlogFeed.collection.hideChrome",
|
|
11395
11451
|
"padding": {
|
|
11396
11452
|
"bottom": 12
|
|
11397
11453
|
}
|
|
@@ -11429,37 +11485,55 @@ const SCREENS = runtimeSetting({
|
|
|
11429
11485
|
"actionId": "tier5.himiBlogFeed.collectionFilter"
|
|
11430
11486
|
}
|
|
11431
11487
|
}
|
|
11488
|
+
},
|
|
11489
|
+
"modifiers": {
|
|
11490
|
+
"weight": 1
|
|
11432
11491
|
}
|
|
11433
11492
|
},
|
|
11434
11493
|
{
|
|
11435
|
-
"id": "",
|
|
11436
|
-
"body": {
|
|
11437
|
-
"package": "himalaya",
|
|
11438
|
-
"type": "Spacer",
|
|
11439
|
-
"props": {}
|
|
11440
|
-
}
|
|
11441
|
-
},
|
|
11442
|
-
{
|
|
11443
|
-
"id": "",
|
|
11494
|
+
"id": "himi_blog.list.collection.clear",
|
|
11444
11495
|
"body": {
|
|
11445
11496
|
"package": "himalaya",
|
|
11446
|
-
"type": "
|
|
11497
|
+
"type": "Button",
|
|
11447
11498
|
"props": {
|
|
11448
|
-
"
|
|
11449
|
-
"style": "
|
|
11450
|
-
"
|
|
11499
|
+
"title": "Clear",
|
|
11500
|
+
"style": "plain",
|
|
11501
|
+
"fullWidth": false,
|
|
11502
|
+
"action": {
|
|
11503
|
+
"actionId": "tier5.himiBlogFeed.collectionClear"
|
|
11504
|
+
}
|
|
11451
11505
|
}
|
|
11506
|
+
},
|
|
11507
|
+
"modifiers": {
|
|
11508
|
+
"hiddenPath": "$service:himiBlogFeed.collection.noActiveCriteria"
|
|
11452
11509
|
}
|
|
11453
11510
|
}
|
|
11454
11511
|
]
|
|
11455
11512
|
}
|
|
11456
11513
|
},
|
|
11457
11514
|
"modifiers": {
|
|
11515
|
+
"hiddenPath": "$service:himiBlogFeed.collection.hideChrome",
|
|
11458
11516
|
"padding": {
|
|
11459
11517
|
"bottom": 12
|
|
11460
11518
|
}
|
|
11461
11519
|
}
|
|
11462
11520
|
},
|
|
11521
|
+
{
|
|
11522
|
+
"id": "himi_blog.list.collection.summary",
|
|
11523
|
+
"body": {
|
|
11524
|
+
"package": "himalaya",
|
|
11525
|
+
"type": "Text",
|
|
11526
|
+
"props": {
|
|
11527
|
+
"text": "$service:himiBlogFeed.collection.summary",
|
|
11528
|
+
"style": "caption",
|
|
11529
|
+
"color": "textSecondary",
|
|
11530
|
+
"maxLines": 1
|
|
11531
|
+
}
|
|
11532
|
+
},
|
|
11533
|
+
"modifiers": {
|
|
11534
|
+
"hiddenPath": "$service:himiBlogFeed.collection.hideChrome"
|
|
11535
|
+
}
|
|
11536
|
+
},
|
|
11463
11537
|
{
|
|
11464
11538
|
"id": "",
|
|
11465
11539
|
"body": {
|