@kelpie/ui 0.6.0 → 0.8.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/api/resource.d.ts +58 -5
- package/dist/api/resource.d.ts.map +1 -1
- package/dist/api/resource.js +106 -24
- package/dist/api/resource.js.map +1 -1
- package/dist/api/resources/companies.d.ts +2 -0
- package/dist/api/resources/companies.d.ts.map +1 -1
- package/dist/api/resources/companies.js +5 -1
- package/dist/api/resources/companies.js.map +1 -1
- package/dist/api/resources/decisions.d.ts +2 -0
- package/dist/api/resources/decisions.d.ts.map +1 -1
- package/dist/api/resources/decisions.js +1 -0
- package/dist/api/resources/decisions.js.map +1 -1
- package/dist/api/resources/emailDomainLinker.d.ts +16 -0
- package/dist/api/resources/emailDomainLinker.d.ts.map +1 -0
- package/dist/api/resources/emailDomainLinker.js +16 -0
- package/dist/api/resources/emailDomainLinker.js.map +1 -0
- package/dist/api/resources/forms.d.ts.map +1 -1
- package/dist/api/resources/forms.js +6 -20
- package/dist/api/resources/forms.js.map +1 -1
- package/dist/api/resources/handbookPages.d.ts +1 -1
- package/dist/api/resources/handbookPages.js +1 -1
- package/dist/api/resources/importJobs.d.ts +3 -1
- package/dist/api/resources/importJobs.d.ts.map +1 -1
- package/dist/api/resources/importJobs.js +1 -0
- package/dist/api/resources/importJobs.js.map +1 -1
- package/dist/api/resources/listMembers.d.ts +27 -0
- package/dist/api/resources/listMembers.d.ts.map +1 -0
- package/dist/api/resources/listMembers.js +108 -0
- package/dist/api/resources/listMembers.js.map +1 -0
- package/dist/api/resources/lists.d.ts +14 -0
- package/dist/api/resources/lists.d.ts.map +1 -0
- package/dist/api/resources/lists.js +34 -0
- package/dist/api/resources/lists.js.map +1 -0
- package/dist/api/resources/people.d.ts.map +1 -1
- package/dist/api/resources/people.js +4 -1
- package/dist/api/resources/people.js.map +1 -1
- package/dist/api/resources/publicConfig.d.ts +8 -0
- package/dist/api/resources/publicConfig.d.ts.map +1 -0
- package/dist/api/resources/publicConfig.js +22 -0
- package/dist/api/resources/publicConfig.js.map +1 -0
- package/dist/api/resources/roles.d.ts +2 -0
- package/dist/api/resources/roles.d.ts.map +1 -1
- package/dist/api/resources/roles.js +1 -1
- package/dist/api/resources/roles.js.map +1 -1
- package/dist/api/resources/sampleData.d.ts +17 -0
- package/dist/api/resources/sampleData.d.ts.map +1 -0
- package/dist/api/resources/sampleData.js +30 -0
- package/dist/api/resources/sampleData.js.map +1 -0
- package/dist/api/resources/webhooks.d.ts.map +1 -1
- package/dist/api/resources/webhooks.js +7 -22
- package/dist/api/resources/webhooks.js.map +1 -1
- package/dist/app/KelpieApp.d.ts.map +1 -1
- package/dist/app/KelpieApp.js +5 -2
- package/dist/app/KelpieApp.js.map +1 -1
- package/dist/components/ActivitiesPanel.d.ts.map +1 -1
- package/dist/components/ActivitiesPanel.js +2 -1
- package/dist/components/ActivitiesPanel.js.map +1 -1
- package/dist/components/ColumnPicker.d.ts +24 -0
- package/dist/components/ColumnPicker.d.ts.map +1 -0
- package/dist/components/ColumnPicker.js +56 -0
- package/dist/components/ColumnPicker.js.map +1 -0
- package/dist/components/DataTable.d.ts +16 -1
- package/dist/components/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable.js +51 -10
- package/dist/components/DataTable.js.map +1 -1
- package/dist/components/DecisionsPanel.d.ts.map +1 -1
- package/dist/components/DecisionsPanel.js +4 -3
- package/dist/components/DecisionsPanel.js.map +1 -1
- package/dist/components/EntitySearch.d.ts.map +1 -1
- package/dist/components/EntitySearch.js +11 -5
- package/dist/components/EntitySearch.js.map +1 -1
- package/dist/components/EnvironmentBanner.d.ts +14 -0
- package/dist/components/EnvironmentBanner.d.ts.map +1 -0
- package/dist/components/EnvironmentBanner.js +23 -0
- package/dist/components/EnvironmentBanner.js.map +1 -0
- package/dist/components/ListsPanel.d.ts +14 -0
- package/dist/components/ListsPanel.d.ts.map +1 -0
- package/dist/components/ListsPanel.js +56 -0
- package/dist/components/ListsPanel.js.map +1 -0
- package/dist/components/NotesPanel.d.ts.map +1 -1
- package/dist/components/NotesPanel.js +6 -5
- package/dist/components/NotesPanel.js.map +1 -1
- package/dist/components/Paginator.d.ts +26 -0
- package/dist/components/Paginator.d.ts.map +1 -0
- package/dist/components/Paginator.js +16 -0
- package/dist/components/Paginator.js.map +1 -0
- package/dist/components/PlanPanel.d.ts.map +1 -1
- package/dist/components/PlanPanel.js +2 -1
- package/dist/components/PlanPanel.js.map +1 -1
- package/dist/components/Shell.d.ts.map +1 -1
- package/dist/components/Shell.js +1 -0
- package/dist/components/Shell.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/listView.d.ts +15 -0
- package/dist/lib/listView.d.ts.map +1 -0
- package/dist/lib/listView.js +66 -0
- package/dist/lib/listView.js.map +1 -0
- package/dist/lib/sort.d.ts +43 -0
- package/dist/lib/sort.d.ts.map +1 -0
- package/dist/lib/sort.js +102 -0
- package/dist/lib/sort.js.map +1 -0
- package/dist/pages/CompaniesPage.d.ts.map +1 -1
- package/dist/pages/CompaniesPage.js +88 -3
- package/dist/pages/CompaniesPage.js.map +1 -1
- package/dist/pages/CompanyDetail.d.ts.map +1 -1
- package/dist/pages/CompanyDetail.js +17 -14
- package/dist/pages/CompanyDetail.js.map +1 -1
- package/dist/pages/DealDetail.d.ts.map +1 -1
- package/dist/pages/DealDetail.js +3 -1
- package/dist/pages/DealDetail.js.map +1 -1
- package/dist/pages/DealsPage.d.ts.map +1 -1
- package/dist/pages/DealsPage.js +134 -14
- package/dist/pages/DealsPage.js.map +1 -1
- package/dist/pages/DecisionsPage.d.ts.map +1 -1
- package/dist/pages/DecisionsPage.js +50 -8
- package/dist/pages/DecisionsPage.js.map +1 -1
- package/dist/pages/FormsPage.d.ts.map +1 -1
- package/dist/pages/FormsPage.js +53 -2
- package/dist/pages/FormsPage.js.map +1 -1
- package/dist/pages/FundraisingPage.d.ts.map +1 -1
- package/dist/pages/FundraisingPage.js +116 -14
- package/dist/pages/FundraisingPage.js.map +1 -1
- package/dist/pages/HiringPage.d.ts.map +1 -1
- package/dist/pages/HiringPage.js +27 -4
- package/dist/pages/HiringPage.js.map +1 -1
- package/dist/pages/ListDetail.d.ts +11 -0
- package/dist/pages/ListDetail.d.ts.map +1 -0
- package/dist/pages/ListDetail.js +188 -0
- package/dist/pages/ListDetail.js.map +1 -0
- package/dist/pages/ListsPage.d.ts +9 -0
- package/dist/pages/ListsPage.d.ts.map +1 -0
- package/dist/pages/ListsPage.js +125 -0
- package/dist/pages/ListsPage.js.map +1 -0
- package/dist/pages/OpportunitiesPage.d.ts.map +1 -1
- package/dist/pages/OpportunitiesPage.js +97 -14
- package/dist/pages/OpportunitiesPage.js.map +1 -1
- package/dist/pages/OpportunityDetail.d.ts.map +1 -1
- package/dist/pages/OpportunityDetail.js +3 -1
- package/dist/pages/OpportunityDetail.js.map +1 -1
- package/dist/pages/PartnershipDetail.d.ts.map +1 -1
- package/dist/pages/PartnershipDetail.js +3 -1
- package/dist/pages/PartnershipDetail.js.map +1 -1
- package/dist/pages/PartnershipsPage.d.ts.map +1 -1
- package/dist/pages/PartnershipsPage.js +111 -14
- package/dist/pages/PartnershipsPage.js.map +1 -1
- package/dist/pages/PeoplePage.d.ts.map +1 -1
- package/dist/pages/PeoplePage.js +102 -3
- package/dist/pages/PeoplePage.js.map +1 -1
- package/dist/pages/PersonDetail.d.ts.map +1 -1
- package/dist/pages/PersonDetail.js +5 -3
- package/dist/pages/PersonDetail.js.map +1 -1
- package/dist/pages/PlanningPage.d.ts.map +1 -1
- package/dist/pages/PlanningPage.js +85 -17
- package/dist/pages/PlanningPage.js.map +1 -1
- package/dist/pages/RaiseDetail.d.ts.map +1 -1
- package/dist/pages/RaiseDetail.js +3 -1
- package/dist/pages/RaiseDetail.js.map +1 -1
- package/dist/pages/RoleDetail.d.ts.map +1 -1
- package/dist/pages/RoleDetail.js +5 -4
- package/dist/pages/RoleDetail.js.map +1 -1
- package/dist/pages/admin/DataPage.d.ts.map +1 -1
- package/dist/pages/admin/DataPage.js +126 -16
- package/dist/pages/admin/DataPage.js.map +1 -1
- package/dist/pages/admin/WebhookDeliveries.d.ts.map +1 -1
- package/dist/pages/admin/WebhookDeliveries.js +3 -2
- package/dist/pages/admin/WebhookDeliveries.js.map +1 -1
- package/dist/pages/admin/WebhooksPage.d.ts.map +1 -1
- package/dist/pages/admin/WebhooksPage.js +3 -2
- package/dist/pages/admin/WebhooksPage.js.map +1 -1
- package/dist/pages/admin/WorkspaceSettingsPage.d.ts.map +1 -1
- package/dist/pages/admin/WorkspaceSettingsPage.js +45 -2
- package/dist/pages/admin/WorkspaceSettingsPage.js.map +1 -1
- package/dist/pages/forms/SubmissionsTable.d.ts.map +1 -1
- package/dist/pages/forms/SubmissionsTable.js +2 -1
- package/dist/pages/forms/SubmissionsTable.js.map +1 -1
- package/dist/pages/handbook/HandbookPage.js +1 -1
- package/dist/pages/hiringDirectory.js +2 -2
- package/dist/pages/onboarding/WorkspaceStepPage.d.ts.map +1 -1
- package/dist/pages/onboarding/WorkspaceStepPage.js +15 -2
- package/dist/pages/onboarding/WorkspaceStepPage.js.map +1 -1
- package/dist/pages/positionDirectory.js +2 -2
- package/package.json +2 -2
- package/src/api/resource.ts +149 -31
- package/src/api/resources/companies.ts +7 -1
- package/src/api/resources/decisions.ts +3 -0
- package/src/api/resources/emailDomainLinker.ts +43 -0
- package/src/api/resources/forms.ts +5 -23
- package/src/api/resources/handbookPages.ts +1 -1
- package/src/api/resources/importJobs.ts +4 -0
- package/src/api/resources/listMembers.ts +173 -0
- package/src/api/resources/lists.ts +61 -0
- package/src/api/resources/people.ts +4 -1
- package/src/api/resources/publicConfig.ts +33 -0
- package/src/api/resources/roles.ts +3 -1
- package/src/api/resources/sampleData.ts +56 -0
- package/src/api/resources/webhooks.ts +8 -24
- package/src/app/KelpieApp.tsx +11 -0
- package/src/components/ActivitiesPanel.tsx +2 -10
- package/src/components/ColumnPicker.tsx +124 -0
- package/src/components/DataTable.tsx +89 -10
- package/src/components/DecisionsPanel.tsx +4 -12
- package/src/components/EntitySearch.tsx +12 -5
- package/src/components/EnvironmentBanner.tsx +30 -0
- package/src/components/ListsPanel.tsx +176 -0
- package/src/components/NotesPanel.tsx +6 -14
- package/src/components/Paginator.tsx +78 -0
- package/src/components/PlanPanel.tsx +2 -10
- package/src/components/Shell.tsx +1 -0
- package/src/index.ts +10 -1
- package/src/lib/listView.ts +149 -0
- package/src/lib/sort.ts +143 -0
- package/src/pages/CompaniesPage.tsx +125 -11
- package/src/pages/CompanyDetail.tsx +62 -62
- package/src/pages/DealDetail.tsx +3 -0
- package/src/pages/DealsPage.tsx +178 -24
- package/src/pages/DecisionsPage.tsx +73 -18
- package/src/pages/FormsPage.tsx +81 -17
- package/src/pages/FundraisingPage.tsx +152 -24
- package/src/pages/HiringPage.tsx +39 -11
- package/src/pages/ListDetail.tsx +408 -0
- package/src/pages/ListsPage.tsx +281 -0
- package/src/pages/OpportunitiesPage.tsx +130 -24
- package/src/pages/OpportunityDetail.tsx +3 -0
- package/src/pages/PartnershipDetail.tsx +3 -0
- package/src/pages/PartnershipsPage.tsx +149 -24
- package/src/pages/PeoplePage.tsx +137 -11
- package/src/pages/PersonDetail.tsx +5 -3
- package/src/pages/PlanningPage.tsx +256 -29
- package/src/pages/RaiseDetail.tsx +3 -0
- package/src/pages/RoleDetail.tsx +21 -26
- package/src/pages/admin/DataPage.tsx +359 -36
- package/src/pages/admin/WebhookDeliveries.tsx +10 -15
- package/src/pages/admin/WebhooksPage.tsx +14 -19
- package/src/pages/admin/WorkspaceSettingsPage.tsx +134 -2
- package/src/pages/forms/SubmissionsTable.tsx +3 -10
- package/src/pages/handbook/HandbookPage.tsx +1 -1
- package/src/pages/hiringDirectory.ts +2 -2
- package/src/pages/onboarding/WorkspaceStepPage.tsx +31 -3
- package/src/pages/positionDirectory.ts +2 -2
- package/src/styles.css +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSettingsPage.js","sourceRoot":"","sources":["../../../src/pages/admin/WorkspaceSettingsPage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"WorkspaceSettingsPage.js","sourceRoot":"","sources":["../../../src/pages/admin/WorkspaceSettingsPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmissionsTable.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"SubmissionsTable.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAuB7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAA;CACvD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiFhG"}
|
|
@@ -5,6 +5,7 @@ import { useTimezone } from '../../api/resources/account.js';
|
|
|
5
5
|
import { useCompanies } from '../../api/resources/companies.js';
|
|
6
6
|
import { usePeople } from '../../api/resources/people.js';
|
|
7
7
|
import { DataTable } from '../../components/DataTable.js';
|
|
8
|
+
import { Paginator } from '../../components/Paginator.js';
|
|
8
9
|
import { ErrorPanel, LoadingPanel } from '../../components/QueryState.js';
|
|
9
10
|
import { SectionHeader } from '../../components/SectionHeader.js';
|
|
10
11
|
import { formatDateTime } from '../../lib/dates.js';
|
|
@@ -58,7 +59,7 @@ export function SubmissionsTable({ form, submissions }) {
|
|
|
58
59
|
if (submissions.isLoading) {
|
|
59
60
|
return _jsx(LoadingPanel, { label: "Loading submissions\u2026" });
|
|
60
61
|
}
|
|
61
|
-
return (_jsxs("div", { children: [_jsx(SectionHeader, { title: "Submissions", description: "Inbound answers, and the records each one created or matched." }), _jsx(DataTable, { columns: columns, rows: submissions.records, getRowId: (submission) => submission.id, emptyMessage: "No submissions yet" }),
|
|
62
|
+
return (_jsxs("div", { children: [_jsx(SectionHeader, { title: "Submissions", description: "Inbound answers, and the records each one created or matched." }), _jsx(Paginator, { list: submissions, placement: "top" }), _jsx(DataTable, { columns: columns, rows: submissions.records, getRowId: (submission) => submission.id, emptyMessage: "No submissions yet" }), _jsx(Paginator, { list: submissions })] }));
|
|
62
63
|
}
|
|
63
64
|
function RecordLink({ to, id, name, fallback, }) {
|
|
64
65
|
if (id === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmissionsTable.js","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAAgC,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gCAAiC,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAoC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;GAOG;AAEH,4CAA4C;AAC5C,MAAM,QAAQ,GAAG,GAAG,CAAA;AAOpB,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAyB;IAC3E,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAClG,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CACpC,CAAA;IAED,MAAM,OAAO,GAAsC;QACjD;YACE,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CACtB,eAAM,SAAS,EAAC,sCAAsC,YACnD,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,GAC5C,CACR;SACF;QACD;YACE,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CACtB,KAAC,UAAU,IAAC,EAAE,EAAC,SAAS,EAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,QAAQ,GAAG,CACvF;SACF;QACD;YACE,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CACtB,KAAC,UAAU,IAAC,EAAE,EAAC,YAAY,EAAC,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,SAAS,GAAG,CAC5F;SACF;QACD;YACE,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CACrB,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAC3B,eAAM,SAAS,EAAC,gBAAgB,uBAAS,CAC1C,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,EAAE,EAAE,UAAU,UAAU,CAAC,MAAM,EAAE,EAAE,SAAS,EAAC,6BAA6B,qBAEzE,CACR;SACJ;QACD;YACE,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CACtB,eAAM,SAAS,EAAC,4BAA4B,YAAE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,GAAQ,CAClF;SACF;KACF,CAAA;IAED,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,GAAI,CAAA;IACjD,CAAC;IAED,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAC,YAAY,IAAC,KAAK,EAAC,2BAAsB,GAAG,CAAA;IACtD,CAAC;IAED,OAAO,CACL,0BACE,KAAC,aAAa,IACZ,KAAK,EAAC,aAAa,EACnB,WAAW,EAAC,+DAA+D,GAC3E,EACF,KAAC,SAAS,IACR,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,CAAC,OAAO,EACzB,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EACvC,YAAY,EAAC,oBAAoB,GACjC,
|
|
1
|
+
{"version":3,"file":"SubmissionsTable.js","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -129,7 +129,7 @@ export function HandbookLayout() {
|
|
|
129
129
|
void addPage(item.id);
|
|
130
130
|
}, onDelete: () => {
|
|
131
131
|
void removePage(item.page);
|
|
132
|
-
} }, item.id))) }) }), _jsx(DragOverlay, { dropAnimation: null, children: dragging === undefined ? null : (_jsx("div", { className: "rounded-md border border-accent bg-surface-raised px-2.5 py-1.5 text-[13px] font-medium text-ink", style: { marginLeft: (liveDepth ?? dragging.depth) * INDENT }, children: dragging.page.title })) })] }), flat.length === 0 && (_jsx("p", { className: "px-2 py-6 text-center text-[12px] text-ink-faint", children: "No pages yet." })), pages.
|
|
132
|
+
} }, item.id))) }) }), _jsx(DragOverlay, { dropAnimation: null, children: dragging === undefined ? null : (_jsx("div", { className: "rounded-md border border-accent bg-surface-raised px-2.5 py-1.5 text-[13px] font-medium text-ink", style: { marginLeft: (liveDepth ?? dragging.depth) * INDENT }, children: dragging.page.title })) })] }), flat.length === 0 && (_jsx("p", { className: "px-2 py-6 text-center text-[12px] text-ink-faint", children: "No pages yet." })), pages.hasNext && (_jsx("p", { className: "px-2 py-3 text-center text-[11px] text-ink-faint", children: "This handbook has more pages than one request returns, so the tree below is incomplete." }))] })] }), _jsx("div", { className: "min-w-0 flex-1", children: active === undefined ? (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-ink-faint", children: "No handbook pages yet." })) : (_jsx(HandbookEditor, { page: active, authorName: active.updatedBy === null ? undefined : members.nameById.get(active.updatedBy), isSaving: updatePage.isPending, error: updatePage.error ?? deletePage.error, onSave: (changes) => {
|
|
133
133
|
updatePage.run({ id: active.id, changes });
|
|
134
134
|
}, onAddChild: () => {
|
|
135
135
|
void addPage(active.id);
|
|
@@ -25,7 +25,7 @@ export function useRoleCandidateCounts(roleIds) {
|
|
|
25
25
|
return {
|
|
26
26
|
countFor: (roleId) => countByRole.get(roleId) ?? 0,
|
|
27
27
|
isLoading: candidates.isLoading,
|
|
28
|
-
isComplete: !candidates.
|
|
28
|
+
isComplete: !candidates.hasNext,
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
@@ -51,7 +51,7 @@ export function useCandidateNotes(candidateIds) {
|
|
|
51
51
|
return {
|
|
52
52
|
noteFor: (candidateId) => newestByCandidate.get(candidateId),
|
|
53
53
|
isLoading: notes.isLoading,
|
|
54
|
-
isComplete: !notes.
|
|
54
|
+
isComplete: !notes.hasNext,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceStepPage.d.ts","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkspaceStepPage.d.ts","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAsGrD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { Link, Navigate, useNavigate } from 'react-router';
|
|
4
|
+
import { useInstallSampleData } from '../../api/resources/sampleData.js';
|
|
4
5
|
import { useCreateWorkspace, useSession } from '../../api/resources/session.js';
|
|
5
6
|
import { ErrorPanel } from '../../components/QueryState.js';
|
|
6
7
|
import { SubmitButton, TextField } from '../auth/AuthForm.js';
|
|
@@ -43,10 +44,12 @@ export function WorkspaceStepPage() {
|
|
|
43
44
|
const navigate = useNavigate();
|
|
44
45
|
const { isSignedOut } = useSession();
|
|
45
46
|
const createWorkspace = useCreateWorkspace();
|
|
47
|
+
const installSampleData = useInstallSampleData();
|
|
46
48
|
const [name, setName] = useState('');
|
|
47
49
|
const [slug, setSlug] = useState('');
|
|
48
50
|
const [slugEdited, setSlugEdited] = useState(false);
|
|
49
51
|
const [timezone] = useState(browserTimezone);
|
|
52
|
+
const [seedSample, setSeedSample] = useState(false);
|
|
50
53
|
function changeName(value) {
|
|
51
54
|
setName(value);
|
|
52
55
|
if (!slugEdited) {
|
|
@@ -61,12 +64,22 @@ export function WorkspaceStepPage() {
|
|
|
61
64
|
event.preventDefault();
|
|
62
65
|
createWorkspace
|
|
63
66
|
.runAsync({ name: name.trim(), slug: slug.trim(), timezone })
|
|
64
|
-
.then(() =>
|
|
67
|
+
.then(async (workspace) => {
|
|
68
|
+
if (seedSample) {
|
|
69
|
+
// A refusal here does not block the wizard: the workspace itself is
|
|
70
|
+
// already created, and the invites step is what comes next either
|
|
71
|
+
// way. The error stays on screen so the reader sees what failed.
|
|
72
|
+
await installSampleData
|
|
73
|
+
.runAsync({ workspaceId: workspace.id })
|
|
74
|
+
.catch(() => undefined);
|
|
75
|
+
}
|
|
76
|
+
navigate('/onboarding/invites', { replace: true });
|
|
77
|
+
})
|
|
65
78
|
.catch(() => undefined);
|
|
66
79
|
}
|
|
67
80
|
if (isSignedOut) {
|
|
68
81
|
return _jsx(Navigate, { to: "/login", replace: true });
|
|
69
82
|
}
|
|
70
|
-
return (_jsx(AuthLayout, { step: 1, title: "Create your workspace", description: "A workspace is your company brain \u2014 CRM records, handbook, and team.", footer: _jsx(Link, { to: "/login", className: "font-medium text-accent hover:underline", children: "Sign in as somebody else" }), children: _jsxs("form", { onSubmit: submit, className: "mt-5 space-y-3", children: [_jsx(TextField, { label: "Workspace name", value: name, onChange: changeName, placeholder: "Acme Labs", autoComplete: "organization", required: true }), _jsx(TextField, { label: "Slug", value: slug, onChange: changeSlug, hint: "Lowercase letters, digits, and hyphens. It appears in URLs.", mono: true, required: true }), _jsxs("p", { className: "text-[11px] text-ink-faint", children: ["Timezone: ", timezone, ". Change it later in Admin \u2192 Workspace."] }), createWorkspace.error !== null && _jsx(ErrorPanel, { error: createWorkspace.error }), _jsx(SubmitButton, { label: "Continue", pendingLabel:
|
|
83
|
+
return (_jsx(AuthLayout, { step: 1, title: "Create your workspace", description: "A workspace is your company brain \u2014 CRM records, handbook, and team.", footer: _jsx(Link, { to: "/login", className: "font-medium text-accent hover:underline", children: "Sign in as somebody else" }), children: _jsxs("form", { onSubmit: submit, className: "mt-5 space-y-3", children: [_jsx(TextField, { label: "Workspace name", value: name, onChange: changeName, placeholder: "Acme Labs", autoComplete: "organization", required: true }), _jsx(TextField, { label: "Slug", value: slug, onChange: changeSlug, hint: "Lowercase letters, digits, and hyphens. It appears in URLs.", mono: true, required: true }), _jsxs("p", { className: "text-[11px] text-ink-faint", children: ["Timezone: ", timezone, ". Change it later in Admin \u2192 Workspace."] }), _jsxs("label", { className: "flex items-start gap-2 text-[12px] text-ink", children: [_jsx("input", { type: "checkbox", checked: seedSample, onChange: (event) => setSeedSample(event.target.checked), className: "mt-0.5 h-4 w-4 rounded border-border text-accent focus:ring-accent" }), _jsx("span", { children: "Install sample data \u2014 a small set of companies, people, deals, opportunities, fundraising, partnerships, and hiring so the workspace has something to look at. You can delete it later." })] }), createWorkspace.error !== null && _jsx(ErrorPanel, { error: createWorkspace.error }), installSampleData.error !== null && _jsx(ErrorPanel, { error: installSampleData.error }), _jsx(SubmitButton, { label: "Continue", pendingLabel: installSampleData.isPending ? 'Installing sample data…' : 'Creating…', isPending: createWorkspace.isPending || installSampleData.isPending })] }) }));
|
|
71
84
|
}
|
|
72
85
|
//# sourceMappingURL=WorkspaceStepPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceStepPage.js","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAiC,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAsB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAwB,CAAA;AAEnD;;;;;;;;;;;;;;;GAeG;AAEH,yEAAyE;AACzE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAA;IACpC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"WorkspaceStepPage.js","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ export function usePeopleDirectory(personIds) {
|
|
|
37
37
|
.map((held) => companyNameById.get(held.companyId))
|
|
38
38
|
.filter((name) => name !== undefined),
|
|
39
39
|
isLoading: positions.isLoading || companies.isLoading,
|
|
40
|
-
isComplete: !positions.
|
|
40
|
+
isComplete: !positions.hasNext && !companies.hasNext,
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
export function useCompanyHeadcounts(companyIds) {
|
|
@@ -52,7 +52,7 @@ export function useCompanyHeadcounts(companyIds) {
|
|
|
52
52
|
return {
|
|
53
53
|
countFor: (companyId) => countByCompany.get(companyId) ?? 0,
|
|
54
54
|
isLoading: positions.isLoading,
|
|
55
|
-
isComplete: !positions.
|
|
55
|
+
isComplete: !positions.hasNext,
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
58
|
//# sourceMappingURL=positionDirectory.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kelpie/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "React UI for Kelpie: components, pages, API client, and the extension registry an assembly composes modules through.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kelpie",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@dnd-kit/core": "^6.3.1",
|
|
49
49
|
"@dnd-kit/sortable": "^10.0.0",
|
|
50
50
|
"@dnd-kit/utilities": "^3.2.2",
|
|
51
|
-
"@kelpie/schemas": "^0.
|
|
51
|
+
"@kelpie/schemas": "^0.8.0",
|
|
52
52
|
"@tanstack/react-query": "^5.101.4",
|
|
53
53
|
"react-markdown": "^10.1.0",
|
|
54
54
|
"react-router": "^8.3.0",
|
package/src/api/resource.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
useQueryClient,
|
|
7
7
|
} from '@tanstack/react-query'
|
|
8
8
|
import type { InfiniteData, QueryClient } from '@tanstack/react-query'
|
|
9
|
+
import { useEffect, useState } from 'react'
|
|
9
10
|
|
|
10
11
|
import { ApiError } from './client.ts'
|
|
11
12
|
import type { Decoder, Page, QueryParameters } from './client.ts'
|
|
@@ -25,14 +26,44 @@ import { toError } from './errors.ts'
|
|
|
25
26
|
* and leaves the cache library replaceable without touching a page.
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
|
-
/**
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* The default page size when a caller does not name one via `query.limit`.
|
|
31
|
+
* Matches the `/v1` default from `api.md`.
|
|
32
|
+
*/
|
|
33
|
+
export const DEFAULT_PAGE_SIZE = 50
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The pagination controls a list surface renders. Split out from
|
|
37
|
+
* `RecordListResult` so the `Paginator` component can accept just this subset
|
|
38
|
+
* and stay generic in the record type.
|
|
39
|
+
*/
|
|
40
|
+
export interface Paged {
|
|
41
|
+
/** Zero-based index of the page currently on screen. */
|
|
42
|
+
readonly pageIndex: number
|
|
43
|
+
/** Number of records the API returns per page, from `?limit=`. */
|
|
44
|
+
readonly pageSize: number
|
|
45
|
+
readonly hasPrev: boolean
|
|
46
|
+
readonly hasNext: boolean
|
|
47
|
+
/** True while fetching a not-yet-cached page. Prev on a cached page is instant. */
|
|
48
|
+
readonly isChangingPage: boolean
|
|
49
|
+
readonly prevPage: () => void
|
|
50
|
+
readonly nextPage: () => void
|
|
51
|
+
/**
|
|
52
|
+
* Changes the API `?limit=` and returns the reader to page 1. The API caps
|
|
53
|
+
* `?limit=` at 200 (`api.md`); a larger value is coerced by the server, not
|
|
54
|
+
* refused by this hook.
|
|
55
|
+
*/
|
|
56
|
+
readonly setPageSize: (size: number) => void
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* A list, one page at a time. Records are the current page only, not the
|
|
61
|
+
* accumulation across pages a `Load more` reader would give.
|
|
62
|
+
*/
|
|
63
|
+
export interface RecordListResult<TRecord> extends Paged {
|
|
30
64
|
readonly records: readonly TRecord[]
|
|
31
65
|
readonly isLoading: boolean
|
|
32
66
|
readonly error: Error | null
|
|
33
|
-
readonly hasMore: boolean
|
|
34
|
-
readonly isLoadingMore: boolean
|
|
35
|
-
readonly loadMore: () => void
|
|
36
67
|
}
|
|
37
68
|
|
|
38
69
|
export interface RecordResult<TRecord> {
|
|
@@ -184,6 +215,114 @@ function removeRecordEverywhere<TRecord extends { readonly id: string }>(
|
|
|
184
215
|
)
|
|
185
216
|
}
|
|
186
217
|
|
|
218
|
+
export interface PagedListInput<TRecord> {
|
|
219
|
+
/**
|
|
220
|
+
* The React Query cache key for this list, without `?limit=`. `usePagedList`
|
|
221
|
+
* appends the current page size so the cache splits by size — swapping page
|
|
222
|
+
* sizes has to fetch, or the cursors from one size would page a list saved
|
|
223
|
+
* under another.
|
|
224
|
+
*/
|
|
225
|
+
readonly queryKey: readonly unknown[]
|
|
226
|
+
readonly path: string
|
|
227
|
+
readonly decode: Decoder<TRecord>
|
|
228
|
+
/** Query parameters other than `limit` and `cursor`. `usePagedList` sends both itself. */
|
|
229
|
+
readonly query: QueryParameters
|
|
230
|
+
readonly enabled?: boolean
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* The paged reader every list hook uses: `createResourceHooks`'s `useList`,
|
|
235
|
+
* and the three custom collections whose paths carry a parent id
|
|
236
|
+
* (`useFormSubmissions`, `useListMembers`, `useWebhookDeliveries`).
|
|
237
|
+
*
|
|
238
|
+
* The API is cursor-only (`api.md`), so pages are fetched forward. Already
|
|
239
|
+
* fetched pages stay cached in `useInfiniteQuery`, and `pageIndex` selects
|
|
240
|
+
* which one is on screen — so going back to a visited page is instant and
|
|
241
|
+
* going forward past the fetched set kicks off exactly one new request.
|
|
242
|
+
*/
|
|
243
|
+
export function usePagedList<TRecord>(input: PagedListInput<TRecord>): RecordListResult<TRecord> {
|
|
244
|
+
const client = useApiClient()
|
|
245
|
+
const enabled = input.enabled ?? true
|
|
246
|
+
const requestedLimit = input.query.limit
|
|
247
|
+
const initialPageSize =
|
|
248
|
+
typeof requestedLimit === 'number' && Number.isFinite(requestedLimit) && requestedLimit > 0
|
|
249
|
+
? requestedLimit
|
|
250
|
+
: DEFAULT_PAGE_SIZE
|
|
251
|
+
const [pageSize, setPageSize] = useState<number>(initialPageSize)
|
|
252
|
+
const [pageIndex, setPageIndex] = useState<number>(0)
|
|
253
|
+
|
|
254
|
+
const queryKey = [...input.queryKey, { limit: pageSize }] as const
|
|
255
|
+
const queryKeySignature = JSON.stringify(queryKey)
|
|
256
|
+
|
|
257
|
+
// A filter or sort change lands as a fresh `useInfiniteQuery`, so the page
|
|
258
|
+
// number the user was on no longer makes sense. Effect over signature keeps
|
|
259
|
+
// this cheap: same key, no re-render.
|
|
260
|
+
useEffect(() => {
|
|
261
|
+
setPageIndex(0)
|
|
262
|
+
}, [queryKeySignature])
|
|
263
|
+
|
|
264
|
+
const result = useInfiniteQuery({
|
|
265
|
+
queryKey,
|
|
266
|
+
queryFn: ({ pageParam }) =>
|
|
267
|
+
client.list(input.path, input.decode, {
|
|
268
|
+
...input.query,
|
|
269
|
+
limit: pageSize,
|
|
270
|
+
...(pageParam === null ? {} : { cursor: pageParam }),
|
|
271
|
+
}),
|
|
272
|
+
initialPageParam: null as string | null,
|
|
273
|
+
getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
274
|
+
// Without this a keystroke in the filter box blanks the table while the
|
|
275
|
+
// next query runs, which reads as "no results" for as long as it takes.
|
|
276
|
+
placeholderData: keepPreviousData,
|
|
277
|
+
enabled,
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
const pages = result.data?.pages ?? []
|
|
281
|
+
// A shrinking cache — a delete followed by a refetch — can leave the index
|
|
282
|
+
// past the last page. Clamp so a stale index never renders a blank table.
|
|
283
|
+
const safeIndex = pages.length === 0 ? 0 : Math.min(pageIndex, pages.length - 1)
|
|
284
|
+
const currentPage = pages[safeIndex]
|
|
285
|
+
const hasCachedNext = safeIndex + 1 < pages.length
|
|
286
|
+
const hasNext = hasCachedNext || result.hasNextPage
|
|
287
|
+
const hasPrev = safeIndex > 0
|
|
288
|
+
|
|
289
|
+
return {
|
|
290
|
+
records: currentPage?.items ?? [],
|
|
291
|
+
// A disabled query stays pending forever, which is not the same as loading.
|
|
292
|
+
isLoading: result.isPending && enabled,
|
|
293
|
+
error: toError(result.error),
|
|
294
|
+
pageIndex: safeIndex,
|
|
295
|
+
pageSize,
|
|
296
|
+
hasPrev,
|
|
297
|
+
hasNext,
|
|
298
|
+
isChangingPage: result.isFetchingNextPage,
|
|
299
|
+
prevPage: () => {
|
|
300
|
+
setPageIndex((current) => Math.max(0, current - 1))
|
|
301
|
+
},
|
|
302
|
+
nextPage: () => {
|
|
303
|
+
if (hasCachedNext) {
|
|
304
|
+
setPageIndex((current) => current + 1)
|
|
305
|
+
return
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if (!result.hasNextPage) {
|
|
309
|
+
return
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
void result.fetchNextPage().then((r) => {
|
|
313
|
+
if (r.error === null) {
|
|
314
|
+
setPageIndex((current) => current + 1)
|
|
315
|
+
}
|
|
316
|
+
})
|
|
317
|
+
},
|
|
318
|
+
// Query key includes `limit`, so the effect above resets `pageIndex` to 0
|
|
319
|
+
// once React sees the new key.
|
|
320
|
+
setPageSize: (size) => {
|
|
321
|
+
setPageSize(size)
|
|
322
|
+
},
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
187
326
|
/**
|
|
188
327
|
* The read half: `useList` and `useRecord`, and nothing that writes.
|
|
189
328
|
*
|
|
@@ -197,34 +336,13 @@ export function createReadOnlyResourceHooks<TRecord>(
|
|
|
197
336
|
const keys = keysFor(definition.name)
|
|
198
337
|
|
|
199
338
|
function useList(query: QueryParameters = {}, options: ListOptions = {}): RecordListResult<TRecord> {
|
|
200
|
-
|
|
201
|
-
const enabled = options.enabled ?? true
|
|
202
|
-
const result = useInfiniteQuery({
|
|
339
|
+
return usePagedList<TRecord>({
|
|
203
340
|
queryKey: keys.list(query),
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}),
|
|
209
|
-
initialPageParam: null as string | null,
|
|
210
|
-
getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
211
|
-
// Without this a keystroke in the filter box blanks the table while the
|
|
212
|
-
// next query runs, which reads as "no results" for as long as it takes.
|
|
213
|
-
placeholderData: keepPreviousData,
|
|
214
|
-
enabled,
|
|
341
|
+
path: definition.path,
|
|
342
|
+
decode: definition.decode,
|
|
343
|
+
query,
|
|
344
|
+
enabled: options.enabled ?? true,
|
|
215
345
|
})
|
|
216
|
-
|
|
217
|
-
return {
|
|
218
|
-
records: result.data?.pages.flatMap((page) => page.items) ?? [],
|
|
219
|
-
// A disabled query stays pending forever, which is not the same as loading.
|
|
220
|
-
isLoading: result.isPending && enabled,
|
|
221
|
-
error: toError(result.error),
|
|
222
|
-
hasMore: result.hasNextPage,
|
|
223
|
-
isLoadingMore: result.isFetchingNextPage,
|
|
224
|
-
loadMore: () => {
|
|
225
|
-
void result.fetchNextPage()
|
|
226
|
-
},
|
|
227
|
-
}
|
|
228
346
|
}
|
|
229
347
|
|
|
230
348
|
function useRecord(id: string | undefined): RecordResult<TRecord> {
|
|
@@ -25,7 +25,10 @@ const companies = createResourceHooks<Company, CreateCompanyInput, CompanyInput>
|
|
|
25
25
|
updateBody: companyBody,
|
|
26
26
|
// Every write here emits an activity server-side, in the same transaction, so
|
|
27
27
|
// a timeline rendered on this record is stale the moment the write lands.
|
|
28
|
-
|
|
28
|
+
// Creating or renaming a domain may also auto-link Positions to workspace
|
|
29
|
+
// people whose email is at it, which changes position lists and the
|
|
30
|
+
// `?company_id=` people list that names the far side of each new row.
|
|
31
|
+
alsoInvalidates: ['activities', 'positions', 'people'],
|
|
29
32
|
})
|
|
30
33
|
|
|
31
34
|
/** The documented filters on `GET /v1/companies`. */
|
|
@@ -34,6 +37,8 @@ export interface CompanyFilters {
|
|
|
34
37
|
readonly term?: string | undefined
|
|
35
38
|
/** Companies where any of these people holds a position. Repeats on the wire. */
|
|
36
39
|
readonly personIds?: readonly string[] | undefined
|
|
40
|
+
/** true = only the workspace's own companies; false = only the rest. */
|
|
41
|
+
readonly isOwn?: boolean | undefined
|
|
37
42
|
readonly limit?: number | undefined
|
|
38
43
|
/** `field` ascending, `-field` descending. Only `name`, `created_at`, `updated_at` are sortable. */
|
|
39
44
|
readonly sort?: string | undefined
|
|
@@ -43,6 +48,7 @@ function companyQuery(filters: CompanyFilters): QueryParameters {
|
|
|
43
48
|
return {
|
|
44
49
|
q: filters.term,
|
|
45
50
|
person_id: filters.personIds,
|
|
51
|
+
is_own: filters.isOwn === undefined ? undefined : String(filters.isOwn),
|
|
46
52
|
limit: filters.limit,
|
|
47
53
|
sort: filters.sort,
|
|
48
54
|
}
|
|
@@ -33,6 +33,8 @@ export interface DecisionFilters {
|
|
|
33
33
|
readonly targetId?: string | undefined
|
|
34
34
|
/** Matches the body, the rationale, the target type, and the target's name. */
|
|
35
35
|
readonly term?: string | undefined
|
|
36
|
+
/** `field` ascending, `-field` descending. Only `decided_at`, `created_at`, `updated_at` are sortable. */
|
|
37
|
+
readonly sort?: string | undefined
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
function decisionQuery(filters: DecisionFilters): QueryParameters {
|
|
@@ -40,6 +42,7 @@ function decisionQuery(filters: DecisionFilters): QueryParameters {
|
|
|
40
42
|
target_type: filters.targetType,
|
|
41
43
|
target_id: filters.targetId,
|
|
42
44
|
q: filters.term,
|
|
45
|
+
sort: filters.sort,
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
48
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { relinkEmailDomainsCountsSchema } from '@kelpie/schemas'
|
|
2
|
+
import type { RelinkEmailDomainsCounts } from '@kelpie/schemas'
|
|
3
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query'
|
|
4
|
+
|
|
5
|
+
import { useApiClient } from '../context.ts'
|
|
6
|
+
import type { MutationResult } from '../resource.ts'
|
|
7
|
+
import { asMutationResult } from './mutation.ts'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* `POST /v1/workspaces/:id/relink-email-domains`: sweep every Company that
|
|
11
|
+
* carries a domain and stub a Position for every workspace Person whose email
|
|
12
|
+
* matches. Idempotent — a follow-up run creates no new rows.
|
|
13
|
+
*
|
|
14
|
+
* On success invalidates positions, activities, and the person-scoped /
|
|
15
|
+
* company-scoped list joins so a page open on any of those refreshes with the
|
|
16
|
+
* new links.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export interface RelinkInput {
|
|
20
|
+
readonly workspaceId: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function useRelinkEmailDomains(): MutationResult<RelinkInput, RelinkEmailDomainsCounts> {
|
|
24
|
+
const client = useApiClient()
|
|
25
|
+
const cache = useQueryClient()
|
|
26
|
+
const mutation = useMutation({
|
|
27
|
+
mutationFn: ({ workspaceId }: RelinkInput) =>
|
|
28
|
+
client.post(
|
|
29
|
+
`/workspaces/${workspaceId}/relink-email-domains`,
|
|
30
|
+
{},
|
|
31
|
+
relinkEmailDomainsCountsSchema.parse,
|
|
32
|
+
),
|
|
33
|
+
onSuccess: async () => {
|
|
34
|
+
await Promise.all(
|
|
35
|
+
['positions', 'activities', 'companies', 'people'].map((name) =>
|
|
36
|
+
cache.invalidateQueries({ queryKey: [name] }),
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
return asMutationResult(mutation)
|
|
43
|
+
}
|
|
@@ -7,8 +7,6 @@ import type {
|
|
|
7
7
|
FormSubmission,
|
|
8
8
|
} from '@kelpie/schemas'
|
|
9
9
|
import {
|
|
10
|
-
keepPreviousData,
|
|
11
|
-
useInfiniteQuery,
|
|
12
10
|
useMutation,
|
|
13
11
|
useQuery,
|
|
14
12
|
useQueryClient,
|
|
@@ -18,7 +16,7 @@ import { isRecord } from '../json.ts'
|
|
|
18
16
|
import type { QueryParameters } from '../client.ts'
|
|
19
17
|
import { useApiClient } from '../context.ts'
|
|
20
18
|
import { toError } from '../errors.ts'
|
|
21
|
-
import { createResourceHooks } from '../resource.ts'
|
|
19
|
+
import { createResourceHooks, usePagedList } from '../resource.ts'
|
|
22
20
|
import type {
|
|
23
21
|
MutationResult,
|
|
24
22
|
RecordListResult,
|
|
@@ -139,29 +137,13 @@ export function useDeleteForm(): MutationResult<string, void> {
|
|
|
139
137
|
* The result shape is the same, so a page cannot tell the difference.
|
|
140
138
|
*/
|
|
141
139
|
export function useFormSubmissions(formId: string | undefined): RecordListResult<FormSubmission> {
|
|
142
|
-
|
|
143
|
-
const result = useInfiniteQuery({
|
|
140
|
+
return usePagedList<FormSubmission>({
|
|
144
141
|
queryKey: ['forms', 'submissions', formId ?? ''],
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}),
|
|
149
|
-
initialPageParam: null as string | null,
|
|
150
|
-
getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
151
|
-
placeholderData: keepPreviousData,
|
|
142
|
+
path: `/forms/${formId ?? ''}/submissions`,
|
|
143
|
+
decode: formSubmissionSchema.parse,
|
|
144
|
+
query: {},
|
|
152
145
|
enabled: formId !== undefined,
|
|
153
146
|
})
|
|
154
|
-
|
|
155
|
-
return {
|
|
156
|
-
records: result.data?.pages.flatMap((page) => page.items) ?? [],
|
|
157
|
-
isLoading: result.isPending && formId !== undefined,
|
|
158
|
-
error: toError(result.error),
|
|
159
|
-
hasMore: result.hasNextPage,
|
|
160
|
-
isLoadingMore: result.isFetchingNextPage,
|
|
161
|
-
loadMore: () => {
|
|
162
|
-
void result.fetchNextPage()
|
|
163
|
-
},
|
|
164
|
-
}
|
|
165
147
|
}
|
|
166
148
|
|
|
167
149
|
/** What a customer pastes into their site, built server-side from the request origin. */
|
|
@@ -42,7 +42,7 @@ function handbookQuery(filters: HandbookPageFilters): QueryParameters {
|
|
|
42
42
|
* The same call the kanban board makes for its stages, for the same reason: a
|
|
43
43
|
* tree cannot be drawn from part of itself, and a page whose parent is on the
|
|
44
44
|
* next page of results would render at the top level as though somebody had
|
|
45
|
-
* moved it there. The caller reads `
|
|
45
|
+
* moved it there. The caller reads `hasNext` and says so rather than drawing a
|
|
46
46
|
* tree with holes in it.
|
|
47
47
|
*/
|
|
48
48
|
export function useHandbookPages(filters: HandbookPageFilters = {}): RecordListResult<HandbookPage> {
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
ImportJob,
|
|
6
6
|
ImportObject,
|
|
7
7
|
ImportSource,
|
|
8
|
+
OnMissingCompany,
|
|
8
9
|
} from '@kelpie/schemas'
|
|
9
10
|
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
|
10
11
|
|
|
@@ -30,6 +31,8 @@ export interface CreateImportJobInput {
|
|
|
30
31
|
readonly source: ImportSource
|
|
31
32
|
readonly object: ImportObject
|
|
32
33
|
readonly conflictMode: ImportConflictMode
|
|
34
|
+
/** People import only: what to do with a row naming a company that is not here yet. */
|
|
35
|
+
readonly onMissingCompany: OnMissingCompany
|
|
33
36
|
readonly matchKeyId: string
|
|
34
37
|
/**
|
|
35
38
|
* Absent on the first upload, so the server derives one from the source preset
|
|
@@ -46,6 +49,7 @@ function jobForm(input: CreateImportJobInput): FormData {
|
|
|
46
49
|
form.set('source', input.source)
|
|
47
50
|
form.set('object', input.object)
|
|
48
51
|
form.set('conflict_mode', input.conflictMode)
|
|
52
|
+
form.set('on_missing_company', input.onMissingCompany)
|
|
49
53
|
form.set('match_key', input.matchKeyId)
|
|
50
54
|
form.set('dry_run', 'true')
|
|
51
55
|
|