@wix/headless-bookings 0.0.105 → 0.0.107
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/cjs/dist/__mocks__/booking/booking-client-service.js +25 -20
- package/cjs/dist/__mocks__/booking/booking-mocks.js +28 -20
- package/cjs/dist/__mocks__/payment/payment-mocks.js +6 -3
- package/cjs/dist/__mocks__/services/services-mocks.js +79 -74
- package/cjs/dist/__mocks__/time-slots/time-slots-client-service.js +39 -33
- package/cjs/dist/__mocks__/time-slots/time-slots-core.js +43 -33
- package/cjs/dist/__mocks__/time-slots/time-slots-mocks.js +18 -13
- package/cjs/dist/api/create-booking/index.js +6 -3
- package/cjs/dist/api/create-checkout/index.js +9 -4
- package/cjs/dist/api/create-order/index.js +6 -3
- package/cjs/dist/api/fetch-availability/index.js +18 -15
- package/cjs/dist/api/index.js +24 -7
- package/cjs/dist/api/query-categories/index.js +6 -3
- package/cjs/dist/api/query-locations/index.js +9 -5
- package/cjs/dist/api/query-services/index.js +24 -17
- package/cjs/dist/react/booking/Book.js +51 -12
- package/cjs/dist/react/booking/Booking.js +68 -26
- package/cjs/dist/react/booking/BookingItem.js +56 -15
- package/cjs/dist/react/booking-form/BookingForm.js +63 -21
- package/cjs/dist/react/core/booking/Book.js +14 -11
- package/cjs/dist/react/core/booking/Booking.js +35 -23
- package/cjs/dist/react/core/booking-form/BookingForm.js +63 -26
- package/cjs/dist/react/core/location/Location.js +60 -21
- package/cjs/dist/react/core/location-list/LocationList.js +15 -10
- package/cjs/dist/react/core/payment/Payment.js +41 -30
- package/cjs/dist/react/core/service/Service.js +28 -19
- package/cjs/dist/react/core/service/ServiceMediaCover.js +7 -4
- package/cjs/dist/react/core/service/ServiceMediaGallery.js +7 -4
- package/cjs/dist/react/core/service/ServiceMediaMain.js +7 -4
- package/cjs/dist/react/core/service-list/ServiceList.js +12 -8
- package/cjs/dist/react/core/service-list/ServiceListFilter.js +9 -6
- package/cjs/dist/react/core/staff-member/StaffMember.js +20 -14
- package/cjs/dist/react/core/staff-member-list/StaffMemberList.js +19 -14
- package/cjs/dist/react/core/time-slot-list/TimeSlot.js +41 -28
- package/cjs/dist/react/core/time-slot-list/TimeSlotList.js +21 -15
- package/cjs/dist/react/index.js +49 -13
- package/cjs/dist/react/location/Location.js +76 -36
- package/cjs/dist/react/location/LocationList.js +70 -31
- package/cjs/dist/react/payment/Payment.js +87 -48
- package/cjs/dist/react/service/Service.js +197 -158
- package/cjs/dist/react/service/ServiceMedia.js +56 -17
- package/cjs/dist/react/service-list/ServiceList.js +71 -32
- package/cjs/dist/react/staff-member/StaffMember.js +61 -20
- package/cjs/dist/react/staff-member/StaffMemberList.js +68 -29
- package/cjs/dist/react/time-slot-list/TimeSlot.js +95 -56
- package/cjs/dist/react/time-slot-list/TimeSlotList.js +87 -48
- package/cjs/dist/services/booking/book-action/bookAction.js +21 -18
- package/cjs/dist/services/booking/book-action/buildBookingRequest.js +18 -15
- package/cjs/dist/services/booking/book-action/buildCheckoutRequest.js +8 -5
- package/cjs/dist/services/booking/book-action/canBook.js +4 -1
- package/cjs/dist/services/booking/book-action/index.js +15 -6
- package/cjs/dist/services/booking/book-action/isCheckoutRequired.js +4 -1
- package/cjs/dist/services/booking/book-action/types.js +5 -2
- package/cjs/dist/services/booking/booking.js +11 -8
- package/cjs/dist/services/booking-form/booking-form.js +26 -18
- package/cjs/dist/services/booking-form/utils.js +10 -4
- package/cjs/dist/services/constants.js +6 -3
- package/cjs/dist/services/index.js +48 -10
- package/cjs/dist/services/location-list/location-list.def.js +7 -5
- package/cjs/dist/services/location-list/location-list.js +31 -23
- package/cjs/dist/services/payment/payment.def.js +5 -2
- package/cjs/dist/services/payment/payment.js +22 -17
- package/cjs/dist/services/service/service.js +33 -29
- package/cjs/dist/services/service-list/service-list.js +22 -18
- package/cjs/dist/services/staff-member-list/staff-member-list.def.js +5 -2
- package/cjs/dist/services/staff-member-list/staff-member-list.js +16 -10
- package/cjs/dist/services/time-slot-list/index.js +12 -3
- package/cjs/dist/services/time-slot-list/time-slot-list.def.js +8 -5
- package/cjs/dist/services/time-slot-list/time-slot-list.js +24 -19
- package/cjs/dist/services/time-slot-list/time-slot.js +9 -6
- package/cjs/dist/utils/dateAndTime.js +7 -2
- package/cjs/dist/utils/guid.js +4 -1
- package/cjs/dist/utils/index.js +5 -1
- package/cjs/dist/utils/money.js +6 -2
- package/cjs/dist/utils/navigation.js +6 -3
- package/package.json +4 -4
|
@@ -1,14 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ServiceMedia = exports.Cover = exports.Main = exports.TestIds = void 0;
|
|
40
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
41
|
/**
|
|
3
42
|
* ServiceMedia - Compound component for displaying service media
|
|
4
43
|
* Provides components for displaying main media and cover media images
|
|
5
44
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
45
|
+
const react_1 = __importDefault(require("react"));
|
|
46
|
+
const react_2 = require("@wix/headless-utils/react");
|
|
47
|
+
const react_3 = require("@wix/headless-media/react");
|
|
48
|
+
const CoreServiceMediaMain = __importStar(require("../core/service/ServiceMediaMain.js"));
|
|
49
|
+
const CoreServiceMediaCover = __importStar(require("../core/service/ServiceMediaCover.js"));
|
|
50
|
+
exports.TestIds = {
|
|
12
51
|
serviceMediaMain: 'service-media-main',
|
|
13
52
|
serviceMediaCover: 'service-media-cover',
|
|
14
53
|
};
|
|
@@ -45,11 +84,11 @@ export const TestIds = {
|
|
|
45
84
|
* </ServiceMedia.Main>
|
|
46
85
|
* ```
|
|
47
86
|
*/
|
|
48
|
-
|
|
87
|
+
exports.Main = react_1.default.forwardRef((props, ref) => {
|
|
49
88
|
const { asChild, children, className } = props;
|
|
50
|
-
return (
|
|
89
|
+
return ((0, jsx_runtime_1.jsx)(CoreServiceMediaMain.MainMedia, { children: ({ mainMedia }) => ((0, jsx_runtime_1.jsx)(react_2.AsChildSlot, { ref: ref, asChild: asChild, className: className, "data-testid": exports.TestIds.serviceMediaMain, customElement: children, customElementProps: { media: mainMedia }, children: mainMedia?.image ? (0, jsx_runtime_1.jsx)(react_3.WixMediaImage, { media: mainMedia }) : null })) }));
|
|
51
90
|
});
|
|
52
|
-
Main.displayName = 'ServiceMedia.Main';
|
|
91
|
+
exports.Main.displayName = 'ServiceMedia.Main';
|
|
53
92
|
/**
|
|
54
93
|
* Displays the service cover media image using WixMediaImage.
|
|
55
94
|
* The cover media is typically used as a hero/banner image.
|
|
@@ -86,11 +125,11 @@ Main.displayName = 'ServiceMedia.Main';
|
|
|
86
125
|
* </ServiceMedia.Cover>
|
|
87
126
|
* ```
|
|
88
127
|
*/
|
|
89
|
-
|
|
128
|
+
exports.Cover = react_1.default.forwardRef((props, ref) => {
|
|
90
129
|
const { asChild, children, className } = props;
|
|
91
|
-
return (
|
|
130
|
+
return ((0, jsx_runtime_1.jsx)(CoreServiceMediaCover.CoverMedia, { children: ({ coverMedia }) => ((0, jsx_runtime_1.jsx)(react_2.AsChildSlot, { ref: ref, asChild: asChild, className: className, "data-testid": exports.TestIds.serviceMediaCover, customElement: children, customElementProps: { media: coverMedia }, children: coverMedia?.image ? (0, jsx_runtime_1.jsx)(react_3.WixMediaImage, { media: coverMedia }) : null })) }));
|
|
92
131
|
});
|
|
93
|
-
Cover.displayName = 'ServiceMedia.Cover';
|
|
132
|
+
exports.Cover.displayName = 'ServiceMedia.Cover';
|
|
94
133
|
/**
|
|
95
134
|
* ServiceMedia compound component for displaying service media
|
|
96
135
|
*
|
|
@@ -108,8 +147,8 @@ Cover.displayName = 'ServiceMedia.Cover';
|
|
|
108
147
|
* }
|
|
109
148
|
* ```
|
|
110
149
|
*/
|
|
111
|
-
|
|
112
|
-
Main,
|
|
113
|
-
Cover,
|
|
150
|
+
exports.ServiceMedia = {
|
|
151
|
+
Main: exports.Main,
|
|
152
|
+
Cover: exports.Cover,
|
|
114
153
|
};
|
|
115
|
-
|
|
154
|
+
exports.default = exports.ServiceMedia;
|
|
@@ -1,16 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Filter = exports.Actions = exports.LoadMore = exports.ServiceRepeater = exports.Services = exports.Root = exports.TestIds = void 0;
|
|
40
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
41
|
/**
|
|
3
42
|
* ServiceList - High-level component for displaying services list
|
|
4
43
|
* Provides components for displaying services list with pagination
|
|
5
44
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
45
|
+
const react_1 = __importDefault(require("react"));
|
|
46
|
+
const react_2 = require("@wix/headless-components/react");
|
|
47
|
+
const services_manager_react_1 = require("@wix/services-manager-react");
|
|
48
|
+
const service_list_js_1 = require("../../services/service-list/service-list.js");
|
|
49
|
+
const CoreServiceList = __importStar(require("../core/service-list/ServiceList.js"));
|
|
50
|
+
const CoreServiceListFilter = __importStar(require("../core/service-list/ServiceListFilter.js"));
|
|
51
|
+
const Service = __importStar(require("../service/Service.js"));
|
|
52
|
+
exports.TestIds = {
|
|
14
53
|
serviceListRoot: 'service-list-root',
|
|
15
54
|
serviceListServices: 'service-list-services',
|
|
16
55
|
serviceListService: 'service-list-service',
|
|
@@ -40,22 +79,22 @@ export const TestIds = {
|
|
|
40
79
|
* }
|
|
41
80
|
* ```
|
|
42
81
|
*/
|
|
43
|
-
|
|
82
|
+
exports.Root = react_1.default.forwardRef((props, ref) => {
|
|
44
83
|
const { children, serviceListConfig = {}, className, variant } = props;
|
|
45
|
-
return (
|
|
84
|
+
return ((0, jsx_runtime_1.jsx)(CoreServiceList.Root, { serviceListConfig: serviceListConfig, children: (0, jsx_runtime_1.jsx)(RootContent, { className: className, ref: ref, variant: variant, children: children }) }));
|
|
46
85
|
});
|
|
47
|
-
Root.displayName = 'ServiceList.Root';
|
|
86
|
+
exports.Root.displayName = 'ServiceList.Root';
|
|
48
87
|
/**
|
|
49
88
|
* Internal component to handle the Root content with service access
|
|
50
89
|
*/
|
|
51
|
-
const RootContent =
|
|
90
|
+
const RootContent = react_1.default.forwardRef((props, ref) => {
|
|
52
91
|
const { children, className, variant } = props;
|
|
53
|
-
return (
|
|
92
|
+
return ((0, jsx_runtime_1.jsx)(CoreServiceList.Services, { children: ({ services: servicesList, isLoading, hasMore, loadMore, error }) => {
|
|
54
93
|
const items = servicesList.map((service) => ({
|
|
55
94
|
...service,
|
|
56
95
|
id: service._id,
|
|
57
96
|
}));
|
|
58
|
-
return (
|
|
97
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Root, { items: items, loadMore: () => loadMore(), hasMore: hasMore, isLoading: isLoading, error: error, className: className, ref: ref, "data-testid": exports.TestIds.serviceListRoot, variant: variant, children: children }));
|
|
59
98
|
} }));
|
|
60
99
|
});
|
|
61
100
|
/**
|
|
@@ -77,11 +116,11 @@ const RootContent = React.forwardRef((props, ref) => {
|
|
|
77
116
|
* </ServiceList.Services>
|
|
78
117
|
* ```
|
|
79
118
|
*/
|
|
80
|
-
|
|
119
|
+
exports.Services = react_1.default.forwardRef((props, ref) => {
|
|
81
120
|
const { children, emptyState, loadingState, errorState, ...otherProps } = props;
|
|
82
|
-
return (
|
|
121
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Items, { ref: ref, "data-testid": exports.TestIds.serviceListServices, emptyState: emptyState, loadingState: loadingState, errorState: errorState, ...otherProps, children: children }));
|
|
83
122
|
});
|
|
84
|
-
Services.displayName = 'ServiceList.Services';
|
|
123
|
+
exports.Services.displayName = 'ServiceList.Services';
|
|
85
124
|
/**
|
|
86
125
|
* Repeater component that renders Service.Root for each service.
|
|
87
126
|
* Follows Repeater Level pattern and uses GenericList.Repeater for consistency.
|
|
@@ -113,7 +152,7 @@ Services.displayName = 'ServiceList.Services';
|
|
|
113
152
|
* </ServiceList.ServiceRepeater>
|
|
114
153
|
* ```
|
|
115
154
|
*/
|
|
116
|
-
|
|
155
|
+
exports.ServiceRepeater = react_1.default.forwardRef((props, ref) => {
|
|
117
156
|
const { children, asChild } = props;
|
|
118
157
|
// Check if children is a function that matches ServiceRootChildren pattern
|
|
119
158
|
// (function with single parameter that receives { selected, bookable })
|
|
@@ -121,16 +160,16 @@ export const ServiceRepeater = React.forwardRef((props, ref) => {
|
|
|
121
160
|
// Custom itemWrapper that matches ItemWrapperProps signature
|
|
122
161
|
const serviceItemWrapper = (wrapperProps) => {
|
|
123
162
|
const { item: service, children: itemChildren } = wrapperProps;
|
|
124
|
-
return (
|
|
163
|
+
return ((0, jsx_runtime_1.jsx)(Service.Root, { service: service, "data-testid": exports.TestIds.serviceListService, "data-service-id": service._id, "data-item-id": service._id, children: isServiceRootFunction
|
|
125
164
|
? children
|
|
126
165
|
: itemChildren }, service._id));
|
|
127
166
|
};
|
|
128
167
|
// When isServiceRootFunction is true, children is a function for Service.Root (not repeater render props)
|
|
129
168
|
// so we pass undefined and let itemWrapper handle the children
|
|
130
169
|
const repeaterChildren = isServiceRootFunction ? undefined : children;
|
|
131
|
-
return (
|
|
170
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Repeater, { ref: ref, asChild: asChild, itemWrapper: serviceItemWrapper, children: repeaterChildren }));
|
|
132
171
|
});
|
|
133
|
-
ServiceRepeater.displayName = 'ServiceList.ServiceRepeater';
|
|
172
|
+
exports.ServiceRepeater.displayName = 'ServiceList.ServiceRepeater';
|
|
134
173
|
/**
|
|
135
174
|
* Displays a button to load more services. Not rendered if infiniteScroll is false or no services are left to load.
|
|
136
175
|
* Follows the architecture rules - does not support asChild as it's a simple trigger component.
|
|
@@ -143,16 +182,16 @@ ServiceRepeater.displayName = 'ServiceList.ServiceRepeater';
|
|
|
143
182
|
* </ServiceList.Actions.LoadMore>
|
|
144
183
|
* ```
|
|
145
184
|
*/
|
|
146
|
-
|
|
147
|
-
const { children =
|
|
148
|
-
return (
|
|
185
|
+
exports.LoadMore = react_1.default.forwardRef((props, ref) => {
|
|
186
|
+
const { children = (0, jsx_runtime_1.jsx)("button", {}), ...otherProps } = props;
|
|
187
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Actions.LoadMore, { ref: ref, "data-testid": exports.TestIds.serviceListLoadMore, ...otherProps, children: children }));
|
|
149
188
|
});
|
|
150
|
-
LoadMore.displayName = 'ServiceList.Actions.LoadMore';
|
|
189
|
+
exports.LoadMore.displayName = 'ServiceList.Actions.LoadMore';
|
|
151
190
|
/**
|
|
152
191
|
* Actions namespace for ServiceList
|
|
153
192
|
*/
|
|
154
|
-
|
|
155
|
-
LoadMore,
|
|
193
|
+
exports.Actions = {
|
|
194
|
+
LoadMore: exports.LoadMore,
|
|
156
195
|
};
|
|
157
196
|
/**
|
|
158
197
|
* Filter component that provides filtering functionality for service lists.
|
|
@@ -199,11 +238,11 @@ export const Actions = {
|
|
|
199
238
|
* </ServiceList.Filter>
|
|
200
239
|
* ```
|
|
201
240
|
*/
|
|
202
|
-
|
|
241
|
+
exports.Filter = react_1.default.forwardRef((props, ref) => {
|
|
203
242
|
const { children, ...otherProps } = props;
|
|
204
243
|
// Get filter value directly from service - single source of truth
|
|
205
|
-
const serviceListService = useService(ServiceListServiceDefinition);
|
|
244
|
+
const serviceListService = (0, services_manager_react_1.useService)(service_list_js_1.ServiceListServiceDefinition);
|
|
206
245
|
const currentFilter = serviceListService.queryOptionsSignal.get().filter;
|
|
207
|
-
return (
|
|
246
|
+
return ((0, jsx_runtime_1.jsx)(CoreServiceListFilter.Root, { children: ({ filterOptions, updateFilter, isFiltered }) => ((0, jsx_runtime_1.jsx)(react_2.Filter.Root, { ref: ref, value: (currentFilter ?? {}), onChange: (value) => updateFilter(value), filterOptions: filterOptions, "data-testid": exports.TestIds.serviceListFilter, "data-is-filtered": isFiltered, ...otherProps, children: children })) }));
|
|
208
247
|
});
|
|
209
|
-
Filter.displayName = 'ServiceList.Filter';
|
|
248
|
+
exports.Filter.displayName = 'ServiceList.Filter';
|
|
@@ -1,19 +1,59 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Actions = exports.Raw = exports.Name = exports.Root = exports.TestIds = exports.useStaffMemberContext = void 0;
|
|
40
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
41
|
/**
|
|
3
42
|
* StaffMember - Headless component for displaying staff member information
|
|
4
43
|
* Provides components for displaying staff member name
|
|
5
44
|
*
|
|
6
45
|
* @module React/StaffMember
|
|
7
46
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
47
|
+
const react_1 = __importDefault(require("react"));
|
|
48
|
+
const CoreStaffMember = __importStar(require("../core/staff-member/StaffMember.js"));
|
|
49
|
+
const react_2 = require("@wix/headless-utils/react");
|
|
11
50
|
// Re-export useStaffMemberContext from core
|
|
12
|
-
|
|
51
|
+
var StaffMember_js_1 = require("../core/staff-member/StaffMember.js");
|
|
52
|
+
Object.defineProperty(exports, "useStaffMemberContext", { enumerable: true, get: function () { return StaffMember_js_1.useStaffMemberContext; } });
|
|
13
53
|
// ==========================================
|
|
14
54
|
// TestIds Enum
|
|
15
55
|
// ==========================================
|
|
16
|
-
|
|
56
|
+
exports.TestIds = {
|
|
17
57
|
staffMemberRoot: 'staff-member-root',
|
|
18
58
|
staffMemberName: 'staff-member-name',
|
|
19
59
|
staffMemberRaw: 'staff-member-raw',
|
|
@@ -51,13 +91,13 @@ const useStaffMemberContext = CoreStaffMember.useStaffMemberContext;
|
|
|
51
91
|
* </StaffMember.Root>
|
|
52
92
|
* ```
|
|
53
93
|
*/
|
|
54
|
-
|
|
94
|
+
exports.Root = react_1.default.forwardRef((props, ref) => {
|
|
55
95
|
const { staffMember, asChild, children, className, ...attrs } = props;
|
|
56
96
|
// Extract data-* attributes
|
|
57
97
|
const dataAttrs = Object.fromEntries(Object.entries(attrs).filter(([key]) => key.startsWith('data-')));
|
|
58
|
-
return (
|
|
98
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMember.Root, { staffMember: staffMember, children: (0, jsx_runtime_1.jsx)(CoreStaffMember.Data, { children: (renderProps) => ((0, jsx_runtime_1.jsx)(react_2.AsChildSlot, { ref: ref, asChild: asChild, className: className, "data-testid": exports.TestIds.staffMemberRoot, customElement: children, customElementProps: renderProps, ...dataAttrs, children: children })) }) }));
|
|
59
99
|
});
|
|
60
|
-
Root.displayName = 'StaffMember.Root';
|
|
100
|
+
exports.Root.displayName = 'StaffMember.Root';
|
|
61
101
|
/**
|
|
62
102
|
* Displays the staff member name.
|
|
63
103
|
*
|
|
@@ -72,12 +112,12 @@ Root.displayName = 'StaffMember.Root';
|
|
|
72
112
|
* </StaffMember.Name>
|
|
73
113
|
* ```
|
|
74
114
|
*/
|
|
75
|
-
|
|
115
|
+
exports.Name = react_1.default.forwardRef((props, ref) => {
|
|
76
116
|
const { asChild, children, ...rest } = props;
|
|
77
117
|
const { name } = useStaffMemberContext();
|
|
78
|
-
return (
|
|
118
|
+
return ((0, jsx_runtime_1.jsx)(react_2.AsChildSlot, { ref: ref, asChild: asChild, ...rest, "data-testid": exports.TestIds.staffMemberName, customElement: children, customElementProps: { name }, children: name ? (0, jsx_runtime_1.jsx)("span", { children: name }) : null }));
|
|
79
119
|
});
|
|
80
|
-
Name.displayName = 'StaffMember.Name';
|
|
120
|
+
exports.Name.displayName = 'StaffMember.Name';
|
|
81
121
|
/**
|
|
82
122
|
* Exposes all raw staff member data via render prop.
|
|
83
123
|
* Use only when you need full access to staff member data.
|
|
@@ -92,11 +132,12 @@ Name.displayName = 'StaffMember.Name';
|
|
|
92
132
|
* </StaffMember.Raw>
|
|
93
133
|
* ```
|
|
94
134
|
*/
|
|
95
|
-
|
|
135
|
+
const Raw = (props) => {
|
|
96
136
|
const context = useStaffMemberContext();
|
|
97
|
-
return
|
|
137
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: props.children(context) });
|
|
98
138
|
};
|
|
99
|
-
Raw
|
|
139
|
+
exports.Raw = Raw;
|
|
140
|
+
exports.Raw.displayName = 'StaffMember.Raw';
|
|
100
141
|
/**
|
|
101
142
|
* Selection action component for choosing a staff member.
|
|
102
143
|
*
|
|
@@ -121,26 +162,26 @@ Raw.displayName = 'StaffMember.Raw';
|
|
|
121
162
|
* </StaffMember.Actions.Select>
|
|
122
163
|
* ```
|
|
123
164
|
*/
|
|
124
|
-
const Select =
|
|
165
|
+
const Select = react_1.default.forwardRef((props, ref) => {
|
|
125
166
|
const { asChild, children, onClick, label, className, ...rest } = props;
|
|
126
|
-
return (
|
|
167
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMember.Actions, { children: ({ select, selected, rawStaffMember }) => {
|
|
127
168
|
const handleClick = () => {
|
|
128
169
|
select();
|
|
129
170
|
if (rawStaffMember) {
|
|
130
171
|
onClick?.(rawStaffMember);
|
|
131
172
|
}
|
|
132
173
|
};
|
|
133
|
-
return (
|
|
174
|
+
return ((0, jsx_runtime_1.jsx)(react_2.AsChildSlot, { ref: ref, asChild: asChild, ...rest, className: className, "data-testid": exports.TestIds.staffMemberActionSelect, "data-selected": selected, customElement: children, customElementProps: {
|
|
134
175
|
onClick: handleClick,
|
|
135
176
|
selected,
|
|
136
177
|
staffMember: rawStaffMember,
|
|
137
|
-
}, children:
|
|
178
|
+
}, children: (0, jsx_runtime_1.jsx)("button", { onClick: handleClick, children: children || label }) }));
|
|
138
179
|
} }));
|
|
139
180
|
});
|
|
140
181
|
Select.displayName = 'StaffMember.Actions.Select';
|
|
141
182
|
/**
|
|
142
183
|
* Actions namespace for staff member-related actions
|
|
143
184
|
*/
|
|
144
|
-
|
|
185
|
+
exports.Actions = {
|
|
145
186
|
Select,
|
|
146
187
|
};
|
|
@@ -1,20 +1,59 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Actions = exports.Totals = exports.StaffMemberRepeater = exports.StaffMembers = exports.Root = exports.TestIds = void 0;
|
|
40
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
41
|
/**
|
|
3
42
|
* StaffMemberList - High-level component for displaying staff member lists
|
|
4
43
|
* Follows the pattern from LocationList.tsx
|
|
5
44
|
*
|
|
6
45
|
* @module React/StaffMemberList
|
|
7
46
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
47
|
+
const react_1 = __importDefault(require("react"));
|
|
48
|
+
const react_2 = require("@wix/headless-components/react");
|
|
49
|
+
const react_3 = require("@wix/headless-utils/react");
|
|
50
|
+
const CoreStaffMemberList = __importStar(require("../core/staff-member-list/StaffMemberList.js"));
|
|
51
|
+
const StaffMember = __importStar(require("./StaffMember.js"));
|
|
13
52
|
/** Resource type ID for staff members */
|
|
14
53
|
// ============================================================================
|
|
15
54
|
// TestIds
|
|
16
55
|
// ============================================================================
|
|
17
|
-
|
|
56
|
+
exports.TestIds = {
|
|
18
57
|
staffMemberListRoot: 'staff-member-list-root',
|
|
19
58
|
staffMemberListStaffMembers: 'staff-member-list-staff-members',
|
|
20
59
|
staffMemberListStaffMember: 'staff-member-list-staff-member',
|
|
@@ -42,25 +81,25 @@ export const TestIds = {
|
|
|
42
81
|
* }
|
|
43
82
|
* ```
|
|
44
83
|
*/
|
|
45
|
-
|
|
84
|
+
exports.Root = react_1.default.forwardRef((props, ref) => {
|
|
46
85
|
const { children, staffMemberListConfig, className, variant } = props;
|
|
47
86
|
const config = staffMemberListConfig || {
|
|
48
87
|
staffMembers: [],
|
|
49
88
|
};
|
|
50
|
-
return (
|
|
89
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMemberList.Root, { staffMemberListServiceConfig: config, children: (0, jsx_runtime_1.jsx)(RootContent, { className: className, ref: ref, variant: variant, children: children }) }));
|
|
51
90
|
});
|
|
52
|
-
Root.displayName = 'StaffMemberList.Root';
|
|
91
|
+
exports.Root.displayName = 'StaffMemberList.Root';
|
|
53
92
|
/**
|
|
54
93
|
* Internal component to handle the Root content with service access
|
|
55
94
|
*/
|
|
56
|
-
const RootContent =
|
|
95
|
+
const RootContent = react_1.default.forwardRef((props, ref) => {
|
|
57
96
|
const { children, className, variant } = props;
|
|
58
|
-
return (
|
|
97
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMemberList.StaffMembers, { children: ({ staffMembers, isLoading }) => {
|
|
59
98
|
const itemsWithId = staffMembers.map((staffMember) => ({
|
|
60
99
|
...staffMember,
|
|
61
100
|
id: staffMember.staffMemberId,
|
|
62
101
|
}));
|
|
63
|
-
return (
|
|
102
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Root, { items: itemsWithId, hasMore: false, isLoading: isLoading, className: className, ref: ref, "data-testid": exports.TestIds.staffMemberListRoot, variant: variant, children: children }));
|
|
64
103
|
} }));
|
|
65
104
|
});
|
|
66
105
|
RootContent.displayName = 'StaffMemberList.RootContent';
|
|
@@ -78,20 +117,20 @@ RootContent.displayName = 'StaffMemberList.RootContent';
|
|
|
78
117
|
* </StaffMemberList.StaffMembers>
|
|
79
118
|
* ```
|
|
80
119
|
*/
|
|
81
|
-
|
|
120
|
+
exports.StaffMembers = react_1.default.forwardRef((props, ref) => {
|
|
82
121
|
const { children, ...otherProps } = props;
|
|
83
|
-
return (
|
|
122
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Items, { ref: ref, "data-testid": exports.TestIds.staffMemberListStaffMembers, ...otherProps, children: children }));
|
|
84
123
|
});
|
|
85
|
-
StaffMembers.displayName = 'StaffMemberList.StaffMembers';
|
|
86
|
-
|
|
124
|
+
exports.StaffMembers.displayName = 'StaffMemberList.StaffMembers';
|
|
125
|
+
exports.StaffMemberRepeater = react_1.default.forwardRef((props, ref) => {
|
|
87
126
|
const { children } = props;
|
|
88
127
|
// Custom itemWrapper that wraps each item in StaffMember.Root
|
|
89
128
|
const staffMemberItemWrapper = ({ item: staffMember, children: itemChildren, }) => {
|
|
90
|
-
return (
|
|
129
|
+
return ((0, jsx_runtime_1.jsx)(StaffMember.Root, { staffMember: staffMember, "data-testid": exports.TestIds.staffMemberListStaffMember, "data-staff-member-id": staffMember.staffMemberId, "data-item-id": staffMember.staffMemberId, children: itemChildren }, staffMember.staffMemberId));
|
|
91
130
|
};
|
|
92
|
-
return (
|
|
131
|
+
return ((0, jsx_runtime_1.jsx)(react_2.GenericList.Repeater, { ref: ref, itemWrapper: staffMemberItemWrapper, children: children }));
|
|
93
132
|
});
|
|
94
|
-
StaffMemberRepeater.displayName = 'StaffMemberList.StaffMemberRepeater';
|
|
133
|
+
exports.StaffMemberRepeater.displayName = 'StaffMemberList.StaffMemberRepeater';
|
|
95
134
|
/**
|
|
96
135
|
* Displays the total count of staff members.
|
|
97
136
|
*
|
|
@@ -106,14 +145,14 @@ StaffMemberRepeater.displayName = 'StaffMemberList.StaffMemberRepeater';
|
|
|
106
145
|
* </StaffMemberList.Totals>
|
|
107
146
|
* ```
|
|
108
147
|
*/
|
|
109
|
-
|
|
148
|
+
exports.Totals = react_1.default.forwardRef((props, ref) => {
|
|
110
149
|
const { asChild, children, ...rest } = props;
|
|
111
|
-
return (
|
|
150
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMemberList.StaffMembers, { children: ({ staffMembers, hasStaffMembers }) => {
|
|
112
151
|
const count = staffMembers.length;
|
|
113
|
-
return (
|
|
152
|
+
return ((0, jsx_runtime_1.jsx)(react_3.AsChildSlot, { ref: ref, asChild: asChild, ...rest, "data-testid": exports.TestIds.staffMemberListTotals, customElement: children, customElementProps: { count, hasStaffMembers }, children: (0, jsx_runtime_1.jsx)("span", { children: count }) }));
|
|
114
153
|
} }));
|
|
115
154
|
});
|
|
116
|
-
Totals.displayName = 'StaffMemberList.Totals';
|
|
155
|
+
exports.Totals.displayName = 'StaffMemberList.Totals';
|
|
117
156
|
/**
|
|
118
157
|
* Button to clear the staff member selection.
|
|
119
158
|
* Clears the staff member resource from the BookingService.
|
|
@@ -143,22 +182,22 @@ Totals.displayName = 'StaffMemberList.Totals';
|
|
|
143
182
|
* </StaffMemberList.Actions.Clear>
|
|
144
183
|
* ```
|
|
145
184
|
*/
|
|
146
|
-
const Clear =
|
|
185
|
+
const Clear = react_1.default.forwardRef((props, ref) => {
|
|
147
186
|
const { asChild, children, className, label, onClick, ...rest } = props;
|
|
148
|
-
return (
|
|
187
|
+
return ((0, jsx_runtime_1.jsx)(CoreStaffMemberList.Actions, { children: ({ selectedStaffMember, clear }) => {
|
|
149
188
|
const handleClick = () => {
|
|
150
189
|
clear();
|
|
151
190
|
onClick?.(selectedStaffMember);
|
|
152
191
|
};
|
|
153
|
-
return (
|
|
192
|
+
return ((0, jsx_runtime_1.jsx)(react_3.AsChildSlot, { ref: ref, asChild: asChild, ...rest, className: className, "data-testid": exports.TestIds.staffMemberListActionClear, customElement: children, customElementProps: {
|
|
154
193
|
onClick: handleClick,
|
|
155
|
-
}, children:
|
|
194
|
+
}, children: (0, jsx_runtime_1.jsx)("button", { onClick: handleClick, children: children || label }) }));
|
|
156
195
|
} }));
|
|
157
196
|
});
|
|
158
197
|
Clear.displayName = 'StaffMemberList.Actions.Clear';
|
|
159
198
|
/**
|
|
160
199
|
* Actions namespace for staff member list-level actions
|
|
161
200
|
*/
|
|
162
|
-
|
|
201
|
+
exports.Actions = {
|
|
163
202
|
Clear,
|
|
164
203
|
};
|