@softwareone/spi-sv5-library 1.9.0 → 1.10.1
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/Button/Button.svelte +16 -0
- package/dist/Controls/Input/Input.svelte +1 -1
- package/dist/Controls/{Label.svelte → Label/Label.svelte} +1 -1
- package/dist/Controls/Select/Select.svelte +1 -1
- package/dist/Controls/TextArea/TextArea.svelte +1 -1
- package/dist/Controls/Toggle/Toggle.svelte +1 -1
- package/dist/ProgressWizard/ProgressWizard.svelte +3 -3
- package/dist/Table/ActionsColumn.svelte +203 -0
- package/dist/Table/ActionsColumn.svelte.d.ts +9 -0
- package/dist/Table/Body.svelte +90 -0
- package/dist/Table/Body.svelte.d.ts +27 -0
- package/dist/Table/ColumnVisibilityDropdown.svelte +174 -0
- package/dist/Table/ColumnVisibilityDropdown.svelte.d.ts +27 -0
- package/dist/Table/Footer.svelte +34 -0
- package/dist/Table/Footer.svelte.d.ts +28 -0
- package/dist/Table/Header.svelte +176 -0
- package/dist/Table/Header.svelte.d.ts +28 -0
- package/dist/Table/PageSize.svelte +164 -0
- package/dist/Table/PageSize.svelte.d.ts +28 -0
- package/dist/Table/Pagination.svelte +145 -0
- package/dist/Table/Pagination.svelte.d.ts +27 -0
- package/dist/Table/RowCheckBox.svelte +31 -0
- package/dist/Table/RowCheckBox.svelte.d.ts +9 -0
- package/dist/Table/Skeleton.svelte +99 -0
- package/dist/Table/Skeleton.svelte.d.ts +7 -0
- package/dist/Table/Table.svelte +351 -0
- package/dist/Table/Table.svelte.d.ts +45 -0
- package/dist/Table/adapter/flex-render.svelte +40 -0
- package/dist/Table/adapter/flex-render.svelte.d.ts +28 -0
- package/dist/Table/adapter/index.d.ts +4 -0
- package/dist/Table/adapter/index.js +4 -0
- package/dist/Table/adapter/render-component.d.ts +13 -0
- package/dist/Table/adapter/render-component.js +18 -0
- package/dist/Table/adapter/table.svelte.d.ts +6 -0
- package/dist/Table/adapter/table.svelte.js +66 -0
- package/dist/Table/consts.d.ts +4 -0
- package/dist/Table/consts.js +4 -0
- package/dist/Table/context.d.ts +4 -0
- package/dist/Table/context.js +15 -0
- package/dist/Table/excel-setting.d.ts +8 -0
- package/dist/Table/excel-setting.js +3 -0
- package/dist/Table/excel.d.ts +4 -0
- package/dist/Table/excel.js +66 -0
- package/dist/Table/index.d.ts +6 -0
- package/dist/Table/index.js +6 -0
- package/dist/Table/types.d.ts +16 -0
- package/dist/Table/types.js +1 -0
- package/dist/Table/util.d.ts +4 -0
- package/dist/Table/util.js +46 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/package.json +21 -1
- /package/dist/Controls/{Label.svelte.d.ts → Label/Label.svelte.d.ts} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
import { writable } from 'svelte/store';
|
|
3
|
+
const paginationTableKey = Symbol('paginationTableKey');
|
|
4
|
+
export const setPaginationTableContext = () => {
|
|
5
|
+
const paginationTable = writable({
|
|
6
|
+
totalPages: 0,
|
|
7
|
+
totalItems: 0,
|
|
8
|
+
currentPage: 1
|
|
9
|
+
});
|
|
10
|
+
setContext(paginationTableKey, paginationTable);
|
|
11
|
+
return paginationTable;
|
|
12
|
+
};
|
|
13
|
+
export const getPaginationTableContext = () => {
|
|
14
|
+
return getContext(paginationTableKey);
|
|
15
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/// <reference path="./types.d.ts" />
|
|
2
|
+
import ExcelJS from 'exceljs';
|
|
3
|
+
import saveAs from 'file-saver';
|
|
4
|
+
import { ColumnFormat } from './excel-setting.js';
|
|
5
|
+
const exportExcel = async (table, excelSetting) => {
|
|
6
|
+
const workbook = new ExcelJS.Workbook();
|
|
7
|
+
const worksheet = workbook.addWorksheet('Sheet 1');
|
|
8
|
+
worksheet.columns = getColumns(table, excelSetting);
|
|
9
|
+
const rows = getRows(table, excelSetting);
|
|
10
|
+
worksheet.addRows(rows);
|
|
11
|
+
setStyle(worksheet);
|
|
12
|
+
await downloadFile(workbook, excelSetting.fileName);
|
|
13
|
+
};
|
|
14
|
+
const getColumns = (table, excelSetting) => {
|
|
15
|
+
return excelSetting.exportAllColumns ? getAllColumns(table) : getVisibleColumns(table);
|
|
16
|
+
};
|
|
17
|
+
const getAllColumns = (table) => {
|
|
18
|
+
const allColumns = table.getAllColumns().filter(shouldIncludeColumn);
|
|
19
|
+
return allColumns.map((column) => getColumnExcel(column.columnDef.header, column.id, column.columnDef.meta?.columnFormatExport));
|
|
20
|
+
};
|
|
21
|
+
const getVisibleColumns = (table) => {
|
|
22
|
+
const visibleColumns = table.getVisibleLeafColumns().filter(shouldIncludeColumn);
|
|
23
|
+
return visibleColumns.map((column) => getColumnExcel(column.columnDef.header, column.id, column.columnDef.meta?.columnFormatExport));
|
|
24
|
+
};
|
|
25
|
+
const shouldIncludeColumn = (column) => {
|
|
26
|
+
return !column.columnDef.meta?.excludeFromExport;
|
|
27
|
+
};
|
|
28
|
+
const getColumnExcel = (header, id, columnFormatExport) => {
|
|
29
|
+
return {
|
|
30
|
+
header,
|
|
31
|
+
key: id,
|
|
32
|
+
width: 20,
|
|
33
|
+
...(columnFormatExport && {
|
|
34
|
+
style: {
|
|
35
|
+
numFmt: columnFormatExport
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const getRows = (table, excelSetting) => {
|
|
41
|
+
return table.getFilteredRowModel().rows.map((row) => getValues(excelSetting, row));
|
|
42
|
+
};
|
|
43
|
+
const getValues = (excelSetting, row) => {
|
|
44
|
+
const cells = excelSetting.exportAllColumns ? row.getAllCells() : row.getVisibleCells();
|
|
45
|
+
return cells
|
|
46
|
+
.filter((cell) => !cell.column.columnDef.meta?.excludeFromExport)
|
|
47
|
+
.map((cell) => getValue(cell));
|
|
48
|
+
};
|
|
49
|
+
const getValue = (cell) => {
|
|
50
|
+
let value = cell.getValue() ?? '';
|
|
51
|
+
if (Array.isArray(value)) {
|
|
52
|
+
value = value.join(', ');
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
};
|
|
56
|
+
const setStyle = (worksheet) => {
|
|
57
|
+
worksheet.getRow(1).eachCell((cell) => {
|
|
58
|
+
cell.font = { bold: true };
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const downloadFile = async (workbook, fileName) => {
|
|
62
|
+
const buffer = await workbook.xlsx.writeBuffer();
|
|
63
|
+
const blob = new Blob([buffer]);
|
|
64
|
+
saveAs(blob, `${fileName}.xlsx`);
|
|
65
|
+
};
|
|
66
|
+
export default exportExcel;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './adapter/index.js';
|
|
2
|
+
export * from './consts.js';
|
|
3
|
+
export * from './context.js';
|
|
4
|
+
export { ColumnFormat, type ExcelSetting } from './excel-setting.js';
|
|
5
|
+
export { default as Table } from './Table.svelte';
|
|
6
|
+
export { createActionsColumn } from './util.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import '@tanstack/table-core';
|
|
2
|
+
|
|
3
|
+
import { ColumnFormat } from './excel-setting.js';
|
|
4
|
+
|
|
5
|
+
declare module '@tanstack/table-core' {
|
|
6
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
7
|
+
alignColumn?: 'left' | 'right' | 'center';
|
|
8
|
+
className?: string;
|
|
9
|
+
columnWidth?: string;
|
|
10
|
+
style?: string;
|
|
11
|
+
isVisible?: boolean;
|
|
12
|
+
excludeFromExport?: boolean;
|
|
13
|
+
columnFormatExport?: ColumnFormat;
|
|
14
|
+
hideColumnFilter?: boolean;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Row } from './adapter/index.js';
|
|
2
|
+
import type { Action } from './types.js';
|
|
3
|
+
export declare const createCheckedColumn: <T>() => import("./adapter/index.js").DisplayColumnDef<T, unknown>;
|
|
4
|
+
export declare const createActionsColumn: <T>(getActions: (row: Row<T>) => Action[]) => import("./adapter/index.js").DisplayColumnDef<T, unknown>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import ActionsColumn from './ActionsColumn.svelte';
|
|
2
|
+
import RowCheckBox from './RowCheckBox.svelte';
|
|
3
|
+
import { createColumnHelper, renderComponent } from './adapter/index.js';
|
|
4
|
+
export const createCheckedColumn = () => {
|
|
5
|
+
const columnHelper = createColumnHelper();
|
|
6
|
+
return columnHelper.display({
|
|
7
|
+
id: 'checked',
|
|
8
|
+
header: ({ table }) => renderComponent(RowCheckBox, {
|
|
9
|
+
checked: table.getIsAllRowsSelected(),
|
|
10
|
+
indeterminate: table.getIsSomeRowsSelected(),
|
|
11
|
+
onchange: table.getToggleAllRowsSelectedHandler()
|
|
12
|
+
}),
|
|
13
|
+
cell: ({ row }) => renderComponent(RowCheckBox, {
|
|
14
|
+
checked: row.getIsSelected(),
|
|
15
|
+
disabled: !row.getCanSelect(),
|
|
16
|
+
indeterminate: row.getIsSomeSelected(),
|
|
17
|
+
onchange: row.getToggleSelectedHandler()
|
|
18
|
+
}),
|
|
19
|
+
meta: {
|
|
20
|
+
columnWidth: '40px'
|
|
21
|
+
},
|
|
22
|
+
enableSorting: false
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export const createActionsColumn = (getActions) => {
|
|
26
|
+
const columnHelper = createColumnHelper();
|
|
27
|
+
return columnHelper.display({
|
|
28
|
+
id: 'actions',
|
|
29
|
+
header: 'Actions',
|
|
30
|
+
enableSorting: false,
|
|
31
|
+
enableColumnFilter: false,
|
|
32
|
+
enableGlobalFilter: false,
|
|
33
|
+
enableHiding: false,
|
|
34
|
+
meta: {
|
|
35
|
+
alignColumn: 'center',
|
|
36
|
+
excludeFromExport: true,
|
|
37
|
+
columnWidth: '117px',
|
|
38
|
+
hideColumnFilter: true
|
|
39
|
+
},
|
|
40
|
+
cell: ({ row, table }) => renderComponent(ActionsColumn, {
|
|
41
|
+
actions: getActions(row),
|
|
42
|
+
isLastChild: table.getRowModel().rows.at(-1).index === row.index,
|
|
43
|
+
isOnlyOneRow: table.getRowModel().rows.length === 1
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import HeaderLogo from './Header/HeaderLogo.svelte';
|
|
|
14
14
|
import HighlightPanel from './HighlightPanel/HighlightPanel.svelte';
|
|
15
15
|
import Home from './Home/Home.svelte';
|
|
16
16
|
import Input from './Controls/Input/Input.svelte';
|
|
17
|
+
import Label from './Controls/Label/Label.svelte';
|
|
17
18
|
import Link from './Link/Link.svelte';
|
|
18
19
|
import Menu from './Menu/Menu.svelte';
|
|
19
20
|
import Modal from './Modal/Modal.svelte';
|
|
@@ -52,4 +53,4 @@ import type { Tab } from './Tabs/tabsState.svelte.js';
|
|
|
52
53
|
import type { Toast } from './Toast/toastState.svelte';
|
|
53
54
|
import type { WaffleItem } from './Waffle/waffleState.svelte.js';
|
|
54
55
|
import type { NotificationProps } from './Notification/notificationState.svelte.js';
|
|
55
|
-
export { Accordion, AttachFile, Avatar, Breadcrumbs, Button, Card, Chips, DeleteConfirmationModal, ErrorPage, Footer, Header, HeaderAccount, HeaderLoader, HeaderLogo, HighlightPanel, Home, Input, Link, Menu, Modal, Notification, Processing, ProgressPage, ProgressWizard, Search, Select, Sidebar, Spinner, Switcher, Tabs, TextArea, Toaster, Toggle, Tooltip, Waffle, addBreadcrumbsNameMap, addToast, getProgressWizardContext, setProgressWizardStepsContext, setStepValidity, getSubMenuItemsFromMenu, ChipType, ColumnType, ImageType, type BreadcrumbsNameMap, type HighlightPanelColumn, type HomeItem, type MainMenu, type MenuItem, type ModalProps, type ProgressWizardStep, type SelectOption, type SwitcherOption, type Tab, type Toast, type WaffleItem, type SubMenuItem, type NotificationProps };
|
|
56
|
+
export { Accordion, AttachFile, Avatar, Breadcrumbs, Button, Card, Chips, DeleteConfirmationModal, ErrorPage, Footer, Header, HeaderAccount, HeaderLoader, HeaderLogo, HighlightPanel, Home, Input, Label, Link, Menu, Modal, Notification, Processing, ProgressPage, ProgressWizard, Search, Select, Sidebar, Spinner, Switcher, Tabs, TextArea, Toaster, Toggle, Tooltip, Waffle, addBreadcrumbsNameMap, addToast, getProgressWizardContext, setProgressWizardStepsContext, setStepValidity, getSubMenuItemsFromMenu, ChipType, ColumnType, ImageType, type BreadcrumbsNameMap, type HighlightPanelColumn, type HomeItem, type MainMenu, type MenuItem, type ModalProps, type ProgressWizardStep, type SelectOption, type SwitcherOption, type Tab, type Toast, type WaffleItem, type SubMenuItem, type NotificationProps };
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ import HeaderLogo from './Header/HeaderLogo.svelte';
|
|
|
15
15
|
import HighlightPanel from './HighlightPanel/HighlightPanel.svelte';
|
|
16
16
|
import Home from './Home/Home.svelte';
|
|
17
17
|
import Input from './Controls/Input/Input.svelte';
|
|
18
|
+
import Label from './Controls/Label/Label.svelte';
|
|
18
19
|
import Link from './Link/Link.svelte';
|
|
19
20
|
import Menu from './Menu/Menu.svelte';
|
|
20
21
|
import Modal from './Modal/Modal.svelte';
|
|
@@ -44,7 +45,7 @@ import { addToast } from './Toast/toastState.svelte';
|
|
|
44
45
|
import { getSubMenuItemsFromMenu } from './Menu/MenuState.svelte';
|
|
45
46
|
export {
|
|
46
47
|
// Components
|
|
47
|
-
Accordion, AttachFile, Avatar, Breadcrumbs, Button, Card, Chips, DeleteConfirmationModal, ErrorPage, Footer, Header, HeaderAccount, HeaderLoader, HeaderLogo, HighlightPanel, Home, Input, Link, Menu, Modal, Notification, Processing, ProgressPage, ProgressWizard, Search, Select, Sidebar, Spinner, Switcher, Tabs, TextArea, Toaster, Toggle, Tooltip, Waffle,
|
|
48
|
+
Accordion, AttachFile, Avatar, Breadcrumbs, Button, Card, Chips, DeleteConfirmationModal, ErrorPage, Footer, Header, HeaderAccount, HeaderLoader, HeaderLogo, HighlightPanel, Home, Input, Label, Link, Menu, Modal, Notification, Processing, ProgressPage, ProgressWizard, Search, Select, Sidebar, Spinner, Switcher, Tabs, TextArea, Toaster, Toggle, Tooltip, Waffle,
|
|
48
49
|
// Functions and helpers
|
|
49
50
|
addBreadcrumbsNameMap, addToast, getProgressWizardContext, setProgressWizardStepsContext, setStepValidity, getSubMenuItemsFromMenu,
|
|
50
51
|
// Enums
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softwareone/spi-sv5-library",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"description": "Svelte components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"svelte",
|
|
@@ -42,10 +42,17 @@
|
|
|
42
42
|
"./form": {
|
|
43
43
|
"types": "./dist/Form/index.d.ts",
|
|
44
44
|
"svelte": "./dist/Form/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./table": {
|
|
47
|
+
"types": "./dist/Table/index.d.ts",
|
|
48
|
+
"svelte": "./dist/Table/index.js"
|
|
45
49
|
}
|
|
46
50
|
},
|
|
47
51
|
"peerDependencies": {
|
|
52
|
+
"@tanstack/table-core": "^8.21.3",
|
|
48
53
|
"adaptivecards": "^3.0.5",
|
|
54
|
+
"exceljs": "^4.4.0",
|
|
55
|
+
"file-saver": "^2.0.5",
|
|
49
56
|
"svelte": "^5.0.0",
|
|
50
57
|
"sveltekit-superforms": "^2.0.0",
|
|
51
58
|
"zod": "^4.0.0"
|
|
@@ -59,6 +66,15 @@
|
|
|
59
66
|
},
|
|
60
67
|
"adaptivecards": {
|
|
61
68
|
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"@tanstack/table-core": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"exceljs": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"file-saver": {
|
|
77
|
+
"optional": true
|
|
62
78
|
}
|
|
63
79
|
},
|
|
64
80
|
"devDependencies": {
|
|
@@ -67,7 +83,11 @@
|
|
|
67
83
|
"@sveltejs/kit": "^2.48.4",
|
|
68
84
|
"@sveltejs/package": "^2.5.4",
|
|
69
85
|
"@sveltejs/vite-plugin-svelte": "^6.2.1",
|
|
86
|
+
"@tanstack/table-core": "^8.21.3",
|
|
87
|
+
"@types/file-saver": "^2.0.7",
|
|
70
88
|
"adaptivecards": "^3.0.5",
|
|
89
|
+
"exceljs": "^4.4.0",
|
|
90
|
+
"file-saver": "^2.0.5",
|
|
71
91
|
"prettier": "^3.6.2",
|
|
72
92
|
"prettier-plugin-svelte": "^3.4.0",
|
|
73
93
|
"publint": "^0.3.15",
|
|
File without changes
|