feat(estimates): template access control — owner can grant edit rights by role or individual
- Add TemplateAccessModal: role-level toggles (All Admins / All Field Agents) + per-person overrides - Three-state access logic: role grant, individual direct grant, individual exclusion override - Excluded people (role ON but toggled off) pinned to top with amber 'Excluded' chip - Direct grants (role OFF but toggled on) show green 'Direct' chip - canEditTemplates replaces isOwner for all template CRUD guards in EstimatesPage - Owner retains exclusive access to Manage Access button - State persisted in mockStore: templateAccessRoles, templateAccessUsers, templateAccessExcluded
This commit is contained in:
@@ -3639,6 +3639,9 @@ export const MockStoreProvider = ({ children }) => {
|
||||
const [dispatchLeads, setDispatchLeads] = useState(DISPATCH_LEADS_INITIAL);
|
||||
const [templates, setTemplates] = useState(MASTER_TEMPLATES_INITIAL);
|
||||
const [estimates, setEstimates] = useState(MOCK_ESTIMATES_INITIAL);
|
||||
const [templateAccessRoles, setTemplateAccessRoles] = useState([]);
|
||||
const [templateAccessUsers, setTemplateAccessUsers] = useState([]);
|
||||
const [templateAccessExcluded, setTemplateAccessExcluded] = useState([]);
|
||||
|
||||
// Initialize properties once
|
||||
useEffect(() => {
|
||||
@@ -3752,6 +3755,12 @@ export const MockStoreProvider = ({ children }) => {
|
||||
deleteTemplate: (id) => {
|
||||
setTemplates(prev => prev.filter(t => t.id !== id));
|
||||
},
|
||||
templateAccessRoles,
|
||||
templateAccessUsers,
|
||||
templateAccessExcluded,
|
||||
setTemplateAccessRoles,
|
||||
setTemplateAccessUsers,
|
||||
setTemplateAccessExcluded,
|
||||
|
||||
// Estimates
|
||||
estimates,
|
||||
|
||||
Reference in New Issue
Block a user