@wix/himalaya-cli 0.1033.0 → 0.1035.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/cli.mjs +17 -15
- package/dist/preview-assets.generated.bin +0 -0
- package/package.json +2 -2
- package/templates/beauty-salon/dev/index.ts +398 -1
- package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/beauty-salon/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/beauty-salon/tier5-src/himi-store-saved/index.ts +3 -2
- package/templates/beauty-salon/tier5-src/wix-spaces-collections/index.ts +3 -2
- package/templates/beauty-salon/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/beauty-salon/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/beauty-salon-owner/dev/index.ts +1216 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/branded-lite/dev/index.ts +2239 -343
- package/templates/branded-lite/tier5-src/_shared/branded-load-state.ts +106 -0
- package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/branded-lite/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/branded-lite/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/branded-lite/tier5-src/himi-branded-lite-badges/index.ts +20 -16
- package/templates/branded-lite/tier5-src/himi-branded-lite-coupons/index.ts +20 -20
- package/templates/branded-lite/tier5-src/himi-branded-lite-donations/index.ts +20 -16
- package/templates/branded-lite/tier5-src/himi-branded-lite-forms/index.ts +23 -31
- package/templates/branded-lite/tier5-src/himi-branded-lite-galleries/index.ts +19 -14
- package/templates/branded-lite/tier5-src/himi-branded-lite-giftcards/index.ts +20 -16
- package/templates/branded-lite/tier5-src/himi-branded-lite-inbox/index.ts +20 -15
- package/templates/branded-lite/tier5-src/himi-branded-lite-invoices/index.ts +20 -16
- package/templates/branded-lite/tier5-src/himi-branded-lite-loyalty/index.ts +20 -17
- package/templates/branded-lite/tier5-src/himi-branded-lite-notifications/index.ts +20 -18
- package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +23 -19
- package/templates/branded-lite/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
- package/templates/branded-lite/tier5-src/himi-branded-lite-reservations/index.ts +24 -20
- package/templates/branded-lite/tier5-src/himi-branded-lite-reviews/index.ts +20 -17
- package/templates/branded-lite/tier5-src/himi-branded-lite-videos/index.ts +19 -15
- package/templates/branded-lite/tier5-src/himi-store-saved/index.ts +3 -2
- package/templates/branded-lite/tier5-src/wix-spaces-collections/index.ts +3 -2
- package/templates/branded-lite/tier5-src/wix-spaces-forum/index.ts +3 -2
- package/templates/branded-lite/tier5-src/wix-spaces-members/index.ts +19 -6
- package/templates/branded-lite/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/branded-lite/tier5-src/wix-spaces-new-message/index.ts +3 -2
- package/templates/branded-lite/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/community-club/dev/index.ts +283 -2
- package/templates/community-club/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/community-club/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/community-club/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/community-club/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/community-club-owner/dev/index.ts +1216 -0
- package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/events-meetups/dev/index.ts +197 -1
- package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/events-meetups/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/events-meetups/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/events-meetups/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/events-meetups-owner/dev/index.ts +1088 -0
- package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/gym-fitness/dev/index.ts +462 -1
- package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/gym-fitness/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/gym-fitness/tier5-src/himi-store-saved/index.ts +3 -2
- package/templates/gym-fitness/tier5-src/wix-spaces-collections/index.ts +3 -2
- package/templates/gym-fitness/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/gym-fitness/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/gym-fitness-owner/dev/index.ts +1280 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/nonprofit-cause/dev/index.ts +264 -1
- package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/nonprofit-cause/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/nonprofit-cause/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/nonprofit-cause/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/nonprofit-cause-owner/dev/index.ts +1152 -0
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/owner-lite/dev/index.ts +1280 -0
- package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/owner-lite/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/podcast-creator/dev/index.ts +286 -23
- package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/podcast-creator/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/podcast-creator/tier5-src/himi-branded-lite-podcasts/index.ts +1 -1
- package/templates/podcast-creator/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/podcast-creator/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/podcast-creator-owner/dev/index.ts +1216 -0
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/portfolio-creative/dev/index.ts +353 -23
- package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/portfolio-creative/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/portfolio-creative/tier5-src/himi-store-saved/index.ts +3 -2
- package/templates/portfolio-creative/tier5-src/wix-spaces-collections/index.ts +3 -2
- package/templates/portfolio-creative/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/portfolio-creative-owner/dev/index.ts +1216 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/restaurant/dev/index.ts +197 -1
- package/templates/restaurant/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/restaurant/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/restaurant/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/restaurant/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/restaurant-owner/dev/index.ts +1280 -0
- package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/retail-store/dev/index.ts +203 -1
- package/templates/retail-store/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/retail-store/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/retail-store/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/retail-store/tier5-src/himi-store-saved/index.ts +3 -2
- package/templates/retail-store/tier5-src/wix-spaces-collections/index.ts +3 -2
- package/templates/retail-store/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/retail-store-owner/dev/index.ts +1152 -0
- package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/yoga-studio/dev/index.ts +392 -1
- package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +36 -5
- package/templates/yoga-studio/tier5-src/_shared/empty-flags.ts +33 -0
- package/templates/yoga-studio/tier5-src/wix-spaces-my-subscriptions/index.ts +11 -2
- package/templates/yoga-studio/tier5-src/wix-spaces-whats-new/index.ts +3 -2
- package/templates/yoga-studio-owner/dev/index.ts +1152 -0
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +4 -1
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +36 -5
|
@@ -30,6 +30,9 @@ export interface CollectionConfig {
|
|
|
30
30
|
* `screenId` opens that screen with the row id; without it the verb reuses the
|
|
31
31
|
* row's own tap action (the detail screen that owns the verb). */
|
|
32
32
|
primaryVerb?: { label: string; screenId?: string };
|
|
33
|
+
/** A state field the DOMAIN narrows `rows` by (e.g. a category picker). While it is set,
|
|
34
|
+
* zero rows is a filtered result, not an empty source. */
|
|
35
|
+
narrowedBy?: string;
|
|
33
36
|
}
|
|
34
37
|
/** At or below this many records, with no query/filter narrowing them and no further
|
|
35
38
|
* page, the list/grid toggle, Refine, chips, search and count are noise. */
|
|
@@ -41,7 +44,7 @@ export const COLLECTIONS: Record<string, CollectionConfig> = {
|
|
|
41
44
|
defaultFilter: 'value:Upcoming', searchPlaceholder: 'Exact booking ID', filterValues: ['Upcoming', 'Past', 'Cancelled'],
|
|
42
45
|
sortLabels: { default: 'Soonest', az: 'Oldest', za: 'Latest' } },
|
|
43
46
|
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' } },
|
|
44
|
-
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid' },
|
|
47
|
+
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid', narrowedBy: 'selectedCategoryId' },
|
|
45
48
|
himiOwnerLiteProducts: { rows: 'products', title: 'name', subtitle: 'price', image: 'image', view: 'grid', backendQuery: true },
|
|
46
49
|
himiOwnerModules: { instanceInput: 'module', rows: 'rows', title: 'title', subtitle: 'subtitle', image: 'image', filter: 'statusLabel', view: 'list', paged: true, reviewAction: 'prepareRecord', reviewSelectedAction: 'prepareSelected' },
|
|
47
50
|
himiOwnerLiteServices: { rows: 'services', title: 'name', subtitle: 'subtitle', view: 'list', backendQuery: true, searchPlaceholder: 'Service name starts with…' },
|
|
@@ -122,14 +122,38 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
122
122
|
const errored = s.status === 'error' || s.isErrored === true || s.errored === true || backendState?.status === 'error';
|
|
123
123
|
const domainError = typeof s.error === 'string' ? s.error.trim() : '';
|
|
124
124
|
const queryError = typeof backendState?.error === 'string' ? backendState.error.trim() : '';
|
|
125
|
-
|
|
125
|
+
// Some domains carry their failure sentence in `emptyText` (portfolio, podcasts);
|
|
126
|
+
// the screen folds that node into this block, so keep the domain's own words.
|
|
127
|
+
const domainEmptyError = errored && typeof s.emptyText === 'string' ? s.emptyText.trim() : '';
|
|
128
|
+
const errorMessage = queryError || domainError || domainEmptyError || copyParam('collection.loadError', 'This collection could not load. Try again.');
|
|
126
129
|
const canRetry = !!backend || typeof def.actions?.refresh === 'function' || typeof def.actions?.load === 'function' || typeof def.actions?.collectionRetry === 'function';
|
|
130
|
+
// Wix refused the visitor: retrying cannot help, signing in can.
|
|
131
|
+
const signInRequired = errored && s.signInRequired === true;
|
|
132
|
+
// "the source has nothing" and "your filter matched nothing" are
|
|
133
|
+
// different states. Only the second may offer "Clear filters", and the list chrome
|
|
134
|
+
// (view, refine, chips, counter, search) means nothing over a source with no rows.
|
|
135
|
+
// Loaded-row collections hold the whole source in `rows`, so zero rows IS an empty
|
|
136
|
+
// source. A backend query returns only matches, so zero rows is source-empty only
|
|
137
|
+
// when nothing narrowed it.
|
|
138
|
+
// Anything the customer (or the domain) narrowed the result by. While narrowed, zero rows
|
|
139
|
+
// is "your filter matched nothing" and the controls that got them here must stay.
|
|
140
|
+
// The DOMAIN's own filter (config.narrowedBy, e.g. blog category) narrowed the rows: the
|
|
141
|
+
// domain owns that empty state and its clear action. The shared "Clear filters" block
|
|
142
|
+
// cannot reset a domain filter, so it never shows for one.
|
|
143
|
+
const domainNarrowed = !!config.narrowedBy && !!s[config.narrowedBy];
|
|
127
144
|
// A default view is what the screen opens on; anything else is the member's own
|
|
128
145
|
// narrowing, which keeps the chrome (and the Clear that undoes it) on screen.
|
|
129
146
|
// "All" and the collection's own default (e.g. Upcoming) are both un-narrowed: Clear
|
|
130
147
|
// 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
|
|
148
|
+
const narrowed = !!prefs.query.trim() || (prefs.filter !== 'all' && prefs.filter !== initialCollection(config).filter) || domainNarrowed;
|
|
149
|
+
const sourceEmpty = !loading && !errored && rows.length === 0 &&
|
|
150
|
+
(!(backend && config.backendQuery) || !narrowed) && !domainNarrowed;
|
|
151
|
+
const emptySourceText = (typeof s.emptyText === 'string' && s.emptyText.trim()) || copyParam('collection.emptySource', 'Nothing here yet');
|
|
152
|
+
// Chrome is noise over a small un-narrowed list (fewer than COLLECTION_CHROME_MIN_ITEMS
|
|
153
|
+
// records, no further page), over an empty source, and before the FIRST load or an
|
|
154
|
+
// un-narrowed failure. A re-query while typing keeps it (and the search field's focus).
|
|
155
|
+
const hideChrome = (!narrowed && !s.nextCursor && projected.loaded < COLLECTION_CHROME_MIN_ITEMS)
|
|
156
|
+
|| sourceEmpty || ((loading || errored) && rows.length === 0 && !narrowed);
|
|
133
157
|
return { ...s, collection: { ...prefs, ...projected,
|
|
134
158
|
hideChrome, noActiveCriteria: !narrowed,
|
|
135
159
|
viewName, viewMessage, saveMessage, noSavedViews: prefs.savedViews.length === 0,
|
|
@@ -138,8 +162,15 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
138
162
|
noPageError: s.pageError !== true,
|
|
139
163
|
noOffline: s.fromCache !== true,
|
|
140
164
|
noError: !errored,
|
|
141
|
-
noRetry: !canRetry,
|
|
165
|
+
noRetry: !canRetry || signInRequired,
|
|
166
|
+
noSignIn: !signInRequired,
|
|
167
|
+
errorTitle: signInRequired ? copyParam('collection.signInTitle', 'Sign in to see this') : copyParam('collection.loadErrorTitle', 'This collection could not load'),
|
|
142
168
|
errorMessage,
|
|
169
|
+
noLoading: !loading,
|
|
170
|
+
// De-dup against a domain that paints its OWN empty block (screen-kit emptyBlock is
|
|
171
|
+
// gated on the domain's top-level `noEmpty`): only one empty state ever shows.
|
|
172
|
+
noEmptySource: !sourceEmpty || s.noEmpty === false,
|
|
173
|
+
emptySourceText,
|
|
143
174
|
hideList: prefs.view !== 'list', hideGrid: prefs.view !== 'grid',
|
|
144
175
|
hideComfortable: prefs.density !== 'comfortable', hideCompact: prefs.density !== 'compact',
|
|
145
176
|
selectingLabel: prefs.selecting ? copyParam('collection.done', 'Done') : copyParam('collection.select', 'Select'),
|
|
@@ -147,7 +178,7 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
147
178
|
cannotSaveSelected: !prefs.selectedIds.length || prefs.selectedIds.some(id => !rows.some(row => collectionId(row) === id)),
|
|
148
179
|
filtersPresented, previewPresented: !!previewId, preview: projected.items.filter(row => row.collectionId === previewId),
|
|
149
180
|
persistenceLabel: persisted.available ? copyParam('collection.onDevice', 'Saved on this device') : copyParam('collection.sessionOnly', 'Choices last for this session'),
|
|
150
|
-
noEmpty: loading || errored || projected.items.length > 0,
|
|
181
|
+
noEmpty: loading || errored || sourceEmpty || domainNarrowed || projected.items.length > 0,
|
|
151
182
|
summary: backend && config.backendQuery
|
|
152
183
|
? (s.fromCache ? copyParam('collection.cached', 'Saved offline · may be outdated')
|
|
153
184
|
: typeof s.total === 'number' ? `${projected.items.length} / ${s.total} ${copyParam('collection.results', 'results')}`
|
|
@@ -5223,7 +5223,8 @@ const SCREENS = runtimeSetting({
|
|
|
5223
5223
|
"props": {
|
|
5224
5224
|
"text": "$service:spacesDeleteAccount.message",
|
|
5225
5225
|
"style": "caption",
|
|
5226
|
-
"color": "textTertiary"
|
|
5226
|
+
"color": "textTertiary",
|
|
5227
|
+
"collapseWhenEmpty": true
|
|
5227
5228
|
}
|
|
5228
5229
|
}
|
|
5229
5230
|
},
|
|
@@ -5518,6 +5519,9 @@ const SCREENS = runtimeSetting({
|
|
|
5518
5519
|
}
|
|
5519
5520
|
]
|
|
5520
5521
|
}
|
|
5522
|
+
},
|
|
5523
|
+
"modifiers": {
|
|
5524
|
+
"hiddenPath": "$service:spacesWhatsNew.noItems"
|
|
5521
5525
|
}
|
|
5522
5526
|
},
|
|
5523
5527
|
{
|
|
@@ -5833,6 +5837,24 @@ const SCREENS = runtimeSetting({
|
|
|
5833
5837
|
"props": {
|
|
5834
5838
|
"spacing": 0,
|
|
5835
5839
|
"children": [
|
|
5840
|
+
{
|
|
5841
|
+
"id": "himi_services.list.collection.loading",
|
|
5842
|
+
"body": {
|
|
5843
|
+
"package": "himalaya",
|
|
5844
|
+
"type": "Skeleton",
|
|
5845
|
+
"props": {
|
|
5846
|
+
"height": 72,
|
|
5847
|
+
"cornerRadius": 12,
|
|
5848
|
+
"count": 3
|
|
5849
|
+
}
|
|
5850
|
+
},
|
|
5851
|
+
"modifiers": {
|
|
5852
|
+
"hiddenPath": "$service:himiBookingServices.collection.noLoading",
|
|
5853
|
+
"padding": {
|
|
5854
|
+
"bottom": 12
|
|
5855
|
+
}
|
|
5856
|
+
}
|
|
5857
|
+
},
|
|
5836
5858
|
{
|
|
5837
5859
|
"id": "",
|
|
5838
5860
|
"body": {
|
|
@@ -6094,6 +6116,52 @@ const SCREENS = runtimeSetting({
|
|
|
6094
6116
|
}
|
|
6095
6117
|
}
|
|
6096
6118
|
},
|
|
6119
|
+
{
|
|
6120
|
+
"id": "himi_services.list.collection.empty-source",
|
|
6121
|
+
"body": {
|
|
6122
|
+
"package": "himalaya",
|
|
6123
|
+
"type": "VStack",
|
|
6124
|
+
"props": {
|
|
6125
|
+
"spacing": 8,
|
|
6126
|
+
"alignment": "center",
|
|
6127
|
+
"children": [
|
|
6128
|
+
{
|
|
6129
|
+
"id": "",
|
|
6130
|
+
"body": {
|
|
6131
|
+
"package": "himalaya",
|
|
6132
|
+
"type": "Icon",
|
|
6133
|
+
"props": {
|
|
6134
|
+
"name": "inbox",
|
|
6135
|
+
"size": 28,
|
|
6136
|
+
"tint": "textTertiary"
|
|
6137
|
+
}
|
|
6138
|
+
},
|
|
6139
|
+
"modifiers": {
|
|
6140
|
+
"accessibilityRole": "decorative"
|
|
6141
|
+
}
|
|
6142
|
+
},
|
|
6143
|
+
{
|
|
6144
|
+
"id": "",
|
|
6145
|
+
"body": {
|
|
6146
|
+
"package": "himalaya",
|
|
6147
|
+
"type": "Text",
|
|
6148
|
+
"props": {
|
|
6149
|
+
"text": "$service:himiBookingServices.collection.emptySourceText",
|
|
6150
|
+
"style": "body",
|
|
6151
|
+
"color": "textSecondary"
|
|
6152
|
+
}
|
|
6153
|
+
}
|
|
6154
|
+
}
|
|
6155
|
+
]
|
|
6156
|
+
}
|
|
6157
|
+
},
|
|
6158
|
+
"modifiers": {
|
|
6159
|
+
"hiddenPath": "$service:himiBookingServices.collection.noEmptySource",
|
|
6160
|
+
"padding": {
|
|
6161
|
+
"bottom": 12
|
|
6162
|
+
}
|
|
6163
|
+
}
|
|
6164
|
+
},
|
|
6097
6165
|
{
|
|
6098
6166
|
"id": "",
|
|
6099
6167
|
"body": {
|
|
@@ -8713,6 +8781,24 @@ const SCREENS = runtimeSetting({
|
|
|
8713
8781
|
"props": {
|
|
8714
8782
|
"spacing": 0,
|
|
8715
8783
|
"children": [
|
|
8784
|
+
{
|
|
8785
|
+
"id": "himi_bookings.list.collection.loading",
|
|
8786
|
+
"body": {
|
|
8787
|
+
"package": "himalaya",
|
|
8788
|
+
"type": "Skeleton",
|
|
8789
|
+
"props": {
|
|
8790
|
+
"height": 72,
|
|
8791
|
+
"cornerRadius": 12,
|
|
8792
|
+
"count": 3
|
|
8793
|
+
}
|
|
8794
|
+
},
|
|
8795
|
+
"modifiers": {
|
|
8796
|
+
"hiddenPath": "$service:himiBookingBookings.collection.noLoading",
|
|
8797
|
+
"padding": {
|
|
8798
|
+
"bottom": 12
|
|
8799
|
+
}
|
|
8800
|
+
}
|
|
8801
|
+
},
|
|
8716
8802
|
{
|
|
8717
8803
|
"id": "himi_bookings.list.collection.search",
|
|
8718
8804
|
"body": {
|
|
@@ -8995,6 +9081,52 @@ const SCREENS = runtimeSetting({
|
|
|
8995
9081
|
}
|
|
8996
9082
|
}
|
|
8997
9083
|
},
|
|
9084
|
+
{
|
|
9085
|
+
"id": "himi_bookings.list.collection.empty-source",
|
|
9086
|
+
"body": {
|
|
9087
|
+
"package": "himalaya",
|
|
9088
|
+
"type": "VStack",
|
|
9089
|
+
"props": {
|
|
9090
|
+
"spacing": 8,
|
|
9091
|
+
"alignment": "center",
|
|
9092
|
+
"children": [
|
|
9093
|
+
{
|
|
9094
|
+
"id": "",
|
|
9095
|
+
"body": {
|
|
9096
|
+
"package": "himalaya",
|
|
9097
|
+
"type": "Icon",
|
|
9098
|
+
"props": {
|
|
9099
|
+
"name": "inbox",
|
|
9100
|
+
"size": 28,
|
|
9101
|
+
"tint": "textTertiary"
|
|
9102
|
+
}
|
|
9103
|
+
},
|
|
9104
|
+
"modifiers": {
|
|
9105
|
+
"accessibilityRole": "decorative"
|
|
9106
|
+
}
|
|
9107
|
+
},
|
|
9108
|
+
{
|
|
9109
|
+
"id": "",
|
|
9110
|
+
"body": {
|
|
9111
|
+
"package": "himalaya",
|
|
9112
|
+
"type": "Text",
|
|
9113
|
+
"props": {
|
|
9114
|
+
"text": "$service:himiBookingBookings.collection.emptySourceText",
|
|
9115
|
+
"style": "body",
|
|
9116
|
+
"color": "textSecondary"
|
|
9117
|
+
}
|
|
9118
|
+
}
|
|
9119
|
+
}
|
|
9120
|
+
]
|
|
9121
|
+
}
|
|
9122
|
+
},
|
|
9123
|
+
"modifiers": {
|
|
9124
|
+
"hiddenPath": "$service:himiBookingBookings.collection.noEmptySource",
|
|
9125
|
+
"padding": {
|
|
9126
|
+
"bottom": 12
|
|
9127
|
+
}
|
|
9128
|
+
}
|
|
9129
|
+
},
|
|
8998
9130
|
{
|
|
8999
9131
|
"id": "",
|
|
9000
9132
|
"body": {
|
|
@@ -11493,6 +11625,24 @@ const SCREENS = runtimeSetting({
|
|
|
11493
11625
|
"props": {
|
|
11494
11626
|
"spacing": 0,
|
|
11495
11627
|
"children": [
|
|
11628
|
+
{
|
|
11629
|
+
"id": "himi_programs.rows.collection.loading",
|
|
11630
|
+
"body": {
|
|
11631
|
+
"package": "himalaya",
|
|
11632
|
+
"type": "Skeleton",
|
|
11633
|
+
"props": {
|
|
11634
|
+
"height": 72,
|
|
11635
|
+
"cornerRadius": 12,
|
|
11636
|
+
"count": 3
|
|
11637
|
+
}
|
|
11638
|
+
},
|
|
11639
|
+
"modifiers": {
|
|
11640
|
+
"hiddenPath": "$service:himiBrandedPrograms.collection.noLoading",
|
|
11641
|
+
"padding": {
|
|
11642
|
+
"bottom": 12
|
|
11643
|
+
}
|
|
11644
|
+
}
|
|
11645
|
+
},
|
|
11496
11646
|
{
|
|
11497
11647
|
"id": "himi_programs.rows.collection.search",
|
|
11498
11648
|
"body": {
|
|
@@ -11732,6 +11882,52 @@ const SCREENS = runtimeSetting({
|
|
|
11732
11882
|
}
|
|
11733
11883
|
}
|
|
11734
11884
|
},
|
|
11885
|
+
{
|
|
11886
|
+
"id": "himi_programs.rows.collection.empty-source",
|
|
11887
|
+
"body": {
|
|
11888
|
+
"package": "himalaya",
|
|
11889
|
+
"type": "VStack",
|
|
11890
|
+
"props": {
|
|
11891
|
+
"spacing": 8,
|
|
11892
|
+
"alignment": "center",
|
|
11893
|
+
"children": [
|
|
11894
|
+
{
|
|
11895
|
+
"id": "",
|
|
11896
|
+
"body": {
|
|
11897
|
+
"package": "himalaya",
|
|
11898
|
+
"type": "Icon",
|
|
11899
|
+
"props": {
|
|
11900
|
+
"name": "inbox",
|
|
11901
|
+
"size": 28,
|
|
11902
|
+
"tint": "textTertiary"
|
|
11903
|
+
}
|
|
11904
|
+
},
|
|
11905
|
+
"modifiers": {
|
|
11906
|
+
"accessibilityRole": "decorative"
|
|
11907
|
+
}
|
|
11908
|
+
},
|
|
11909
|
+
{
|
|
11910
|
+
"id": "",
|
|
11911
|
+
"body": {
|
|
11912
|
+
"package": "himalaya",
|
|
11913
|
+
"type": "Text",
|
|
11914
|
+
"props": {
|
|
11915
|
+
"text": "$service:himiBrandedPrograms.collection.emptySourceText",
|
|
11916
|
+
"style": "body",
|
|
11917
|
+
"color": "textSecondary"
|
|
11918
|
+
}
|
|
11919
|
+
}
|
|
11920
|
+
}
|
|
11921
|
+
]
|
|
11922
|
+
}
|
|
11923
|
+
},
|
|
11924
|
+
"modifiers": {
|
|
11925
|
+
"hiddenPath": "$service:himiBrandedPrograms.collection.noEmptySource",
|
|
11926
|
+
"padding": {
|
|
11927
|
+
"bottom": 12
|
|
11928
|
+
}
|
|
11929
|
+
}
|
|
11930
|
+
},
|
|
11735
11931
|
{
|
|
11736
11932
|
"id": "",
|
|
11737
11933
|
"body": {
|
|
@@ -13963,6 +14159,24 @@ const SCREENS = runtimeSetting({
|
|
|
13963
14159
|
"props": {
|
|
13964
14160
|
"spacing": 0,
|
|
13965
14161
|
"children": [
|
|
14162
|
+
{
|
|
14163
|
+
"id": "himi_plans.rows.collection.loading",
|
|
14164
|
+
"body": {
|
|
14165
|
+
"package": "himalaya",
|
|
14166
|
+
"type": "Skeleton",
|
|
14167
|
+
"props": {
|
|
14168
|
+
"height": 72,
|
|
14169
|
+
"cornerRadius": 12,
|
|
14170
|
+
"count": 3
|
|
14171
|
+
}
|
|
14172
|
+
},
|
|
14173
|
+
"modifiers": {
|
|
14174
|
+
"hiddenPath": "$service:himiBrandedPlans.collection.noLoading",
|
|
14175
|
+
"padding": {
|
|
14176
|
+
"bottom": 12
|
|
14177
|
+
}
|
|
14178
|
+
}
|
|
14179
|
+
},
|
|
13966
14180
|
{
|
|
13967
14181
|
"id": "himi_plans.rows.collection.search",
|
|
13968
14182
|
"body": {
|
|
@@ -14202,6 +14416,52 @@ const SCREENS = runtimeSetting({
|
|
|
14202
14416
|
}
|
|
14203
14417
|
}
|
|
14204
14418
|
},
|
|
14419
|
+
{
|
|
14420
|
+
"id": "himi_plans.rows.collection.empty-source",
|
|
14421
|
+
"body": {
|
|
14422
|
+
"package": "himalaya",
|
|
14423
|
+
"type": "VStack",
|
|
14424
|
+
"props": {
|
|
14425
|
+
"spacing": 8,
|
|
14426
|
+
"alignment": "center",
|
|
14427
|
+
"children": [
|
|
14428
|
+
{
|
|
14429
|
+
"id": "",
|
|
14430
|
+
"body": {
|
|
14431
|
+
"package": "himalaya",
|
|
14432
|
+
"type": "Icon",
|
|
14433
|
+
"props": {
|
|
14434
|
+
"name": "inbox",
|
|
14435
|
+
"size": 28,
|
|
14436
|
+
"tint": "textTertiary"
|
|
14437
|
+
}
|
|
14438
|
+
},
|
|
14439
|
+
"modifiers": {
|
|
14440
|
+
"accessibilityRole": "decorative"
|
|
14441
|
+
}
|
|
14442
|
+
},
|
|
14443
|
+
{
|
|
14444
|
+
"id": "",
|
|
14445
|
+
"body": {
|
|
14446
|
+
"package": "himalaya",
|
|
14447
|
+
"type": "Text",
|
|
14448
|
+
"props": {
|
|
14449
|
+
"text": "$service:himiBrandedPlans.collection.emptySourceText",
|
|
14450
|
+
"style": "body",
|
|
14451
|
+
"color": "textSecondary"
|
|
14452
|
+
}
|
|
14453
|
+
}
|
|
14454
|
+
}
|
|
14455
|
+
]
|
|
14456
|
+
}
|
|
14457
|
+
},
|
|
14458
|
+
"modifiers": {
|
|
14459
|
+
"hiddenPath": "$service:himiBrandedPlans.collection.noEmptySource",
|
|
14460
|
+
"padding": {
|
|
14461
|
+
"bottom": 12
|
|
14462
|
+
}
|
|
14463
|
+
}
|
|
14464
|
+
},
|
|
14205
14465
|
{
|
|
14206
14466
|
"id": "",
|
|
14207
14467
|
"body": {
|
|
@@ -16557,6 +16817,9 @@ const SCREENS = runtimeSetting({
|
|
|
16557
16817
|
}
|
|
16558
16818
|
]
|
|
16559
16819
|
}
|
|
16820
|
+
},
|
|
16821
|
+
"modifiers": {
|
|
16822
|
+
"hiddenPath": "$service:spacesMySubscriptions.noOrders"
|
|
16560
16823
|
}
|
|
16561
16824
|
},
|
|
16562
16825
|
{
|
|
@@ -17387,6 +17650,24 @@ const SCREENS = runtimeSetting({
|
|
|
17387
17650
|
"props": {
|
|
17388
17651
|
"spacing": 0,
|
|
17389
17652
|
"children": [
|
|
17653
|
+
{
|
|
17654
|
+
"id": "himi_events.list.collection.loading",
|
|
17655
|
+
"body": {
|
|
17656
|
+
"package": "himalaya",
|
|
17657
|
+
"type": "Skeleton",
|
|
17658
|
+
"props": {
|
|
17659
|
+
"height": 72,
|
|
17660
|
+
"cornerRadius": 12,
|
|
17661
|
+
"count": 3
|
|
17662
|
+
}
|
|
17663
|
+
},
|
|
17664
|
+
"modifiers": {
|
|
17665
|
+
"hiddenPath": "$service:himiEvents.collection.noLoading",
|
|
17666
|
+
"padding": {
|
|
17667
|
+
"bottom": 12
|
|
17668
|
+
}
|
|
17669
|
+
}
|
|
17670
|
+
},
|
|
17390
17671
|
{
|
|
17391
17672
|
"id": "",
|
|
17392
17673
|
"body": {
|
|
@@ -17648,6 +17929,52 @@ const SCREENS = runtimeSetting({
|
|
|
17648
17929
|
}
|
|
17649
17930
|
}
|
|
17650
17931
|
},
|
|
17932
|
+
{
|
|
17933
|
+
"id": "himi_events.list.collection.empty-source",
|
|
17934
|
+
"body": {
|
|
17935
|
+
"package": "himalaya",
|
|
17936
|
+
"type": "VStack",
|
|
17937
|
+
"props": {
|
|
17938
|
+
"spacing": 8,
|
|
17939
|
+
"alignment": "center",
|
|
17940
|
+
"children": [
|
|
17941
|
+
{
|
|
17942
|
+
"id": "",
|
|
17943
|
+
"body": {
|
|
17944
|
+
"package": "himalaya",
|
|
17945
|
+
"type": "Icon",
|
|
17946
|
+
"props": {
|
|
17947
|
+
"name": "inbox",
|
|
17948
|
+
"size": 28,
|
|
17949
|
+
"tint": "textTertiary"
|
|
17950
|
+
}
|
|
17951
|
+
},
|
|
17952
|
+
"modifiers": {
|
|
17953
|
+
"accessibilityRole": "decorative"
|
|
17954
|
+
}
|
|
17955
|
+
},
|
|
17956
|
+
{
|
|
17957
|
+
"id": "",
|
|
17958
|
+
"body": {
|
|
17959
|
+
"package": "himalaya",
|
|
17960
|
+
"type": "Text",
|
|
17961
|
+
"props": {
|
|
17962
|
+
"text": "$service:himiEvents.collection.emptySourceText",
|
|
17963
|
+
"style": "body",
|
|
17964
|
+
"color": "textSecondary"
|
|
17965
|
+
}
|
|
17966
|
+
}
|
|
17967
|
+
}
|
|
17968
|
+
]
|
|
17969
|
+
}
|
|
17970
|
+
},
|
|
17971
|
+
"modifiers": {
|
|
17972
|
+
"hiddenPath": "$service:himiEvents.collection.noEmptySource",
|
|
17973
|
+
"padding": {
|
|
17974
|
+
"bottom": 12
|
|
17975
|
+
}
|
|
17976
|
+
}
|
|
17977
|
+
},
|
|
17651
17978
|
{
|
|
17652
17979
|
"id": "",
|
|
17653
17980
|
"body": {
|
|
@@ -20691,6 +21018,24 @@ const SCREENS = runtimeSetting({
|
|
|
20691
21018
|
"props": {
|
|
20692
21019
|
"spacing": 0,
|
|
20693
21020
|
"children": [
|
|
21021
|
+
{
|
|
21022
|
+
"id": "himi_blog.list.collection.loading",
|
|
21023
|
+
"body": {
|
|
21024
|
+
"package": "himalaya",
|
|
21025
|
+
"type": "Skeleton",
|
|
21026
|
+
"props": {
|
|
21027
|
+
"height": 72,
|
|
21028
|
+
"cornerRadius": 12,
|
|
21029
|
+
"count": 3
|
|
21030
|
+
}
|
|
21031
|
+
},
|
|
21032
|
+
"modifiers": {
|
|
21033
|
+
"hiddenPath": "$service:himiBlogFeed.collection.noLoading",
|
|
21034
|
+
"padding": {
|
|
21035
|
+
"bottom": 12
|
|
21036
|
+
}
|
|
21037
|
+
}
|
|
21038
|
+
},
|
|
20694
21039
|
{
|
|
20695
21040
|
"id": "",
|
|
20696
21041
|
"body": {
|
|
@@ -20909,6 +21254,52 @@ const SCREENS = runtimeSetting({
|
|
|
20909
21254
|
}
|
|
20910
21255
|
}
|
|
20911
21256
|
},
|
|
21257
|
+
{
|
|
21258
|
+
"id": "himi_blog.list.collection.empty-source",
|
|
21259
|
+
"body": {
|
|
21260
|
+
"package": "himalaya",
|
|
21261
|
+
"type": "VStack",
|
|
21262
|
+
"props": {
|
|
21263
|
+
"spacing": 8,
|
|
21264
|
+
"alignment": "center",
|
|
21265
|
+
"children": [
|
|
21266
|
+
{
|
|
21267
|
+
"id": "",
|
|
21268
|
+
"body": {
|
|
21269
|
+
"package": "himalaya",
|
|
21270
|
+
"type": "Icon",
|
|
21271
|
+
"props": {
|
|
21272
|
+
"name": "inbox",
|
|
21273
|
+
"size": 28,
|
|
21274
|
+
"tint": "textTertiary"
|
|
21275
|
+
}
|
|
21276
|
+
},
|
|
21277
|
+
"modifiers": {
|
|
21278
|
+
"accessibilityRole": "decorative"
|
|
21279
|
+
}
|
|
21280
|
+
},
|
|
21281
|
+
{
|
|
21282
|
+
"id": "",
|
|
21283
|
+
"body": {
|
|
21284
|
+
"package": "himalaya",
|
|
21285
|
+
"type": "Text",
|
|
21286
|
+
"props": {
|
|
21287
|
+
"text": "$service:himiBlogFeed.collection.emptySourceText",
|
|
21288
|
+
"style": "body",
|
|
21289
|
+
"color": "textSecondary"
|
|
21290
|
+
}
|
|
21291
|
+
}
|
|
21292
|
+
}
|
|
21293
|
+
]
|
|
21294
|
+
}
|
|
21295
|
+
},
|
|
21296
|
+
"modifiers": {
|
|
21297
|
+
"hiddenPath": "$service:himiBlogFeed.collection.noEmptySource",
|
|
21298
|
+
"padding": {
|
|
21299
|
+
"bottom": 12
|
|
21300
|
+
}
|
|
21301
|
+
}
|
|
21302
|
+
},
|
|
20912
21303
|
{
|
|
20913
21304
|
"id": "",
|
|
20914
21305
|
"body": {
|
|
@@ -30,6 +30,9 @@ export interface CollectionConfig {
|
|
|
30
30
|
* `screenId` opens that screen with the row id; without it the verb reuses the
|
|
31
31
|
* row's own tap action (the detail screen that owns the verb). */
|
|
32
32
|
primaryVerb?: { label: string; screenId?: string };
|
|
33
|
+
/** A state field the DOMAIN narrows `rows` by (e.g. a category picker). While it is set,
|
|
34
|
+
* zero rows is a filtered result, not an empty source. */
|
|
35
|
+
narrowedBy?: string;
|
|
33
36
|
}
|
|
34
37
|
/** At or below this many records, with no query/filter narrowing them and no further
|
|
35
38
|
* page, the list/grid toggle, Refine, chips, search and count are noise. */
|
|
@@ -41,7 +44,7 @@ export const COLLECTIONS: Record<string, CollectionConfig> = {
|
|
|
41
44
|
defaultFilter: 'value:Upcoming', searchPlaceholder: 'Exact booking ID', filterValues: ['Upcoming', 'Past', 'Cancelled'],
|
|
42
45
|
sortLabels: { default: 'Soonest', az: 'Oldest', za: 'Latest' } },
|
|
43
46
|
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' } },
|
|
44
|
-
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid' },
|
|
47
|
+
himiBlogFeed: { rows: 'posts', title: 'title', subtitle: 'excerpt', image: 'image', filter: 'category', filterValuesFrom: 'categories', view: 'grid', narrowedBy: 'selectedCategoryId' },
|
|
45
48
|
himiOwnerLiteProducts: { rows: 'products', title: 'name', subtitle: 'price', image: 'image', view: 'grid', backendQuery: true },
|
|
46
49
|
himiOwnerModules: { instanceInput: 'module', rows: 'rows', title: 'title', subtitle: 'subtitle', image: 'image', filter: 'statusLabel', view: 'list', paged: true, reviewAction: 'prepareRecord', reviewSelectedAction: 'prepareSelected' },
|
|
47
50
|
himiOwnerLiteServices: { rows: 'services', title: 'name', subtitle: 'subtitle', view: 'list', backendQuery: true, searchPlaceholder: 'Service name starts with…' },
|