@multiplatform.one/frappe-ui 6.6.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/FrappeAssignment.cjs +2 -0
- package/dist/cjs/FrappeAssignment.native.js +2 -0
- package/dist/cjs/FrappeAssignment.native.js.map +1 -1
- package/dist/cjs/FrappeCalendar.cjs +5 -7
- package/dist/cjs/FrappeCalendar.native.js +5 -9
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeChartCard.cjs +2 -0
- package/dist/cjs/FrappeChartCard.native.js +2 -0
- package/dist/cjs/FrappeChartCard.native.js.map +1 -1
- package/dist/cjs/FrappeDashboard.cjs +11 -22
- package/dist/cjs/FrappeDashboard.native.js +20 -22
- package/dist/cjs/FrappeDashboard.native.js.map +1 -1
- package/dist/cjs/FrappeForm.cjs +3 -1
- package/dist/cjs/FrappeForm.native.js +3 -1
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeGantt.cjs +5 -7
- package/dist/cjs/FrappeGantt.native.js +5 -9
- package/dist/cjs/FrappeGantt.native.js.map +1 -1
- package/dist/cjs/FrappeImageView.cjs +3 -1
- package/dist/cjs/FrappeImageView.native.js +3 -1
- package/dist/cjs/FrappeImageView.native.js.map +1 -1
- package/dist/cjs/FrappeKPICard.cjs +2 -0
- package/dist/cjs/FrappeKPICard.native.js +2 -0
- package/dist/cjs/FrappeKPICard.native.js.map +1 -1
- package/dist/cjs/FrappeKanban.cjs +3 -1
- package/dist/cjs/FrappeKanban.native.js +3 -1
- package/dist/cjs/FrappeKanban.native.js.map +1 -1
- package/dist/cjs/FrappeLikedBy.cjs +2 -0
- package/dist/cjs/FrappeLikedBy.native.js +2 -0
- package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
- package/dist/cjs/FrappeList.cjs +3 -1
- package/dist/cjs/FrappeList.native.js +3 -1
- package/dist/cjs/FrappeList.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +6 -12
- package/dist/cjs/FrappeListView.native.js +13 -12
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeProvider.cjs +5 -1
- package/dist/cjs/FrappeProvider.native.js +5 -1
- package/dist/cjs/FrappeProvider.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +2 -0
- package/dist/cjs/FrappeReportBuilder.native.js +2 -0
- package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
- package/dist/cjs/FrappeReportView.cjs +23 -45
- package/dist/cjs/FrappeReportView.native.js +35 -50
- package/dist/cjs/FrappeReportView.native.js.map +1 -1
- package/dist/cjs/FrappeTable.cjs +105 -31
- package/dist/cjs/FrappeTable.native.js +140 -42
- package/dist/cjs/FrappeTable.native.js.map +1 -1
- package/dist/cjs/FrappeTreeView.cjs +3 -1
- package/dist/cjs/FrappeTreeView.native.js +3 -1
- package/dist/cjs/FrappeTreeView.native.js.map +1 -1
- package/dist/cjs/SyncErrorNotice.cjs +76 -0
- package/dist/cjs/SyncErrorNotice.native.js +92 -0
- package/dist/cjs/SyncErrorNotice.native.js.map +1 -0
- package/dist/cjs/commentActions.cjs +120 -0
- package/dist/cjs/commentActions.native.js +129 -0
- package/dist/cjs/commentActions.native.js.map +1 -0
- package/dist/cjs/components/attachments.cjs +2 -0
- package/dist/cjs/components/attachments.native.js +2 -0
- package/dist/cjs/components/attachments.native.js.map +1 -1
- package/dist/cjs/components/tags.cjs +5 -0
- package/dist/cjs/components/tags.native.js +5 -0
- package/dist/cjs/components/tags.native.js.map +1 -1
- package/dist/cjs/components/timeline.cjs +29 -2
- package/dist/cjs/components/timeline.native.js +33 -2
- package/dist/cjs/components/timeline.native.js.map +1 -1
- package/dist/cjs/desk/DeskFormSidebar.cjs +2 -0
- package/dist/cjs/desk/DeskFormSidebar.native.js +2 -0
- package/dist/cjs/desk/DeskFormSidebar.native.js.map +1 -1
- package/dist/cjs/fieldRegistry.cjs +2 -0
- package/dist/cjs/fieldRegistry.native.js +2 -0
- package/dist/cjs/fieldRegistry.native.js.map +1 -1
- package/dist/cjs/fields/Date/index.cjs +71 -7
- package/dist/cjs/fields/Date/index.native.js +325 -37
- package/dist/cjs/fields/Date/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/types.cjs +18 -0
- package/dist/cjs/fields/Date/types.native.js +21 -0
- package/dist/cjs/fields/Date/types.native.js.map +1 -0
- package/dist/cjs/fields/Date/wire.cjs +4 -8
- package/dist/cjs/fields/Date/wire.native.js +4 -11
- package/dist/cjs/fields/Date/wire.native.js.map +1 -1
- package/dist/cjs/fields/DynamicLink.cjs +2 -0
- package/dist/cjs/fields/DynamicLink.native.js +2 -0
- package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload.cjs +2 -0
- package/dist/cjs/fields/FileUpload.native.js +2 -0
- package/dist/cjs/fields/FileUpload.native.js.map +1 -1
- package/dist/cjs/fields/TableMultiSelect.cjs +6 -1
- package/dist/cjs/fields/TableMultiSelect.native.js +6 -1
- package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/cjs/frappeStoryTarget.cjs +88 -0
- package/dist/cjs/frappeStoryTarget.native.js +100 -0
- package/dist/cjs/frappeStoryTarget.native.js.map +1 -1
- package/dist/cjs/frappeUsers.cjs +2 -0
- package/dist/cjs/frappeUsers.native.js +2 -0
- package/dist/cjs/frappeUsers.native.js.map +1 -1
- package/dist/cjs/index.cjs +17 -4
- package/dist/cjs/index.native.js +17 -4
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/liveErrors.cjs +5 -1
- package/dist/cjs/liveErrors.native.js +5 -1
- package/dist/cjs/liveErrors.native.js.map +1 -1
- package/dist/cjs/useFrappeAggregate.cjs +13 -1
- package/dist/cjs/useFrappeAggregate.native.js +14 -1
- package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
- package/dist/cjs/useFrappeFacets.cjs +329 -0
- package/dist/cjs/useFrappeFacets.native.js +632 -0
- package/dist/cjs/useFrappeFacets.native.js.map +1 -0
- package/dist/esm/FrappeAssignment.mjs +2 -0
- package/dist/esm/FrappeAssignment.mjs.map +1 -1
- package/dist/esm/FrappeAssignment.native.js +2 -0
- package/dist/esm/FrappeAssignment.native.js.map +1 -1
- package/dist/esm/FrappeCalendar.mjs +6 -8
- package/dist/esm/FrappeCalendar.mjs.map +1 -1
- package/dist/esm/FrappeCalendar.native.js +6 -10
- package/dist/esm/FrappeCalendar.native.js.map +1 -1
- package/dist/esm/FrappeChartCard.mjs +2 -0
- package/dist/esm/FrappeChartCard.mjs.map +1 -1
- package/dist/esm/FrappeChartCard.native.js +2 -0
- package/dist/esm/FrappeChartCard.native.js.map +1 -1
- package/dist/esm/FrappeDashboard.mjs +12 -19
- package/dist/esm/FrappeDashboard.mjs.map +1 -1
- package/dist/esm/FrappeDashboard.native.js +23 -21
- package/dist/esm/FrappeDashboard.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +3 -1
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +3 -1
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeGantt.mjs +6 -8
- package/dist/esm/FrappeGantt.mjs.map +1 -1
- package/dist/esm/FrappeGantt.native.js +6 -10
- package/dist/esm/FrappeGantt.native.js.map +1 -1
- package/dist/esm/FrappeImageView.mjs +3 -1
- package/dist/esm/FrappeImageView.mjs.map +1 -1
- package/dist/esm/FrappeImageView.native.js +3 -1
- package/dist/esm/FrappeImageView.native.js.map +1 -1
- package/dist/esm/FrappeKPICard.mjs +2 -0
- package/dist/esm/FrappeKPICard.mjs.map +1 -1
- package/dist/esm/FrappeKPICard.native.js +2 -0
- package/dist/esm/FrappeKPICard.native.js.map +1 -1
- package/dist/esm/FrappeKanban.mjs +3 -1
- package/dist/esm/FrappeKanban.mjs.map +1 -1
- package/dist/esm/FrappeKanban.native.js +3 -1
- package/dist/esm/FrappeKanban.native.js.map +1 -1
- package/dist/esm/FrappeLikedBy.mjs +2 -0
- package/dist/esm/FrappeLikedBy.mjs.map +1 -1
- package/dist/esm/FrappeLikedBy.native.js +2 -0
- package/dist/esm/FrappeLikedBy.native.js.map +1 -1
- package/dist/esm/FrappeList.mjs +3 -1
- package/dist/esm/FrappeList.mjs.map +1 -1
- package/dist/esm/FrappeList.native.js +3 -1
- package/dist/esm/FrappeList.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +7 -13
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +15 -14
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeProvider.mjs +5 -1
- package/dist/esm/FrappeProvider.mjs.map +1 -1
- package/dist/esm/FrappeProvider.native.js +5 -1
- package/dist/esm/FrappeProvider.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +2 -0
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +2 -0
- package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
- package/dist/esm/FrappeReportView.mjs +26 -49
- package/dist/esm/FrappeReportView.mjs.map +1 -1
- package/dist/esm/FrappeReportView.native.js +38 -54
- package/dist/esm/FrappeReportView.native.js.map +1 -1
- package/dist/esm/FrappeTable.mjs +107 -33
- package/dist/esm/FrappeTable.mjs.map +1 -1
- package/dist/esm/FrappeTable.native.js +142 -44
- package/dist/esm/FrappeTable.native.js.map +1 -1
- package/dist/esm/FrappeTreeView.mjs +3 -1
- package/dist/esm/FrappeTreeView.mjs.map +1 -1
- package/dist/esm/FrappeTreeView.native.js +3 -1
- package/dist/esm/FrappeTreeView.native.js.map +1 -1
- package/dist/esm/SyncErrorNotice.mjs +51 -0
- package/dist/esm/SyncErrorNotice.mjs.map +1 -0
- package/dist/esm/SyncErrorNotice.native.js +53 -0
- package/dist/esm/SyncErrorNotice.native.js.map +1 -0
- package/dist/esm/commentActions.mjs +95 -0
- package/dist/esm/commentActions.mjs.map +1 -0
- package/dist/esm/commentActions.native.js +101 -0
- package/dist/esm/commentActions.native.js.map +1 -0
- package/dist/esm/components/attachments.mjs +2 -0
- package/dist/esm/components/attachments.mjs.map +1 -1
- package/dist/esm/components/attachments.native.js +2 -0
- package/dist/esm/components/attachments.native.js.map +1 -1
- package/dist/esm/components/tags.mjs +5 -0
- package/dist/esm/components/tags.mjs.map +1 -1
- package/dist/esm/components/tags.native.js +5 -0
- package/dist/esm/components/tags.native.js.map +1 -1
- package/dist/esm/components/timeline.mjs +31 -4
- package/dist/esm/components/timeline.mjs.map +1 -1
- package/dist/esm/components/timeline.native.js +35 -4
- package/dist/esm/components/timeline.native.js.map +1 -1
- package/dist/esm/desk/DeskFormSidebar.mjs +2 -0
- package/dist/esm/desk/DeskFormSidebar.mjs.map +1 -1
- package/dist/esm/desk/DeskFormSidebar.native.js +2 -0
- package/dist/esm/desk/DeskFormSidebar.native.js.map +1 -1
- package/dist/esm/fieldRegistry.mjs +2 -0
- package/dist/esm/fieldRegistry.mjs.map +1 -1
- package/dist/esm/fieldRegistry.native.js +2 -0
- package/dist/esm/fieldRegistry.native.js.map +1 -1
- package/dist/esm/fields/Date/index.mjs +73 -9
- package/dist/esm/fields/Date/index.mjs.map +1 -1
- package/dist/esm/fields/Date/index.native.js +315 -38
- package/dist/esm/fields/Date/index.native.js.map +1 -1
- package/dist/esm/fields/Date/types.mjs +2 -0
- package/dist/esm/fields/Date/types.mjs.map +1 -0
- package/dist/esm/fields/Date/types.native.js +2 -0
- package/dist/esm/fields/Date/types.native.js.map +1 -0
- package/dist/esm/fields/Date/wire.mjs +4 -8
- package/dist/esm/fields/Date/wire.mjs.map +1 -1
- package/dist/esm/fields/Date/wire.native.js +4 -11
- package/dist/esm/fields/Date/wire.native.js.map +1 -1
- package/dist/esm/fields/DynamicLink.mjs +2 -0
- package/dist/esm/fields/DynamicLink.mjs.map +1 -1
- package/dist/esm/fields/DynamicLink.native.js +2 -0
- package/dist/esm/fields/DynamicLink.native.js.map +1 -1
- package/dist/esm/fields/FileUpload.mjs +2 -0
- package/dist/esm/fields/FileUpload.mjs.map +1 -1
- package/dist/esm/fields/FileUpload.native.js +2 -0
- package/dist/esm/fields/FileUpload.native.js.map +1 -1
- package/dist/esm/fields/TableMultiSelect.mjs +7 -2
- package/dist/esm/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/esm/fields/TableMultiSelect.native.js +7 -2
- package/dist/esm/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/esm/frappeStoryTarget.mjs +88 -2
- package/dist/esm/frappeStoryTarget.mjs.map +1 -1
- package/dist/esm/frappeStoryTarget.native.js +100 -2
- package/dist/esm/frappeStoryTarget.native.js.map +1 -1
- package/dist/esm/frappeUsers.mjs +2 -0
- package/dist/esm/frappeUsers.mjs.map +1 -1
- package/dist/esm/frappeUsers.native.js +2 -0
- package/dist/esm/frappeUsers.native.js.map +1 -1
- package/dist/esm/index.mjs +7 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +7 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/liveErrors.mjs +5 -1
- package/dist/esm/liveErrors.mjs.map +1 -1
- package/dist/esm/liveErrors.native.js +5 -1
- package/dist/esm/liveErrors.native.js.map +1 -1
- package/dist/esm/useFrappeAggregate.mjs +13 -1
- package/dist/esm/useFrappeAggregate.mjs.map +1 -1
- package/dist/esm/useFrappeAggregate.native.js +14 -1
- package/dist/esm/useFrappeAggregate.native.js.map +1 -1
- package/dist/esm/useFrappeFacets.mjs +299 -0
- package/dist/esm/useFrappeFacets.mjs.map +1 -0
- package/dist/esm/useFrappeFacets.native.js +599 -0
- package/dist/esm/useFrappeFacets.native.js.map +1 -0
- package/dist/jsx/FrappeAssignment.mjs +2 -0
- package/dist/jsx/FrappeAssignment.mjs.map +1 -1
- package/dist/jsx/FrappeAssignment.native.js +2 -0
- package/dist/jsx/FrappeAssignment.native.js.map +1 -1
- package/dist/jsx/FrappeCalendar.mjs +6 -8
- package/dist/jsx/FrappeCalendar.mjs.map +1 -1
- package/dist/jsx/FrappeCalendar.native.js +5 -9
- package/dist/jsx/FrappeCalendar.native.js.map +1 -1
- package/dist/jsx/FrappeChartCard.mjs +2 -0
- package/dist/jsx/FrappeChartCard.mjs.map +1 -1
- package/dist/jsx/FrappeChartCard.native.js +2 -0
- package/dist/jsx/FrappeChartCard.native.js.map +1 -1
- package/dist/jsx/FrappeDashboard.mjs +12 -19
- package/dist/jsx/FrappeDashboard.mjs.map +1 -1
- package/dist/jsx/FrappeDashboard.native.js +20 -22
- package/dist/jsx/FrappeDashboard.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +3 -1
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +3 -1
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeGantt.mjs +6 -8
- package/dist/jsx/FrappeGantt.mjs.map +1 -1
- package/dist/jsx/FrappeGantt.native.js +5 -9
- package/dist/jsx/FrappeGantt.native.js.map +1 -1
- package/dist/jsx/FrappeImageView.mjs +3 -1
- package/dist/jsx/FrappeImageView.mjs.map +1 -1
- package/dist/jsx/FrappeImageView.native.js +3 -1
- package/dist/jsx/FrappeImageView.native.js.map +1 -1
- package/dist/jsx/FrappeKPICard.mjs +2 -0
- package/dist/jsx/FrappeKPICard.mjs.map +1 -1
- package/dist/jsx/FrappeKPICard.native.js +2 -0
- package/dist/jsx/FrappeKPICard.native.js.map +1 -1
- package/dist/jsx/FrappeKanban.mjs +3 -1
- package/dist/jsx/FrappeKanban.mjs.map +1 -1
- package/dist/jsx/FrappeKanban.native.js +3 -1
- package/dist/jsx/FrappeKanban.native.js.map +1 -1
- package/dist/jsx/FrappeLikedBy.mjs +2 -0
- package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
- package/dist/jsx/FrappeLikedBy.native.js +2 -0
- package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
- package/dist/jsx/FrappeList.mjs +3 -1
- package/dist/jsx/FrappeList.mjs.map +1 -1
- package/dist/jsx/FrappeList.native.js +3 -1
- package/dist/jsx/FrappeList.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +7 -13
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +13 -12
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeProvider.mjs +5 -1
- package/dist/jsx/FrappeProvider.mjs.map +1 -1
- package/dist/jsx/FrappeProvider.native.js +5 -1
- package/dist/jsx/FrappeProvider.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +2 -0
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +2 -0
- package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
- package/dist/jsx/FrappeReportView.mjs +26 -49
- package/dist/jsx/FrappeReportView.mjs.map +1 -1
- package/dist/jsx/FrappeReportView.native.js +35 -50
- package/dist/jsx/FrappeReportView.native.js.map +1 -1
- package/dist/jsx/FrappeTable.mjs +107 -33
- package/dist/jsx/FrappeTable.mjs.map +1 -1
- package/dist/jsx/FrappeTable.native.js +140 -42
- package/dist/jsx/FrappeTable.native.js.map +1 -1
- package/dist/jsx/FrappeTreeView.mjs +3 -1
- package/dist/jsx/FrappeTreeView.mjs.map +1 -1
- package/dist/jsx/FrappeTreeView.native.js +3 -1
- package/dist/jsx/FrappeTreeView.native.js.map +1 -1
- package/dist/jsx/SyncErrorNotice.mjs +51 -0
- package/dist/jsx/SyncErrorNotice.mjs.map +1 -0
- package/dist/jsx/SyncErrorNotice.native.js +92 -0
- package/dist/jsx/SyncErrorNotice.native.js.map +1 -0
- package/dist/jsx/commentActions.mjs +95 -0
- package/dist/jsx/commentActions.mjs.map +1 -0
- package/dist/jsx/commentActions.native.js +129 -0
- package/dist/jsx/commentActions.native.js.map +1 -0
- package/dist/jsx/components/attachments.mjs +2 -0
- package/dist/jsx/components/attachments.mjs.map +1 -1
- package/dist/jsx/components/attachments.native.js +2 -0
- package/dist/jsx/components/attachments.native.js.map +1 -1
- package/dist/jsx/components/tags.mjs +5 -0
- package/dist/jsx/components/tags.mjs.map +1 -1
- package/dist/jsx/components/tags.native.js +5 -0
- package/dist/jsx/components/tags.native.js.map +1 -1
- package/dist/jsx/components/timeline.mjs +31 -4
- package/dist/jsx/components/timeline.mjs.map +1 -1
- package/dist/jsx/components/timeline.native.js +33 -2
- package/dist/jsx/components/timeline.native.js.map +1 -1
- package/dist/jsx/desk/DeskFormSidebar.mjs +2 -0
- package/dist/jsx/desk/DeskFormSidebar.mjs.map +1 -1
- package/dist/jsx/desk/DeskFormSidebar.native.js +2 -0
- package/dist/jsx/desk/DeskFormSidebar.native.js.map +1 -1
- package/dist/jsx/fieldRegistry.mjs +2 -0
- package/dist/jsx/fieldRegistry.mjs.map +1 -1
- package/dist/jsx/fieldRegistry.native.js +2 -0
- package/dist/jsx/fieldRegistry.native.js.map +1 -1
- package/dist/jsx/fields/Date/index.mjs +73 -9
- package/dist/jsx/fields/Date/index.mjs.map +1 -1
- package/dist/jsx/fields/Date/index.native.js +325 -37
- package/dist/jsx/fields/Date/index.native.js.map +1 -1
- package/dist/jsx/fields/Date/types.mjs +2 -0
- package/dist/jsx/fields/Date/types.mjs.map +1 -0
- package/dist/jsx/fields/Date/types.native.js +21 -0
- package/dist/jsx/fields/Date/types.native.js.map +1 -0
- package/dist/jsx/fields/Date/wire.mjs +4 -8
- package/dist/jsx/fields/Date/wire.mjs.map +1 -1
- package/dist/jsx/fields/Date/wire.native.js +4 -11
- package/dist/jsx/fields/Date/wire.native.js.map +1 -1
- package/dist/jsx/fields/DynamicLink.mjs +2 -0
- package/dist/jsx/fields/DynamicLink.mjs.map +1 -1
- package/dist/jsx/fields/DynamicLink.native.js +2 -0
- package/dist/jsx/fields/DynamicLink.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload.mjs +2 -0
- package/dist/jsx/fields/FileUpload.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload.native.js +2 -0
- package/dist/jsx/fields/FileUpload.native.js.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.mjs +7 -2
- package/dist/jsx/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.native.js +6 -1
- package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/jsx/frappeStoryTarget.mjs +88 -2
- package/dist/jsx/frappeStoryTarget.mjs.map +1 -1
- package/dist/jsx/frappeStoryTarget.native.js +100 -0
- package/dist/jsx/frappeStoryTarget.native.js.map +1 -1
- package/dist/jsx/frappeUsers.mjs +2 -0
- package/dist/jsx/frappeUsers.mjs.map +1 -1
- package/dist/jsx/frappeUsers.native.js +2 -0
- package/dist/jsx/frappeUsers.native.js.map +1 -1
- package/dist/jsx/index.js +7 -3
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +7 -3
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +17 -4
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/liveErrors.mjs +5 -1
- package/dist/jsx/liveErrors.mjs.map +1 -1
- package/dist/jsx/liveErrors.native.js +5 -1
- package/dist/jsx/liveErrors.native.js.map +1 -1
- package/dist/jsx/useFrappeAggregate.mjs +13 -1
- package/dist/jsx/useFrappeAggregate.mjs.map +1 -1
- package/dist/jsx/useFrappeAggregate.native.js +14 -1
- package/dist/jsx/useFrappeAggregate.native.js.map +1 -1
- package/dist/jsx/useFrappeFacets.mjs +299 -0
- package/dist/jsx/useFrappeFacets.mjs.map +1 -0
- package/dist/jsx/useFrappeFacets.native.js +632 -0
- package/dist/jsx/useFrappeFacets.native.js.map +1 -0
- package/package.json +21 -21
- package/src/FormSidebar.stories.tsx +88 -10
- package/src/FrappeAssignment.tsx +2 -0
- package/src/FrappeCalendar.tsx +12 -7
- package/src/FrappeChartCard.tsx +9 -2
- package/src/FrappeDashboard.spec.tsx +95 -0
- package/src/FrappeDashboard.tsx +20 -41
- package/src/FrappeForm.stories.tsx +53 -46
- package/src/FrappeForm.tsx +11 -1
- package/src/FrappeGantt.tsx +12 -7
- package/src/FrappeImageView.tsx +11 -1
- package/src/FrappeKPICard.stories.tsx +4 -1
- package/src/FrappeKPICard.tsx +2 -0
- package/src/FrappeKanban.tsx +4 -0
- package/src/FrappeLikedBy.stories.tsx +26 -10
- package/src/FrappeLikedBy.tsx +2 -0
- package/src/FrappeList.tsx +11 -1
- package/src/FrappeListView.spec.tsx +144 -0
- package/src/FrappeListView.tsx +11 -23
- package/src/FrappeProvider.tsx +30 -2
- package/src/FrappeReportBuilder.tsx +2 -0
- package/src/FrappeReportView.spec.tsx +140 -16
- package/src/FrappeReportView.stories.tsx +12 -6
- package/src/FrappeReportView.tsx +62 -61
- package/src/FrappeTable.keepRows.spec.tsx +200 -0
- package/src/FrappeTable.retryStorm.spec.tsx +140 -0
- package/src/FrappeTable.spec.tsx +222 -0
- package/src/FrappeTable.tsx +211 -54
- package/src/FrappeTreeView.tsx +11 -1
- package/src/SyncErrorNotice.spec.tsx +60 -0
- package/src/SyncErrorNotice.tsx +81 -0
- package/src/commentActions.ts +157 -0
- package/src/components/attachments.tsx +2 -0
- package/src/components/tags.tsx +14 -1
- package/src/components/timeline.optimistic.spec.tsx +106 -0
- package/src/components/timeline.tsx +36 -4
- package/src/desk/DeskFormSidebar.tsx +2 -0
- package/src/fieldRegistry.ts +2 -0
- package/src/fields/Date/index.native.tsx +410 -0
- package/src/fields/Date/index.tsx +138 -57
- package/src/fields/Date/nativePresentation.spec.tsx +251 -0
- package/src/fields/Date/typeParity.spec.tsx +480 -0
- package/src/fields/Date/types.ts +53 -0
- package/src/fields/Date/wire.spec.ts +63 -1
- package/src/fields/Date/wire.ts +17 -17
- package/src/fields/DynamicLink.tsx +2 -0
- package/src/fields/FileUpload.tsx +2 -0
- package/src/fields/TableMultiSelect.tsx +6 -3
- package/src/frappeStoryTarget.tsx +104 -1
- package/src/frappeUsers.ts +2 -0
- package/src/index.spec.ts +62 -0
- package/src/index.ts +36 -2
- package/src/liveErrors.spec.ts +50 -0
- package/src/liveErrors.ts +11 -1
- package/src/useFrappeAggregate.ts +20 -1
- package/src/useFrappeFacets.spec.tsx +436 -0
- package/src/useFrappeFacets.ts +568 -0
- package/types/FrappeAssignment.d.ts.map +1 -1
- package/types/FrappeCalendar.d.ts.map +1 -1
- package/types/FrappeChartCard.d.ts +1 -2
- package/types/FrappeChartCard.d.ts.map +1 -1
- package/types/FrappeDashboard.d.ts +0 -1
- package/types/FrappeDashboard.d.ts.map +1 -1
- package/types/FrappeForm.d.ts.map +1 -1
- package/types/FrappeGantt.d.ts.map +1 -1
- package/types/FrappeKPICard.d.ts.map +1 -1
- package/types/FrappeKanban.d.ts.map +1 -1
- package/types/FrappeLikedBy.d.ts.map +1 -1
- package/types/FrappeList.d.ts.map +1 -1
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/FrappeProvider.d.ts +18 -1
- package/types/FrappeProvider.d.ts.map +1 -1
- package/types/FrappeReportBuilder.d.ts.map +1 -1
- package/types/FrappeReportView.d.ts +22 -15
- package/types/FrappeReportView.d.ts.map +1 -1
- package/types/FrappeTable.d.ts +21 -2
- package/types/FrappeTable.d.ts.map +1 -1
- package/types/FrappeTreeView.d.ts.map +1 -1
- package/types/SyncErrorNotice.d.ts +38 -0
- package/types/SyncErrorNotice.d.ts.map +1 -0
- package/types/commentActions.d.ts +46 -0
- package/types/commentActions.d.ts.map +1 -0
- package/types/components/attachments.d.ts.map +1 -1
- package/types/components/tags.d.ts.map +1 -1
- package/types/components/timeline.d.ts.map +1 -1
- package/types/desk/DeskFormSidebar.d.ts.map +1 -1
- package/types/fieldRegistry.d.ts.map +1 -1
- package/types/fields/Date/index.d.ts +22 -12
- package/types/fields/Date/index.d.ts.map +1 -1
- package/types/fields/Date/index.native.d.ts +14 -0
- package/types/fields/Date/index.native.d.ts.map +1 -0
- package/types/fields/Date/types.d.ts +27 -0
- package/types/fields/Date/types.d.ts.map +1 -0
- package/types/fields/Date/wire.d.ts +13 -9
- package/types/fields/Date/wire.d.ts.map +1 -1
- package/types/fields/DynamicLink.d.ts.map +1 -1
- package/types/fields/FileUpload.d.ts.map +1 -1
- package/types/fields/TableMultiSelect.d.ts.map +1 -1
- package/types/frappeStoryTarget.d.ts +19 -1
- package/types/frappeStoryTarget.d.ts.map +1 -1
- package/types/frappeUsers.d.ts.map +1 -1
- package/types/index.d.ts +6 -2
- package/types/index.d.ts.map +1 -1
- package/types/liveErrors.d.ts +4 -0
- package/types/liveErrors.d.ts.map +1 -1
- package/types/useFrappeAggregate.d.ts +4 -0
- package/types/useFrappeAggregate.d.ts.map +1 -1
- package/types/useFrappeFacets.d.ts +143 -0
- package/types/useFrappeFacets.d.ts.map +1 -0
- package/dist/cjs/fields/Date/date.native.js +0 -277
- package/dist/cjs/fields/Date/date.native.js.map +0 -1
- package/dist/esm/fields/Date/date.native.js +0 -238
- package/dist/esm/fields/Date/date.native.js.map +0 -1
- package/dist/jsx/fields/Date/date.native.js +0 -277
- package/dist/jsx/fields/Date/date.native.js.map +0 -1
- package/src/fields/Date/date.native.tsx +0 -299
- package/types/fields/Date/date.native.d.ts +0 -19
- package/types/fields/Date/date.native.d.ts.map +0 -1
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useFrappeFacets — reusable facet counts for a doctype list, promoted from
|
|
3
|
+
* the backoffice list-sidebar data layer (sidebar-stats) so any table header
|
|
4
|
+
* can feed DataTableFacetMenu. Verified against a live bench:
|
|
5
|
+
*
|
|
6
|
+
* - `frappe.desk.listview.get_group_by_count` (POST {doctype,
|
|
7
|
+
* current_filters, field}) → `{ message: [{ name, count }] }`, ordered by
|
|
8
|
+
* count desc. For `field: "assigned_to"` the server aggregates the ToDo
|
|
9
|
+
* assignment table per user (System Users, non-cancelled assignments) —
|
|
10
|
+
* the proper desk semantics for the JSON-array `_assign` column. Used for
|
|
11
|
+
* the Assigned To and Created By facets (desk list_sidebar_group_by.js
|
|
12
|
+
* parity, including the Guest/Administrator scrub and "Me" pinning via
|
|
13
|
+
* `scrubUserFacetRows`).
|
|
14
|
+
*
|
|
15
|
+
* - `frappe.desk.reportview.get_sidebar_stats` (POST {stats, doctype,
|
|
16
|
+
* filters}) → `{ message: { stats: { [fieldname]: [label, count][] } } }`.
|
|
17
|
+
* `_user_tags` entries are per-tag (comma-split server-side) plus a
|
|
18
|
+
* trailing translated `["No Tags", n]` row; other columns are raw grouped
|
|
19
|
+
* values (empties excluded server-side). Used for the Tags, status, and
|
|
20
|
+
* arbitrary column facets (e.g. `module`). NOTE: `stats` and `filters`
|
|
21
|
+
* MUST be JSON-encoded strings — the endpoint json.loads() them and 500s
|
|
22
|
+
* on raw arrays.
|
|
23
|
+
*
|
|
24
|
+
* Desk parity on filter context: each facet's counts are computed with
|
|
25
|
+
* every OTHER active filter applied (tuples on the facet's own fieldname
|
|
26
|
+
* excluded — `filtersExcludingField`), mirroring desk's group-by sidebar.
|
|
27
|
+
*
|
|
28
|
+
* Revalidation is STALE-WHILE-VISIBLE: after a facet's first load, a
|
|
29
|
+
* doctype-scoped filter change keeps the shown options rendered and marks
|
|
30
|
+
* the facet `isStale` while the new counts reconcile in place — menus never
|
|
31
|
+
* blank while the user composes filters. `isLoading` is first-load only.
|
|
32
|
+
*
|
|
33
|
+
* Fixture mode (`connection.fixtures` — Storybook / tests): counts are
|
|
34
|
+
* computed client-side from the fixture rows via `matchesFilters` (the
|
|
35
|
+
* frappe operator set) and no network is touched.
|
|
36
|
+
*/
|
|
37
|
+
import {
|
|
38
|
+
CallModule,
|
|
39
|
+
HttpClient,
|
|
40
|
+
matchesFilters,
|
|
41
|
+
type AuthConfig,
|
|
42
|
+
type FixtureProvider,
|
|
43
|
+
} from "@multiplatform.one/frappe";
|
|
44
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
45
|
+
import { useFrappeConfig } from "./FrappeProvider";
|
|
46
|
+
|
|
47
|
+
/** One frappe filter tuple — `[fieldname, operator, value]`. */
|
|
48
|
+
export type FrappeFacetFilter = [string, string, unknown];
|
|
49
|
+
export type FrappeFacetFilters = FrappeFacetFilter[];
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Server-side label of the pseudo tag row (frappe translates it, so this
|
|
53
|
+
* detection — like desk's own `label == "No Tags"` compare — only works on
|
|
54
|
+
* English benches; non-English benches show it as a regular tag row).
|
|
55
|
+
*/
|
|
56
|
+
export const NO_TAGS_LABEL = "No Tags";
|
|
57
|
+
|
|
58
|
+
export interface FrappeFacetOption {
|
|
59
|
+
/** Raw facet value (user id, tag, status value). */
|
|
60
|
+
value: string;
|
|
61
|
+
count: number;
|
|
62
|
+
/** True for the server's synthetic "No Tags" row. */
|
|
63
|
+
isNoTags?: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface FrappeFacetState {
|
|
67
|
+
/**
|
|
68
|
+
* Undefined until the first load resolves (or after a doctype swap);
|
|
69
|
+
* kept POPULATED during revalidation — pair with `isStale`.
|
|
70
|
+
*/
|
|
71
|
+
options?: FrappeFacetOption[];
|
|
72
|
+
/** First load in flight — nothing to show yet. */
|
|
73
|
+
isLoading: boolean;
|
|
74
|
+
/** Revalidation in flight — shown options may be outdated. */
|
|
75
|
+
isStale: boolean;
|
|
76
|
+
error?: Error;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Connection shape shared with the other frappe-ui widgets. */
|
|
80
|
+
export interface FrappeFacetsConnection {
|
|
81
|
+
baseURL: string;
|
|
82
|
+
auth?: { useToken?: boolean; token?: string | (() => string | Promise<string>); type?: string };
|
|
83
|
+
fixtures?: FixtureProvider;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface UseFrappeFacetsOptions {
|
|
87
|
+
/** Override the ambient FrappeProvider connection. */
|
|
88
|
+
connection?: FrappeFacetsConnection;
|
|
89
|
+
/** Fieldname of the doctype's status/workflow Select field, when present. */
|
|
90
|
+
statusFieldname?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Extra column facets via get_sidebar_stats (e.g. `["module"]`) — results
|
|
93
|
+
* land under `columns[fieldname]`.
|
|
94
|
+
*/
|
|
95
|
+
columns?: readonly string[];
|
|
96
|
+
/** Set false to pause fetching (default true). */
|
|
97
|
+
enabled?: boolean;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface UseFrappeFacetsResult {
|
|
101
|
+
/** Unscrubbed user rows — pass through scrubUserFacetRows() to render. */
|
|
102
|
+
assigned: FrappeFacetState;
|
|
103
|
+
/** Unscrubbed user rows — pass through scrubUserFacetRows() to render. */
|
|
104
|
+
owner: FrappeFacetState;
|
|
105
|
+
tags: FrappeFacetState;
|
|
106
|
+
/** Empty-idle unless `statusFieldname` is set. */
|
|
107
|
+
status: FrappeFacetState;
|
|
108
|
+
/** Extra column facets, keyed by fieldname (see `options.columns`). */
|
|
109
|
+
columns: Record<string, FrappeFacetState>;
|
|
110
|
+
/** Immediate refetch of every facet. */
|
|
111
|
+
refresh: () => void;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ── Pure helpers (desk list_sidebar_group_by.js parity) ───────
|
|
115
|
+
|
|
116
|
+
/** Tuples on `fieldname` removed — the "other" filters for that facet. */
|
|
117
|
+
export function filtersExcludingField(
|
|
118
|
+
filters: FrappeFacetFilters,
|
|
119
|
+
fieldname: string,
|
|
120
|
+
): FrappeFacetFilters {
|
|
121
|
+
return filters.filter((filter) => filter[0] !== fieldname);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Exact-tuple active check (fieldname + operator + stringified value). */
|
|
125
|
+
export function isFacetFilterActive(
|
|
126
|
+
filters: FrappeFacetFilters,
|
|
127
|
+
tuple: FrappeFacetFilter,
|
|
128
|
+
): boolean {
|
|
129
|
+
return filters.some(
|
|
130
|
+
(filter) =>
|
|
131
|
+
filter[0] === tuple[0] &&
|
|
132
|
+
String(filter[1]).toLowerCase() === String(tuple[1]).toLowerCase() &&
|
|
133
|
+
String(filter[2]) === String(tuple[2]),
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Desk toggle semantics (list_sidebar_group_by.js setup_filter_by): clicking
|
|
139
|
+
* a row first clears every filter on that facet's fieldname, then applies
|
|
140
|
+
* the row's tuple unless it was already active (toggle off / replace).
|
|
141
|
+
*/
|
|
142
|
+
export function toggleFacetFilter(
|
|
143
|
+
filters: FrappeFacetFilters,
|
|
144
|
+
tuple: FrappeFacetFilter,
|
|
145
|
+
): FrappeFacetFilters {
|
|
146
|
+
const active = isFacetFilterActive(filters, tuple);
|
|
147
|
+
const rest = filtersExcludingField(filters, tuple[0]);
|
|
148
|
+
return active ? rest : [...rest, tuple];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Desk scrub for the user facets (list_sidebar_group_by.js): hide the
|
|
153
|
+
* Guest/Administrator noise — except the session user, who is pinned to
|
|
154
|
+
* the top ("Me"). Pure, applied at render time; skipped entirely while the
|
|
155
|
+
* session user is unknown so an Administrator-only bench still shows rows.
|
|
156
|
+
*/
|
|
157
|
+
export function scrubUserFacetRows(
|
|
158
|
+
rows: FrappeFacetOption[],
|
|
159
|
+
sessionUser?: string,
|
|
160
|
+
): FrappeFacetOption[] {
|
|
161
|
+
if (!sessionUser) return rows;
|
|
162
|
+
const current = rows.find((row) => row.value === sessionUser);
|
|
163
|
+
const rest = rows.filter((row) => !["Guest", "Administrator", sessionUser].includes(row.value));
|
|
164
|
+
return current ? [current, ...rest] : rest;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// ── Server fetchers ───────────────────────────────────────────
|
|
168
|
+
|
|
169
|
+
// One RPC client per connection — facets sharing a bench share it.
|
|
170
|
+
const callCache = new Map<string, CallModule>();
|
|
171
|
+
|
|
172
|
+
function getCall(connection: FrappeFacetsConnection): CallModule {
|
|
173
|
+
const key = `${connection.baseURL}:${connection.auth?.token ?? ""}:${connection.auth?.type ?? ""}`;
|
|
174
|
+
let call = callCache.get(key);
|
|
175
|
+
if (!call) {
|
|
176
|
+
const authConfig: AuthConfig | undefined = connection.auth
|
|
177
|
+
? {
|
|
178
|
+
useToken: connection.auth.useToken,
|
|
179
|
+
token: connection.auth.token,
|
|
180
|
+
type: connection.auth.type as AuthConfig["type"],
|
|
181
|
+
}
|
|
182
|
+
: undefined;
|
|
183
|
+
call = new CallModule(new HttpClient(connection.baseURL, authConfig));
|
|
184
|
+
callCache.set(key, call);
|
|
185
|
+
}
|
|
186
|
+
return call;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
interface GroupByCountRow {
|
|
190
|
+
name: string | null;
|
|
191
|
+
count: number;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
async function fetchGroupByCount(
|
|
195
|
+
call: CallModule,
|
|
196
|
+
doctype: string,
|
|
197
|
+
currentFilters: FrappeFacetFilters,
|
|
198
|
+
field: "assigned_to" | "owner",
|
|
199
|
+
): Promise<FrappeFacetOption[]> {
|
|
200
|
+
const res = await call.post<{ message?: GroupByCountRow[] }>(
|
|
201
|
+
"frappe.desk.listview.get_group_by_count",
|
|
202
|
+
{
|
|
203
|
+
doctype,
|
|
204
|
+
current_filters: JSON.stringify(currentFilters),
|
|
205
|
+
field,
|
|
206
|
+
},
|
|
207
|
+
);
|
|
208
|
+
const rows = res.payload?.message ?? [];
|
|
209
|
+
// Null groups ("Not Set") and zero counts are dropped like desk does; the
|
|
210
|
+
// session-user scrub happens at render time (scrubUserFacetRows) so rows
|
|
211
|
+
// don't need a refetch when the session user resolves.
|
|
212
|
+
return rows
|
|
213
|
+
.filter((row): row is GroupByCountRow & { name: string } => !!row.name && row.count !== 0)
|
|
214
|
+
.map((row) => ({ value: row.name, count: Number(row.count) || 0 }));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
async function fetchColumnStats(
|
|
218
|
+
call: CallModule,
|
|
219
|
+
doctype: string,
|
|
220
|
+
fieldname: string,
|
|
221
|
+
currentFilters: FrappeFacetFilters,
|
|
222
|
+
): Promise<[string, number][]> {
|
|
223
|
+
const res = await call.post<{ message?: { stats?: Record<string, [string, number][]> } }>(
|
|
224
|
+
"frappe.desk.reportview.get_sidebar_stats",
|
|
225
|
+
{
|
|
226
|
+
doctype,
|
|
227
|
+
stats: JSON.stringify([fieldname]),
|
|
228
|
+
filters: JSON.stringify(currentFilters),
|
|
229
|
+
},
|
|
230
|
+
);
|
|
231
|
+
return res.payload?.message?.stats?.[fieldname] ?? [];
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function mapTagStats(entries: [string, number][]): FrappeFacetOption[] {
|
|
235
|
+
return entries
|
|
236
|
+
.map(([label, count]) => ({
|
|
237
|
+
value: String(label),
|
|
238
|
+
count: Number(count) || 0,
|
|
239
|
+
isNoTags: String(label) === NO_TAGS_LABEL,
|
|
240
|
+
}))
|
|
241
|
+
.filter((row) => row.value !== "" && (!row.isNoTags || row.count > 0));
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function mapColumnStats(entries: [string, number][]): FrappeFacetOption[] {
|
|
245
|
+
return entries
|
|
246
|
+
.map(([value, count]) => ({ value: String(value), count: Number(count) || 0 }))
|
|
247
|
+
.filter((row) => row.value !== "")
|
|
248
|
+
.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// ── Fixture mode (Storybook / tests) ──────────────────────────
|
|
252
|
+
|
|
253
|
+
function parseAssignedUsers(raw: unknown): string[] {
|
|
254
|
+
if (Array.isArray(raw)) {
|
|
255
|
+
return raw.filter((user): user is string => typeof user === "string" && !!user);
|
|
256
|
+
}
|
|
257
|
+
if (typeof raw !== "string" || !raw) return [];
|
|
258
|
+
try {
|
|
259
|
+
const parsed = JSON.parse(raw);
|
|
260
|
+
return Array.isArray(parsed)
|
|
261
|
+
? parsed.filter((user): user is string => typeof user === "string" && !!user)
|
|
262
|
+
: [];
|
|
263
|
+
} catch {
|
|
264
|
+
return [];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function toSortedCounts(counts: Map<string, number>): FrappeFacetOption[] {
|
|
269
|
+
return [...counts.entries()]
|
|
270
|
+
.map(([value, count]) => ({ value, count }))
|
|
271
|
+
.sort((a, b) => b.count - a.count || a.value.localeCompare(b.value));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
interface FixtureFacets {
|
|
275
|
+
assigned: FrappeFacetOption[];
|
|
276
|
+
owner: FrappeFacetOption[];
|
|
277
|
+
tags: FrappeFacetOption[];
|
|
278
|
+
status?: FrappeFacetOption[];
|
|
279
|
+
columns: Record<string, FrappeFacetOption[]>;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
async function fetchFixtureFacets(
|
|
283
|
+
fixtures: FixtureProvider,
|
|
284
|
+
doctype: string,
|
|
285
|
+
filters: FrappeFacetFilters,
|
|
286
|
+
statusFieldname?: string,
|
|
287
|
+
columnFieldnames?: readonly string[],
|
|
288
|
+
): Promise<FixtureFacets> {
|
|
289
|
+
const all = (await fixtures.getList(doctype)) as Record<string, unknown>[];
|
|
290
|
+
const rowsFor = (fieldname: string) => {
|
|
291
|
+
const others = filtersExcludingField(filters, fieldname);
|
|
292
|
+
if (others.length === 0) return all;
|
|
293
|
+
// matchesFilters implements the frappe operator set (like/not like/…),
|
|
294
|
+
// which the fixture provider's own getList filtering does not.
|
|
295
|
+
return all.filter((row) =>
|
|
296
|
+
matchesFilters(
|
|
297
|
+
row as Parameters<typeof matchesFilters>[0],
|
|
298
|
+
others as Parameters<typeof matchesFilters>[1],
|
|
299
|
+
),
|
|
300
|
+
);
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
const assignedCounts = new Map<string, number>();
|
|
304
|
+
for (const row of rowsFor("_assign")) {
|
|
305
|
+
for (const user of parseAssignedUsers(row._assign)) {
|
|
306
|
+
assignedCounts.set(user, (assignedCounts.get(user) ?? 0) + 1);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const ownerCounts = new Map<string, number>();
|
|
311
|
+
for (const row of rowsFor("owner")) {
|
|
312
|
+
if (typeof row.owner === "string" && row.owner) {
|
|
313
|
+
ownerCounts.set(row.owner, (ownerCounts.get(row.owner) ?? 0) + 1);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
const tagCounts = new Map<string, number>();
|
|
318
|
+
let noTagCount = 0;
|
|
319
|
+
for (const row of rowsFor("_user_tags")) {
|
|
320
|
+
const tags = String((row._user_tags as string | undefined) ?? "")
|
|
321
|
+
.split(",")
|
|
322
|
+
.map((tag) => tag.trim())
|
|
323
|
+
.filter(Boolean);
|
|
324
|
+
if (tags.length === 0) {
|
|
325
|
+
noTagCount += 1;
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
for (const tag of tags) tagCounts.set(tag, (tagCounts.get(tag) ?? 0) + 1);
|
|
329
|
+
}
|
|
330
|
+
const tags = toSortedCounts(tagCounts);
|
|
331
|
+
if (tags.length > 0 && noTagCount > 0) {
|
|
332
|
+
tags.push({ value: NO_TAGS_LABEL, count: noTagCount, isNoTags: true });
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const countColumn = (fieldname: string): FrappeFacetOption[] => {
|
|
336
|
+
const counts = new Map<string, number>();
|
|
337
|
+
for (const row of rowsFor(fieldname)) {
|
|
338
|
+
const value = row[fieldname];
|
|
339
|
+
if (value !== undefined && value !== null && value !== "") {
|
|
340
|
+
counts.set(String(value), (counts.get(String(value)) ?? 0) + 1);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return toSortedCounts(counts);
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
const columns: Record<string, FrappeFacetOption[]> = {};
|
|
347
|
+
for (const fieldname of columnFieldnames ?? []) {
|
|
348
|
+
columns[fieldname] = countColumn(fieldname);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return {
|
|
352
|
+
assigned: toSortedCounts(assignedCounts),
|
|
353
|
+
owner: toSortedCounts(ownerCounts),
|
|
354
|
+
tags,
|
|
355
|
+
status: statusFieldname ? countColumn(statusFieldname) : undefined,
|
|
356
|
+
columns,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// ── Hook ──────────────────────────────────────────────────────
|
|
361
|
+
|
|
362
|
+
type BuiltinFacetKey = "assigned" | "owner" | "tags" | "status";
|
|
363
|
+
|
|
364
|
+
interface FacetsState {
|
|
365
|
+
assigned: FrappeFacetState;
|
|
366
|
+
owner: FrappeFacetState;
|
|
367
|
+
tags: FrappeFacetState;
|
|
368
|
+
status: FrappeFacetState;
|
|
369
|
+
columns: Record<string, FrappeFacetState>;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
const IDLE_FACET: FrappeFacetState = { isLoading: false, isStale: false };
|
|
373
|
+
|
|
374
|
+
function initialState(columnFieldnames: readonly string[]): FacetsState {
|
|
375
|
+
return {
|
|
376
|
+
assigned: { isLoading: true, isStale: false },
|
|
377
|
+
owner: { isLoading: true, isStale: false },
|
|
378
|
+
tags: { isLoading: true, isStale: false },
|
|
379
|
+
status: IDLE_FACET,
|
|
380
|
+
columns: Object.fromEntries(
|
|
381
|
+
columnFieldnames.map((fieldname) => [fieldname, { isLoading: true, isStale: false }]),
|
|
382
|
+
),
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Facet counts for a doctype list (Assigned To / Created By / Tags / status
|
|
388
|
+
* / arbitrary columns), revalidating stale-while-visible whenever the
|
|
389
|
+
* doctype, the (serialized) filters, or the facet set change. Per-facet
|
|
390
|
+
* results land independently so fast facets render before slow ones.
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```tsx
|
|
394
|
+
* const facets = useFrappeFacets(doctype, filters, {
|
|
395
|
+
* statusFieldname: "status",
|
|
396
|
+
* columns: ["module"],
|
|
397
|
+
* });
|
|
398
|
+
* <DataTableFacetMenu
|
|
399
|
+
* label={t("Created By")}
|
|
400
|
+
* loading={facets.owner.isLoading || facets.owner.isStale}
|
|
401
|
+
* options={scrubUserFacetRows(facets.owner.options ?? [], sessionUser).map((row) => ({
|
|
402
|
+
* value: row.value,
|
|
403
|
+
* label: row.value === sessionUser ? t("Me") : row.value,
|
|
404
|
+
* count: row.count,
|
|
405
|
+
* }))}
|
|
406
|
+
* />
|
|
407
|
+
* ```
|
|
408
|
+
*/
|
|
409
|
+
export function useFrappeFacets(
|
|
410
|
+
doctype: string,
|
|
411
|
+
filters: FrappeFacetFilters,
|
|
412
|
+
options?: UseFrappeFacetsOptions,
|
|
413
|
+
): UseFrappeFacetsResult {
|
|
414
|
+
const ambient = useFrappeConfig();
|
|
415
|
+
const connection = options?.connection ?? ambient;
|
|
416
|
+
const statusFieldname = options?.statusFieldname;
|
|
417
|
+
const enabled = options?.enabled !== false && !!doctype && !!connection;
|
|
418
|
+
|
|
419
|
+
// Value-identity keys: hosts may pass fresh arrays each render.
|
|
420
|
+
const filtersKey = JSON.stringify(filters ?? []);
|
|
421
|
+
const columnsKey = JSON.stringify(options?.columns ?? []);
|
|
422
|
+
const columnFieldnames = useMemo(
|
|
423
|
+
() => JSON.parse(columnsKey) as string[],
|
|
424
|
+
[columnsKey],
|
|
425
|
+
);
|
|
426
|
+
|
|
427
|
+
const [state, setState] = useState<FacetsState>(() => initialState(columnFieldnames));
|
|
428
|
+
const [generation, setGeneration] = useState(0);
|
|
429
|
+
|
|
430
|
+
// Facet-set identity — a swap resets hard (different domain, no stale
|
|
431
|
+
// options to keep); a filter change within the identity revalidates SWR.
|
|
432
|
+
const identity = `${connection?.baseURL ?? ""}:${doctype}:${statusFieldname ?? ""}:${columnsKey}`;
|
|
433
|
+
const identityRef = useRef(identity);
|
|
434
|
+
const fetchSeq = useRef(0);
|
|
435
|
+
|
|
436
|
+
const connectionRef = useRef(connection);
|
|
437
|
+
connectionRef.current = connection;
|
|
438
|
+
|
|
439
|
+
useEffect(() => {
|
|
440
|
+
if (!enabled) return;
|
|
441
|
+
const conn = connectionRef.current;
|
|
442
|
+
if (!conn) return;
|
|
443
|
+
const seq = ++fetchSeq.current;
|
|
444
|
+
const activeFilters = JSON.parse(filtersKey) as FrappeFacetFilters;
|
|
445
|
+
|
|
446
|
+
if (identityRef.current !== identity) {
|
|
447
|
+
identityRef.current = identity;
|
|
448
|
+
setState(initialState(columnFieldnames));
|
|
449
|
+
} else {
|
|
450
|
+
// SWR revalidation: keep options rendered, flag facets stale (first
|
|
451
|
+
// loads stay isLoading).
|
|
452
|
+
setState((prev) => {
|
|
453
|
+
const revalidate = (facet: FrappeFacetState): FrappeFacetState =>
|
|
454
|
+
facet.options !== undefined
|
|
455
|
+
? { ...facet, isStale: true, error: undefined }
|
|
456
|
+
: { ...facet, isLoading: true, error: undefined };
|
|
457
|
+
return {
|
|
458
|
+
assigned: revalidate(prev.assigned),
|
|
459
|
+
owner: revalidate(prev.owner),
|
|
460
|
+
tags: revalidate(prev.tags),
|
|
461
|
+
status: statusFieldname ? revalidate(prev.status) : IDLE_FACET,
|
|
462
|
+
columns: Object.fromEntries(
|
|
463
|
+
columnFieldnames.map((fieldname) => [
|
|
464
|
+
fieldname,
|
|
465
|
+
revalidate(prev.columns[fieldname] ?? { isLoading: true, isStale: false }),
|
|
466
|
+
]),
|
|
467
|
+
),
|
|
468
|
+
};
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
const done = (key: BuiltinFacetKey | ["columns", string], rows: FrappeFacetOption[]) => {
|
|
473
|
+
if (seq !== fetchSeq.current) return; // a newer fetch won
|
|
474
|
+
setState((prev) =>
|
|
475
|
+
Array.isArray(key)
|
|
476
|
+
? {
|
|
477
|
+
...prev,
|
|
478
|
+
columns: {
|
|
479
|
+
...prev.columns,
|
|
480
|
+
[key[1]]: { options: rows, isLoading: false, isStale: false },
|
|
481
|
+
},
|
|
482
|
+
}
|
|
483
|
+
: { ...prev, [key]: { options: rows, isLoading: false, isStale: false } },
|
|
484
|
+
);
|
|
485
|
+
};
|
|
486
|
+
const fail = (key: BuiltinFacetKey | ["columns", string], error: unknown) => {
|
|
487
|
+
if (seq !== fetchSeq.current) return;
|
|
488
|
+
const failed = (facet: FrappeFacetState): FrappeFacetState => ({
|
|
489
|
+
...facet,
|
|
490
|
+
isLoading: false,
|
|
491
|
+
isStale: false,
|
|
492
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
493
|
+
});
|
|
494
|
+
setState((prev) =>
|
|
495
|
+
Array.isArray(key)
|
|
496
|
+
? {
|
|
497
|
+
...prev,
|
|
498
|
+
columns: {
|
|
499
|
+
...prev.columns,
|
|
500
|
+
[key[1]]: failed(prev.columns[key[1]] ?? IDLE_FACET),
|
|
501
|
+
},
|
|
502
|
+
}
|
|
503
|
+
: { ...prev, [key]: failed(prev[key]) },
|
|
504
|
+
);
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
if (conn.fixtures) {
|
|
508
|
+
fetchFixtureFacets(conn.fixtures, doctype, activeFilters, statusFieldname, columnFieldnames)
|
|
509
|
+
.then((facets) => {
|
|
510
|
+
done("assigned", facets.assigned);
|
|
511
|
+
done("owner", facets.owner);
|
|
512
|
+
done("tags", facets.tags);
|
|
513
|
+
if (statusFieldname) done("status", facets.status ?? []);
|
|
514
|
+
for (const fieldname of columnFieldnames) {
|
|
515
|
+
done(["columns", fieldname], facets.columns[fieldname] ?? []);
|
|
516
|
+
}
|
|
517
|
+
})
|
|
518
|
+
.catch((error) => {
|
|
519
|
+
fail("assigned", error);
|
|
520
|
+
fail("owner", error);
|
|
521
|
+
fail("tags", error);
|
|
522
|
+
if (statusFieldname) fail("status", error);
|
|
523
|
+
for (const fieldname of columnFieldnames) fail(["columns", fieldname], error);
|
|
524
|
+
});
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
const call = getCall(conn);
|
|
529
|
+
fetchGroupByCount(call, doctype, filtersExcludingField(activeFilters, "_assign"), "assigned_to")
|
|
530
|
+
.then((rows) => done("assigned", rows))
|
|
531
|
+
.catch((error) => fail("assigned", error));
|
|
532
|
+
|
|
533
|
+
fetchGroupByCount(call, doctype, filtersExcludingField(activeFilters, "owner"), "owner")
|
|
534
|
+
.then((rows) => done("owner", rows))
|
|
535
|
+
.catch((error) => fail("owner", error));
|
|
536
|
+
|
|
537
|
+
fetchColumnStats(call, doctype, "_user_tags", filtersExcludingField(activeFilters, "_user_tags"))
|
|
538
|
+
.then((entries) => done("tags", mapTagStats(entries)))
|
|
539
|
+
.catch((error) => fail("tags", error));
|
|
540
|
+
|
|
541
|
+
if (statusFieldname) {
|
|
542
|
+
fetchColumnStats(call, doctype, statusFieldname, filtersExcludingField(activeFilters, statusFieldname))
|
|
543
|
+
.then((entries) => done("status", mapColumnStats(entries)))
|
|
544
|
+
.catch((error) => fail("status", error));
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
for (const fieldname of columnFieldnames) {
|
|
548
|
+
fetchColumnStats(call, doctype, fieldname, filtersExcludingField(activeFilters, fieldname))
|
|
549
|
+
.then((entries) => done(["columns", fieldname], mapColumnStats(entries)))
|
|
550
|
+
.catch((error) => fail(["columns", fieldname], error));
|
|
551
|
+
}
|
|
552
|
+
// oxlint-disable-next-line exhaustive-deps -- identity/filtersKey are the value-exact deps
|
|
553
|
+
}, [enabled, identity, filtersKey, generation]);
|
|
554
|
+
|
|
555
|
+
const refresh = useCallback(() => setGeneration((current) => current + 1), []);
|
|
556
|
+
|
|
557
|
+
return useMemo(
|
|
558
|
+
() => ({
|
|
559
|
+
assigned: state.assigned,
|
|
560
|
+
owner: state.owner,
|
|
561
|
+
tags: state.tags,
|
|
562
|
+
status: state.status,
|
|
563
|
+
columns: state.columns,
|
|
564
|
+
refresh,
|
|
565
|
+
}),
|
|
566
|
+
[state, refresh],
|
|
567
|
+
);
|
|
568
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeAssignment.d.ts","sourceRoot":"","sources":["../src/FrappeAssignment.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAYjE,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,2DAA2D;IAC3D,SAAS,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC;IACnF,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,GACvC,0BAA0B,CAW5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CAeb;
|
|
1
|
+
{"version":3,"file":"FrappeAssignment.d.ts","sourceRoot":"","sources":["../src/FrappeAssignment.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAYjE,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,2DAA2D;IAC3D,SAAS,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC;IACnF,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACzC;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,GACvC,0BAA0B,CAW5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CAeb;AAsUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAM5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeCalendar.d.ts","sourceRoot":"","sources":["../src/FrappeCalendar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FrappeCalendar.d.ts","sourceRoot":"","sources":["../src/FrappeCalendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
* returns no groups, and a subtle stale dim while a post-event refetch is
|
|
17
17
|
* in flight.
|
|
18
18
|
*/
|
|
19
|
-
import { type ChartConfig } from "@multiplatform.one/components";
|
|
20
|
-
import { type ChartCardProps } from "./FrappeDashboard";
|
|
19
|
+
import { type ChartCardProps, type ChartConfig } from "@multiplatform.one/components";
|
|
21
20
|
import { type FrappeAggregateOperation } from "./useFrappeAggregate";
|
|
22
21
|
/** Live data source for a chart series: one data point per group. */
|
|
23
22
|
export interface FrappeChartDataSource {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeChartCard.d.ts","sourceRoot":"","sources":["../src/FrappeChartCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"FrappeChartCard.d.ts","sourceRoot":"","sources":["../src/FrappeChartCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1E,8EAA8E;IAC9E,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IACnE,iEAAiE;IACjE,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA+BD,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,OAAO,EACP,IAAI,EACJ,WAAW,EACX,GAAG,cAAc,EAClB,EAAE,oBAAoB,2CA0FtB;AAED,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -50,7 +50,6 @@ export declare function FrappeDashboard<TDoc extends {
|
|
|
50
50
|
name: string;
|
|
51
51
|
doctype: string;
|
|
52
52
|
}>({ baseURL, auth, syncOptions, title, description, widgets: staticWidgets, dataSource, transformData, columns, gap, padding, autoRefresh, refreshInterval, loading, error, ...stackProps }: FrappeDashboardProps<TDoc>): import("react/jsx-runtime").JSX.Element;
|
|
53
|
-
export { KPICard, calculateTrend, calculatePercentageChange, aggregateData, type DashboardWidget, type KPICardConfig, type KPICardProps, type ChartConfig, type ChartCardProps, type ChartDataPoint, type ChartType, type TrendDirection, } from "@multiplatform.one/components";
|
|
54
53
|
/**
|
|
55
54
|
* ChartCard bridge that sanitizes series rows before render: values are
|
|
56
55
|
* coerced to numbers and rows without a finite value (missing, NaN,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeDashboard.d.ts","sourceRoot":"","sources":["../src/FrappeDashboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,OAAO,
|
|
1
|
+
{"version":3,"file":"FrappeDashboard.d.ts","sourceRoot":"","sources":["../src/FrappeDashboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAwB,KAAK,WAAW,EAAM,MAAM,SAAS,CAAC;AAIrE;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,IAAI;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;QAC3B,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;QACnD,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;KAC/B,EAAE,CAAC;CACL;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAE,SAAQ,IAAI,CAChG,WAAW,EACX,UAAU,CACX;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChG,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,eAAe,EAAE,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;CAC3C;AA8LD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EAC9E,OAAO,EACP,IAAI,EACJ,WAAW,EACX,KAAK,EACL,WAAW,EACX,OAAO,EAAE,aAAa,EACtB,UAAU,EACV,aAAa,EACb,OAAW,EACX,GAAQ,EACR,OAAY,EACZ,WAAmB,EACnB,eAAoB,EACpB,OAAO,EACP,KAAK,EACL,GAAG,UAAU,EACd,EAAE,oBAAoB,CAAC,IAAI,CAAC,2CAgH5B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,cAAc,2CAatE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeForm.d.ts","sourceRoot":"","sources":["../src/FrappeForm.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FrappeForm.d.ts","sourceRoot":"","sources":["../src/FrappeForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeGantt.d.ts","sourceRoot":"","sources":["../src/FrappeGantt.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAc,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FrappeGantt.d.ts","sourceRoot":"","sources":["../src/FrappeGantt.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAc,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAazD,MAAM,WAAW,gBAAgB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAE,SAAQ,IAAI,CAC5F,WAAW,EACX,UAAU,CACX;IACC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;IACjC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;IACjC,8GAA8G;IAC9G,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;IACjC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EAC1E,OAAO,EACP,IAAI,EACJ,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAoD,EACpD,QAAgD,EAChD,UAA6C,EAC7C,UAAU,EACV,IAAa,EACb,WAAW,EACX,UAAU,EACV,cAAc,EACd,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAgB,EAChB,cAAqB,EACrB,gBAAuB,EACvB,cAAkB,EAClB,WAAW,EACX,GAAG,UAAU,EACd,EAAE,gBAAgB,CAAC,IAAI,CAAC,2CAkLxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeKPICard.d.ts","sourceRoot":"","sources":["../src/FrappeKPICard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzD,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACvE;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA8BD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,UAAU,EACV,OAAO,EACP,IAAI,EACJ,WAAW,EACX,GAAG,UAAU,EACd,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"FrappeKPICard.d.ts","sourceRoot":"","sources":["../src/FrappeKPICard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzD,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACvE;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA8BD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,UAAU,EACV,OAAO,EACP,IAAI,EACJ,WAAW,EACX,GAAG,UAAU,EACd,EAAE,kBAAkB,2CAiEpB;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
|