@pisell/private-materials 6.2.35 → 6.2.37

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 (177) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +13 -29
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +6 -6
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +8 -8
  11. package/es/components/appointmentBooking/components/Content/index.js +1 -1
  12. package/es/components/appointmentBooking/components/Content/index.less +3 -3
  13. package/es/components/appointmentBooking/components/Services/index.js +2 -2
  14. package/es/components/appointmentBooking/index.js +8 -2
  15. package/es/components/booking/components/voucher/index.js +5 -0
  16. package/es/components/booking/deposit/ClientItem/index.js +1 -1
  17. package/es/components/booking/deposit/DepositItem/index.js +1 -1
  18. package/es/components/booking/forms/single/RenderValueById.d.ts +1 -0
  19. package/es/components/booking/forms/single/RenderValueById.js +68 -17
  20. package/es/components/booking/forms/single/index.less +67 -1
  21. package/es/components/booking/hooks/useQuotation.js +1 -1
  22. package/es/components/booking/info/clientVariant/utils.d.ts +2 -0
  23. package/es/components/booking/info/clientVariant/utils.js +7 -0
  24. package/es/components/booking/info/clientVariant/vertical/index.js +3 -2
  25. package/es/components/booking/info2/service/addService/utils.js +2 -1
  26. package/es/components/booking/info2/service/addTimeModal/index.js +0 -1
  27. package/es/components/booking/info2/service/editService/index.js +37 -29
  28. package/es/components/booking/info2/utilsByBooking.js +4 -4
  29. package/es/components/booking/locales.d.ts +3 -0
  30. package/es/components/booking/locales.js +6 -3
  31. package/es/components/booking/materiels/duration/index.js +1 -1
  32. package/es/components/booking/materiels/startTime/index.d.ts +1 -0
  33. package/es/components/booking/materiels/startTime/index.js +1 -1
  34. package/es/components/booking/utils.js +3 -3
  35. package/es/components/eftposPay/amount.d.ts +1 -1
  36. package/es/components/eftposPay/device.d.ts +1 -1
  37. package/es/components/eftposPay/store/index.d.ts +3 -3
  38. package/es/components/eventBooking/index.js +8 -1
  39. package/es/components/productSelect/components/TabProduct/index.js +7 -2
  40. package/es/components/schedules/utils.d.ts +1 -1
  41. package/es/components/shoppingCart/components/Cart/Product.js +2 -1
  42. package/es/components/ticketBooking/components/addServiceVariant/addService.js +172 -91
  43. package/es/components/ticketBooking/components/timeBar/index.js +3 -3
  44. package/es/components/ticketBooking/utils/index.d.ts +3 -1
  45. package/es/components/ticketBooking/utils/index.js +18 -2
  46. package/es/hooks/useWindowSize.js +8 -1
  47. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  48. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.js +29 -0
  49. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  50. package/es/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  51. package/es/plus/productSelect/CategoryTabs/index.js +171 -0
  52. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  53. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.js +37 -0
  54. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  55. package/es/plus/productSelect/ProductCard/index.d.ts +45 -0
  56. package/es/plus/productSelect/ProductCard/index.js +170 -0
  57. package/es/plus/productSelect/ProductCard/index.less +270 -0
  58. package/es/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  59. package/es/plus/productSelect/ProductList/gridComponents.js +149 -0
  60. package/es/plus/productSelect/ProductList/index.d.ts +22 -0
  61. package/es/plus/productSelect/ProductList/index.js +72 -0
  62. package/es/plus/productSelect/ProductList/index.less +0 -0
  63. package/es/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  64. package/es/plus/productSelect/components/IntersectionObserver.js +276 -0
  65. package/es/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  66. package/es/plus/productSelect/components/TabsStructure/TabsStructure.js +357 -0
  67. package/es/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  68. package/es/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  69. package/es/plus/productSelect/components/TabsStructure/hooks.js +243 -0
  70. package/es/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  71. package/es/plus/productSelect/components/TabsStructure/index.js +13 -0
  72. package/es/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  73. package/es/plus/productSelect/components/TabsStructure/styles.js +87 -0
  74. package/es/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  75. package/es/plus/productSelect/components/TabsStructure/types.js +1 -0
  76. package/es/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  77. package/es/plus/productSelect/components/TabsStructure/utils.js +56 -0
  78. package/es/plus/productSelect/components/pisellPriceText/index.d.ts +11 -0
  79. package/es/plus/productSelect/components/pisellPriceText/index.js +43 -0
  80. package/es/plus/productSelect/hooks/useToken.d.ts +18 -0
  81. package/es/plus/productSelect/hooks/useToken.js +34 -0
  82. package/es/plus/productSelect/index.d.ts +31 -0
  83. package/es/plus/productSelect/index.js +270 -0
  84. package/es/plus/productSelect/index.less +56 -0
  85. package/es/plus/productSelect/locales.d.ts +18 -0
  86. package/es/plus/productSelect/locales.js +17 -0
  87. package/es/plus/productSelect/theme/token.d.ts +17 -0
  88. package/es/plus/productSelect/theme/token.js +19 -0
  89. package/es/plus/productSelect/utils.d.ts +39 -0
  90. package/es/plus/productSelect/utils.js +162 -0
  91. package/es/pro/pisellNumberSelector/index.js +3 -3
  92. package/es/pro/pisellPhoneKeyboard/index.js +1 -1
  93. package/es/utils/index.d.ts +1 -1
  94. package/lib/components/appointmentBooking/components/Content/index.js +1 -1
  95. package/lib/components/appointmentBooking/components/Content/index.less +3 -3
  96. package/lib/components/appointmentBooking/components/Services/index.js +2 -2
  97. package/lib/components/appointmentBooking/index.js +6 -1
  98. package/lib/components/booking/components/voucher/index.js +5 -0
  99. package/lib/components/booking/deposit/ClientItem/index.js +1 -1
  100. package/lib/components/booking/deposit/DepositItem/index.js +1 -1
  101. package/lib/components/booking/forms/single/RenderValueById.d.ts +1 -0
  102. package/lib/components/booking/forms/single/RenderValueById.js +37 -9
  103. package/lib/components/booking/forms/single/index.less +67 -1
  104. package/lib/components/booking/hooks/useQuotation.js +1 -1
  105. package/lib/components/booking/info/clientVariant/utils.d.ts +2 -0
  106. package/lib/components/booking/info/clientVariant/utils.js +13 -2
  107. package/lib/components/booking/info/clientVariant/vertical/index.js +7 -6
  108. package/lib/components/booking/info2/service/addService/utils.js +3 -3
  109. package/lib/components/booking/info2/service/addTimeModal/index.js +0 -1
  110. package/lib/components/booking/info2/service/editService/index.js +22 -12
  111. package/lib/components/booking/info2/utilsByBooking.js +7 -8
  112. package/lib/components/booking/locales.d.ts +3 -0
  113. package/lib/components/booking/locales.js +6 -3
  114. package/lib/components/booking/materiels/duration/index.js +1 -1
  115. package/lib/components/booking/materiels/startTime/index.d.ts +1 -0
  116. package/lib/components/booking/materiels/startTime/index.js +1 -1
  117. package/lib/components/booking/utils.js +3 -3
  118. package/lib/components/eftposPay/amount.d.ts +1 -1
  119. package/lib/components/eftposPay/device.d.ts +1 -1
  120. package/lib/components/eftposPay/store/index.d.ts +3 -3
  121. package/lib/components/eventBooking/index.js +6 -1
  122. package/lib/components/productSelect/components/TabProduct/index.js +7 -1
  123. package/lib/components/schedules/utils.d.ts +1 -1
  124. package/lib/components/shoppingCart/components/Cart/Product.js +7 -4
  125. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +87 -14
  126. package/lib/components/ticketBooking/components/timeBar/index.js +89 -70
  127. package/lib/components/ticketBooking/utils/index.d.ts +3 -1
  128. package/lib/components/ticketBooking/utils/index.js +21 -0
  129. package/lib/hooks/useWindowSize.js +6 -1
  130. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  131. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.js +62 -0
  132. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  133. package/lib/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  134. package/lib/plus/productSelect/CategoryTabs/index.js +183 -0
  135. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  136. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.js +58 -0
  137. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  138. package/lib/plus/productSelect/ProductCard/index.d.ts +45 -0
  139. package/lib/plus/productSelect/ProductCard/index.js +184 -0
  140. package/lib/plus/productSelect/ProductCard/index.less +270 -0
  141. package/lib/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  142. package/lib/plus/productSelect/ProductList/gridComponents.js +148 -0
  143. package/lib/plus/productSelect/ProductList/index.d.ts +22 -0
  144. package/lib/plus/productSelect/ProductList/index.js +86 -0
  145. package/lib/plus/productSelect/ProductList/index.less +0 -0
  146. package/lib/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  147. package/lib/plus/productSelect/components/IntersectionObserver.js +269 -0
  148. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  149. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.js +393 -0
  150. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  151. package/lib/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  152. package/lib/plus/productSelect/components/TabsStructure/hooks.js +209 -0
  153. package/lib/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  154. package/lib/plus/productSelect/components/TabsStructure/index.js +92 -0
  155. package/lib/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  156. package/lib/plus/productSelect/components/TabsStructure/styles.js +122 -0
  157. package/lib/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  158. package/lib/plus/productSelect/components/TabsStructure/types.js +17 -0
  159. package/lib/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  160. package/lib/plus/productSelect/components/TabsStructure/utils.js +72 -0
  161. package/lib/plus/productSelect/components/pisellPriceText/index.d.ts +11 -0
  162. package/lib/plus/productSelect/components/pisellPriceText/index.js +72 -0
  163. package/lib/plus/productSelect/hooks/useToken.d.ts +18 -0
  164. package/lib/plus/productSelect/hooks/useToken.js +50 -0
  165. package/lib/plus/productSelect/index.d.ts +31 -0
  166. package/lib/plus/productSelect/index.js +299 -0
  167. package/lib/plus/productSelect/index.less +56 -0
  168. package/lib/plus/productSelect/locales.d.ts +18 -0
  169. package/lib/plus/productSelect/locales.js +41 -0
  170. package/lib/plus/productSelect/theme/token.d.ts +17 -0
  171. package/lib/plus/productSelect/theme/token.js +47 -0
  172. package/lib/plus/productSelect/utils.d.ts +39 -0
  173. package/lib/plus/productSelect/utils.js +138 -0
  174. package/lib/pro/pisellNumberSelector/index.js +3 -3
  175. package/lib/pro/pisellPhoneKeyboard/index.js +1 -1
  176. package/lib/utils/index.d.ts +1 -1
  177. package/package.json +4 -4
@@ -78,86 +78,105 @@ var TimeBar = (props) => {
78
78
  });
79
79
  return (0, import_react.useMemo)(() => {
80
80
  var _a2, _b2, _c, _d;
81
- return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-ticket-booking-time-bar", style: { backgroundColor: state.isDateChange ? "#F79009" : "" } }, /* @__PURE__ */ import_react.default.createElement(
82
- import_antd.Button,
83
- {
84
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.LeftOutlined, null),
85
- onClick: _onClickPre,
86
- size: "large"
87
- }
88
- ), /* @__PURE__ */ import_react.default.createElement(
89
- import_antd.Button,
90
- {
91
- onClick: _onClickToday,
92
- size: "large",
93
- style: state.intervalSetTime ? { background: "#000", color: "#fff" } : void 0
94
- },
95
- import_utils.locales.getText("pisell2.ticket-booking.today")
96
- ), /* @__PURE__ */ import_react.default.createElement(
81
+ return /* @__PURE__ */ import_react.default.createElement(
97
82
  "div",
98
83
  {
99
- className: (0, import_classnames.default)({
100
- "booking-page-date-picker-select": state.isDateChange
101
- }),
102
- style: { width: 200, flexShrink: 0 }
84
+ className: "pisell-ticket-booking-time-bar",
85
+ style: { backgroundColor: state.isDateChange ? "#F79009" : "" }
103
86
  },
104
87
  /* @__PURE__ */ import_react.default.createElement(
105
- import_materials.DatePicker,
88
+ import_antd.Button,
89
+ {
90
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.LeftOutlined, null),
91
+ onClick: _onClickPre,
92
+ size: "large"
93
+ }
94
+ ),
95
+ /* @__PURE__ */ import_react.default.createElement(
96
+ import_antd.Button,
106
97
  {
107
- inputReadOnly: true,
108
- value: (_b2 = (_a2 = state == null ? void 0 : state.modalState) == null ? void 0 : _a2.date) == null ? void 0 : _b2.value,
109
- format: locale === "en" ? "dddd, DD MMM YYYY" : "YYYY年MM月DD日",
110
- onChange: props == null ? void 0 : props.onDateChange,
98
+ onClick: _onClickToday,
111
99
  size: "large",
112
- style: { width: "100%" }
100
+ style: state.intervalSetTime ? { background: "#000", color: "#fff" } : void 0
101
+ },
102
+ import_utils.locales.getText("pisell2.ticket-booking.today")
103
+ ),
104
+ /* @__PURE__ */ import_react.default.createElement(
105
+ "div",
106
+ {
107
+ className: (0, import_classnames.default)({
108
+ "booking-page-date-picker-select": state.isDateChange
109
+ }),
110
+ style: { width: 200, flexShrink: 0 }
111
+ },
112
+ /* @__PURE__ */ import_react.default.createElement(
113
+ import_materials.DatePicker,
114
+ {
115
+ inputReadOnly: true,
116
+ value: (_b2 = (_a2 = state == null ? void 0 : state.modalState) == null ? void 0 : _a2.date) == null ? void 0 : _b2.value,
117
+ format: locale === "en" ? "dddd, DD MMM YYYY" : "YYYY年MM月DD日",
118
+ onChange: props == null ? void 0 : props.onDateChange,
119
+ size: "large",
120
+ style: { width: "100%" }
121
+ }
122
+ )
123
+ ),
124
+ /* @__PURE__ */ import_react.default.createElement(
125
+ import_antd.Button,
126
+ {
127
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.RightOutlined, null),
128
+ onClick: _onClickNext,
129
+ size: "large"
113
130
  }
114
- )
115
- ), /* @__PURE__ */ import_react.default.createElement(
116
- import_antd.Button,
117
- {
118
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.RightOutlined, null),
119
- onClick: _onClickNext,
120
- size: "large"
121
- }
122
- ), /* @__PURE__ */ import_react.default.createElement(
123
- "div",
124
- {
125
- className: (0, import_classnames.default)({
126
- "booking-page-date-picker-select": state.isTimeChange
127
- })
128
- },
131
+ ),
129
132
  /* @__PURE__ */ import_react.default.createElement(
130
- import_materials.SelectTime,
133
+ "div",
134
+ {
135
+ className: (0, import_classnames.default)({
136
+ "booking-page-date-picker-select": state.isTimeChange
137
+ })
138
+ },
139
+ /* @__PURE__ */ import_react.default.createElement(
140
+ import_materials.SelectTime,
141
+ {
142
+ value: (_d = (_c = state == null ? void 0 : state.modalState) == null ? void 0 : _c.date) == null ? void 0 : _d.value.format("HH:mm"),
143
+ onChange: _onDateTimeChange,
144
+ popoverProps: {
145
+ style: { zoom: 0.8 }
146
+ },
147
+ timePickerProps: {},
148
+ timeProps: {},
149
+ slice: 5
150
+ }
151
+ )
152
+ ),
153
+ !state.bookingId && /* @__PURE__ */ import_react.default.createElement(
154
+ import_antd.Button,
131
155
  {
132
- value: (_d = (_c = state == null ? void 0 : state.modalState) == null ? void 0 : _c.date) == null ? void 0 : _d.value.format("HH:mm"),
133
- onChange: _onDateTimeChange,
134
- popoverProps: {
135
- style: { zoom: 0.8 }
156
+ onClick: _onClickNow,
157
+ size: "large",
158
+ style: state.intervalSetTime ? { background: "#000", color: "#fff" } : void 0
159
+ },
160
+ import_utils.locales.getText("pisell2.ticket-booking.now")
161
+ ),
162
+ !!state.bookingId && /* @__PURE__ */ import_react.default.createElement(
163
+ import_antd.Button,
164
+ {
165
+ onClick: () => {
166
+ onCreateClick();
136
167
  },
137
- timePickerProps: {},
138
- timeProps: {},
139
- slice: 5
140
- }
141
- )
142
- ), !state.bookingId && /* @__PURE__ */ import_react.default.createElement(
143
- import_antd.Button,
144
- {
145
- onClick: _onClickNow,
146
- size: "large",
147
- style: state.intervalSetTime ? { background: "#000", color: "#fff" } : void 0
148
- },
149
- import_utils.locales.getText("pisell2.ticket-booking.now")
150
- ), !!state.bookingId && /* @__PURE__ */ import_react.default.createElement(
151
- import_antd.Button,
152
- {
153
- onClick: () => {
154
- onCreateClick();
168
+ size: "large",
169
+ type: "primary"
155
170
  },
156
- size: "large",
157
- type: "primary"
158
- },
159
- import_utils.locales.getText("pisell2.ticket-booking.create-new")
160
- ));
161
- }, [(_b = (_a = state.modalState) == null ? void 0 : _a.date) == null ? void 0 : _b.value, state.intervalSetTime, state.isTimeChange, state.isDateChange, locale, state.bookingId]);
171
+ import_utils.locales.getText("pisell2.ticket-booking.create-new")
172
+ )
173
+ );
174
+ }, [
175
+ (_b = (_a = state.modalState) == null ? void 0 : _a.date) == null ? void 0 : _b.value,
176
+ state.intervalSetTime,
177
+ state.isTimeChange,
178
+ state.isDateChange,
179
+ locale
180
+ ]);
162
181
  };
163
182
  var timeBar_default = TimeBar;
@@ -14,6 +14,7 @@ export declare const restoreProductOtherData: (data: any) => {
14
14
  product_variant_id: any;
15
15
  quantity: number;
16
16
  } | undefined;
17
+ export declare const isSameProduct: (a: any, b: any) => boolean;
17
18
  export declare const addService: (list: any[], addItem: any, state: any) => {
18
19
  list: any[];
19
20
  quantity: any;
@@ -40,7 +41,7 @@ declare type ScanData = {
40
41
  };
41
42
  };
42
43
  export declare const formatScanCustomer: (data: ScanData) => {
43
- searchType: "customer" | "wallet" | "product" | "walletPass" | "local_product";
44
+ searchType: "customer" | "product" | "wallet" | "walletPass" | "local_product";
44
45
  data: any;
45
46
  scanCode: string;
46
47
  } | null;
@@ -57,4 +58,5 @@ export declare const formatScanGlobal: (data: ScanData) => {
57
58
  data: any;
58
59
  scanCode: string;
59
60
  } | null | undefined;
61
+ export declare const createSimpleCacheItem: (item: any, e: any, state: any) => any;
60
62
  export {};
@@ -31,6 +31,7 @@ var utils_exports = {};
31
31
  __export(utils_exports, {
32
32
  addService: () => addService,
33
33
  addServiceScroll: () => addServiceScroll,
34
+ createSimpleCacheItem: () => createSimpleCacheItem,
34
35
  formatBookingList: () => formatBookingList,
35
36
  formatDateToStr: () => formatDateToStr,
36
37
  formatHolder: () => formatHolder,
@@ -45,6 +46,7 @@ __export(utils_exports, {
45
46
  getIsParallelResourcesBooking: () => getIsParallelResourcesBooking,
46
47
  getIsShowNumber: () => getIsShowNumber,
47
48
  getNextTimeSlice: () => getNextTimeSlice,
49
+ isSameProduct: () => isSameProduct,
48
50
  restoreProductOtherData: () => restoreProductOtherData
49
51
  });
50
52
  module.exports = __toCommonJS(utils_exports);
@@ -279,10 +281,28 @@ var formatScanGlobal = (data) => {
279
281
  return { searchType, data: resultData, scanCode };
280
282
  }
281
283
  };
284
+ var createSimpleCacheItem = (item, e, state) => {
285
+ let cacheItem = {
286
+ ...item,
287
+ product_id: item.id,
288
+ _id: (0, import_utils2.getUniqueId)(),
289
+ _key: e.key,
290
+ _extend: {
291
+ start_date: state.date.value,
292
+ quantity: (e == null ? void 0 : e.quantity) || 1,
293
+ price: item.price,
294
+ product_name: item.title,
295
+ other: e
296
+ },
297
+ new: 1
298
+ };
299
+ return cacheItem;
300
+ };
282
301
  // Annotate the CommonJS export names for ESM import in node:
283
302
  0 && (module.exports = {
284
303
  addService,
285
304
  addServiceScroll,
305
+ createSimpleCacheItem,
286
306
  formatBookingList,
287
307
  formatDateToStr,
288
308
  formatHolder,
@@ -297,5 +317,6 @@ var formatScanGlobal = (data) => {
297
317
  getIsParallelResourcesBooking,
298
318
  getIsShowNumber,
299
319
  getNextTimeSlice,
320
+ isSameProduct,
300
321
  restoreProductOtherData
301
322
  });
@@ -30,7 +30,12 @@ var useWindowSize = (options = {}) => {
30
30
  (0, import_react.useEffect)(() => {
31
31
  let timeoutId;
32
32
  const setRealVH = () => {
33
- const vh = window.innerHeight * 0.01;
33
+ let height = window.innerHeight;
34
+ const urlParams = new URLSearchParams(window.location.search);
35
+ if (urlParams.has("formTabbar")) {
36
+ height = height - 54;
37
+ }
38
+ const vh = height * 0.01;
34
39
  document.documentElement.style.setProperty("--vh", `${vh}px`);
35
40
  };
36
41
  const debouncedHandleResize = () => {
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import './CategorySkeleton.less';
3
+ interface CategorySkeletonProps {
4
+ className?: string;
5
+ style?: React.CSSProperties;
6
+ tabCount?: number;
7
+ animated?: boolean;
8
+ }
9
+ declare const CategorySkeleton: React.FC<CategorySkeletonProps>;
10
+ export default CategorySkeleton;
@@ -0,0 +1,62 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/plus/productSelect/CategoryTabs/CategorySkeleton.tsx
30
+ var CategorySkeleton_exports = {};
31
+ __export(CategorySkeleton_exports, {
32
+ default: () => CategorySkeleton_default
33
+ });
34
+ module.exports = __toCommonJS(CategorySkeleton_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_classnames = __toESM(require("classnames"));
37
+ var import_CategorySkeleton = require("./CategorySkeleton.less");
38
+ var CategorySkeleton = ({
39
+ className,
40
+ style,
41
+ tabCount = 5,
42
+ animated = true
43
+ }) => {
44
+ const containerClass = (0, import_classnames.default)(
45
+ "category-skeleton",
46
+ {
47
+ "category-skeleton--animated": animated
48
+ },
49
+ className
50
+ );
51
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: containerClass, style }, Array.from({ length: tabCount }, (_, index) => /* @__PURE__ */ import_react.default.createElement(
52
+ "div",
53
+ {
54
+ key: index,
55
+ className: "category-skeleton__tab",
56
+ style: {
57
+ width: `${Math.floor(Math.random() * 40) + 80}px`
58
+ }
59
+ }
60
+ )));
61
+ };
62
+ var CategorySkeleton_default = CategorySkeleton;
@@ -0,0 +1,30 @@
1
+ .category-skeleton {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 8px;
5
+ padding: 16px 12px;
6
+
7
+ &__tab {
8
+ height: 32px;
9
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
10
+ background-size: 200% 100%;
11
+ border-radius: 20px;
12
+ flex-shrink: 0;
13
+ height: 40px;
14
+ }
15
+
16
+ &--animated {
17
+ .category-skeleton__tab {
18
+ animation: skeleton-loading 1.5s ease-in-out infinite;
19
+ }
20
+ }
21
+ }
22
+
23
+ @keyframes skeleton-loading {
24
+ 0% {
25
+ background-position: 200% 0;
26
+ }
27
+ 100% {
28
+ background-position: -200% 0;
29
+ }
30
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import '../components/TabsStructure/TabsStructure.less';
3
+ import CategorySkeleton from './CategorySkeleton';
4
+ declare type TabItem = {
5
+ key: string;
6
+ label: React.ReactNode;
7
+ icon?: React.ReactNode;
8
+ };
9
+ interface IProps {
10
+ items: TabItem[];
11
+ activeKey: string;
12
+ onChange: (key: string) => void;
13
+ loading?: boolean;
14
+ skeleton?: React.ReactNode;
15
+ }
16
+ declare const CategoryTabs: React.ForwardRefExoticComponent<IProps & React.RefAttributes<unknown>>;
17
+ export default CategoryTabs;
18
+ export { CategorySkeleton };
@@ -0,0 +1,183 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/plus/productSelect/CategoryTabs/index.tsx
30
+ var CategoryTabs_exports = {};
31
+ __export(CategoryTabs_exports, {
32
+ CategorySkeleton: () => import_CategorySkeleton.default,
33
+ default: () => CategoryTabs_default
34
+ });
35
+ module.exports = __toCommonJS(CategoryTabs_exports);
36
+ var import_react = __toESM(require("react"));
37
+ var import_IntersectionObserver = __toESM(require("../components/IntersectionObserver"));
38
+ var import_TabsStructure = require("../components/TabsStructure");
39
+ var import_TabsStructure2 = require("../components/TabsStructure/TabsStructure.less");
40
+ var import_CategorySkeleton = __toESM(require("./CategorySkeleton"));
41
+ var import__ = require("../index");
42
+ var CategoryTabs = (0, import_react.forwardRef)((props, ref) => {
43
+ const { items, activeKey, onChange, loading = false, skeleton } = props;
44
+ const railRef = (0, import_react.useRef)(null);
45
+ const [isAtStart, setIsAtStart] = (0, import_react.useState)(true);
46
+ const [isAtEnd, setIsAtEnd] = (0, import_react.useState)(false);
47
+ const [needsScrollButtons, setNeedsScrollButtons] = (0, import_react.useState)(false);
48
+ const scrollLeft = (0, import_react.useCallback)(() => {
49
+ if (!railRef.current) return;
50
+ const container = railRef.current;
51
+ const scrollAmount = container.clientWidth * 0.8;
52
+ const newPosition = Math.max(0, container.scrollLeft - scrollAmount);
53
+ container.scrollTo({ left: newPosition, behavior: "smooth" });
54
+ }, []);
55
+ const scrollRight = (0, import_react.useCallback)(() => {
56
+ if (!railRef.current) return;
57
+ const container = railRef.current;
58
+ const scrollAmount = container.clientWidth * 0.8;
59
+ const maxScroll = container.scrollWidth - container.clientWidth;
60
+ const newPosition = Math.min(
61
+ maxScroll,
62
+ container.scrollLeft + scrollAmount
63
+ );
64
+ container.scrollTo({ left: newPosition, behavior: "smooth" });
65
+ }, []);
66
+ (0, import_react.useEffect)(() => {
67
+ const updateScrollButtonsVisibility = () => {
68
+ if (railRef.current) {
69
+ const { scrollWidth, clientWidth } = railRef.current;
70
+ console.log("检测滚动按钮需求:", {
71
+ scrollWidth,
72
+ clientWidth,
73
+ needsScroll: scrollWidth > clientWidth
74
+ });
75
+ setNeedsScrollButtons(scrollWidth > clientWidth);
76
+ }
77
+ };
78
+ let resizeObserver = null;
79
+ const timer = setTimeout(() => {
80
+ const container = railRef.current;
81
+ if (!container) {
82
+ console.log("容器未找到,跳过滚动按钮检测");
83
+ return;
84
+ }
85
+ updateScrollButtonsVisibility();
86
+ resizeObserver = new ResizeObserver(updateScrollButtonsVisibility);
87
+ resizeObserver.observe(container);
88
+ }, 100);
89
+ return () => {
90
+ clearTimeout(timer);
91
+ if (resizeObserver) {
92
+ resizeObserver.disconnect();
93
+ }
94
+ };
95
+ }, [items]);
96
+ const { selectionIndicatorProps, listContainerProps } = (0, import_TabsStructure.useSelectionIndicator)(
97
+ railRef,
98
+ activeKey || ""
99
+ );
100
+ if (loading && skeleton) {
101
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, skeleton);
102
+ }
103
+ return /* @__PURE__ */ import_react.default.createElement(import_IntersectionObserver.default, null, items.length > 0 && /* @__PURE__ */ import_react.default.createElement("div", { className: `${import__.PREFIX}__tabs-wrapper` }, /* @__PURE__ */ import_react.default.createElement(
104
+ import_TabsStructure.TabsStructure,
105
+ {
106
+ variant: "pill",
107
+ backgroundVariant: "onPage",
108
+ selectedTab: activeKey
109
+ },
110
+ needsScrollButtons && /* @__PURE__ */ import_react.default.createElement(
111
+ import_TabsStructure.TabsStructure.ChevronButton,
112
+ {
113
+ direction: "prev",
114
+ disabled: isAtStart,
115
+ onClick: scrollLeft,
116
+ style: { marginRight: "8px" }
117
+ }
118
+ ),
119
+ /* @__PURE__ */ import_react.default.createElement(import_TabsStructure.TabsStructure.Rail, { ref: railRef }, /* @__PURE__ */ import_react.default.createElement(
120
+ import_IntersectionObserver.IntersectionTrigger,
121
+ {
122
+ onShow: () => {
123
+ console.log("is start");
124
+ setIsAtStart(true);
125
+ },
126
+ onHide: () => {
127
+ console.log("is start false");
128
+ setIsAtStart(false);
129
+ },
130
+ style: {
131
+ width: 1,
132
+ height: 1,
133
+ flexShrink: 0,
134
+ background: "rgba(0,0,0,0)"
135
+ },
136
+ className: "visibility-detector start-detector"
137
+ }
138
+ ), /* @__PURE__ */ import_react.default.createElement(import_TabsStructure.TabsStructure.SelectionIndicator, { ...selectionIndicatorProps }), /* @__PURE__ */ import_react.default.createElement(import_TabsStructure.TabsStructure.ListContainer, { ...listContainerProps }, items.map((item) => /* @__PURE__ */ import_react.default.createElement(
139
+ import_TabsStructure.TabsStructure.Item,
140
+ {
141
+ key: item.key,
142
+ tabId: item.key,
143
+ "aria-selected": activeKey === item.key,
144
+ onClick: () => onChange(item.key),
145
+ className: "tab-item"
146
+ },
147
+ item.label
148
+ ))), /* @__PURE__ */ import_react.default.createElement(
149
+ import_IntersectionObserver.IntersectionTrigger,
150
+ {
151
+ className: "visibility-detector end-detector",
152
+ onShow: () => {
153
+ console.log("is end");
154
+ setIsAtEnd(true);
155
+ },
156
+ onHide: () => {
157
+ console.log("is end false");
158
+ setIsAtEnd(false);
159
+ },
160
+ style: {
161
+ width: 1,
162
+ height: 1,
163
+ flexShrink: 0,
164
+ background: "rgba(0,0,0,0)"
165
+ }
166
+ }
167
+ )),
168
+ needsScrollButtons && /* @__PURE__ */ import_react.default.createElement(
169
+ import_TabsStructure.TabsStructure.ChevronButton,
170
+ {
171
+ direction: "next",
172
+ disabled: isAtEnd,
173
+ onClick: scrollRight,
174
+ style: { marginLeft: "8px" }
175
+ }
176
+ )
177
+ )));
178
+ });
179
+ var CategoryTabs_default = CategoryTabs;
180
+ // Annotate the CommonJS export names for ESM import in node:
181
+ 0 && (module.exports = {
182
+ CategorySkeleton
183
+ });
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface ProductCardSkeletonProps {
3
+ className?: string;
4
+ style?: React.CSSProperties;
5
+ isProductCover?: boolean;
6
+ item?: any;
7
+ index?: number;
8
+ }
9
+ declare const ProductCardSkeleton: React.FC<ProductCardSkeletonProps>;
10
+ export default ProductCardSkeleton;
@@ -0,0 +1,58 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/plus/productSelect/ProductCard/ProductCardSkeleton.tsx
30
+ var ProductCardSkeleton_exports = {};
31
+ __export(ProductCardSkeleton_exports, {
32
+ default: () => ProductCardSkeleton_default
33
+ });
34
+ module.exports = __toCommonJS(ProductCardSkeleton_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_classnames = __toESM(require("classnames"));
37
+ var import_antd = require("antd");
38
+ var import__ = require("../index");
39
+ var ProductCardSkeleton = ({
40
+ className,
41
+ style,
42
+ isProductCover = true,
43
+ item
44
+ }) => {
45
+ if ((item == null ? void 0 : item.__typename) === "category") {
46
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.Skeleton.Input, { active: true, size: "small", block: false });
47
+ }
48
+ return /* @__PURE__ */ import_react.default.createElement(
49
+ "div",
50
+ {
51
+ className: (0, import_classnames.default)(`${import__.PREFIX}__product-card`, className),
52
+ style
53
+ },
54
+ isProductCover && /* @__PURE__ */ import_react.default.createElement(import_antd.Skeleton.Image, { active: true, style: { width: 180, height: 126 } }),
55
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Skeleton, { active: true, paragraph: { rows: 2 } })
56
+ );
57
+ };
58
+ var ProductCardSkeleton_default = ProductCardSkeleton;