@multiplatform.one/frappe-ui 6.4.2 → 6.6.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/FormSidebar.cjs +2 -2
- package/dist/cjs/FormSidebar.native.js +2 -2
- package/dist/cjs/FormSidebar.native.js.map +1 -1
- package/dist/cjs/FrappeAssignment.cjs +8 -4
- package/dist/cjs/FrappeAssignment.native.js +8 -4
- package/dist/cjs/FrappeAssignment.native.js.map +1 -1
- package/dist/cjs/FrappeCalendar.cjs +2 -8
- package/dist/cjs/FrappeCalendar.native.js +2 -8
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeConnectionIndicator.cjs +1 -0
- package/dist/cjs/FrappeConnectionIndicator.native.js +1 -0
- package/dist/cjs/FrappeConnectionIndicator.native.js.map +1 -1
- package/dist/cjs/FrappeDashboard.cjs +4 -4
- package/dist/cjs/FrappeDashboard.native.js +4 -4
- package/dist/cjs/FrappeDashboard.native.js.map +1 -1
- package/dist/cjs/FrappeGantt.cjs +2 -8
- package/dist/cjs/FrappeGantt.native.js +3 -9
- package/dist/cjs/FrappeGantt.native.js.map +1 -1
- package/dist/cjs/FrappeKanban.cjs +32 -21
- package/dist/cjs/FrappeKanban.native.js +36 -23
- package/dist/cjs/FrappeKanban.native.js.map +1 -1
- package/dist/cjs/FrappeLikedBy.cjs +2 -1
- package/dist/cjs/FrappeLikedBy.native.js +2 -1
- package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
- package/dist/cjs/FrappeList.cjs +0 -1
- package/dist/cjs/FrappeList.native.js +10 -2
- package/dist/cjs/FrappeList.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +10 -8
- package/dist/cjs/FrappeListView.native.js +10 -8
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +1 -1
- package/dist/cjs/FrappeReportBuilder.native.js +1 -1
- package/dist/cjs/FrappeTable.cjs +4 -0
- package/dist/cjs/FrappeTable.native.js +10 -0
- package/dist/cjs/FrappeTable.native.js.map +1 -1
- package/dist/cjs/FrappeTreeView.cjs +1 -1
- package/dist/cjs/FrappeTreeView.native.js +1 -1
- package/dist/cjs/desk/DeskFormPage.cjs +1 -1
- package/dist/cjs/desk/DeskFormPage.native.js +1 -1
- package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
- package/dist/cjs/desk/DeskListPage.cjs +1 -1
- package/dist/cjs/desk/DeskListPage.native.js +1 -1
- package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
- package/dist/cjs/fieldRegistry.native.js.map +1 -1
- package/dist/cjs/fields/Date/date.native.js +11 -48
- package/dist/cjs/fields/Date/date.native.js.map +1 -1
- package/dist/cjs/fields/Date/index.cjs +10 -3
- package/dist/cjs/fields/Date/index.native.js +15 -3
- package/dist/cjs/fields/Date/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/wire.cjs +49 -0
- package/dist/cjs/fields/Date/wire.native.js +55 -0
- package/dist/cjs/fields/Date/wire.native.js.map +1 -0
- package/dist/cjs/fields/MarkdownEditor/index.native.js.map +1 -1
- package/dist/cjs/fields/ReadOnly/index.cjs +8 -36
- package/dist/cjs/fields/ReadOnly/index.native.js +12 -36
- package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/cjs/fields/TableMultiSelect.cjs +7 -15
- package/dist/cjs/fields/TableMultiSelect.native.js +7 -15
- package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/cjs/fields/TextEditor/index.cjs +11 -6
- package/dist/cjs/schemaForm/index.cjs +10 -2
- package/dist/cjs/schemaForm/index.native.js +10 -2
- package/dist/cjs/schemaForm/index.native.js.map +1 -1
- package/dist/esm/FormSidebar.mjs +2 -2
- package/dist/esm/FormSidebar.mjs.map +1 -1
- package/dist/esm/FormSidebar.native.js +2 -2
- package/dist/esm/FormSidebar.native.js.map +1 -1
- package/dist/esm/FrappeAssignment.mjs +6 -2
- package/dist/esm/FrappeAssignment.mjs.map +1 -1
- package/dist/esm/FrappeAssignment.native.js +6 -2
- package/dist/esm/FrappeAssignment.native.js.map +1 -1
- package/dist/esm/FrappeCalendar.mjs +3 -9
- package/dist/esm/FrappeCalendar.mjs.map +1 -1
- package/dist/esm/FrappeCalendar.native.js +3 -9
- package/dist/esm/FrappeCalendar.native.js.map +1 -1
- package/dist/esm/FrappeConnectionIndicator.mjs +2 -1
- package/dist/esm/FrappeConnectionIndicator.mjs.map +1 -1
- package/dist/esm/FrappeConnectionIndicator.native.js +2 -1
- package/dist/esm/FrappeConnectionIndicator.native.js.map +1 -1
- package/dist/esm/FrappeDashboard.mjs +5 -5
- package/dist/esm/FrappeDashboard.mjs.map +1 -1
- package/dist/esm/FrappeDashboard.native.js +5 -5
- package/dist/esm/FrappeDashboard.native.js.map +1 -1
- package/dist/esm/FrappeGantt.mjs +3 -9
- package/dist/esm/FrappeGantt.mjs.map +1 -1
- package/dist/esm/FrappeGantt.native.js +4 -10
- package/dist/esm/FrappeGantt.native.js.map +1 -1
- package/dist/esm/FrappeKanban.mjs +33 -22
- package/dist/esm/FrappeKanban.mjs.map +1 -1
- package/dist/esm/FrappeKanban.native.js +37 -24
- package/dist/esm/FrappeKanban.native.js.map +1 -1
- package/dist/esm/FrappeLikedBy.mjs +2 -1
- package/dist/esm/FrappeLikedBy.mjs.map +1 -1
- package/dist/esm/FrappeLikedBy.native.js +2 -1
- package/dist/esm/FrappeLikedBy.native.js.map +1 -1
- package/dist/esm/FrappeList.mjs +0 -1
- package/dist/esm/FrappeList.mjs.map +1 -1
- package/dist/esm/FrappeList.native.js +10 -2
- package/dist/esm/FrappeList.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +12 -10
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +12 -10
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +1 -1
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +1 -1
- package/dist/esm/FrappeTable.mjs +4 -0
- package/dist/esm/FrappeTable.mjs.map +1 -1
- package/dist/esm/FrappeTable.native.js +10 -0
- package/dist/esm/FrappeTable.native.js.map +1 -1
- package/dist/esm/FrappeTreeView.mjs +1 -1
- package/dist/esm/FrappeTreeView.mjs.map +1 -1
- package/dist/esm/FrappeTreeView.native.js +1 -1
- package/dist/esm/desk/DeskFormPage.mjs +1 -1
- package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
- package/dist/esm/desk/DeskFormPage.native.js +1 -1
- package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
- package/dist/esm/desk/DeskListPage.mjs +1 -1
- package/dist/esm/desk/DeskListPage.mjs.map +1 -1
- package/dist/esm/desk/DeskListPage.native.js +1 -1
- package/dist/esm/desk/DeskListPage.native.js.map +1 -1
- package/dist/esm/fieldRegistry.mjs.map +1 -1
- package/dist/esm/fields/Date/date.native.js +12 -49
- package/dist/esm/fields/Date/date.native.js.map +1 -1
- package/dist/esm/fields/Date/index.mjs +10 -3
- package/dist/esm/fields/Date/index.mjs.map +1 -1
- package/dist/esm/fields/Date/index.native.js +15 -3
- package/dist/esm/fields/Date/index.native.js.map +1 -1
- package/dist/esm/fields/Date/wire.mjs +23 -0
- package/dist/esm/fields/Date/wire.mjs.map +1 -0
- package/dist/esm/fields/Date/wire.native.js +26 -0
- package/dist/esm/fields/Date/wire.native.js.map +1 -0
- package/dist/esm/fields/MarkdownEditor/index.native.js.map +1 -1
- package/dist/esm/fields/ReadOnly/index.mjs +9 -37
- package/dist/esm/fields/ReadOnly/index.mjs.map +1 -1
- package/dist/esm/fields/ReadOnly/index.native.js +13 -37
- package/dist/esm/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/esm/fields/TableMultiSelect.mjs +4 -12
- package/dist/esm/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/esm/fields/TableMultiSelect.native.js +4 -12
- package/dist/esm/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/esm/fields/TextEditor/index.mjs +11 -6
- package/dist/esm/fields/TextEditor/index.mjs.map +1 -1
- package/dist/esm/resolveControl.mjs.map +1 -1
- package/dist/esm/schemaForm/index.mjs +10 -2
- package/dist/esm/schemaForm/index.mjs.map +1 -1
- package/dist/esm/schemaForm/index.native.js +10 -2
- package/dist/esm/schemaForm/index.native.js.map +1 -1
- package/dist/jsx/FormSidebar.mjs +2 -2
- package/dist/jsx/FormSidebar.mjs.map +1 -1
- package/dist/jsx/FormSidebar.native.js +2 -2
- package/dist/jsx/FormSidebar.native.js.map +1 -1
- package/dist/jsx/FrappeAssignment.mjs +6 -2
- package/dist/jsx/FrappeAssignment.mjs.map +1 -1
- package/dist/jsx/FrappeAssignment.native.js +8 -4
- package/dist/jsx/FrappeAssignment.native.js.map +1 -1
- package/dist/jsx/FrappeCalendar.mjs +3 -9
- package/dist/jsx/FrappeCalendar.mjs.map +1 -1
- package/dist/jsx/FrappeCalendar.native.js +2 -8
- package/dist/jsx/FrappeCalendar.native.js.map +1 -1
- package/dist/jsx/FrappeConnectionIndicator.mjs +2 -1
- package/dist/jsx/FrappeConnectionIndicator.mjs.map +1 -1
- package/dist/jsx/FrappeConnectionIndicator.native.js +1 -0
- package/dist/jsx/FrappeConnectionIndicator.native.js.map +1 -1
- package/dist/jsx/FrappeDashboard.mjs +5 -5
- package/dist/jsx/FrappeDashboard.mjs.map +1 -1
- package/dist/jsx/FrappeDashboard.native.js +4 -4
- package/dist/jsx/FrappeDashboard.native.js.map +1 -1
- package/dist/jsx/FrappeGantt.mjs +3 -9
- package/dist/jsx/FrappeGantt.mjs.map +1 -1
- package/dist/jsx/FrappeGantt.native.js +3 -9
- package/dist/jsx/FrappeGantt.native.js.map +1 -1
- package/dist/jsx/FrappeKanban.mjs +33 -22
- package/dist/jsx/FrappeKanban.mjs.map +1 -1
- package/dist/jsx/FrappeKanban.native.js +36 -23
- package/dist/jsx/FrappeKanban.native.js.map +1 -1
- package/dist/jsx/FrappeLikedBy.mjs +2 -1
- package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
- package/dist/jsx/FrappeLikedBy.native.js +2 -1
- package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
- package/dist/jsx/FrappeList.mjs +0 -1
- package/dist/jsx/FrappeList.mjs.map +1 -1
- package/dist/jsx/FrappeList.native.js +10 -2
- package/dist/jsx/FrappeList.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +12 -10
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +10 -8
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +1 -1
- package/dist/jsx/FrappeTable.mjs +4 -0
- package/dist/jsx/FrappeTable.mjs.map +1 -1
- package/dist/jsx/FrappeTable.native.js +10 -0
- package/dist/jsx/FrappeTable.native.js.map +1 -1
- package/dist/jsx/FrappeTreeView.mjs +1 -1
- package/dist/jsx/FrappeTreeView.mjs.map +1 -1
- package/dist/jsx/FrappeTreeView.native.js +1 -1
- package/dist/jsx/desk/DeskFormPage.mjs +1 -1
- package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
- package/dist/jsx/desk/DeskFormPage.native.js +1 -1
- package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
- package/dist/jsx/desk/DeskListPage.mjs +1 -1
- package/dist/jsx/desk/DeskListPage.mjs.map +1 -1
- package/dist/jsx/desk/DeskListPage.native.js +1 -1
- package/dist/jsx/desk/DeskListPage.native.js.map +1 -1
- package/dist/jsx/fieldRegistry.mjs.map +1 -1
- package/dist/jsx/fields/Date/date.native.js +11 -48
- package/dist/jsx/fields/Date/date.native.js.map +1 -1
- package/dist/jsx/fields/Date/index.mjs +10 -3
- package/dist/jsx/fields/Date/index.mjs.map +1 -1
- package/dist/jsx/fields/Date/index.native.js +15 -3
- package/dist/jsx/fields/Date/index.native.js.map +1 -1
- package/dist/jsx/fields/Date/wire.mjs +23 -0
- package/dist/jsx/fields/Date/wire.mjs.map +1 -0
- package/dist/jsx/fields/Date/wire.native.js +55 -0
- package/dist/jsx/fields/Date/wire.native.js.map +1 -0
- package/dist/jsx/fields/MarkdownEditor/index.native.js.map +1 -1
- package/dist/jsx/fields/ReadOnly/index.mjs +9 -37
- package/dist/jsx/fields/ReadOnly/index.mjs.map +1 -1
- package/dist/jsx/fields/ReadOnly/index.native.js +12 -36
- package/dist/jsx/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.mjs +4 -12
- package/dist/jsx/fields/TableMultiSelect.mjs.map +1 -1
- package/dist/jsx/fields/TableMultiSelect.native.js +7 -15
- package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/jsx/fields/TextEditor/index.mjs +11 -6
- package/dist/jsx/fields/TextEditor/index.mjs.map +1 -1
- package/dist/jsx/resolveControl.mjs.map +1 -1
- package/dist/jsx/schemaForm/index.mjs +10 -2
- package/dist/jsx/schemaForm/index.mjs.map +1 -1
- package/dist/jsx/schemaForm/index.native.js +10 -2
- package/dist/jsx/schemaForm/index.native.js.map +1 -1
- package/package.json +22 -21
- package/src/FormSidebar.stories.tsx +6 -6
- package/src/FormSidebar.tsx +1 -2
- package/src/FrappeAssignment.spec.tsx +97 -0
- package/src/FrappeAssignment.tsx +6 -2
- package/src/FrappeCalendar.stories.tsx +72 -1
- package/src/FrappeCalendar.tsx +3 -13
- package/src/FrappeConnectionIndicator.tsx +8 -2
- package/src/FrappeDashboard.tsx +3 -2
- package/src/FrappeForm.stories.tsx +23 -9
- package/src/FrappeGantt.stories.tsx +6 -1
- package/src/FrappeGantt.tsx +3 -13
- package/src/FrappeKanban.tsx +41 -23
- package/src/FrappeLikedBy.tsx +2 -1
- package/src/FrappeList.tsx +7 -1
- package/src/FrappeListView.tsx +16 -22
- package/src/FrappeTable.stories.tsx +3 -5
- package/src/FrappeTable.tsx +10 -0
- package/src/components/timeline.stories.tsx +7 -2
- package/src/fields/Barcode/Barcode.stories.tsx +1 -1
- package/src/fields/CodeEditor/CodeEditor.stories.tsx +1 -1
- package/src/fields/Color/Color.stories.tsx +1 -1
- package/src/fields/Date/Date.spec.tsx +149 -0
- package/src/fields/Date/Date.stories.tsx +1 -1
- package/src/fields/Date/Datetime.stories.tsx +1 -1
- package/src/fields/Date/date.native.tsx +18 -65
- package/src/fields/Date/index.tsx +1 -25
- package/src/fields/Date/wire.spec.ts +172 -0
- package/src/fields/Date/wire.ts +68 -0
- package/src/fields/DateRange/DateRange.stories.tsx +1 -1
- package/src/fields/Duration/Duration.stories.tsx +1 -1
- package/src/fields/FileUploadField/FileUploadField.stories.tsx +15 -1
- package/src/fields/Geolocation/Geolocation.stories.tsx +12 -1
- package/src/fields/Link.stories.tsx +1 -1
- package/src/fields/LongText/LongText.stories.tsx +1 -1
- package/src/fields/MentionInput/MentionInput.stories.tsx +1 -1
- package/src/fields/OTPInput/OTPInput.stories.tsx +1 -1
- package/src/fields/Password/Password.stories.tsx +1 -1
- package/src/fields/Phone/Phone.stories.tsx +1 -1
- package/src/fields/Progress/Progress.stories.tsx +1 -1
- package/src/fields/RadioGroup/RadioGroup.stories.tsx +1 -1
- package/src/fields/Rating/Rating.stories.tsx +1 -1
- package/src/fields/ReadOnly/index.tsx +23 -33
- package/src/fields/Signature/Signature.stories.tsx +1 -1
- package/src/fields/Slider/Slider.stories.tsx +1 -1
- package/src/fields/SmallText/SmallText.stories.tsx +1 -1
- package/src/fields/Switch/Switch.stories.tsx +1 -1
- package/src/fields/TableMultiSelect.tsx +5 -18
- package/src/fields/TextEditor/TextEditor.stories.tsx +1 -1
- package/src/fields/TextEditor/index.tsx +8 -5
- package/src/fields/TimePicker/TimePicker.stories.tsx +1 -1
- package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +1 -1
- package/src/schemaForm/index.tsx +19 -1
- package/types/FormSidebar.d.ts.map +1 -1
- package/types/FrappeAssignment.d.ts.map +1 -1
- package/types/FrappeCalendar.d.ts.map +1 -1
- package/types/FrappeConnectionIndicator.d.ts.map +1 -1
- package/types/FrappeDashboard.d.ts.map +1 -1
- package/types/FrappeGantt.d.ts.map +1 -1
- package/types/FrappeKanban.d.ts +3 -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/FrappeTable.d.ts.map +1 -1
- package/types/fields/Date/date.native.d.ts.map +1 -1
- package/types/fields/Date/index.d.ts.map +1 -1
- package/types/fields/Date/wire.d.ts +41 -0
- package/types/fields/Date/wire.d.ts.map +1 -0
- package/types/fields/ReadOnly/index.d.ts.map +1 -1
- package/types/fields/TableMultiSelect.d.ts.map +1 -1
- package/types/fields/TextEditor/index.d.ts.map +1 -1
- package/types/schemaForm/index.d.ts +9 -1
- package/types/schemaForm/index.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RequiredMarkingContext","computeRequiredMarkMode","useResolvedKnobs","React","useMemo","useTranslation","Card","Text","XStack","YStack","compileDependsOn","Heading","getFieldComponent","jsx","jsxs","layoutFieldTypes","Set","isOverrideFunction","override","isOverrideComponent","isOverrideProps","SchemaForm","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","t","knobProps","dependsOnMap","map","Map","field","fields","depends_on","evaluator","set","name","hiddenSet","readOnlySet","requiredMarkMode","flags","filter","f","has","type","hidden","required","renderField","get","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","String","next","fieldValue","baseProps","label","value","onChange","v","error","fieldMeta","multiple","commit","control","Fragment","children","OverrideComponent","component","mergedProps","props","
|
|
1
|
+
{"version":3,"names":["RequiredMarkingContext","computeRequiredMarkMode","useResolvedKnobs","React","useMemo","useTranslation","Card","Text","XStack","YStack","compileDependsOn","Heading","getFieldComponent","jsx","jsxs","layoutFieldTypes","Set","isOverrideFunction","override","isOverrideComponent","isOverrideProps","SchemaForm","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","renderFieldWrapper","t","knobProps","dependsOnMap","map","Map","field","fields","depends_on","evaluator","set","name","hiddenSet","readOnlySet","requiredMarkMode","flags","filter","f","has","type","hidden","required","renderField","get","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","String","next","fieldValue","baseProps","label","value","onChange","v","error","fieldMeta","multiple","commit","control","Fragment","children","OverrideComponent","component","mergedProps","props","Component","color","fontSize","fieldtype","Component2","renderWrappedField","rendered","Provider","mode","gapLg","sections","section","sectionIndex","sectionKey","SchemaFormSectionCard","headingLevel","collapsible","collapsed","setCollapsed","useState","useEffect","hideBorder","effectiveCollapsed","borderWidth","borderColor","size","sizeToken","backgroundColor","description","Header","panelPadding","level","onCollapseChange","showSeparator","Footer","display","gap","width","Array","from","length","Math","max","columns","c","_","rowIndex","flexWrap","alignItems","column","colIndex","flex","flexBasis","minWidth","maxWidth"],"sources":["../../../src/schemaForm/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -73,7 +73,8 @@ function SchemaForm(param) {
|
|
|
73
73
|
hideFields = [],
|
|
74
74
|
readOnlyFields = [],
|
|
75
75
|
requiredMarking = "auto",
|
|
76
|
-
sectionHeadingLevel = 2
|
|
76
|
+
sectionHeadingLevel = 2,
|
|
77
|
+
renderFieldWrapper
|
|
77
78
|
} = param;
|
|
78
79
|
var {
|
|
79
80
|
t
|
|
@@ -221,6 +222,13 @@ function SchemaForm(param) {
|
|
|
221
222
|
...baseProps
|
|
222
223
|
}, field.name);
|
|
223
224
|
}
|
|
225
|
+
function renderWrappedField(field) {
|
|
226
|
+
var rendered = renderField(field);
|
|
227
|
+
if (rendered === null || rendered === void 0 || !renderFieldWrapper) return rendered;
|
|
228
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.default.Fragment, {
|
|
229
|
+
children: renderFieldWrapper(rendered, field)
|
|
230
|
+
}, field.name);
|
|
231
|
+
}
|
|
224
232
|
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.RequiredMarkingContext.Provider, {
|
|
225
233
|
value: {
|
|
226
234
|
mode: requiredMarkMode
|
|
@@ -232,7 +240,7 @@ function SchemaForm(param) {
|
|
|
232
240
|
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SchemaFormSectionCard, {
|
|
233
241
|
section,
|
|
234
242
|
headingLevel: sectionHeadingLevel,
|
|
235
|
-
renderField
|
|
243
|
+
renderField: renderWrappedField
|
|
236
244
|
}, sectionKey);
|
|
237
245
|
})
|
|
238
246
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","schemaForm_exports","SchemaForm","module","exports","import_jsx_runtime","require","import_forms","import_theme","import_react","import_react_i18next","import_tamagui","import_dependsOn","import_Heading","import_fieldRegistry","_type_of","obj","Symbol","constructor","layoutFieldTypes","Set","isOverrideFunction","override","isOverrideComponent","isOverrideProps","param","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","t","useTranslation","knobProps","useResolvedKnobs","dependsOnMap","useMemo","map","Map","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","fields","iterator","_step","next","done","field","depends_on","evaluator","compileDependsOn","set","err","return","hiddenSet","readOnlySet","requiredMarkMode","flags","filter","f","has","type","hidden","required","computeRequiredMarkMode","renderField","_doc_optionsStr","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","_doc_optionsStr1","String","onDoctypeChange2","fieldValue","baseProps","label","onChange","v","error","fieldMeta","multiple","commit","control","jsx","default","Fragment","children","OverrideComponent","component","mergedProps","props","Component","getFieldComponent","Text","color","fontSize","fieldtype","Component1","jsxs"],"sources":["../../../src/schemaForm/index.tsx"],"sourcesContent":[null],"mappings":"AAaA;;AAAA,IACEA,QAAA,GAAAC,MAAA,CAAAC,MAAA;AAAA,IACAC,SAAA,GAAAF,MAAA,CAAAG,cAAA;AAAA,IAAAC,gBAEK,GAAAJ,MAAA,CAAAK,wBAAA;AACP,IAAAC,iBAAS,GAAAN,MAAA,CAAAO,mBAAwB;AACjC,IAAAC,YAAgB,GAAAR,MAAA,CAAAS,cAAe;AAC/B,IAAAC,YAAS,GAAAV,MAAA,CAAAW,SAAsB,CAAAC,cAAA;AAC/B,IAAAC,QAAS,GAAMA,CAAAC,MAAM,EAAAC,GAAA,KAAQ;EAE7B,SAASC,IAAA,IAAAD,GAAA,EACTb,SAAS,CAAAY,MAAA,EAAAE,IAAkC;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAC3C;
|
|
1
|
+
{"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","schemaForm_exports","SchemaForm","module","exports","import_jsx_runtime","require","import_forms","import_theme","import_react","import_react_i18next","import_tamagui","import_dependsOn","import_Heading","import_fieldRegistry","_type_of","obj","Symbol","constructor","layoutFieldTypes","Set","isOverrideFunction","override","isOverrideComponent","isOverrideProps","param","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","renderFieldWrapper","t","useTranslation","knobProps","useResolvedKnobs","dependsOnMap","useMemo","map","Map","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","fields","iterator","_step","next","done","field","depends_on","evaluator","compileDependsOn","set","err","return","hiddenSet","readOnlySet","requiredMarkMode","flags","filter","f","has","type","hidden","required","computeRequiredMarkMode","renderField","_doc_optionsStr","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","_doc_optionsStr1","String","onDoctypeChange2","fieldValue","baseProps","label","onChange","v","error","fieldMeta","multiple","commit","control","jsx","default","Fragment","children","OverrideComponent","component","mergedProps","props","Component","getFieldComponent","Text","color","fontSize","fieldtype","Component1","jsxs","renderWrappedField","rendered"],"sources":["../../../src/schemaForm/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/frappe-ui",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0",
|
|
4
4
|
"description": "Pre-wired Tamagui components for Frappe doctypes with live data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cross-platform",
|
|
@@ -69,26 +69,27 @@
|
|
|
69
69
|
"@tamagui/colors": "2.0.0-rc.41",
|
|
70
70
|
"@tanstack/db": "0.6.5",
|
|
71
71
|
"@tanstack/react-hotkeys": "^0.5.1",
|
|
72
|
-
"@tiptap/extension-image": "^3.
|
|
73
|
-
"@tiptap/extension-link": "^3.
|
|
74
|
-
"@tiptap/extension-placeholder": "^3.
|
|
75
|
-
"@tiptap/pm": "^3.
|
|
76
|
-
"@tiptap/react": "^3.
|
|
77
|
-
"@tiptap/starter-kit": "^3.
|
|
72
|
+
"@tiptap/extension-image": "^3.30.0",
|
|
73
|
+
"@tiptap/extension-link": "^3.30.0",
|
|
74
|
+
"@tiptap/extension-placeholder": "^3.30.0",
|
|
75
|
+
"@tiptap/pm": "^3.30.0",
|
|
76
|
+
"@tiptap/react": "^3.30.0",
|
|
77
|
+
"@tiptap/starter-kit": "^3.30.0",
|
|
78
78
|
"html5-qrcode": "^2.3.8",
|
|
79
79
|
"signature_pad": "^5.1.3",
|
|
80
80
|
"tamagui": "2.0.0-rc.41",
|
|
81
|
-
"@multiplatform.one/components": "6.
|
|
82
|
-
"@multiplatform.one/
|
|
83
|
-
"@multiplatform.one/i18n": "6.
|
|
84
|
-
"@multiplatform.one/platform": "6.
|
|
85
|
-
"@multiplatform.one/
|
|
86
|
-
"@multiplatform.one/
|
|
87
|
-
"@multiplatform.one/
|
|
88
|
-
"@multiplatform.one/
|
|
89
|
-
"@multiplatform.one/
|
|
90
|
-
"@multiplatform.one/
|
|
91
|
-
"@multiplatform.one/store": "6.
|
|
81
|
+
"@multiplatform.one/components": "6.6.0",
|
|
82
|
+
"@multiplatform.one/forms": "6.6.0",
|
|
83
|
+
"@multiplatform.one/i18n": "6.6.0",
|
|
84
|
+
"@multiplatform.one/platform": "6.6.0",
|
|
85
|
+
"@multiplatform.one/router": "6.6.0",
|
|
86
|
+
"@multiplatform.one/theme": "6.6.0",
|
|
87
|
+
"@multiplatform.one/desktop": "6.6.0",
|
|
88
|
+
"@multiplatform.one/rich-text": "6.6.0",
|
|
89
|
+
"@multiplatform.one/frappe": "6.6.0",
|
|
90
|
+
"@multiplatform.one/markdown": "6.6.0",
|
|
91
|
+
"@multiplatform.one/store": "6.6.0",
|
|
92
|
+
"@multiplatform.one/table": "6.6.0"
|
|
92
93
|
},
|
|
93
94
|
"devDependencies": {
|
|
94
95
|
"@tamagui/build": "2.0.0-rc.41",
|
|
@@ -101,9 +102,9 @@
|
|
|
101
102
|
"react-dom": "19.2.5",
|
|
102
103
|
"react-i18next": "^16.6.6",
|
|
103
104
|
"vitest": "^4.1.5",
|
|
104
|
-
"@multiplatform.one/config": "6.
|
|
105
|
-
"@multiplatform.one/
|
|
106
|
-
"@multiplatform.one/
|
|
105
|
+
"@multiplatform.one/config": "6.6.0",
|
|
106
|
+
"@multiplatform.one/storybook": "6.6.0",
|
|
107
|
+
"@multiplatform.one/test-utils": "6.6.0"
|
|
107
108
|
},
|
|
108
109
|
"peerDependencies": {
|
|
109
110
|
"@react-native-community/datetimepicker": "^8.0.1",
|
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
} from "@phosphor-icons/react";
|
|
17
17
|
import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
|
|
18
18
|
import React from "react";
|
|
19
|
-
|
|
19
|
+
// Catalog Button (LC-56 story honesty): stories compose catalog controls, never raw tamagui ones.
|
|
20
|
+
import { Button, Switch } from "@multiplatform.one/forms";
|
|
21
|
+
import { Text, XStack, YStack } from "tamagui";
|
|
20
22
|
import {
|
|
21
23
|
FormSidebar,
|
|
22
24
|
type SidebarMetadataEntry,
|
|
@@ -318,11 +320,9 @@ export const DeskParity = () => {
|
|
|
318
320
|
<Switch
|
|
319
321
|
size="$2"
|
|
320
322
|
checked={following}
|
|
321
|
-
|
|
322
|
-
aria-label
|
|
323
|
-
|
|
324
|
-
<Switch.Thumb />
|
|
325
|
-
</Switch>
|
|
323
|
+
onChange={setFollowing}
|
|
324
|
+
switchProps={{ "aria-label": "Follow document" } as never}
|
|
325
|
+
/>
|
|
326
326
|
</XStack>
|
|
327
327
|
),
|
|
328
328
|
},
|
package/src/FormSidebar.tsx
CHANGED
|
@@ -17,13 +17,12 @@
|
|
|
17
17
|
* DeskParity story.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import { getInitials } from "@multiplatform.one/components";
|
|
20
|
+
import { Avatar, getInitials } from "@multiplatform.one/components";
|
|
21
21
|
import { pressTargetStyle, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
22
22
|
import { ImageSquareIcon, PlusIcon, UploadIcon, UserIcon, XIcon } from "@phosphor-icons/react";
|
|
23
23
|
import React from "react";
|
|
24
24
|
import { useTranslation } from "react-i18next";
|
|
25
25
|
import {
|
|
26
|
-
Avatar,
|
|
27
26
|
Button,
|
|
28
27
|
Image,
|
|
29
28
|
ListItem,
|
|
@@ -101,6 +101,103 @@ describe("buildAssignmentTodo", () => {
|
|
|
101
101
|
});
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// buildAssignmentTodo — the default due date is the user's calendar day
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
|
|
108
|
+
// ToDo.date is a Frappe Date field: timezone-naive `YYYY-MM-DD`. Deriving the
|
|
109
|
+
// default from `toISOString()` names UTC's calendar day, which is a different
|
|
110
|
+
// day from the user's either side of the boundary.
|
|
111
|
+
|
|
112
|
+
function inZone<T>(timeZone: string, read: () => T): T {
|
|
113
|
+
const previous = process.env.TZ;
|
|
114
|
+
process.env.TZ = timeZone;
|
|
115
|
+
try {
|
|
116
|
+
return read();
|
|
117
|
+
} finally {
|
|
118
|
+
if (previous === undefined) delete process.env.TZ;
|
|
119
|
+
else process.env.TZ = previous;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Two frozen instants, each splitting the UTC day from one zone's local day.
|
|
125
|
+
* The 21 hours between UTC−7 and UTC+14 are less than a day, so no single
|
|
126
|
+
* instant can disagree with both extremes at once — it takes one per
|
|
127
|
+
* hemisphere:
|
|
128
|
+
* 05:00Z — Los Angeles is still on the previous day, so UTC-today writes
|
|
129
|
+
* *tomorrow*;
|
|
130
|
+
* 11:00Z — Kiritimati is already on the next day, so UTC-today writes
|
|
131
|
+
* *yesterday*.
|
|
132
|
+
*/
|
|
133
|
+
const TODAY_MATRIX = [
|
|
134
|
+
{ instant: "2026-08-15T05:00:00Z", timeZone: "UTC", localDay: "2026-08-15" },
|
|
135
|
+
{ instant: "2026-08-15T05:00:00Z", timeZone: "America/Los_Angeles", localDay: "2026-08-14" },
|
|
136
|
+
{ instant: "2026-08-15T05:00:00Z", timeZone: "America/New_York", localDay: "2026-08-15" },
|
|
137
|
+
{ instant: "2026-08-15T05:00:00Z", timeZone: "Pacific/Kiritimati", localDay: "2026-08-15" },
|
|
138
|
+
{ instant: "2026-08-14T11:00:00Z", timeZone: "UTC", localDay: "2026-08-14" },
|
|
139
|
+
{ instant: "2026-08-14T11:00:00Z", timeZone: "America/Los_Angeles", localDay: "2026-08-14" },
|
|
140
|
+
{ instant: "2026-08-14T11:00:00Z", timeZone: "America/New_York", localDay: "2026-08-14" },
|
|
141
|
+
{ instant: "2026-08-14T11:00:00Z", timeZone: "Pacific/Kiritimati", localDay: "2026-08-15" },
|
|
142
|
+
] as const;
|
|
143
|
+
|
|
144
|
+
/** The formulation this fix replaced, kept as the negative control. */
|
|
145
|
+
const isoToday = () => new Date().toISOString().slice(0, 10);
|
|
146
|
+
|
|
147
|
+
describe("buildAssignmentTodo — the default due date", () => {
|
|
148
|
+
afterEach(() => {
|
|
149
|
+
vi.useRealTimers();
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it("is the user's local calendar day in every timezone", () => {
|
|
153
|
+
vi.useFakeTimers();
|
|
154
|
+
for (const { instant, timeZone, localDay } of TODAY_MATRIX) {
|
|
155
|
+
vi.setSystemTime(new Date(instant));
|
|
156
|
+
const date = inZone(
|
|
157
|
+
timeZone,
|
|
158
|
+
() => buildAssignmentTodo({ doctype: "Task", name: "TASK-001", user: "jane@x.com" }).date,
|
|
159
|
+
);
|
|
160
|
+
expect({ instant, timeZone, date }).toEqual({ instant, timeZone, date: localDay });
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("negative control: the ISO formulation fails that expectation on both boundaries", () => {
|
|
165
|
+
vi.useFakeTimers();
|
|
166
|
+
const disagreements = TODAY_MATRIX.filter(({ instant, timeZone, localDay }) => {
|
|
167
|
+
vi.setSystemTime(new Date(instant));
|
|
168
|
+
return inZone(timeZone, isoToday) !== localDay;
|
|
169
|
+
}).map(({ instant, timeZone, localDay }) => {
|
|
170
|
+
vi.setSystemTime(new Date(instant));
|
|
171
|
+
return { instant, timeZone, wrote: inZone(timeZone, isoToday), shouldBe: localDay };
|
|
172
|
+
});
|
|
173
|
+
// Naming every disagreeing row pins that the matrix above discriminates,
|
|
174
|
+
// and that it is not merely restating `toISOString()` in six of its eight.
|
|
175
|
+
expect(disagreements).toEqual([
|
|
176
|
+
{
|
|
177
|
+
instant: "2026-08-15T05:00:00Z",
|
|
178
|
+
timeZone: "America/Los_Angeles",
|
|
179
|
+
wrote: "2026-08-15",
|
|
180
|
+
shouldBe: "2026-08-14",
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
instant: "2026-08-14T11:00:00Z",
|
|
184
|
+
timeZone: "Pacific/Kiritimati",
|
|
185
|
+
wrote: "2026-08-14",
|
|
186
|
+
shouldBe: "2026-08-15",
|
|
187
|
+
},
|
|
188
|
+
]);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it("guard: the host honours process.env.TZ, so the matrix reads real zones", () => {
|
|
192
|
+
vi.useFakeTimers();
|
|
193
|
+
vi.setSystemTime(new Date("2026-08-15T05:00:00Z"));
|
|
194
|
+
// If TZ ever stopped being honoured in-process these collapse to one
|
|
195
|
+
// value and the matrix would stop proving anything.
|
|
196
|
+
expect(inZone("America/Los_Angeles", () => new Date().getDate())).toBe(14);
|
|
197
|
+
expect(inZone("Pacific/Kiritimati", () => new Date().getDate())).toBe(15);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
104
201
|
// ---------------------------------------------------------------------------
|
|
105
202
|
// Component render states (fixture-backed)
|
|
106
203
|
// ---------------------------------------------------------------------------
|
package/src/FrappeAssignment.tsx
CHANGED
|
@@ -15,13 +15,15 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { AsyncBoundary, Avatar } from "@multiplatform.one/components";
|
|
17
17
|
import { useFrappeCollection, useLiveQuery } from "@multiplatform.one/frappe";
|
|
18
|
+
import { Button } from "@multiplatform.one/forms";
|
|
18
19
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
19
20
|
import { CheckIcon, PlusIcon, XIcon } from "@phosphor-icons/react";
|
|
20
21
|
import { useCallback, useMemo, useState } from "react";
|
|
21
22
|
import { useTranslation } from "react-i18next";
|
|
22
|
-
import {
|
|
23
|
+
import { Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
23
24
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
24
25
|
import { FrappeReconnectIndicator } from "./FrappeReconnectIndicator";
|
|
26
|
+
import { toFrappeDateValue } from "./fields/Date/wire";
|
|
25
27
|
import { Link } from "./fields/Link";
|
|
26
28
|
import { useFrappeUsers } from "./frappeUsers";
|
|
27
29
|
import { toLiveLoadError } from "./liveErrors";
|
|
@@ -123,7 +125,9 @@ export function buildAssignmentTodo(args: {
|
|
|
123
125
|
description: args.description || `Assignment for ${args.doctype} ${args.name}`,
|
|
124
126
|
status: "Open",
|
|
125
127
|
priority: "Medium",
|
|
126
|
-
date
|
|
128
|
+
// ToDo.date is a Frappe Date field: timezone-naive, so the default is the
|
|
129
|
+
// user's local calendar day. `toISOString()` would name UTC's day instead.
|
|
130
|
+
date: toFrappeDateValue(new Date(), "date"),
|
|
127
131
|
...(args.assignedBy ? { assigned_by: args.assignedBy } : {}),
|
|
128
132
|
};
|
|
129
133
|
}
|
|
@@ -32,7 +32,12 @@ interface CalEvent {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const today = new Date();
|
|
35
|
-
|
|
35
|
+
// LOCAL parts, matching FrappeCalendar's own `datePart`: a `toISOString()` date
|
|
36
|
+
// is UTC, so east of Greenwich the fixture names yesterday for the hour after
|
|
37
|
+
// local midnight and no event lands on the view's "today".
|
|
38
|
+
const pad2 = (n: number) => String(n).padStart(2, "0");
|
|
39
|
+
const formatDate = (date: Date) =>
|
|
40
|
+
`${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())}`;
|
|
36
41
|
|
|
37
42
|
// Fixture doc colors come from the sanctioned categorical palette (chart
|
|
38
43
|
// palette precedent) instead of raw brand hexes — Frappe docs store one color
|
|
@@ -287,6 +292,72 @@ Live.parameters = {
|
|
|
287
292
|
},
|
|
288
293
|
};
|
|
289
294
|
|
|
295
|
+
// ---------------------------------------------------------------------------
|
|
296
|
+
// Frappe `Date` fields — date-only wire values, no time component
|
|
297
|
+
// ---------------------------------------------------------------------------
|
|
298
|
+
|
|
299
|
+
interface LeaveRequest {
|
|
300
|
+
name: string;
|
|
301
|
+
doctype: string;
|
|
302
|
+
subject: string;
|
|
303
|
+
from_date: string;
|
|
304
|
+
to_date: string;
|
|
305
|
+
color: string;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const dateOnlyFixtures: LeaveRequest[] = [
|
|
309
|
+
{
|
|
310
|
+
name: "LEAVE-001",
|
|
311
|
+
doctype: "LeaveApplication",
|
|
312
|
+
subject: "Annual leave",
|
|
313
|
+
from_date: formatDate(today),
|
|
314
|
+
to_date: formatDate(new Date(today.getTime() + 2 * 86400000)),
|
|
315
|
+
color: green,
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
name: "LEAVE-002",
|
|
319
|
+
doctype: "LeaveApplication",
|
|
320
|
+
subject: "Conference travel",
|
|
321
|
+
from_date: formatDate(new Date(today.getTime() + 4 * 86400000)),
|
|
322
|
+
to_date: formatDate(new Date(today.getTime() + 5 * 86400000)),
|
|
323
|
+
color: orange,
|
|
324
|
+
},
|
|
325
|
+
];
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Frappe `Date` fields arrive as bare "YYYY-MM-DD" — a calendar date carrying
|
|
329
|
+
* no timezone, the shape every other fixture story here omits by always
|
|
330
|
+
* sending a time. They parse to LOCAL midnight (`parseCalendarDate`); read as
|
|
331
|
+
* UTC they render a day early in every negative-offset zone, so this is the
|
|
332
|
+
* story that makes that class of regression visible.
|
|
333
|
+
*/
|
|
334
|
+
export const DateOnlyFields = () => (
|
|
335
|
+
<FrappeProvider
|
|
336
|
+
baseURL="https://demo.frappe.cloud"
|
|
337
|
+
fixtures={new InMemoryFixtureProvider({ LeaveApplication: dateOnlyFixtures })}
|
|
338
|
+
>
|
|
339
|
+
<FrappeCalendar<LeaveRequest>
|
|
340
|
+
doctype="LeaveApplication"
|
|
341
|
+
dateField="from_date"
|
|
342
|
+
endDateField="to_date"
|
|
343
|
+
titleField="subject"
|
|
344
|
+
colorField="color"
|
|
345
|
+
defaultView="month"
|
|
346
|
+
onEventClick={action("onEventClick")}
|
|
347
|
+
onDateClick={action("onDateClick")}
|
|
348
|
+
height={600}
|
|
349
|
+
/>
|
|
350
|
+
</FrappeProvider>
|
|
351
|
+
);
|
|
352
|
+
DateOnlyFields.parameters = {
|
|
353
|
+
docs: {
|
|
354
|
+
description: {
|
|
355
|
+
story:
|
|
356
|
+
"Date-only Frappe `Date` fields (no time component). The leave block starts on today's cell in every timezone — read as UTC midnight it would sit on yesterday west of Greenwich.",
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
|
|
290
361
|
// ---------------------------------------------------------------------------
|
|
291
362
|
// Named Frappe colors (P-15): palette references resolve to sanctioned ramps,
|
|
292
363
|
// literals pass through, unknown names fall back to the identity slot
|
package/src/FrappeCalendar.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import { Spinner } from "@multiplatform.one/forms";
|
|
|
9
9
|
import React, { useMemo, useCallback, useState, type ReactNode } from "react";
|
|
10
10
|
import { Text, YStack, type YStackProps } from "tamagui";
|
|
11
11
|
import { useTranslation } from "react-i18next";
|
|
12
|
-
import { useChartPalette, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
12
|
+
import { parseCalendarDate, useChartPalette, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
13
13
|
import { FrappeConnectionIndicator } from "./FrappeConnectionIndicator";
|
|
14
14
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
15
15
|
import { describeSyncError } from "./syncError";
|
|
@@ -57,16 +57,6 @@ export interface FrappeCalendarProps<TDoc extends { name: string; doctype: strin
|
|
|
57
57
|
firstDayOfWeek?: 0 | 1;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
/**
|
|
61
|
-
* Parse a date string from Frappe (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).
|
|
62
|
-
*/
|
|
63
|
-
function parseDate(dateStr: string | Date | undefined): Date | null {
|
|
64
|
-
if (!dateStr) return null;
|
|
65
|
-
if (dateStr instanceof Date) return dateStr;
|
|
66
|
-
const parsed = new Date(dateStr.replace(" ", "T"));
|
|
67
|
-
return isNaN(parsed.getTime()) ? null : parsed;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
60
|
/**
|
|
71
61
|
* Format a moved date back into the same shape the document field used:
|
|
72
62
|
* Date stays Date, "YYYY-MM-DD HH:MM:SS" keeps its time part, plain
|
|
@@ -195,9 +185,9 @@ export function FrappeCalendar<TDoc extends { name: string; doctype: string }>({
|
|
|
195
185
|
const events = useMemo((): CalendarEvent[] => {
|
|
196
186
|
return docs
|
|
197
187
|
.map((doc) => {
|
|
198
|
-
const startDate =
|
|
188
|
+
const startDate = parseCalendarDate((doc as any)[dateField]);
|
|
199
189
|
if (!startDate) return null;
|
|
200
|
-
const endDate = endDateField ?
|
|
190
|
+
const endDate = endDateField ? parseCalendarDate((doc as any)[endDateField]) : undefined;
|
|
201
191
|
const title = titleField ? String((doc as any)[titleField] || doc.name) : doc.name;
|
|
202
192
|
const color = colorField
|
|
203
193
|
? resolveFrappeEventColor((doc as any)[colorField], chartPalette)
|
|
@@ -2,7 +2,7 @@ import { useFrappeConnection, type UseFrappeCollectionConfig } from "@multiplatf
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
4
|
import { Text, XStack, YStack } from "tamagui";
|
|
5
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
5
|
+
import { radiusClassProps, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
6
6
|
|
|
7
7
|
export interface FrappeConnectionIndicatorProps {
|
|
8
8
|
/** The same connection config the sibling collection hooks use. */
|
|
@@ -37,7 +37,13 @@ export function FrappeConnectionIndicator({ config }: FrappeConnectionIndicatorP
|
|
|
37
37
|
borderColor="$yellow7"
|
|
38
38
|
borderWidth={1}
|
|
39
39
|
>
|
|
40
|
-
<YStack
|
|
40
|
+
<YStack
|
|
41
|
+
{...radiusClassProps("R-PILL", "connection status dot")}
|
|
42
|
+
width={8}
|
|
43
|
+
height={8}
|
|
44
|
+
borderRadius={4}
|
|
45
|
+
backgroundColor="$yellow10"
|
|
46
|
+
/>
|
|
41
47
|
<Text fontSize="$2" color="$yellow11">
|
|
42
48
|
{t("Reconnecting…")}
|
|
43
49
|
</Text>
|
package/src/FrappeDashboard.tsx
CHANGED
|
@@ -16,6 +16,7 @@ import { useTranslation } from "react-i18next";
|
|
|
16
16
|
import { Spinner } from "@multiplatform.one/forms";
|
|
17
17
|
import { Button, Text, XStack, YStack, type YStackProps, H3 } from "tamagui";
|
|
18
18
|
import {
|
|
19
|
+
formatTimeOfDay,
|
|
19
20
|
MIN_PRESS_TARGET,
|
|
20
21
|
pressTargetHitSlop,
|
|
21
22
|
pressTargetStyle,
|
|
@@ -217,7 +218,7 @@ function LiveDashboardContent<TDoc extends { name: string; doctype: string }>({
|
|
|
217
218
|
{isLiveStale && <Spinner size="small" aria-label={t("Updating")} />}
|
|
218
219
|
<Text fontSize="$1" color="$color10">
|
|
219
220
|
{t("Last updated: {{time}}", {
|
|
220
|
-
time: (dataUpdatedAt ?? lastRefresh)
|
|
221
|
+
time: formatTimeOfDay(dataUpdatedAt ?? lastRefresh),
|
|
221
222
|
})}
|
|
222
223
|
</Text>
|
|
223
224
|
<Button
|
|
@@ -328,7 +329,7 @@ export function FrappeDashboard<TDoc extends { name: string; doctype: string }>(
|
|
|
328
329
|
<XStack {...knobProps.gap} alignItems="center">
|
|
329
330
|
{autoRefresh && (
|
|
330
331
|
<Text fontSize="$1" color="$color10">
|
|
331
|
-
{t("Last updated: {{time}}", { time: lastRefresh
|
|
332
|
+
{t("Last updated: {{time}}", { time: formatTimeOfDay(lastRefresh) })}
|
|
332
333
|
</Text>
|
|
333
334
|
)}
|
|
334
335
|
<Button
|