@wix/himalaya-cli 0.1483.0 → 0.1484.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 +27 -28
- package/dist/preview-assets.generated.bin +0 -0
- package/package.json +2 -2
- package/templates/beauty-salon/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/beauty-salon-owner/dev/index.ts +58 -19
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/branded-lite/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/branded-lite/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/community-club/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/community-club/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/community-club-owner/dev/index.ts +58 -19
- package/templates/community-club-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/community-club-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/community-club-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/events-meetups/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/events-meetups/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/events-meetups-owner/dev/index.ts +46 -16
- package/templates/events-meetups-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/gym-fitness/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/gym-fitness-owner/dev/index.ts +62 -20
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/nonprofit-cause/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/nonprofit-cause-owner/dev/index.ts +50 -17
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/owner-lite/dev/index.ts +62 -20
- package/templates/owner-lite/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/owner-lite/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/owner-lite/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/owner-lite/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/podcast-creator/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/podcast-creator-owner/dev/index.ts +58 -19
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/portfolio-creative/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/portfolio-creative-owner/dev/index.ts +58 -19
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/restaurant/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/restaurant/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/restaurant-owner/dev/index.ts +62 -20
- package/templates/restaurant-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/retail-store/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/retail-store/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/retail-store-owner/dev/index.ts +54 -18
- package/templates/retail-store-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
- package/templates/yoga-studio/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/yoga-studio-owner/dev/index.ts +50 -17
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-query.ts +13 -4
- package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +2 -1
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-manage/index.ts +5 -3
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-manage/logic.ts +30 -0
|
@@ -49603,7 +49603,10 @@ const SCREENS = runtimeSetting({
|
|
|
49603
49603
|
"action": {
|
|
49604
49604
|
"actionId": "himi.open",
|
|
49605
49605
|
"params": {
|
|
49606
|
-
"screenId": "himi_owner_lite_sites"
|
|
49606
|
+
"screenId": "himi_owner_lite_sites",
|
|
49607
|
+
"title": "Your shops",
|
|
49608
|
+
"subtitle": "Choose a shop to run",
|
|
49609
|
+
"search": "button"
|
|
49607
49610
|
}
|
|
49608
49611
|
}
|
|
49609
49612
|
}
|
|
@@ -50785,7 +50788,10 @@ const SCREENS = runtimeSetting({
|
|
|
50785
50788
|
"actionId": "himi.open",
|
|
50786
50789
|
"params": {
|
|
50787
50790
|
"screenId": "himi_owner_lite_orders",
|
|
50788
|
-
"collectionFilter": "value:Recent 7 days"
|
|
50791
|
+
"collectionFilter": "value:Recent 7 days",
|
|
50792
|
+
"title": "Orders",
|
|
50793
|
+
"subtitle": "Every order, newest first — paid, packed and posted.",
|
|
50794
|
+
"search": "button"
|
|
50789
50795
|
}
|
|
50790
50796
|
},
|
|
50791
50797
|
"pressFeedback": "scale",
|
|
@@ -50854,7 +50860,10 @@ const SCREENS = runtimeSetting({
|
|
|
50854
50860
|
"actionId": "himi.open",
|
|
50855
50861
|
"params": {
|
|
50856
50862
|
"screenId": "himi_owner_lite_orders",
|
|
50857
|
-
"collectionFilter": "value:Recent 7 days"
|
|
50863
|
+
"collectionFilter": "value:Recent 7 days",
|
|
50864
|
+
"title": "Orders",
|
|
50865
|
+
"subtitle": "Every order, newest first — paid, packed and posted.",
|
|
50866
|
+
"search": "button"
|
|
50858
50867
|
}
|
|
50859
50868
|
},
|
|
50860
50869
|
"pressFeedback": "scale",
|
|
@@ -51071,7 +51080,10 @@ const SCREENS = runtimeSetting({
|
|
|
51071
51080
|
"actionId": "himi.open",
|
|
51072
51081
|
"params": {
|
|
51073
51082
|
"screenId": "himi_owner_lite_products",
|
|
51074
|
-
"collectionFilter": "all"
|
|
51083
|
+
"collectionFilter": "all",
|
|
51084
|
+
"title": "Catalog",
|
|
51085
|
+
"subtitle": "Every line you sell, priced and stocked.",
|
|
51086
|
+
"search": "button"
|
|
51075
51087
|
}
|
|
51076
51088
|
},
|
|
51077
51089
|
"pressFeedback": "scale",
|
|
@@ -51140,7 +51152,10 @@ const SCREENS = runtimeSetting({
|
|
|
51140
51152
|
"actionId": "himi.open",
|
|
51141
51153
|
"params": {
|
|
51142
51154
|
"screenId": "himi_owner_lite_posts",
|
|
51143
|
-
"collectionFilter": "all"
|
|
51155
|
+
"collectionFilter": "all",
|
|
51156
|
+
"title": "Shop journal",
|
|
51157
|
+
"subtitle": "New arrivals, restocks and shop news — drafts and published.",
|
|
51158
|
+
"search": "button"
|
|
51144
51159
|
}
|
|
51145
51160
|
},
|
|
51146
51161
|
"pressFeedback": "scale",
|
|
@@ -51209,7 +51224,10 @@ const SCREENS = runtimeSetting({
|
|
|
51209
51224
|
"actionId": "himi.open",
|
|
51210
51225
|
"params": {
|
|
51211
51226
|
"screenId": "himi_owner_lite_sites",
|
|
51212
|
-
"collectionFilter": "all"
|
|
51227
|
+
"collectionFilter": "all",
|
|
51228
|
+
"title": "Your shops",
|
|
51229
|
+
"subtitle": "Choose a shop to run",
|
|
51230
|
+
"search": "button"
|
|
51213
51231
|
}
|
|
51214
51232
|
},
|
|
51215
51233
|
"pressFeedback": "scale",
|
|
@@ -51303,7 +51321,9 @@ const SCREENS = runtimeSetting({
|
|
|
51303
51321
|
"action": {
|
|
51304
51322
|
"actionId": "himi.open",
|
|
51305
51323
|
"params": {
|
|
51306
|
-
"screenId": "himi_owner_lite_brief"
|
|
51324
|
+
"screenId": "himi_owner_lite_brief",
|
|
51325
|
+
"title": "What’s waiting",
|
|
51326
|
+
"subtitle": "Unpacked orders, unpaid carts and out-of-stock lines, laid out for you."
|
|
51307
51327
|
}
|
|
51308
51328
|
}
|
|
51309
51329
|
}
|
|
@@ -51658,7 +51678,8 @@ const SCREENS = runtimeSetting({
|
|
|
51658
51678
|
"action": {
|
|
51659
51679
|
"actionId": "himi.open",
|
|
51660
51680
|
"params": {
|
|
51661
|
-
"screenId": "himi_owner_lite_manage"
|
|
51681
|
+
"screenId": "himi_owner_lite_manage",
|
|
51682
|
+
"search": "drawer"
|
|
51662
51683
|
}
|
|
51663
51684
|
}
|
|
51664
51685
|
}
|
|
@@ -52685,7 +52706,10 @@ const SCREENS = runtimeSetting({
|
|
|
52685
52706
|
"onTap": {
|
|
52686
52707
|
"actionId": "himi.open",
|
|
52687
52708
|
"params": {
|
|
52688
|
-
"screenId": "himi_owner_lite_search"
|
|
52709
|
+
"screenId": "himi_owner_lite_search",
|
|
52710
|
+
"title": "Search records",
|
|
52711
|
+
"subtitle": "Across your business areas",
|
|
52712
|
+
"search": "drawer"
|
|
52689
52713
|
}
|
|
52690
52714
|
},
|
|
52691
52715
|
"pressFeedback": "scale",
|
|
@@ -52885,7 +52909,9 @@ const SCREENS = runtimeSetting({
|
|
|
52885
52909
|
"onTap": {
|
|
52886
52910
|
"actionId": "himi.open",
|
|
52887
52911
|
"params": {
|
|
52888
|
-
"screenId": "himi_owner_lite_analytics"
|
|
52912
|
+
"screenId": "himi_owner_lite_analytics",
|
|
52913
|
+
"title": "Analytics",
|
|
52914
|
+
"subtitle": "How your site is doing"
|
|
52889
52915
|
}
|
|
52890
52916
|
},
|
|
52891
52917
|
"pressFeedback": "scale",
|
|
@@ -52909,7 +52935,7 @@ const SCREENS = runtimeSetting({
|
|
|
52909
52935
|
"onAppear": {
|
|
52910
52936
|
"actionId": "tier5.himiOwnerLiteManage.load",
|
|
52911
52937
|
"params": {
|
|
52912
|
-
"areas": "[{\"id\":\"store\",\"title\":\"Catalog\",\"subtitle\":\"Products, inventory and sales\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_products\",\"icon\":\"bag\",\"metricKey\":\"products\",\"countLabel\":\"products\",\"createScreenId\":\"himi_owner_lite_product_new\",\"createLabel\":\"Create product\",\"handoffLabel\":\"Open in Wix: Catalog\"},{\"id\":\"himi_owner_lite_orders\",\"title\":\"Orders\",\"subtitle\":\"Review and complete customer orders\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_orders\",\"icon\":\"cart\",\"metricKey\":\"orders\",\"countLabel\":\"orders\",\"handoffLabel\":\"Open in Wix: Orders\"},{\"id\":\"blog\",\"title\":\"Shop journal\",\"subtitle\":\"Stories and publishing\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_posts\",\"icon\":\"newspaper\",\"metricKey\":\"posts\",\"countLabel\":\"posts\",\"createScreenId\":\"himi_owner_lite_post_new\",\"createLabel\":\"Write post\",\"handoffLabel\":\"Open in Wix: Shop journal\"},{\"id\":\"coupons\",\"title\":\"Coupons\",\"subtitle\":\"Offers, codes and usage\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_coupons\",\"icon\":\"tag\",\"metricKey\":\"module:coupons\",\"countLabel\":\"coupons\",\"handoffLabel\":\"Open in Wix: Coupons\"},{\"id\":\"invoices\",\"title\":\"Invoices\",\"subtitle\":\"Customers, balances and payment status\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_invoices\",\"icon\":\"document\",\"metricKey\":\"module:invoices\",\"countLabel\":\"invoices\",\"handoffLabel\":\"Open in Wix: Invoices\"},{\"id\":\"giftCards\",\"title\":\"Gift cards\",\"subtitle\":\"Balances, recipients and expiration\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_giftCards\",\"icon\":\"ticket\",\"metricKey\":\"module:giftCards\",\"countLabel\":\"gift cards\",\"handoffLabel\":\"Open in Wix: Gift cards\"},{\"id\":\"contacts\",\"title\":\"Contacts\",\"subtitle\":\"Your customer relationships\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_contacts\",\"icon\":\"person\",\"metricKey\":\"module:contacts\",\"countLabel\":\"contacts\",\"handoffLabel\":\"Open in Wix: Contacts\"},{\"id\":\"members\",\"title\":\"Members\",\"subtitle\":\"Membership access and profiles\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_members\",\"icon\":\"person\",\"metricKey\":\"module:members\",\"countLabel\":\"members\",\"handoffLabel\":\"Open in Wix: Members\"},{\"id\":\"groups\",\"title\":\"Groups\",\"subtitle\":\"Communities and conversations\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_groups\",\"icon\":\"person\",\"metricKey\":\"module:groups\",\"countLabel\":\"groups\",\"handoffLabel\":\"Open in Wix: Groups\"},{\"id\":\"reviews\",\"title\":\"Reviews\",\"subtitle\":\"Published and pending customer feedback\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_reviews\",\"icon\":\"star\",\"metricKey\":\"module:reviews\",\"countLabel\":\"reviews\",\"handoffLabel\":\"Open in Wix: Reviews\"},{\"id\":\"plans\",\"title\":\"Plans\",\"subtitle\":\"Pricing, benefits and visibility\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_plans\",\"icon\":\"bookmark\",\"metricKey\":\"module:plans\",\"countLabel\":\"plans\",\"handoffLabel\":\"Open in Wix: Plans\"},{\"id\":\"subscriptions\",\"title\":\"Subscriptions\",\"subtitle\":\"Member plans and subscription status\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_subscriptions\",\"icon\":\"bookmark\",\"metricKey\":\"module:subscriptions\",\"countLabel\":\"subscriptions\",\"handoffLabel\":\"Open in Wix: Subscriptions\"},{\"id\":\"programs\",\"title\":\"Programs\",\"subtitle\":\"Learning experiences and participation\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_programs\",\"icon\":\"play\",\"metricKey\":\"module:programs\",\"countLabel\":\"programs\",\"handoffLabel\":\"Open in Wix: Programs\"},{\"id\":\"badges\",\"title\":\"Badges\",\"subtitle\":\"Recognition, access and member badges\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_badges\",\"icon\":\"star\",\"metricKey\":\"module:badges\",\"countLabel\":\"badges\",\"handoffLabel\":\"Open in Wix: Badges\"},{\"id\":\"reservations\",\"title\":\"Reservations\",\"subtitle\":\"Guests, tables and arrival times\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_module_reservations\",\"icon\":\"calendar\",\"metricKey\":\"module:reservations\",\"countLabel\":\"reservations\",\"handoffLabel\":\"Open in Wix: Reservations\"},{\"id\":\"forms\",\"title\":\"Forms\",\"subtitle\":\"Forms and their configuration\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_forms\",\"icon\":\"document\",\"metricKey\":\"module:forms\",\"countLabel\":\"forms\",\"handoffLabel\":\"Open in Wix: Forms\"},{\"id\":\"portfolio\",\"title\":\"Portfolio\",\"subtitle\":\"Projects, stories and galleries\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_portfolio\",\"icon\":\"image\",\"metricKey\":\"module:portfolio\",\"countLabel\":\"portfolio\",\"handoffLabel\":\"Open in Wix: Portfolio\"},{\"id\":\"donationCampaigns\",\"title\":\"Donation campaigns\",\"subtitle\":\"Campaign goals, status and fundraising\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_donationCampaigns\",\"icon\":\"heart\",\"metricKey\":\"module:donationCampaigns\",\"countLabel\":\"donation campaigns\",\"handoffLabel\":\"Open in Wix: Donation campaigns\"}]",
|
|
52938
|
+
"areas": "[{\"id\":\"store\",\"title\":\"Catalog\",\"subtitle\":\"Products, inventory and sales\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_products\",\"icon\":\"bag\",\"metricKey\":\"products\",\"countLabel\":\"products\",\"createScreenId\":\"himi_owner_lite_product_new\",\"createLabel\":\"Create product\",\"handoffLabel\":\"Open in Wix: Catalog\",\"navigation\":{\"title\":\"Catalog\",\"subtitle\":\"Every line you sell, priced and stocked.\",\"search\":\"button\"}},{\"id\":\"himi_owner_lite_orders\",\"title\":\"Orders\",\"subtitle\":\"Review and complete customer orders\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_orders\",\"icon\":\"cart\",\"metricKey\":\"orders\",\"countLabel\":\"orders\",\"handoffLabel\":\"Open in Wix: Orders\",\"navigation\":{\"title\":\"Orders\",\"subtitle\":\"Every order, newest first — paid, packed and posted.\",\"search\":\"button\"}},{\"id\":\"blog\",\"title\":\"Shop journal\",\"subtitle\":\"Stories and publishing\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_posts\",\"icon\":\"newspaper\",\"metricKey\":\"posts\",\"countLabel\":\"posts\",\"createScreenId\":\"himi_owner_lite_post_new\",\"createLabel\":\"Write post\",\"handoffLabel\":\"Open in Wix: Shop journal\",\"navigation\":{\"title\":\"Shop journal\",\"subtitle\":\"New arrivals, restocks and shop news — drafts and published.\",\"search\":\"button\"}},{\"id\":\"coupons\",\"title\":\"Coupons\",\"subtitle\":\"Offers, codes and usage\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_coupons\",\"icon\":\"tag\",\"metricKey\":\"module:coupons\",\"countLabel\":\"coupons\",\"handoffLabel\":\"Open in Wix: Coupons\",\"navigation\":{\"title\":\"Coupons\",\"subtitle\":\"Offers, codes and usage\",\"search\":\"button\"}},{\"id\":\"invoices\",\"title\":\"Invoices\",\"subtitle\":\"Customers, balances and payment status\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_invoices\",\"icon\":\"document\",\"metricKey\":\"module:invoices\",\"countLabel\":\"invoices\",\"handoffLabel\":\"Open in Wix: Invoices\",\"navigation\":{\"title\":\"Invoices\",\"subtitle\":\"Customers, balances and payment status\",\"search\":\"button\"}},{\"id\":\"giftCards\",\"title\":\"Gift cards\",\"subtitle\":\"Balances, recipients and expiration\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_giftCards\",\"icon\":\"ticket\",\"metricKey\":\"module:giftCards\",\"countLabel\":\"gift cards\",\"handoffLabel\":\"Open in Wix: Gift cards\",\"navigation\":{\"title\":\"Gift cards\",\"subtitle\":\"Balances, recipients and expiration\",\"search\":\"button\"}},{\"id\":\"contacts\",\"title\":\"Contacts\",\"subtitle\":\"Your customer relationships\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_contacts\",\"icon\":\"person\",\"metricKey\":\"module:contacts\",\"countLabel\":\"contacts\",\"handoffLabel\":\"Open in Wix: Contacts\",\"navigation\":{\"title\":\"Contacts\",\"subtitle\":\"Your customer relationships\",\"search\":\"button\"}},{\"id\":\"members\",\"title\":\"Members\",\"subtitle\":\"Membership access and profiles\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_members\",\"icon\":\"person\",\"metricKey\":\"module:members\",\"countLabel\":\"members\",\"handoffLabel\":\"Open in Wix: Members\",\"navigation\":{\"title\":\"Members\",\"subtitle\":\"Membership access and profiles\",\"search\":\"button\"}},{\"id\":\"groups\",\"title\":\"Groups\",\"subtitle\":\"Communities and conversations\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_groups\",\"icon\":\"person\",\"metricKey\":\"module:groups\",\"countLabel\":\"groups\",\"handoffLabel\":\"Open in Wix: Groups\",\"navigation\":{\"title\":\"Groups\",\"subtitle\":\"Communities and conversations\",\"search\":\"button\"}},{\"id\":\"reviews\",\"title\":\"Reviews\",\"subtitle\":\"Published and pending customer feedback\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_reviews\",\"icon\":\"star\",\"metricKey\":\"module:reviews\",\"countLabel\":\"reviews\",\"handoffLabel\":\"Open in Wix: Reviews\",\"navigation\":{\"title\":\"Reviews\",\"subtitle\":\"Published and pending customer feedback\",\"search\":\"button\"}},{\"id\":\"plans\",\"title\":\"Plans\",\"subtitle\":\"Pricing, benefits and visibility\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_plans\",\"icon\":\"bookmark\",\"metricKey\":\"module:plans\",\"countLabel\":\"plans\",\"handoffLabel\":\"Open in Wix: Plans\",\"navigation\":{\"title\":\"Plans\",\"subtitle\":\"Pricing, benefits and visibility\",\"search\":\"button\"}},{\"id\":\"subscriptions\",\"title\":\"Subscriptions\",\"subtitle\":\"Member plans and subscription status\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_subscriptions\",\"icon\":\"bookmark\",\"metricKey\":\"module:subscriptions\",\"countLabel\":\"subscriptions\",\"handoffLabel\":\"Open in Wix: Subscriptions\",\"navigation\":{\"title\":\"Subscriptions\",\"subtitle\":\"Member plans and subscription status\",\"search\":\"button\"}},{\"id\":\"programs\",\"title\":\"Programs\",\"subtitle\":\"Learning experiences and participation\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_programs\",\"icon\":\"play\",\"metricKey\":\"module:programs\",\"countLabel\":\"programs\",\"handoffLabel\":\"Open in Wix: Programs\",\"navigation\":{\"title\":\"Programs\",\"subtitle\":\"Learning experiences and participation\",\"search\":\"button\"}},{\"id\":\"badges\",\"title\":\"Badges\",\"subtitle\":\"Recognition, access and member badges\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_badges\",\"icon\":\"star\",\"metricKey\":\"module:badges\",\"countLabel\":\"badges\",\"handoffLabel\":\"Open in Wix: Badges\",\"navigation\":{\"title\":\"Badges\",\"subtitle\":\"Recognition, access and member badges\",\"search\":\"button\"}},{\"id\":\"reservations\",\"title\":\"Reservations\",\"subtitle\":\"Guests, tables and arrival times\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_module_reservations\",\"icon\":\"calendar\",\"metricKey\":\"module:reservations\",\"countLabel\":\"reservations\",\"handoffLabel\":\"Open in Wix: Reservations\",\"navigation\":{\"title\":\"Reservations\",\"subtitle\":\"Guests, tables and arrival times\",\"search\":\"button\"}},{\"id\":\"forms\",\"title\":\"Forms\",\"subtitle\":\"Forms and their configuration\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_forms\",\"icon\":\"document\",\"metricKey\":\"module:forms\",\"countLabel\":\"forms\",\"handoffLabel\":\"Open in Wix: Forms\",\"navigation\":{\"title\":\"Forms\",\"subtitle\":\"Forms and their configuration\",\"search\":\"button\"}},{\"id\":\"portfolio\",\"title\":\"Portfolio\",\"subtitle\":\"Projects, stories and galleries\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_portfolio\",\"icon\":\"image\",\"metricKey\":\"module:portfolio\",\"countLabel\":\"portfolio\",\"handoffLabel\":\"Open in Wix: Portfolio\",\"navigation\":{\"title\":\"Portfolio\",\"subtitle\":\"Projects, stories and galleries\",\"search\":\"button\"}},{\"id\":\"donationCampaigns\",\"title\":\"Donation campaigns\",\"subtitle\":\"Campaign goals, status and fundraising\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_donationCampaigns\",\"icon\":\"heart\",\"metricKey\":\"module:donationCampaigns\",\"countLabel\":\"donation campaigns\",\"handoffLabel\":\"Open in Wix: Donation campaigns\",\"navigation\":{\"title\":\"Donation campaigns\",\"subtitle\":\"Campaign goals, status and fundraising\",\"search\":\"button\"}}]",
|
|
52913
52939
|
"copy": "{\"ownerManage.blogLabel\":\"Shop journal\",\"ownerManage.storeLabel\":\"Catalog\",\"ownerManage.title\":\"Shop\"}",
|
|
52914
52940
|
"businessName": "__HIMI_APP_NAME__"
|
|
52915
52941
|
}
|
|
@@ -55423,7 +55449,9 @@ const SCREENS = runtimeSetting({
|
|
|
55423
55449
|
"onTap": {
|
|
55424
55450
|
"actionId": "himi.open",
|
|
55425
55451
|
"params": {
|
|
55426
|
-
"screenId": "himi_owner_lite_analytics_report"
|
|
55452
|
+
"screenId": "himi_owner_lite_analytics_report",
|
|
55453
|
+
"title": "Build a report",
|
|
55454
|
+
"subtitle": "Any subject area your site tracks"
|
|
55427
55455
|
}
|
|
55428
55456
|
},
|
|
55429
55457
|
"pressFeedback": "highlight"
|
|
@@ -56579,7 +56607,8 @@ const SCREENS = runtimeSetting({
|
|
|
56579
56607
|
"action": {
|
|
56580
56608
|
"actionId": "himi.open",
|
|
56581
56609
|
"params": {
|
|
56582
|
-
"screenId": "himi_owner_lite_manage"
|
|
56610
|
+
"screenId": "himi_owner_lite_manage",
|
|
56611
|
+
"search": "drawer"
|
|
56583
56612
|
}
|
|
56584
56613
|
}
|
|
56585
56614
|
}
|
|
@@ -57216,7 +57245,8 @@ const SCREENS = runtimeSetting({
|
|
|
57216
57245
|
"action": {
|
|
57217
57246
|
"actionId": "himi.open",
|
|
57218
57247
|
"params": {
|
|
57219
|
-
"screenId": "himi_owner_lite_manage"
|
|
57248
|
+
"screenId": "himi_owner_lite_manage",
|
|
57249
|
+
"search": "drawer"
|
|
57220
57250
|
}
|
|
57221
57251
|
}
|
|
57222
57252
|
}
|
|
@@ -62413,7 +62443,9 @@ const SCREENS = runtimeSetting({
|
|
|
62413
62443
|
"onTap": {
|
|
62414
62444
|
"actionId": "himi.open",
|
|
62415
62445
|
"params": {
|
|
62416
|
-
"screenId": "himi_owner_lite_aria_history"
|
|
62446
|
+
"screenId": "himi_owner_lite_aria_history",
|
|
62447
|
+
"title": "Conversations",
|
|
62448
|
+
"subtitle": "Pick up where you left off."
|
|
62417
62449
|
}
|
|
62418
62450
|
},
|
|
62419
62451
|
"accessibilityLabel": "History",
|
|
@@ -63720,7 +63752,8 @@ const SCREENS = runtimeSetting({
|
|
|
63720
63752
|
"actionId": "himi.open",
|
|
63721
63753
|
"params": {
|
|
63722
63754
|
"screenId": "himi_owner_lite_aria",
|
|
63723
|
-
"conversationId": "$item.id"
|
|
63755
|
+
"conversationId": "$item.id",
|
|
63756
|
+
"title": "Aria"
|
|
63724
63757
|
}
|
|
63725
63758
|
}
|
|
63726
63759
|
}
|
|
@@ -63858,7 +63891,9 @@ const SCREENS = runtimeSetting({
|
|
|
63858
63891
|
"action": {
|
|
63859
63892
|
"actionId": "himi.open",
|
|
63860
63893
|
"params": {
|
|
63861
|
-
"screenId": "himi_owner_lite_overview"
|
|
63894
|
+
"screenId": "himi_owner_lite_overview",
|
|
63895
|
+
"title": "Across your businesses",
|
|
63896
|
+
"subtitle": "What needs you, everywhere at once"
|
|
63862
63897
|
}
|
|
63863
63898
|
}
|
|
63864
63899
|
}
|
|
@@ -79842,7 +79877,8 @@ const TEMPLATED: { pattern: string; display: string; liveSeed?: LiveSeed; static
|
|
|
79842
79877
|
"action": {
|
|
79843
79878
|
"actionId": "himi.open",
|
|
79844
79879
|
"params": {
|
|
79845
|
-
"screenId": "himi_owner_lite_manage"
|
|
79880
|
+
"screenId": "himi_owner_lite_manage",
|
|
79881
|
+
"search": "drawer"
|
|
79846
79882
|
}
|
|
79847
79883
|
}
|
|
79848
79884
|
}
|
|
@@ -84,14 +84,17 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
84
84
|
}
|
|
85
85
|
return result;
|
|
86
86
|
};
|
|
87
|
-
|
|
87
|
+
/** [keepRows]: a search typed over the rows on screen leaves them there until its answer arrives (status stays
|
|
88
|
+
* `loading`, and nothing pages under the old answer), so the list is not blanked on each keystroke. */
|
|
89
|
+
const fetch = async (append: boolean, keepRows = false): Promise<void> => {
|
|
88
90
|
if (disposed || (append && (state.loadingMore || state.status === 'loading' || !state.nextCursor))) return;
|
|
89
91
|
const revision = append ? generation : ++generation;
|
|
90
92
|
const cursor = append ? state.nextCursor : '';
|
|
91
93
|
const criteria = copyQuery(state.criteria);
|
|
92
94
|
if (!append) loadedPages = 0;
|
|
93
95
|
state = { ...state, status: append ? 'ready' : 'loading', loadingMore: append, pageError: false, error: '',
|
|
94
|
-
...(append ? {} :
|
|
96
|
+
...(append ? {} : keepRows ? { nextCursor: '', complete: false, provisional: false }
|
|
97
|
+
: { items: [], nextCursor: '', total: undefined, metadata: undefined, complete: false, provisional: false }) };
|
|
95
98
|
emit();
|
|
96
99
|
try {
|
|
97
100
|
if (!append && source.cached) {
|
|
@@ -117,7 +120,9 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
117
120
|
clearedByError = clear || /HTTP 40[13]\b/.test(String(error));
|
|
118
121
|
if (clearedByError) lastShown = undefined;
|
|
119
122
|
if (clear) loadedPages = 0;
|
|
120
|
-
|
|
123
|
+
// The rows a typed search kept on screen while it ran were never its answer: a failed one shows none of them.
|
|
124
|
+
const drop = clear || keepRows;
|
|
125
|
+
state = { ...state, ...(drop ? { items: [], nextCursor: '', total: undefined, metadata: undefined } : {}),
|
|
121
126
|
status: append && !clear ? 'ready' : 'error', loadingMore: false, pageError: append && !clear, complete: false,
|
|
122
127
|
provisional: false, error: source.errorMessage?.(error) ?? '' };
|
|
123
128
|
}
|
|
@@ -134,9 +139,13 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
134
139
|
const count = restorePages && same ? Math.max(loadedPages, restoringPages, 1) : 1;
|
|
135
140
|
const showing = lastShown && sameCriteria(lastShown.state.criteria, next) ? lastShown : undefined;
|
|
136
141
|
restoringPages = count;
|
|
142
|
+
// Only the search text changed: the user is typing over the rows on screen, also while the last keystroke's
|
|
143
|
+
// search is still out.
|
|
144
|
+
const typing = !same && (state.status === 'ready' || state.status === 'loading')
|
|
145
|
+
&& sameCriteria({ ...state.criteria, query: '' }, { ...next, query: '' });
|
|
137
146
|
state = { ...state, criteria: next };
|
|
138
147
|
if (revalidate && showing) { revalidating = generation + 1; clearedByError = false; }
|
|
139
|
-
const pending = fetch(false);
|
|
148
|
+
const pending = fetch(false, typing);
|
|
140
149
|
const revision = generation;
|
|
141
150
|
await pending;
|
|
142
151
|
// Re-appearance revalidates every previously opened page using fresh
|
|
@@ -194,7 +194,8 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
194
194
|
noSignIn: !signInRequired,
|
|
195
195
|
errorTitle: signInRequired ? copyParam('collection.signInTitle', 'Sign in to see this') : copyParam('collection.loadErrorTitle', 'This collection could not load'),
|
|
196
196
|
errorMessage,
|
|
197
|
-
|
|
197
|
+
// A skeleton only with nothing to show: a search re-running over the rows on screen keeps them.
|
|
198
|
+
noLoading: !loading || rows.length > 0,
|
|
198
199
|
// De-dup against a domain that paints its OWN empty block (screen-kit emptyBlock is
|
|
199
200
|
// gated on the domain's top-level `noEmpty`): only one empty state ever shows.
|
|
200
201
|
noEmptySource: !sourceEmpty || s.noEmpty === false,
|
|
@@ -17,7 +17,7 @@ import { OWNER_MODULES, ownerModuleId } from '../_shared/owner-modules.js';
|
|
|
17
17
|
import { localPreferences } from '../_shared/local-preferences.js';
|
|
18
18
|
import { stashCopy, copyParam, copyTemplate } from '../_shared/himi-copy.js';
|
|
19
19
|
import { fallbackNameFrom, selectedSiteName } from '../_shared/owner-selected-site.js';
|
|
20
|
-
import { DASHBOARD_PATHS, deriveManage, parseAreas, recentAreas, metricFailure, rememberArea, withMetrics, type ManageArea, type Metric, type MetricFailure } from './logic.js';
|
|
20
|
+
import { DASHBOARD_PATHS, deriveManage, navigationArgs, parseAreas, recentAreas, metricFailure, rememberArea, withMetrics, type ManageArea, type Metric, type MetricFailure } from './logic.js';
|
|
21
21
|
|
|
22
22
|
interface State {
|
|
23
23
|
/** The business the header names: the one picked on Sites, else the descriptor's
|
|
@@ -339,13 +339,15 @@ const svc = defineService<State, {
|
|
|
339
339
|
const area = findArea(state, arg);
|
|
340
340
|
if (!area) return state;
|
|
341
341
|
const next = remember(state, area);
|
|
342
|
-
|
|
342
|
+
const args = navigationArgs(area.navigation);
|
|
343
|
+
return navigate(next, { screenId: area.screenId, ...(args ? { args } : {}) }) as State;
|
|
343
344
|
},
|
|
344
345
|
create: (state, arg) => {
|
|
345
346
|
const area = findArea(state, arg);
|
|
346
347
|
if (!area?.createScreenId) return state;
|
|
347
348
|
const next = remember(state, area);
|
|
348
|
-
|
|
349
|
+
const args = navigationArgs(area.createNavigation);
|
|
350
|
+
return navigate(next, { screenId: area.createScreenId, ...(args ? { args } : {}) }) as State;
|
|
349
351
|
},
|
|
350
352
|
handoff: async (state, arg) => {
|
|
351
353
|
const area = findArea(state, arg);
|
|
@@ -52,6 +52,34 @@ export interface ManageArea {
|
|
|
52
52
|
hideHandoff?: boolean;
|
|
53
53
|
/** The accessible name of this area's "Open in Wix", which carries the area ("Open in Wix: Store"). */
|
|
54
54
|
handoffLabel?: string;
|
|
55
|
+
/** The navigation its page declares (`hostTitle`, `topBar.searchable`), for the host's bar the moment it opens it. */
|
|
56
|
+
navigation?: ManageNavigation;
|
|
57
|
+
/** The same for its create screen. */
|
|
58
|
+
createNavigation?: ManageNavigation;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** A page's navigation as the build declares it: its title and subtitle, and where its search goes (none without one). */
|
|
62
|
+
export interface ManageNavigation {
|
|
63
|
+
title?: string;
|
|
64
|
+
subtitle?: string;
|
|
65
|
+
search?: "drawer" | "button";
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function parseNavigation(value: unknown): ManageNavigation | undefined {
|
|
69
|
+
if (!value || typeof value !== "object") return undefined;
|
|
70
|
+
const raw = value as Record<string, unknown>;
|
|
71
|
+
const title = clean(raw.title);
|
|
72
|
+
const subtitle = title ? clean(raw.subtitle) : "";
|
|
73
|
+
const search = raw.search === "drawer" || raw.search === "button" ? raw.search : undefined;
|
|
74
|
+
if (!title && !search) return undefined;
|
|
75
|
+
return { ...(title ? { title } : {}), ...(subtitle ? { subtitle } : {}), ...(search ? { search } : {}) };
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** The open action's arguments that carry [navigation] to the host: strings only, as `_nav.args` takes them. */
|
|
79
|
+
export function navigationArgs(navigation: ManageNavigation | undefined): Record<string, string> | undefined {
|
|
80
|
+
if (!navigation) return undefined;
|
|
81
|
+
return { ...(navigation.title ? { title: navigation.title } : {}), ...(navigation.subtitle ? { subtitle: navigation.subtitle } : {}),
|
|
82
|
+
...(navigation.search ? { search: navigation.search } : {}) };
|
|
55
83
|
}
|
|
56
84
|
|
|
57
85
|
export interface ManageSection {
|
|
@@ -98,6 +126,8 @@ export function parseAreas(value: unknown): ManageArea[] {
|
|
|
98
126
|
hideCreate: !(createScreenId && createLabel),
|
|
99
127
|
hideHandoff: !DASHBOARD_PATHS[area.id],
|
|
100
128
|
handoffLabel: clean(raw.handoffLabel) || `Open in Wix: ${area.title}`,
|
|
129
|
+
...(parseNavigation(raw.navigation) ? { navigation: parseNavigation(raw.navigation) } : {}),
|
|
130
|
+
...(createScreenId && createLabel && parseNavigation(raw.createNavigation) ? { createNavigation: parseNavigation(raw.createNavigation) } : {}),
|
|
101
131
|
metricText: "—",
|
|
102
132
|
statusText: "",
|
|
103
133
|
unavailable: false,
|
|
@@ -84,14 +84,17 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
84
84
|
}
|
|
85
85
|
return result;
|
|
86
86
|
};
|
|
87
|
-
|
|
87
|
+
/** [keepRows]: a search typed over the rows on screen leaves them there until its answer arrives (status stays
|
|
88
|
+
* `loading`, and nothing pages under the old answer), so the list is not blanked on each keystroke. */
|
|
89
|
+
const fetch = async (append: boolean, keepRows = false): Promise<void> => {
|
|
88
90
|
if (disposed || (append && (state.loadingMore || state.status === 'loading' || !state.nextCursor))) return;
|
|
89
91
|
const revision = append ? generation : ++generation;
|
|
90
92
|
const cursor = append ? state.nextCursor : '';
|
|
91
93
|
const criteria = copyQuery(state.criteria);
|
|
92
94
|
if (!append) loadedPages = 0;
|
|
93
95
|
state = { ...state, status: append ? 'ready' : 'loading', loadingMore: append, pageError: false, error: '',
|
|
94
|
-
...(append ? {} :
|
|
96
|
+
...(append ? {} : keepRows ? { nextCursor: '', complete: false, provisional: false }
|
|
97
|
+
: { items: [], nextCursor: '', total: undefined, metadata: undefined, complete: false, provisional: false }) };
|
|
95
98
|
emit();
|
|
96
99
|
try {
|
|
97
100
|
if (!append && source.cached) {
|
|
@@ -117,7 +120,9 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
117
120
|
clearedByError = clear || /HTTP 40[13]\b/.test(String(error));
|
|
118
121
|
if (clearedByError) lastShown = undefined;
|
|
119
122
|
if (clear) loadedPages = 0;
|
|
120
|
-
|
|
123
|
+
// The rows a typed search kept on screen while it ran were never its answer: a failed one shows none of them.
|
|
124
|
+
const drop = clear || keepRows;
|
|
125
|
+
state = { ...state, ...(drop ? { items: [], nextCursor: '', total: undefined, metadata: undefined } : {}),
|
|
121
126
|
status: append && !clear ? 'ready' : 'error', loadingMore: false, pageError: append && !clear, complete: false,
|
|
122
127
|
provisional: false, error: source.errorMessage?.(error) ?? '' };
|
|
123
128
|
}
|
|
@@ -134,9 +139,13 @@ export function createCollectionQuery<Row>(source: CollectionQuerySource<Row>, p
|
|
|
134
139
|
const count = restorePages && same ? Math.max(loadedPages, restoringPages, 1) : 1;
|
|
135
140
|
const showing = lastShown && sameCriteria(lastShown.state.criteria, next) ? lastShown : undefined;
|
|
136
141
|
restoringPages = count;
|
|
142
|
+
// Only the search text changed: the user is typing over the rows on screen, also while the last keystroke's
|
|
143
|
+
// search is still out.
|
|
144
|
+
const typing = !same && (state.status === 'ready' || state.status === 'loading')
|
|
145
|
+
&& sameCriteria({ ...state.criteria, query: '' }, { ...next, query: '' });
|
|
137
146
|
state = { ...state, criteria: next };
|
|
138
147
|
if (revalidate && showing) { revalidating = generation + 1; clearedByError = false; }
|
|
139
|
-
const pending = fetch(false);
|
|
148
|
+
const pending = fetch(false, typing);
|
|
140
149
|
const revision = generation;
|
|
141
150
|
await pending;
|
|
142
151
|
// Re-appearance revalidates every previously opened page using fresh
|
|
@@ -194,7 +194,8 @@ export function decorateCollection(name: string, def: { state: State; actions?:
|
|
|
194
194
|
noSignIn: !signInRequired,
|
|
195
195
|
errorTitle: signInRequired ? copyParam('collection.signInTitle', 'Sign in to see this') : copyParam('collection.loadErrorTitle', 'This collection could not load'),
|
|
196
196
|
errorMessage,
|
|
197
|
-
|
|
197
|
+
// A skeleton only with nothing to show: a search re-running over the rows on screen keeps them.
|
|
198
|
+
noLoading: !loading || rows.length > 0,
|
|
198
199
|
// De-dup against a domain that paints its OWN empty block (screen-kit emptyBlock is
|
|
199
200
|
// gated on the domain's top-level `noEmpty`): only one empty state ever shows.
|
|
200
201
|
noEmptySource: !sourceEmpty || s.noEmpty === false,
|