@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
@@ -7,30 +7,121 @@ import { TableStore } from './table.store';
|
|
7
7
|
import { categories, CategoryCell } from './categories';
|
8
8
|
import { Banner, BodyText } from '@servicetitan/design-system';
|
9
9
|
export const SingleSelectDefaultExample = provide({
|
10
|
-
singletons: [
|
11
|
-
|
10
|
+
singletons: [
|
11
|
+
TableStore
|
12
|
+
]
|
13
|
+
})(observer(()=>{
|
12
14
|
const [{ tableState, madeInOptions }] = useDependencies(TableStore);
|
13
|
-
const madeInColumnMenu = useMemo(()
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
const madeInColumnMenu = useMemo(()=>singleSelectColumnMenuFilter({
|
16
|
+
options: madeInOptions
|
17
|
+
}), [
|
18
|
+
madeInOptions
|
19
|
+
]);
|
20
|
+
const categoryColumnMenu = useMemo(()=>singleSelectColumnMenuFilter({
|
21
|
+
options: categories,
|
22
|
+
renderItem: (cat)=>/*#__PURE__*/ _jsxs(BodyText, {
|
23
|
+
children: [
|
24
|
+
/*#__PURE__*/ _jsx("span", {
|
25
|
+
className: "fw-bold",
|
26
|
+
children: cat.CategoryName
|
27
|
+
}),
|
28
|
+
" (#",
|
29
|
+
cat.CategoryID,
|
30
|
+
")"
|
31
|
+
]
|
32
|
+
}),
|
33
|
+
valueSelector: (cat)=>cat.CategoryID,
|
34
|
+
contentMaxHeight: '200px'
|
35
|
+
}), []);
|
36
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
37
|
+
children: [
|
38
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
39
|
+
title: "Default filter with single select",
|
40
|
+
className: "m-b-2",
|
41
|
+
children: [
|
42
|
+
"Single select filter allows to choose one option from the provided list. You can pass simple options (string or number) or complex objects",
|
43
|
+
/*#__PURE__*/ _jsx("br", {}),
|
44
|
+
"Use it when options list is fixed and less than 20 items"
|
45
|
+
]
|
46
|
+
}),
|
47
|
+
/*#__PURE__*/ _jsxs(Table, {
|
48
|
+
tableState: tableState,
|
49
|
+
striped: false,
|
50
|
+
children: [
|
51
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
52
|
+
field: "ProductID",
|
53
|
+
title: "ID",
|
54
|
+
editable: false,
|
55
|
+
width: "100px"
|
56
|
+
}),
|
57
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
58
|
+
field: "ProductName",
|
59
|
+
title: "Product Name",
|
60
|
+
width: "240px"
|
61
|
+
}),
|
62
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
63
|
+
field: "MadeIn",
|
64
|
+
title: "Made In (simple single-select filter)",
|
65
|
+
columnMenu: madeInColumnMenu
|
66
|
+
}),
|
67
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
68
|
+
field: "CategoryID",
|
69
|
+
title: "Category (simple single-select filter)",
|
70
|
+
columnMenu: categoryColumnMenu,
|
71
|
+
cell: CategoryCell
|
72
|
+
})
|
73
|
+
]
|
74
|
+
})
|
75
|
+
]
|
76
|
+
});
|
21
77
|
}));
|
22
78
|
export const SingleSelectCustomFilterExample = provide({
|
23
|
-
singletons: [
|
24
|
-
|
79
|
+
singletons: [
|
80
|
+
TableStore
|
81
|
+
]
|
82
|
+
})(observer(()=>{
|
25
83
|
const [{ tableState }] = useDependencies(TableStore);
|
26
|
-
const productNameCustomFilter = useMemo(()
|
27
|
-
const isVowel = (str)
|
84
|
+
const productNameCustomFilter = useMemo(()=>{
|
85
|
+
const isVowel = (str)=>/[aeiou]/i.test(str[0]);
|
28
86
|
return singleSelectColumnMenuFilter({
|
29
|
-
options: [
|
30
|
-
|
31
|
-
|
87
|
+
options: [
|
88
|
+
0,
|
89
|
+
1
|
90
|
+
],
|
91
|
+
renderItem: (item)=>item ? 'Start with Vowel' : 'Start with Consonants',
|
92
|
+
filterOperator: (madeIn, value)=>madeIn ? value ? isVowel(madeIn) : !isVowel(madeIn) : false
|
32
93
|
});
|
33
94
|
}, []);
|
34
|
-
return
|
95
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
96
|
+
children: [
|
97
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
98
|
+
title: "Default filter with single select",
|
99
|
+
className: "m-b-2",
|
100
|
+
children: [
|
101
|
+
"Single select filter allows to choose one option from the provided list. You can pass simple options (string or number) or complex objects",
|
102
|
+
/*#__PURE__*/ _jsx("br", {}),
|
103
|
+
"Custom filter allows you to provide custom filtering options"
|
104
|
+
]
|
105
|
+
}),
|
106
|
+
/*#__PURE__*/ _jsxs(Table, {
|
107
|
+
tableState: tableState,
|
108
|
+
striped: false,
|
109
|
+
children: [
|
110
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
111
|
+
field: "ProductID",
|
112
|
+
title: "ID",
|
113
|
+
editable: false,
|
114
|
+
width: "100px"
|
115
|
+
}),
|
116
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
117
|
+
field: "ProductName",
|
118
|
+
title: "Product Name (custom single-select filter)",
|
119
|
+
columnMenu: productNameCustomFilter
|
120
|
+
})
|
121
|
+
]
|
122
|
+
})
|
123
|
+
]
|
124
|
+
});
|
35
125
|
}));
|
126
|
+
|
36
127
|
//# sourceMappingURL=single-select-filter.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/filters/single-select-filter.tsx"],"sourcesContent":["import { useMemo, FC, Fragment } from 'react';\n\nimport { provide, useDependencies } from '@servicetitan/react-ioc';\n\nimport { observer } from 'mobx-react';\n\nimport { Table, TableColumn, singleSelectColumnMenuFilter } from '../..';\n\nimport { TableStore } from './table.store';\nimport { categories, CategoryCell } from './categories';\nimport { Banner, BodyText } from '@servicetitan/design-system';\n\nexport const SingleSelectDefaultExample: FC = provide({\n singletons: [TableStore],\n})(\n observer(() => {\n const [{ tableState, madeInOptions }] = useDependencies(TableStore);\n\n const madeInColumnMenu = useMemo(\n () => singleSelectColumnMenuFilter({ options: madeInOptions }),\n [madeInOptions]\n );\n\n const categoryColumnMenu = useMemo(\n () =>\n singleSelectColumnMenuFilter({\n options: categories,\n renderItem: cat => (\n <BodyText>\n <span className=\"fw-bold\">{cat.CategoryName}</span> (#{cat.CategoryID})\n </BodyText>\n ),\n valueSelector: cat => cat.CategoryID,\n contentMaxHeight: '200px',\n }),\n []\n );\n\n return (\n <Fragment>\n <Banner title=\"Default filter with single select\" className=\"m-b-2\">\n Single select filter allows to choose one option from the provided list. You can\n pass simple options (string or number) or complex objects\n <br />\n Use it when options list is fixed and less than 20 items\n </Banner>\n <Table tableState={tableState} striped={false}>\n <TableColumn field=\"ProductID\" title=\"ID\" editable={false} width=\"100px\" />\n <TableColumn field=\"ProductName\" title=\"Product Name\" width=\"240px\" />\n <TableColumn\n field=\"MadeIn\"\n title=\"Made In (simple single-select filter)\"\n columnMenu={madeInColumnMenu}\n />\n <TableColumn\n field=\"CategoryID\"\n title=\"Category (simple single-select filter)\"\n columnMenu={categoryColumnMenu}\n cell={CategoryCell}\n />\n </Table>\n </Fragment>\n );\n })\n);\n\nexport const SingleSelectCustomFilterExample: FC = provide({\n singletons: [TableStore],\n})(\n observer(() => {\n const [{ tableState }] = useDependencies(TableStore);\n\n const productNameCustomFilter = useMemo(() => {\n const isVowel = (str: string) => /[aeiou]/i.test(str[0]);\n\n return singleSelectColumnMenuFilter({\n options: [0, 1],\n renderItem: item => (item ? 'Start with Vowel' : 'Start with Consonants'),\n filterOperator: (madeIn: string, value: number) =>\n madeIn ? (value ? isVowel(madeIn) : !isVowel(madeIn)) : false,\n });\n }, []);\n\n return (\n <Fragment>\n <Banner title=\"Default filter with single select\" className=\"m-b-2\">\n Single select filter allows to choose one option from the provided list. You can\n pass simple options (string or number) or complex objects\n <br />\n Custom filter allows you to provide custom filtering options\n </Banner>\n <Table tableState={tableState} striped={false}>\n <TableColumn field=\"ProductID\" title=\"ID\" editable={false} width=\"100px\" />\n <TableColumn\n field=\"ProductName\"\n title=\"Product Name (custom single-select filter)\"\n columnMenu={productNameCustomFilter}\n />\n </Table>\n </Fragment>\n );\n })\n);\n"],"names":["useMemo","Fragment","provide","useDependencies","observer","Table","TableColumn","singleSelectColumnMenuFilter","TableStore","categories","CategoryCell","Banner","BodyText","SingleSelectDefaultExample","singletons","tableState","madeInOptions","madeInColumnMenu","options","categoryColumnMenu","renderItem","cat","span","className","CategoryName","CategoryID","valueSelector","contentMaxHeight","title","br","striped","field","editable","width","columnMenu","cell","SingleSelectCustomFilterExample","productNameCustomFilter","isVowel","str","test","item","filterOperator","madeIn","value"],"mappings":";AAAA,SAASA,OAAO,EAAMC,QAAQ,QAAQ,QAAQ;AAE9C,SAASC,OAAO,EAAEC,eAAe,QAAQ,0BAA0B;AAEnE,SAASC,QAAQ,QAAQ,aAAa;AAEtC,SAASC,KAAK,EAAEC,WAAW,EAAEC,4BAA4B,QAAQ,QAAQ;AAEzE,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,UAAU,EAAEC,YAAY,QAAQ,eAAe;AACxD,SAASC,MAAM,EAAEC,QAAQ,QAAQ,8BAA8B;AAE/D,OAAO,MAAMC,6BAAiCX,QAAQ;IAClDY,YAAY;QAACN;KAAW;AAC5B,GACIJ,SAAS;IACL,MAAM,CAAC,EAAEW,UAAU,EAAEC,aAAa,EAAE,CAAC,GAAGb,gBAAgBK;IAExD,MAAMS,mBAAmBjB,QACrB,IAAMO,6BAA6B;YAAEW,SAASF;QAAc,IAC5D;QAACA;KAAc;IAGnB,MAAMG,qBAAqBnB,QACvB,IACIO,6BAA6B;YACzBW,SAAST;YACTW,YAAYC,CAAAA,oBACR,MAACT;;sCACG,KAACU;4BAAKC,WAAU;sCAAWF,IAAIG,YAAY;;wBAAQ;wBAAIH,IAAII,UAAU;wBAAC;;;YAG9EC,eAAeL,CAAAA,MAAOA,IAAII,UAAU;YACpCE,kBAAkB;QACtB,IACJ,EAAE;IAGN,qBACI,MAAC1B;;0BACG,MAACU;gBAAOiB,OAAM;gBAAoCL,WAAU;;oBAAQ;kCAGhE,KAACM;oBAAK;;;0BAGV,MAACxB;gBAAMU,YAAYA;gBAAYe,SAAS;;kCACpC,KAACxB;wBAAYyB,OAAM;wBAAYH,OAAM;wBAAKI,UAAU;wBAAOC,OAAM;;kCACjE,KAAC3B;wBAAYyB,OAAM;wBAAcH,OAAM;wBAAeK,OAAM;;kCAC5D,KAAC3B;wBACGyB,OAAM;wBACNH,OAAM;wBACNM,YAAYjB;;kCAEhB,KAACX;wBACGyB,OAAM;wBACNH,OAAM;wBACNM,YAAYf;wBACZgB,MAAMzB;;;;;;AAK1B,IACF;AAEF,OAAO,MAAM0B,kCAAsClC,QAAQ;IACvDY,YAAY;QAACN;KAAW;AAC5B,GACIJ,SAAS;IACL,MAAM,CAAC,EAAEW,UAAU,EAAE,CAAC,GAAGZ,gBAAgBK;IAEzC,MAAM6B,0BAA0BrC,QAAQ;QACpC,MAAMsC,UAAU,CAACC,MAAgB,WAAWC,IAAI,CAACD,GAAG,CAAC,EAAE;QAEvD,OAAOhC,6BAA6B;YAChCW,SAAS;gBAAC;gBAAG;aAAE;YACfE,YAAYqB,CAAAA,OAASA,OAAO,qBAAqB;YACjDC,gBAAgB,CAACC,QAAgBC,QAC7BD,SAAUC,QAAQN,QAAQK,UAAU,CAACL,QAAQK,UAAW;QAChE;IACJ,GAAG,EAAE;IAEL,qBACI,MAAC1C;;0BACG,MAACU;gBAAOiB,OAAM;gBAAoCL,WAAU;;oBAAQ;kCAGhE,KAACM;oBAAK;;;0BAGV,MAACxB;gBAAMU,YAAYA;gBAAYe,SAAS;;kCACpC,KAACxB;wBAAYyB,OAAM;wBAAYH,OAAM;wBAAKI,UAAU;wBAAOC,OAAM;;kCACjE,KAAC3B;wBACGyB,OAAM;wBACNH,OAAM;wBACNM,YAAYG;;;;;;AAKhC,IACF"}
|
@@ -1,101 +1,92 @@
|
|
1
|
-
|
1
|
+
function _define_property(obj, key, value) {
|
2
|
+
if (key in obj) {
|
3
|
+
Object.defineProperty(obj, key, {
|
4
|
+
value: value,
|
5
|
+
enumerable: true,
|
6
|
+
configurable: true,
|
7
|
+
writable: true
|
8
|
+
});
|
9
|
+
} else {
|
10
|
+
obj[key] = value;
|
11
|
+
}
|
12
|
+
return obj;
|
13
|
+
}
|
14
|
+
function _ts_decorate(decorators, target, key, desc) {
|
2
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
-
else for
|
17
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
18
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
-
}
|
19
|
+
}
|
7
20
|
import { injectable } from '@servicetitan/react-ioc';
|
8
|
-
import { InMemoryDataSource, TableState
|
21
|
+
import { InMemoryDataSource, TableState } from '../..';
|
9
22
|
import { products } from '../overview/products';
|
10
23
|
import { categories } from './categories';
|
11
|
-
|
12
|
-
constructor() {
|
13
|
-
Object.defineProperty(this, "tableState", {
|
14
|
-
enumerable: true,
|
15
|
-
configurable: true,
|
16
|
-
writable: true,
|
17
|
-
value: new TableState({
|
18
|
-
dataSource: this.getDataSource(),
|
19
|
-
pageSize: 5,
|
20
|
-
})
|
21
|
-
});
|
22
|
-
Object.defineProperty(this, "categoryFetcher", {
|
23
|
-
enumerable: true,
|
24
|
-
configurable: true,
|
25
|
-
writable: true,
|
26
|
-
value: async (opts) => {
|
27
|
-
var _a;
|
28
|
-
await new Promise(resolve => setTimeout(resolve, 1500));
|
29
|
-
const sv = (_a = opts.search) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
30
|
-
return {
|
31
|
-
data: categories
|
32
|
-
.filter(cat => (sv ? cat.CategoryName.toLowerCase().includes(sv) : true))
|
33
|
-
.map(cat => ({ value: cat.CategoryID, text: cat.CategoryName })),
|
34
|
-
};
|
35
|
-
}
|
36
|
-
});
|
37
|
-
Object.defineProperty(this, "madeInFetcher", {
|
38
|
-
enumerable: true,
|
39
|
-
configurable: true,
|
40
|
-
writable: true,
|
41
|
-
value: async (opts) => {
|
42
|
-
var _a;
|
43
|
-
await new Promise(resolve => setTimeout(resolve, 1500));
|
44
|
-
const sv = (_a = opts.search) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
45
|
-
return {
|
46
|
-
data: this.madeInOptions
|
47
|
-
.filter(opt => (sv ? opt.toLowerCase().includes(sv) : true))
|
48
|
-
.map(opt => ({ value: opt, text: opt })),
|
49
|
-
};
|
50
|
-
}
|
51
|
-
});
|
52
|
-
Object.defineProperty(this, "categoryFetcherClean", {
|
53
|
-
enumerable: true,
|
54
|
-
configurable: true,
|
55
|
-
writable: true,
|
56
|
-
value: async (opts) => {
|
57
|
-
var _a;
|
58
|
-
await new Promise(resolve => setTimeout(resolve, 1500));
|
59
|
-
const sv = (_a = opts.search) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
60
|
-
return {
|
61
|
-
data: categories.filter(cat => sv ? cat.CategoryName.toLowerCase().includes(sv) : true),
|
62
|
-
};
|
63
|
-
}
|
64
|
-
});
|
65
|
-
Object.defineProperty(this, "madeInFetcherClean", {
|
66
|
-
enumerable: true,
|
67
|
-
configurable: true,
|
68
|
-
writable: true,
|
69
|
-
value: async (opts) => {
|
70
|
-
var _a;
|
71
|
-
await new Promise(resolve => setTimeout(resolve, 1500));
|
72
|
-
const sv = (_a = opts.search) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
73
|
-
return {
|
74
|
-
data: this.madeInOptions.filter(opt => (sv ? opt.toLowerCase().includes(sv) : true)),
|
75
|
-
};
|
76
|
-
}
|
77
|
-
});
|
78
|
-
}
|
24
|
+
export class TableStore {
|
79
25
|
get madeInOptions() {
|
80
|
-
return Array.from(new Set(products.map(p
|
26
|
+
return Array.from(new Set(products.map((p)=>p.MadeIn)));
|
81
27
|
}
|
82
28
|
get packageOptions() {
|
83
|
-
const map = products.reduce((out, product)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
: {}
|
88
|
-
|
89
|
-
return Object.keys(map)
|
90
|
-
|
91
|
-
|
29
|
+
const map = products.reduce((out, product)=>({
|
30
|
+
...out,
|
31
|
+
...product.Package ? {
|
32
|
+
[product.Package.PackageId]: product.Package.PackageName
|
33
|
+
} : {}
|
34
|
+
}), {});
|
35
|
+
return Object.keys(map).map(Number).map((id)=>({
|
36
|
+
Id: id,
|
37
|
+
Name: map[id]
|
38
|
+
}));
|
92
39
|
}
|
93
40
|
getDataSource() {
|
94
|
-
return new InMemoryDataSource(products, row
|
41
|
+
return new InMemoryDataSource(products, (row)=>row.ProductID);
|
42
|
+
}
|
43
|
+
constructor(){
|
44
|
+
_define_property(this, "tableState", new TableState({
|
45
|
+
dataSource: this.getDataSource(),
|
46
|
+
pageSize: 5
|
47
|
+
}));
|
48
|
+
_define_property(this, "categoryFetcher", async (opts)=>{
|
49
|
+
var _opts_search;
|
50
|
+
await new Promise((resolve)=>setTimeout(resolve, 1500));
|
51
|
+
const sv = (_opts_search = opts.search) === null || _opts_search === void 0 ? void 0 : _opts_search.trim().toLowerCase();
|
52
|
+
return {
|
53
|
+
data: categories.filter((cat)=>sv ? cat.CategoryName.toLowerCase().includes(sv) : true).map((cat)=>({
|
54
|
+
value: cat.CategoryID,
|
55
|
+
text: cat.CategoryName
|
56
|
+
}))
|
57
|
+
};
|
58
|
+
});
|
59
|
+
_define_property(this, "madeInFetcher", async (opts)=>{
|
60
|
+
var _opts_search;
|
61
|
+
await new Promise((resolve)=>setTimeout(resolve, 1500));
|
62
|
+
const sv = (_opts_search = opts.search) === null || _opts_search === void 0 ? void 0 : _opts_search.trim().toLowerCase();
|
63
|
+
return {
|
64
|
+
data: this.madeInOptions.filter((opt)=>sv ? opt.toLowerCase().includes(sv) : true).map((opt)=>({
|
65
|
+
value: opt,
|
66
|
+
text: opt
|
67
|
+
}))
|
68
|
+
};
|
69
|
+
});
|
70
|
+
_define_property(this, "categoryFetcherClean", async (opts)=>{
|
71
|
+
var _opts_search;
|
72
|
+
await new Promise((resolve)=>setTimeout(resolve, 1500));
|
73
|
+
const sv = (_opts_search = opts.search) === null || _opts_search === void 0 ? void 0 : _opts_search.trim().toLowerCase();
|
74
|
+
return {
|
75
|
+
data: categories.filter((cat)=>sv ? cat.CategoryName.toLowerCase().includes(sv) : true)
|
76
|
+
};
|
77
|
+
});
|
78
|
+
_define_property(this, "madeInFetcherClean", async (opts)=>{
|
79
|
+
var _opts_search;
|
80
|
+
await new Promise((resolve)=>setTimeout(resolve, 1500));
|
81
|
+
const sv = (_opts_search = opts.search) === null || _opts_search === void 0 ? void 0 : _opts_search.trim().toLowerCase();
|
82
|
+
return {
|
83
|
+
data: this.madeInOptions.filter((opt)=>sv ? opt.toLowerCase().includes(sv) : true)
|
84
|
+
};
|
85
|
+
});
|
95
86
|
}
|
96
|
-
}
|
97
|
-
TableStore =
|
87
|
+
}
|
88
|
+
TableStore = _ts_decorate([
|
98
89
|
injectable()
|
99
90
|
], TableStore);
|
100
|
-
|
91
|
+
|
101
92
|
//# sourceMappingURL=table.store.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/filters/table.store.ts"],"sourcesContent":["import { injectable } from '@servicetitan/react-ioc';\n\nimport {\n InMemoryDataSource,\n TableState,\n AsyncSelectFilterDataFetcher,\n SelectFilterDataFetcher,\n} from '../..';\nimport { products } from '../overview/products';\nimport { categories, Category } from './categories';\n\n@injectable()\nexport class TableStore {\n tableState = new TableState({\n dataSource: this.getDataSource(),\n pageSize: 5,\n });\n\n get madeInOptions() {\n return Array.from(new Set(products.map(p => p.MadeIn)));\n }\n\n get packageOptions() {\n const map = products.reduce(\n (out, product) => ({\n ...out,\n ...(product.Package\n ? { [product.Package.PackageId]: product.Package.PackageName }\n : {}),\n }),\n {} as Record<number, string>\n );\n\n return Object.keys(map)\n .map(Number)\n .map(id => ({ Id: id, Name: map[id] }));\n }\n\n categoryFetcher: AsyncSelectFilterDataFetcher<number> = async opts => {\n await new Promise(resolve => setTimeout(resolve, 1500));\n\n const sv = opts.search?.trim().toLowerCase();\n\n return {\n data: categories\n .filter(cat => (sv ? cat.CategoryName.toLowerCase().includes(sv) : true))\n .map(cat => ({ value: cat.CategoryID, text: cat.CategoryName })),\n };\n };\n\n madeInFetcher: AsyncSelectFilterDataFetcher<string> = async opts => {\n await new Promise(resolve => setTimeout(resolve, 1500));\n\n const sv = opts.search?.trim().toLowerCase();\n\n return {\n data: this.madeInOptions\n .filter(opt => (sv ? opt.toLowerCase().includes(sv) : true))\n .map(opt => ({ value: opt, text: opt })),\n };\n };\n\n categoryFetcherClean: SelectFilterDataFetcher<Category> = async opts => {\n await new Promise(resolve => setTimeout(resolve, 1500));\n\n const sv = opts.search?.trim().toLowerCase();\n\n return {\n data: categories.filter(cat =>\n sv ? cat.CategoryName.toLowerCase().includes(sv) : true\n ),\n };\n };\n\n madeInFetcherClean: SelectFilterDataFetcher<string> = async opts => {\n await new Promise(resolve => setTimeout(resolve, 1500));\n\n const sv = opts.search?.trim().toLowerCase();\n\n return {\n data: this.madeInOptions.filter(opt => (sv ? opt.toLowerCase().includes(sv) : true)),\n };\n };\n\n private getDataSource() {\n return new InMemoryDataSource(products, row => row.ProductID);\n }\n}\n"],"names":["injectable","InMemoryDataSource","TableState","products","categories","TableStore","madeInOptions","Array","from","Set","map","p","MadeIn","packageOptions","reduce","out","product","Package","PackageId","PackageName","Object","keys","Number","id","Id","Name","getDataSource","row","ProductID","tableState","dataSource","pageSize","categoryFetcher","opts","Promise","resolve","setTimeout","sv","search","trim","toLowerCase","data","filter","cat","CategoryName","includes","value","CategoryID","text","madeInFetcher","opt","categoryFetcherClean","madeInFetcherClean"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/footer-page-size/index.ts"],"sourcesContent":["export * from './table';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU"}
|
@@ -4,15 +4,91 @@ import { provide, useDependencies } from '@servicetitan/react-ioc';
|
|
4
4
|
import { observer } from 'mobx-react';
|
5
5
|
import { Tag } from '@servicetitan/design-system';
|
6
6
|
import { getEnumKeys } from '@servicetitan/form';
|
7
|
-
import { Table, TableColumn, BooleanEditableCell, DateRangeColumnMenuFilter, StandardColumnMenuFilter, standardFilterWithMultiselect, multiSelectColumnMenuFilter, CurrencyRangeColumnMenuFilter
|
7
|
+
import { Table, TableColumn, BooleanEditableCell, DateRangeColumnMenuFilter, StandardColumnMenuFilter, standardFilterWithMultiselect, multiSelectColumnMenuFilter, CurrencyRangeColumnMenuFilter } from '../..';
|
8
8
|
import { TableStore } from '../overview/table.store';
|
9
9
|
import { UserRole } from '../overview/product';
|
10
|
-
const UserRoleColumnMenuFilter = multiSelectColumnMenuFilter(getEnumKeys(UserRole), userRole
|
10
|
+
const UserRoleColumnMenuFilter = multiSelectColumnMenuFilter(getEnumKeys(UserRole), (userRole)=>/*#__PURE__*/ _jsx(Tag, {
|
11
|
+
compact: true,
|
12
|
+
color: UserRole[userRole] === UserRole.Owner ? 'success' : 'default',
|
13
|
+
children: userRole
|
14
|
+
}));
|
11
15
|
export const TableFooterPageSizeExample = provide({
|
12
|
-
singletons: [
|
13
|
-
|
16
|
+
singletons: [
|
17
|
+
TableStore
|
18
|
+
]
|
19
|
+
})(observer(()=>{
|
14
20
|
const [{ tableState }] = useDependencies(TableStore);
|
15
|
-
const madeInColumnMenu = useMemo(()
|
16
|
-
|
21
|
+
const madeInColumnMenu = useMemo(()=>standardFilterWithMultiselect({
|
22
|
+
tableState
|
23
|
+
}), [
|
24
|
+
tableState
|
25
|
+
]);
|
26
|
+
return /*#__PURE__*/ _jsxs(Table, {
|
27
|
+
tableState: tableState,
|
28
|
+
striped: false,
|
29
|
+
sortable: true,
|
30
|
+
pager: {
|
31
|
+
pageSizes: [
|
32
|
+
3,
|
33
|
+
5,
|
34
|
+
7,
|
35
|
+
10
|
36
|
+
]
|
37
|
+
},
|
38
|
+
children: [
|
39
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
40
|
+
field: "ProductID",
|
41
|
+
title: "ID",
|
42
|
+
editable: false,
|
43
|
+
width: "100px"
|
44
|
+
}),
|
45
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
46
|
+
field: "ProductName",
|
47
|
+
title: "Product Name",
|
48
|
+
columnMenu: StandardColumnMenuFilter,
|
49
|
+
width: "240px"
|
50
|
+
}),
|
51
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
52
|
+
field: "Supplier",
|
53
|
+
title: "Supplier",
|
54
|
+
columnMenu: StandardColumnMenuFilter,
|
55
|
+
width: "150px"
|
56
|
+
}),
|
57
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
58
|
+
field: "MadeIn",
|
59
|
+
title: "Made In",
|
60
|
+
columnMenu: madeInColumnMenu,
|
61
|
+
width: "175px"
|
62
|
+
}),
|
63
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
64
|
+
field: "UnitsOnOrder",
|
65
|
+
title: "First Ordered On",
|
66
|
+
columnMenu: DateRangeColumnMenuFilter,
|
67
|
+
format: "{0:MM/dd/yyyy}",
|
68
|
+
width: "240px"
|
69
|
+
}),
|
70
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
71
|
+
field: "UnitPrice",
|
72
|
+
title: "Unit Price",
|
73
|
+
columnMenu: CurrencyRangeColumnMenuFilter,
|
74
|
+
format: "{0:c}",
|
75
|
+
width: "125px"
|
76
|
+
}),
|
77
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
78
|
+
field: "Discontinued",
|
79
|
+
title: "Discontinued",
|
80
|
+
cell: BooleanEditableCell,
|
81
|
+
sortable: false,
|
82
|
+
width: "125px"
|
83
|
+
}),
|
84
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
85
|
+
field: "AvailableFor",
|
86
|
+
title: "Available For",
|
87
|
+
columnMenu: UserRoleColumnMenuFilter,
|
88
|
+
width: "240px"
|
89
|
+
})
|
90
|
+
]
|
91
|
+
});
|
17
92
|
}));
|
93
|
+
|
18
94
|
//# sourceMappingURL=table.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/demo/footer-page-size/table.tsx"],"sourcesContent":["import { useMemo, FC } from 'react';\n\nimport { provide, useDependencies } from '@servicetitan/react-ioc';\n\nimport { observer } from 'mobx-react';\n\nimport { Tag } from '@servicetitan/design-system';\nimport { getEnumKeys } from '@servicetitan/form';\n\nimport {\n Table,\n TableColumn,\n BooleanEditableCell,\n DateRangeColumnMenuFilter,\n StandardColumnMenuFilter,\n standardFilterWithMultiselect,\n multiSelectColumnMenuFilter,\n CurrencyRangeColumnMenuFilter,\n} from '../..';\n\nimport { TableStore } from '../overview/table.store';\nimport { UserRole } from '../overview/product';\n\nconst UserRoleColumnMenuFilter = multiSelectColumnMenuFilter(getEnumKeys(UserRole), userRole => (\n <Tag compact color={UserRole[userRole] === UserRole.Owner ? 'success' : 'default'}>\n {userRole}\n </Tag>\n));\n\nexport const TableFooterPageSizeExample: FC = provide({\n singletons: [TableStore],\n})(\n observer(() => {\n const [{ tableState }] = useDependencies(TableStore);\n\n const madeInColumnMenu = useMemo(\n () => standardFilterWithMultiselect({ tableState }),\n [tableState]\n );\n\n return (\n <Table\n tableState={tableState}\n striped={false}\n sortable\n pager={{ pageSizes: [3, 5, 7, 10] }}\n >\n <TableColumn field=\"ProductID\" title=\"ID\" editable={false} width=\"100px\" />\n\n <TableColumn\n field=\"ProductName\"\n title=\"Product Name\"\n columnMenu={StandardColumnMenuFilter}\n width=\"240px\"\n />\n\n <TableColumn\n field=\"Supplier\"\n title=\"Supplier\"\n columnMenu={StandardColumnMenuFilter}\n width=\"150px\"\n />\n\n <TableColumn\n field=\"MadeIn\"\n title=\"Made In\"\n columnMenu={madeInColumnMenu}\n width=\"175px\"\n />\n\n <TableColumn\n field=\"UnitsOnOrder\"\n title=\"First Ordered On\"\n columnMenu={DateRangeColumnMenuFilter}\n format=\"{0:MM/dd/yyyy}\"\n width=\"240px\"\n />\n\n <TableColumn\n field=\"UnitPrice\"\n title=\"Unit Price\"\n columnMenu={CurrencyRangeColumnMenuFilter}\n format=\"{0:c}\"\n width=\"125px\"\n />\n\n <TableColumn\n field=\"Discontinued\"\n title=\"Discontinued\"\n cell={BooleanEditableCell}\n sortable={false}\n width=\"125px\"\n />\n\n <TableColumn\n field=\"AvailableFor\"\n title=\"Available For\"\n columnMenu={UserRoleColumnMenuFilter}\n width=\"240px\"\n />\n </Table>\n );\n })\n);\n"],"names":["useMemo","provide","useDependencies","observer","Tag","getEnumKeys","Table","TableColumn","BooleanEditableCell","DateRangeColumnMenuFilter","StandardColumnMenuFilter","standardFilterWithMultiselect","multiSelectColumnMenuFilter","CurrencyRangeColumnMenuFilter","TableStore","UserRole","UserRoleColumnMenuFilter","userRole","compact","color","Owner","TableFooterPageSizeExample","singletons","tableState","madeInColumnMenu","striped","sortable","pager","pageSizes","field","title","editable","width","columnMenu","format","cell"],"mappings":";AAAA,SAASA,OAAO,QAAY,QAAQ;AAEpC,SAASC,OAAO,EAAEC,eAAe,QAAQ,0BAA0B;AAEnE,SAASC,QAAQ,QAAQ,aAAa;AAEtC,SAASC,GAAG,QAAQ,8BAA8B;AAClD,SAASC,WAAW,QAAQ,qBAAqB;AAEjD,SACIC,KAAK,EACLC,WAAW,EACXC,mBAAmB,EACnBC,yBAAyB,EACzBC,wBAAwB,EACxBC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,6BAA6B,QAC1B,QAAQ;AAEf,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,MAAMC,2BAA2BJ,4BAA4BP,YAAYU,WAAWE,CAAAA,yBAChF,KAACb;QAAIc,OAAO;QAACC,OAAOJ,QAAQ,CAACE,SAAS,KAAKF,SAASK,KAAK,GAAG,YAAY;kBACnEH;;AAIT,OAAO,MAAMI,6BAAiCpB,QAAQ;IAClDqB,YAAY;QAACR;KAAW;AAC5B,GACIX,SAAS;IACL,MAAM,CAAC,EAAEoB,UAAU,EAAE,CAAC,GAAGrB,gBAAgBY;IAEzC,MAAMU,mBAAmBxB,QACrB,IAAMW,8BAA8B;YAAEY;QAAW,IACjD;QAACA;KAAW;IAGhB,qBACI,MAACjB;QACGiB,YAAYA;QACZE,SAAS;QACTC,QAAQ;QACRC,OAAO;YAAEC,WAAW;gBAAC;gBAAG;gBAAG;gBAAG;aAAG;QAAC;;0BAElC,KAACrB;gBAAYsB,OAAM;gBAAYC,OAAM;gBAAKC,UAAU;gBAAOC,OAAM;;0BAEjE,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYvB;gBACZsB,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYvB;gBACZsB,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYT;gBACZQ,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYxB;gBACZyB,QAAO;gBACPF,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYpB;gBACZqB,QAAO;gBACPF,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNK,MAAM3B;gBACNkB,UAAU;gBACVM,OAAM;;0BAGV,KAACzB;gBACGsB,OAAM;gBACNC,OAAM;gBACNG,YAAYjB;gBACZgB,OAAM;;;;AAItB,IACF"}
|
package/dist/demo/index.js
CHANGED
package/dist/demo/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../src/demo/index.ts"],"sourcesContent":["export * from './overview';\nexport * from './master-detail';\nexport * from './state-caching';\nexport * from './column-hiding';\nexport * from './footer-page-size';\nexport * from './row-details';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB"}
|
@@ -6,23 +6,55 @@ import { Icon, Checkbox } from '@servicetitan/design-system';
|
|
6
6
|
import { Table, TableColumn } from '../..';
|
7
7
|
import { DetailTableStore } from './detail-table.store';
|
8
8
|
export const DetailTable = provide({
|
9
|
-
singletons: [
|
10
|
-
|
9
|
+
singletons: [
|
10
|
+
DetailTableStore
|
11
|
+
]
|
12
|
+
})(observer(({ dataItem })=>{
|
11
13
|
const [store] = useDependencies(DetailTableStore);
|
12
|
-
useEffect(()
|
14
|
+
useEffect(()=>{
|
13
15
|
store.initialize(dataItem);
|
14
|
-
return ()
|
15
|
-
}, [
|
16
|
+
return ()=>store.dispose();
|
17
|
+
}, [
|
18
|
+
store,
|
19
|
+
dataItem
|
20
|
+
]);
|
16
21
|
if (!store.tableState) {
|
17
22
|
return null;
|
18
23
|
}
|
19
|
-
return
|
24
|
+
return /*#__PURE__*/ _jsxs(Table, {
|
25
|
+
selectable: true,
|
26
|
+
hideSelectAll: true,
|
27
|
+
tableState: store.tableState,
|
28
|
+
selectionControl: LockFieldIcon,
|
29
|
+
children: [
|
30
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
31
|
+
field: "Field"
|
32
|
+
}),
|
33
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
34
|
+
field: "OldValue"
|
35
|
+
}),
|
36
|
+
/*#__PURE__*/ _jsx(TableColumn, {
|
37
|
+
field: "NewValue"
|
38
|
+
})
|
39
|
+
]
|
40
|
+
});
|
20
41
|
}));
|
21
|
-
const LockFieldIcon = props
|
42
|
+
const LockFieldIcon = (props)=>{
|
22
43
|
const { checked, disabled } = props;
|
23
44
|
if (!disabled) {
|
24
|
-
return _jsx(Checkbox, {
|
45
|
+
return /*#__PURE__*/ _jsx(Checkbox, {
|
46
|
+
...props
|
47
|
+
});
|
25
48
|
}
|
26
|
-
return
|
49
|
+
return /*#__PURE__*/ _jsx("div", {
|
50
|
+
children: checked ? /*#__PURE__*/ _jsx(Icon, {
|
51
|
+
name: "check",
|
52
|
+
className: "c-blue-300"
|
53
|
+
}) : /*#__PURE__*/ _jsx(Icon, {
|
54
|
+
name: "remove",
|
55
|
+
className: "c-neutral-70"
|
56
|
+
})
|
57
|
+
});
|
27
58
|
};
|
59
|
+
|
28
60
|
//# sourceMappingURL=detail-table.js.map
|