@servicetitan/table 31.2.0 → 32.0.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/demo/column-hiding/index.js +1 -0
- package/dist/demo/column-hiding/index.js.map +1 -1
- package/dist/demo/column-hiding/product.js +7 -6
- package/dist/demo/column-hiding/product.js.map +1 -1
- package/dist/demo/column-hiding/products.js +12 -11
- package/dist/demo/column-hiding/products.js.map +1 -1
- package/dist/demo/column-hiding/table.js +126 -32
- package/dist/demo/column-hiding/table.js.map +1 -1
- package/dist/demo/column-hiding/table.store.js +30 -27
- package/dist/demo/column-hiding/table.store.js.map +1 -1
- package/dist/demo/filters/async-select-filter.js +59 -12
- package/dist/demo/filters/async-select-filter.js.map +1 -1
- package/dist/demo/filters/categories.js +20 -16
- package/dist/demo/filters/categories.js.map +1 -1
- package/dist/demo/filters/multiselect-filter.js +37 -5
- package/dist/demo/filters/multiselect-filter.js.map +1 -1
- package/dist/demo/filters/range-filter.js +104 -10
- package/dist/demo/filters/range-filter.js.map +1 -1
- package/dist/demo/filters/select-filter.js +139 -41
- package/dist/demo/filters/select-filter.js.map +1 -1
- package/dist/demo/filters/single-select-filter.js +109 -18
- package/dist/demo/filters/single-select-filter.js.map +1 -1
- package/dist/demo/filters/table.store.js +77 -86
- package/dist/demo/filters/table.store.js.map +1 -1
- package/dist/demo/footer-page-size/index.js +1 -0
- package/dist/demo/footer-page-size/index.js.map +1 -1
- package/dist/demo/footer-page-size/table.js +82 -6
- package/dist/demo/footer-page-size/table.js.map +1 -1
- package/dist/demo/index.js +1 -0
- package/dist/demo/index.js.map +1 -1
- package/dist/demo/master-detail/detail-table.js +41 -9
- package/dist/demo/master-detail/detail-table.js.map +1 -1
- package/dist/demo/master-detail/detail-table.store.js +60 -56
- package/dist/demo/master-detail/detail-table.store.js.map +1 -1
- package/dist/demo/master-detail/index.js +1 -0
- package/dist/demo/master-detail/index.js.map +1 -1
- package/dist/demo/master-detail/master-table.store.js +65 -61
- package/dist/demo/master-detail/master-table.store.js.map +1 -1
- package/dist/demo/master-detail/product-detail.js +2 -1
- package/dist/demo/master-detail/product-detail.js.map +1 -1
- package/dist/demo/master-detail/product-details.js +10 -9
- package/dist/demo/master-detail/product-details.js.map +1 -1
- package/dist/demo/master-detail/product.js +7 -6
- package/dist/demo/master-detail/product.js.map +1 -1
- package/dist/demo/master-detail/products.js +12 -11
- package/dist/demo/master-detail/products.js.map +1 -1
- package/dist/demo/master-detail/table-master-detail.js +39 -8
- package/dist/demo/master-detail/table-master-detail.js.map +1 -1
- package/dist/demo/overview/actions-cell.js +47 -10
- package/dist/demo/overview/actions-cell.js.map +1 -1
- package/dist/demo/overview/index.js +1 -0
- package/dist/demo/overview/index.js.map +1 -1
- package/dist/demo/overview/product.js +7 -6
- package/dist/demo/overview/product.js.map +1 -1
- package/dist/demo/overview/products.js +15 -14
- package/dist/demo/overview/products.js.map +1 -1
- package/dist/demo/overview/table.js +176 -21
- package/dist/demo/overview/table.js.map +1 -1
- package/dist/demo/overview/table.store.js +45 -51
- package/dist/demo/overview/table.store.js.map +1 -1
- package/dist/demo/row-details/index.js +1 -0
- package/dist/demo/row-details/index.js.map +1 -1
- package/dist/demo/row-details/row-details-table.js +52 -5
- package/dist/demo/row-details/row-details-table.js.map +1 -1
- package/dist/demo/row-details/row-details-table.store.js +27 -19
- package/dist/demo/row-details/row-details-table.store.js.map +1 -1
- package/dist/demo/state-caching/beverages.js +11 -10
- package/dist/demo/state-caching/beverages.js.map +1 -1
- package/dist/demo/state-caching/index.js +1 -0
- package/dist/demo/state-caching/index.js.map +1 -1
- package/dist/demo/state-caching/product.js +2 -1
- package/dist/demo/state-caching/product.js.map +1 -1
- package/dist/demo/state-caching/products.js +12 -11
- package/dist/demo/state-caching/products.js.map +1 -1
- package/dist/demo/state-caching/state-caching-table.js +44 -3
- package/dist/demo/state-caching/state-caching-table.js.map +1 -1
- package/dist/demo/state-caching/state-caching-table.store.js +42 -54
- package/dist/demo/state-caching/state-caching-table.store.js.map +1 -1
- package/dist/details/expand-column.js +31 -7
- package/dist/details/expand-column.js.map +1 -1
- package/dist/details/index.js +1 -0
- package/dist/details/index.js.map +1 -1
- package/dist/editable-cell/boolean-editable-cell.js +15 -4
- package/dist/editable-cell/boolean-editable-cell.js.map +1 -1
- package/dist/editable-cell/get-action-cell.js +14 -7
- package/dist/editable-cell/get-action-cell.js.map +1 -1
- package/dist/editable-cell/get-editable-cell.js +16 -8
- package/dist/editable-cell/get-editable-cell.js.map +1 -1
- package/dist/editable-cell/get-select-editable-cell.js +19 -5
- package/dist/editable-cell/get-select-editable-cell.js.map +1 -1
- package/dist/editable-cell/index.js +1 -0
- package/dist/editable-cell/index.js.map +1 -1
- package/dist/editable-cell/text-editable-cell.js +23 -5
- package/dist/editable-cell/text-editable-cell.js.map +1 -1
- package/dist/export/export.js +38 -1
- package/dist/export/export.js.map +1 -1
- package/dist/export/export.module.css.d.ts +3 -0
- package/dist/export/index.js +1 -0
- package/dist/export/index.js.map +1 -1
- package/dist/filters/async-select/async-select-filter.js +167 -132
- package/dist/filters/async-select/async-select-filter.js.map +1 -1
- package/dist/filters/column-menu-filters.js +39 -8
- package/dist/filters/column-menu-filters.js.map +1 -1
- package/dist/filters/datetime-filter/datetime-filter.js +73 -50
- package/dist/filters/datetime-filter/datetime-filter.js.map +1 -1
- package/dist/filters/field-values-filter.js +80 -72
- package/dist/filters/field-values-filter.js.map +1 -1
- package/dist/filters/index.js +1 -0
- package/dist/filters/index.js.map +1 -1
- package/dist/filters/multiselect-filter/multiselect-filter.js +77 -73
- package/dist/filters/multiselect-filter/multiselect-filter.js.map +1 -1
- package/dist/filters/numeric-filter-extended/numeric-extended-operators.js +10 -3
- package/dist/filters/numeric-filter-extended/numeric-extended-operators.js.map +1 -1
- package/dist/filters/numeric-filter-extended/numeric-filter-extended.js +39 -16
- package/dist/filters/numeric-filter-extended/numeric-filter-extended.js.map +1 -1
- package/dist/filters/range-filter/range-filter.js +76 -72
- package/dist/filters/range-filter/range-filter.js.map +1 -1
- package/dist/filters/select-filter/object-search.js +4 -3
- package/dist/filters/select-filter/object-search.js.map +1 -1
- package/dist/filters/select-filter/operators.js +6 -5
- package/dist/filters/select-filter/operators.js.map +1 -1
- package/dist/filters/select-filter/select-filter.js +180 -145
- package/dist/filters/select-filter/select-filter.js.map +1 -1
- package/dist/filters/select-filter/value-getter.js +2 -1
- package/dist/filters/select-filter/value-getter.js.map +1 -1
- package/dist/filters/single-select/single-select-filter.js +29 -15
- package/dist/filters/single-select/single-select-filter.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js +114 -67
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.module.css.d.ts +7 -0
- package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js +10 -3
- package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js +77 -55
- package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js +23 -10
- package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js.map +1 -1
- package/dist/filters/time-filter/time-filter.js +63 -49
- package/dist/filters/time-filter/time-filter.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/select-cell/index.js +1 -0
- package/dist/select-cell/index.js.map +1 -1
- package/dist/select-cell/select-cell.js +36 -11
- package/dist/select-cell/select-cell.js.map +1 -1
- package/dist/select-cell/select-cell.module.css.d.ts +3 -0
- package/dist/table-state.js +479 -660
- package/dist/table-state.js.map +1 -1
- package/dist/table.js +235 -250
- package/dist/table.js.map +1 -1
- package/dist/table.module.css.d.ts +5 -0
- package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js +97 -5
- package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js.map +1 -1
- package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js +71 -97
- package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js.map +1 -1
- package/dist/use-observing-table-state/index.js +1 -0
- package/dist/use-observing-table-state/index.js.map +1 -1
- package/dist/use-observing-table-state/use-observing-table-state.js +26 -20
- package/dist/use-observing-table-state/use-observing-table-state.js.map +1 -1
- package/dist/utils/filters.js +14 -9
- package/dist/utils/filters.js.map +1 -1
- package/dist/utils/use-td-props.js +3 -2
- package/dist/utils/use-td-props.js.map +1 -1
- package/package.json +13 -13
- package/dist/filters/async-select/async-select-filter.stories.js +0 -7
- package/dist/filters/async-select/async-select-filter.stories.js.map +0 -1
- package/dist/filters/multiselect-filter/multiselect-filter.stories.js +0 -7
- package/dist/filters/multiselect-filter/multiselect-filter.stories.js.map +0 -1
- package/dist/filters/range-filter/range-filter.stories.js +0 -9
- package/dist/filters/range-filter/range-filter.stories.js.map +0 -1
- package/dist/filters/select-filter/__tests__/object-search.test.js +0 -28
- package/dist/filters/select-filter/__tests__/object-search.test.js.map +0 -1
- package/dist/filters/select-filter/select-filter.stories.js +0 -8
- package/dist/filters/select-filter/select-filter.stories.js.map +0 -1
- package/dist/filters/single-select/single-select-filter.stories.js +0 -8
- package/dist/filters/single-select/single-select-filter.stories.js.map +0 -1
- package/dist/table.stories.js +0 -12
- package/dist/table.stories.js.map +0 -1
- package/dist/use-observing-table-state/use-observing-table-state.stories.js +0 -11
- package/dist/use-observing-table-state/use-observing-table-state.stories.js.map +0 -1
- package/dist/utils/__tests__/filters.test.js +0 -24
- package/dist/utils/__tests__/filters.test.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/master-detail/products.ts"],"sourcesContent":["import { Product, UserRole, Supplier } from './product';\n\nexport const products: Product[] = [\n {\n ProductID: 1,\n ProductName: 'Chai',\n Supplier: Supplier.Dan,\n CategoryID: 1,\n QuantityPerUnit: '10 boxes x 20 bags',\n UnitPrice: 18.0,\n UnitsInStock: 39,\n UnitsOnOrder: new Date('1/11/2019'),\n Discontinued: false,\n AvailableFor: UserRole.Admin,\n },\n {\n ProductID: 2,\n ProductName: 'Chang',\n Supplier: Supplier.Dan,\n CategoryID: 1,\n QuantityPerUnit: '24 - 12 oz bottles',\n UnitPrice: 19.0,\n UnitsInStock: 17,\n UnitsOnOrder: new Date('2/11/2019'),\n Discontinued: false,\n },\n {\n ProductID: 3,\n ProductName: 'Aniseed Syrup',\n Supplier: Supplier.Dan,\n CategoryID: 2,\n QuantityPerUnit: '12 - 550 ml bottles',\n UnitPrice: 10.0,\n UnitsInStock: 13,\n UnitsOnOrder: new Date('3/11/2019'),\n Discontinued: false,\n AvailableFor: UserRole.Owner,\n },\n {\n ProductID: 4,\n ProductName: \"Chef Anton's Cajun Seasoning\",\n Supplier: Supplier.Adam,\n CategoryID: 2,\n QuantityPerUnit: '48 - 6 oz jars',\n UnitPrice: 22.0,\n UnitsInStock: 53,\n UnitsOnOrder: new Date('4/11/2019'),\n Discontinued: false,\n },\n {\n ProductID: 5,\n ProductName: \"Chef Anton's Gumbo Mix\",\n Supplier: Supplier.Adam,\n CategoryID: 2,\n QuantityPerUnit: '36 boxes',\n UnitPrice: 21.35,\n UnitsInStock: 0,\n UnitsOnOrder: new Date('5/11/2019'),\n Discontinued: true,\n AvailableFor: UserRole.GeneralOffice,\n },\n {\n ProductID: 6,\n ProductName: \"Grandma's Boysenberry Spread\",\n Supplier: Supplier.Charlie,\n CategoryID: 2,\n QuantityPerUnit: '12 - 8 oz jars',\n UnitPrice: 25.0,\n UnitsInStock: 120,\n UnitsOnOrder: new Date('6/11/2019'),\n Discontinued: false,\n },\n {\n ProductID: 7,\n ProductName: \"Uncle Bob's Organic Dried Pears\",\n Supplier: Supplier.Charlie,\n CategoryID: 7,\n QuantityPerUnit: '12 - 1 lb pkgs.',\n UnitPrice: 30.0,\n UnitsInStock: 15,\n UnitsOnOrder: new Date('7/11/2019'),\n Discontinued: false,\n },\n {\n ProductID: 8,\n ProductName: 'Northwoods Cranberry Sauce',\n Supplier: Supplier.Charlie,\n CategoryID: 2,\n QuantityPerUnit: '12 - 12 oz jars',\n UnitPrice: 40.0,\n UnitsInStock: 6,\n UnitsOnOrder: new Date('8/11/2019'),\n Discontinued: false,\n },\n {\n ProductID: 9,\n ProductName: 'Mishi Kobe Niku',\n Supplier: Supplier.Benjamin,\n CategoryID: 6,\n QuantityPerUnit: '18 - 500 g pkgs.',\n UnitPrice: 97.0,\n UnitsInStock: 29,\n UnitsOnOrder: new Date('9/11/2019'),\n Discontinued: true,\n },\n {\n ProductID: 10,\n ProductName: 'Ikura',\n Supplier: Supplier.Benjamin,\n CategoryID: 8,\n QuantityPerUnit: '12 - 200 ml jars',\n UnitPrice: 31.0,\n UnitsInStock: 31,\n UnitsOnOrder: new Date('10/11/2019'),\n Discontinued: false,\n },\n];\n"],"names":["UserRole","Supplier","products","ProductID","ProductName","Dan","CategoryID","QuantityPerUnit","UnitPrice","UnitsInStock","UnitsOnOrder","Date","Discontinued","AvailableFor","Admin","Owner","Adam","GeneralOffice","Charlie","Benjamin"],"mappings":"AAAA,SAAkBA,QAAQ,EAAEC,QAAQ,QAAQ,YAAY;AAExD,OAAO,MAAMC,WAAsB;IAC/B;QACIC,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcb,SAASc,KAAK;IAChC;IACA;QACIX,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcb,SAASe,KAAK;IAChC;IACA;QACIZ,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASe,IAAI;QACvBV,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASe,IAAI;QACvBV,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcb,SAASiB,aAAa;IACxC;IACA;QACId,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASiB,OAAO;QAC1BZ,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASiB,OAAO;QAC1BZ,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASiB,OAAO;QAC1BZ,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASkB,QAAQ;QAC3Bb,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIT,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASkB,QAAQ;QAC3Bb,YAAY;QACZC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;CACH,CAAC"}
|
@@ -5,20 +5,51 @@ import { Button } from '@servicetitan/design-system';
|
|
5
5
|
import { Table, TableColumn } from '../..';
|
6
6
|
import { MasterTableStore } from './master-table.store';
|
7
7
|
import { DetailTable } from './detail-table';
|
8
|
-
const ExpandCell = ({ tableState, dataItem, tdProps })
|
9
|
-
const handleExpandChange = ()
|
8
|
+
const ExpandCell = ({ tableState, dataItem, tdProps })=>{
|
9
|
+
const handleExpandChange = ()=>{
|
10
10
|
tableState.handleExpandChange({
|
11
11
|
dataItem,
|
12
|
-
value: !dataItem.expanded
|
12
|
+
value: !dataItem.expanded
|
13
13
|
});
|
14
14
|
};
|
15
|
-
return
|
15
|
+
return /*#__PURE__*/ _jsx("td", {
|
16
|
+
...tdProps,
|
17
|
+
children: /*#__PURE__*/ _jsx(Button, {
|
18
|
+
full: true,
|
19
|
+
text: true,
|
20
|
+
primary: true,
|
21
|
+
onClick: handleExpandChange,
|
22
|
+
children: "Show / Hide"
|
23
|
+
})
|
24
|
+
});
|
16
25
|
};
|
17
26
|
export const TableMasterDetailExample = provide({
|
18
|
-
singletons: [
|
19
|
-
|
27
|
+
singletons: [
|
28
|
+
MasterTableStore
|
29
|
+
]
|
30
|
+
})(()=>{
|
20
31
|
const [store] = useDependencies(MasterTableStore);
|
21
|
-
useEffect(()
|
22
|
-
return
|
32
|
+
useEffect(()=>()=>store.dispose());
|
33
|
+
return /*#__PURE__*/ _jsxs(Table, {
|
34
|
+
tableState: store.tableState,
|
35
|
+
selectable: true,
|
36
|
+
detail: DetailTable,
|
37
|
+
children: [
|
38
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
39
|
+
field: "ProductID",
|
40
|
+
title: "ID",
|
41
|
+
width: "100px"
|
42
|
+
}),
|
43
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
44
|
+
field: "ProductName",
|
45
|
+
title: "Product Name"
|
46
|
+
}),
|
47
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
48
|
+
cell: ExpandCell,
|
49
|
+
width: "150px"
|
50
|
+
})
|
51
|
+
]
|
52
|
+
});
|
23
53
|
});
|
54
|
+
|
24
55
|
//# sourceMappingURL=table-master-detail.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/master-detail/table-master-detail.tsx"],"sourcesContent":["import { useEffect, FC } from 'react';\n\nimport { provide, useDependencies } from '@servicetitan/react-ioc';\n\nimport { Button } from '@servicetitan/design-system';\n\nimport { Table, TableColumn, TableCellProps, TableExpandChangeEvent } from '../..';\n\nimport { MasterTableStore } from './master-table.store';\n\nimport { DetailTable } from './detail-table';\n\nconst ExpandCell: FC<TableCellProps> = ({ tableState, dataItem, tdProps }) => {\n const handleExpandChange = () => {\n tableState!.handleExpandChange({\n dataItem,\n value: !dataItem.expanded,\n } as TableExpandChangeEvent);\n };\n\n return (\n <td {...tdProps}>\n <Button full text primary onClick={handleExpandChange}>\n Show / Hide\n </Button>\n </td>\n );\n};\n\nexport const TableMasterDetailExample: FC = provide({\n singletons: [MasterTableStore],\n})(() => {\n const [store] = useDependencies(MasterTableStore);\n\n useEffect(() => () => store.dispose());\n\n return (\n <Table tableState={store.tableState} selectable detail={DetailTable}>\n <TableColumn field=\"ProductID\" title=\"ID\" width=\"100px\" />\n\n <TableColumn field=\"ProductName\" title=\"Product Name\" />\n\n <TableColumn cell={ExpandCell} width=\"150px\" />\n </Table>\n );\n});\n"],"names":["useEffect","provide","useDependencies","Button","Table","TableColumn","MasterTableStore","DetailTable","ExpandCell","tableState","dataItem","tdProps","handleExpandChange","value","expanded","td","full","text","primary","onClick","TableMasterDetailExample","singletons","store","dispose","selectable","detail","field","title","width","cell"],"mappings":";AAAA,SAASA,SAAS,QAAY,QAAQ;AAEtC,SAASC,OAAO,EAAEC,eAAe,QAAQ,0BAA0B;AAEnE,SAASC,MAAM,QAAQ,8BAA8B;AAErD,SAASC,KAAK,EAAEC,WAAW,QAAgD,QAAQ;AAEnF,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,MAAMC,aAAiC,CAAC,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE;IACrE,MAAMC,qBAAqB;QACvBH,WAAYG,kBAAkB,CAAC;YAC3BF;YACAG,OAAO,CAACH,SAASI,QAAQ;QAC7B;IACJ;IAEA,qBACI,KAACC;QAAI,GAAGJ,OAAO;kBACX,cAAA,KAACR;YAAOa,IAAI;YAACC,IAAI;YAACC,OAAO;YAACC,SAASP;sBAAoB;;;AAKnE;AAEA,OAAO,MAAMQ,2BAA+BnB,QAAQ;IAChDoB,YAAY;QAACf;KAAiB;AAClC,GAAG;IACC,MAAM,CAACgB,MAAM,GAAGpB,gBAAgBI;IAEhCN,UAAU,IAAM,IAAMsB,MAAMC,OAAO;IAEnC,qBACI,MAACnB;QAAMK,YAAYa,MAAMb,UAAU;QAAEe,UAAU;QAACC,QAAQlB;;0BACpD,KAACF;gBAAYqB,OAAM;gBAAYC,OAAM;gBAAKC,OAAM;;0BAEhD,KAACvB;gBAAYqB,OAAM;gBAAcC,OAAM;;0BAEvC,KAACtB;gBAAYwB,MAAMrB;gBAAYoB,OAAM;;;;AAGjD,GAAG"}
|
@@ -1,29 +1,66 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { Button, Icon, Stack } from '@servicetitan/design-system';
|
3
3
|
import { getActionCell } from '../..';
|
4
|
-
const ViewAction = ({ tableState, dataItem, tdProps })
|
4
|
+
const ViewAction = ({ tableState, dataItem, tdProps })=>{
|
5
5
|
if (!tableState) {
|
6
|
-
return _jsx("td", {
|
6
|
+
return /*#__PURE__*/ _jsx("td", {
|
7
|
+
...tdProps
|
8
|
+
});
|
7
9
|
}
|
8
|
-
const edit = ()
|
9
|
-
return
|
10
|
+
const edit = ()=>tableState.edit(dataItem);
|
11
|
+
return /*#__PURE__*/ _jsx("td", {
|
12
|
+
...tdProps,
|
13
|
+
children: /*#__PURE__*/ _jsx(Button, {
|
14
|
+
text: true,
|
15
|
+
primary: true,
|
16
|
+
onClick: edit,
|
17
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
18
|
+
name: "edit"
|
19
|
+
})
|
20
|
+
})
|
21
|
+
});
|
10
22
|
};
|
11
|
-
const EditAction = ({ tableState, formState, dataItem, tdProps })
|
23
|
+
const EditAction = ({ tableState, formState, dataItem, tdProps })=>{
|
12
24
|
if (!tableState) {
|
13
|
-
return _jsx("td", {
|
25
|
+
return /*#__PURE__*/ _jsx("td", {
|
26
|
+
...tdProps
|
27
|
+
});
|
14
28
|
}
|
15
|
-
const save = async ()
|
29
|
+
const save = async ()=>{
|
16
30
|
const { hasError } = await formState.validate();
|
17
31
|
if (hasError) {
|
18
32
|
return;
|
19
33
|
}
|
20
34
|
await tableState.saveEdit(dataItem);
|
21
35
|
};
|
22
|
-
const cancel = ()
|
23
|
-
return
|
36
|
+
const cancel = ()=>tableState.cancelEdit(dataItem);
|
37
|
+
return /*#__PURE__*/ _jsx("td", {
|
38
|
+
...tdProps,
|
39
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
40
|
+
justifyContent: "space-between",
|
41
|
+
children: [
|
42
|
+
/*#__PURE__*/ _jsx(Button, {
|
43
|
+
text: true,
|
44
|
+
onClick: cancel,
|
45
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
46
|
+
name: "do_not_disturb"
|
47
|
+
})
|
48
|
+
}),
|
49
|
+
/*#__PURE__*/ _jsx(Button, {
|
50
|
+
text: true,
|
51
|
+
primary: true,
|
52
|
+
onClick: save,
|
53
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
54
|
+
name: "done"
|
55
|
+
})
|
56
|
+
})
|
57
|
+
]
|
58
|
+
})
|
59
|
+
});
|
24
60
|
};
|
25
61
|
export const ActionsCell = getActionCell({
|
26
62
|
view: ViewAction,
|
27
|
-
edit: EditAction
|
63
|
+
edit: EditAction
|
28
64
|
});
|
65
|
+
|
29
66
|
//# sourceMappingURL=actions-cell.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/overview/actions-cell.tsx"],"sourcesContent":["import { FC } from 'react';\n\nimport { Button, Icon, Stack } from '@servicetitan/design-system';\n\nimport { TableCellProps, getActionCell, EditActionProps } from '../..';\n\nimport { Product } from './product';\n\nconst ViewAction: FC<TableCellProps<Product>> = ({ tableState, dataItem, tdProps }) => {\n if (!tableState) {\n return <td {...tdProps} />;\n }\n\n const edit = () => tableState.edit(dataItem);\n\n return (\n <td {...tdProps}>\n <Button text primary onClick={edit}>\n <Icon name=\"edit\" />\n </Button>\n </td>\n );\n};\n\nconst EditAction: FC<EditActionProps<Product>> = ({ tableState, formState, dataItem, tdProps }) => {\n if (!tableState) {\n return <td {...tdProps} />;\n }\n\n const save = async () => {\n const { hasError } = await formState.validate();\n if (hasError) {\n return;\n }\n\n await tableState.saveEdit(dataItem);\n };\n\n const cancel = () => tableState.cancelEdit(dataItem);\n\n return (\n <td {...tdProps}>\n <Stack justifyContent=\"space-between\">\n <Button text onClick={cancel}>\n <Icon name=\"do_not_disturb\" />\n </Button>\n\n <Button text primary onClick={save}>\n <Icon name=\"done\" />\n </Button>\n </Stack>\n </td>\n );\n};\n\nexport const ActionsCell = getActionCell({\n view: ViewAction,\n edit: EditAction,\n});\n"],"names":["Button","Icon","Stack","getActionCell","ViewAction","tableState","dataItem","tdProps","td","edit","text","primary","onClick","name","EditAction","formState","save","hasError","validate","saveEdit","cancel","cancelEdit","justifyContent","ActionsCell","view"],"mappings":";AAEA,SAASA,MAAM,EAAEC,IAAI,EAAEC,KAAK,QAAQ,8BAA8B;AAElE,SAAyBC,aAAa,QAAyB,QAAQ;AAIvE,MAAMC,aAA0C,CAAC,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE;IAC9E,IAAI,CAACF,YAAY;QACb,qBAAO,KAACG;YAAI,GAAGD,OAAO;;IAC1B;IAEA,MAAME,OAAO,IAAMJ,WAAWI,IAAI,CAACH;IAEnC,qBACI,KAACE;QAAI,GAAGD,OAAO;kBACX,cAAA,KAACP;YAAOU,IAAI;YAACC,OAAO;YAACC,SAASH;sBAC1B,cAAA,KAACR;gBAAKY,MAAK;;;;AAI3B;AAEA,MAAMC,aAA2C,CAAC,EAAET,UAAU,EAAEU,SAAS,EAAET,QAAQ,EAAEC,OAAO,EAAE;IAC1F,IAAI,CAACF,YAAY;QACb,qBAAO,KAACG;YAAI,GAAGD,OAAO;;IAC1B;IAEA,MAAMS,OAAO;QACT,MAAM,EAAEC,QAAQ,EAAE,GAAG,MAAMF,UAAUG,QAAQ;QAC7C,IAAID,UAAU;YACV;QACJ;QAEA,MAAMZ,WAAWc,QAAQ,CAACb;IAC9B;IAEA,MAAMc,SAAS,IAAMf,WAAWgB,UAAU,CAACf;IAE3C,qBACI,KAACE;QAAI,GAAGD,OAAO;kBACX,cAAA,MAACL;YAAMoB,gBAAe;;8BAClB,KAACtB;oBAAOU,IAAI;oBAACE,SAASQ;8BAClB,cAAA,KAACnB;wBAAKY,MAAK;;;8BAGf,KAACb;oBAAOU,IAAI;oBAACC,OAAO;oBAACC,SAASI;8BAC1B,cAAA,KAACf;wBAAKY,MAAK;;;;;;AAK/B;AAEA,OAAO,MAAMU,cAAcpB,cAAc;IACrCqB,MAAMpB;IACNK,MAAMK;AACV,GAAG"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/overview/index.ts"],"sourcesContent":["export * from './table';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU"}
|
@@ -1,16 +1,17 @@
|
|
1
|
-
export var UserRole
|
2
|
-
(function (UserRole) {
|
1
|
+
export var UserRole = /*#__PURE__*/ function(UserRole) {
|
3
2
|
UserRole[UserRole["Unspecified"] = 0] = "Unspecified";
|
4
3
|
UserRole[UserRole["Technician"] = 1] = "Technician";
|
5
4
|
UserRole[UserRole["GeneralOffice"] = 2] = "GeneralOffice";
|
6
5
|
UserRole[UserRole["Admin"] = 3] = "Admin";
|
7
6
|
UserRole[UserRole["Owner"] = 4] = "Owner";
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
return UserRole;
|
8
|
+
}({});
|
9
|
+
export var Supplier = /*#__PURE__*/ function(Supplier) {
|
11
10
|
Supplier[Supplier["Dan"] = 1] = "Dan";
|
12
11
|
Supplier[Supplier["Adam"] = 2] = "Adam";
|
13
12
|
Supplier[Supplier["Charlie"] = 3] = "Charlie";
|
14
13
|
Supplier[Supplier["Benjamin"] = 4] = "Benjamin";
|
15
|
-
|
14
|
+
return Supplier;
|
15
|
+
}({});
|
16
|
+
|
16
17
|
//# sourceMappingURL=product.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/overview/product.ts"],"sourcesContent":["export enum UserRole {\n Unspecified,\n Technician,\n GeneralOffice,\n Admin,\n Owner,\n}\n\nexport enum Supplier {\n Dan = 1,\n Adam,\n Charlie,\n Benjamin,\n}\n\nexport interface ProductPackage {\n PackageId: number;\n PackageName: string;\n}\n\nexport interface Product {\n ProductID: number;\n ProductName: string;\n Supplier: Supplier;\n CategoryID: number;\n MadeIn: string;\n QuantityPerUnit: string;\n UnitPrice: number;\n UnitsInStock: number;\n UnitsOnOrder: Date;\n Discontinued: boolean;\n AvailableFor?: UserRole;\n Package?: ProductPackage;\n}\n"],"names":["UserRole","Supplier"],"mappings":"AAAA,OAAO,IAAA,AAAKA,kCAAAA;;;;;;WAAAA;MAMX;AAED,OAAO,IAAA,AAAKC,kCAAAA;;;;;WAAAA;MAKX"}
|
@@ -14,8 +14,8 @@ export const products = [
|
|
14
14
|
AvailableFor: UserRole.Admin,
|
15
15
|
Package: {
|
16
16
|
PackageId: 1,
|
17
|
-
PackageName: 'Standard package'
|
18
|
-
}
|
17
|
+
PackageName: 'Standard package'
|
18
|
+
}
|
19
19
|
},
|
20
20
|
{
|
21
21
|
ProductID: 2,
|
@@ -30,8 +30,8 @@ export const products = [
|
|
30
30
|
Discontinued: false,
|
31
31
|
Package: {
|
32
32
|
PackageId: 1,
|
33
|
-
PackageName: 'Standard package'
|
34
|
-
}
|
33
|
+
PackageName: 'Standard package'
|
34
|
+
}
|
35
35
|
},
|
36
36
|
{
|
37
37
|
ProductID: 3,
|
@@ -44,7 +44,7 @@ export const products = [
|
|
44
44
|
UnitsInStock: 13,
|
45
45
|
UnitsOnOrder: new Date('3/11/2023'),
|
46
46
|
Discontinued: false,
|
47
|
-
AvailableFor: UserRole.Owner
|
47
|
+
AvailableFor: UserRole.Owner
|
48
48
|
},
|
49
49
|
{
|
50
50
|
ProductID: 4,
|
@@ -56,7 +56,7 @@ export const products = [
|
|
56
56
|
UnitPrice: 22.0,
|
57
57
|
UnitsInStock: 53,
|
58
58
|
UnitsOnOrder: new Date('4/11/2023'),
|
59
|
-
Discontinued: false
|
59
|
+
Discontinued: false
|
60
60
|
},
|
61
61
|
{
|
62
62
|
ProductID: 5,
|
@@ -72,8 +72,8 @@ export const products = [
|
|
72
72
|
AvailableFor: UserRole.GeneralOffice,
|
73
73
|
Package: {
|
74
74
|
PackageId: 2,
|
75
|
-
PackageName: 'Extended package'
|
76
|
-
}
|
75
|
+
PackageName: 'Extended package'
|
76
|
+
}
|
77
77
|
},
|
78
78
|
{
|
79
79
|
ProductID: 6,
|
@@ -85,7 +85,7 @@ export const products = [
|
|
85
85
|
UnitPrice: 25.0,
|
86
86
|
UnitsInStock: 120,
|
87
87
|
UnitsOnOrder: new Date('6/11/2023'),
|
88
|
-
Discontinued: false
|
88
|
+
Discontinued: false
|
89
89
|
},
|
90
90
|
{
|
91
91
|
ProductID: 7,
|
@@ -97,7 +97,7 @@ export const products = [
|
|
97
97
|
UnitPrice: 30.0,
|
98
98
|
UnitsInStock: 15,
|
99
99
|
UnitsOnOrder: new Date('7/11/2023'),
|
100
|
-
Discontinued: false
|
100
|
+
Discontinued: false
|
101
101
|
},
|
102
102
|
{
|
103
103
|
ProductID: 8,
|
@@ -109,7 +109,7 @@ export const products = [
|
|
109
109
|
UnitPrice: 40.0,
|
110
110
|
UnitsInStock: 6,
|
111
111
|
UnitsOnOrder: new Date('8/11/2023'),
|
112
|
-
Discontinued: false
|
112
|
+
Discontinued: false
|
113
113
|
},
|
114
114
|
{
|
115
115
|
ProductID: 9,
|
@@ -121,7 +121,7 @@ export const products = [
|
|
121
121
|
UnitPrice: 97.0,
|
122
122
|
UnitsInStock: 29,
|
123
123
|
UnitsOnOrder: new Date('9/11/2023'),
|
124
|
-
Discontinued: true
|
124
|
+
Discontinued: true
|
125
125
|
},
|
126
126
|
{
|
127
127
|
ProductID: 10,
|
@@ -133,7 +133,8 @@ export const products = [
|
|
133
133
|
UnitPrice: 31.0,
|
134
134
|
UnitsInStock: 31,
|
135
135
|
UnitsOnOrder: new Date('10/11/2023'),
|
136
|
-
Discontinued: false
|
137
|
-
}
|
136
|
+
Discontinued: false
|
137
|
+
}
|
138
138
|
];
|
139
|
+
|
139
140
|
//# sourceMappingURL=products.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/overview/products.ts"],"sourcesContent":["import { Product, UserRole, Supplier } from './product';\n\nexport const products: Product[] = [\n {\n ProductID: 1,\n ProductName: 'Chai',\n Supplier: Supplier.Dan,\n CategoryID: 1,\n MadeIn: 'China',\n QuantityPerUnit: '10 boxes x 20 bags',\n UnitPrice: 18.0,\n UnitsInStock: 39,\n UnitsOnOrder: new Date('1/11/2023'),\n Discontinued: false,\n AvailableFor: UserRole.Admin,\n Package: {\n PackageId: 1,\n PackageName: 'Standard package',\n },\n },\n {\n ProductID: 2,\n ProductName: 'Chang',\n Supplier: Supplier.Dan,\n CategoryID: 1,\n MadeIn: 'Thailand',\n QuantityPerUnit: '24 - 12 oz bottles',\n UnitPrice: 19.0,\n UnitsInStock: 17,\n UnitsOnOrder: new Date('2/11/2023'),\n Discontinued: false,\n Package: {\n PackageId: 1,\n PackageName: 'Standard package',\n },\n },\n {\n ProductID: 3,\n ProductName: 'Aniseed Syrup',\n Supplier: Supplier.Dan,\n CategoryID: 2,\n MadeIn: 'France',\n QuantityPerUnit: '12 - 550 ml bottles',\n UnitPrice: 10.0,\n UnitsInStock: 13,\n UnitsOnOrder: new Date('3/11/2023'),\n Discontinued: false,\n AvailableFor: UserRole.Owner,\n },\n {\n ProductID: 4,\n ProductName: \"Chef Anton's Cajun Seasoning\",\n Supplier: Supplier.Adam,\n CategoryID: 2,\n MadeIn: 'USA',\n QuantityPerUnit: '48 - 6 oz jars',\n UnitPrice: 22.0,\n UnitsInStock: 53,\n UnitsOnOrder: new Date('4/11/2023'),\n Discontinued: false,\n },\n {\n ProductID: 5,\n ProductName: \"Chef Anton's Gumbo Mix\",\n Supplier: Supplier.Adam,\n CategoryID: 2,\n MadeIn: 'USA',\n QuantityPerUnit: '36 boxes',\n UnitPrice: 21.35,\n UnitsInStock: 0,\n UnitsOnOrder: new Date('5/11/2023'),\n Discontinued: true,\n AvailableFor: UserRole.GeneralOffice,\n Package: {\n PackageId: 2,\n PackageName: 'Extended package',\n },\n },\n {\n ProductID: 6,\n ProductName: \"Grandma's Boysenberry Spread\",\n Supplier: Supplier.Charlie,\n CategoryID: 2,\n MadeIn: 'Norway',\n QuantityPerUnit: '12 - 8 oz jars',\n UnitPrice: 25.0,\n UnitsInStock: 120,\n UnitsOnOrder: new Date('6/11/2023'),\n Discontinued: false,\n },\n {\n ProductID: 7,\n ProductName: \"Uncle Bob's Organic Dried Pears\",\n Supplier: Supplier.Charlie,\n CategoryID: 7,\n MadeIn: 'USA',\n QuantityPerUnit: '12 - 1 lb pkgs.',\n UnitPrice: 30.0,\n UnitsInStock: 15,\n UnitsOnOrder: new Date('7/11/2023'),\n Discontinued: false,\n },\n {\n ProductID: 8,\n ProductName: 'Northwoods Cranberry Sauce',\n Supplier: Supplier.Charlie,\n CategoryID: 2,\n MadeIn: 'Norway',\n QuantityPerUnit: '12 - 12 oz jars',\n UnitPrice: 40.0,\n UnitsInStock: 6,\n UnitsOnOrder: new Date('8/11/2023'),\n Discontinued: false,\n },\n {\n ProductID: 9,\n ProductName: 'Mishi Kobe Niku',\n Supplier: Supplier.Benjamin,\n CategoryID: 6,\n MadeIn: 'Japan',\n QuantityPerUnit: '18 - 500 g pkgs.',\n UnitPrice: 97.0,\n UnitsInStock: 29,\n UnitsOnOrder: new Date('9/11/2023'),\n Discontinued: true,\n },\n {\n ProductID: 10,\n ProductName: 'Ikura',\n Supplier: Supplier.Benjamin,\n CategoryID: 8,\n MadeIn: 'Japan',\n QuantityPerUnit: '12 - 200 ml jars',\n UnitPrice: 31.0,\n UnitsInStock: 31,\n UnitsOnOrder: new Date('10/11/2023'),\n Discontinued: false,\n },\n];\n"],"names":["UserRole","Supplier","products","ProductID","ProductName","Dan","CategoryID","MadeIn","QuantityPerUnit","UnitPrice","UnitsInStock","UnitsOnOrder","Date","Discontinued","AvailableFor","Admin","Package","PackageId","PackageName","Owner","Adam","GeneralOffice","Charlie","Benjamin"],"mappings":"AAAA,SAAkBA,QAAQ,EAAEC,QAAQ,QAAQ,YAAY;AAExD,OAAO,MAAMC,WAAsB;IAC/B;QACIC,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcd,SAASe,KAAK;QAC5BC,SAAS;YACLC,WAAW;YACXC,aAAa;QACjB;IACJ;IACA;QACIf,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdG,SAAS;YACLC,WAAW;YACXC,aAAa;QACjB;IACJ;IACA;QACIf,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASI,GAAG;QACtBC,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcd,SAASmB,KAAK;IAChC;IACA;QACIhB,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASmB,IAAI;QACvBd,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIV,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASmB,IAAI;QACvBd,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;QACdC,cAAcd,SAASqB,aAAa;QACpCL,SAAS;YACLC,WAAW;YACXC,aAAa;QACjB;IACJ;IACA;QACIf,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASqB,OAAO;QAC1BhB,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIV,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASqB,OAAO;QAC1BhB,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIV,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASqB,OAAO;QAC1BhB,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIV,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASsB,QAAQ;QAC3BjB,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;IACA;QACIV,WAAW;QACXC,aAAa;QACbH,UAAUA,SAASsB,QAAQ;QAC3BjB,YAAY;QACZC,QAAQ;QACRC,iBAAiB;QACjBC,WAAW;QACXC,cAAc;QACdC,cAAc,IAAIC,KAAK;QACvBC,cAAc;IAClB;CACH,CAAC"}
|
@@ -3,54 +3,209 @@ import { useMemo, cloneElement, Fragment } from 'react';
|
|
3
3
|
import { provide, useDependencies } from '@servicetitan/react-ioc';
|
4
4
|
import { observer } from 'mobx-react';
|
5
5
|
import { Stack, ButtonGroup, Button, Tag, DatePicker } from '@servicetitan/design-system';
|
6
|
-
import { Table, TableColumn, TableCell, TextEditableCell, BooleanEditableCell, getSelectEditableCell, DateRangeColumnMenuFilter, StandardColumnMenuFilter, standardFilterWithMultiselect, multiSelectColumnMenuFilter, CurrencyRangeColumnMenuFilter, getEditableCell
|
6
|
+
import { Table, TableColumn, TableCell, TextEditableCell, BooleanEditableCell, getSelectEditableCell, DateRangeColumnMenuFilter, StandardColumnMenuFilter, standardFilterWithMultiselect, multiSelectColumnMenuFilter, CurrencyRangeColumnMenuFilter, getEditableCell } from '../..';
|
7
7
|
import { Export } from '../../export';
|
8
8
|
import { TableStore } from './table.store';
|
9
9
|
import { ActionsCell } from './actions-cell';
|
10
10
|
import { NumberInput, enumToOptions, getEnumKeys } from '@servicetitan/form';
|
11
11
|
import { UserRole, Supplier } from './product';
|
12
|
-
const UserRoleColumnMenuFilter = multiSelectColumnMenuFilter(getEnumKeys(UserRole), userRole
|
12
|
+
const UserRoleColumnMenuFilter = multiSelectColumnMenuFilter(getEnumKeys(UserRole), (userRole)=>/*#__PURE__*/ _jsx(Tag, {
|
13
|
+
compact: true,
|
14
|
+
color: UserRole[userRole] === UserRole.Owner ? 'success' : 'default',
|
15
|
+
children: userRole
|
16
|
+
}));
|
13
17
|
const AvailableForEditableCell = getSelectEditableCell({
|
14
18
|
options: enumToOptions(UserRole),
|
15
|
-
viewer: ({ dataItem, field, tdProps })
|
19
|
+
viewer: ({ dataItem, field, tdProps })=>{
|
16
20
|
const value = dataItem[field];
|
17
|
-
return _jsx("td", {
|
18
|
-
|
21
|
+
return /*#__PURE__*/ _jsx("td", {
|
22
|
+
...tdProps,
|
23
|
+
children: value && UserRole[value]
|
24
|
+
});
|
25
|
+
}
|
19
26
|
});
|
20
|
-
const SupplierCell = props
|
27
|
+
const SupplierCell = (props)=>{
|
21
28
|
const { field, dataItem, rowType, tdProps } = props;
|
22
29
|
if (rowType !== 'data') {
|
23
|
-
return _jsx(TableCell, {
|
30
|
+
return /*#__PURE__*/ _jsx(TableCell, {
|
31
|
+
...props
|
32
|
+
});
|
24
33
|
}
|
25
|
-
return _jsx("td", {
|
34
|
+
return /*#__PURE__*/ _jsx("td", {
|
35
|
+
...tdProps,
|
36
|
+
children: Supplier[dataItem[field]]
|
37
|
+
});
|
26
38
|
};
|
27
39
|
// Implementation of a date editable cell utilizing getEditableCell
|
28
|
-
const DateEditor = observer(({ fieldState: { value, onChange, hasError }, className, tdProps })
|
29
|
-
return
|
40
|
+
const DateEditor = observer(({ fieldState: { value, onChange, hasError }, className, tdProps })=>{
|
41
|
+
return /*#__PURE__*/ _jsx("td", {
|
42
|
+
className: className,
|
43
|
+
...tdProps,
|
44
|
+
children: /*#__PURE__*/ _jsx(DatePicker, {
|
45
|
+
value: value,
|
46
|
+
onChange: onChange,
|
47
|
+
error: hasError
|
48
|
+
})
|
49
|
+
});
|
30
50
|
});
|
31
51
|
export const DateEditableCell = getEditableCell({
|
32
|
-
editor: DateEditor
|
52
|
+
editor: DateEditor
|
33
53
|
});
|
34
54
|
// Implementation of a numeric editable cell utilizing getEditableCell
|
35
|
-
const NumberCellEditor = observer(({ fieldState: { value, hasError, onChange }, tdProps })
|
55
|
+
const NumberCellEditor = observer(({ fieldState: { value, hasError, onChange }, tdProps })=>/*#__PURE__*/ _jsx("td", {
|
56
|
+
...tdProps,
|
57
|
+
children: /*#__PURE__*/ _jsx(NumberInput, {
|
58
|
+
onChange: onChange,
|
59
|
+
type: "number",
|
60
|
+
error: hasError,
|
61
|
+
value: value,
|
62
|
+
emptyValue: 0,
|
63
|
+
min: 0,
|
64
|
+
max: 1000,
|
65
|
+
useEmptyThousandsSeparator: true,
|
66
|
+
fluid: true,
|
67
|
+
decimalPlaces: 2,
|
68
|
+
useKeyboardNavigation: true
|
69
|
+
})
|
70
|
+
}));
|
36
71
|
const NumericEditableCell = getEditableCell({
|
37
|
-
editor: getEditableCell({
|
72
|
+
editor: getEditableCell({
|
73
|
+
editor: NumberCellEditor
|
74
|
+
})
|
38
75
|
});
|
39
76
|
export const TableExample = provide({
|
40
|
-
singletons: [
|
41
|
-
|
77
|
+
singletons: [
|
78
|
+
TableStore
|
79
|
+
]
|
80
|
+
})(observer(()=>{
|
42
81
|
const [{ tableState, inEdit, editAll, cancelAll, saveAll }] = useDependencies(TableStore);
|
43
|
-
const madeInColumnMenu = useMemo(()
|
44
|
-
|
82
|
+
const madeInColumnMenu = useMemo(()=>standardFilterWithMultiselect({
|
83
|
+
tableState
|
84
|
+
}), [
|
85
|
+
tableState
|
86
|
+
]);
|
87
|
+
const cellRender = (td, { dataItem, field })=>{
|
45
88
|
if (!td) {
|
46
89
|
return null;
|
47
90
|
}
|
48
|
-
return cloneElement(td, {
|
49
|
-
onClick: ()
|
91
|
+
return /*#__PURE__*/ cloneElement(td, {
|
92
|
+
onClick: ()=>{
|
50
93
|
tableState.edit(dataItem, field);
|
51
|
-
}
|
94
|
+
}
|
52
95
|
});
|
53
96
|
};
|
54
|
-
return
|
97
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
98
|
+
children: [
|
99
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
100
|
+
justifyContent: "space-between",
|
101
|
+
alignContent: "center",
|
102
|
+
className: "m-b-2",
|
103
|
+
children: [
|
104
|
+
/*#__PURE__*/ _jsx(Export, {
|
105
|
+
totalCount: tableState.totalCount,
|
106
|
+
exportPdf: tableState.exportPdf,
|
107
|
+
exportExcel: tableState.exportExcel
|
108
|
+
}),
|
109
|
+
inEdit ? /*#__PURE__*/ _jsxs(ButtonGroup, {
|
110
|
+
children: [
|
111
|
+
/*#__PURE__*/ _jsx(Button, {
|
112
|
+
small: true,
|
113
|
+
onClick: cancelAll,
|
114
|
+
className: "m-r-2",
|
115
|
+
children: "Cancel All"
|
116
|
+
}),
|
117
|
+
/*#__PURE__*/ _jsx(Button, {
|
118
|
+
small: true,
|
119
|
+
primary: true,
|
120
|
+
onClick: saveAll,
|
121
|
+
children: "Save All"
|
122
|
+
})
|
123
|
+
]
|
124
|
+
}) : /*#__PURE__*/ _jsx(Button, {
|
125
|
+
small: true,
|
126
|
+
primary: true,
|
127
|
+
onClick: editAll,
|
128
|
+
children: "Edit All"
|
129
|
+
})
|
130
|
+
]
|
131
|
+
}),
|
132
|
+
/*#__PURE__*/ _jsxs(Table, {
|
133
|
+
tableState: tableState,
|
134
|
+
striped: false,
|
135
|
+
selectable: true,
|
136
|
+
groupable: true,
|
137
|
+
sortable: true,
|
138
|
+
exportable: true,
|
139
|
+
exportFileName: "Table.Export.Test...File.Name.01.01.2020..~!@#$%^(*_+';",
|
140
|
+
cellRender: cellRender,
|
141
|
+
navigatable: true,
|
142
|
+
children: [
|
143
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
144
|
+
field: "ProductID",
|
145
|
+
title: "ID",
|
146
|
+
editable: false,
|
147
|
+
width: "100px"
|
148
|
+
}),
|
149
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
150
|
+
field: "ProductName",
|
151
|
+
title: "Product Name",
|
152
|
+
cell: TextEditableCell,
|
153
|
+
columnMenu: StandardColumnMenuFilter,
|
154
|
+
width: "240px"
|
155
|
+
}),
|
156
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
157
|
+
field: "Supplier",
|
158
|
+
title: "Supplier",
|
159
|
+
cell: SupplierCell,
|
160
|
+
columnMenu: StandardColumnMenuFilter,
|
161
|
+
width: "150px"
|
162
|
+
}),
|
163
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
164
|
+
field: "MadeIn",
|
165
|
+
title: "Made In",
|
166
|
+
cell: TextEditableCell,
|
167
|
+
columnMenu: madeInColumnMenu,
|
168
|
+
width: "175px"
|
169
|
+
}),
|
170
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
171
|
+
field: "UnitsOnOrder",
|
172
|
+
title: "First Ordered On",
|
173
|
+
cell: DateEditableCell,
|
174
|
+
columnMenu: DateRangeColumnMenuFilter,
|
175
|
+
format: "{0:MM/dd/yyyy}",
|
176
|
+
width: "240px"
|
177
|
+
}),
|
178
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
179
|
+
field: "UnitPrice",
|
180
|
+
title: "Unit Price",
|
181
|
+
cell: NumericEditableCell,
|
182
|
+
columnMenu: CurrencyRangeColumnMenuFilter,
|
183
|
+
format: "{0:c}",
|
184
|
+
width: "125px"
|
185
|
+
}),
|
186
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
187
|
+
field: "Discontinued",
|
188
|
+
title: "Discontinued",
|
189
|
+
cell: BooleanEditableCell,
|
190
|
+
sortable: false,
|
191
|
+
width: "125px"
|
192
|
+
}),
|
193
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
194
|
+
field: "AvailableFor",
|
195
|
+
title: "Available For",
|
196
|
+
cell: AvailableForEditableCell,
|
197
|
+
columnMenu: UserRoleColumnMenuFilter,
|
198
|
+
width: "240px"
|
199
|
+
}),
|
200
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
201
|
+
cell: ActionsCell,
|
202
|
+
sortable: false,
|
203
|
+
width: "125px"
|
204
|
+
})
|
205
|
+
]
|
206
|
+
})
|
207
|
+
]
|
208
|
+
});
|
55
209
|
}));
|
210
|
+
|
56
211
|
//# sourceMappingURL=table.js.map
|