@multiplatform.one/frappe-ui 7.4.1 → 7.5.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/FileBrowser/AttachLibrary.cjs +111 -0
- package/dist/cjs/FileBrowser/AttachLibrary.native.js +115 -0
- package/dist/cjs/FileBrowser/AttachLibrary.native.js.map +1 -0
- package/dist/cjs/FileBrowser/folderTree.cjs +84 -0
- package/dist/cjs/FileBrowser/folderTree.native.js +94 -0
- package/dist/cjs/FileBrowser/folderTree.native.js.map +1 -0
- package/dist/cjs/FileBrowser/index.cjs +661 -0
- package/dist/cjs/FileBrowser/index.native.js +735 -0
- package/dist/cjs/FileBrowser/index.native.js.map +1 -0
- package/dist/cjs/FileBrowser/types.cjs +18 -0
- package/dist/cjs/FileBrowser/types.native.js +21 -0
- package/dist/cjs/FileBrowser/types.native.js.map +1 -0
- package/dist/cjs/FileBrowser/viewPersistence.cjs +55 -0
- package/dist/cjs/FileBrowser/viewPersistence.native.js +60 -0
- package/dist/cjs/FileBrowser/viewPersistence.native.js.map +1 -0
- package/dist/cjs/FormSidebar.cjs +47 -47
- package/dist/cjs/FormSidebar.native.js +48 -50
- package/dist/cjs/FormSidebar.native.js.map +1 -1
- package/dist/cjs/FrappeAssignment.cjs +18 -13
- package/dist/cjs/FrappeAssignment.native.js +19 -13
- package/dist/cjs/FrappeAssignment.native.js.map +1 -1
- package/dist/cjs/FrappeCalendar.cjs +11 -10
- package/dist/cjs/FrappeCalendar.native.js +11 -10
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeChartCard.cjs +6 -15
- package/dist/cjs/FrappeChartCard.native.js +6 -15
- package/dist/cjs/FrappeChartCard.native.js.map +1 -1
- package/dist/cjs/FrappeDashboard.cjs +12 -9
- package/dist/cjs/FrappeDashboard.native.js +12 -9
- package/dist/cjs/FrappeDashboard.native.js.map +1 -1
- package/dist/cjs/FrappeForm.cjs +36 -25
- package/dist/cjs/FrappeForm.native.js +36 -25
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeGantt.cjs +7 -5
- package/dist/cjs/FrappeGantt.native.js +7 -5
- package/dist/cjs/FrappeGantt.native.js.map +1 -1
- package/dist/cjs/FrappeImageView.cjs +22 -22
- package/dist/cjs/FrappeImageView.native.js +24 -22
- package/dist/cjs/FrappeImageView.native.js.map +1 -1
- package/dist/cjs/FrappeKPICard.cjs +7 -29
- package/dist/cjs/FrappeKPICard.native.js +7 -29
- package/dist/cjs/FrappeKPICard.native.js.map +1 -1
- package/dist/cjs/FrappeKanban.cjs +11 -13
- package/dist/cjs/FrappeKanban.native.js +11 -13
- package/dist/cjs/FrappeKanban.native.js.map +1 -1
- package/dist/cjs/FrappeLikedBy.cjs +5 -5
- package/dist/cjs/FrappeLikedBy.native.js +6 -6
- package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +32 -33
- package/dist/cjs/FrappeListView.native.js +37 -39
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +30 -46
- package/dist/cjs/FrappeReportBuilder.native.js +30 -42
- package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
- package/dist/cjs/FrappeReportView.cjs +5 -5
- package/dist/cjs/FrappeReportView.native.js +5 -5
- package/dist/cjs/FrappeReportView.native.js.map +1 -1
- package/dist/cjs/FrappeTreeView.cjs +9 -6
- package/dist/cjs/FrappeTreeView.native.js +10 -6
- package/dist/cjs/FrappeTreeView.native.js.map +1 -1
- package/dist/cjs/desk/DeskFormPage.cjs +3 -3
- package/dist/cjs/desk/DeskFormPage.native.js +3 -3
- package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
- package/dist/cjs/desk/DeskListPage.cjs +2 -2
- package/dist/cjs/desk/DeskListPage.native.js +2 -2
- package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
- package/dist/cjs/desk/DeskShell.cjs +58 -38
- package/dist/cjs/desk/DeskShell.native.js +63 -44
- package/dist/cjs/desk/DeskShell.native.js.map +1 -1
- package/dist/cjs/desk/awesomebar.cjs +28 -16
- package/dist/cjs/desk/awesomebar.native.js +28 -16
- package/dist/cjs/desk/awesomebar.native.js.map +1 -1
- package/dist/cjs/fieldRegistry.cjs +15 -3
- package/dist/cjs/fieldRegistry.native.js +15 -3
- package/dist/cjs/fieldRegistry.native.js.map +1 -1
- package/dist/cjs/fields/Check/index.cjs +1 -1
- package/dist/cjs/fields/Check/index.native.js +1 -1
- package/dist/cjs/fields/Check/index.native.js.map +1 -1
- package/dist/cjs/fields/Color/index.cjs +1 -1
- package/dist/cjs/fields/Color/index.native.js +1 -1
- package/dist/cjs/fields/Color/index.native.js.map +1 -1
- package/dist/cjs/fields/Data/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/index.native.js +47 -34
- package/dist/cjs/fields/Date/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/sheetKeyboard.cjs +54 -0
- package/dist/cjs/fields/Date/sheetKeyboard.native.js +57 -0
- package/dist/cjs/fields/Date/sheetKeyboard.native.js.map +1 -0
- package/dist/cjs/fields/DynamicLink.cjs +37 -128
- package/dist/cjs/fields/DynamicLink.native.js +40 -138
- package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload.cjs +233 -50
- package/dist/cjs/fields/FileUpload.native.js +242 -51
- package/dist/cjs/fields/FileUpload.native.js.map +1 -1
- package/dist/cjs/fields/FileUploadField/index.cjs +53 -20
- package/dist/cjs/fields/FileUploadField/index.native.js +56 -20
- package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
- package/dist/cjs/fields/HTML/index.cjs +30 -51
- package/dist/cjs/fields/HTML/index.native.js +30 -51
- package/dist/cjs/fields/HTML/index.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.cjs +73 -0
- package/dist/cjs/fields/Icon/index.native.js +76 -0
- package/dist/cjs/fields/Icon/index.native.js.map +1 -0
- package/dist/cjs/fields/Link.cjs +34 -8
- package/dist/cjs/fields/Link.native.js +35 -9
- package/dist/cjs/fields/Link.native.js.map +1 -1
- package/dist/cjs/fields/LinkTree.cjs +114 -0
- package/dist/cjs/fields/LinkTree.native.js +125 -0
- package/dist/cjs/fields/LinkTree.native.js.map +1 -0
- package/dist/cjs/fields/LongText/index.cjs +6 -4
- package/dist/cjs/fields/LongText/index.native.js +6 -4
- package/dist/cjs/fields/LongText/index.native.js.map +1 -1
- package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
- package/dist/cjs/fields/Password/index.cjs +178 -16
- package/dist/cjs/fields/Password/index.native.js +197 -16
- package/dist/cjs/fields/Password/index.native.js.map +1 -1
- package/dist/cjs/fields/Phone/index.native.js.map +1 -1
- package/dist/cjs/fields/ReadOnly/index.cjs +34 -48
- package/dist/cjs/fields/ReadOnly/index.native.js +34 -46
- package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +1 -1
- package/dist/cjs/fields/Select/index.native.js +1 -1
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/SmallText/index.cjs +4 -3
- package/dist/cjs/fields/SmallText/index.native.js +4 -3
- package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
- package/dist/cjs/fields/TableMultiSelect.cjs +39 -150
- package/dist/cjs/fields/TableMultiSelect.native.js +44 -171
- package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/cjs/fields/TextEditor/index.cjs +26 -293
- package/dist/cjs/index.cjs +9 -0
- package/dist/cjs/index.native.js +9 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/schemaForm/SchemaWizard.cjs +182 -0
- package/dist/cjs/schemaForm/SchemaWizard.native.js +232 -0
- package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -0
- package/dist/cjs/schemaForm/index.cjs +1 -1
- package/dist/cjs/schemaForm/index.native.js +1 -1
- package/dist/cjs/schemaForm/index.native.js.map +1 -1
- package/dist/cjs/shared/useKeyboardInset.cjs +48 -0
- package/dist/cjs/shared/useKeyboardInset.native.js +53 -0
- package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -0
- package/dist/esm/FileBrowser/AttachLibrary.mjs +86 -0
- package/dist/esm/FileBrowser/AttachLibrary.mjs.map +1 -0
- package/dist/esm/FileBrowser/AttachLibrary.native.js +87 -0
- package/dist/esm/FileBrowser/AttachLibrary.native.js.map +1 -0
- package/dist/esm/FileBrowser/folderTree.mjs +52 -0
- package/dist/esm/FileBrowser/folderTree.mjs.map +1 -0
- package/dist/esm/FileBrowser/folderTree.native.js +59 -0
- package/dist/esm/FileBrowser/folderTree.native.js.map +1 -0
- package/dist/esm/FileBrowser/index.mjs +636 -0
- package/dist/esm/FileBrowser/index.mjs.map +1 -0
- package/dist/esm/FileBrowser/index.native.js +707 -0
- package/dist/esm/FileBrowser/index.native.js.map +1 -0
- package/dist/esm/FileBrowser/types.mjs +2 -0
- package/dist/esm/FileBrowser/types.mjs.map +1 -0
- package/dist/esm/FileBrowser/types.native.js +2 -0
- package/dist/esm/FileBrowser/types.native.js.map +1 -0
- package/dist/esm/FileBrowser/viewPersistence.mjs +29 -0
- package/dist/esm/FileBrowser/viewPersistence.mjs.map +1 -0
- package/dist/esm/FileBrowser/viewPersistence.native.js +31 -0
- package/dist/esm/FileBrowser/viewPersistence.native.js.map +1 -0
- package/dist/esm/FormSidebar.mjs +46 -46
- package/dist/esm/FormSidebar.mjs.map +1 -1
- package/dist/esm/FormSidebar.native.js +47 -49
- package/dist/esm/FormSidebar.native.js.map +1 -1
- package/dist/esm/FrappeAssignment.mjs +19 -14
- package/dist/esm/FrappeAssignment.mjs.map +1 -1
- package/dist/esm/FrappeAssignment.native.js +20 -14
- package/dist/esm/FrappeAssignment.native.js.map +1 -1
- package/dist/esm/FrappeCalendar.mjs +12 -11
- package/dist/esm/FrappeCalendar.mjs.map +1 -1
- package/dist/esm/FrappeCalendar.native.js +12 -11
- package/dist/esm/FrappeCalendar.native.js.map +1 -1
- package/dist/esm/FrappeChartCard.mjs +7 -16
- package/dist/esm/FrappeChartCard.mjs.map +1 -1
- package/dist/esm/FrappeChartCard.native.js +7 -16
- package/dist/esm/FrappeChartCard.native.js.map +1 -1
- package/dist/esm/FrappeDashboard.mjs +12 -9
- package/dist/esm/FrappeDashboard.mjs.map +1 -1
- package/dist/esm/FrappeDashboard.native.js +12 -9
- package/dist/esm/FrappeDashboard.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +35 -24
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +35 -24
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeGantt.mjs +7 -5
- package/dist/esm/FrappeGantt.mjs.map +1 -1
- package/dist/esm/FrappeGantt.native.js +7 -5
- package/dist/esm/FrappeGantt.native.js.map +1 -1
- package/dist/esm/FrappeImageView.mjs +23 -23
- package/dist/esm/FrappeImageView.mjs.map +1 -1
- package/dist/esm/FrappeImageView.native.js +25 -23
- package/dist/esm/FrappeImageView.native.js.map +1 -1
- package/dist/esm/FrappeKPICard.mjs +7 -29
- package/dist/esm/FrappeKPICard.mjs.map +1 -1
- package/dist/esm/FrappeKPICard.native.js +7 -29
- package/dist/esm/FrappeKPICard.native.js.map +1 -1
- package/dist/esm/FrappeKanban.mjs +13 -15
- package/dist/esm/FrappeKanban.mjs.map +1 -1
- package/dist/esm/FrappeKanban.native.js +13 -15
- package/dist/esm/FrappeKanban.native.js.map +1 -1
- package/dist/esm/FrappeLikedBy.mjs +6 -6
- package/dist/esm/FrappeLikedBy.mjs.map +1 -1
- package/dist/esm/FrappeLikedBy.native.js +7 -7
- package/dist/esm/FrappeLikedBy.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +33 -34
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +38 -40
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +27 -43
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +27 -39
- package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
- package/dist/esm/FrappeReportView.mjs +6 -6
- package/dist/esm/FrappeReportView.mjs.map +1 -1
- package/dist/esm/FrappeReportView.native.js +6 -6
- package/dist/esm/FrappeReportView.native.js.map +1 -1
- package/dist/esm/FrappeTreeView.mjs +9 -6
- package/dist/esm/FrappeTreeView.mjs.map +1 -1
- package/dist/esm/FrappeTreeView.native.js +10 -6
- package/dist/esm/FrappeTreeView.native.js.map +1 -1
- package/dist/esm/desk/DeskFormPage.mjs +3 -3
- package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
- package/dist/esm/desk/DeskFormPage.native.js +3 -3
- package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
- package/dist/esm/desk/DeskListPage.mjs +2 -2
- package/dist/esm/desk/DeskListPage.mjs.map +1 -1
- package/dist/esm/desk/DeskListPage.native.js +2 -2
- package/dist/esm/desk/DeskListPage.native.js.map +1 -1
- package/dist/esm/desk/DeskShell.mjs +48 -28
- package/dist/esm/desk/DeskShell.mjs.map +1 -1
- package/dist/esm/desk/DeskShell.native.js +52 -33
- package/dist/esm/desk/DeskShell.native.js.map +1 -1
- package/dist/esm/desk/awesomebar.mjs +29 -17
- package/dist/esm/desk/awesomebar.mjs.map +1 -1
- package/dist/esm/desk/awesomebar.native.js +29 -17
- package/dist/esm/desk/awesomebar.native.js.map +1 -1
- package/dist/esm/fieldRegistry.mjs +16 -4
- package/dist/esm/fieldRegistry.mjs.map +1 -1
- package/dist/esm/fieldRegistry.native.js +16 -4
- package/dist/esm/fieldRegistry.native.js.map +1 -1
- package/dist/esm/fields/Check/index.mjs +1 -1
- package/dist/esm/fields/Check/index.mjs.map +1 -1
- package/dist/esm/fields/Check/index.native.js +1 -1
- package/dist/esm/fields/Check/index.native.js.map +1 -1
- package/dist/esm/fields/Color/index.mjs +1 -1
- package/dist/esm/fields/Color/index.mjs.map +1 -1
- package/dist/esm/fields/Color/index.native.js +1 -1
- package/dist/esm/fields/Color/index.native.js.map +1 -1
- package/dist/esm/fields/Data/index.mjs.map +1 -1
- package/dist/esm/fields/Data/index.native.js.map +1 -1
- package/dist/esm/fields/Date/index.native.js +46 -33
- package/dist/esm/fields/Date/index.native.js.map +1 -1
- package/dist/esm/fields/Date/sheetKeyboard.mjs +21 -0
- package/dist/esm/fields/Date/sheetKeyboard.mjs.map +1 -0
- package/dist/esm/fields/Date/sheetKeyboard.native.js +21 -0
- package/dist/esm/fields/Date/sheetKeyboard.native.js.map +1 -0
- package/dist/esm/fields/DynamicLink.mjs +37 -128
- package/dist/esm/fields/DynamicLink.mjs.map +1 -1
- package/dist/esm/fields/DynamicLink.native.js +40 -138
- package/dist/esm/fields/DynamicLink.native.js.map +1 -1
- package/dist/esm/fields/FileUpload.mjs +234 -51
- package/dist/esm/fields/FileUpload.mjs.map +1 -1
- package/dist/esm/fields/FileUpload.native.js +243 -52
- package/dist/esm/fields/FileUpload.native.js.map +1 -1
- package/dist/esm/fields/FileUploadField/index.mjs +55 -22
- package/dist/esm/fields/FileUploadField/index.mjs.map +1 -1
- package/dist/esm/fields/FileUploadField/index.native.js +58 -22
- package/dist/esm/fields/FileUploadField/index.native.js.map +1 -1
- package/dist/esm/fields/HTML/index.mjs +33 -54
- package/dist/esm/fields/HTML/index.mjs.map +1 -1
- package/dist/esm/fields/HTML/index.native.js +33 -54
- package/dist/esm/fields/HTML/index.native.js.map +1 -1
- package/dist/esm/fields/Icon/index.mjs +48 -0
- package/dist/esm/fields/Icon/index.mjs.map +1 -0
- package/dist/esm/fields/Icon/index.native.js +48 -0
- package/dist/esm/fields/Icon/index.native.js.map +1 -0
- package/dist/esm/fields/Link.mjs +35 -9
- package/dist/esm/fields/Link.mjs.map +1 -1
- package/dist/esm/fields/Link.native.js +36 -10
- package/dist/esm/fields/Link.native.js.map +1 -1
- package/dist/esm/fields/LinkTree.mjs +89 -0
- package/dist/esm/fields/LinkTree.mjs.map +1 -0
- package/dist/esm/fields/LinkTree.native.js +97 -0
- package/dist/esm/fields/LinkTree.native.js.map +1 -0
- package/dist/esm/fields/LongText/index.mjs +7 -5
- package/dist/esm/fields/LongText/index.mjs.map +1 -1
- package/dist/esm/fields/LongText/index.native.js +7 -5
- package/dist/esm/fields/LongText/index.native.js.map +1 -1
- package/dist/esm/fields/Numeric/index.mjs.map +1 -1
- package/dist/esm/fields/Numeric/index.native.js.map +1 -1
- package/dist/esm/fields/Password/index.mjs +180 -18
- package/dist/esm/fields/Password/index.mjs.map +1 -1
- package/dist/esm/fields/Password/index.native.js +199 -18
- package/dist/esm/fields/Password/index.native.js.map +1 -1
- package/dist/esm/fields/Phone/index.mjs.map +1 -1
- package/dist/esm/fields/Phone/index.native.js.map +1 -1
- package/dist/esm/fields/ReadOnly/index.mjs +36 -50
- package/dist/esm/fields/ReadOnly/index.mjs.map +1 -1
- package/dist/esm/fields/ReadOnly/index.native.js +36 -48
- package/dist/esm/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +1 -1
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +1 -1
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/SmallText/index.mjs +5 -4
- package/dist/esm/fields/SmallText/index.mjs.map +1 -1
- package/dist/esm/fields/SmallText/index.native.js +5 -4
- package/dist/esm/fields/SmallText/index.native.js.map +1 -1
- package/dist/esm/fields/TableMultiSelect.mjs +41 -152
- package/dist/esm/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/esm/fields/TableMultiSelect.native.js +46 -173
- package/dist/esm/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/esm/fields/TextEditor/index.mjs +28 -284
- package/dist/esm/fields/TextEditor/index.mjs.map +1 -1
- package/dist/esm/index.mjs +5 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/schemaForm/SchemaWizard.mjs +156 -0
- package/dist/esm/schemaForm/SchemaWizard.mjs.map +1 -0
- package/dist/esm/schemaForm/SchemaWizard.native.js +203 -0
- package/dist/esm/schemaForm/SchemaWizard.native.js.map +1 -0
- package/dist/esm/schemaForm/index.mjs +1 -1
- package/dist/esm/schemaForm/index.mjs.map +1 -1
- package/dist/esm/schemaForm/index.native.js +1 -1
- package/dist/esm/schemaForm/index.native.js.map +1 -1
- package/dist/esm/shared/useKeyboardInset.mjs +23 -0
- package/dist/esm/shared/useKeyboardInset.mjs.map +1 -0
- package/dist/esm/shared/useKeyboardInset.native.js +25 -0
- package/dist/esm/shared/useKeyboardInset.native.js.map +1 -0
- package/dist/jsx/FileBrowser/AttachLibrary.mjs +86 -0
- package/dist/jsx/FileBrowser/AttachLibrary.mjs.map +1 -0
- package/dist/jsx/FileBrowser/AttachLibrary.native.js +115 -0
- package/dist/jsx/FileBrowser/AttachLibrary.native.js.map +1 -0
- package/dist/jsx/FileBrowser/folderTree.mjs +52 -0
- package/dist/jsx/FileBrowser/folderTree.mjs.map +1 -0
- package/dist/jsx/FileBrowser/folderTree.native.js +94 -0
- package/dist/jsx/FileBrowser/folderTree.native.js.map +1 -0
- package/dist/jsx/FileBrowser/index.mjs +636 -0
- package/dist/jsx/FileBrowser/index.mjs.map +1 -0
- package/dist/jsx/FileBrowser/index.native.js +735 -0
- package/dist/jsx/FileBrowser/index.native.js.map +1 -0
- package/dist/jsx/FileBrowser/types.mjs +2 -0
- package/dist/jsx/FileBrowser/types.mjs.map +1 -0
- package/dist/jsx/FileBrowser/types.native.js +21 -0
- package/dist/jsx/FileBrowser/types.native.js.map +1 -0
- package/dist/jsx/FileBrowser/viewPersistence.mjs +29 -0
- package/dist/jsx/FileBrowser/viewPersistence.mjs.map +1 -0
- package/dist/jsx/FileBrowser/viewPersistence.native.js +60 -0
- package/dist/jsx/FileBrowser/viewPersistence.native.js.map +1 -0
- package/dist/jsx/FormSidebar.mjs +46 -46
- package/dist/jsx/FormSidebar.mjs.map +1 -1
- package/dist/jsx/FormSidebar.native.js +48 -50
- package/dist/jsx/FormSidebar.native.js.map +1 -1
- package/dist/jsx/FrappeAssignment.mjs +19 -14
- package/dist/jsx/FrappeAssignment.mjs.map +1 -1
- package/dist/jsx/FrappeAssignment.native.js +19 -13
- package/dist/jsx/FrappeAssignment.native.js.map +1 -1
- package/dist/jsx/FrappeCalendar.mjs +12 -11
- package/dist/jsx/FrappeCalendar.mjs.map +1 -1
- package/dist/jsx/FrappeCalendar.native.js +11 -10
- package/dist/jsx/FrappeCalendar.native.js.map +1 -1
- package/dist/jsx/FrappeChartCard.mjs +7 -16
- package/dist/jsx/FrappeChartCard.mjs.map +1 -1
- package/dist/jsx/FrappeChartCard.native.js +6 -15
- package/dist/jsx/FrappeChartCard.native.js.map +1 -1
- package/dist/jsx/FrappeDashboard.mjs +12 -9
- package/dist/jsx/FrappeDashboard.mjs.map +1 -1
- package/dist/jsx/FrappeDashboard.native.js +12 -9
- package/dist/jsx/FrappeDashboard.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +35 -24
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +36 -25
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeGantt.mjs +7 -5
- package/dist/jsx/FrappeGantt.mjs.map +1 -1
- package/dist/jsx/FrappeGantt.native.js +7 -5
- package/dist/jsx/FrappeGantt.native.js.map +1 -1
- package/dist/jsx/FrappeImageView.mjs +23 -23
- package/dist/jsx/FrappeImageView.mjs.map +1 -1
- package/dist/jsx/FrappeImageView.native.js +24 -22
- package/dist/jsx/FrappeImageView.native.js.map +1 -1
- package/dist/jsx/FrappeKPICard.mjs +7 -29
- package/dist/jsx/FrappeKPICard.mjs.map +1 -1
- package/dist/jsx/FrappeKPICard.native.js +7 -29
- package/dist/jsx/FrappeKPICard.native.js.map +1 -1
- package/dist/jsx/FrappeKanban.mjs +13 -15
- package/dist/jsx/FrappeKanban.mjs.map +1 -1
- package/dist/jsx/FrappeKanban.native.js +11 -13
- package/dist/jsx/FrappeKanban.native.js.map +1 -1
- package/dist/jsx/FrappeLikedBy.mjs +6 -6
- package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
- package/dist/jsx/FrappeLikedBy.native.js +6 -6
- package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +33 -34
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +37 -39
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +27 -43
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +30 -42
- package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
- package/dist/jsx/FrappeReportView.mjs +6 -6
- package/dist/jsx/FrappeReportView.mjs.map +1 -1
- package/dist/jsx/FrappeReportView.native.js +5 -5
- package/dist/jsx/FrappeReportView.native.js.map +1 -1
- package/dist/jsx/FrappeTreeView.mjs +9 -6
- package/dist/jsx/FrappeTreeView.mjs.map +1 -1
- package/dist/jsx/FrappeTreeView.native.js +10 -6
- package/dist/jsx/FrappeTreeView.native.js.map +1 -1
- package/dist/jsx/desk/DeskFormPage.mjs +3 -3
- package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
- package/dist/jsx/desk/DeskFormPage.native.js +3 -3
- package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
- package/dist/jsx/desk/DeskListPage.mjs +2 -2
- package/dist/jsx/desk/DeskListPage.mjs.map +1 -1
- package/dist/jsx/desk/DeskListPage.native.js +2 -2
- package/dist/jsx/desk/DeskListPage.native.js.map +1 -1
- package/dist/jsx/desk/DeskShell.mjs +48 -28
- package/dist/jsx/desk/DeskShell.mjs.map +1 -1
- package/dist/jsx/desk/DeskShell.native.js +63 -44
- package/dist/jsx/desk/DeskShell.native.js.map +1 -1
- package/dist/jsx/desk/awesomebar.mjs +29 -17
- package/dist/jsx/desk/awesomebar.mjs.map +1 -1
- package/dist/jsx/desk/awesomebar.native.js +28 -16
- package/dist/jsx/desk/awesomebar.native.js.map +1 -1
- package/dist/jsx/fieldRegistry.mjs +16 -4
- package/dist/jsx/fieldRegistry.mjs.map +1 -1
- package/dist/jsx/fieldRegistry.native.js +15 -3
- package/dist/jsx/fieldRegistry.native.js.map +1 -1
- package/dist/jsx/fields/Check/index.mjs +1 -1
- package/dist/jsx/fields/Check/index.mjs.map +1 -1
- package/dist/jsx/fields/Check/index.native.js +1 -1
- package/dist/jsx/fields/Check/index.native.js.map +1 -1
- package/dist/jsx/fields/Color/index.mjs +1 -1
- package/dist/jsx/fields/Color/index.mjs.map +1 -1
- package/dist/jsx/fields/Color/index.native.js +1 -1
- package/dist/jsx/fields/Color/index.native.js.map +1 -1
- package/dist/jsx/fields/Data/index.mjs.map +1 -1
- package/dist/jsx/fields/Data/index.native.js.map +1 -1
- package/dist/jsx/fields/Date/index.native.js +47 -34
- package/dist/jsx/fields/Date/index.native.js.map +1 -1
- package/dist/jsx/fields/Date/sheetKeyboard.mjs +21 -0
- package/dist/jsx/fields/Date/sheetKeyboard.mjs.map +1 -0
- package/dist/jsx/fields/Date/sheetKeyboard.native.js +57 -0
- package/dist/jsx/fields/Date/sheetKeyboard.native.js.map +1 -0
- package/dist/jsx/fields/DynamicLink.mjs +37 -128
- package/dist/jsx/fields/DynamicLink.mjs.map +1 -1
- package/dist/jsx/fields/DynamicLink.native.js +40 -138
- package/dist/jsx/fields/DynamicLink.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload.mjs +234 -51
- package/dist/jsx/fields/FileUpload.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload.native.js +242 -51
- package/dist/jsx/fields/FileUpload.native.js.map +1 -1
- package/dist/jsx/fields/FileUploadField/index.mjs +55 -22
- package/dist/jsx/fields/FileUploadField/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUploadField/index.native.js +56 -20
- package/dist/jsx/fields/FileUploadField/index.native.js.map +1 -1
- package/dist/jsx/fields/HTML/index.mjs +33 -54
- package/dist/jsx/fields/HTML/index.mjs.map +1 -1
- package/dist/jsx/fields/HTML/index.native.js +30 -51
- package/dist/jsx/fields/HTML/index.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.mjs +48 -0
- package/dist/jsx/fields/Icon/index.mjs.map +1 -0
- package/dist/jsx/fields/Icon/index.native.js +76 -0
- package/dist/jsx/fields/Icon/index.native.js.map +1 -0
- package/dist/jsx/fields/Link.mjs +35 -9
- package/dist/jsx/fields/Link.mjs.map +1 -1
- package/dist/jsx/fields/Link.native.js +35 -9
- package/dist/jsx/fields/Link.native.js.map +1 -1
- package/dist/jsx/fields/LinkTree.mjs +89 -0
- package/dist/jsx/fields/LinkTree.mjs.map +1 -0
- package/dist/jsx/fields/LinkTree.native.js +125 -0
- package/dist/jsx/fields/LinkTree.native.js.map +1 -0
- package/dist/jsx/fields/LongText/index.mjs +7 -5
- package/dist/jsx/fields/LongText/index.mjs.map +1 -1
- package/dist/jsx/fields/LongText/index.native.js +6 -4
- package/dist/jsx/fields/LongText/index.native.js.map +1 -1
- package/dist/jsx/fields/Numeric/index.mjs.map +1 -1
- package/dist/jsx/fields/Numeric/index.native.js.map +1 -1
- package/dist/jsx/fields/Password/index.mjs +180 -18
- package/dist/jsx/fields/Password/index.mjs.map +1 -1
- package/dist/jsx/fields/Password/index.native.js +197 -16
- package/dist/jsx/fields/Password/index.native.js.map +1 -1
- package/dist/jsx/fields/Phone/index.mjs.map +1 -1
- package/dist/jsx/fields/Phone/index.native.js.map +1 -1
- package/dist/jsx/fields/ReadOnly/index.mjs +36 -50
- package/dist/jsx/fields/ReadOnly/index.mjs.map +1 -1
- package/dist/jsx/fields/ReadOnly/index.native.js +34 -46
- package/dist/jsx/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +1 -1
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +1 -1
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/SmallText/index.mjs +5 -4
- package/dist/jsx/fields/SmallText/index.mjs.map +1 -1
- package/dist/jsx/fields/SmallText/index.native.js +4 -3
- package/dist/jsx/fields/SmallText/index.native.js.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.mjs +41 -152
- package/dist/jsx/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.native.js +44 -171
- package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/jsx/fields/TextEditor/index.mjs +28 -284
- package/dist/jsx/fields/TextEditor/index.mjs.map +1 -1
- package/dist/jsx/index.js +5 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +9 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/schemaForm/SchemaWizard.mjs +156 -0
- package/dist/jsx/schemaForm/SchemaWizard.mjs.map +1 -0
- package/dist/jsx/schemaForm/SchemaWizard.native.js +232 -0
- package/dist/jsx/schemaForm/SchemaWizard.native.js.map +1 -0
- package/dist/jsx/schemaForm/index.mjs +1 -1
- package/dist/jsx/schemaForm/index.mjs.map +1 -1
- package/dist/jsx/schemaForm/index.native.js +1 -1
- package/dist/jsx/schemaForm/index.native.js.map +1 -1
- package/dist/jsx/shared/useKeyboardInset.mjs +23 -0
- package/dist/jsx/shared/useKeyboardInset.mjs.map +1 -0
- package/dist/jsx/shared/useKeyboardInset.native.js +53 -0
- package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -0
- package/package.json +16 -16
- package/src/FileBrowser/AttachLibrary.tsx +90 -0
- package/src/FileBrowser/FileBrowser.spec.tsx +268 -0
- package/src/FileBrowser/FileBrowser.stories.tsx +93 -0
- package/src/FileBrowser/folderTree.ts +62 -0
- package/src/FileBrowser/index.tsx +724 -0
- package/src/FileBrowser/types.ts +61 -0
- package/src/FileBrowser/viewPersistence.ts +37 -0
- package/src/FormSidebar.stories.tsx +82 -25
- package/src/FormSidebar.tsx +51 -37
- package/src/FrappeAssignment.stories.tsx +158 -12
- package/src/FrappeAssignment.tsx +11 -9
- package/src/FrappeCalendar.stories.tsx +85 -9
- package/src/FrappeCalendar.tsx +9 -9
- package/src/FrappeChartCard.stories.tsx +107 -14
- package/src/FrappeChartCard.tsx +5 -12
- package/src/FrappeDashboard.stories.tsx +79 -9
- package/src/FrappeDashboard.tsx +8 -8
- package/src/FrappeForm.tsx +36 -24
- package/src/FrappeGantt.stories.tsx +73 -4
- package/src/FrappeGantt.tsx +7 -4
- package/src/FrappeImageView.tsx +23 -22
- package/src/FrappeKPICard.stories.tsx +110 -10
- package/src/FrappeKPICard.tsx +6 -22
- package/src/FrappeKanban.stories.tsx +115 -9
- package/src/FrappeKanban.tsx +10 -9
- package/src/FrappeLikedBy.stories.tsx +82 -10
- package/src/FrappeLikedBy.tsx +6 -6
- package/src/FrappeList.stories.tsx +85 -8
- package/src/FrappeListView.spec.tsx +59 -0
- package/src/FrappeListView.tsx +27 -30
- package/src/FrappeProvider.stories.tsx +53 -2
- package/src/FrappeReportBuilder.tsx +21 -34
- package/src/FrappeReportView.tsx +4 -4
- package/src/FrappeTreeView.tsx +8 -4
- package/src/components/attachments.stories.tsx +79 -7
- package/src/components/tags.stories.tsx +131 -6
- package/src/components/timeline.stories.tsx +128 -7
- package/src/desk/Awesomebar.stories.tsx +3 -2
- package/src/desk/DeskFormPage.tsx +3 -2
- package/src/desk/DeskListPage.tsx +2 -1
- package/src/desk/DeskShell.stories.tsx +21 -2
- package/src/desk/DeskShell.tsx +56 -39
- package/src/desk/awesomebar.tsx +33 -22
- package/src/fieldRegistry.spec.tsx +17 -1
- package/src/fieldRegistry.ts +14 -4
- package/src/fields/Barcode/Barcode.stories.tsx +32 -0
- package/src/fields/Check/Check.spec.tsx +27 -0
- package/src/fields/Check/Check.stories.tsx +58 -0
- package/src/fields/Check/index.tsx +7 -1
- package/src/fields/CodeEditor/CodeEditor.stories.tsx +32 -0
- package/src/fields/Color/Color.spec.tsx +21 -0
- package/src/fields/Color/Color.stories.tsx +33 -0
- package/src/fields/Color/index.tsx +7 -1
- package/src/fields/Data/Data.spec.tsx +26 -0
- package/src/fields/Data/Data.stories.tsx +58 -0
- package/src/fields/Data/index.tsx +6 -0
- package/src/fields/Date/Date.stories.tsx +32 -0
- package/src/fields/Date/Datetime.stories.tsx +32 -0
- package/src/fields/Date/index.native.tsx +45 -33
- package/src/fields/Date/nativePresentation.spec.tsx +20 -0
- package/src/fields/Date/sheetKeyboard.spec.ts +51 -0
- package/src/fields/Date/sheetKeyboard.ts +37 -0
- package/src/fields/DateRange/DateRange.stories.tsx +41 -0
- package/src/fields/Duration/Duration.stories.tsx +32 -0
- package/src/fields/DynamicLink.stories.tsx +115 -14
- package/src/fields/DynamicLink.tsx +43 -125
- package/src/fields/FileUpload.tsx +273 -54
- package/src/fields/FileUploadField/FileUploadField.stories.tsx +87 -0
- package/src/fields/FileUploadField/index.tsx +73 -25
- package/src/fields/FrappeFileUpload.stories.tsx +32 -0
- package/src/fields/Geolocation/Geolocation.stories.tsx +33 -0
- package/src/fields/HTML/Html.stories.tsx +59 -0
- package/src/fields/HTML/index.tsx +25 -34
- package/src/fields/Heading/Heading.stories.tsx +63 -2
- package/src/fields/Icon/index.tsx +90 -0
- package/src/fields/Link.spec.tsx +10 -0
- package/src/fields/Link.stories.tsx +161 -2
- package/src/fields/Link.tree.spec.tsx +111 -0
- package/src/fields/Link.tsx +36 -19
- package/src/fields/LinkTree.tsx +102 -0
- package/src/fields/LongText/LongText.stories.tsx +66 -0
- package/src/fields/LongText/index.tsx +13 -5
- package/src/fields/MarkdownEditor/MarkdownEditor.stories.tsx +36 -0
- package/src/fields/MentionInput/MentionInput.stories.tsx +44 -0
- package/src/fields/Numeric/Numeric.spec.tsx +7 -0
- package/src/fields/Numeric/Numeric.stories.tsx +32 -0
- package/src/fields/Numeric/index.tsx +7 -0
- package/src/fields/OTPInput/OTPInput.stories.tsx +33 -0
- package/src/fields/Password/Password.spec.tsx +119 -0
- package/src/fields/Password/Password.stories.tsx +58 -0
- package/src/fields/Password/index.tsx +243 -23
- package/src/fields/Phone/Phone.stories.tsx +33 -0
- package/src/fields/Phone/index.tsx +4 -0
- package/src/fields/Progress/Progress.stories.tsx +32 -0
- package/src/fields/RadioGroup/RadioGroup.stories.tsx +37 -0
- package/src/fields/Rating/Rating.stories.tsx +33 -0
- package/src/fields/ReadOnly/ReadOnly.stories.tsx +54 -0
- package/src/fields/ReadOnly/index.tsx +41 -55
- package/src/fields/Select/Select.stories.tsx +43 -0
- package/src/fields/Select/index.tsx +5 -1
- package/src/fields/Signature/Signature.stories.tsx +32 -0
- package/src/fields/Slider/Slider.stories.tsx +32 -0
- package/src/fields/SmallText/SmallText.stories.tsx +58 -0
- package/src/fields/SmallText/index.tsx +9 -4
- package/src/fields/Switch/Switch.stories.tsx +33 -0
- package/src/fields/TableMultiSelect.spec.tsx +26 -5
- package/src/fields/TableMultiSelect.stories.tsx +90 -14
- package/src/fields/TableMultiSelect.tsx +55 -177
- package/src/fields/TextEditor/TextEditor.spec.tsx +5 -3
- package/src/fields/TextEditor/TextEditor.stories.tsx +66 -0
- package/src/fields/TextEditor/index.tsx +32 -299
- package/src/fields/TimePicker/TimePicker.stories.tsx +32 -0
- package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +35 -0
- package/src/frappeRemainder.designLaw.spec.ts +176 -0
- package/src/frappeViews.designLaw.spec.ts +94 -0
- package/src/index.ts +18 -1
- package/src/schemaForm/SchemaForm.spec.tsx +154 -0
- package/src/schemaForm/SchemaForm.stories.tsx +27 -0
- package/src/schemaForm/SchemaWizard.spec.tsx +134 -0
- package/src/schemaForm/SchemaWizard.stories.tsx +94 -0
- package/src/schemaForm/SchemaWizard.tsx +192 -0
- package/src/schemaForm/index.tsx +3 -4
- package/src/shared/useKeyboardInset.ts +45 -0
- package/types/FileBrowser/AttachLibrary.d.ts +13 -0
- package/types/FileBrowser/AttachLibrary.d.ts.map +1 -0
- package/types/FileBrowser/folderTree.d.ts +15 -0
- package/types/FileBrowser/folderTree.d.ts.map +1 -0
- package/types/FileBrowser/index.d.ts +4 -0
- package/types/FileBrowser/index.d.ts.map +1 -0
- package/types/FileBrowser/types.d.ts +59 -0
- package/types/FileBrowser/types.d.ts.map +1 -0
- package/types/FileBrowser/viewPersistence.d.ts +4 -0
- package/types/FileBrowser/viewPersistence.d.ts.map +1 -0
- package/types/FormSidebar.d.ts.map +1 -1
- package/types/FrappeAssignment.d.ts.map +1 -1
- package/types/FrappeChartCard.d.ts.map +1 -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/FrappeImageView.d.ts.map +1 -1
- package/types/FrappeKPICard.d.ts.map +1 -1
- package/types/FrappeKanban.d.ts.map +1 -1
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/FrappeReportBuilder.d.ts.map +1 -1
- package/types/FrappeReportView.d.ts.map +1 -1
- package/types/FrappeTreeView.d.ts.map +1 -1
- package/types/desk/DeskFormPage.d.ts.map +1 -1
- package/types/desk/DeskListPage.d.ts.map +1 -1
- package/types/desk/DeskShell.d.ts +4 -2
- package/types/desk/DeskShell.d.ts.map +1 -1
- package/types/desk/awesomebar.d.ts.map +1 -1
- package/types/fieldRegistry.d.ts.map +1 -1
- package/types/fields/Check/index.d.ts +6 -0
- package/types/fields/Check/index.d.ts.map +1 -1
- package/types/fields/Color/index.d.ts +6 -0
- package/types/fields/Color/index.d.ts.map +1 -1
- package/types/fields/Data/index.d.ts +6 -0
- package/types/fields/Data/index.d.ts.map +1 -1
- package/types/fields/Date/index.native.d.ts +5 -0
- package/types/fields/Date/index.native.d.ts.map +1 -1
- package/types/fields/Date/sheetKeyboard.d.ts +19 -0
- package/types/fields/Date/sheetKeyboard.d.ts.map +1 -0
- package/types/fields/DynamicLink.d.ts.map +1 -1
- package/types/fields/FileUpload.d.ts +11 -1
- package/types/fields/FileUpload.d.ts.map +1 -1
- package/types/fields/FileUploadField/index.d.ts +8 -1
- package/types/fields/FileUploadField/index.d.ts.map +1 -1
- package/types/fields/HTML/index.d.ts.map +1 -1
- package/types/fields/Icon/index.d.ts +15 -0
- package/types/fields/Icon/index.d.ts.map +1 -0
- package/types/fields/Link.d.ts +6 -1
- package/types/fields/Link.d.ts.map +1 -1
- package/types/fields/LinkTree.d.ts +3 -0
- package/types/fields/LinkTree.d.ts.map +1 -0
- package/types/fields/LongText/index.d.ts +4 -0
- package/types/fields/LongText/index.d.ts.map +1 -1
- package/types/fields/Numeric/index.d.ts +7 -0
- package/types/fields/Numeric/index.d.ts.map +1 -1
- package/types/fields/Password/index.d.ts +1 -0
- package/types/fields/Password/index.d.ts.map +1 -1
- package/types/fields/Phone/index.d.ts +4 -0
- package/types/fields/Phone/index.d.ts.map +1 -1
- package/types/fields/ReadOnly/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts +4 -0
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/SmallText/index.d.ts +4 -0
- package/types/fields/SmallText/index.d.ts.map +1 -1
- package/types/fields/TableMultiSelect.d.ts +2 -1
- package/types/fields/TableMultiSelect.d.ts.map +1 -1
- package/types/fields/TextEditor/index.d.ts +2 -3
- package/types/fields/TextEditor/index.d.ts.map +1 -1
- package/types/index.d.ts +7 -1
- package/types/index.d.ts.map +1 -1
- package/types/schemaForm/SchemaWizard.d.ts +20 -0
- package/types/schemaForm/SchemaWizard.d.ts.map +1 -0
- package/types/schemaForm/index.d.ts.map +1 -1
- package/types/shared/useKeyboardInset.d.ts +18 -0
- package/types/shared/useKeyboardInset.d.ts.map +1 -0
|
@@ -7,14 +7,16 @@ import {
|
|
|
7
7
|
import { downloadBlob } from "@multiplatform.one/platform";
|
|
8
8
|
import {
|
|
9
9
|
ReportBuilder,
|
|
10
|
+
PopoverContent,
|
|
11
|
+
Separator,
|
|
10
12
|
type ReportColumn,
|
|
11
13
|
type GroupByConfig,
|
|
12
14
|
} from "@multiplatform.one/components";
|
|
13
|
-
import { Spinner } from "@multiplatform.one/forms";
|
|
15
|
+
import { Button, Input, Spinner, formCommonColors } from "@multiplatform.one/forms";
|
|
14
16
|
import { storage } from "@multiplatform.one/store";
|
|
15
17
|
import React, { useMemo, useState, useCallback, useEffect, useRef } from "react";
|
|
16
18
|
import { useTranslation } from "react-i18next";
|
|
17
|
-
import {
|
|
19
|
+
import { Popover, Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
18
20
|
import { FloppyDiskIcon, FolderOpenIcon, TrashIcon } from "@phosphor-icons/react";
|
|
19
21
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
20
22
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
@@ -389,14 +391,14 @@ export function FrappeReportBuilder({
|
|
|
389
391
|
borderBottomColor="$borderColor"
|
|
390
392
|
>
|
|
391
393
|
{/* Subtle stale affordance while a post-event refresh reconciles */}
|
|
392
|
-
{isLiveStale
|
|
394
|
+
{isLiveStale ? (
|
|
393
395
|
<XStack gap="$2" alignItems="center">
|
|
394
396
|
<Spinner size="small" aria-label={t("Updating")} />
|
|
395
|
-
<Text
|
|
397
|
+
<Text {...knobProps.label} color={formCommonColors.muted}>
|
|
396
398
|
{t("Updating...")}
|
|
397
399
|
</Text>
|
|
398
400
|
</XStack>
|
|
399
|
-
)}
|
|
401
|
+
) : null}
|
|
400
402
|
<XStack flex={1} />
|
|
401
403
|
{/* Save */}
|
|
402
404
|
<Popover placement="bottom-end" open={saveDialogOpen} onOpenChange={setSaveDialogOpen}>
|
|
@@ -405,34 +407,24 @@ export function FrappeReportBuilder({
|
|
|
405
407
|
{t("Save")}
|
|
406
408
|
</Button>
|
|
407
409
|
</Popover.Trigger>
|
|
408
|
-
<
|
|
409
|
-
{...{ backgroundColor: "$background" }}
|
|
410
|
-
{...knobProps.borderRadius}
|
|
411
|
-
{...knobProps.panelPadding}
|
|
412
|
-
borderColor="$borderColor"
|
|
413
|
-
>
|
|
414
|
-
<Popover.Arrow borderWidth={1} borderColor="$borderColor" />
|
|
410
|
+
<PopoverContent>
|
|
415
411
|
<YStack {...knobProps.gap} minWidth={220}>
|
|
416
|
-
<Text fontWeight="
|
|
412
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
417
413
|
{t("Save Report")}
|
|
418
414
|
</Text>
|
|
419
415
|
<Input
|
|
420
|
-
|
|
416
|
+
label={t("Report name")}
|
|
417
|
+
labelHidden
|
|
421
418
|
placeholder={t("Report name")}
|
|
422
419
|
value={saveReportName}
|
|
423
420
|
onChangeText={setSaveReportName}
|
|
424
|
-
|
|
421
|
+
inputProps={{ onSubmitEditing: handleSaveReport } as any}
|
|
425
422
|
/>
|
|
426
|
-
<Button
|
|
427
|
-
size="$2"
|
|
428
|
-
theme="active"
|
|
429
|
-
onPress={handleSaveReport}
|
|
430
|
-
disabled={!saveReportName.trim()}
|
|
431
|
-
>
|
|
423
|
+
<Button size="$2" onPress={handleSaveReport} disabled={!saveReportName.trim()}>
|
|
432
424
|
{t("Save")}
|
|
433
425
|
</Button>
|
|
434
426
|
</YStack>
|
|
435
|
-
</
|
|
427
|
+
</PopoverContent>
|
|
436
428
|
</Popover>
|
|
437
429
|
|
|
438
430
|
{/* Load */}
|
|
@@ -443,15 +435,9 @@ export function FrappeReportBuilder({
|
|
|
443
435
|
{t("Load")}
|
|
444
436
|
</Button>
|
|
445
437
|
</Popover.Trigger>
|
|
446
|
-
<
|
|
447
|
-
{...{
|
|
448
|
-
|
|
449
|
-
{...knobProps.panelPadding}
|
|
450
|
-
borderColor="$borderColor"
|
|
451
|
-
>
|
|
452
|
-
<Popover.Arrow borderWidth={1} borderColor="$borderColor" />
|
|
453
|
-
<YStack gap="$1" minWidth={180}>
|
|
454
|
-
<Text fontWeight="600" fontSize="$2" color="$color10" padding="$1">
|
|
438
|
+
<PopoverContent>
|
|
439
|
+
<YStack {...knobProps.gap} minWidth={180}>
|
|
440
|
+
<Text {...knobProps.label} fontWeight="400" color={formCommonColors.muted}>
|
|
455
441
|
{t("Saved Reports")}
|
|
456
442
|
</Text>
|
|
457
443
|
<Separator />
|
|
@@ -466,11 +452,12 @@ export function FrappeReportBuilder({
|
|
|
466
452
|
cursor="pointer"
|
|
467
453
|
onPress={() => handleLoadReport(report)}
|
|
468
454
|
>
|
|
469
|
-
<Text
|
|
455
|
+
<Text {...knobProps.body} flex={1}>
|
|
470
456
|
{report.name}
|
|
471
457
|
</Text>
|
|
472
458
|
<Button
|
|
473
|
-
size="$
|
|
459
|
+
size="$2"
|
|
460
|
+
circular
|
|
474
461
|
chromeless
|
|
475
462
|
icon={TrashIcon}
|
|
476
463
|
onPress={(e) => {
|
|
@@ -482,7 +469,7 @@ export function FrappeReportBuilder({
|
|
|
482
469
|
</XStack>
|
|
483
470
|
))}
|
|
484
471
|
</YStack>
|
|
485
|
-
</
|
|
472
|
+
</PopoverContent>
|
|
486
473
|
</Popover>
|
|
487
474
|
)}
|
|
488
475
|
</XStack>
|
package/src/FrappeReportView.tsx
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
*/
|
|
40
40
|
import { AsyncDebouncer, CallModule, HttpClient, type AuthConfig } from "@multiplatform.one/frappe";
|
|
41
41
|
import { AsyncBoundary } from "@multiplatform.one/components";
|
|
42
|
-
import { DatePicker, Spinner } from "@multiplatform.one/forms";
|
|
42
|
+
import { Button, DatePicker, Spinner, formCommonColors } from "@multiplatform.one/forms";
|
|
43
43
|
import {
|
|
44
44
|
DataTable,
|
|
45
45
|
DataTableExport,
|
|
@@ -52,7 +52,7 @@ import { formatCalendarDate, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
|
52
52
|
import { ArrowClockwiseIcon } from "@phosphor-icons/react";
|
|
53
53
|
import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from "react";
|
|
54
54
|
import { useTranslation } from "react-i18next";
|
|
55
|
-
import {
|
|
55
|
+
import { Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
56
56
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
57
57
|
import { Check } from "./fields/Check";
|
|
58
58
|
import { Data } from "./fields/Data";
|
|
@@ -804,7 +804,7 @@ export function FrappeReportView({
|
|
|
804
804
|
{isFetching && !isLoading && (
|
|
805
805
|
<XStack gap="$2" alignItems="center" paddingBottom="$2">
|
|
806
806
|
<Spinner size="small" aria-label={t("Updating")} />
|
|
807
|
-
<Text
|
|
807
|
+
<Text {...knobProps.label} color={formCommonColors.muted}>
|
|
808
808
|
{t("Updating...")}
|
|
809
809
|
</Text>
|
|
810
810
|
</XStack>
|
|
@@ -851,7 +851,7 @@ export function FrappeReportView({
|
|
|
851
851
|
|
|
852
852
|
{/* Server-side report message (already user-facing). */}
|
|
853
853
|
{payload?.message && (
|
|
854
|
-
<Text
|
|
854
|
+
<Text {...knobProps.label} color={formCommonColors.muted}>
|
|
855
855
|
{payload.message}
|
|
856
856
|
</Text>
|
|
857
857
|
)}
|
package/src/FrappeTreeView.tsx
CHANGED
|
@@ -5,6 +5,7 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
|
5
5
|
import { useTranslation } from "react-i18next";
|
|
6
6
|
import { Text, YStack, type YStackProps } from "tamagui";
|
|
7
7
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
8
|
+
import { formCommonColors } from "@multiplatform.one/forms";
|
|
8
9
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
9
10
|
import { FrappeReconnectIndicator } from "./FrappeReconnectIndicator";
|
|
10
11
|
import { toLiveLoadError } from "./liveErrors";
|
|
@@ -238,10 +239,13 @@ export function FrappeTreeView<TDoc extends { name: string; doctype: string }>({
|
|
|
238
239
|
}
|
|
239
240
|
|
|
240
241
|
if (isKnownNotTree) {
|
|
242
|
+
const iconSize = Number(knobProps.controlIcon?.width) || 16;
|
|
241
243
|
return (
|
|
242
244
|
<YStack {...knobProps.panelPadding} alignItems="center" {...knobProps.gap} {...stackProps}>
|
|
243
|
-
<TreeStructureIcon size={
|
|
244
|
-
<Text color=
|
|
245
|
+
<TreeStructureIcon size={iconSize * 2} color={formCommonColors.muted} />
|
|
246
|
+
<Text color={formCommonColors.muted} {...knobProps.body}>
|
|
247
|
+
{t("This DocType does not support tree view")}
|
|
248
|
+
</Text>
|
|
245
249
|
</YStack>
|
|
246
250
|
);
|
|
247
251
|
}
|
|
@@ -277,12 +281,12 @@ export function FrappeTreeView<TDoc extends { name: string; doctype: string }>({
|
|
|
277
281
|
showExpansionArrows
|
|
278
282
|
selectedId={selectedId}
|
|
279
283
|
renderNode={(node) => (
|
|
280
|
-
<Text
|
|
284
|
+
<Text {...knobProps.label} numberOfLines={1}>
|
|
281
285
|
{node.label}
|
|
282
286
|
{valueField &&
|
|
283
287
|
node.data &&
|
|
284
288
|
(node.data as Record<string, unknown>)[valueField] != null && (
|
|
285
|
-
<Text color=
|
|
289
|
+
<Text color={formCommonColors.muted} {...knobProps.label} marginInlineStart="$2">
|
|
286
290
|
{String((node.data as Record<string, unknown>)[valueField])}
|
|
287
291
|
</Text>
|
|
288
292
|
)}
|
|
@@ -13,12 +13,84 @@ export default {
|
|
|
13
13
|
docs: {
|
|
14
14
|
description: {
|
|
15
15
|
component:
|
|
16
|
-
"Frappe bridge for the generic Attachments component: maps File documents (filtered by attached_to_doctype/name) into AttachmentItem[] and forwards every other prop.",
|
|
16
|
+
"Frappe bridge for the generic Attachments component: maps File documents (filtered by attached_to_doctype/name) into AttachmentItem[] and forwards every other prop. Fixture stories are network-hermetic (G-15/D-05): documents come from InMemoryFixtureProvider and DocType meta from an in-story fetch mock, so nothing leaves the machine. The separately-named Live story is the live-bench arm — it targets STORYBOOK_FRAPPE_URL when reachable and falls back to fixtures otherwise.",
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Hermetic story host (G-15 story honesty / D-05, closes UX-P18).
|
|
24
|
+
//
|
|
25
|
+
// Fixture-backed stories previously pointed at https://demo.frappe.cloud. The
|
|
26
|
+
// fixture provider serves the *collection*, but DocType meta still resolves
|
|
27
|
+
// over HTTP — so those stories fired a real cross-origin request the browser
|
|
28
|
+
// rejected with CORS. MOCK_HOST keeps the same code path (real fetch, real
|
|
29
|
+
// meta shape) without leaving the machine.
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
const MOCK_HOST = "https://frappeattachments.mock.test";
|
|
33
|
+
|
|
34
|
+
function fileMetaRaw(name: string) {
|
|
35
|
+
return {
|
|
36
|
+
name,
|
|
37
|
+
module: "Core",
|
|
38
|
+
title_field: "file_name",
|
|
39
|
+
fields: [
|
|
40
|
+
{ fieldname: "file_name", fieldtype: "Data", label: "File Name", in_list_view: 1 },
|
|
41
|
+
{ fieldname: "file_url", fieldtype: "Attach", label: "File URL" },
|
|
42
|
+
{ fieldname: "file_size", fieldtype: "Int", label: "File Size", in_list_view: 1 },
|
|
43
|
+
{ fieldname: "file_type", fieldtype: "Data", label: "File Type" },
|
|
44
|
+
{ fieldname: "is_private", fieldtype: "Check", label: "Is Private" },
|
|
45
|
+
{
|
|
46
|
+
fieldname: "attached_to_doctype",
|
|
47
|
+
fieldtype: "Link",
|
|
48
|
+
label: "Attached To DocType",
|
|
49
|
+
options: "DocType",
|
|
50
|
+
},
|
|
51
|
+
{ fieldname: "attached_to_name", fieldtype: "Data", label: "Attached To Name" },
|
|
52
|
+
{ fieldname: "attached_to_field", fieldtype: "Data", label: "Attached To Field" },
|
|
53
|
+
{ fieldname: "creation", fieldtype: "Datetime", label: "Created On" },
|
|
54
|
+
{ fieldname: "modified", fieldtype: "Datetime", label: "Last Modified" },
|
|
55
|
+
],
|
|
56
|
+
permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function jsonResponse(body: unknown, status = 200): Response {
|
|
61
|
+
return new Response(JSON.stringify(body), {
|
|
62
|
+
status,
|
|
63
|
+
headers: { "Content-Type": "application/json" },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
(() => {
|
|
68
|
+
if (typeof window === "undefined") return;
|
|
69
|
+
const w = window as unknown as Record<string, unknown>;
|
|
70
|
+
if (w.__frappeAttachmentsMockFetch) return;
|
|
71
|
+
w.__frappeAttachmentsMockFetch = true;
|
|
72
|
+
const realFetch = window.fetch.bind(window);
|
|
73
|
+
window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
|
|
74
|
+
const urlStr =
|
|
75
|
+
typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
|
|
76
|
+
if (urlStr.startsWith(MOCK_HOST)) {
|
|
77
|
+
const url = new URL(urlStr);
|
|
78
|
+
if (url.pathname === "/api/method/frappe.desk.form.load.getdoctype") {
|
|
79
|
+
const doctype = url.searchParams.get("doctype") || "File";
|
|
80
|
+
return jsonResponse({ docs: [fileMetaRaw(doctype)] });
|
|
81
|
+
}
|
|
82
|
+
const metaMatch = url.pathname.match(/^\/api\/resource\/DocType\/(.+)$/);
|
|
83
|
+
if (metaMatch) return jsonResponse({ data: fileMetaRaw(decodeURIComponent(metaMatch[1])) });
|
|
84
|
+
if (url.pathname === "/api/resource/DocType") {
|
|
85
|
+
return jsonResponse({ data: [{ name: "File", module: "Core" }] });
|
|
86
|
+
}
|
|
87
|
+
// Everything else (guest field-peek, counts): empty, never the network.
|
|
88
|
+
return jsonResponse({ data: [] });
|
|
89
|
+
}
|
|
90
|
+
return realFetch(input as RequestInfo, init);
|
|
91
|
+
};
|
|
92
|
+
})();
|
|
93
|
+
|
|
22
94
|
const fileFixtures: FrappeFile[] = [
|
|
23
95
|
{
|
|
24
96
|
name: "FILE-001",
|
|
@@ -59,7 +131,7 @@ const fileFixtures: FrappeFile[] = [
|
|
|
59
131
|
const makeFixtures = () => new InMemoryFixtureProvider({ File: fileFixtures });
|
|
60
132
|
|
|
61
133
|
export const Main = () => (
|
|
62
|
-
<FrappeProvider baseURL=
|
|
134
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
63
135
|
<Attachments
|
|
64
136
|
doctype="Task"
|
|
65
137
|
docname="TASK-001"
|
|
@@ -75,21 +147,21 @@ Main.storyName = "Main";
|
|
|
75
147
|
|
|
76
148
|
/** fieldname filter must narrow to files attached to that specific field. */
|
|
77
149
|
export const FieldScoped = () => (
|
|
78
|
-
<FrappeProvider baseURL=
|
|
150
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
79
151
|
<Attachments doctype="Task" docname="TASK-001" fieldname="design_attachment" label="Design" />
|
|
80
152
|
</FrappeProvider>
|
|
81
153
|
);
|
|
82
154
|
|
|
83
155
|
/** No files match: the base component's empty state must show. */
|
|
84
156
|
export const Empty = () => (
|
|
85
|
-
<FrappeProvider baseURL=
|
|
157
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
86
158
|
<Attachments doctype="Task" docname="TASK-NO-FILES" label="Attachments" />
|
|
87
159
|
</FrappeProvider>
|
|
88
160
|
);
|
|
89
161
|
|
|
90
162
|
/** disabled forwards to the base component (no add/remove affordances). */
|
|
91
163
|
export const Disabled = () => (
|
|
92
|
-
<FrappeProvider baseURL=
|
|
164
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
93
165
|
<Attachments doctype="Task" docname="TASK-001" label="Attachments" disabled />
|
|
94
166
|
</FrappeProvider>
|
|
95
167
|
);
|
|
@@ -111,7 +183,7 @@ class PendingFixtureProvider extends InMemoryFixtureProvider {
|
|
|
111
183
|
* twin, never empty chrome (LC-20 / DG-ST-02).
|
|
112
184
|
*/
|
|
113
185
|
export const Loading = () => (
|
|
114
|
-
<FrappeProvider baseURL=
|
|
186
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={new PendingFixtureProvider()}>
|
|
115
187
|
<Attachments doctype="Task" docname="TASK-001" label="Attachments" />
|
|
116
188
|
</FrappeProvider>
|
|
117
189
|
);
|
|
@@ -134,7 +206,7 @@ class FailingFixtureProvider extends InMemoryFixtureProvider {
|
|
|
134
206
|
* re-runs the initial sync (recovery is covered by tests/attachments.spec).
|
|
135
207
|
*/
|
|
136
208
|
export const LoadError = () => (
|
|
137
|
-
<FrappeProvider baseURL=
|
|
209
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={new FailingFixtureProvider()}>
|
|
138
210
|
<Attachments doctype="Task" docname="TASK-001" label="Attachments" onAdd={action("onAdd")} />
|
|
139
211
|
</FrappeProvider>
|
|
140
212
|
);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
|
|
2
2
|
import { action } from "@multiplatform.one/storybook";
|
|
3
3
|
import { FrappeProvider } from "../FrappeProvider";
|
|
4
|
+
import { FrappeStoryProvider, LiveToDoGate, LIVE_TODO_NAME } from "../frappeStoryTarget";
|
|
4
5
|
import { Tags, type FrappeTag, type FrappeTagLink } from "./tags";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
@@ -12,12 +13,98 @@ export default {
|
|
|
12
13
|
docs: {
|
|
13
14
|
description: {
|
|
14
15
|
component:
|
|
15
|
-
"Frappe bridge for the generic Tags component: Tag Link documents become the assigned tags, all Tag documents become suggestions.",
|
|
16
|
+
"Frappe bridge for the generic Tags component: Tag Link documents become the assigned tags, all Tag documents become suggestions. Fixture stories are network-hermetic (G-15/D-05): documents come from InMemoryFixtureProvider and DocType meta from an in-story fetch mock, so nothing leaves the machine. The separately-named Live story is the live-bench arm — it targets STORYBOOK_FRAPPE_URL when reachable and falls back to fixtures otherwise.",
|
|
16
17
|
},
|
|
17
18
|
},
|
|
18
19
|
},
|
|
19
20
|
};
|
|
20
21
|
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Hermetic story host (G-15 story honesty / D-05).
|
|
24
|
+
//
|
|
25
|
+
// Fixture-backed stories previously pointed at https://demo.frappe.cloud. The
|
|
26
|
+
// fixture provider serves Tag / Tag Link *documents*, but collection setup
|
|
27
|
+
// still resolves DocType meta over HTTP — so those stories fired a real
|
|
28
|
+
// cross-origin request that the browser rejected with a CORS error. MOCK_HOST
|
|
29
|
+
// keeps the same code path (real fetch, real meta shape) without leaving the
|
|
30
|
+
// machine.
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
|
|
33
|
+
const MOCK_HOST = "https://frappetags.mock.test";
|
|
34
|
+
|
|
35
|
+
function tagMetaRaw(name: string) {
|
|
36
|
+
if (name === "Tag Link") {
|
|
37
|
+
return {
|
|
38
|
+
name: "Tag Link",
|
|
39
|
+
module: "Desk",
|
|
40
|
+
fields: [
|
|
41
|
+
{ fieldname: "tag", fieldtype: "Link", label: "Tag", options: "Tag", in_list_view: 1 },
|
|
42
|
+
{
|
|
43
|
+
fieldname: "document_type",
|
|
44
|
+
fieldtype: "Link",
|
|
45
|
+
label: "Document Type",
|
|
46
|
+
options: "DocType",
|
|
47
|
+
in_list_view: 1,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
fieldname: "document_name",
|
|
51
|
+
fieldtype: "Dynamic Link",
|
|
52
|
+
label: "Document Name",
|
|
53
|
+
options: "document_type",
|
|
54
|
+
in_list_view: 1,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
name,
|
|
62
|
+
module: "Desk",
|
|
63
|
+
title_field: "name",
|
|
64
|
+
fields: [{ fieldname: "name", fieldtype: "Data", label: "Tag", in_list_view: 1 }],
|
|
65
|
+
permissions: [{ role: "All", read: 1, write: 1, create: 1 }],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function jsonResponse(body: unknown, status = 200): Response {
|
|
70
|
+
return new Response(JSON.stringify(body), {
|
|
71
|
+
status,
|
|
72
|
+
headers: { "Content-Type": "application/json" },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
(() => {
|
|
77
|
+
if (typeof window === "undefined") return;
|
|
78
|
+
const w = window as unknown as Record<string, unknown>;
|
|
79
|
+
if (w.__frappeTagsMockFetch) return;
|
|
80
|
+
w.__frappeTagsMockFetch = true;
|
|
81
|
+
const realFetch = window.fetch.bind(window);
|
|
82
|
+
window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
|
|
83
|
+
const urlStr =
|
|
84
|
+
typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
|
|
85
|
+
if (urlStr.startsWith(MOCK_HOST)) {
|
|
86
|
+
const url = new URL(urlStr);
|
|
87
|
+
if (url.pathname === "/api/method/frappe.desk.form.load.getdoctype") {
|
|
88
|
+
const doctype = url.searchParams.get("doctype") || "Tag";
|
|
89
|
+
return jsonResponse({ docs: [tagMetaRaw(doctype)] });
|
|
90
|
+
}
|
|
91
|
+
const metaMatch = url.pathname.match(/^\/api\/resource\/DocType\/(.+)$/);
|
|
92
|
+
if (metaMatch) return jsonResponse({ data: tagMetaRaw(decodeURIComponent(metaMatch[1])) });
|
|
93
|
+
if (url.pathname === "/api/resource/DocType") {
|
|
94
|
+
return jsonResponse({
|
|
95
|
+
data: [
|
|
96
|
+
{ name: "Tag", module: "Desk" },
|
|
97
|
+
{ name: "Tag Link", module: "Desk" },
|
|
98
|
+
],
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// Everything else (guest field-peek, counts): empty, never the network.
|
|
102
|
+
return jsonResponse({ data: [] });
|
|
103
|
+
}
|
|
104
|
+
return realFetch(input as RequestInfo, init);
|
|
105
|
+
};
|
|
106
|
+
})();
|
|
107
|
+
|
|
21
108
|
const tagFixtures: FrappeTag[] = [
|
|
22
109
|
{ name: "urgent", doctype: "Tag" },
|
|
23
110
|
{ name: "follow-up", doctype: "Tag" },
|
|
@@ -47,13 +134,20 @@ const tagLinkFixtures: FrappeTagLink[] = [
|
|
|
47
134
|
document_type: "Task",
|
|
48
135
|
document_name: "TASK-OTHER",
|
|
49
136
|
},
|
|
137
|
+
{
|
|
138
|
+
name: "TL-LIVE-001",
|
|
139
|
+
doctype: "Tag Link",
|
|
140
|
+
tag: "urgent",
|
|
141
|
+
document_type: "ToDo",
|
|
142
|
+
document_name: LIVE_TODO_NAME,
|
|
143
|
+
},
|
|
50
144
|
];
|
|
51
145
|
|
|
52
146
|
const makeFixtures = () =>
|
|
53
147
|
new InMemoryFixtureProvider({ Tag: tagFixtures, "Tag Link": tagLinkFixtures });
|
|
54
148
|
|
|
55
149
|
export const Main = () => (
|
|
56
|
-
<FrappeProvider baseURL=
|
|
150
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
57
151
|
<Tags
|
|
58
152
|
doctype="Task"
|
|
59
153
|
docname="TASK-001"
|
|
@@ -68,28 +162,28 @@ Main.storyName = "Main";
|
|
|
68
162
|
|
|
69
163
|
/** Document with no tag links: empty state plus suggestions available via Add. */
|
|
70
164
|
export const Empty = () => (
|
|
71
|
-
<FrappeProvider baseURL=
|
|
165
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
72
166
|
<Tags doctype="Task" docname="TASK-NO-TAGS" label="Tags" onAdd={action("onAdd")} />
|
|
73
167
|
</FrappeProvider>
|
|
74
168
|
);
|
|
75
169
|
|
|
76
170
|
/** enableAdd=false must hide the add affordance entirely. */
|
|
77
171
|
export const NoAdd = () => (
|
|
78
|
-
<FrappeProvider baseURL=
|
|
172
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
79
173
|
<Tags doctype="Task" docname="TASK-001" label="Tags" enableAdd={false} />
|
|
80
174
|
</FrappeProvider>
|
|
81
175
|
);
|
|
82
176
|
|
|
83
177
|
/** Without onRemove the chips must not offer a remove affordance. */
|
|
84
178
|
export const NoRemove = () => (
|
|
85
|
-
<FrappeProvider baseURL=
|
|
179
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
86
180
|
<Tags doctype="Task" docname="TASK-001" label="Tags" />
|
|
87
181
|
</FrappeProvider>
|
|
88
182
|
);
|
|
89
183
|
|
|
90
184
|
/** disabled forwards to the base component. */
|
|
91
185
|
export const Disabled = () => (
|
|
92
|
-
<FrappeProvider baseURL=
|
|
186
|
+
<FrappeProvider baseURL={MOCK_HOST} fixtures={makeFixtures()}>
|
|
93
187
|
<Tags
|
|
94
188
|
doctype="Task"
|
|
95
189
|
docname="TASK-001"
|
|
@@ -100,3 +194,34 @@ export const Disabled = () => (
|
|
|
100
194
|
/>
|
|
101
195
|
</FrappeProvider>
|
|
102
196
|
);
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Live tags against the real bench (STORYBOOK_FRAPPE_URL, default the local
|
|
200
|
+
* dev bench proxied by the Storybook dev server) on a stock ToDo. Tag /
|
|
201
|
+
* Tag Link are core doctypes. Falls back to fixtures when the bench is
|
|
202
|
+
* unreachable.
|
|
203
|
+
*/
|
|
204
|
+
export const Live = () => (
|
|
205
|
+
<FrappeStoryProvider fixtures={makeFixtures()}>
|
|
206
|
+
<LiveToDoGate>
|
|
207
|
+
{(name) => (
|
|
208
|
+
<Tags
|
|
209
|
+
doctype="ToDo"
|
|
210
|
+
docname={name}
|
|
211
|
+
label="Tags"
|
|
212
|
+
onAdd={action("onAdd")}
|
|
213
|
+
onRemove={action("onRemove")}
|
|
214
|
+
onTagClick={action("onTagClick")}
|
|
215
|
+
/>
|
|
216
|
+
)}
|
|
217
|
+
</LiveToDoGate>
|
|
218
|
+
</FrappeStoryProvider>
|
|
219
|
+
);
|
|
220
|
+
Live.parameters = {
|
|
221
|
+
docs: {
|
|
222
|
+
description: {
|
|
223
|
+
story:
|
|
224
|
+
"Live Tag / Tag Link collections over a stock ToDo: assigned tags and suggestions come from the bench when STORYBOOK_FRAPPE_URL is reachable; fixture fallback (ToDo/TODO-LIVE-001 + Tag Link) when it is not.",
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
};
|