@pisell/materials 6.11.27 → 6.11.29
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/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +8 -8
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +16 -16
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +16 -16
- package/es/components/Pagination/index.d.ts +1 -0
- package/es/components/PisellBasicGrid/PisellBasicGrid.d.ts +1 -0
- package/es/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +1 -0
- package/es/components/PisellCards/components/PisellImageCard/PisellImageCard.d.ts +1 -0
- package/es/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +1 -0
- package/es/components/PisellCards/components/TabCard/TabCard.d.ts +1 -0
- package/es/components/PisellCards/components/TextCard/TextCard.d.ts +1 -0
- package/es/components/appVersionControl/index.d.ts +0 -1
- package/es/components/config-provider/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceForm/formItem.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceTable/filter/utils.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceWrapper/index.d.ts +1 -0
- package/es/components/dataSourceComponents/fields/Input.Json/ReadPretty.d.ts +1 -0
- package/es/components/dataSourceComponents/fields/Input.Password/ReadPretty.d.ts +1 -0
- package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -0
- package/es/components/dataSourceComponents/fields/Upload/ReadPretty.d.ts +1 -0
- package/es/components/dataSourceComponents/fields/index.d.ts +8 -7
- package/es/components/date-picker/datePickerCpt.d.ts +1 -0
- package/es/components/date-picker/index.d.ts +1 -0
- package/es/components/filter/index.d.ts +1 -0
- package/es/components/list/index.d.ts +1 -0
- package/es/components/lowCodePage/index.d.ts +1 -0
- package/es/components/page/index.d.ts +0 -1
- package/es/components/pisellDataSourceContainer/PisellDataSourceContainer.d.ts +1 -0
- package/es/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +1 -0
- package/es/components/pisellFilter/index.d.ts +0 -1
- package/es/components/pisellGridPro/GridView/index.d.ts +1 -0
- package/es/components/pisellGridPro/components/DataCard/index.d.ts +1 -0
- package/es/components/pisellInput/index.d.ts +0 -1
- package/es/components/pisellLoading/index.d.ts +1 -0
- package/es/components/pisellModal/components/IpadModal/index.d.ts +1 -0
- package/es/components/pisellModal/components/MobileModal/index.d.ts +1 -0
- package/es/components/pisellModal/components/index.d.ts +1 -0
- package/es/components/pisellRecordBoard/PisellRecordBoard.js +8 -5
- package/es/components/pisellRecordBoard/index.d.ts +7 -2
- package/es/components/pisellRecordBoard/index.js +4 -2
- package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +323 -312
- package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +18 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +13 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +37 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +9 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +157 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.d.ts +8 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.js +9 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +14 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +513 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallMarquee.less +52 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +14 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +82 -0
- package/es/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +5 -2
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +58 -19
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +5 -3
- package/es/components/pisellRecordBoard/shellFrame/index.d.ts +4 -3
- package/es/components/pisellRecordBoard/shellFrame/index.js +49 -11
- package/es/components/pisellRecordBoard/types.d.ts +78 -2
- package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +5 -2
- package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +18 -0
- package/es/components/pisellReservationSchedule/locales.d.ts +43 -0
- package/es/components/pisellReservationSchedule/types.d.ts +52 -0
- package/es/components/pisellReservationScheduleBand/types.d.ts +61 -0
- package/es/components/pisellSort/index.d.ts +1 -0
- package/es/components/pisellTimeNavigator/utils/index.d.ts +41 -0
- package/es/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
- package/es/components/productCard/components/AmountFooter/index.d.ts +1 -0
- package/es/components/productCard/components/MultiDay/index.d.ts +1 -0
- package/es/components/productCard/components/Note/index.d.ts +1 -0
- package/es/components/productCard/components/Packages/components/collapsibleList/utils.d.ts +1 -0
- package/es/components/productCard/components/Packages/components/options/index.d.ts +1 -0
- package/es/components/productCard/components/Packages/index.d.ts +1 -0
- package/es/components/productCard/components/Time/components/SelectResource/index.d.ts +1 -0
- package/es/components/productCard/components/Time/index.d.ts +1 -0
- package/es/components/qrcode/index.d.ts +1 -0
- package/es/components/select-time/index.d.ts +0 -1
- package/es/components/table/Actions/component/ColumnsSetting/index.d.ts +1 -0
- package/es/components/table/Actions/component/ExportImport/index.d.ts +1 -0
- package/es/components/table/Actions/component/GallerySetting/index.d.ts +1 -0
- package/es/components/table/Actions/component/Group/index.d.ts +1 -0
- package/es/components/table/Actions/index.d.ts +1 -0
- package/es/components/table/BasicTable/index.d.ts +1 -0
- package/es/components/table/Gallery/components/GalleryItem/components/Cover/index.d.ts +1 -0
- package/es/components/table/Gallery/components/GalleryItem/components/RenderFields/index.d.ts +1 -0
- package/es/components/table/Gallery/components/GalleryItem/components/Title/index.d.ts +1 -0
- package/es/components/table/Table/SelectField/index.d.ts +1 -0
- package/es/components/table/Table/fields/date/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/date/index.d.ts +1 -0
- package/es/components/table/Table/fields/image/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/index.d.ts +1 -0
- package/es/components/table/Table/fields/link/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/number/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/number/index.d.ts +1 -0
- package/es/components/table/Table/fields/numberRange/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/numberRange/index.d.ts +1 -0
- package/es/components/table/Table/fields/oldRangePicker/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/oldRangePicker/index.d.ts +1 -0
- package/es/components/table/Table/fields/pSwitch/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/rangePicker/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/rangePicker/index.d.ts +1 -0
- package/es/components/table/Table/fields/search/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/search/index.d.ts +1 -0
- package/es/components/table/Table/fields/select/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/select/index.d.ts +1 -0
- package/es/components/table/Table/fields/text/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/text/index.d.ts +1 -0
- package/es/components/table/Table/fields/treeSelect/Show/index.d.ts +1 -0
- package/es/components/table/Table/fields/treeSelect/index.d.ts +1 -0
- package/es/components/table/Table/tableConfig/SortRow/index.d.ts +1 -0
- package/es/components/table/Table/utils.d.ts +1 -1
- package/es/components/table/View/index.d.ts +1 -0
- package/es/components/virtual-keyboard/Amount/index.d.ts +1 -0
- package/es/index.d.ts +2 -1
- package/es/index.js +1 -0
- package/es/locales/en-US.d.ts +389 -0
- package/es/locales/en-US.js +1 -0
- package/es/locales/ja.d.ts +358 -0
- package/es/locales/ja.js +1 -0
- package/es/locales/pt.d.ts +358 -0
- package/es/locales/pt.js +1 -0
- package/es/locales/zh-CN.d.ts +384 -0
- package/es/locales/zh-CN.js +1 -0
- package/es/locales/zh-TW.d.ts +384 -0
- package/es/locales/zh-TW.js +1 -0
- package/es/pisell-materials.tw.css +1 -1
- package/lib/components/Pagination/index.d.ts +1 -0
- package/lib/components/PisellBasicGrid/PisellBasicGrid.d.ts +1 -0
- package/lib/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +1 -0
- package/lib/components/PisellCards/components/PisellImageCard/PisellImageCard.d.ts +1 -0
- package/lib/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +1 -0
- package/lib/components/PisellCards/components/TabCard/TabCard.d.ts +1 -0
- package/lib/components/PisellCards/components/TextCard/TextCard.d.ts +1 -0
- package/lib/components/appVersionControl/index.d.ts +0 -1
- package/lib/components/config-provider/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceForm/formItem.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceTable/filter/utils.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDrawerState.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceWrapper/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/fields/Input.Json/ReadPretty.d.ts +1 -0
- package/lib/components/dataSourceComponents/fields/Input.Password/ReadPretty.d.ts +1 -0
- package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/fields/Upload/ReadPretty.d.ts +1 -0
- package/lib/components/dataSourceComponents/fields/index.d.ts +8 -7
- package/lib/components/date-picker/datePickerCpt.d.ts +1 -0
- package/lib/components/date-picker/index.d.ts +1 -0
- package/lib/components/filter/index.d.ts +1 -0
- package/lib/components/list/index.d.ts +1 -0
- package/lib/components/lowCodePage/index.d.ts +1 -0
- package/lib/components/page/index.d.ts +0 -1
- package/lib/components/pisellDataSourceContainer/PisellDataSourceContainer.d.ts +1 -0
- package/lib/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +1 -0
- package/lib/components/pisellFilter/index.d.ts +0 -1
- package/lib/components/pisellGridPro/GridView/index.d.ts +1 -0
- package/lib/components/pisellGridPro/components/DataCard/index.d.ts +1 -0
- package/lib/components/pisellInput/index.d.ts +0 -1
- package/lib/components/pisellLoading/index.d.ts +1 -0
- package/lib/components/pisellModal/components/IpadModal/index.d.ts +1 -0
- package/lib/components/pisellModal/components/MobileModal/index.d.ts +1 -0
- package/lib/components/pisellModal/components/index.d.ts +1 -0
- package/lib/components/pisellRecordBoard/PisellRecordBoard.js +8 -3
- package/lib/components/pisellRecordBoard/index.d.ts +7 -2
- package/lib/components/pisellRecordBoard/index.js +4 -0
- package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +142 -215
- package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +18 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +13 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +60 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +9 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +163 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.d.ts +8 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/RecordBoardResourceWall.js +27 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +14 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +636 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallMarquee.less +52 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +14 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +110 -0
- package/lib/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +5 -2
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +45 -14
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +5 -3
- package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +4 -3
- package/lib/components/pisellRecordBoard/shellFrame/index.js +57 -7
- package/lib/components/pisellRecordBoard/types.d.ts +78 -2
- package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +5 -2
- package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +18 -0
- package/lib/components/pisellReservationSchedule/locales.d.ts +43 -0
- package/lib/components/pisellReservationSchedule/types.d.ts +52 -0
- package/lib/components/pisellReservationScheduleBand/types.d.ts +61 -0
- package/lib/components/pisellSort/index.d.ts +1 -0
- package/lib/components/pisellTimeNavigator/utils/index.d.ts +41 -0
- package/lib/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
- package/lib/components/productCard/components/AmountFooter/index.d.ts +1 -0
- package/lib/components/productCard/components/MultiDay/index.d.ts +1 -0
- package/lib/components/productCard/components/Note/index.d.ts +1 -0
- package/lib/components/productCard/components/Packages/components/collapsibleList/utils.d.ts +1 -0
- package/lib/components/productCard/components/Packages/components/options/index.d.ts +1 -0
- package/lib/components/productCard/components/Packages/index.d.ts +1 -0
- package/lib/components/productCard/components/Time/components/SelectResource/index.d.ts +1 -0
- package/lib/components/productCard/components/Time/index.d.ts +1 -0
- package/lib/components/qrcode/index.d.ts +1 -0
- package/lib/components/select-time/index.d.ts +0 -1
- package/lib/components/table/Actions/component/ColumnsSetting/index.d.ts +1 -0
- package/lib/components/table/Actions/component/ExportImport/index.d.ts +1 -0
- package/lib/components/table/Actions/component/GallerySetting/index.d.ts +1 -0
- package/lib/components/table/Actions/component/Group/index.d.ts +1 -0
- package/lib/components/table/Actions/index.d.ts +1 -0
- package/lib/components/table/BasicTable/index.d.ts +1 -0
- package/lib/components/table/Gallery/components/GalleryItem/components/Cover/index.d.ts +1 -0
- package/lib/components/table/Gallery/components/GalleryItem/components/RenderFields/index.d.ts +1 -0
- package/lib/components/table/Gallery/components/GalleryItem/components/Title/index.d.ts +1 -0
- package/lib/components/table/Table/SelectField/index.d.ts +1 -0
- package/lib/components/table/Table/fields/date/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/date/index.d.ts +1 -0
- package/lib/components/table/Table/fields/image/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/index.d.ts +1 -0
- package/lib/components/table/Table/fields/link/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/number/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/number/index.d.ts +1 -0
- package/lib/components/table/Table/fields/numberRange/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/numberRange/index.d.ts +1 -0
- package/lib/components/table/Table/fields/oldRangePicker/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/oldRangePicker/index.d.ts +1 -0
- package/lib/components/table/Table/fields/pSwitch/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/rangePicker/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/rangePicker/index.d.ts +1 -0
- package/lib/components/table/Table/fields/search/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/search/index.d.ts +1 -0
- package/lib/components/table/Table/fields/select/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/select/index.d.ts +1 -0
- package/lib/components/table/Table/fields/text/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/text/index.d.ts +1 -0
- package/lib/components/table/Table/fields/treeSelect/Show/index.d.ts +1 -0
- package/lib/components/table/Table/fields/treeSelect/index.d.ts +1 -0
- package/lib/components/table/Table/tableConfig/SortRow/index.d.ts +1 -0
- package/lib/components/table/Table/utils.d.ts +1 -1
- package/lib/components/table/View/index.d.ts +1 -0
- package/lib/components/virtual-keyboard/Amount/index.d.ts +1 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +5 -0
- package/lib/locales/en-US.d.ts +389 -0
- package/lib/locales/en-US.js +1 -0
- package/lib/locales/ja.d.ts +358 -0
- package/lib/locales/ja.js +1 -0
- package/lib/locales/pt.d.ts +358 -0
- package/lib/locales/pt.js +1 -0
- package/lib/locales/zh-CN.d.ts +384 -0
- package/lib/locales/zh-CN.js +1 -0
- package/lib/locales/zh-TW.d.ts +384 -0
- package/lib/locales/zh-TW.js +1 -0
- package/lib/pisell-materials.tw.css +1 -1
- package/package.json +1 -1
|
@@ -35,10 +35,12 @@ module.exports = __toCommonJS(BookingCalendarDemo_exports);
|
|
|
35
35
|
var import_react = __toESM(require("react"));
|
|
36
36
|
var import_antd = require("antd");
|
|
37
37
|
var import_react_window = require("react-window");
|
|
38
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
38
39
|
var import_utils = require("../../../pisellTimeNavigator/utils");
|
|
39
40
|
var import_pisellDateTimeDisplay = require("../../../pisellDateTimeDisplay");
|
|
40
41
|
var import_calendarPersistGuard = require("./calendarPersistGuard");
|
|
41
42
|
var import_lucide_react = require("lucide-react");
|
|
43
|
+
var { RangePicker } = import_antd.DatePicker;
|
|
42
44
|
function omitMotionOnlyProps(props) {
|
|
43
45
|
const {
|
|
44
46
|
initial: _i,
|
|
@@ -77,7 +79,6 @@ var DEFAULT_COURTS = [
|
|
|
77
79
|
{ id: "normal6", name: "Standard Court 6", type: "Standard" }
|
|
78
80
|
];
|
|
79
81
|
var weekdayNames = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
|
|
80
|
-
var weekdaysMap = [1, 2, 3, 4, 5, 6, 0];
|
|
81
82
|
var timeSliceMinutes = 60;
|
|
82
83
|
var DEFAULT_CALENDAR_TIMELINE = { start: "02:00", end: "02:00" };
|
|
83
84
|
var frozenColWidth = 132;
|
|
@@ -528,6 +529,15 @@ function courtDaySummary(courtId, dateKey, bookings, hourSlots, slotStepHours) {
|
|
|
528
529
|
function sameSlot(a, b) {
|
|
529
530
|
return a.courtId === b.courtId && a.date === b.date && a.hour === b.hour;
|
|
530
531
|
}
|
|
532
|
+
function dayAndHourToDayjs(dateStr, hourFloat) {
|
|
533
|
+
const h = Math.floor(hourFloat);
|
|
534
|
+
const m = Math.round((hourFloat - h) * 60);
|
|
535
|
+
const mm = Math.min(59, Math.max(0, m));
|
|
536
|
+
return (0, import_dayjs.default)(
|
|
537
|
+
`${dateStr} ${String(h).padStart(2, "0")}:${String(mm).padStart(2, "0")}`,
|
|
538
|
+
"YYYY-MM-DD HH:mm"
|
|
539
|
+
);
|
|
540
|
+
}
|
|
531
541
|
function statusTagMeta(tag) {
|
|
532
542
|
switch (tag) {
|
|
533
543
|
case "cancel":
|
|
@@ -1819,7 +1829,7 @@ function BookingCard({
|
|
|
1819
1829
|
);
|
|
1820
1830
|
}
|
|
1821
1831
|
function BookingCalendarDemo(props = {}) {
|
|
1822
|
-
var _a, _b, _c, _d, _e
|
|
1832
|
+
var _a, _b, _c, _d, _e;
|
|
1823
1833
|
const allowPersist = (0, import_calendarPersistGuard.useCalendarPersist)();
|
|
1824
1834
|
const courts = (0, import_react.useMemo)(() => {
|
|
1825
1835
|
const r = props.resources;
|
|
@@ -1895,12 +1905,11 @@ function BookingCalendarDemo(props = {}) {
|
|
|
1895
1905
|
const [selectedBlockSlots, setSelectedBlockSlots] = (0, import_react.useState)([]);
|
|
1896
1906
|
const [focusedCourtId, setFocusedCourtId] = (0, import_react.useState)(null);
|
|
1897
1907
|
const [showBlockPanel, setShowBlockPanel] = (0, import_react.useState)(false);
|
|
1898
|
-
const [
|
|
1899
|
-
const [
|
|
1900
|
-
const [
|
|
1901
|
-
const [
|
|
1902
|
-
const [
|
|
1903
|
-
const [blockWeekdays, setBlockWeekdays] = (0, import_react.useState)([3]);
|
|
1908
|
+
const [blockFormName, setBlockFormName] = (0, import_react.useState)("屏蔽时间");
|
|
1909
|
+
const [blockModalNote, setBlockModalNote] = (0, import_react.useState)("");
|
|
1910
|
+
const [blockResourceId, setBlockResourceId] = (0, import_react.useState)("");
|
|
1911
|
+
const [blockTimeRange, setBlockTimeRange] = (0, import_react.useState)(null);
|
|
1912
|
+
const [blockSaving, setBlockSaving] = (0, import_react.useState)(false);
|
|
1904
1913
|
const [transitioningToDay, setTransitioningToDay] = (0, import_react.useState)(null);
|
|
1905
1914
|
const [navDirection, setNavDirection] = (0, import_react.useState)(0);
|
|
1906
1915
|
const [detailItem, setDetailItem] = (0, import_react.useState)(null);
|
|
@@ -2014,8 +2023,6 @@ function BookingCalendarDemo(props = {}) {
|
|
|
2014
2023
|
const detailPrefRef = (0, import_react.useRef)(null);
|
|
2015
2024
|
const summaryChangeMenuRef = (0, import_react.useRef)(null);
|
|
2016
2025
|
const noteEditorRef = (0, import_react.useRef)(null);
|
|
2017
|
-
const blockStartInputRef = (0, import_react.useRef)(null);
|
|
2018
|
-
const blockEndInputRef = (0, import_react.useRef)(null);
|
|
2019
2026
|
const visibleCourts = (0, import_react.useMemo)(() => courts, [courts]);
|
|
2020
2027
|
const visibleCourtRows = (0, import_react.useMemo)(
|
|
2021
2028
|
() => buildGroupedCourtRows(visibleCourts, collapsedGroups),
|
|
@@ -2447,11 +2454,6 @@ function BookingCalendarDemo(props = {}) {
|
|
|
2447
2454
|
}, 180);
|
|
2448
2455
|
return () => clearTimeout(timer);
|
|
2449
2456
|
}, [view, focusedCourtId, anchorDate]);
|
|
2450
|
-
(0, import_react.useEffect)(() => {
|
|
2451
|
-
if (!showBlockPanel) return;
|
|
2452
|
-
setBlockRangeStart(dayKey);
|
|
2453
|
-
setBlockRangeEnd(dayKey);
|
|
2454
|
-
}, [showBlockPanel, dayKey]);
|
|
2455
2457
|
(0, import_react.useEffect)(() => {
|
|
2456
2458
|
if (!showBlockPanel) return;
|
|
2457
2459
|
if (!isFreeSelectionContiguousSameResource(
|
|
@@ -2461,6 +2463,19 @@ function BookingCalendarDemo(props = {}) {
|
|
|
2461
2463
|
setShowBlockPanel(false);
|
|
2462
2464
|
}
|
|
2463
2465
|
}, [showBlockPanel, selectedFreeSlots, slotStepHours]);
|
|
2466
|
+
(0, import_react.useEffect)(() => {
|
|
2467
|
+
if (!showBlockPanel || selectedFreeSlots.length === 0) return;
|
|
2468
|
+
const groups = groupSelectedSlots(selectedFreeSlots, slotStepHours);
|
|
2469
|
+
const g = groups[0];
|
|
2470
|
+
if (!g) return;
|
|
2471
|
+
setBlockResourceId(String(g.courtId));
|
|
2472
|
+
setBlockTimeRange([
|
|
2473
|
+
dayAndHourToDayjs(g.date, g.startHour),
|
|
2474
|
+
dayAndHourToDayjs(g.date, g.endHour)
|
|
2475
|
+
]);
|
|
2476
|
+
setBlockFormName("屏蔽时间");
|
|
2477
|
+
setBlockModalNote("");
|
|
2478
|
+
}, [showBlockPanel, selectedFreeSlots, slotStepHours]);
|
|
2464
2479
|
(0, import_react.useEffect)(() => {
|
|
2465
2480
|
if (!transitioningToDay) return;
|
|
2466
2481
|
const timer = setTimeout(() => setTransitioningToDay(null), 280);
|
|
@@ -2577,77 +2592,76 @@ function BookingCalendarDemo(props = {}) {
|
|
|
2577
2592
|
);
|
|
2578
2593
|
setSelectedBlockSlots([]);
|
|
2579
2594
|
}
|
|
2580
|
-
function
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
if (
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
(
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
for (let d = new Date(start); d <= end; d = addDays(d, 1)) {
|
|
2615
|
-
if (!blockWeekdays.includes(d.getDay())) continue;
|
|
2616
|
-
const dateKey = fmtDate(d);
|
|
2617
|
-
baseByKey.forEach((slot) => {
|
|
2618
|
-
nextBlocks.push({
|
|
2619
|
-
id: `block-repeat-${slot.courtId}-${dateKey}-${slot.startHour}-${slot.endHour}`,
|
|
2620
|
-
courtId: slot.courtId,
|
|
2621
|
-
date: dateKey,
|
|
2622
|
-
startHour: slot.startHour,
|
|
2623
|
-
endHour: slot.endHour,
|
|
2624
|
-
name: blockNote || "Block",
|
|
2625
|
-
note: blockNote || "",
|
|
2626
|
-
blockBy,
|
|
2627
|
-
blockedAt: dayKey,
|
|
2628
|
-
kind: "block"
|
|
2629
|
-
});
|
|
2630
|
-
});
|
|
2595
|
+
async function saveBlockedTime() {
|
|
2596
|
+
if (!(blockTimeRange == null ? void 0 : blockTimeRange[0]) || !(blockTimeRange == null ? void 0 : blockTimeRange[1])) {
|
|
2597
|
+
import_antd.message.warning("请选择屏蔽时段");
|
|
2598
|
+
return;
|
|
2599
|
+
}
|
|
2600
|
+
const [start, end] = blockTimeRange;
|
|
2601
|
+
if (!end.isAfter(start)) {
|
|
2602
|
+
import_antd.message.warning("结束时间须晚于开始时间");
|
|
2603
|
+
return;
|
|
2604
|
+
}
|
|
2605
|
+
const rid = Number(blockResourceId);
|
|
2606
|
+
if (!Number.isFinite(rid) || rid <= 0) {
|
|
2607
|
+
import_antd.message.warning("请选择资源");
|
|
2608
|
+
return;
|
|
2609
|
+
}
|
|
2610
|
+
const channels = props.blockedTimeSalesChannels ?? ["online_store"];
|
|
2611
|
+
const payload = {
|
|
2612
|
+
name: (blockFormName || "").trim() || "屏蔽时间",
|
|
2613
|
+
note: (blockModalNote || "").trim(),
|
|
2614
|
+
resource_ids: [rid],
|
|
2615
|
+
blocked_sales_channels: channels,
|
|
2616
|
+
start_time: start.format("YYYY-MM-DD HH:mm"),
|
|
2617
|
+
end_time: end.format("YYYY-MM-DD HH:mm")
|
|
2618
|
+
};
|
|
2619
|
+
if (props.onBlockedTimeSave) {
|
|
2620
|
+
setBlockSaving(true);
|
|
2621
|
+
try {
|
|
2622
|
+
const ok = await props.onBlockedTimeSave(payload);
|
|
2623
|
+
if (ok === false) return;
|
|
2624
|
+
setShowBlockPanel(false);
|
|
2625
|
+
setSelectedFreeSlots([]);
|
|
2626
|
+
setBlockModalNote("");
|
|
2627
|
+
} finally {
|
|
2628
|
+
setBlockSaving(false);
|
|
2631
2629
|
}
|
|
2630
|
+
return;
|
|
2632
2631
|
}
|
|
2633
|
-
const
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2632
|
+
const courtId = String(blockResourceId);
|
|
2633
|
+
const date = start.format("YYYY-MM-DD");
|
|
2634
|
+
const endDate = end.format("YYYY-MM-DD");
|
|
2635
|
+
const startHour = start.hour() + start.minute() / 60;
|
|
2636
|
+
const endHour = end.hour() + end.minute() / 60;
|
|
2637
|
+
const nextBlock = {
|
|
2638
|
+
id: `block-local-${courtId}-${date}-${startHour}-${Date.now()}`,
|
|
2639
|
+
courtId,
|
|
2640
|
+
date,
|
|
2641
|
+
endDate: endDate !== date ? endDate : void 0,
|
|
2642
|
+
startHour,
|
|
2643
|
+
endHour,
|
|
2644
|
+
name: payload.name,
|
|
2645
|
+
note: payload.note,
|
|
2646
|
+
blockedAt: date,
|
|
2647
|
+
kind: "block"
|
|
2648
|
+
};
|
|
2649
|
+
const conflicts = overlappingBookings(
|
|
2650
|
+
bookings,
|
|
2651
|
+
courtId,
|
|
2652
|
+
date,
|
|
2653
|
+
startHour,
|
|
2654
|
+
endDate === date ? endHour : 24
|
|
2641
2655
|
);
|
|
2642
2656
|
if (conflicts.length > 0) {
|
|
2643
|
-
setBlockConflict({ nextBlocks, conflicts });
|
|
2657
|
+
setBlockConflict({ nextBlocks: [nextBlock], conflicts });
|
|
2644
2658
|
return;
|
|
2645
2659
|
}
|
|
2646
2660
|
if (!allowPersist("createBlock")) return;
|
|
2647
|
-
setBookings((prev) => [
|
|
2661
|
+
setBookings((prev) => [nextBlock, ...prev]);
|
|
2648
2662
|
setSelectedFreeSlots([]);
|
|
2649
2663
|
setShowBlockPanel(false);
|
|
2650
|
-
|
|
2664
|
+
setBlockModalNote("");
|
|
2651
2665
|
}
|
|
2652
2666
|
function confirmBlockWithUnsetCourts() {
|
|
2653
2667
|
if (!blockConflict) return;
|
|
@@ -3935,192 +3949,105 @@ function BookingCalendarDemo(props = {}) {
|
|
|
3935
3949
|
exit: { scale: 0.96, y: 10 },
|
|
3936
3950
|
className: `w-full max-w-[720px] max-h-[92vh] overflow-y-auto rounded-t-3xl md:rounded-3xl border p-4 md:p-6 shadow-2xl ${isLight ? "theme-panel theme-border soft-shadow" : "border-zinc-700 bg-[#121217]"}`
|
|
3937
3951
|
},
|
|
3938
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "mb-4 flex items-center justify-between" }, /* @__PURE__ */ import_react.default.createElement("div",
|
|
3939
|
-
"div",
|
|
3940
|
-
{
|
|
3941
|
-
className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
3942
|
-
},
|
|
3943
|
-
"Selected time range:",
|
|
3944
|
-
" ",
|
|
3945
|
-
selectedFreeSlots.length > 0 ? `${formatHourLabel((_d = groupSelectedSlots(selectedFreeSlots, slotStepHours)[0]) == null ? void 0 : _d.startHour)} - ${formatHourLabel((_e = groupSelectedSlots(selectedFreeSlots, slotStepHours)[0]) == null ? void 0 : _e.endHour)}` : "-"
|
|
3946
|
-
)), /* @__PURE__ */ import_react.default.createElement(
|
|
3952
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "mb-4 flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xl font-semibold" }, "新建屏蔽时间"), /* @__PURE__ */ import_react.default.createElement(
|
|
3947
3953
|
"button",
|
|
3948
3954
|
{
|
|
3955
|
+
type: "button",
|
|
3956
|
+
"aria-label": "关闭",
|
|
3949
3957
|
onClick: () => setShowBlockPanel(false),
|
|
3950
|
-
className: `rounded-xl
|
|
3958
|
+
className: `rounded-xl p-2 ${isLight ? "btn-neutral" : "border border-zinc-700 text-zinc-300 hover:bg-zinc-800"}`
|
|
3951
3959
|
},
|
|
3952
|
-
|
|
3953
|
-
)),
|
|
3954
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "mb-5 grid gap-3 md:gap-4 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement(
|
|
3955
|
-
"button",
|
|
3956
|
-
{
|
|
3957
|
-
onClick: () => setBlockMode("single"),
|
|
3958
|
-
className: `rounded-2xl border p-4 text-left ${blockMode === "single" ? isLight ? "theme-brand-surface border-[var(--brand-light)]" : "border-violet-500 bg-violet-500/10" : isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
|
|
3959
|
-
},
|
|
3960
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "font-semibold" }, "Only selected date"),
|
|
3961
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
3962
|
-
"div",
|
|
3963
|
-
{
|
|
3964
|
-
className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
3965
|
-
},
|
|
3966
|
-
"Create a block only for the currently selected date and time range."
|
|
3967
|
-
)
|
|
3968
|
-
), /* @__PURE__ */ import_react.default.createElement(
|
|
3969
|
-
"button",
|
|
3970
|
-
{
|
|
3971
|
-
onClick: () => setBlockMode("repeat"),
|
|
3972
|
-
className: `rounded-2xl border p-4 text-left ${blockMode === "repeat" ? isLight ? "theme-brand-surface border-[var(--brand-light)]" : "border-violet-500 bg-violet-500/10" : isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
|
|
3973
|
-
},
|
|
3974
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "font-semibold" }, "Every matching date"),
|
|
3975
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
3976
|
-
"div",
|
|
3977
|
-
{
|
|
3978
|
-
className: `mt-1 text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
3979
|
-
},
|
|
3980
|
-
"Create repeating blocks by date range and weekday rules."
|
|
3981
|
-
)
|
|
3960
|
+
/* @__PURE__ */ import_react.default.createElement(import_lucide_react.X, { size: 20 })
|
|
3982
3961
|
)),
|
|
3983
3962
|
/* @__PURE__ */ import_react.default.createElement(
|
|
3984
3963
|
"div",
|
|
3985
3964
|
{
|
|
3986
3965
|
className: `space-y-4 rounded-2xl border p-4 ${isLight ? "theme-panel-alt theme-border" : "border-zinc-700 bg-[#171820]"}`
|
|
3987
3966
|
},
|
|
3988
|
-
/* @__PURE__ */ import_react.default.createElement("div",
|
|
3967
|
+
/* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
3989
3968
|
"label",
|
|
3990
3969
|
{
|
|
3991
3970
|
className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
3992
3971
|
},
|
|
3993
|
-
"
|
|
3972
|
+
"标题"
|
|
3994
3973
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
3995
3974
|
"input",
|
|
3996
3975
|
{
|
|
3997
|
-
value:
|
|
3998
|
-
onChange: (e) =>
|
|
3999
|
-
placeholder: "
|
|
3976
|
+
value: blockFormName,
|
|
3977
|
+
onChange: (e) => setBlockFormName(e.target.value),
|
|
3978
|
+
placeholder: "屏蔽时间",
|
|
4000
3979
|
className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
|
|
4001
3980
|
}
|
|
4002
|
-
)),
|
|
3981
|
+
)),
|
|
3982
|
+
/* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
4003
3983
|
"label",
|
|
4004
3984
|
{
|
|
4005
3985
|
className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
4006
3986
|
},
|
|
4007
|
-
"
|
|
3987
|
+
"备注"
|
|
4008
3988
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
4009
3989
|
"input",
|
|
4010
3990
|
{
|
|
4011
|
-
value:
|
|
4012
|
-
onChange: (e) =>
|
|
4013
|
-
placeholder: "
|
|
4014
|
-
className:
|
|
3991
|
+
value: blockModalNote,
|
|
3992
|
+
onChange: (e) => setBlockModalNote(e.target.value),
|
|
3993
|
+
placeholder: "选填",
|
|
3994
|
+
className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
|
|
4015
3995
|
}
|
|
4016
|
-
))
|
|
4017
|
-
|
|
3996
|
+
)),
|
|
3997
|
+
/* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
4018
3998
|
"label",
|
|
4019
3999
|
{
|
|
4020
4000
|
className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
4021
4001
|
},
|
|
4022
|
-
"
|
|
4002
|
+
"资源"
|
|
4023
4003
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
4024
|
-
"
|
|
4004
|
+
"select",
|
|
4025
4005
|
{
|
|
4026
|
-
|
|
4006
|
+
value: blockResourceId,
|
|
4007
|
+
onChange: (e) => setBlockResourceId(e.target.value),
|
|
4008
|
+
className: `w-full rounded-xl px-3 py-2 outline-none ${isLight ? "theme-input theme-text" : "border border-zinc-700 bg-[#111218] text-white"}`
|
|
4027
4009
|
},
|
|
4028
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
type: "date",
|
|
4033
|
-
value: blockRangeStart,
|
|
4034
|
-
onChange: (e) => setBlockRangeStart(e.target.value),
|
|
4035
|
-
className: "w-full bg-transparent outline-none"
|
|
4036
|
-
}
|
|
4037
|
-
),
|
|
4038
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
4039
|
-
"button",
|
|
4040
|
-
{
|
|
4041
|
-
type: "button",
|
|
4042
|
-
onClick: () => {
|
|
4043
|
-
var _a2;
|
|
4044
|
-
return (_a2 = blockStartInputRef.current) == null ? void 0 : _a2.focus();
|
|
4045
|
-
},
|
|
4046
|
-
className: "rounded-lg p-1 hover:bg-zinc-800"
|
|
4047
|
-
},
|
|
4048
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
4049
|
-
import_lucide_react.CalendarDays,
|
|
4050
|
-
{
|
|
4051
|
-
size: 18,
|
|
4052
|
-
className: "text-zinc-400"
|
|
4053
|
-
}
|
|
4054
|
-
)
|
|
4055
|
-
)
|
|
4056
|
-
)), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
4010
|
+
/* @__PURE__ */ import_react.default.createElement("option", { value: "" }, "无资源"),
|
|
4011
|
+
visibleCourts.map((c) => /* @__PURE__ */ import_react.default.createElement("option", { key: c.id, value: String(c.id) }, c.name))
|
|
4012
|
+
)),
|
|
4013
|
+
/* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
4057
4014
|
"label",
|
|
4058
4015
|
{
|
|
4059
4016
|
className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
4060
4017
|
},
|
|
4061
|
-
"
|
|
4062
|
-
), /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-2 rounded-xl border border-zinc-700 bg-[#111218] px-3 py-2" }, /* @__PURE__ */ import_react.default.createElement(
|
|
4063
|
-
"input",
|
|
4064
|
-
{
|
|
4065
|
-
ref: blockEndInputRef,
|
|
4066
|
-
type: "date",
|
|
4067
|
-
value: blockRangeEnd,
|
|
4068
|
-
onChange: (e) => setBlockRangeEnd(e.target.value),
|
|
4069
|
-
className: "w-full bg-transparent outline-none"
|
|
4070
|
-
}
|
|
4018
|
+
"屏蔽时段"
|
|
4071
4019
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
4072
|
-
|
|
4020
|
+
RangePicker,
|
|
4073
4021
|
{
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4022
|
+
style: { width: "100%" },
|
|
4023
|
+
showTime: {
|
|
4024
|
+
format: "HH:mm",
|
|
4025
|
+
minuteStep: resolvedSlotMinutes >= 60 ? 60 : Math.max(1, resolvedSlotMinutes)
|
|
4078
4026
|
},
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
{
|
|
4084
|
-
size: 18,
|
|
4085
|
-
className: "text-zinc-400"
|
|
4086
|
-
}
|
|
4087
|
-
)
|
|
4088
|
-
)))), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
4089
|
-
"label",
|
|
4090
|
-
{
|
|
4091
|
-
className: `mb-2 block text-sm ${isLight ? "theme-text-muted" : "text-zinc-400"}`
|
|
4092
|
-
},
|
|
4093
|
-
"Weekdays in range"
|
|
4094
|
-
), /* @__PURE__ */ import_react.default.createElement("div", { className: "grid grid-cols-2 gap-2 sm:flex sm:flex-wrap" }, weekdayNames.map((name, idx) => /* @__PURE__ */ import_react.default.createElement(
|
|
4095
|
-
"button",
|
|
4096
|
-
{
|
|
4097
|
-
key: name,
|
|
4098
|
-
onClick: () => toggleBlockWeekday(weekdaysMap[idx]),
|
|
4099
|
-
className: `rounded-xl px-4 py-2 text-sm ${blockWeekdays.includes(weekdaysMap[idx]) ? "btn-pill-active" : isLight ? "btn-pill-neutral" : "bg-zinc-800 text-zinc-300"}`
|
|
4100
|
-
},
|
|
4101
|
-
name
|
|
4102
|
-
)))), /* @__PURE__ */ import_react.default.createElement(
|
|
4103
|
-
"div",
|
|
4104
|
-
{
|
|
4105
|
-
className: `rounded-xl px-3 py-3 text-sm ${isLight ? "theme-panel theme-border theme-text-muted" : "bg-zinc-900/80 text-zinc-300"}`
|
|
4106
|
-
},
|
|
4107
|
-
"Example: choose 1 Sep to 1 Oct, then select every Wednesday. The chosen time range will be blocked on all matching Wednesdays."
|
|
4027
|
+
format: "YYYY-MM-DD HH:mm",
|
|
4028
|
+
value: blockTimeRange,
|
|
4029
|
+
onChange: (v) => setBlockTimeRange(v)
|
|
4030
|
+
}
|
|
4108
4031
|
))
|
|
4109
4032
|
),
|
|
4110
4033
|
/* @__PURE__ */ import_react.default.createElement("div", { className: "mt-6 flex flex-col-reverse sm:flex-row items-stretch sm:items-center justify-end gap-3" }, /* @__PURE__ */ import_react.default.createElement(
|
|
4111
4034
|
"button",
|
|
4112
4035
|
{
|
|
4036
|
+
type: "button",
|
|
4037
|
+
disabled: blockSaving,
|
|
4113
4038
|
onClick: () => setShowBlockPanel(false),
|
|
4114
4039
|
className: `rounded-xl px-4 py-2 ${isLight ? "btn-neutral" : "border border-zinc-700 text-zinc-300 hover:bg-zinc-800"}`
|
|
4115
4040
|
},
|
|
4116
|
-
"
|
|
4041
|
+
"取消"
|
|
4117
4042
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
4118
4043
|
"button",
|
|
4119
4044
|
{
|
|
4120
|
-
|
|
4121
|
-
|
|
4045
|
+
type: "button",
|
|
4046
|
+
disabled: blockSaving,
|
|
4047
|
+
onClick: () => void saveBlockedTime(),
|
|
4048
|
+
className: `rounded-xl px-5 py-3 text-sm font-semibold disabled:opacity-50 ${isLight ? "btn-brand" : "bg-violet-600 text-white hover:bg-violet-500"}`
|
|
4122
4049
|
},
|
|
4123
|
-
"
|
|
4050
|
+
blockSaving ? "保存中…" : "保存"
|
|
4124
4051
|
))
|
|
4125
4052
|
)
|
|
4126
4053
|
)),
|
|
@@ -4589,7 +4516,7 @@ function BookingCalendarDemo(props = {}) {
|
|
|
4589
4516
|
ref: detailPanelRef
|
|
4590
4517
|
},
|
|
4591
4518
|
(() => {
|
|
4592
|
-
var _a2, _b2, _c2, _d2, _e2,
|
|
4519
|
+
var _a2, _b2, _c2, _d2, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
4593
4520
|
const detail = getBookingDetailData(detailItem, courts);
|
|
4594
4521
|
const detailWithNoteOverrides = {
|
|
4595
4522
|
...detail,
|
|
@@ -4614,9 +4541,9 @@ function BookingCalendarDemo(props = {}) {
|
|
|
4614
4541
|
const customerCard = selectedCustomer || {
|
|
4615
4542
|
name: ((_d2 = detail.customer) == null ? void 0 : _d2.name) || detail.headerSummary.customerName,
|
|
4616
4543
|
phone: (((_e2 = detail.customer) == null ? void 0 : _e2.phone) || "").split(" ").slice(-1)[0] || "0412888999",
|
|
4617
|
-
email: ((
|
|
4544
|
+
email: ((_f = detail.customer) == null ? void 0 : _f.email) || "tina.wu@pisell.com",
|
|
4618
4545
|
membership: "Gold",
|
|
4619
|
-
registeredAt: (((_h = (
|
|
4546
|
+
registeredAt: (((_h = (_g = detail.history) == null ? void 0 : _g[0]) == null ? void 0 : _h.time) || "2026-03-18").slice(0, 10).split("-").join("/")
|
|
4620
4547
|
};
|
|
4621
4548
|
const tabs = [
|
|
4622
4549
|
"summary",
|
|
@@ -6621,7 +6548,7 @@ function BookingCalendarDemo(props = {}) {
|
|
|
6621
6548
|
checkinModal.name,
|
|
6622
6549
|
" ·",
|
|
6623
6550
|
" ",
|
|
6624
|
-
((
|
|
6551
|
+
((_d = courts.find((c) => c.id === checkinModal.courtId)) == null ? void 0 : _d.name) || "Unassigned"
|
|
6625
6552
|
)), /* @__PURE__ */ import_react.default.createElement(
|
|
6626
6553
|
"button",
|
|
6627
6554
|
{
|
|
@@ -6823,7 +6750,7 @@ function BookingCalendarDemo(props = {}) {
|
|
|
6823
6750
|
mergeOrderModal.item.name,
|
|
6824
6751
|
" ·",
|
|
6825
6752
|
" ",
|
|
6826
|
-
((
|
|
6753
|
+
((_e = courts.find((c) => c.id === mergeOrderModal.item.courtId)) == null ? void 0 : _e.name) || "Unassigned"
|
|
6827
6754
|
)
|
|
6828
6755
|
),
|
|
6829
6756
|
/* @__PURE__ */ import_react.default.createElement("div", { className: "mt-4" }, /* @__PURE__ */ import_react.default.createElement(
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/** 日历内会改本地预约数据的动作类型,供业务层拦截(如平面图未支持写接口时 toast) */
|
|
3
|
+
export declare type CalendarPersistKind = 'moveBooking' | 'applyConflictMove' | 'createBooking' | 'removeBlocks' | 'createBlock' | 'confirmBlockWithConflicts' | 'checkin' | 'checkinReschedule' | 'mergeOrder' | 'other';
|
|
4
|
+
export interface CalendarPersistContextValue {
|
|
5
|
+
/**
|
|
6
|
+
* 返回 false 时日历组件应取消本次本地数据变更(由调用方决定是否已 toast)。
|
|
7
|
+
* 未提供时默认允许所有本地变更(Story / 独立演示)。
|
|
8
|
+
*/
|
|
9
|
+
beforePersist?: (kind: CalendarPersistKind) => boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const CalendarPersistProvider: React.FC<{
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
value?: CalendarPersistContextValue;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* 在日历 Demo 内判断某类写操作是否允许执行本地 state 更新。
|
|
17
|
+
*/
|
|
18
|
+
export declare function useCalendarPersist(): (kind: CalendarPersistKind) => boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './VenueWallMarquee.less';
|
|
3
|
+
export interface NoteTickerProps {
|
|
4
|
+
text: string;
|
|
5
|
+
color: string;
|
|
6
|
+
/** 跑完一整段所需秒数 */
|
|
7
|
+
duration?: number;
|
|
8
|
+
shouldMarquee: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 底部说明条:短文案静态省略,长文案无缝跑马灯(样式见 VenueWallMarquee.less)。
|
|
12
|
+
*/
|
|
13
|
+
export declare const NoteTicker: React.NamedExoticComponent<NoteTickerProps>;
|
|
@@ -0,0 +1,60 @@
|
|
|
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/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.tsx
|
|
30
|
+
var NoteTicker_exports = {};
|
|
31
|
+
__export(NoteTicker_exports, {
|
|
32
|
+
NoteTicker: () => NoteTicker
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(NoteTicker_exports);
|
|
35
|
+
var import_react = __toESM(require("react"));
|
|
36
|
+
var import_VenueWallMarquee = require("./VenueWallMarquee.less");
|
|
37
|
+
var NoteTicker = import_react.default.memo(function NoteTicker2({
|
|
38
|
+
text,
|
|
39
|
+
color,
|
|
40
|
+
duration = 24,
|
|
41
|
+
shouldMarquee
|
|
42
|
+
}) {
|
|
43
|
+
if (!shouldMarquee) {
|
|
44
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-static", style: { color } }, text);
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-wrap" }, /* @__PURE__ */ import_react.default.createElement(
|
|
47
|
+
"div",
|
|
48
|
+
{
|
|
49
|
+
className: "pisell-resource-wall-note-marquee-track",
|
|
50
|
+
style: { animationDuration: `${duration}s`, color }
|
|
51
|
+
},
|
|
52
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy" }, text),
|
|
53
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy", "aria-hidden": "true" }, text),
|
|
54
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-resource-wall-note-marquee-copy", "aria-hidden": "true" }, text)
|
|
55
|
+
));
|
|
56
|
+
});
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
59
|
+
NoteTicker
|
|
60
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RecordBoardResourceWallProps } from '../../types';
|
|
3
|
+
/** 与 {@link RecordBoardResourceWallProps.filterFieldKey} 默认一致 */
|
|
4
|
+
export declare const DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY = "resource_wall_resource_ids";
|
|
5
|
+
/**
|
|
6
|
+
* 大屏资源墙主视口:卡片数据来自 props;可见资源 id 来自
|
|
7
|
+
* `searchParams.filter.values[filterFieldKey]` 与 `cards[].resourceId` 交集。
|
|
8
|
+
*/
|
|
9
|
+
export declare const PisellRecordBoardResourceWallView: React.FC<RecordBoardResourceWallProps>;
|