@multiplatform.one/table 7.11.0 → 7.15.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/README.md +1 -1
- package/dist/cjs/components/ChildTable/index.cjs +8 -2
- package/dist/cjs/components/ChildTable/index.native.js +8 -2
- package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
- package/dist/cjs/components/ColumnHeaderFilter/index.cjs +77 -111
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js +89 -129
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableRoot.cjs +17 -1
- package/dist/cjs/components/DataTable/DataTableRoot.native.js +25 -2
- package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +72 -70
- package/dist/cjs/components/DataTableCell/index.cjs +2 -2
- package/dist/cjs/components/DataTableCell/index.native.js +2 -11
- package/dist/cjs/components/DataTableCell/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableDateFilter/index.cjs +135 -158
- package/dist/cjs/components/DataTableDateFilter/index.native.js +153 -183
- package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableExport/index.cjs +122 -139
- package/dist/cjs/components/DataTableExport/index.native.js +135 -157
- package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableGrouping/index.cjs +192 -212
- package/dist/cjs/components/DataTableGrouping/index.native.js +209 -230
- package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableSearch/index.cjs +103 -115
- package/dist/cjs/components/DataTableSearch/index.native.js +111 -123
- package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableToolbar/index.cjs +44 -61
- package/dist/cjs/components/DataTableToolbar/index.native.js +46 -65
- package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableViewOptions/index.cjs +38 -54
- package/dist/cjs/components/DataTableViewOptions/index.native.js +40 -56
- package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/cjs/components/FilterOperatorValueEditor/index.cjs +3 -11
- package/dist/cjs/components/FilterOperatorValueEditor/index.native.js +3 -11
- package/dist/cjs/components/FilterOperatorValueEditor/index.native.js.map +1 -1
- package/dist/cjs/components/SimpleTable/index.cjs +2 -6
- package/dist/cjs/components/SimpleTable/index.native.js +2 -6
- package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
- package/dist/cjs/components/TableInput/RowDetailEditor.cjs +190 -0
- package/dist/cjs/components/TableInput/RowDetailEditor.native.js +172 -0
- package/dist/cjs/components/TableInput/RowDetailEditor.native.js.map +1 -0
- package/dist/cjs/components/TableInput/index.cjs +42 -5
- package/dist/cjs/components/TableInput/index.native.js +64 -1
- package/dist/cjs/components/TableInput/index.native.js.map +1 -1
- package/dist/cjs/components/TableInput/shared.cjs +8 -0
- package/dist/cjs/components/TableInput/shared.native.js +10 -0
- package/dist/cjs/components/TableInput/shared.native.js.map +1 -1
- package/dist/cjs/hooks/useDataTable.cjs +11 -1
- package/dist/cjs/hooks/useDataTable.native.js +12 -2
- package/dist/cjs/hooks/useDataTable.native.js.map +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/utils/rowPress.cjs +4 -1
- package/dist/cjs/utils/rowPress.native.js +4 -1
- package/dist/cjs/utils/rowPress.native.js.map +1 -1
- package/dist/esm/components/ChildTable/index.mjs +8 -2
- package/dist/esm/components/ChildTable/index.mjs.map +1 -1
- package/dist/esm/components/ChildTable/index.native.js +8 -2
- package/dist/esm/components/ChildTable/index.native.js.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.mjs +80 -114
- package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.native.js +92 -132
- package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.mjs +17 -1
- package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.native.js +25 -2
- package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs +76 -74
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/index.mjs +3 -3
- package/dist/esm/components/DataTableCell/index.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/index.native.js +3 -12
- package/dist/esm/components/DataTableCell/index.native.js.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.mjs +137 -160
- package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.native.js +155 -185
- package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTableExport/index.mjs +124 -141
- package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
- package/dist/esm/components/DataTableExport/index.native.js +137 -159
- package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.mjs +194 -214
- package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.native.js +211 -232
- package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/esm/components/DataTableSearch/index.mjs +105 -117
- package/dist/esm/components/DataTableSearch/index.mjs.map +1 -1
- package/dist/esm/components/DataTableSearch/index.native.js +113 -125
- package/dist/esm/components/DataTableSearch/index.native.js.map +1 -1
- package/dist/esm/components/DataTableToolbar/index.mjs +46 -63
- package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/esm/components/DataTableToolbar/index.native.js +48 -67
- package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.mjs +40 -56
- package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.native.js +42 -58
- package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/esm/components/FilterOperatorValueEditor/index.mjs +3 -11
- package/dist/esm/components/FilterOperatorValueEditor/index.mjs.map +1 -1
- package/dist/esm/components/FilterOperatorValueEditor/index.native.js +3 -11
- package/dist/esm/components/FilterOperatorValueEditor/index.native.js.map +1 -1
- package/dist/esm/components/SimpleTable/index.mjs +3 -7
- package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
- package/dist/esm/components/SimpleTable/index.native.js +3 -7
- package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
- package/dist/esm/components/TableInput/RowDetailEditor.mjs +165 -0
- package/dist/esm/components/TableInput/RowDetailEditor.mjs.map +1 -0
- package/dist/esm/components/TableInput/RowDetailEditor.native.js +144 -0
- package/dist/esm/components/TableInput/RowDetailEditor.native.js.map +1 -0
- package/dist/esm/components/TableInput/index.mjs +42 -5
- package/dist/esm/components/TableInput/index.mjs.map +1 -1
- package/dist/esm/components/TableInput/index.native.js +64 -1
- package/dist/esm/components/TableInput/index.native.js.map +1 -1
- package/dist/esm/components/TableInput/shared.mjs +7 -1
- package/dist/esm/components/TableInput/shared.mjs.map +1 -1
- package/dist/esm/components/TableInput/shared.native.js +9 -1
- package/dist/esm/components/TableInput/shared.native.js.map +1 -1
- package/dist/esm/hooks/useDataTable.mjs +11 -1
- package/dist/esm/hooks/useDataTable.mjs.map +1 -1
- package/dist/esm/hooks/useDataTable.native.js +12 -2
- package/dist/esm/hooks/useDataTable.native.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/utils/rowPress.mjs +4 -1
- package/dist/esm/utils/rowPress.mjs.map +1 -1
- package/dist/esm/utils/rowPress.native.js +4 -1
- package/dist/esm/utils/rowPress.native.js.map +1 -1
- package/dist/jsx/components/ChildTable/index.mjs +8 -2
- package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
- package/dist/jsx/components/ChildTable/index.native.js +8 -2
- package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs +80 -114
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js +89 -129
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.mjs +17 -1
- package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.native.js +25 -2
- package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +76 -74
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/index.mjs +3 -3
- package/dist/jsx/components/DataTableCell/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/index.native.js +2 -11
- package/dist/jsx/components/DataTableCell/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.mjs +137 -160
- package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.native.js +153 -183
- package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableExport/index.mjs +124 -141
- package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableExport/index.native.js +135 -157
- package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.mjs +194 -214
- package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.native.js +209 -230
- package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableSearch/index.mjs +105 -117
- package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableSearch/index.native.js +111 -123
- package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableToolbar/index.mjs +46 -63
- package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableToolbar/index.native.js +46 -65
- package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.mjs +40 -56
- package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.native.js +40 -56
- package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/jsx/components/FilterOperatorValueEditor/index.mjs +3 -11
- package/dist/jsx/components/FilterOperatorValueEditor/index.mjs.map +1 -1
- package/dist/jsx/components/FilterOperatorValueEditor/index.native.js +3 -11
- package/dist/jsx/components/FilterOperatorValueEditor/index.native.js.map +1 -1
- package/dist/jsx/components/SimpleTable/index.mjs +3 -7
- package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
- package/dist/jsx/components/SimpleTable/index.native.js +2 -6
- package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
- package/dist/jsx/components/TableInput/RowDetailEditor.mjs +165 -0
- package/dist/jsx/components/TableInput/RowDetailEditor.mjs.map +1 -0
- package/dist/jsx/components/TableInput/RowDetailEditor.native.js +172 -0
- package/dist/jsx/components/TableInput/RowDetailEditor.native.js.map +1 -0
- package/dist/jsx/components/TableInput/index.mjs +42 -5
- package/dist/jsx/components/TableInput/index.mjs.map +1 -1
- package/dist/jsx/components/TableInput/index.native.js +64 -1
- package/dist/jsx/components/TableInput/index.native.js.map +1 -1
- package/dist/jsx/components/TableInput/shared.mjs +7 -1
- package/dist/jsx/components/TableInput/shared.mjs.map +1 -1
- package/dist/jsx/components/TableInput/shared.native.js +10 -0
- package/dist/jsx/components/TableInput/shared.native.js.map +1 -1
- package/dist/jsx/hooks/useDataTable.mjs +11 -1
- package/dist/jsx/hooks/useDataTable.mjs.map +1 -1
- package/dist/jsx/hooks/useDataTable.native.js +12 -2
- package/dist/jsx/hooks/useDataTable.native.js.map +1 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/utils/rowPress.mjs +4 -1
- package/dist/jsx/utils/rowPress.mjs.map +1 -1
- package/dist/jsx/utils/rowPress.native.js +4 -1
- package/dist/jsx/utils/rowPress.native.js.map +1 -1
- package/package.json +14 -14
- package/src/components/ChildTable/childTable.cellHidden.spec.tsx +57 -0
- package/src/components/ChildTable/childTable.rowDetail.spec.tsx +120 -0
- package/src/components/ChildTable/index.tsx +16 -0
- package/src/components/ColumnHeaderFilter/index.tsx +89 -116
- package/src/components/DataTable/DataTable.stories.tsx +71 -6
- package/src/components/DataTable/DataTableRoot.tsx +27 -4
- package/src/components/DataTable/dataTableMobileCards.spec.tsx +1 -4
- package/src/components/DataTable/headerContainment.spec.tsx +91 -0
- package/src/components/DataTable/rowPress.spec.tsx +2 -6
- package/src/components/DataTableBulkActions/DataTableBulkActions.stories.tsx +5 -4
- package/src/components/DataTableCell/CellModalEditor.tsx +95 -75
- package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +12 -2
- package/src/components/DataTableCell/cellModalEditor.spec.tsx +75 -49
- package/src/components/DataTableCell/dataTableCell.spec.tsx +31 -14
- package/src/components/DataTableCell/index.tsx +3 -2
- package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +6 -3
- package/src/components/DataTableDateFilter/index.tsx +151 -180
- package/src/components/DataTableExport/index.tsx +135 -142
- package/src/components/DataTableGrouping/index.tsx +193 -195
- package/src/components/DataTableSearch/index.tsx +111 -109
- package/src/components/DataTableToolbar/index.tsx +39 -46
- package/src/components/DataTableViewOptions/DataTableViewOptions.stories.tsx +52 -0
- package/src/components/DataTableViewOptions/index.tsx +32 -40
- package/src/components/FilterOperatorValueEditor/FilterOperatorValueEditor.spec.tsx +64 -2
- package/src/components/FilterOperatorValueEditor/index.tsx +0 -8
- package/src/components/SimpleTable/index.tsx +3 -2
- package/src/components/SimpleTable/simpleTable.spec.tsx +15 -0
- package/src/components/Table/accessibility.spec.tsx +7 -19
- package/src/components/TableInput/RowDetailEditor.native.tsx +134 -0
- package/src/components/TableInput/RowDetailEditor.tsx +173 -0
- package/src/components/TableInput/index.native.tsx +49 -1
- package/src/components/TableInput/index.tsx +65 -10
- package/src/components/TableInput/shared.ts +29 -0
- package/src/components/tableDropdowns.spec.tsx +172 -0
- package/src/hooks/useDataTable.spec.ts +39 -0
- package/src/hooks/useDataTable.ts +15 -1
- package/src/index.ts +1 -0
- package/src/utils/rowPress.ts +3 -0
- package/types/components/ChildTable/index.d.ts +10 -0
- package/types/components/ChildTable/index.d.ts.map +1 -1
- package/types/components/ColumnHeaderFilter/index.d.ts +1 -1
- package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
- package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
- package/types/components/DataTableCell/CellModalEditor.d.ts +10 -7
- package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
- package/types/components/DataTableCell/index.d.ts.map +1 -1
- package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
- package/types/components/DataTableGrouping/index.d.ts.map +1 -1
- package/types/components/DataTableSearch/index.d.ts.map +1 -1
- package/types/components/FilterOperatorValueEditor/index.d.ts.map +1 -1
- package/types/components/SimpleTable/index.d.ts.map +1 -1
- package/types/components/TableInput/RowDetailEditor.d.ts +24 -0
- package/types/components/TableInput/RowDetailEditor.d.ts.map +1 -0
- package/types/components/TableInput/RowDetailEditor.native.d.ts +11 -0
- package/types/components/TableInput/RowDetailEditor.native.d.ts.map +1 -0
- package/types/components/TableInput/index.d.ts +11 -2
- package/types/components/TableInput/index.d.ts.map +1 -1
- package/types/components/TableInput/index.native.d.ts +8 -1
- package/types/components/TableInput/index.native.d.ts.map +1 -1
- package/types/components/TableInput/shared.d.ts +11 -0
- package/types/components/TableInput/shared.d.ts.map +1 -1
- package/types/hooks/useDataTable.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/utils/rowPress.d.ts.map +1 -1
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
import { downloadBlob } from "@multiplatform.one/platform";
|
|
9
9
|
import { formatCalendarDate, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
10
10
|
import { useState } from "react";
|
|
11
|
-
import { Button, Checkbox, Input } from "@multiplatform.one/forms";
|
|
12
|
-
import {
|
|
11
|
+
import { Button, Checkbox, FloatingPanel, Input } from "@multiplatform.one/forms";
|
|
12
|
+
import { ScrollView, Separator, Text, XStack, YStack, isWeb } from "tamagui";
|
|
13
13
|
import type { DataTableField } from "../../types";
|
|
14
14
|
import { iconSizeForToken } from "../../utils/chromeIcons";
|
|
15
15
|
import { getViewLeafRows } from "../../utils/viewData";
|
|
@@ -213,7 +213,7 @@ export function DataTableExport<T = any>(props: DataTableExportProps<T>) {
|
|
|
213
213
|
</Button>
|
|
214
214
|
|
|
215
215
|
{/* Advanced Export Options */}
|
|
216
|
-
<
|
|
216
|
+
<ExportOptionsPanel
|
|
217
217
|
exportFormats={exportFormats}
|
|
218
218
|
exportOptions={exportOptions}
|
|
219
219
|
onOptionsChange={setExportOptions}
|
|
@@ -252,9 +252,9 @@ function extractColumnsFromTable(table: any): ExportColumn[] {
|
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
// Export Options
|
|
255
|
+
// Export Options Panel
|
|
256
256
|
|
|
257
|
-
interface
|
|
257
|
+
interface ExportOptionsPanelProps {
|
|
258
258
|
exportFormats: ExportFormat[];
|
|
259
259
|
exportOptions: Partial<ExportOptions>;
|
|
260
260
|
onOptionsChange: (options: Partial<ExportOptions>) => void;
|
|
@@ -265,7 +265,7 @@ interface ExportOptionsPopoverProps {
|
|
|
265
265
|
columns: ExportColumn[];
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
-
function
|
|
268
|
+
function ExportOptionsPanel({
|
|
269
269
|
exportFormats,
|
|
270
270
|
exportOptions,
|
|
271
271
|
onOptionsChange,
|
|
@@ -274,11 +274,12 @@ function ExportOptionsPopover({
|
|
|
274
274
|
disabled,
|
|
275
275
|
isExporting,
|
|
276
276
|
columns,
|
|
277
|
-
}:
|
|
277
|
+
}: ExportOptionsPanelProps) {
|
|
278
278
|
const { knobProps } = useResolvedKnobs();
|
|
279
279
|
const iconPx = iconSizeForToken(String(knobProps.sizeToken));
|
|
280
280
|
const sz = knobProps.sizeToken;
|
|
281
281
|
const popoverMinWidth = sz === "$3" ? 240 : sz === "$5" ? 360 : 300;
|
|
282
|
+
const [open, setOpen] = useState(false);
|
|
282
283
|
const [selectedColumns, setSelectedColumns] = useState<Set<string>>(
|
|
283
284
|
new Set(columns.map((col) => col.accessorKey || col.id || "")),
|
|
284
285
|
);
|
|
@@ -288,157 +289,149 @@ function ExportOptionsPopover({
|
|
|
288
289
|
header: col.header || col.accessorKey || col.id || "",
|
|
289
290
|
}));
|
|
290
291
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
aria-label="Export options"
|
|
303
|
-
>
|
|
304
|
-
Options
|
|
305
|
-
</Button>
|
|
306
|
-
</Popover.Trigger>
|
|
307
|
-
|
|
308
|
-
<Popover.Content
|
|
309
|
-
{...knobProps.elevatedSurface}
|
|
310
|
-
transition={knobProps.transition}
|
|
311
|
-
enterStyle={{ x: 0, y: -10, opacity: 0 }}
|
|
312
|
-
exitStyle={{ x: 0, y: -10, opacity: 0 }}
|
|
313
|
-
minWidth={popoverMinWidth}
|
|
314
|
-
padding={0}
|
|
315
|
-
overflow="hidden"
|
|
316
|
-
>
|
|
317
|
-
{/* The popper resize middleware caps the height to the viewport; the
|
|
318
|
-
ScrollView keeps every section reachable (same pattern as
|
|
319
|
-
DataTableDateFilter). */}
|
|
320
|
-
<Popover.ScrollView minHeight={0}>
|
|
321
|
-
<YStack {...knobProps.panelPadding} gap="$4">
|
|
322
|
-
<Text {...knobProps.label} fontWeight="400">
|
|
323
|
-
Export Options
|
|
324
|
-
</Text>
|
|
325
|
-
|
|
326
|
-
{/* Filename */}
|
|
327
|
-
<YStack gap="$2">
|
|
328
|
-
<Text {...knobProps.label} fontWeight="400">
|
|
329
|
-
Filename
|
|
330
|
-
</Text>
|
|
331
|
-
<Input
|
|
332
|
-
value={exportOptions.filename || ""}
|
|
333
|
-
onChangeText={(text) =>
|
|
334
|
-
onOptionsChange({
|
|
335
|
-
...exportOptions,
|
|
336
|
-
filename: text,
|
|
337
|
-
})
|
|
338
|
-
}
|
|
339
|
-
placeholder="Enter filename"
|
|
340
|
-
/>
|
|
341
|
-
</YStack>
|
|
292
|
+
const trigger = (
|
|
293
|
+
<Button
|
|
294
|
+
size={knobProps.sizeToken}
|
|
295
|
+
chromeless
|
|
296
|
+
icon={<GearIcon size={iconPx} />}
|
|
297
|
+
disabled={disabled}
|
|
298
|
+
aria-label="Export options"
|
|
299
|
+
>
|
|
300
|
+
Options
|
|
301
|
+
</Button>
|
|
302
|
+
);
|
|
342
303
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
</Text>
|
|
360
|
-
<ScrollView maxHeight={200}>
|
|
361
|
-
<YStack gap="$1">
|
|
362
|
-
{availableColumns.map((col) => (
|
|
363
|
-
<Checkbox
|
|
364
|
-
key={col.key}
|
|
365
|
-
label={col.header}
|
|
366
|
-
checked={selectedColumns.has(col.key)}
|
|
367
|
-
onCheckedChange={(checked) => {
|
|
368
|
-
const newSelected = new Set(selectedColumns);
|
|
369
|
-
if (checked) {
|
|
370
|
-
newSelected.add(col.key);
|
|
371
|
-
} else {
|
|
372
|
-
newSelected.delete(col.key);
|
|
373
|
-
}
|
|
374
|
-
setSelectedColumns(newSelected);
|
|
375
|
-
onOptionsChange({
|
|
376
|
-
...exportOptions,
|
|
377
|
-
selectedColumns: Array.from(newSelected),
|
|
378
|
-
});
|
|
379
|
-
}}
|
|
380
|
-
/>
|
|
381
|
-
))}
|
|
382
|
-
</YStack>
|
|
383
|
-
</ScrollView>
|
|
384
|
-
</YStack>
|
|
304
|
+
return (
|
|
305
|
+
// LC-06/LC-10: the option list is taller than most viewports. FloatingPanel
|
|
306
|
+
// clamps it inside the viewport and scrolls, so the Export Formats and
|
|
307
|
+
// Print rows below the fold stay reachable.
|
|
308
|
+
<FloatingPanel
|
|
309
|
+
open={open}
|
|
310
|
+
onOpenChange={setOpen}
|
|
311
|
+
trigger={trigger}
|
|
312
|
+
triggerSizing="content"
|
|
313
|
+
disabled={disabled}
|
|
314
|
+
scrollable
|
|
315
|
+
>
|
|
316
|
+
<YStack gap="$4" minWidth={popoverMinWidth} data-dismiss-class="compose">
|
|
317
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
318
|
+
Export Options
|
|
319
|
+
</Text>
|
|
385
320
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
321
|
+
{/* Filename */}
|
|
322
|
+
<YStack gap="$2">
|
|
323
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
324
|
+
Filename
|
|
325
|
+
</Text>
|
|
326
|
+
<Input
|
|
327
|
+
value={exportOptions.filename || ""}
|
|
328
|
+
onChangeText={(text) =>
|
|
329
|
+
onOptionsChange({
|
|
330
|
+
...exportOptions,
|
|
331
|
+
filename: text,
|
|
332
|
+
})
|
|
333
|
+
}
|
|
334
|
+
placeholder="Enter filename"
|
|
335
|
+
/>
|
|
336
|
+
</YStack>
|
|
337
|
+
|
|
338
|
+
{/* Include Headers */}
|
|
339
|
+
<Checkbox
|
|
340
|
+
label="Include headers"
|
|
341
|
+
checked={exportOptions.includeHeaders ?? true}
|
|
342
|
+
onCheckedChange={(checked) =>
|
|
343
|
+
onOptionsChange({
|
|
344
|
+
...exportOptions,
|
|
345
|
+
includeHeaders: checked as boolean,
|
|
346
|
+
})
|
|
347
|
+
}
|
|
348
|
+
/>
|
|
349
|
+
|
|
350
|
+
{/* Column Selection */}
|
|
351
|
+
<YStack gap="$2">
|
|
352
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
353
|
+
Select Columns ({selectedColumns.size} of {availableColumns.length})
|
|
354
|
+
</Text>
|
|
355
|
+
<ScrollView maxHeight={200}>
|
|
356
|
+
<YStack gap="$1">
|
|
357
|
+
{availableColumns.map((col) => (
|
|
358
|
+
<Checkbox
|
|
359
|
+
key={col.key}
|
|
360
|
+
label={col.header}
|
|
361
|
+
checked={selectedColumns.has(col.key)}
|
|
362
|
+
onCheckedChange={(checked) => {
|
|
363
|
+
const newSelected = new Set(selectedColumns);
|
|
364
|
+
if (checked) {
|
|
365
|
+
newSelected.add(col.key);
|
|
366
|
+
} else {
|
|
367
|
+
newSelected.delete(col.key);
|
|
368
|
+
}
|
|
369
|
+
setSelectedColumns(newSelected);
|
|
370
|
+
onOptionsChange({
|
|
371
|
+
...exportOptions,
|
|
372
|
+
selectedColumns: Array.from(newSelected),
|
|
373
|
+
});
|
|
374
|
+
}}
|
|
375
|
+
/>
|
|
417
376
|
))}
|
|
418
377
|
</YStack>
|
|
378
|
+
</ScrollView>
|
|
379
|
+
</YStack>
|
|
419
380
|
|
|
420
|
-
|
|
381
|
+
<Separator />
|
|
421
382
|
|
|
422
|
-
|
|
383
|
+
{/* Export Formats */}
|
|
384
|
+
<YStack gap="$2">
|
|
385
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
386
|
+
Export Formats
|
|
387
|
+
</Text>
|
|
388
|
+
{exportFormats.map((format) => (
|
|
423
389
|
<Button
|
|
390
|
+
key={format.id}
|
|
424
391
|
size={knobProps.sizeToken}
|
|
425
392
|
chromeless
|
|
426
393
|
justifyContent="flex-start"
|
|
427
|
-
disabled={disabled || isExporting ===
|
|
428
|
-
onPress={
|
|
429
|
-
icon={
|
|
394
|
+
disabled={disabled || isExporting === format.id || !format.enabled}
|
|
395
|
+
onPress={() => onExport(format)}
|
|
396
|
+
icon={format.icon}
|
|
430
397
|
>
|
|
431
|
-
|
|
432
|
-
|
|
398
|
+
<YStack gap="$1">
|
|
399
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
400
|
+
{format.label}
|
|
401
|
+
</Text>
|
|
402
|
+
<Text fontSize="$2" color="$color10">
|
|
403
|
+
{format.description}
|
|
404
|
+
</Text>
|
|
405
|
+
</YStack>
|
|
406
|
+
{isExporting === format.id && (
|
|
433
407
|
<Text fontSize="$2" color="$accentColor" marginInlineStart="auto">
|
|
434
408
|
...
|
|
435
409
|
</Text>
|
|
436
410
|
)}
|
|
437
411
|
</Button>
|
|
438
|
-
|
|
439
|
-
</
|
|
440
|
-
|
|
441
|
-
|
|
412
|
+
))}
|
|
413
|
+
</YStack>
|
|
414
|
+
|
|
415
|
+
<Separator />
|
|
416
|
+
|
|
417
|
+
{/* Print */}
|
|
418
|
+
<Button
|
|
419
|
+
size={knobProps.sizeToken}
|
|
420
|
+
chromeless
|
|
421
|
+
justifyContent="flex-start"
|
|
422
|
+
disabled={disabled || isExporting === "print"}
|
|
423
|
+
onPress={onPrint}
|
|
424
|
+
icon={<PrinterIcon size={iconPx} />}
|
|
425
|
+
>
|
|
426
|
+
Print Table
|
|
427
|
+
{isExporting === "print" && (
|
|
428
|
+
<Text fontSize="$2" color="$accentColor" marginInlineStart="auto">
|
|
429
|
+
...
|
|
430
|
+
</Text>
|
|
431
|
+
)}
|
|
432
|
+
</Button>
|
|
433
|
+
</YStack>
|
|
434
|
+
</FloatingPanel>
|
|
442
435
|
);
|
|
443
436
|
}
|
|
444
437
|
|