@leavittsoftware/web 9.9.0 → 10.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.
Files changed (223) hide show
  1. package/.ncurc.js +1 -1
  2. package/CLAUDE.md +1320 -0
  3. package/LICENSE.md +1 -1
  4. package/leavitt/api-service/api-service.js +3 -2
  5. package/leavitt/api-service/api-service.js.map +1 -1
  6. package/leavitt/api-service/blob-response.js +1 -0
  7. package/leavitt/api-service/blob-response.js.map +1 -1
  8. package/leavitt/app/app-logo.js +1 -1
  9. package/leavitt/app/app-logo.js.map +1 -1
  10. package/leavitt/app/app-main-content-container.js +5 -0
  11. package/leavitt/app/app-main-content-container.js.map +1 -1
  12. package/leavitt/app/app-navigation-header.js +10 -10
  13. package/leavitt/app/app-navigation-header.js.map +1 -1
  14. package/leavitt/company-select/company-select.js +2 -2
  15. package/leavitt/company-select/company-select.js.map +1 -1
  16. package/leavitt/email-history-viewer/email-history-viewer-filled-filter-dialog.d.ts +3 -369
  17. package/leavitt/email-history-viewer/email-history-viewer-filled-filter-dialog.js +15 -9
  18. package/leavitt/email-history-viewer/email-history-viewer-filled-filter-dialog.js.map +1 -1
  19. package/leavitt/email-history-viewer/email-history-viewer-filled.d.ts +3 -374
  20. package/leavitt/email-history-viewer/email-history-viewer-filled.js +15 -33
  21. package/leavitt/email-history-viewer/email-history-viewer-filled.js.map +1 -1
  22. package/leavitt/email-history-viewer/view-email-template-info-dialog.d.ts +3 -369
  23. package/leavitt/email-history-viewer/view-email-template-info-dialog.js +12 -5
  24. package/leavitt/email-history-viewer/view-email-template-info-dialog.js.map +1 -1
  25. package/leavitt/email-history-viewer/view-sent-email-dialog.d.ts +3 -369
  26. package/leavitt/email-history-viewer/view-sent-email-dialog.js +13 -6
  27. package/leavitt/email-history-viewer/view-sent-email-dialog.js.map +1 -1
  28. package/leavitt/error-page/error-page.d.ts +4 -2
  29. package/leavitt/error-page/error-page.js +126 -37
  30. package/leavitt/error-page/error-page.js.map +1 -1
  31. package/leavitt/file-explorer/add-folder-modal.d.ts +3 -369
  32. package/leavitt/file-explorer/add-folder-modal.js +13 -6
  33. package/leavitt/file-explorer/add-folder-modal.js.map +1 -1
  34. package/leavitt/file-explorer/file-explorer-image.js.map +1 -1
  35. package/leavitt/file-explorer/file-explorer.d.ts +5 -371
  36. package/leavitt/file-explorer/file-explorer.js +35 -30
  37. package/leavitt/file-explorer/file-explorer.js.map +1 -1
  38. package/leavitt/file-explorer/file-list-item.js.map +1 -1
  39. package/leavitt/file-explorer/file-modal.d.ts +3 -369
  40. package/leavitt/file-explorer/file-modal.js +12 -5
  41. package/leavitt/file-explorer/file-modal.js.map +1 -1
  42. package/leavitt/file-explorer/folder-list-item.js.map +1 -1
  43. package/leavitt/file-explorer/folder-modal.d.ts +3 -369
  44. package/leavitt/file-explorer/folder-modal.js +12 -5
  45. package/leavitt/file-explorer/folder-modal.js.map +1 -1
  46. package/leavitt/person-company-select/person-company-select.js +5 -3
  47. package/leavitt/person-company-select/person-company-select.js.map +1 -1
  48. package/leavitt/person-group-select/person-group-select.js +5 -3
  49. package/leavitt/person-group-select/person-group-select.js.map +1 -1
  50. package/leavitt/person-select/person-select.js +3 -2
  51. package/leavitt/person-select/person-select.js.map +1 -1
  52. package/leavitt/profile-picture/profile-picture-menu.js +2 -0
  53. package/leavitt/profile-picture/profile-picture-menu.js.map +1 -1
  54. package/leavitt/profile-picture/profile-picture.js +4 -4
  55. package/leavitt/profile-picture/profile-picture.js.map +1 -1
  56. package/leavitt/service-worker-notifier/service-worker-notifier.js.map +1 -1
  57. package/leavitt/theme/theme-preference.js +4 -0
  58. package/leavitt/theme/theme-preference.js.map +1 -1
  59. package/leavitt/user-feedback/provide-feedback-dialog.d.ts +3 -369
  60. package/leavitt/user-feedback/provide-feedback-dialog.js +11 -4
  61. package/leavitt/user-feedback/provide-feedback-dialog.js.map +1 -1
  62. package/leavitt/user-feedback/report-a-problem-dialog.d.ts +3 -369
  63. package/leavitt/user-feedback/report-a-problem-dialog.js +11 -4
  64. package/leavitt/user-feedback/report-a-problem-dialog.js.map +1 -1
  65. package/leavitt/user-manager/auth-zero-lg-user-manager.js +5 -5
  66. package/leavitt/user-manager/auth-zero-lg-user-manager.js.map +1 -1
  67. package/package.json +8 -10
  68. package/titanium/address-input/address-input.js +0 -2
  69. package/titanium/address-input/address-input.js.map +1 -1
  70. package/titanium/address-input/google-address-input.d.ts +1 -0
  71. package/titanium/address-input/google-address-input.js +62 -45
  72. package/titanium/address-input/google-address-input.js.map +1 -1
  73. package/titanium/address-input/google-maps-process-shim.d.ts +2 -0
  74. package/titanium/address-input/google-maps-process-shim.js +12 -0
  75. package/titanium/address-input/google-maps-process-shim.js.map +1 -0
  76. package/titanium/address-input/manual-address-dialog.d.ts +2 -7
  77. package/titanium/address-input/manual-address-dialog.js +21 -34
  78. package/titanium/address-input/manual-address-dialog.js.map +1 -1
  79. package/titanium/address-input/utils/place-result-to-address.d.ts +1 -1
  80. package/titanium/address-input/utils/place-result-to-address.js +31 -30
  81. package/titanium/address-input/utils/place-result-to-address.js.map +1 -1
  82. package/titanium/chip/chip.d.ts +0 -1
  83. package/titanium/chip/chip.js +7 -17
  84. package/titanium/chip/chip.js.map +1 -1
  85. package/titanium/chip-multi-select/chip-multi-select.d.ts +3 -8
  86. package/titanium/chip-multi-select/chip-multi-select.js +41 -62
  87. package/titanium/chip-multi-select/chip-multi-select.js.map +1 -1
  88. package/titanium/circle-loading-indicator/circle-loading-indicator.js +5 -5
  89. package/titanium/circle-loading-indicator/circle-loading-indicator.js.map +1 -1
  90. package/titanium/confirmation-dialog/confirmation-dialog.js +2 -0
  91. package/titanium/confirmation-dialog/confirmation-dialog.js.map +1 -1
  92. package/titanium/data-table/data-table-action-bar.js +1 -5
  93. package/titanium/data-table/data-table-action-bar.js.map +1 -1
  94. package/titanium/data-table/data-table-core-reorder-dialog.d.ts +3 -369
  95. package/titanium/data-table/data-table-core-reorder-dialog.js +10 -3
  96. package/titanium/data-table/data-table-core-reorder-dialog.js.map +1 -1
  97. package/titanium/data-table/data-table-core-reorder-item.js.map +1 -1
  98. package/titanium/data-table/data-table-core-settings-choose-columns-dialog.js.map +1 -1
  99. package/titanium/data-table/data-table-core-settings-choose-columns-item.js +3 -3
  100. package/titanium/data-table/data-table-core-settings-choose-columns-item.js.map +1 -1
  101. package/titanium/data-table/data-table-core-settings-sort-dialog.js.map +1 -1
  102. package/titanium/data-table/data-table-core-settings-sort-item.js +3 -3
  103. package/titanium/data-table/data-table-core-settings-sort-item.js.map +1 -1
  104. package/titanium/data-table/data-table-core.d.ts +5 -369
  105. package/titanium/data-table/data-table-core.js +13 -2
  106. package/titanium/data-table/data-table-core.js.map +1 -1
  107. package/titanium/data-table/draggable-item-base.js +6 -0
  108. package/titanium/data-table/draggable-item-base.js.map +1 -1
  109. package/titanium/data-table/filter-controller.js.map +1 -1
  110. package/titanium/data-table/page-control.d.ts +3 -8
  111. package/titanium/data-table/page-control.js +13 -33
  112. package/titanium/data-table/page-control.js.map +1 -1
  113. package/titanium/date-input/date-input.d.ts +1 -6
  114. package/titanium/date-input/date-input.js +8 -44
  115. package/titanium/date-input/date-input.js.map +1 -1
  116. package/titanium/date-range-selector/date-range-selector.d.ts +1 -6
  117. package/titanium/date-range-selector/date-range-selector.js +15 -35
  118. package/titanium/date-range-selector/date-range-selector.js.map +1 -1
  119. package/titanium/drawer/drawer.d.ts +1 -6
  120. package/titanium/drawer/drawer.js +4 -23
  121. package/titanium/drawer/drawer.js.map +1 -1
  122. package/titanium/event-bus/event-bus.js.map +1 -1
  123. package/titanium/helpers/debouncer.js.map +1 -1
  124. package/titanium/helpers/helpers.d.ts +0 -1
  125. package/titanium/helpers/helpers.js +0 -1
  126. package/titanium/helpers/helpers.js.map +1 -1
  127. package/titanium/helpers/pending-state-catcher.d.ts +7 -406
  128. package/titanium/helpers/pending-state-catcher.js +85 -82
  129. package/titanium/helpers/pending-state-catcher.js.map +1 -1
  130. package/titanium/input-validator/filled-input-validator.js.map +1 -1
  131. package/titanium/profile-picture-stack/profile-picture-stack.js +2 -2
  132. package/titanium/profile-picture-stack/profile-picture-stack.js.map +1 -1
  133. package/titanium/search-input/filled-search-input.js.map +1 -1
  134. package/titanium/show-hide/show-hide.d.ts +1 -6
  135. package/titanium/show-hide/show-hide.js +2 -18
  136. package/titanium/show-hide/show-hide.js.map +1 -1
  137. package/titanium/single-select-base/single-select-base.d.ts +11 -381
  138. package/titanium/single-select-base/single-select-base.js +43 -50
  139. package/titanium/single-select-base/single-select-base.js.map +1 -1
  140. package/titanium/smart-attachment-input/crop-and-save-image-dialog.d.ts +3 -369
  141. package/titanium/smart-attachment-input/crop-and-save-image-dialog.js +21 -16
  142. package/titanium/smart-attachment-input/crop-and-save-image-dialog.js.map +1 -1
  143. package/titanium/smart-attachment-input/image-preview-dialog.js.map +1 -1
  144. package/titanium/smart-attachment-input/smart-attachment-input.d.ts +1 -6
  145. package/titanium/smart-attachment-input/smart-attachment-input.js +5 -18
  146. package/titanium/smart-attachment-input/smart-attachment-input.js.map +1 -1
  147. package/titanium/snackbar/snackbar-stack.js +2 -2
  148. package/titanium/snackbar/snackbar-stack.js.map +1 -1
  149. package/titanium/snackbar/snackbars/http-error-snackbar.js +1 -1
  150. package/titanium/snackbar/snackbars/http-error-snackbar.js.map +1 -1
  151. package/titanium/snackbar/snackbars/simple-snackbar.js +3 -3
  152. package/titanium/snackbar/snackbars/simple-snackbar.js.map +1 -1
  153. package/titanium/toolbar/toolbar.js +1 -1
  154. package/titanium/toolbar/toolbar.js.map +1 -1
  155. package/leavitt/api-service/object-to-form-data.test.d.ts +0 -2
  156. package/leavitt/api-service/object-to-form-data.test.js +0 -229
  157. package/leavitt/api-service/object-to-form-data.test.js.map +0 -1
  158. package/leavitt/email-history-viewer/email-history-view-list-filter-dialog.d.ts +0 -394
  159. package/leavitt/email-history-viewer/email-history-view-list-filter-dialog.js +0 -233
  160. package/leavitt/email-history-viewer/email-history-view-list-filter-dialog.js.map +0 -1
  161. package/leavitt/email-history-viewer/email-history-viewer.d.ts +0 -413
  162. package/leavitt/email-history-viewer/email-history-viewer.js +0 -403
  163. package/leavitt/email-history-viewer/email-history-viewer.js.map +0 -1
  164. package/leavitt/user-feedback/user-feedback.d.ts +0 -390
  165. package/leavitt/user-feedback/user-feedback.js +0 -221
  166. package/leavitt/user-feedback/user-feedback.js.map +0 -1
  167. package/titanium/access-denied-page/access-denied-page.d.ts +0 -16
  168. package/titanium/access-denied-page/access-denied-page.js +0 -359
  169. package/titanium/access-denied-page/access-denied-page.js.map +0 -1
  170. package/titanium/card/card.d.ts +0 -24
  171. package/titanium/card/card.js +0 -188
  172. package/titanium/card/card.js.map +0 -1
  173. package/titanium/confirm-dialog/confirm-dialog-open-event.d.ts +0 -10
  174. package/titanium/confirm-dialog/confirm-dialog-open-event.js +0 -12
  175. package/titanium/confirm-dialog/confirm-dialog-open-event.js.map +0 -1
  176. package/titanium/confirm-dialog/confirm-dialog.d.ts +0 -25
  177. package/titanium/confirm-dialog/confirm-dialog.js +0 -104
  178. package/titanium/confirm-dialog/confirm-dialog.js.map +0 -1
  179. package/titanium/data-table/data-table-header.d.ts +0 -68
  180. package/titanium/data-table/data-table-header.js +0 -295
  181. package/titanium/data-table/data-table-header.js.map +0 -1
  182. package/titanium/data-table/data-table-item.d.ts +0 -99
  183. package/titanium/data-table/data-table-item.js +0 -561
  184. package/titanium/data-table/data-table-item.js.map +0 -1
  185. package/titanium/data-table/data-table.d.ts +0 -127
  186. package/titanium/data-table/data-table.js +0 -688
  187. package/titanium/data-table/data-table.js.map +0 -1
  188. package/titanium/duration-input/duration-input.d.ts +0 -31
  189. package/titanium/duration-input/duration-input.js +0 -126
  190. package/titanium/duration-input/duration-input.js.map +0 -1
  191. package/titanium/duration-input/outlined-duration-input.d.ts +0 -30
  192. package/titanium/duration-input/outlined-duration-input.js +0 -109
  193. package/titanium/duration-input/outlined-duration-input.js.map +0 -1
  194. package/titanium/error-page/error-page.d.ts +0 -16
  195. package/titanium/error-page/error-page.js +0 -95
  196. package/titanium/error-page/error-page.js.map +0 -1
  197. package/titanium/extendable-outlined-text-field/extendable-outlined-text-field.d.ts +0 -168
  198. package/titanium/extendable-outlined-text-field/extendable-outlined-text-field.js +0 -373
  199. package/titanium/extendable-outlined-text-field/extendable-outlined-text-field.js.map +0 -1
  200. package/titanium/full-page-loading-indicator/full-page-loading-indicator.d.ts +0 -17
  201. package/titanium/full-page-loading-indicator/full-page-loading-indicator.js +0 -121
  202. package/titanium/full-page-loading-indicator/full-page-loading-indicator.js.map +0 -1
  203. package/titanium/header/header.d.ts +0 -39
  204. package/titanium/header/header.js +0 -167
  205. package/titanium/header/header.js.map +0 -1
  206. package/titanium/helpers/load-while.d.ts +0 -374
  207. package/titanium/helpers/load-while.js +0 -28
  208. package/titanium/helpers/load-while.js.map +0 -1
  209. package/titanium/input-validator/input-validator.d.ts +0 -20
  210. package/titanium/input-validator/input-validator.js +0 -48
  211. package/titanium/input-validator/input-validator.js.map +0 -1
  212. package/titanium/input-validator/outlined-input-validator.d.ts +0 -20
  213. package/titanium/input-validator/outlined-input-validator.js +0 -48
  214. package/titanium/input-validator/outlined-input-validator.js.map +0 -1
  215. package/titanium/search-input/search-input.d.ts +0 -29
  216. package/titanium/search-input/search-input.js +0 -123
  217. package/titanium/search-input/search-input.js.map +0 -1
  218. package/titanium/service-worker-notifier/service-worker-notifier.d.ts +0 -9
  219. package/titanium/service-worker-notifier/service-worker-notifier.js +0 -58
  220. package/titanium/service-worker-notifier/service-worker-notifier.js.map +0 -1
  221. package/titanium/youtube-input/youtube-input.d.ts +0 -20
  222. package/titanium/youtube-input/youtube-input.js +0 -72
  223. package/titanium/youtube-input/youtube-input.js.map +0 -1
@@ -1,688 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import './page-control';
3
- import '@material/web/checkbox/checkbox';
4
- import '@material/web/progress/linear-progress';
5
- import '@material/web/icon/icon';
6
- import { css, html, LitElement } from 'lit';
7
- import { property, customElement, query, queryAsync, state } from 'lit/decorators.js';
8
- import { DataTableItemDropEvent } from './data-table-item';
9
- import { h1, ellipsis } from '../../titanium/styles/styles';
10
- import { niceBadgeStyles } from '../styles/nice-badge';
11
- /**
12
- * Material design inspired data table with paging, sorting, multi/single select, table actions, selected actions and more!
13
- *
14
- * @element titanium-data-table
15
- *
16
- * @fires selected-changed - Fired when a row or rows in the data table is selected. detail: array<unknown>
17
- * @fires titanium-data-table-items-reorder - Fired when table items are resorted by user.
18
- * @fires paging-changed - Fired when take or page is changed by click or keyboard action.
19
- *
20
- * @slot table-actions - item nonspecific table buttons such as add new item
21
- * @slot filter-button - filter button slot
22
- * @slot filters - filter chips slot
23
- * @slot search-button - search button slot
24
- * @slot selected-actions - item specific table buttons such as edit, delete shown when one or more items are selected
25
- * @slot table-headers - slot for table headers (ex. titanium-data-table-header)
26
- * @slot items - slot for table rows (ex. titanium-data-table-item)
27
- * @slot footer - slot for additional footer items. Slotting here overwrites footer-buttons.
28
- * @slot footer-buttons - slot for footer action buttons
29
- *
30
- * @cssprop {Color} [var(--md-sys-color-outline-variant)] - Table border color
31
- * @cssprop {Color} [--titanium-data-table-font-family=Roboto, Noto, sans-serif] - Set the font family used on the data table and paging control
32
- */
33
- let TitaniumDataTable = class TitaniumDataTable extends LitElement {
34
- #header_accessor_storage;
35
- /**
36
- * Table heading / title
37
- */
38
- get header() { return this.#header_accessor_storage; }
39
- set header(value) { this.#header_accessor_storage = value; }
40
- #localStorageKey_accessor_storage;
41
- /**
42
- * Local storage key. Not required if header is static and unique
43
- */
44
- get localStorageKey() { return this.#localStorageKey_accessor_storage; }
45
- set localStorageKey(value) { this.#localStorageKey_accessor_storage = value; }
46
- #pageSizes_accessor_storage = [10, 15, 20, 50];
47
- /**
48
- * Available page sizes
49
- */
50
- get pageSizes() { return this.#pageSizes_accessor_storage; }
51
- set pageSizes(value) { this.#pageSizes_accessor_storage = value; }
52
- #defaultPageSize_accessor_storage = 10;
53
- /**
54
- * The default page size before the user changes it
55
- */
56
- get defaultPageSize() { return this.#defaultPageSize_accessor_storage; }
57
- set defaultPageSize(value) { this.#defaultPageSize_accessor_storage = value; }
58
- #count_accessor_storage;
59
- /**
60
- * Total number of items in all pages.
61
- */
62
- get count() { return this.#count_accessor_storage; }
63
- set count(value) { this.#count_accessor_storage = value; }
64
- #items_accessor_storage = [];
65
- /**
66
- * Current items displayed on the table.
67
- */
68
- get items() { return this.#items_accessor_storage; }
69
- set items(value) { this.#items_accessor_storage = value; }
70
- #searchTerm_accessor_storage;
71
- /**
72
- * Current search term shown in the no result state if no results are found
73
- */
74
- get searchTerm() { return this.#searchTerm_accessor_storage; }
75
- set searchTerm(value) { this.#searchTerm_accessor_storage = value; }
76
- #singleSelect_accessor_storage;
77
- /**
78
- * Limits table selection mode to single-select. Default is multi-select.
79
- */
80
- get singleSelect() { return this.#singleSelect_accessor_storage; }
81
- set singleSelect(value) { this.#singleSelect_accessor_storage = value; }
82
- #disableSelect_accessor_storage = false;
83
- /**
84
- * Disables all item selection on the data-table.
85
- */
86
- get disableSelect() { return this.#disableSelect_accessor_storage; }
87
- set disableSelect(value) { this.#disableSelect_accessor_storage = value; }
88
- #disablePaging_accessor_storage = false;
89
- /**
90
- * Disables paging.
91
- */
92
- get disablePaging() { return this.#disablePaging_accessor_storage; }
93
- set disablePaging(value) { this.#disablePaging_accessor_storage = value; }
94
- #selected_accessor_storage = [];
95
- /**
96
- * Array of currently selected data table objects
97
- */
98
- get selected() { return this.#selected_accessor_storage; }
99
- set selected(value) { this.#selected_accessor_storage = value; }
100
- #itemsContainer_accessor_storage;
101
- get itemsContainer() { return this.#itemsContainer_accessor_storage; }
102
- set itemsContainer(value) { this.#itemsContainer_accessor_storage = value; }
103
- #itemsSlot_accessor_storage;
104
- get itemsSlot() { return this.#itemsSlot_accessor_storage; }
105
- set itemsSlot(value) { this.#itemsSlot_accessor_storage = value; }
106
- #narrow_accessor_storage = false;
107
- get narrow() { return this.#narrow_accessor_storage; }
108
- set narrow(value) { this.#narrow_accessor_storage = value; }
109
- #hasDragItems_accessor_storage;
110
- get hasDragItems() { return this.#hasDragItems_accessor_storage; }
111
- set hasDragItems(value) { this.#hasDragItems_accessor_storage = value; }
112
- #narrowMaxWidth_accessor_storage = 560;
113
- get narrowMaxWidth() { return this.#narrowMaxWidth_accessor_storage; }
114
- set narrowMaxWidth(value) { this.#narrowMaxWidth_accessor_storage = value; }
115
- #isLoading_accessor_storage;
116
- get isLoading() { return this.#isLoading_accessor_storage; }
117
- set isLoading(value) { this.#isLoading_accessor_storage = value; }
118
- #tableHeaders_accessor_storage;
119
- get tableHeaders() { return this.#tableHeaders_accessor_storage; }
120
- set tableHeaders(value) { this.#tableHeaders_accessor_storage = value; }
121
- #checkbox_accessor_storage;
122
- get checkbox() { return this.#checkbox_accessor_storage; }
123
- set checkbox(value) { this.#checkbox_accessor_storage = value; }
124
- #pageControl_accessor_storage;
125
- get pageControl() { return this.#pageControl_accessor_storage; }
126
- set pageControl(value) { this.#pageControl_accessor_storage = value; }
127
- #openCount = 0;
128
- /**
129
- * returns internal pageControl's current take
130
- */
131
- async getTake() {
132
- return (await this.pageControl)?.take ?? 0;
133
- }
134
- /**
135
- * returns internal pageControl's current page
136
- */
137
- async getPage() {
138
- return (await this.pageControl)?.page ?? 0;
139
- }
140
- /**
141
- * sets internal pageControl's current take
142
- */
143
- async setTake(take) {
144
- const control = await this.pageControl;
145
- if (control) {
146
- control.take = take;
147
- }
148
- }
149
- /**
150
- * sets internal pageControl's current page
151
- */
152
- async setPage(page) {
153
- const control = await this.pageControl;
154
- if (control) {
155
- control.page = page;
156
- }
157
- }
158
- /**
159
- * resets internal pageControl's current page to 0
160
- */
161
- async resetPage() {
162
- await this.setPage(0);
163
- }
164
- async firstUpdated() {
165
- if (typeof ResizeObserver === 'function') {
166
- const ro = new ResizeObserver((entries) => {
167
- for (const entry of entries) {
168
- const cr = entry.contentRect;
169
- this.narrow = cr.width < this.narrowMaxWidth;
170
- this.updateChildrenIsNarrow();
171
- }
172
- });
173
- ro.observe(this);
174
- }
175
- else {
176
- const mql = window.matchMedia('(max-width: 768px)');
177
- mql.addEventListener('change', (e) => {
178
- this.narrow = e.matches;
179
- this.updateChildrenIsNarrow();
180
- });
181
- this.narrow = mql.matches;
182
- this.updateChildrenIsNarrow();
183
- }
184
- this.addEventListener(DataTableItemDropEvent.eventType, (e) => {
185
- e.stopPropagation();
186
- //HoverIndex cannot be dropped beyond the length of the array
187
- const hoverIndex = Math.min(e.hoverIndex, this.items.length - 1);
188
- //Ignore if item goes back to where it started
189
- if (hoverIndex !== e.originIndex) {
190
- const temp = this.items[e.originIndex];
191
- this.items.splice(e.originIndex, 1);
192
- this.items.splice(hoverIndex, 0, temp);
193
- /**
194
- * @ignore
195
- */
196
- this.dispatchEvent(new DataTableItemsReorderedEvent());
197
- }
198
- });
199
- //When slotted in items change, sync the narrow prop
200
- this.tableHeaders.addEventListener('slotchange', () => this.updateChildrenIsNarrow());
201
- this.itemsSlot.addEventListener('slotchange', () => this.updateChildrenIsNarrow());
202
- await (await this.pageControl)?.updateComplete;
203
- }
204
- updateChildrenIsNarrow() {
205
- this.hasDragItems = this.itemsSlot.assignedElements().some((o) => o.enableDrag);
206
- this.itemsSlot.assignedElements().forEach((o) => (o.narrow = this.narrow));
207
- this.tableHeaders.assignedElements().forEach((o) => (o.narrow = this.narrow));
208
- }
209
- /**
210
- * de-select all table items and clear this.selected
211
- */
212
- clearSelection() {
213
- this.#deselectAll();
214
- // Ensure the collection is empty, deselect can cause a race condition
215
- // between deselecting and UI drawing new items.
216
- if (this.selected.length > 0) {
217
- this.selected = [];
218
- this.#notifySelectedChanged();
219
- }
220
- }
221
- updated(changedProps) {
222
- if (changedProps.has('items') && changedProps.get('items') !== this.items) {
223
- // Clear selection when items array changes.
224
- this.clearSelection();
225
- }
226
- }
227
- #notifySelectedChanged() {
228
- this.dispatchEvent(new CustomEvent('selected-changed', { composed: true, detail: this.selected }));
229
- }
230
- /**
231
- * display linear progress bar while promise is active
232
- */
233
- async loadWhile(promise) {
234
- this.isLoading = true;
235
- this.#openCount++;
236
- try {
237
- await promise;
238
- }
239
- finally {
240
- this.#openCount--;
241
- if (this.#openCount === 0) {
242
- this.isLoading = false;
243
- }
244
- }
245
- }
246
- #deselectAll() {
247
- this.#getTableItems().forEach((o) => o.deselect());
248
- }
249
- /**
250
- * select all table items
251
- */
252
- selectAll() {
253
- if (!this.singleSelect) {
254
- this.#getTableItems().forEach((o) => o.select());
255
- }
256
- }
257
- #getTableItems() {
258
- return this.itemsSlot.assignedElements().filter((o) => typeof o.select === 'function' && typeof o.deselect === 'function');
259
- }
260
- static { this.styles = [
261
- h1,
262
- ellipsis,
263
- niceBadgeStyles,
264
- css `
265
- :host {
266
- display: flex;
267
- flex-direction: column;
268
-
269
- border: 1px solid var(--md-sys-color-outline-variant);
270
- background-color: var(--md-sys-color-surface);
271
- color: var(--md-sys-color-on-surface);
272
- border-radius: 8px;
273
- font-family: var(--titanium-data-table-font-family, Roboto, Noto, sans-serif);
274
- --titanium-page-control-font-family: var(--titanium-data-table-font-family, Roboto, Noto, sans-serif);
275
- -webkit-font-smoothing: antialiased;
276
- }
277
-
278
- header {
279
- display: flex;
280
- flex-direction: column;
281
- padding-bottom: 12px;
282
- gap: 12px;
283
- border-bottom: 1px solid var(--md-sys-color-outline-variant);
284
- position: relative;
285
- }
286
-
287
- /* HEADER ROW ONE */
288
-
289
- section[row-one] {
290
- display: grid;
291
- grid: 'head menu' / 1fr auto;
292
- gap: 8px;
293
- padding: 12px 12px 0 12px;
294
- }
295
-
296
- section[row-one] div[head] {
297
- grid-area: head;
298
- }
299
-
300
- section[row-one] div[menu] {
301
- grid-area: menu;
302
- }
303
-
304
- div[search] {
305
- grid-area: search;
306
- }
307
-
308
- /* HEADER ROW TWO */
309
-
310
- section[row-two] {
311
- display: grid;
312
- grid: 'search-filter add' / 1fr auto;
313
- gap: 8px;
314
- padding: 0 12px 0 20px;
315
- }
316
-
317
- :host([narrow]) section[row-two] {
318
- grid:
319
- 'search-filter '
320
- 'add' / auto;
321
- }
322
-
323
- section[row-two] div[search-filter] {
324
- grid-area: search-filter;
325
- display: flex;
326
- flex-wrap: wrap;
327
- align-items: center;
328
- gap: 8px;
329
- }
330
-
331
- section[row-two] div[add-button] {
332
- grid-area: add;
333
- justify-self: end;
334
- align-self: end;
335
- }
336
-
337
- h1 {
338
- padding: 12px 12px 0 12px;
339
- }
340
-
341
- selected-actions {
342
- display: grid;
343
- gap: 6px 24px;
344
- grid: 'selected-text buttons';
345
- background-color: var(--md-sys-color-secondary-container);
346
- position: absolute;
347
- top: 0px;
348
- left: 0px;
349
- right: 0px;
350
- bottom: 0px;
351
- margin: 0 !important;
352
- padding: 0 12px 12px 24px;
353
- align-content: end;
354
- z-index: 1;
355
- }
356
-
357
- selected-actions h2 {
358
- color: var(--md-sys-color-on-secondary-container);
359
- font-size: 18px;
360
- font-weight: 400;
361
- align-self: end;
362
- }
363
-
364
- selected-actions div[buttons] {
365
- display: flex;
366
- flex-wrap: wrap;
367
- align-items: center;
368
- gap: 0 8px;
369
- justify-content: flex-end;
370
- }
371
-
372
- table-header {
373
- display: flex;
374
- flex-direction: row;
375
- gap: 16px;
376
- min-height: 48px;
377
- border-bottom: 1px solid var(--md-sys-color-outline-variant);
378
- }
379
-
380
- table-header ::slotted(titanium-data-table-header:last-of-type) {
381
- padding-right: 24px;
382
- }
383
-
384
- :host([has-drag-items]) table-header ::slotted(titanium-data-table-header:last-of-type) {
385
- padding-right: 40px;
386
- }
387
-
388
- md-linear-progress {
389
- width: 100%;
390
- margin-top: -4px;
391
- }
392
-
393
- main {
394
- position: relative;
395
- min-height: 48px;
396
- }
397
-
398
- content-veil {
399
- display: none;
400
- position: absolute;
401
- top: 0;
402
- left: 0;
403
- width: 100%;
404
- height: 100%;
405
- background-color: var(--md-sys-color-scrim);
406
- opacity: 0;
407
- -webkit-transition: opacity 75ms linear;
408
- -o-transition: opacity 75ms linear;
409
- transition: opacity 75ms linear;
410
- z-index: 6;
411
- }
412
-
413
- content-veil[opened] {
414
- opacity: 0.12;
415
- display: block;
416
- }
417
-
418
- table-message {
419
- display: flex;
420
- place-items: center;
421
- justify-content: center;
422
- gap: 8px;
423
- padding: 64px;
424
-
425
- font-size: 14px;
426
- z-index: 10;
427
- line-height: 20px;
428
- border-bottom: 1px solid var(--md-sys-color-outline-variant);
429
- }
430
-
431
- table-message md-icon {
432
- align-self: center;
433
- flex-shrink: 0;
434
- }
435
-
436
- footer {
437
- display: grid;
438
- grid: 'controls footer-slot' / minmax(400px, 1fr) auto;
439
- gap: 24px;
440
- padding: 12px;
441
- align-items: center;
442
- margin-top: -1px;
443
- border-top: 1px solid var(--md-sys-color-outline-variant);
444
- }
445
-
446
- titanium-page-control {
447
- grid-area: controls;
448
- margin-left: 12px;
449
- justify-self: start;
450
- }
451
-
452
- div[footer] {
453
- justify-self: end;
454
- }
455
-
456
- :host([narrow]) footer {
457
- grid:
458
- 'controls'
459
- 'footer-slot' / auto;
460
- }
461
-
462
- :host([disable-paging]) footer {
463
- grid: 'footer-slot' / auto;
464
- }
465
-
466
- footer-buttons {
467
- display: flex;
468
- gap: 12px;
469
- flex-wrap: wrap;
470
- align-items: flex-end;
471
- }
472
-
473
- div[add-button] {
474
- display: flex;
475
- align-items: center;
476
- }
477
-
478
- div[items-slot] {
479
- position: relative;
480
- }
481
-
482
- md-checkbox {
483
- flex-shrink: 0;
484
- align-self: center;
485
- margin: 0 14px 0 20px;
486
- }
487
-
488
- :host([disable-select]) table-header ::slotted(titanium-data-table-header:first-of-type) {
489
- padding-left: 24px;
490
- }
491
-
492
- :host(:not([disable-select])[single-select]) table-header {
493
- padding-left: 68px;
494
- }
495
-
496
- [hidden] {
497
- display: none !important;
498
- }
499
- `,
500
- ]; }
501
- render() {
502
- return html `
503
- <header part="header">
504
- <slot name="header">
505
- <section row-one>
506
- <div head ellipsis part="table-header-text-container">
507
- <slot name="table-header-text"> <h1 ellipsis>${this.header}</h1></slot>
508
- </div>
509
- <div menu part="table-actions-container">
510
- <slot name="table-actions"></slot>
511
- </div>
512
- </section>
513
- <section row-two>
514
- <div search-filter part="filters-container">
515
- <slot name="search-button"></slot>
516
- <slot name="filter-button"></slot>
517
- <slot name="filters"></slot>
518
- </div>
519
- <div add-button part="add-button-container">
520
- <slot name="add-button"></slot>
521
- </div>
522
- </section>
523
- </slot>
524
-
525
- <selected-actions ?hidden=${this.selected.length === 0}>
526
- <h2 ellipsis>${this.selected.length} item${this.selected.length > 1 ? 's' : ''} selected</h2>
527
- <div buttons part="selected-actions-container">
528
- <slot name="selected-actions"></slot>
529
- </div>
530
- </selected-actions>
531
- </header>
532
-
533
- <table-container
534
- @titanium-data-table-item-selected-changed=${(e) => {
535
- e.stopPropagation();
536
- const dataTableItem = e.target;
537
- if (dataTableItem.selected) {
538
- if (this.singleSelect) {
539
- this.#getTableItems()
540
- .filter((o) => o.item !== dataTableItem.item)
541
- .forEach((o) => o.deselect());
542
- }
543
- this.selected.push(dataTableItem.item);
544
- this.requestUpdate();
545
- this.#notifySelectedChanged();
546
- }
547
- else {
548
- this.selected.splice(this.selected.indexOf(dataTableItem.item), 1);
549
- this.requestUpdate();
550
- this.#notifySelectedChanged();
551
- }
552
- }}
553
- >
554
- <table-header part="table-header-container">
555
- ${this.disableSelect || this.singleSelect
556
- ? ''
557
- : html `
558
- <md-checkbox
559
- title="${this.selected.length > 0 ? 'Deselect' : 'Select'} all checkboxes"
560
- aria-label="${this.selected.length > 0 ? 'Deselect' : 'Select'} all checkboxes"
561
- ?checked=${this.selected.length > 0}
562
- ?indeterminate=${this.selected.length !== 0 && this.selected.length !== this.items.length}
563
- ?disabled=${this.items.length === 0}
564
- @click=${() => {
565
- if (this.selected.length > 0) {
566
- this.#deselectAll();
567
- }
568
- else {
569
- this.selectAll();
570
- }
571
- this.checkbox.focus();
572
- }}
573
- ></md-checkbox>
574
- `}
575
- <slot name="table-headers"></slot>
576
- </table-header>
577
- <md-linear-progress ?hidden=${!this.isLoading} ?closed=${!this.isLoading} indeterminate></md-linear-progress>
578
-
579
- <main>
580
- <div items-slot part="items-container">
581
- <slot name="items"></slot>
582
- </div>
583
- <table-message ?hidden=${this.isLoading || this.items.length > 0}>
584
- <md-icon>info</md-icon>
585
- ${this.searchTerm === '' || typeof this.searchTerm === 'undefined' || this.searchTerm === null
586
- ? 'No results'
587
- : `Your search of '${this.searchTerm}' did not match any results`}</table-message
588
- >
589
- <table-message ?hidden=${!this.isLoading || this.items.length !== 0}> Loading data... </table-message>
590
- <content-veil ?opened=${this.isLoading}></content-veil>
591
- </main>
592
- </table-container>
593
- <footer part="footer-container">
594
- <slot name="footer">
595
- ${this.disablePaging
596
- ? ''
597
- : html `
598
- <titanium-page-control
599
- label="Rows per page"
600
- ?disabled=${this.isLoading}
601
- .count=${this.count}
602
- .pageSizes=${this.pageSizes}
603
- .defaultPageSize=${this.defaultPageSize}
604
- .localStorageKey=${this.localStorageKey || `${this.header}-take`}
605
- @action=${() => {
606
- this.dispatchEvent(new CustomEvent('paging-changed', { composed: true }));
607
- }}
608
- ></titanium-page-control>
609
- `}
610
- <div footer>
611
- <footer-buttons><slot name="footer-buttons"></slot></footer-buttons>
612
- </div>
613
- </slot>
614
- </footer>
615
- `;
616
- }
617
- };
618
- __decorate([
619
- property({ type: String })
620
- ], TitaniumDataTable.prototype, "header", null);
621
- __decorate([
622
- property({ type: String, attribute: 'local-storage-key' })
623
- ], TitaniumDataTable.prototype, "localStorageKey", null);
624
- __decorate([
625
- property({ type: Array })
626
- ], TitaniumDataTable.prototype, "pageSizes", null);
627
- __decorate([
628
- property({ type: Number, attribute: 'default-page-size' })
629
- ], TitaniumDataTable.prototype, "defaultPageSize", null);
630
- __decorate([
631
- property({ type: Number })
632
- ], TitaniumDataTable.prototype, "count", null);
633
- __decorate([
634
- property({ type: Array })
635
- ], TitaniumDataTable.prototype, "items", null);
636
- __decorate([
637
- property({ type: String })
638
- ], TitaniumDataTable.prototype, "searchTerm", null);
639
- __decorate([
640
- property({ type: Boolean, attribute: 'single-select', reflect: true })
641
- ], TitaniumDataTable.prototype, "singleSelect", null);
642
- __decorate([
643
- property({ type: Boolean, attribute: 'disable-select' })
644
- ], TitaniumDataTable.prototype, "disableSelect", null);
645
- __decorate([
646
- property({ type: Boolean, attribute: 'disable-paging', reflect: true })
647
- ], TitaniumDataTable.prototype, "disablePaging", null);
648
- __decorate([
649
- property({ type: Array })
650
- ], TitaniumDataTable.prototype, "selected", null);
651
- __decorate([
652
- query('div[items-slot]')
653
- ], TitaniumDataTable.prototype, "itemsContainer", null);
654
- __decorate([
655
- query('slot[name="items"]')
656
- ], TitaniumDataTable.prototype, "itemsSlot", null);
657
- __decorate([
658
- property({ type: Boolean, reflect: true, attribute: 'narrow' })
659
- ], TitaniumDataTable.prototype, "narrow", null);
660
- __decorate([
661
- property({ type: Boolean, attribute: 'has-drag-items', reflect: true })
662
- ], TitaniumDataTable.prototype, "hasDragItems", null);
663
- __decorate([
664
- property({ type: Number, attribute: 'narrow-max-width', reflect: true })
665
- ], TitaniumDataTable.prototype, "narrowMaxWidth", null);
666
- __decorate([
667
- state()
668
- ], TitaniumDataTable.prototype, "isLoading", null);
669
- __decorate([
670
- query('slot[name="table-headers"]')
671
- ], TitaniumDataTable.prototype, "tableHeaders", null);
672
- __decorate([
673
- query('md-checkbox')
674
- ], TitaniumDataTable.prototype, "checkbox", null);
675
- __decorate([
676
- queryAsync('titanium-page-control')
677
- ], TitaniumDataTable.prototype, "pageControl", null);
678
- TitaniumDataTable = __decorate([
679
- customElement('titanium-data-table')
680
- ], TitaniumDataTable);
681
- export { TitaniumDataTable };
682
- export class DataTableItemsReorderedEvent extends Event {
683
- static { this.eventType = 'titanium-data-table-items-reorder'; }
684
- constructor() {
685
- super(DataTableItemsReorderedEvent.eventType);
686
- }
687
- }
688
- //# sourceMappingURL=data-table.js.map