@servicetitan/table 31.1.0 → 31.3.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.
Files changed (181) hide show
  1. package/dist/demo/column-hiding/index.js +1 -0
  2. package/dist/demo/column-hiding/index.js.map +1 -1
  3. package/dist/demo/column-hiding/product.js +7 -6
  4. package/dist/demo/column-hiding/product.js.map +1 -1
  5. package/dist/demo/column-hiding/products.js +12 -11
  6. package/dist/demo/column-hiding/products.js.map +1 -1
  7. package/dist/demo/column-hiding/table.js +126 -32
  8. package/dist/demo/column-hiding/table.js.map +1 -1
  9. package/dist/demo/column-hiding/table.store.js +30 -27
  10. package/dist/demo/column-hiding/table.store.js.map +1 -1
  11. package/dist/demo/filters/async-select-filter.js +59 -12
  12. package/dist/demo/filters/async-select-filter.js.map +1 -1
  13. package/dist/demo/filters/categories.js +20 -16
  14. package/dist/demo/filters/categories.js.map +1 -1
  15. package/dist/demo/filters/multiselect-filter.js +37 -5
  16. package/dist/demo/filters/multiselect-filter.js.map +1 -1
  17. package/dist/demo/filters/range-filter.js +104 -10
  18. package/dist/demo/filters/range-filter.js.map +1 -1
  19. package/dist/demo/filters/select-filter.js +139 -41
  20. package/dist/demo/filters/select-filter.js.map +1 -1
  21. package/dist/demo/filters/single-select-filter.js +109 -18
  22. package/dist/demo/filters/single-select-filter.js.map +1 -1
  23. package/dist/demo/filters/table.store.js +77 -86
  24. package/dist/demo/filters/table.store.js.map +1 -1
  25. package/dist/demo/footer-page-size/index.js +1 -0
  26. package/dist/demo/footer-page-size/index.js.map +1 -1
  27. package/dist/demo/footer-page-size/table.js +82 -6
  28. package/dist/demo/footer-page-size/table.js.map +1 -1
  29. package/dist/demo/index.js +1 -0
  30. package/dist/demo/index.js.map +1 -1
  31. package/dist/demo/master-detail/detail-table.js +41 -9
  32. package/dist/demo/master-detail/detail-table.js.map +1 -1
  33. package/dist/demo/master-detail/detail-table.store.js +60 -56
  34. package/dist/demo/master-detail/detail-table.store.js.map +1 -1
  35. package/dist/demo/master-detail/index.js +1 -0
  36. package/dist/demo/master-detail/index.js.map +1 -1
  37. package/dist/demo/master-detail/master-table.store.js +65 -61
  38. package/dist/demo/master-detail/master-table.store.js.map +1 -1
  39. package/dist/demo/master-detail/product-detail.js +2 -1
  40. package/dist/demo/master-detail/product-detail.js.map +1 -1
  41. package/dist/demo/master-detail/product-details.js +10 -9
  42. package/dist/demo/master-detail/product-details.js.map +1 -1
  43. package/dist/demo/master-detail/product.js +7 -6
  44. package/dist/demo/master-detail/product.js.map +1 -1
  45. package/dist/demo/master-detail/products.js +12 -11
  46. package/dist/demo/master-detail/products.js.map +1 -1
  47. package/dist/demo/master-detail/table-master-detail.js +39 -8
  48. package/dist/demo/master-detail/table-master-detail.js.map +1 -1
  49. package/dist/demo/overview/actions-cell.js +47 -10
  50. package/dist/demo/overview/actions-cell.js.map +1 -1
  51. package/dist/demo/overview/index.js +1 -0
  52. package/dist/demo/overview/index.js.map +1 -1
  53. package/dist/demo/overview/product.js +7 -6
  54. package/dist/demo/overview/product.js.map +1 -1
  55. package/dist/demo/overview/products.js +15 -14
  56. package/dist/demo/overview/products.js.map +1 -1
  57. package/dist/demo/overview/table.js +176 -21
  58. package/dist/demo/overview/table.js.map +1 -1
  59. package/dist/demo/overview/table.store.js +45 -51
  60. package/dist/demo/overview/table.store.js.map +1 -1
  61. package/dist/demo/row-details/index.js +1 -0
  62. package/dist/demo/row-details/index.js.map +1 -1
  63. package/dist/demo/row-details/row-details-table.js +52 -5
  64. package/dist/demo/row-details/row-details-table.js.map +1 -1
  65. package/dist/demo/row-details/row-details-table.store.js +27 -19
  66. package/dist/demo/row-details/row-details-table.store.js.map +1 -1
  67. package/dist/demo/state-caching/beverages.js +11 -10
  68. package/dist/demo/state-caching/beverages.js.map +1 -1
  69. package/dist/demo/state-caching/index.js +1 -0
  70. package/dist/demo/state-caching/index.js.map +1 -1
  71. package/dist/demo/state-caching/product.js +2 -1
  72. package/dist/demo/state-caching/product.js.map +1 -1
  73. package/dist/demo/state-caching/products.js +12 -11
  74. package/dist/demo/state-caching/products.js.map +1 -1
  75. package/dist/demo/state-caching/state-caching-table.js +44 -3
  76. package/dist/demo/state-caching/state-caching-table.js.map +1 -1
  77. package/dist/demo/state-caching/state-caching-table.store.js +42 -54
  78. package/dist/demo/state-caching/state-caching-table.store.js.map +1 -1
  79. package/dist/details/expand-column.js +31 -7
  80. package/dist/details/expand-column.js.map +1 -1
  81. package/dist/details/index.js +1 -0
  82. package/dist/details/index.js.map +1 -1
  83. package/dist/editable-cell/boolean-editable-cell.js +15 -4
  84. package/dist/editable-cell/boolean-editable-cell.js.map +1 -1
  85. package/dist/editable-cell/get-action-cell.js +14 -7
  86. package/dist/editable-cell/get-action-cell.js.map +1 -1
  87. package/dist/editable-cell/get-editable-cell.js +16 -8
  88. package/dist/editable-cell/get-editable-cell.js.map +1 -1
  89. package/dist/editable-cell/get-select-editable-cell.js +19 -5
  90. package/dist/editable-cell/get-select-editable-cell.js.map +1 -1
  91. package/dist/editable-cell/index.js +1 -0
  92. package/dist/editable-cell/index.js.map +1 -1
  93. package/dist/editable-cell/text-editable-cell.js +23 -5
  94. package/dist/editable-cell/text-editable-cell.js.map +1 -1
  95. package/dist/export/export.js +38 -1
  96. package/dist/export/export.js.map +1 -1
  97. package/dist/export/export.module.css.d.ts +3 -0
  98. package/dist/export/index.js +1 -0
  99. package/dist/export/index.js.map +1 -1
  100. package/dist/filters/async-select/async-select-filter.js +167 -132
  101. package/dist/filters/async-select/async-select-filter.js.map +1 -1
  102. package/dist/filters/column-menu-filters.js +39 -8
  103. package/dist/filters/column-menu-filters.js.map +1 -1
  104. package/dist/filters/datetime-filter/datetime-filter.js +73 -50
  105. package/dist/filters/datetime-filter/datetime-filter.js.map +1 -1
  106. package/dist/filters/field-values-filter.js +80 -72
  107. package/dist/filters/field-values-filter.js.map +1 -1
  108. package/dist/filters/index.js +1 -0
  109. package/dist/filters/index.js.map +1 -1
  110. package/dist/filters/multiselect-filter/multiselect-filter.js +77 -73
  111. package/dist/filters/multiselect-filter/multiselect-filter.js.map +1 -1
  112. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js +10 -3
  113. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js.map +1 -1
  114. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js +39 -16
  115. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js.map +1 -1
  116. package/dist/filters/range-filter/range-filter.js +76 -72
  117. package/dist/filters/range-filter/range-filter.js.map +1 -1
  118. package/dist/filters/select-filter/object-search.js +4 -3
  119. package/dist/filters/select-filter/object-search.js.map +1 -1
  120. package/dist/filters/select-filter/operators.js +6 -5
  121. package/dist/filters/select-filter/operators.js.map +1 -1
  122. package/dist/filters/select-filter/select-filter.js +180 -145
  123. package/dist/filters/select-filter/select-filter.js.map +1 -1
  124. package/dist/filters/select-filter/value-getter.js +2 -1
  125. package/dist/filters/select-filter/value-getter.js.map +1 -1
  126. package/dist/filters/single-select/single-select-filter.js +29 -15
  127. package/dist/filters/single-select/single-select-filter.js.map +1 -1
  128. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js +114 -67
  129. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js.map +1 -1
  130. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.module.css.d.ts +7 -0
  131. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js +10 -3
  132. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js.map +1 -1
  133. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js +77 -55
  134. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js.map +1 -1
  135. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js +23 -10
  136. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js.map +1 -1
  137. package/dist/filters/time-filter/time-filter.js +63 -49
  138. package/dist/filters/time-filter/time-filter.js.map +1 -1
  139. package/dist/index.js +4 -2
  140. package/dist/index.js.map +1 -1
  141. package/dist/select-cell/index.js +1 -0
  142. package/dist/select-cell/index.js.map +1 -1
  143. package/dist/select-cell/select-cell.js +36 -11
  144. package/dist/select-cell/select-cell.js.map +1 -1
  145. package/dist/select-cell/select-cell.module.css.d.ts +3 -0
  146. package/dist/table-state.js +479 -660
  147. package/dist/table-state.js.map +1 -1
  148. package/dist/table.js +235 -250
  149. package/dist/table.js.map +1 -1
  150. package/dist/table.module.css.d.ts +5 -0
  151. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js +97 -5
  152. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js.map +1 -1
  153. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js +71 -97
  154. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js.map +1 -1
  155. package/dist/use-observing-table-state/index.js +1 -0
  156. package/dist/use-observing-table-state/index.js.map +1 -1
  157. package/dist/use-observing-table-state/use-observing-table-state.js +26 -20
  158. package/dist/use-observing-table-state/use-observing-table-state.js.map +1 -1
  159. package/dist/utils/filters.js +14 -9
  160. package/dist/utils/filters.js.map +1 -1
  161. package/dist/utils/use-td-props.js +3 -2
  162. package/dist/utils/use-td-props.js.map +1 -1
  163. package/package.json +13 -13
  164. package/dist/filters/async-select/async-select-filter.stories.js +0 -7
  165. package/dist/filters/async-select/async-select-filter.stories.js.map +0 -1
  166. package/dist/filters/multiselect-filter/multiselect-filter.stories.js +0 -7
  167. package/dist/filters/multiselect-filter/multiselect-filter.stories.js.map +0 -1
  168. package/dist/filters/range-filter/range-filter.stories.js +0 -9
  169. package/dist/filters/range-filter/range-filter.stories.js.map +0 -1
  170. package/dist/filters/select-filter/__tests__/object-search.test.js +0 -28
  171. package/dist/filters/select-filter/__tests__/object-search.test.js.map +0 -1
  172. package/dist/filters/select-filter/select-filter.stories.js +0 -8
  173. package/dist/filters/select-filter/select-filter.stories.js.map +0 -1
  174. package/dist/filters/single-select/single-select-filter.stories.js +0 -8
  175. package/dist/filters/single-select/single-select-filter.stories.js.map +0 -1
  176. package/dist/table.stories.js +0 -12
  177. package/dist/table.stories.js.map +0 -1
  178. package/dist/use-observing-table-state/use-observing-table-state.stories.js +0 -11
  179. package/dist/use-observing-table-state/use-observing-table-state.stories.js.map +0 -1
  180. package/dist/utils/__tests__/filters.test.js +0 -24
  181. package/dist/utils/__tests__/filters.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"detail-table.js","sourceRoot":"","sources":["../../../src/demo/master-detail/detail-table.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAM,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAiB,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,KAAK,EAAE,WAAW,EAAuB,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAA4B,OAAO,CAAC;IACxD,UAAU,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,CACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtB,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,MAAC,KAAK,IACF,UAAU,QACV,aAAa,QACb,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,gBAAgB,EAAE,aAAa,aAE/B,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,GAAG,EAE7B,KAAC,WAAW,IAAC,KAAK,EAAC,UAAU,GAAG,EAEhC,KAAC,WAAW,IAAC,KAAK,EAAC,UAAU,GAAG,IAC5B,CACX,CAAC;AACN,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,aAAa,GAA6B,KAAK,CAAC,EAAE;IACpD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,KAAC,QAAQ,OAAK,KAAK,GAAI,CAAC;IACnC,CAAC;IAED,OAAO,CACH,wBACK,OAAO,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,GAAG,CAC/C,CAAC,CAAC,CAAC,CACA,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,cAAc,GAAG,CAClD,GACC,CACT,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/detail-table.tsx"],"sourcesContent":["import { useEffect, FC } from 'react';\n\nimport { provide, useDependencies } from '@servicetitan/react-ioc';\n\nimport { observer } from 'mobx-react';\n\nimport { Icon, Checkbox, CheckboxProps } from '@servicetitan/design-system';\n\nimport { Table, TableColumn, TableDetailRowProps } from '../..';\n\nimport { DetailTableStore } from './detail-table.store';\n\nexport const DetailTable: FC<TableDetailRowProps> = provide({\n singletons: [DetailTableStore],\n})(\n observer(({ dataItem }) => {\n const [store] = useDependencies(DetailTableStore);\n\n useEffect(() => {\n store.initialize(dataItem);\n return () => store.dispose();\n }, [store, dataItem]);\n\n if (!store.tableState) {\n return null;\n }\n\n return (\n <Table\n selectable\n hideSelectAll\n tableState={store.tableState}\n selectionControl={LockFieldIcon}\n >\n <TableColumn field=\"Field\" />\n\n <TableColumn field=\"OldValue\" />\n\n <TableColumn field=\"NewValue\" />\n </Table>\n );\n })\n);\n\nconst LockFieldIcon: FC<CheckboxProps<never>> = props => {\n const { checked, disabled } = props;\n\n if (!disabled) {\n return <Checkbox {...props} />;\n }\n\n return (\n <div>\n {checked ? (\n <Icon name=\"check\" className=\"c-blue-300\" />\n ) : (\n <Icon name=\"remove\" className=\"c-neutral-70\" />\n )}\n </div>\n );\n};\n"],"names":["useEffect","provide","useDependencies","observer","Icon","Checkbox","Table","TableColumn","DetailTableStore","DetailTable","singletons","dataItem","store","initialize","dispose","tableState","selectable","hideSelectAll","selectionControl","LockFieldIcon","field","props","checked","disabled","div","name","className"],"mappings":";AAAA,SAASA,SAAS,QAAY,QAAQ;AAEtC,SAASC,OAAO,EAAEC,eAAe,QAAQ,0BAA0B;AAEnE,SAASC,QAAQ,QAAQ,aAAa;AAEtC,SAASC,IAAI,EAAEC,QAAQ,QAAuB,8BAA8B;AAE5E,SAASC,KAAK,EAAEC,WAAW,QAA6B,QAAQ;AAEhE,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,OAAO,MAAMC,cAAuCR,QAAQ;IACxDS,YAAY;QAACF;KAAiB;AAClC,GACIL,SAAS,CAAC,EAAEQ,QAAQ,EAAE;IAClB,MAAM,CAACC,MAAM,GAAGV,gBAAgBM;IAEhCR,UAAU;QACNY,MAAMC,UAAU,CAACF;QACjB,OAAO,IAAMC,MAAME,OAAO;IAC9B,GAAG;QAACF;QAAOD;KAAS;IAEpB,IAAI,CAACC,MAAMG,UAAU,EAAE;QACnB,OAAO;IACX;IAEA,qBACI,MAACT;QACGU,UAAU;QACVC,aAAa;QACbF,YAAYH,MAAMG,UAAU;QAC5BG,kBAAkBC;;0BAElB,KAACZ;gBAAYa,OAAM;;0BAEnB,KAACb;gBAAYa,OAAM;;0BAEnB,KAACb;gBAAYa,OAAM;;;;AAG/B,IACF;AAEF,MAAMD,gBAA0CE,CAAAA;IAC5C,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGF;IAE9B,IAAI,CAACE,UAAU;QACX,qBAAO,KAAClB;YAAU,GAAGgB,KAAK;;IAC9B;IAEA,qBACI,KAACG;kBACIF,wBACG,KAAClB;YAAKqB,MAAK;YAAQC,WAAU;2BAE7B,KAACtB;YAAKqB,MAAK;YAASC,WAAU;;;AAI9C"}
@@ -1,50 +1,35 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
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 (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;
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
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { injectable, inject } from '@servicetitan/react-ioc';
11
24
  import { observable, action, observe, computed, makeObservable } from 'mobx';
12
25
  import { TableState } from '../..';
13
26
  import { MasterTableStore } from './master-table.store';
14
- let DetailTableStore = class DetailTableStore {
27
+ import { Product } from './product';
28
+ export class DetailTableStore {
15
29
  get selected() {
16
- var _a, _b;
17
- return (_b = (_a = this.tableState) === null || _a === void 0 ? void 0 : _a.selectedIds.size) !== null && _b !== void 0 ? _b : 0;
18
- }
19
- constructor() {
20
- Object.defineProperty(this, "tableState", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: void 0
25
- });
26
- /*
27
- * Please use constructor injection instead.
28
- * Injecting without constructor only to make it work in Codesandbox.
29
- */
30
- Object.defineProperty(this, "masterTableStore", {
31
- enumerable: true,
32
- configurable: true,
33
- writable: true,
34
- value: void 0
35
- });
36
- Object.defineProperty(this, "disposeSelectedObserve", {
37
- enumerable: true,
38
- configurable: true,
39
- writable: true,
40
- value: void 0
41
- });
42
- makeObservable(this);
43
- this.disposeSelectedObserve = observe(this, 'selected', ({ oldValue, newValue }) => {
44
- if (!oldValue && newValue) {
45
- this.setLockedRowsSelection(true);
46
- }
47
- });
30
+ var _this_tableState;
31
+ var _this_tableState_selectedIds_size;
32
+ return (_this_tableState_selectedIds_size = (_this_tableState = this.tableState) === null || _this_tableState === void 0 ? void 0 : _this_tableState.selectedIds.size) !== null && _this_tableState_selectedIds_size !== void 0 ? _this_tableState_selectedIds_size : 0;
48
33
  }
49
34
  initialize(row) {
50
35
  this.tableState = this.masterTableStore.tableState.getDetailTableState(row);
@@ -60,34 +45,53 @@ let DetailTableStore = class DetailTableStore {
60
45
  return;
61
46
  }
62
47
  const filteredData = (await this.tableState.dataSource.getData({
63
- filter: this.tableState.filter,
48
+ filter: this.tableState.filter
64
49
  })).data;
65
- const lockedData = filteredData.filter(row => this.tableState.isRowUnselectable(row));
66
- this.tableState.setRowsSelection(lockedData, value, { ignoreUnselectable: false });
50
+ const lockedData = filteredData.filter((row)=>this.tableState.isRowUnselectable(row));
51
+ this.tableState.setRowsSelection(lockedData, value, {
52
+ ignoreUnselectable: false
53
+ });
54
+ }
55
+ constructor(){
56
+ _define_property(this, "tableState", void 0);
57
+ /*
58
+ * Please use constructor injection instead.
59
+ * Injecting without constructor only to make it work in Codesandbox.
60
+ */ _define_property(this, "masterTableStore", void 0);
61
+ _define_property(this, "disposeSelectedObserve", void 0);
62
+ makeObservable(this);
63
+ this.disposeSelectedObserve = observe(this, 'selected', ({ oldValue, newValue })=>{
64
+ if (!oldValue && newValue) {
65
+ this.setLockedRowsSelection(true);
66
+ }
67
+ });
67
68
  }
68
- };
69
- __decorate([
69
+ }
70
+ _ts_decorate([
70
71
  observable,
71
- __metadata("design:type", TableState)
72
+ _ts_metadata("design:type", typeof TableState === "undefined" ? Object : TableState)
72
73
  ], DetailTableStore.prototype, "tableState", void 0);
73
- __decorate([
74
+ _ts_decorate([
74
75
  inject(MasterTableStore),
75
- __metadata("design:type", MasterTableStore)
76
+ _ts_metadata("design:type", typeof MasterTableStore === "undefined" ? Object : MasterTableStore)
76
77
  ], DetailTableStore.prototype, "masterTableStore", void 0);
77
- __decorate([
78
+ _ts_decorate([
78
79
  computed,
79
- __metadata("design:type", Object),
80
- __metadata("design:paramtypes", [])
80
+ _ts_metadata("design:type", void 0),
81
+ _ts_metadata("design:paramtypes", [])
81
82
  ], DetailTableStore.prototype, "selected", null);
82
- __decorate([
83
+ _ts_decorate([
83
84
  action,
84
- __metadata("design:type", Function),
85
- __metadata("design:paramtypes", [Object]),
86
- __metadata("design:returntype", void 0)
85
+ _ts_metadata("design:type", Function),
86
+ _ts_metadata("design:paramtypes", [
87
+ typeof Product === "undefined" ? Object : Product
88
+ ]),
89
+ _ts_metadata("design:returntype", void 0)
87
90
  ], DetailTableStore.prototype, "initialize", null);
88
- DetailTableStore = __decorate([
91
+ DetailTableStore = _ts_decorate([
89
92
  injectable(),
90
- __metadata("design:paramtypes", [])
93
+ _ts_metadata("design:type", Function),
94
+ _ts_metadata("design:paramtypes", [])
91
95
  ], DetailTableStore);
92
- export { DetailTableStore };
96
+
93
97
  //# sourceMappingURL=detail-table.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detail-table.store.js","sourceRoot":"","sources":["../../../src/demo/master-detail/detail-table.store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAU,cAAc,EAAE,MAAM,MAAM,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMjD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAUzB,IAAc,QAAQ;;QAClB,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,mCAAI,CAAC,CAAC;IAClD,CAAC;IAID;QAfY;;;;;WAAgE;QAE5E;;;WAGG;QAEK;;;;;WAAoC;QAMpC;;;;;WAA+B;QAGnC,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,UAAU,CAAC,GAAY;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,mBAAoB,CAAC,GAAG,CAK1E,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAAc;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,CACjB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;SACjC,CAAC,CACL,CAAC,IAAuB,CAAC;QAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;CACJ,CAAA;AA1De;IAAX,UAAU;8BAAc,UAAU;oDAAyC;AAOpE;IADP,MAAM,CAAC,gBAAgB,CAAC;8BACE,gBAAgB;0DAAC;AAE5C;IAAC,QAAQ;;;gDAER;AAeD;IADC,MAAM;;;;kDAQN;AAlCQ,gBAAgB;IAD5B,UAAU,EAAE;;GACA,gBAAgB,CA2D5B"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/detail-table.store.ts"],"sourcesContent":["import { injectable, inject } from '@servicetitan/react-ioc';\n\nimport { observable, action, observe, computed, Lambda, makeObservable } from 'mobx';\n\nimport { TableState } from '../..';\n\nimport { MasterTableStore } from './master-table.store';\n\nimport { Product } from './product';\nimport { ProductDetail } from './product-detail';\n\n@injectable()\nexport class DetailTableStore {\n @observable tableState?: TableState<ProductDetail, string, Product, number>;\n\n /*\n * Please use constructor injection instead.\n * Injecting without constructor only to make it work in Codesandbox.\n */\n @inject(MasterTableStore)\n private masterTableStore!: MasterTableStore;\n\n @computed get selected() {\n return this.tableState?.selectedIds.size ?? 0;\n }\n\n private disposeSelectedObserve: Lambda;\n\n constructor() {\n makeObservable(this);\n\n this.disposeSelectedObserve = observe(this, 'selected', ({ oldValue, newValue }) => {\n if (!oldValue && newValue) {\n this.setLockedRowsSelection(true);\n }\n });\n }\n\n @action\n initialize(row: Product) {\n this.tableState = this.masterTableStore.tableState.getDetailTableState!(row) as TableState<\n ProductDetail,\n string,\n Product,\n number\n >;\n }\n\n dispose() {\n this.disposeSelectedObserve();\n }\n\n private async setLockedRowsSelection(value: boolean) {\n if (!this.tableState) {\n return;\n }\n\n if (!this.tableState.dataSource) {\n return;\n }\n\n const filteredData = (\n await this.tableState.dataSource.getData({\n filter: this.tableState.filter,\n })\n ).data as ProductDetail[];\n\n const lockedData = filteredData.filter(row => this.tableState!.isRowUnselectable(row));\n\n this.tableState.setRowsSelection(lockedData, value, { ignoreUnselectable: false });\n }\n}\n"],"names":["injectable","inject","observable","action","observe","computed","makeObservable","TableState","MasterTableStore","Product","DetailTableStore","selected","tableState","selectedIds","size","initialize","row","masterTableStore","getDetailTableState","dispose","disposeSelectedObserve","setLockedRowsSelection","value","dataSource","filteredData","getData","filter","data","lockedData","isRowUnselectable","setRowsSelection","ignoreUnselectable","constructor","oldValue","newValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,0BAA0B;AAE7D,SAASC,UAAU,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAUC,cAAc,QAAQ,OAAO;AAErF,SAASC,UAAU,QAAQ,QAAQ;AAEnC,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,SAASC,OAAO,QAAQ,YAAY;AAIpC,OAAO,MAAMC;IAUT,IAAcC,WAAW;YACd;YAAA;QAAP,OAAO,CAAA,qCAAA,mBAAA,IAAI,CAACC,UAAU,cAAf,uCAAA,iBAAiBC,WAAW,CAACC,IAAI,cAAjC,+CAAA,oCAAqC;IAChD;IAeAC,WAAWC,GAAY,EAAE;QACrB,IAAI,CAACJ,UAAU,GAAG,IAAI,CAACK,gBAAgB,CAACL,UAAU,CAACM,mBAAmB,CAAEF;IAM5E;IAEAG,UAAU;QACN,IAAI,CAACC,sBAAsB;IAC/B;IAEA,MAAcC,uBAAuBC,KAAc,EAAE;QACjD,IAAI,CAAC,IAAI,CAACV,UAAU,EAAE;YAClB;QACJ;QAEA,IAAI,CAAC,IAAI,CAACA,UAAU,CAACW,UAAU,EAAE;YAC7B;QACJ;QAEA,MAAMC,eAAe,AACjB,CAAA,MAAM,IAAI,CAACZ,UAAU,CAACW,UAAU,CAACE,OAAO,CAAC;YACrCC,QAAQ,IAAI,CAACd,UAAU,CAACc,MAAM;QAClC,EAAC,EACHC,IAAI;QAEN,MAAMC,aAAaJ,aAAaE,MAAM,CAACV,CAAAA,MAAO,IAAI,CAACJ,UAAU,CAAEiB,iBAAiB,CAACb;QAEjF,IAAI,CAACJ,UAAU,CAACkB,gBAAgB,CAACF,YAAYN,OAAO;YAAES,oBAAoB;QAAM;IACpF;IA1CAC,aAAc;QAfd,uBAAYpB,cAAZ,KAAA;QAEA;;;KAGC,GACD,uBACQK,oBADR,KAAA;QAOA,uBAAQG,0BAAR,KAAA;QAGId,eAAe,IAAI;QAEnB,IAAI,CAACc,sBAAsB,GAAGhB,QAAQ,IAAI,EAAE,YAAY,CAAC,EAAE6B,QAAQ,EAAEC,QAAQ,EAAE;YAC3E,IAAI,CAACD,YAAYC,UAAU;gBACvB,IAAI,CAACb,sBAAsB,CAAC;YAChC;QACJ;IACJ;AAmCJ"}
@@ -1,2 +1,3 @@
1
1
  export * from './table-master-detail';
2
+
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/demo/master-detail/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/index.ts"],"sourcesContent":["export * from './table-master-detail';\n"],"names":[],"mappings":"AAAA,cAAc,wBAAwB"}
@@ -1,60 +1,34 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
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 (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;
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
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { injectable } from '@servicetitan/react-ioc';
11
24
  import { computed, observe, makeObservable } from 'mobx';
12
25
  import { InMemoryDataSource, TableState } from '../..';
13
26
  import { products } from './products';
14
27
  import { productDetails } from './product-details';
15
- let MasterTableStore = class MasterTableStore {
28
+ export class MasterTableStore {
16
29
  get selectedIds() {
17
30
  return Array.from(this.tableState.selectedIds);
18
31
  }
19
- constructor() {
20
- Object.defineProperty(this, "tableState", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: new TableState({
25
- dataSource: new InMemoryDataSource(products, row => row.ProductID),
26
- getDetailTableState: row => this.getDetailTableState(row),
27
- })
28
- });
29
- Object.defineProperty(this, "details", {
30
- enumerable: true,
31
- configurable: true,
32
- writable: true,
33
- value: new Map()
34
- });
35
- Object.defineProperty(this, "disposeSelectedIdsObserve", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: void 0
40
- });
41
- makeObservable(this);
42
- this.disposeSelectedIdsObserve = observe(this, 'selectedIds', change => {
43
- const { oldValue = [], newValue } = change;
44
- const before = new Set(oldValue);
45
- const after = new Set(newValue);
46
- for (const id of oldValue) {
47
- if (!after.has(id)) {
48
- this.setDetailSelection(id, false);
49
- }
50
- }
51
- for (const id of newValue) {
52
- if (!before.has(id)) {
53
- this.setDetailSelection(id, true);
54
- }
55
- }
56
- });
57
- }
58
32
  dispose() {
59
33
  this.disposeSelectedIdsObserve();
60
34
  }
@@ -64,12 +38,12 @@ let MasterTableStore = class MasterTableStore {
64
38
  return this.details.get(id);
65
39
  }
66
40
  const detailTableState = new TableState({
67
- dataSource: new InMemoryDataSource(productDetails.filter(x => x.ProductID === id), row => row.Field),
68
- isRowUnselectable: row => !!row.IsLocked,
41
+ dataSource: new InMemoryDataSource(productDetails.filter((x)=>x.ProductID === id), (row)=>row.Field),
42
+ isRowUnselectable: (row)=>!!row.IsLocked,
69
43
  parent: {
70
44
  row,
71
- tableState: this.tableState,
72
- },
45
+ tableState: this.tableState
46
+ }
73
47
  });
74
48
  if (this.tableState.selectedIds.has(id)) {
75
49
  detailTableState.selectAll();
@@ -78,26 +52,56 @@ let MasterTableStore = class MasterTableStore {
78
52
  return detailTableState;
79
53
  }
80
54
  setDetailSelection(id, value) {
81
- const detail = this.tableState.getDetailTableState({ ProductID: id });
55
+ const detail = this.tableState.getDetailTableState({
56
+ ProductID: id
57
+ });
82
58
  if (!(detail === null || detail === void 0 ? void 0 : detail.totalCount)) {
83
59
  return;
84
60
  }
85
61
  if (value) {
86
- detail.selectAll({ ignoreUnselectable: false });
87
- }
88
- else if (!detail.isSomePageRowsSelected) {
89
- detail.deselectAll({ ignoreUnselectable: false });
62
+ detail.selectAll({
63
+ ignoreUnselectable: false
64
+ });
65
+ } else if (!detail.isSomePageRowsSelected) {
66
+ detail.deselectAll({
67
+ ignoreUnselectable: false
68
+ });
90
69
  }
91
70
  }
92
- };
93
- __decorate([
71
+ constructor(){
72
+ _define_property(this, "tableState", new TableState({
73
+ dataSource: new InMemoryDataSource(products, (row)=>row.ProductID),
74
+ getDetailTableState: (row)=>this.getDetailTableState(row)
75
+ }));
76
+ _define_property(this, "details", new Map());
77
+ _define_property(this, "disposeSelectedIdsObserve", void 0);
78
+ makeObservable(this);
79
+ this.disposeSelectedIdsObserve = observe(this, 'selectedIds', (change)=>{
80
+ const { oldValue = [], newValue } = change;
81
+ const before = new Set(oldValue);
82
+ const after = new Set(newValue);
83
+ for (const id of oldValue){
84
+ if (!after.has(id)) {
85
+ this.setDetailSelection(id, false);
86
+ }
87
+ }
88
+ for (const id of newValue){
89
+ if (!before.has(id)) {
90
+ this.setDetailSelection(id, true);
91
+ }
92
+ }
93
+ });
94
+ }
95
+ }
96
+ _ts_decorate([
94
97
  computed,
95
- __metadata("design:type", Object),
96
- __metadata("design:paramtypes", [])
98
+ _ts_metadata("design:type", void 0),
99
+ _ts_metadata("design:paramtypes", [])
97
100
  ], MasterTableStore.prototype, "selectedIds", null);
98
- MasterTableStore = __decorate([
101
+ MasterTableStore = _ts_decorate([
99
102
  injectable(),
100
- __metadata("design:paramtypes", [])
103
+ _ts_metadata("design:type", Function),
104
+ _ts_metadata("design:paramtypes", [])
101
105
  ], MasterTableStore);
102
- export { MasterTableStore };
106
+
103
107
  //# sourceMappingURL=master-table.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"master-table.store.js","sourceRoot":"","sources":["../../../src/demo/master-detail/master-table.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/master-table.store.ts"],"sourcesContent":["import { injectable } from '@servicetitan/react-ioc';\n\nimport { computed, observe, Lambda, makeObservable } from 'mobx';\n\nimport { InMemoryDataSource, TableState } from '../..';\n\nimport { Product } from './product';\nimport { products } from './products';\n\nimport { ProductDetail } from './product-detail';\nimport { productDetails } from './product-details';\n\n@injectable()\nexport class MasterTableStore {\n tableState: TableState<Product, number> = new TableState({\n dataSource: new InMemoryDataSource(products, row => row.ProductID),\n getDetailTableState: row => this.getDetailTableState(row),\n });\n\n details = new Map<number, TableState<ProductDetail, string, Product, number>>();\n\n @computed get selectedIds() {\n return Array.from(this.tableState.selectedIds);\n }\n\n private disposeSelectedIdsObserve: Lambda;\n\n constructor() {\n makeObservable(this);\n\n this.disposeSelectedIdsObserve = observe(this, 'selectedIds', change => {\n const { oldValue = [], newValue } = change as {\n oldValue: number[];\n newValue: number[];\n };\n\n const before = new Set(oldValue);\n const after = new Set(newValue);\n\n for (const id of oldValue) {\n if (!after.has(id)) {\n this.setDetailSelection(id, false);\n }\n }\n\n for (const id of newValue) {\n if (!before.has(id)) {\n this.setDetailSelection(id, true);\n }\n }\n });\n }\n\n dispose() {\n this.disposeSelectedIdsObserve();\n }\n\n private getDetailTableState(row: Product) {\n const id = this.tableState.dataSource!.idSelector!(row);\n\n if (this.details.has(id)) {\n return this.details.get(id)!;\n }\n\n const detailTableState = new TableState({\n dataSource: new InMemoryDataSource(\n productDetails.filter(x => x.ProductID === id),\n row => row.Field\n ),\n isRowUnselectable: row => !!row.IsLocked,\n parent: {\n row,\n tableState: this.tableState,\n },\n });\n\n if (this.tableState.selectedIds.has(id)) {\n detailTableState.selectAll();\n }\n\n this.details.set(id, detailTableState);\n\n return detailTableState;\n }\n\n private setDetailSelection(id: number, value: boolean) {\n const detail = this.tableState.getDetailTableState!({ ProductID: id } as Product);\n\n if (!detail?.totalCount) {\n return;\n }\n\n if (value) {\n detail.selectAll({ ignoreUnselectable: false });\n } else if (!detail.isSomePageRowsSelected) {\n detail.deselectAll({ ignoreUnselectable: false });\n }\n }\n}\n"],"names":["injectable","computed","observe","makeObservable","InMemoryDataSource","TableState","products","productDetails","MasterTableStore","selectedIds","Array","from","tableState","dispose","disposeSelectedIdsObserve","getDetailTableState","row","id","dataSource","idSelector","details","has","get","detailTableState","filter","x","ProductID","Field","isRowUnselectable","IsLocked","parent","selectAll","set","setDetailSelection","value","detail","totalCount","ignoreUnselectable","isSomePageRowsSelected","deselectAll","constructor","Map","change","oldValue","newValue","before","Set","after"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,UAAU,QAAQ,0BAA0B;AAErD,SAASC,QAAQ,EAAEC,OAAO,EAAUC,cAAc,QAAQ,OAAO;AAEjE,SAASC,kBAAkB,EAAEC,UAAU,QAAQ,QAAQ;AAGvD,SAASC,QAAQ,QAAQ,aAAa;AAGtC,SAASC,cAAc,QAAQ,oBAAoB;AAGnD,OAAO,MAAMC;IAQT,IAAcC,cAAc;QACxB,OAAOC,MAAMC,IAAI,CAAC,IAAI,CAACC,UAAU,CAACH,WAAW;IACjD;IA8BAI,UAAU;QACN,IAAI,CAACC,yBAAyB;IAClC;IAEQC,oBAAoBC,GAAY,EAAE;QACtC,MAAMC,KAAK,IAAI,CAACL,UAAU,CAACM,UAAU,CAAEC,UAAU,CAAEH;QAEnD,IAAI,IAAI,CAACI,OAAO,CAACC,GAAG,CAACJ,KAAK;YACtB,OAAO,IAAI,CAACG,OAAO,CAACE,GAAG,CAACL;QAC5B;QAEA,MAAMM,mBAAmB,IAAIlB,WAAW;YACpCa,YAAY,IAAId,mBACZG,eAAeiB,MAAM,CAACC,CAAAA,IAAKA,EAAEC,SAAS,KAAKT,KAC3CD,CAAAA,MAAOA,IAAIW,KAAK;YAEpBC,mBAAmBZ,CAAAA,MAAO,CAAC,CAACA,IAAIa,QAAQ;YACxCC,QAAQ;gBACJd;gBACAJ,YAAY,IAAI,CAACA,UAAU;YAC/B;QACJ;QAEA,IAAI,IAAI,CAACA,UAAU,CAACH,WAAW,CAACY,GAAG,CAACJ,KAAK;YACrCM,iBAAiBQ,SAAS;QAC9B;QAEA,IAAI,CAACX,OAAO,CAACY,GAAG,CAACf,IAAIM;QAErB,OAAOA;IACX;IAEQU,mBAAmBhB,EAAU,EAAEiB,KAAc,EAAE;QACnD,MAAMC,SAAS,IAAI,CAACvB,UAAU,CAACG,mBAAmB,CAAE;YAAEW,WAAWT;QAAG;QAEpE,IAAI,EAACkB,mBAAAA,6BAAAA,OAAQC,UAAU,GAAE;YACrB;QACJ;QAEA,IAAIF,OAAO;YACPC,OAAOJ,SAAS,CAAC;gBAAEM,oBAAoB;YAAM;QACjD,OAAO,IAAI,CAACF,OAAOG,sBAAsB,EAAE;YACvCH,OAAOI,WAAW,CAAC;gBAAEF,oBAAoB;YAAM;QACnD;IACJ;IAtEAG,aAAc;QAbd5B,uBAAAA,cAA0C,IAAIP,WAAW;YACrDa,YAAY,IAAId,mBAAmBE,UAAUU,CAAAA,MAAOA,IAAIU,SAAS;YACjEX,qBAAqBC,CAAAA,MAAO,IAAI,CAACD,mBAAmB,CAACC;QACzD;QAEAI,uBAAAA,WAAU,IAAIqB;QAMd,uBAAQ3B,6BAAR,KAAA;QAGIX,eAAe,IAAI;QAEnB,IAAI,CAACW,yBAAyB,GAAGZ,QAAQ,IAAI,EAAE,eAAewC,CAAAA;YAC1D,MAAM,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAE,GAAGF;YAKpC,MAAMG,SAAS,IAAIC,IAAIH;YACvB,MAAMI,QAAQ,IAAID,IAAIF;YAEtB,KAAK,MAAM3B,MAAM0B,SAAU;gBACvB,IAAI,CAACI,MAAM1B,GAAG,CAACJ,KAAK;oBAChB,IAAI,CAACgB,kBAAkB,CAAChB,IAAI;gBAChC;YACJ;YAEA,KAAK,MAAMA,MAAM2B,SAAU;gBACvB,IAAI,CAACC,OAAOxB,GAAG,CAACJ,KAAK;oBACjB,IAAI,CAACgB,kBAAkB,CAAChB,IAAI;gBAChC;YACJ;QACJ;IACJ;AA+CJ"}
@@ -1,2 +1,3 @@
1
- export {};
1
+ export { };
2
+
2
3
  //# sourceMappingURL=product-detail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-detail.js","sourceRoot":"","sources":["../../../src/demo/master-detail/product-detail.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/product-detail.ts"],"sourcesContent":["export interface ProductDetail {\n ProductID: number;\n Field: string;\n IsLocked?: boolean;\n OldValue: string;\n NewValue: string;\n}\n"],"names":[],"mappings":"AAAA,WAMC"}
@@ -3,53 +3,54 @@ export const productDetails = [
3
3
  ProductID: 1,
4
4
  Field: 'QuantityPerUnit',
5
5
  OldValue: '12 boxes x 24 bags',
6
- NewValue: '10 boxes x 20 bags',
6
+ NewValue: '10 boxes x 20 bags'
7
7
  },
8
8
  {
9
9
  ProductID: 1,
10
10
  Field: 'UnitPrice',
11
11
  OldValue: '25.0',
12
- NewValue: '18.0',
12
+ NewValue: '18.0'
13
13
  },
14
14
  {
15
15
  ProductID: 2,
16
16
  Field: 'Supplier',
17
17
  IsLocked: true,
18
18
  OldValue: 'Adam',
19
- NewValue: 'Dan',
19
+ NewValue: 'Dan'
20
20
  },
21
21
  {
22
22
  ProductID: 2,
23
23
  Field: 'UnitPrice',
24
24
  OldValue: '18.5',
25
- NewValue: '19.0',
25
+ NewValue: '19.0'
26
26
  },
27
27
  {
28
28
  ProductID: 2,
29
29
  Field: 'UnitsInStock',
30
30
  OldValue: '5',
31
- NewValue: '17',
31
+ NewValue: '17'
32
32
  },
33
33
  {
34
34
  ProductID: 2,
35
35
  Field: 'Discontinued',
36
36
  IsLocked: true,
37
37
  OldValue: 'true',
38
- NewValue: 'false',
38
+ NewValue: 'false'
39
39
  },
40
40
  {
41
41
  ProductID: 3,
42
42
  Field: 'Discontinued',
43
43
  IsLocked: true,
44
44
  OldValue: 'false',
45
- NewValue: 'true',
45
+ NewValue: 'true'
46
46
  },
47
47
  {
48
48
  ProductID: 3,
49
49
  Field: 'UnitsInStock',
50
50
  IsLocked: true,
51
51
  OldValue: '7',
52
- NewValue: '5',
53
- },
52
+ NewValue: '5'
53
+ }
54
54
  ];
55
+
55
56
  //# sourceMappingURL=product-details.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-details.js","sourceRoot":"","sources":["../../../src/demo/master-detail/product-details.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC3C;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,oBAAoB;KACjC;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACnB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;KAClB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACnB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,OAAO;KACpB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,MAAM;KACnB;IACD;QACI,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;KAChB;CACJ,CAAC"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/product-details.ts"],"sourcesContent":["import { ProductDetail } from './product-detail';\n\nexport const productDetails: ProductDetail[] = [\n {\n ProductID: 1,\n Field: 'QuantityPerUnit',\n OldValue: '12 boxes x 24 bags',\n NewValue: '10 boxes x 20 bags',\n },\n {\n ProductID: 1,\n Field: 'UnitPrice',\n OldValue: '25.0',\n NewValue: '18.0',\n },\n {\n ProductID: 2,\n Field: 'Supplier',\n IsLocked: true,\n OldValue: 'Adam',\n NewValue: 'Dan',\n },\n {\n ProductID: 2,\n Field: 'UnitPrice',\n OldValue: '18.5',\n NewValue: '19.0',\n },\n {\n ProductID: 2,\n Field: 'UnitsInStock',\n OldValue: '5',\n NewValue: '17',\n },\n {\n ProductID: 2,\n Field: 'Discontinued',\n IsLocked: true,\n OldValue: 'true',\n NewValue: 'false',\n },\n {\n ProductID: 3,\n Field: 'Discontinued',\n IsLocked: true,\n OldValue: 'false',\n NewValue: 'true',\n },\n {\n ProductID: 3,\n Field: 'UnitsInStock',\n IsLocked: true,\n OldValue: '7',\n NewValue: '5',\n },\n];\n"],"names":["productDetails","ProductID","Field","OldValue","NewValue","IsLocked"],"mappings":"AAEA,OAAO,MAAMA,iBAAkC;IAC3C;QACIC,WAAW;QACXC,OAAO;QACPC,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPC,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPG,UAAU;QACVF,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPC,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPC,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPG,UAAU;QACVF,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPG,UAAU;QACVF,UAAU;QACVC,UAAU;IACd;IACA;QACIH,WAAW;QACXC,OAAO;QACPG,UAAU;QACVF,UAAU;QACVC,UAAU;IACd;CACH,CAAC"}
@@ -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
- })(UserRole || (UserRole = {}));
9
- export var Supplier;
10
- (function (Supplier) {
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
- })(Supplier || (Supplier = {}));
14
+ return Supplier;
15
+ }({});
16
+
16
17
  //# sourceMappingURL=product.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../src/demo/master-detail/product.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAChB,qDAAW,CAAA;IACX,mDAAU,CAAA;IACV,yDAAa,CAAA;IACb,yCAAK,CAAA;IACL,yCAAK,CAAA;AACT,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAChB,qCAAO,CAAA;IACP,uCAAI,CAAA;IACJ,6CAAO,CAAA;IACP,+CAAQ,CAAA;AACZ,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB"}
1
+ {"version":3,"sources":["../../../src/demo/master-detail/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 Product {\n ProductID: number;\n ProductName: string;\n Supplier: Supplier;\n CategoryID: number;\n QuantityPerUnit: string;\n UnitPrice: number;\n UnitsInStock: number;\n UnitsOnOrder: Date;\n Discontinued: boolean;\n AvailableFor?: UserRole;\n}\n"],"names":["UserRole","Supplier"],"mappings":"AAAA,OAAO,IAAA,AAAKA,kCAAAA;;;;;;WAAAA;MAMX;AAED,OAAO,IAAA,AAAKC,kCAAAA;;;;;WAAAA;MAKX"}
@@ -10,7 +10,7 @@ export const products = [
10
10
  UnitsInStock: 39,
11
11
  UnitsOnOrder: new Date('1/11/2019'),
12
12
  Discontinued: false,
13
- AvailableFor: UserRole.Admin,
13
+ AvailableFor: UserRole.Admin
14
14
  },
15
15
  {
16
16
  ProductID: 2,
@@ -21,7 +21,7 @@ export const products = [
21
21
  UnitPrice: 19.0,
22
22
  UnitsInStock: 17,
23
23
  UnitsOnOrder: new Date('2/11/2019'),
24
- Discontinued: false,
24
+ Discontinued: false
25
25
  },
26
26
  {
27
27
  ProductID: 3,
@@ -33,7 +33,7 @@ export const products = [
33
33
  UnitsInStock: 13,
34
34
  UnitsOnOrder: new Date('3/11/2019'),
35
35
  Discontinued: false,
36
- AvailableFor: UserRole.Owner,
36
+ AvailableFor: UserRole.Owner
37
37
  },
38
38
  {
39
39
  ProductID: 4,
@@ -44,7 +44,7 @@ export const products = [
44
44
  UnitPrice: 22.0,
45
45
  UnitsInStock: 53,
46
46
  UnitsOnOrder: new Date('4/11/2019'),
47
- Discontinued: false,
47
+ Discontinued: false
48
48
  },
49
49
  {
50
50
  ProductID: 5,
@@ -56,7 +56,7 @@ export const products = [
56
56
  UnitsInStock: 0,
57
57
  UnitsOnOrder: new Date('5/11/2019'),
58
58
  Discontinued: true,
59
- AvailableFor: UserRole.GeneralOffice,
59
+ AvailableFor: UserRole.GeneralOffice
60
60
  },
61
61
  {
62
62
  ProductID: 6,
@@ -67,7 +67,7 @@ export const products = [
67
67
  UnitPrice: 25.0,
68
68
  UnitsInStock: 120,
69
69
  UnitsOnOrder: new Date('6/11/2019'),
70
- Discontinued: false,
70
+ Discontinued: false
71
71
  },
72
72
  {
73
73
  ProductID: 7,
@@ -78,7 +78,7 @@ export const products = [
78
78
  UnitPrice: 30.0,
79
79
  UnitsInStock: 15,
80
80
  UnitsOnOrder: new Date('7/11/2019'),
81
- Discontinued: false,
81
+ Discontinued: false
82
82
  },
83
83
  {
84
84
  ProductID: 8,
@@ -89,7 +89,7 @@ export const products = [
89
89
  UnitPrice: 40.0,
90
90
  UnitsInStock: 6,
91
91
  UnitsOnOrder: new Date('8/11/2019'),
92
- Discontinued: false,
92
+ Discontinued: false
93
93
  },
94
94
  {
95
95
  ProductID: 9,
@@ -100,7 +100,7 @@ export const products = [
100
100
  UnitPrice: 97.0,
101
101
  UnitsInStock: 29,
102
102
  UnitsOnOrder: new Date('9/11/2019'),
103
- Discontinued: true,
103
+ Discontinued: true
104
104
  },
105
105
  {
106
106
  ProductID: 10,
@@ -111,7 +111,8 @@ export const products = [
111
111
  UnitPrice: 31.0,
112
112
  UnitsInStock: 31,
113
113
  UnitsOnOrder: new Date('10/11/2019'),
114
- Discontinued: false,
115
- },
114
+ Discontinued: false
115
+ }
116
116
  ];
117
+
117
118
  //# sourceMappingURL=products.js.map