@multiplatform.one/frappe-ui 7.20.0 → 7.21.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/FrappeForm.cjs +80 -50
- package/dist/cjs/FrappeForm.native.js +82 -55
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +6 -1
- package/dist/cjs/FrappeListView.native.js +6 -1
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeTable.cjs +10 -1
- package/dist/cjs/FrappeTable.native.js +10 -1
- package/dist/cjs/FrappeTable.native.js.map +1 -1
- package/dist/cjs/formEngine/docPermissions.cjs +83 -0
- package/dist/cjs/formEngine/docPermissions.native.js +155 -0
- package/dist/cjs/formEngine/docPermissions.native.js.map +1 -0
- package/dist/cjs/formEngine/index.cjs +9 -1
- package/dist/cjs/formEngine/index.native.js +8 -0
- package/dist/cjs/formEngine/index.native.js.map +1 -1
- package/dist/cjs/formEngine/useDocRights.cjs +54 -0
- package/dist/cjs/formEngine/useDocRights.native.js +60 -0
- package/dist/cjs/formEngine/useDocRights.native.js.map +1 -0
- package/dist/cjs/formEngine/useSessionRoles.cjs +47 -18
- package/dist/cjs/formEngine/useSessionRoles.native.js +53 -19
- package/dist/cjs/formEngine/useSessionRoles.native.js.map +1 -1
- package/dist/cjs/index.cjs +6 -0
- package/dist/cjs/index.native.js +6 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +82 -52
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +84 -57
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +6 -1
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +6 -1
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeTable.mjs +10 -1
- package/dist/esm/FrappeTable.mjs.map +1 -1
- package/dist/esm/FrappeTable.native.js +10 -1
- package/dist/esm/FrappeTable.native.js.map +1 -1
- package/dist/esm/formEngine/docPermissions.mjs +55 -0
- package/dist/esm/formEngine/docPermissions.mjs.map +1 -0
- package/dist/esm/formEngine/docPermissions.native.js +124 -0
- package/dist/esm/formEngine/docPermissions.native.js.map +1 -0
- package/dist/esm/formEngine/index.mjs +4 -2
- package/dist/esm/formEngine/index.mjs.map +1 -1
- package/dist/esm/formEngine/index.native.js +4 -2
- package/dist/esm/formEngine/index.native.js.map +1 -1
- package/dist/esm/formEngine/useDocRights.mjs +29 -0
- package/dist/esm/formEngine/useDocRights.mjs.map +1 -0
- package/dist/esm/formEngine/useDocRights.native.js +32 -0
- package/dist/esm/formEngine/useDocRights.native.js.map +1 -0
- package/dist/esm/formEngine/useSessionRoles.mjs +47 -19
- package/dist/esm/formEngine/useSessionRoles.mjs.map +1 -1
- package/dist/esm/formEngine/useSessionRoles.native.js +53 -20
- package/dist/esm/formEngine/useSessionRoles.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +82 -52
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +82 -55
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +6 -1
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +6 -1
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeTable.mjs +10 -1
- package/dist/jsx/FrappeTable.mjs.map +1 -1
- package/dist/jsx/FrappeTable.native.js +10 -1
- package/dist/jsx/FrappeTable.native.js.map +1 -1
- package/dist/jsx/formEngine/docPermissions.mjs +55 -0
- package/dist/jsx/formEngine/docPermissions.mjs.map +1 -0
- package/dist/jsx/formEngine/docPermissions.native.js +155 -0
- package/dist/jsx/formEngine/docPermissions.native.js.map +1 -0
- package/dist/jsx/formEngine/index.mjs +4 -2
- package/dist/jsx/formEngine/index.mjs.map +1 -1
- package/dist/jsx/formEngine/index.native.js +8 -0
- package/dist/jsx/formEngine/index.native.js.map +1 -1
- package/dist/jsx/formEngine/useDocRights.mjs +29 -0
- package/dist/jsx/formEngine/useDocRights.mjs.map +1 -0
- package/dist/jsx/formEngine/useDocRights.native.js +60 -0
- package/dist/jsx/formEngine/useDocRights.native.js.map +1 -0
- package/dist/jsx/formEngine/useSessionRoles.mjs +47 -19
- package/dist/jsx/formEngine/useSessionRoles.mjs.map +1 -1
- package/dist/jsx/formEngine/useSessionRoles.native.js +53 -19
- package/dist/jsx/formEngine/useSessionRoles.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +6 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +16 -16
- package/src/FrappeForm.tsx +94 -62
- package/src/FrappeListView.tsx +12 -7
- package/src/FrappeTable.rights.spec.tsx +154 -0
- package/src/FrappeTable.tsx +21 -2
- package/src/formEngine/docPermissions.spec.ts +145 -0
- package/src/formEngine/docPermissions.ts +128 -0
- package/src/formEngine/index.ts +14 -1
- package/src/formEngine/useDocRights.ts +41 -0
- package/src/formEngine/useSessionRoles.ts +55 -29
- package/src/frappeRoutes.spec.tsx +116 -4
- package/src/index.ts +14 -0
- package/types/FrappeForm.d.ts.map +1 -1
- package/types/FrappeListView.d.ts +3 -2
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/FrappeTable.d.ts +11 -2
- package/types/FrappeTable.d.ts.map +1 -1
- package/types/formEngine/docPermissions.d.ts +54 -0
- package/types/formEngine/docPermissions.d.ts.map +1 -0
- package/types/formEngine/index.d.ts +6 -1
- package/types/formEngine/index.d.ts.map +1 -1
- package/types/formEngine/useDocRights.d.ts +24 -0
- package/types/formEngine/useDocRights.d.ts.map +1 -0
- package/types/formEngine/useSessionRoles.d.ts +12 -2
- package/types/formEngine/useSessionRoles.d.ts.map +1 -1
- package/types/index.d.ts +2 -2
- package/types/index.d.ts.map +1 -1
|
@@ -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","index_exports","AttachLibrary","import_AttachLibrary","Awesomebar","import_awesomebar","Barcode","import_Barcode","ChartCard","import_ChartCard","Check","import_Check","CodeEditorField","import_CodeEditor","Color","import_Color","DEFAULT_FRAPPE_ROWS_LIMIT","import_useFrappeRows","Data","import_Data","Date","import_Date","DateRangeField","import_DateRange","DeskFormPage","import_DeskFormPage","DeskFormSidebar","import_DeskFormSidebar","DeskListPage","import_DeskListPage","DeskShell","import_DeskShell","DeskSidebar","import_DeskSidebar","Duration","import_Duration","DynamicLink","import_DynamicLink","FieldOverridesProvider","import_fieldOverrides","FileBrowser","import_FileBrowser","FileUpload","import_FileUpload","FileUploadField","import_FileUploadField","FormSidebar","import_FormSidebar","FrappeAssignment","import_FrappeAssignment","FrappeAttachments","import_attachments","Attachments","FrappeCalendar","import_FrappeCalendar","FrappeChartCard","import_FrappeChartCard","FrappeConnectionIndicator","import_FrappeConnectionIndicator","FrappeDashboard","import_FrappeDashboard","FrappeForm","import_FrappeForm","FrappeFormConnectionSection","import_FrappeFormConnections","FrappeFormConnections","FrappeGantt","import_FrappeGantt","FrappeImageView","import_FrappeImageView","FrappeKPICard","import_FrappeKPICard","FrappeKanban","import_FrappeKanban","FrappeLikedBy","import_FrappeLikedBy","FrappeList","import_FrappeList","FrappeListView","import_FrappeListView","FrappeNavigationProvider","import_frappeNavigation","FrappeProvider","import_FrappeProvider","FrappeReconnectIndicator","import_FrappeReconnectIndicator","FrappeReportBuilder","import_FrappeReportBuilder","FrappeReportView","import_FrappeReportView","FrappeStoryProvider","import_frappeStoryTarget","FrappeTable","import_FrappeTable","FrappeTags","import_tags","Tags","FrappeTimeline","import_timeline","Timeline","FrappeTreeView","import_FrappeTreeView","Geolocation","import_Geolocation","Heading","import_Heading","Html","import_HTML","Icon","import_Icon","KPICard","import_components","Link","import_Link","LongText","import_LongText","MULTI_CHECKBOX_MAX","import_resolveControl","MarkdownEditorField","import_MarkdownEditor","MentionInputField","import_MentionInput","NO_TAGS_LABEL","import_useFrappeFacets","Numeric","import_Numeric","OTPInputField","import_OTPInput","Password","import_Password","Phone","import_Phone","ProgressField","import_Progress","RadioGroupField","import_RadioGroup","Rating","import_Rating","ReadOnly","import_ReadOnly","SINGLE_RADIO_MAX","SINGLE_SELECT_MAX","SchemaForm","import_schemaForm","SchemaWizard","import_SchemaWizard","Select","import_Select","Signature","import_Signature","SliderField","import_Slider","SmallText","import_SmallText","SwitchField","import_Switch","SyncErrorNotice","import_SyncErrorNotice","TableMultiSelect","import_TableMultiSelect","TextEditor","TimePicker","import_TimePicker","ToggleGroupField","import_ToggleGroup","addToFavorites","addToRecent","aggregateData","applyFetchedValues","import_formEngine","applyFieldOrder","applyOrderToSchema","buildAssignmentTodo","buildCopyValues","buildCreateDefaults","buildFetchMap","buildFormTabs","buildPermLevelMatrix","calculatePercentageChange","calculateTrend","canReadLevel","canWriteLevel","childCellHidden","import_fieldRegistry","childFieldsToColumns","childFieldsToDetailColumns","compactFilterValues","compileDependsOn","import_dependsOn","computeDirtyFields","connectionFields","import_frappeConnections","connectionsFromMeta","deriveAssignments","docFieldsToFilterFields","import_filterFields","evaluateDependsOn","fieldtypeToTableField","filterValueToFrappeTuple","filtersExcludingField","frappeCodeLanguage","frappeEventColorNames","import_frappeEventColor","frappeRouteHref","frappeRouteTarget","frappeStoriesLive","frappeStoryBaseUrl","getFieldComponent","initDefaultRegistry","isEmptyValue","isFacetFilterActive","isFetchLocked","isPromptNamed","isSameValue","normalizeReportColumn","normalizeReportPayload","normalizeReportRows","parseChoiceOptions","parseLikedBy","registerField","removeFromFavorites","reportColumnToDataTableColumn","reportFieldtypeToTableField","reportRowLabel","resolveChoiceControl","resolveFrappeEventColor","schemaToWizardSteps","scrubFieldname","scrubUserFacetRows","setCreatePrefill","takeCreatePrefill","toggleFacetFilter","toggleLikedBy","useConnectionFilters","import_useConnectionFilters","useFieldResolver","useFormEngine","useFrappeAggregate","import_useFrappeAggregate","useFrappeCollection","import_frappe","useFrappeCommentActions","import_commentActions","useFrappeConfig","useFrappeConnection","useFrappeContext","useFrappeFacets","useFrappeNavigation","useFrappePagination","import_useFrappePagination","useFrappeReport","useFrappeRouter","useFrappeRows","useLiveQuery","useSessionRoles","module","exports","import_react","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
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","index_exports","AttachLibrary","import_AttachLibrary","Awesomebar","import_awesomebar","Barcode","import_Barcode","ChartCard","import_ChartCard","Check","import_Check","CodeEditorField","import_CodeEditor","Color","import_Color","DEFAULT_FRAPPE_ROWS_LIMIT","import_useFrappeRows","Data","import_Data","Date","import_Date","DateRangeField","import_DateRange","DeskFormPage","import_DeskFormPage","DeskFormSidebar","import_DeskFormSidebar","DeskListPage","import_DeskListPage","DeskShell","import_DeskShell","DeskSidebar","import_DeskSidebar","Duration","import_Duration","DynamicLink","import_DynamicLink","FieldOverridesProvider","import_fieldOverrides","FileBrowser","import_FileBrowser","FileUpload","import_FileUpload","FileUploadField","import_FileUploadField","FormSidebar","import_FormSidebar","FrappeAssignment","import_FrappeAssignment","FrappeAttachments","import_attachments","Attachments","FrappeCalendar","import_FrappeCalendar","FrappeChartCard","import_FrappeChartCard","FrappeConnectionIndicator","import_FrappeConnectionIndicator","FrappeDashboard","import_FrappeDashboard","FrappeForm","import_FrappeForm","FrappeFormConnectionSection","import_FrappeFormConnections","FrappeFormConnections","FrappeGantt","import_FrappeGantt","FrappeImageView","import_FrappeImageView","FrappeKPICard","import_FrappeKPICard","FrappeKanban","import_FrappeKanban","FrappeLikedBy","import_FrappeLikedBy","FrappeList","import_FrappeList","FrappeListView","import_FrappeListView","FrappeNavigationProvider","import_frappeNavigation","FrappeProvider","import_FrappeProvider","FrappeReconnectIndicator","import_FrappeReconnectIndicator","FrappeReportBuilder","import_FrappeReportBuilder","FrappeReportView","import_FrappeReportView","FrappeStoryProvider","import_frappeStoryTarget","FrappeTable","import_FrappeTable","FrappeTags","import_tags","Tags","FrappeTimeline","import_timeline","Timeline","FrappeTreeView","import_FrappeTreeView","Geolocation","import_Geolocation","Heading","import_Heading","Html","import_HTML","Icon","import_Icon","KPICard","import_components","Link","import_Link","LongText","import_LongText","MULTI_CHECKBOX_MAX","import_resolveControl","MarkdownEditorField","import_MarkdownEditor","MentionInputField","import_MentionInput","NO_TAGS_LABEL","import_useFrappeFacets","Numeric","import_Numeric","OTPInputField","import_OTPInput","Password","import_Password","Phone","import_Phone","ProgressField","import_Progress","RadioGroupField","import_RadioGroup","Rating","import_Rating","ReadOnly","import_ReadOnly","SINGLE_RADIO_MAX","SINGLE_SELECT_MAX","SchemaForm","import_schemaForm","SchemaWizard","import_SchemaWizard","Select","import_Select","Signature","import_Signature","SliderField","import_Slider","SmallText","import_SmallText","SwitchField","import_Switch","SyncErrorNotice","import_SyncErrorNotice","TableMultiSelect","import_TableMultiSelect","TextEditor","TimePicker","import_TimePicker","ToggleGroupField","import_ToggleGroup","addToFavorites","addToRecent","aggregateData","allDocRights","import_formEngine","applyFetchedValues","applyFieldOrder","applyOrderToSchema","buildAssignmentTodo","buildCopyValues","buildCreateDefaults","buildFetchMap","buildFormTabs","buildPermLevelMatrix","calculatePercentageChange","calculateTrend","canReadLevel","canWriteLevel","childCellHidden","import_fieldRegistry","childFieldsToColumns","childFieldsToDetailColumns","compactFilterValues","compileDependsOn","import_dependsOn","computeDirtyFields","connectionFields","import_frappeConnections","connectionsFromMeta","deriveAssignments","docFieldsToFilterFields","import_filterFields","docRightNames","evaluateDependsOn","fieldtypeToTableField","filterValueToFrappeTuple","filtersExcludingField","frappeCodeLanguage","frappeEventColorNames","import_frappeEventColor","frappeRouteHref","frappeRouteTarget","frappeStoriesLive","frappeStoryBaseUrl","getFieldComponent","initDefaultRegistry","isEmptyValue","isFacetFilterActive","isFetchLocked","isPromptNamed","isSameValue","normalizeReportColumn","normalizeReportPayload","normalizeReportRows","parseChoiceOptions","parseLikedBy","registerField","removeFromFavorites","reportColumnToDataTableColumn","reportFieldtypeToTableField","reportRowLabel","resolveChoiceControl","resolveDocRights","resolveFrappeEventColor","schemaToWizardSteps","scrubFieldname","scrubUserFacetRows","sessionDocRights","setCreatePrefill","takeCreatePrefill","toggleFacetFilter","toggleLikedBy","useConnectionFilters","import_useConnectionFilters","useDocRights","useFieldResolver","useFormEngine","useFrappeAggregate","import_useFrappeAggregate","useFrappeCollection","import_frappe","useFrappeCommentActions","import_commentActions","useFrappeConfig","useFrappeConnection","useFrappeContext","useFrappeFacets","useFrappeNavigation","useFrappePagination","import_useFrappePagination","useFrappeReport","useFrappeRouter","useFrappeRows","useFrappeSession","useLiveQuery","useSessionRoles","module","exports","import_react","require"],"sources":["../../src/index.ts"],"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": "7.
|
|
3
|
+
"version": "7.21.0",
|
|
4
4
|
"description": "Pre-wired Tamagui components for Frappe doctypes with live data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cross-platform",
|
|
@@ -72,18 +72,18 @@
|
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@multiplatform.one/components": "7.
|
|
76
|
-
"@multiplatform.one/desktop": "7.
|
|
77
|
-
"@multiplatform.one/forms": "7.
|
|
78
|
-
"@multiplatform.one/frappe": "7.
|
|
79
|
-
"@multiplatform.one/i18n": "7.
|
|
80
|
-
"@multiplatform.one/markdown": "7.
|
|
81
|
-
"@multiplatform.one/platform": "7.
|
|
82
|
-
"@multiplatform.one/rich-text": "7.
|
|
83
|
-
"@multiplatform.one/router": "7.
|
|
84
|
-
"@multiplatform.one/store": "7.
|
|
85
|
-
"@multiplatform.one/table": "7.
|
|
86
|
-
"@multiplatform.one/theme": "7.
|
|
75
|
+
"@multiplatform.one/components": "7.21.0",
|
|
76
|
+
"@multiplatform.one/desktop": "7.21.0",
|
|
77
|
+
"@multiplatform.one/forms": "7.21.0",
|
|
78
|
+
"@multiplatform.one/frappe": "7.21.0",
|
|
79
|
+
"@multiplatform.one/i18n": "7.21.0",
|
|
80
|
+
"@multiplatform.one/markdown": "7.21.0",
|
|
81
|
+
"@multiplatform.one/platform": "7.21.0",
|
|
82
|
+
"@multiplatform.one/rich-text": "7.21.0",
|
|
83
|
+
"@multiplatform.one/router": "7.21.0",
|
|
84
|
+
"@multiplatform.one/store": "7.21.0",
|
|
85
|
+
"@multiplatform.one/table": "7.21.0",
|
|
86
|
+
"@multiplatform.one/theme": "7.21.0",
|
|
87
87
|
"@phosphor-icons/react": "^2.1.10",
|
|
88
88
|
"@tamagui/colors": "2.7.6",
|
|
89
89
|
"@tanstack/db": "0.8.0",
|
|
@@ -99,9 +99,9 @@
|
|
|
99
99
|
"tamagui": "2.7.6"
|
|
100
100
|
},
|
|
101
101
|
"devDependencies": {
|
|
102
|
-
"@multiplatform.one/config": "7.
|
|
103
|
-
"@multiplatform.one/storybook": "7.
|
|
104
|
-
"@multiplatform.one/test-utils": "7.
|
|
102
|
+
"@multiplatform.one/config": "7.21.0",
|
|
103
|
+
"@multiplatform.one/storybook": "7.21.0",
|
|
104
|
+
"@multiplatform.one/test-utils": "7.21.0",
|
|
105
105
|
"@tamagui/build": "2.7.6",
|
|
106
106
|
"@testing-library/jest-dom": "^6.9.1",
|
|
107
107
|
"@testing-library/react": "^16.3.2",
|
package/src/FrappeForm.tsx
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
AsyncBoundary,
|
|
13
13
|
AsyncSkeleton,
|
|
14
14
|
DetailPageLayout,
|
|
15
|
+
EmptyState,
|
|
15
16
|
PageHeader,
|
|
16
17
|
Tabs,
|
|
17
18
|
type TabsItem,
|
|
@@ -42,7 +43,7 @@ import { applyFetchedValues, buildFetchMap } from "./formEngine/fetchFrom";
|
|
|
42
43
|
import { buildPermLevelMatrix } from "./formEngine/fieldPermissions";
|
|
43
44
|
import { createHttpClient, validateLink } from "./formEngine/formActions";
|
|
44
45
|
import { buildFormTabs, isPromptNamed, type FormTab } from "./formEngine/formLayout";
|
|
45
|
-
import {
|
|
46
|
+
import { useDocRights } from "./formEngine/useDocRights";
|
|
46
47
|
import { connectionFields, connectionsFromMeta, type FrappeConnection } from "./frappeConnections";
|
|
47
48
|
import { FrappeFormConnections } from "./FrappeFormConnections";
|
|
48
49
|
import { FrappeRowsReader, type FrappeRowsSnapshot } from "./FrappeRowsReader";
|
|
@@ -225,10 +226,6 @@ function fieldsFromDocument(doc: Record<string, unknown>): FieldSchema[] {
|
|
|
225
226
|
}));
|
|
226
227
|
}
|
|
227
228
|
|
|
228
|
-
function hasRestrictedPermLevel(meta: DocTypeMeta | undefined): boolean {
|
|
229
|
-
return !!meta?.fields.some((field) => Number(field.permlevel ?? 0) > 0);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
229
|
// ---------------------------------------------------------------------------
|
|
233
230
|
// Sidebar Mappers
|
|
234
231
|
// ---------------------------------------------------------------------------
|
|
@@ -519,34 +516,12 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
519
516
|
error: metaError,
|
|
520
517
|
} = useDocTypeMeta(frappeConfig, doctype);
|
|
521
518
|
|
|
522
|
-
const sessionRoles = useSessionRoles(
|
|
523
|
-
!roles && hasRestrictedPermLevel(meta) ? frappeConfig : undefined,
|
|
524
|
-
);
|
|
525
|
-
const effectiveRoles = roles ?? sessionRoles;
|
|
526
|
-
const permLevels = useMemo(
|
|
527
|
-
() => buildPermLevelMatrix(meta?.permissions, effectiveRoles),
|
|
528
|
-
[meta?.permissions, effectiveRoles],
|
|
529
|
-
);
|
|
530
|
-
|
|
531
519
|
const isCreate = !name;
|
|
532
520
|
const docstatus = Number((baselineDoc as Record<string, unknown> | undefined)?.docstatus ?? 0);
|
|
533
521
|
const layoutFields = useMemo(() => {
|
|
534
522
|
if (!meta) return undefined;
|
|
535
523
|
return sections ? sectionsToLayoutFields(sections) : meta.fields;
|
|
536
524
|
}, [meta, sections]);
|
|
537
|
-
const formTabs = useMemo(() => {
|
|
538
|
-
if (!layoutFields) return undefined;
|
|
539
|
-
return buildFormTabs({
|
|
540
|
-
fields: layoutFields,
|
|
541
|
-
doc: { ...(localDoc as Record<string, unknown>), __islocal: isCreate ? 1 : 0 },
|
|
542
|
-
docstatus,
|
|
543
|
-
formReadOnly: !!meta?.read_only,
|
|
544
|
-
isCreate,
|
|
545
|
-
detailsLabel: t("Details"),
|
|
546
|
-
permLevels,
|
|
547
|
-
hiddenFields: hideFields,
|
|
548
|
-
});
|
|
549
|
-
}, [layoutFields, localDoc, docstatus, meta?.read_only, isCreate, permLevels, hideFields, t]);
|
|
550
525
|
// Meta is permission-gated (Guest gets 403) while the record may still be
|
|
551
526
|
// readable: the form then lays the record's own fields out, read-only.
|
|
552
527
|
const readsWithoutMeta = !children && !meta && Boolean(metaError) && Boolean(name);
|
|
@@ -617,6 +592,34 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
617
592
|
[shareCollection, rawShareRows],
|
|
618
593
|
);
|
|
619
594
|
|
|
595
|
+
const owner = (baselineDoc as Record<string, unknown> | undefined)?.owner;
|
|
596
|
+
const {
|
|
597
|
+
rights,
|
|
598
|
+
pending: rightsPending,
|
|
599
|
+
roles: effectiveRoles,
|
|
600
|
+
} = useDocRights(frappeConfig, meta, {
|
|
601
|
+
roles,
|
|
602
|
+
owner: typeof owner === "string" ? owner : undefined,
|
|
603
|
+
shares: shareRows,
|
|
604
|
+
});
|
|
605
|
+
const permLevels = useMemo(
|
|
606
|
+
() => buildPermLevelMatrix(meta?.permissions, effectiveRoles),
|
|
607
|
+
[meta?.permissions, effectiveRoles],
|
|
608
|
+
);
|
|
609
|
+
const formTabs = useMemo(() => {
|
|
610
|
+
if (!layoutFields) return undefined;
|
|
611
|
+
return buildFormTabs({
|
|
612
|
+
fields: layoutFields,
|
|
613
|
+
doc: { ...(localDoc as Record<string, unknown>), __islocal: isCreate ? 1 : 0 },
|
|
614
|
+
docstatus,
|
|
615
|
+
formReadOnly: !!meta?.read_only,
|
|
616
|
+
isCreate,
|
|
617
|
+
detailsLabel: t("Details"),
|
|
618
|
+
permLevels,
|
|
619
|
+
hiddenFields: hideFields,
|
|
620
|
+
});
|
|
621
|
+
}, [layoutFields, localDoc, docstatus, meta?.read_only, isCreate, permLevels, hideFields, t]);
|
|
622
|
+
|
|
620
623
|
// Live "Assigned To" rows: the open assignment ToDos referencing this doc.
|
|
621
624
|
// The doc's own `_assign` mirror is written silently (update_modified=False,
|
|
622
625
|
// no event) and can't update live; the assignment ToDos emit ordinary
|
|
@@ -828,8 +831,10 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
828
831
|
return validationErrors;
|
|
829
832
|
};
|
|
830
833
|
|
|
834
|
+
const canWriteRecord = isCreate ? rights.create : rights.write;
|
|
835
|
+
|
|
831
836
|
const handleSave = async () => {
|
|
832
|
-
if (wasDeleted) return;
|
|
837
|
+
if (wasDeleted || !canWriteRecord) return;
|
|
833
838
|
|
|
834
839
|
const requiredErrors = validateRequiredFields();
|
|
835
840
|
if (Object.keys(requiredErrors).length > 0) {
|
|
@@ -910,7 +915,7 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
910
915
|
};
|
|
911
916
|
|
|
912
917
|
const handleDelete = async () => {
|
|
913
|
-
if (!docCollection || !name || wasDeleted) return;
|
|
918
|
+
if (!docCollection || !name || wasDeleted || !rights.delete) return;
|
|
914
919
|
if (!(await dialog.confirm(t("Delete this {{doctype}}?", { doctype })))) return;
|
|
915
920
|
setIsSubmitting(true);
|
|
916
921
|
setErrors({});
|
|
@@ -963,6 +968,24 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
963
968
|
);
|
|
964
969
|
}
|
|
965
970
|
|
|
971
|
+
if (!children && isCreate && meta && rightsPending) {
|
|
972
|
+
return frame(
|
|
973
|
+
<YStack {...knobProps.panelPadding} testID="frappe-form-skeleton">
|
|
974
|
+
<AsyncSkeleton layout="generic" />
|
|
975
|
+
</YStack>,
|
|
976
|
+
);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
if (!children && isCreate && meta && !rights.create) {
|
|
980
|
+
return frame(
|
|
981
|
+
<EmptyState
|
|
982
|
+
testID="frappe-form-not-permitted"
|
|
983
|
+
title={t("You can't create {{doctype}}", { doctype })}
|
|
984
|
+
description={t("Your roles don't grant creating a {{doctype}}.", { doctype })}
|
|
985
|
+
/>,
|
|
986
|
+
);
|
|
987
|
+
}
|
|
988
|
+
|
|
966
989
|
if (!children && metaError && !meta && !name) {
|
|
967
990
|
return frame(
|
|
968
991
|
<YStack {...knobProps.panelPadding} alignItems="center" {...knobProps.gap}>
|
|
@@ -1019,7 +1042,16 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1019
1042
|
|
|
1020
1043
|
const effectiveDisabled = disabled || wasDeleted;
|
|
1021
1044
|
const readOnlyView = Boolean(onEdit) || readsWithoutMeta;
|
|
1022
|
-
const fieldsDisabled = effectiveDisabled || readOnlyView;
|
|
1045
|
+
const fieldsDisabled = effectiveDisabled || readOnlyView || !canWriteRecord;
|
|
1046
|
+
const showDelete = Boolean(name && onDelete && !wasDeleted && rights.delete);
|
|
1047
|
+
const showEdit = Boolean(onEdit && rights.write);
|
|
1048
|
+
const showSave = !onEdit && canWriteRecord;
|
|
1049
|
+
const showCancel = !onEdit && Boolean(onCancel);
|
|
1050
|
+
const showNotSaved = hasUnsavedChanges && !onEdit;
|
|
1051
|
+
const toolbarShown =
|
|
1052
|
+
showToolbar &&
|
|
1053
|
+
!readsWithoutMeta &&
|
|
1054
|
+
(showDelete || showEdit || showSave || showCancel || showNotSaved);
|
|
1023
1055
|
const shownTabs = formTabs ?? recordTabs;
|
|
1024
1056
|
const imageFieldName = meta?.image_field;
|
|
1025
1057
|
const sidebarImageUrl = imageFieldName
|
|
@@ -1170,7 +1202,7 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1170
1202
|
onChangeText={(value) => setValue("name" as keyof TDoc, value)}
|
|
1171
1203
|
placeholder={t("New document name")}
|
|
1172
1204
|
error={errors.name}
|
|
1173
|
-
disabled={effectiveDisabled}
|
|
1205
|
+
disabled={effectiveDisabled || !canWriteRecord}
|
|
1174
1206
|
/>
|
|
1175
1207
|
)}
|
|
1176
1208
|
{tabItems.length > 1 ? (
|
|
@@ -1194,20 +1226,20 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1194
1226
|
</Text>
|
|
1195
1227
|
)}
|
|
1196
1228
|
|
|
1197
|
-
{
|
|
1229
|
+
{toolbarShown && (
|
|
1198
1230
|
<XStack
|
|
1199
1231
|
{...knobProps.gap}
|
|
1200
1232
|
justifyContent="flex-end"
|
|
1201
1233
|
alignItems="center"
|
|
1202
1234
|
paddingTop="$3"
|
|
1203
1235
|
>
|
|
1204
|
-
{
|
|
1236
|
+
{showNotSaved && (
|
|
1205
1237
|
<Text color="$orange11" marginInlineEnd="auto" {...knobProps.body}>
|
|
1206
1238
|
{t("Not Saved")}
|
|
1207
1239
|
</Text>
|
|
1208
1240
|
)}
|
|
1209
1241
|
|
|
1210
|
-
{
|
|
1242
|
+
{showDelete && (
|
|
1211
1243
|
<Button
|
|
1212
1244
|
outlined
|
|
1213
1245
|
error
|
|
@@ -1222,7 +1254,7 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1222
1254
|
</Button>
|
|
1223
1255
|
)}
|
|
1224
1256
|
|
|
1225
|
-
{
|
|
1257
|
+
{showEdit && (
|
|
1226
1258
|
<Button
|
|
1227
1259
|
accent
|
|
1228
1260
|
icon={PencilSimpleIcon}
|
|
@@ -1233,33 +1265,33 @@ function FrappeFormBody<TDoc extends { name: string; doctype: string }>({
|
|
|
1233
1265
|
>
|
|
1234
1266
|
{t("Edit")}
|
|
1235
1267
|
</Button>
|
|
1236
|
-
)
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1268
|
+
)}
|
|
1269
|
+
|
|
1270
|
+
{showCancel && (
|
|
1271
|
+
<Button
|
|
1272
|
+
outlined
|
|
1273
|
+
icon={XIcon}
|
|
1274
|
+
disabled={disabled}
|
|
1275
|
+
disabledReason={t("Form is read-only")}
|
|
1276
|
+
disabledReasonPlacement="inline"
|
|
1277
|
+
onPress={handleCancel}
|
|
1278
|
+
>
|
|
1279
|
+
{t("Cancel")}
|
|
1280
|
+
</Button>
|
|
1281
|
+
)}
|
|
1282
|
+
|
|
1283
|
+
{showSave && (
|
|
1284
|
+
<Button
|
|
1285
|
+
accent
|
|
1286
|
+
icon={FloppyDiskIcon}
|
|
1287
|
+
loading={isSubmitting}
|
|
1288
|
+
disabled={effectiveDisabled}
|
|
1289
|
+
disabledReason={t("Form is read-only")}
|
|
1290
|
+
disabledReasonPlacement="inline"
|
|
1291
|
+
onPress={handleSave}
|
|
1292
|
+
>
|
|
1293
|
+
{isSubmitting ? t("Saving...") : t("Save")}
|
|
1294
|
+
</Button>
|
|
1263
1295
|
)}
|
|
1264
1296
|
</XStack>
|
|
1265
1297
|
)}
|
package/src/FrappeListView.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import { storage } from "@multiplatform.one/store";
|
|
|
20
20
|
import { useFrappeConfig } from "./FrappeProvider";
|
|
21
21
|
import { FrappeList, type FrappeListProps } from "./FrappeList";
|
|
22
22
|
import { FrappeTable } from "./FrappeTable";
|
|
23
|
+
import { useDocRights } from "./formEngine/useDocRights";
|
|
23
24
|
import { frappeRouteHref, useFrappeRouter } from "./frappeNavigation";
|
|
24
25
|
import { connectionsFromMeta, type FrappeConnection } from "./frappeConnections";
|
|
25
26
|
import { isPermissionError } from "./liveErrors";
|
|
@@ -56,8 +57,9 @@ export interface FrappeListViewProps<TDoc extends { name: string; doctype: strin
|
|
|
56
57
|
* The path the doctype's pages live under (`/moves`). Given, the view is
|
|
57
58
|
* the doctype's list page: it carries the list page template with the
|
|
58
59
|
* doctype as its title, a row opens `route/<name>` and Add opens
|
|
59
|
-
* `route/new` through the FrappeProvider's navigation. Add
|
|
60
|
-
*
|
|
60
|
+
* `route/new` through the FrappeProvider's navigation. Add, routed or
|
|
61
|
+
* given, shows only when the session's roles grant create on the doctype,
|
|
62
|
+
* so a reader who cannot load its meta is not offered a form.
|
|
61
63
|
*/
|
|
62
64
|
route?: string;
|
|
63
65
|
/**
|
|
@@ -268,11 +270,13 @@ export function FrappeListView<TDoc extends { name: string; doctype: string }>({
|
|
|
268
270
|
if (doc.name) navigate(frappeRouteHref(route, { mode: "view", name: doc.name }));
|
|
269
271
|
}
|
|
270
272
|
: undefined);
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
const { rights } = useDocRights(connectionConfig, meta);
|
|
274
|
+
const onAdd = !rights.create
|
|
275
|
+
? undefined
|
|
276
|
+
: (onAddProp ??
|
|
277
|
+
(route !== undefined && navigate
|
|
278
|
+
? () => navigate(frappeRouteHref(route, { mode: "create" }))
|
|
279
|
+
: undefined));
|
|
276
280
|
const asPage = (view: React.ReactElement) =>
|
|
277
281
|
route === undefined ? (
|
|
278
282
|
view
|
|
@@ -740,6 +744,7 @@ export function FrappeListView<TDoc extends { name: string; doctype: string }>({
|
|
|
740
744
|
filters={resolvedFilters as Parameters<typeof FrappeTable<TDoc>>[0]["filters"]}
|
|
741
745
|
columns={effectiveColumns}
|
|
742
746
|
onRowClick={onItemClick}
|
|
747
|
+
rights={rights}
|
|
743
748
|
baseURL={finalBaseURL}
|
|
744
749
|
auth={finalAuth}
|
|
745
750
|
syncOptions={finalSyncOptions}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// FrappeTable offers editing, Add Row and row delete only as far as the
|
|
2
|
+
// session's roles grant write, create and delete on the doctype (MPO-390).
|
|
3
|
+
// Cells are fields by default, so without write they must render read-only
|
|
4
|
+
// instead of inputs whose edits the bench would refuse.
|
|
5
|
+
import type { DataTableColumn } from "@multiplatform.one/table";
|
|
6
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
7
|
+
import { act, cleanup, screen, waitFor } from "@testing-library/react";
|
|
8
|
+
import i18next from "i18next";
|
|
9
|
+
import { initReactI18next } from "react-i18next";
|
|
10
|
+
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
|
11
|
+
import { FrappeProvider } from "./FrappeProvider";
|
|
12
|
+
import { FrappeTable } from "./FrappeTable";
|
|
13
|
+
|
|
14
|
+
const doctype = "Poke Move";
|
|
15
|
+
|
|
16
|
+
const meta = {
|
|
17
|
+
name: doctype,
|
|
18
|
+
doctype: "DocType",
|
|
19
|
+
title_field: "move_name",
|
|
20
|
+
fields: [{ fieldname: "move_name", fieldtype: "Data", label: "Move Name" }],
|
|
21
|
+
permissions: [
|
|
22
|
+
{ role: "Pokemon Editor", read: 1, write: 1, create: 1, delete: 1 },
|
|
23
|
+
{ role: "Guest", read: 1 },
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
interface Move {
|
|
28
|
+
name: string;
|
|
29
|
+
doctype: string;
|
|
30
|
+
move_name?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const columns: DataTableColumn<Partial<Move>>[] = [
|
|
34
|
+
{ id: "move_name", accessorKey: "move_name", header: "Move Name", field: "input" },
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
let run = 0;
|
|
38
|
+
let bench = "";
|
|
39
|
+
let roles: string[] = [];
|
|
40
|
+
let sessionAnswered = false;
|
|
41
|
+
let requests: string[] = [];
|
|
42
|
+
|
|
43
|
+
function json(body: unknown, status = 200) {
|
|
44
|
+
return new Response(JSON.stringify(body), {
|
|
45
|
+
status,
|
|
46
|
+
headers: { "content-type": "application/json" },
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
beforeAll(async () => {
|
|
51
|
+
await i18next.use(initReactI18next).init({
|
|
52
|
+
lng: "en",
|
|
53
|
+
interpolation: { escapeValue: false },
|
|
54
|
+
resources: { en: { translation: {} } },
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
run += 1;
|
|
60
|
+
bench = `http://table-rights-${run}.spec.test`;
|
|
61
|
+
sessionAnswered = false;
|
|
62
|
+
requests = [];
|
|
63
|
+
vi.stubGlobal("fetch", async (input: string | URL | Request) => {
|
|
64
|
+
const url = new URL(String(input instanceof Request ? input.url : input));
|
|
65
|
+
const method = url.pathname.replace(/^\/api\/method\//, "");
|
|
66
|
+
requests.push(method);
|
|
67
|
+
if (method === "frappe.auth.get_logged_user") return json({ message: "someone@pokemon.test" });
|
|
68
|
+
if (method === "frappe.core.doctype.user.user.get_roles") {
|
|
69
|
+
sessionAnswered = true;
|
|
70
|
+
return json({ message: roles });
|
|
71
|
+
}
|
|
72
|
+
if (method === "frappe.desk.form.load.getdoctype") return json({ docs: [meta] });
|
|
73
|
+
if (url.pathname === `/api/resource/${encodeURIComponent(doctype)}`) {
|
|
74
|
+
return json({ data: [{ name: "a1b2c3", doctype, move_name: "tackle" }] });
|
|
75
|
+
}
|
|
76
|
+
return json({ data: [], message: [] });
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
afterEach(() => {
|
|
81
|
+
cleanup();
|
|
82
|
+
vi.restoreAllMocks();
|
|
83
|
+
vi.unstubAllGlobals();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
function renderTable(props: Partial<Parameters<typeof FrappeTable<Move>>[0]> = {}) {
|
|
87
|
+
return renderWithProviders(
|
|
88
|
+
<FrappeProvider baseURL={bench} realtime={false}>
|
|
89
|
+
<FrappeTable<Move>
|
|
90
|
+
doctype={doctype}
|
|
91
|
+
columns={columns}
|
|
92
|
+
layout="table"
|
|
93
|
+
showAddRow
|
|
94
|
+
showDeleteRow
|
|
95
|
+
{...props}
|
|
96
|
+
/>
|
|
97
|
+
</FrappeProvider>,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// A surface that never asks for the session is judged on what it shows.
|
|
102
|
+
async function settle() {
|
|
103
|
+
await waitFor(() => expect(sessionAnswered).toBe(true), { timeout: 1500 }).catch(() => undefined);
|
|
104
|
+
await act(async () => {
|
|
105
|
+
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function showsTackle(container: HTMLElement): boolean {
|
|
110
|
+
return Array.from(container.querySelectorAll('[role="row"]')).some(
|
|
111
|
+
(row) =>
|
|
112
|
+
row.textContent?.includes("tackle") ||
|
|
113
|
+
Array.from(row.querySelectorAll("input")).some((node) => node.value === "tackle"),
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function cellInputs(container: HTMLElement): HTMLInputElement[] {
|
|
118
|
+
return Array.from(container.querySelectorAll('[role="row"] input')) as HTMLInputElement[];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
describe("FrappeTable rights", () => {
|
|
122
|
+
it("gives an editor input cells, Add Row and row delete", async () => {
|
|
123
|
+
roles = ["Pokemon Editor", "Guest"];
|
|
124
|
+
const { container } = renderTable();
|
|
125
|
+
await waitFor(() =>
|
|
126
|
+
expect(cellInputs(container).map((node) => node.value)).toContain("tackle"),
|
|
127
|
+
);
|
|
128
|
+
expect(screen.getByLabelText("Add Row")).toBeTruthy();
|
|
129
|
+
expect(screen.getAllByLabelText(/^Delete row 1$/).length).toBeGreaterThan(0);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("gives a reader read-only cells, no Add Row and no row delete", async () => {
|
|
133
|
+
roles = ["Guest"];
|
|
134
|
+
const { container } = renderTable();
|
|
135
|
+
await waitFor(() => expect(showsTackle(container)).toBe(true));
|
|
136
|
+
await settle();
|
|
137
|
+
expect(cellInputs(container)).toEqual([]);
|
|
138
|
+
expect(screen.queryByLabelText("Add Row")).toBeNull();
|
|
139
|
+
expect(screen.queryAllByLabelText(/^Delete row 1$/)).toEqual([]);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("takes rights from the host without reading meta or the session", async () => {
|
|
143
|
+
roles = ["Pokemon Editor"];
|
|
144
|
+
const { container } = renderTable({
|
|
145
|
+
rights: { create: false, write: false, delete: false },
|
|
146
|
+
filterableFields: [{ id: "move_name", label: "Move Name", type: "text" }],
|
|
147
|
+
});
|
|
148
|
+
await waitFor(() => expect(showsTackle(container)).toBe(true));
|
|
149
|
+
expect(cellInputs(container)).toEqual([]);
|
|
150
|
+
expect(screen.queryByLabelText("Add Row")).toBeNull();
|
|
151
|
+
expect(requests).not.toContain("frappe.desk.form.load.getdoctype");
|
|
152
|
+
expect(requests).not.toContain("frappe.core.doctype.user.user.get_roles");
|
|
153
|
+
});
|
|
154
|
+
});
|