@salesforce/webapp-template-app-react-sample-b2x-experimental 1.75.0 → 1.75.1

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.
Files changed (24) hide show
  1. package/dist/CHANGELOG.md +8 -0
  2. package/dist/force-app/main/default/webapplications/appreactsampleb2x/package.json +4 -4
  3. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/api/propertyListingGraphQL.ts +1 -1
  4. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/PropertyListingCard.tsx +2 -2
  5. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/PropertyMap.tsx +1 -3
  6. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/components/detail/DetailForm.tsx +1 -1
  7. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/components/search/GlobalSearchInput.tsx +1 -1
  8. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/components/search/SearchResultCard.tsx +1 -1
  9. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/pages/DetailPage.tsx +1 -1
  10. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/pages/GlobalSearch.tsx +1 -1
  11. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/hooks/usePropertyAddresses.ts +1 -1
  12. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/hooks/usePropertyListingSearch.ts +1 -1
  13. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/hooks/usePropertyMapMarkers.ts +1 -1
  14. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/hooks/usePropertyPrimaryImages.ts +1 -1
  15. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/PropertySearch.tsx +2 -2
  16. package/dist/package.json +1 -1
  17. package/package.json +1 -1
  18. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/api/index.ts +0 -19
  19. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/components/detail/formatted/index.ts +0 -6
  20. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/hooks/index.ts +0 -22
  21. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/types/index.ts +0 -5
  22. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/features/global-search/utils/index.ts +0 -59
  23. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/index.ts +0 -10
  24. /package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/{constants.ts → features/global-search/constants.ts} +0 -0
package/dist/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.75.1](https://github.com/salesforce-experience-platform-emu/webapps/compare/v1.75.0...v1.75.1) (2026-03-05)
7
+
8
+ **Note:** Version bump only for package @salesforce/webapp-template-base-sfdx-project-experimental
9
+
10
+
11
+
12
+
13
+
6
14
  # [1.75.0](https://github.com/salesforce-experience-platform-emu/webapps/compare/v1.74.0...v1.75.0) (2026-03-05)
7
15
 
8
16
  **Note:** Version bump only for package @salesforce/webapp-template-base-sfdx-project-experimental
@@ -15,8 +15,8 @@
15
15
  "graphql:schema": "node scripts/get-graphql-schema.mjs"
16
16
  },
17
17
  "dependencies": {
18
- "@salesforce/sdk-data": "^1.75.0",
19
- "@salesforce/webapp-experimental": "^1.75.0",
18
+ "@salesforce/sdk-data": "^1.75.1",
19
+ "@salesforce/webapp-experimental": "^1.75.1",
20
20
  "@tailwindcss/vite": "^4.1.17",
21
21
  "@tanstack/react-form": "^1.28.4",
22
22
  "@types/leaflet": "^1.9.21",
@@ -30,7 +30,7 @@
30
30
  "react-leaflet": "^5.0.0",
31
31
  "react-router": "^7.10.1",
32
32
  "shadcn": "^3.8.5",
33
- "tailwind-merge": "^3.4.0",
33
+ "tailwind-merge": "^3.5.0",
34
34
  "tailwindcss": "^4.1.17",
35
35
  "tw-animate-css": "^1.4.0",
36
36
  "zod": "^4.3.6"
@@ -43,7 +43,7 @@
43
43
  "@graphql-eslint/eslint-plugin": "^4.1.0",
44
44
  "@graphql-tools/utils": "^11.0.0",
45
45
  "@playwright/test": "^1.49.0",
46
- "@salesforce/vite-plugin-webapp-experimental": "^1.75.0",
46
+ "@salesforce/vite-plugin-webapp-experimental": "^1.75.1",
47
47
  "@testing-library/jest-dom": "^6.6.3",
48
48
  "@testing-library/react": "^16.1.0",
49
49
  "@testing-library/user-event": "^14.5.2",
@@ -7,7 +7,7 @@ import type {
7
7
  SearchResultRecord,
8
8
  SearchResultRecordData,
9
9
  FieldValue,
10
- } from "@/types/search/searchResults";
10
+ } from "../features/global-search/types/search/searchResults.js";
11
11
 
12
12
  const OBJECT_API_NAME = "Property_Listing__c";
13
13
 
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import { useNavigate } from "react-router";
5
5
  import { useCallback, useState } from "react";
6
- import { Button } from "@/components/ui/button";
7
- import type { SearchResultRecordData } from "@/types/search/searchResults";
6
+ import { Button } from "./ui/button";
7
+ import type { SearchResultRecordData } from "../features/global-search/types/search/searchResults.js";
8
8
  import { Heart } from "lucide-react";
9
9
 
10
10
  function fieldDisplay(
@@ -3,7 +3,7 @@
3
3
  * Renders one pin per property (each marker in the markers array).
4
4
  */
5
5
  import { useMemo, useState, useEffect } from "react";
6
- import { MapContainer, TileLayer, Marker, Popup, useMap, AttributionControl } from "react-leaflet";
6
+ import { MapContainer, TileLayer, Marker, Popup, useMap } from "react-leaflet";
7
7
  import L from "leaflet";
8
8
  import "leaflet/dist/leaflet.css";
9
9
 
@@ -91,11 +91,9 @@ export default function PropertyMap({
91
91
  center={effectiveCenter}
92
92
  zoom={zoom}
93
93
  scrollWheelZoom
94
- attributionControl={false}
95
94
  className="h-full w-full"
96
95
  style={{ minHeight: 200 }}
97
96
  >
98
- <AttributionControl prefix='<a href="https://leafletjs.com/">Leaflet</a>' />
99
97
  <MapCenterUpdater center={effectiveCenter} zoom={zoom} />
100
98
  <TileLayer
101
99
  attribution='Data by &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
@@ -13,7 +13,7 @@ import {
13
13
  type PicklistOption,
14
14
  type TransformedLayoutItem,
15
15
  } from "../../utils/layoutTransformUtils";
16
- import { FieldValueDisplay } from "./formatted";
16
+ import { FieldValueDisplay } from "./formatted/FieldValueDisplay";
17
17
  import { Section } from "./Section";
18
18
  import { SectionRow } from "./SectionRow";
19
19
 
@@ -11,7 +11,7 @@ import { Card, CardContent } from "../../../../components/ui/card";
11
11
  import { Input } from "../../../../components/ui/input";
12
12
  import { Button } from "../../../../components/ui/button";
13
13
  import { Search } from "lucide-react";
14
- import { OBJECT_API_NAMES } from "../../../../constants";
14
+ import { OBJECT_API_NAMES } from "../../constants";
15
15
  import { useObjectInfoBatch } from "../../hooks/useObjectInfoBatch";
16
16
 
17
17
  const BROWSE_SEGMENT = "browse__all";
@@ -34,7 +34,7 @@ import {
34
34
  import type { Column, SearchResultRecordData } from "../../types/search/searchResults";
35
35
  import { getNestedFieldValue } from "../../utils/fieldUtils";
36
36
  import ResultCardFields from "./ResultCardFields";
37
- import { OBJECT_API_NAMES } from "../../../../constants";
37
+ import { OBJECT_API_NAMES } from "../../constants";
38
38
 
39
39
  interface SearchResultCardProps {
40
40
  record: SearchResultRecordData;
@@ -6,7 +6,7 @@ import { Alert, AlertDescription, AlertTitle } from "../../../components/ui/aler
6
6
  import { AlertCircle } from "lucide-react";
7
7
  import DetailHeader from "../components/detail/DetailHeader";
8
8
  import { UiApiDetailForm } from "../components/detail/UiApiDetailForm";
9
- import { OBJECT_API_NAMES, DEFAULT_DETAIL_PAGE_TITLE } from "../../../constants";
9
+ import { OBJECT_API_NAMES, DEFAULT_DETAIL_PAGE_TITLE } from "../constants";
10
10
  import { toRecordDisplayNameMetadata } from "../utils/fieldUtils";
11
11
  import { useRecordDetailLayout } from "../hooks/useRecordDetailLayout";
12
12
  import { getGraphQLRecordDisplayName } from "../utils/graphQLNodeFieldUtils";
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { useMemo, useState, useCallback, useEffect, useRef } from "react";
15
15
  import { useParams } from "react-router";
16
- import { OBJECT_API_NAMES, DEFAULT_PAGE_SIZE } from "../../../constants";
16
+ import { OBJECT_API_NAMES, DEFAULT_PAGE_SIZE } from "../constants";
17
17
  import { useObjectListMetadata } from "../hooks/useObjectSearchData";
18
18
  import { useObjectInfoBatch } from "../hooks/useObjectInfoBatch";
19
19
  import { useRecordListGraphQL } from "../hooks/useRecordListGraphQL";
@@ -5,7 +5,7 @@
5
5
  import { useState, useEffect } from "react";
6
6
  import { fetchPropertyAddresses } from "@/api/propertyDetailGraphQL";
7
7
  import { getPropertyIdFromRecord } from "./usePropertyPrimaryImages";
8
- import type { SearchResultRecord } from "@/types/search/searchResults";
8
+ import type { SearchResultRecord } from "../features/global-search/types/search/searchResults.js";
9
9
 
10
10
  export function usePropertyAddresses(results: SearchResultRecord[]): Record<string, string> {
11
11
  const [map, setMap] = useState<Record<string, string>>({});
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { useState, useEffect, useRef, useCallback } from "react";
5
5
  import { queryPropertyListingsGraphQL } from "@/api/propertyListingGraphQL";
6
- import type { SearchResultRecord } from "@/types/search/searchResults";
6
+ import type { SearchResultRecord } from "../features/global-search/types/search/searchResults.js";
7
7
 
8
8
  export function usePropertyListingSearch(searchQuery: string, pageSize: number, pageToken: string) {
9
9
  const [results, setResults] = useState<SearchResultRecord[]>([]);
@@ -6,7 +6,7 @@ import { useState, useEffect } from "react";
6
6
  import { fetchPropertyAddresses } from "@/api/propertyDetailGraphQL";
7
7
  import { geocodeAddress } from "@/utils/geocode";
8
8
  import { getPropertyIdFromRecord } from "./usePropertyPrimaryImages";
9
- import type { SearchResultRecord } from "@/types/search/searchResults";
9
+ import type { SearchResultRecord } from "../features/global-search/types/search/searchResults.js";
10
10
  import type { MapMarker } from "@/components/PropertyMap";
11
11
 
12
12
  function getListingName(record: {
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { useState, useEffect } from "react";
6
6
  import { fetchPrimaryImagesByPropertyIds } from "@/api/propertyDetailGraphQL";
7
- import type { SearchResultRecord } from "@/types/search/searchResults";
7
+ import type { SearchResultRecord } from "../features/global-search/types/search/searchResults.js";
8
8
 
9
9
  export function getPropertyIdFromRecord(record: {
10
10
  fields?: Record<string, { value?: unknown }>;
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { useState, useCallback, useMemo, useEffect } from "react";
6
6
  import { useSearchParams } from "react-router";
7
- import { DEFAULT_PAGE_SIZE } from "@/constants";
7
+ import { DEFAULT_PAGE_SIZE } from "../features/global-search/constants";
8
8
  import { usePropertyListingSearch } from "@/hooks/usePropertyListingSearch";
9
9
  import {
10
10
  usePropertyPrimaryImages,
@@ -13,7 +13,7 @@ import {
13
13
  import { usePropertyAddresses } from "@/hooks/usePropertyAddresses";
14
14
  import { usePropertyMapMarkers } from "@/hooks/usePropertyMapMarkers";
15
15
  import { Input } from "@/components/ui/input";
16
- import SearchPagination from "@/components/search/SearchPagination";
16
+ import SearchPagination from "../features/global-search/components/search/SearchPagination";
17
17
  import PropertyListingCard from "@/components/PropertyListingCard";
18
18
  import PropertyMap from "@/components/PropertyMap";
19
19
  import PropertySearchPlaceholder from "./PropertySearchPlaceholder";
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/webapp-template-base-sfdx-project-experimental",
3
- "version": "1.75.0",
3
+ "version": "1.75.1",
4
4
  "description": "Base SFDX project template",
5
5
  "private": true,
6
6
  "files": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/webapp-template-app-react-sample-b2x-experimental",
3
- "version": "1.75.0",
3
+ "version": "1.75.1",
4
4
  "description": "B2C sample app template with app shell",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "",
@@ -1,19 +0,0 @@
1
- /**
2
- * API layer: object metadata (GraphQL), layout + record detail (REST layout + GraphQL record), record list/single (GraphQL).
3
- */
4
- export { objectInfoService } from "./objectInfoService";
5
- export { objectDetailService, extractFieldsFromLayout } from "./objectDetailService";
6
- export type { RecordDetailResult } from "./objectDetailService";
7
- export {
8
- getRecordsGraphQL,
9
- getRecordByIdGraphQL,
10
- buildGetRecordsQuery,
11
- buildWhereFromCriteria,
12
- buildOrderByFromSort,
13
- } from "./recordListGraphQLService";
14
- export type {
15
- RecordListGraphQLResult,
16
- RecordListGraphQLVariables,
17
- RecordListGraphQLOptions,
18
- GraphQLRecordNode,
19
- } from "./recordListGraphQLService";
@@ -1,6 +0,0 @@
1
- export { FieldValueDisplay } from "./FieldValueDisplay";
2
- export { FormattedAddress } from "./FormattedAddress";
3
- export { FormattedEmail } from "./FormattedEmail";
4
- export { FormattedPhone } from "./FormattedPhone";
5
- export { FormattedText } from "./FormattedText";
6
- export { FormattedUrl } from "./FormattedUrl";
@@ -1,22 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Hooks
3
- // ---------------------------------------------------------------------------
4
- export {
5
- useObjectColumns,
6
- useObjectSearchResults,
7
- useObjectFilters,
8
- useObjectListMetadata,
9
- } from "./useObjectSearchData";
10
- export type { ObjectListMetadata } from "./useObjectSearchData";
11
- export { useRecordListGraphQL } from "./useRecordListGraphQL";
12
- export type {
13
- UseRecordListGraphQLReturn,
14
- UseRecordListGraphQLOptions,
15
- } from "./useRecordListGraphQL";
16
- export { useRecordDetailLayout } from "./useRecordDetailLayout";
17
- export type {
18
- UseRecordDetailLayoutReturn,
19
- UseRecordDetailLayoutParams,
20
- } from "./useRecordDetailLayout";
21
- export { useObjectInfoBatch } from "./useObjectInfoBatch";
22
- export type { UseObjectInfoBatchResult } from "./useObjectInfoBatch";
@@ -1,5 +0,0 @@
1
- export * from "./filters/filters";
2
- export * from "./filters/picklist";
3
- export * from "./objectInfo/objectInfo";
4
- export * from "./recordDetail/recordDetail";
5
- export * from "./search/searchResults";
@@ -1,59 +0,0 @@
1
- // ---------------------------------------------------------------------------
2
- // Utilities
3
- // ---------------------------------------------------------------------------
4
- export { fetchAndValidate, safeEncodePath } from "./apiUtils";
5
- export type { FetchAndValidateOptions } from "./apiUtils";
6
- export { createFiltersKey } from "./cacheUtils";
7
- export { calculateFieldsToFetch, getSafeKey, isValidSalesforceId } from "./recordUtils";
8
- export {
9
- getNestedFieldValue,
10
- getRecordDisplayName,
11
- toRecordDisplayNameMetadata,
12
- getDisplayValueForLayoutItem,
13
- getDisplayValueForDetailField,
14
- formatAddressFromConstituents,
15
- formatAddressDisplay,
16
- formatDateTimeForDisplay,
17
- isAddressConstituents,
18
- getAddressPartsFromConstituents,
19
- extractFieldValue,
20
- } from "./fieldUtils";
21
- export type {
22
- AddressParts,
23
- LayoutItemDisplayResult,
24
- RecordDisplayNameMetadata,
25
- } from "./fieldUtils";
26
- export { calculateFormData } from "./formDataTransformUtils";
27
- export type { ObjectInfoMetadata } from "./formDataTransformUtils";
28
- export { getTransformedSections } from "./layoutTransformUtils";
29
- export type {
30
- ObjectInfo,
31
- ObjectInfoField,
32
- PicklistOption,
33
- LayoutTransformContext,
34
- TransformedLayoutItem,
35
- TransformedLayoutRow,
36
- TransformedSection,
37
- } from "./layoutTransformUtils";
38
- export { parseFilterValue } from "./filterUtils";
39
- export { sanitizeFilterValue } from "./sanitizationUtils";
40
- export { getFormValueByPath, getUniqueErrors, validateRangeValues, isFormError } from "./formUtils";
41
- export type { FormError } from "./formUtils";
42
- export {
43
- PAGE_SIZE_OPTIONS,
44
- VALID_PAGE_SIZES,
45
- getValidPageSize,
46
- isValidPageSize,
47
- } from "./paginationUtils";
48
- export { isAllowedLinkUrl, ALLOWED_LINK_PROTOCOLS } from "./linkUtils";
49
- export { graphQLNodeToSearchResultRecordData } from "./graphQLRecordAdapter";
50
- export {
51
- getGraphQLNodeValue,
52
- getDisplayValueForLayoutItemFromNode,
53
- getDisplayValueForDetailFieldFromNode,
54
- getGraphQLRecordDisplayName,
55
- } from "./graphQLNodeFieldUtils";
56
- export type {
57
- GraphQLRecordDisplayNameMetadata,
58
- ObjectMetadataForDisplay,
59
- } from "./graphQLNodeFieldUtils";
@@ -1,10 +0,0 @@
1
- /**
2
- * Package entry for @salesforce/webapp-template-feature-react-global-search-experimental.
3
- * Exports only API, hooks, utils, types, and constants so that consuming apps do not
4
- * pull in the feature's UI (routes, __inherit__ components) which depend on @radix-ui.
5
- */
6
- export * from "./features/global-search/api";
7
- export * from "./features/global-search/hooks";
8
- export * from "./features/global-search/utils";
9
- export * from "./features/global-search/types";
10
- export * from "./constants";