tuix-webcomponents 0.62.0 → 0.64.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 (221) hide show
  1. package/README.md +2 -2
  2. package/dist/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
  3. package/dist/assets/Color-AVL7NMMY-IH_JbDEF.js +1 -0
  4. package/dist/assets/DocsRenderer-PQXLIZUC-C0ZKNA9m.js +1286 -0
  5. package/dist/{src/tuix-icon/TuixIcon.icons.js → assets/TuixIconButton-eQtxZNXh.js} +203 -126
  6. package/dist/assets/TuixModal-BZFIHTi_.js +78 -0
  7. package/dist/assets/TuixToast-BhxwZIGo.js +62 -0
  8. package/dist/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  9. package/dist/assets/axe-C59a3kt3.js +30 -0
  10. package/dist/assets/iframe-ClsPaEIM.js +1057 -0
  11. package/dist/assets/index-DBzYXxxs.js +1554 -0
  12. package/dist/assets/index-TjhCmV-u.js +1 -0
  13. package/dist/assets/matchers-7Z3WT2CE-CcSi9QFY.js +14 -0
  14. package/dist/assets/screenSizes.enum-C1IhC_dy.js +13 -0
  15. package/dist/assets/state-CLjydI9z.js +13 -0
  16. package/dist/assets/tuix-button.stories-Dm_yifox.js +30 -0
  17. package/dist/assets/tuix-checkbox.stories-DmzoygjC.js +44 -0
  18. package/dist/assets/tuix-dropdown-object-list.stories-Neeajtj-.js +56 -0
  19. package/dist/assets/tuix-dropdown.stories-B7ea8QAz.js +28 -0
  20. package/dist/assets/tuix-icon-button.stories-CgbOSRO4.js +21 -0
  21. package/dist/assets/tuix-icon.enums-DYTtwLZl.js +1 -0
  22. package/dist/assets/tuix-icon.stories-CjN2XsKx.js +19 -0
  23. package/dist/assets/tuix-input.stories-CD7onvw2.js +33 -0
  24. package/dist/assets/tuix-link.stories-CT7pzGlx.js +35 -0
  25. package/dist/assets/tuix-modal.stories-B6v3cOPq.js +39 -0
  26. package/dist/assets/tuix-paper.enum-DhmlUJB7.js +1 -0
  27. package/dist/assets/tuix-paper.stories-CLnRPHNK.js +31 -0
  28. package/dist/assets/tuix-radio-button.stories-BwkKC3a9.js +35 -0
  29. package/dist/assets/tuix-table.stories-Bn-aZa0J.js +65 -0
  30. package/dist/assets/tuix-text.enums-Ck8cVqZZ.js +1 -0
  31. package/dist/assets/tuix-text.stories-BNIqPsGD.js +29 -0
  32. package/dist/assets/tuix-toast.stories-CRYiLiHK.js +21 -0
  33. package/dist/assets/tuix-toggle-button.stories-CY6wlDnA.js +40 -0
  34. package/dist/favicon-wrapper.svg +46 -0
  35. package/dist/favicon.svg +1 -0
  36. package/dist/iframe.html +685 -0
  37. package/dist/index.html +160 -0
  38. package/dist/index.json +1 -0
  39. package/dist/nunito-sans-bold-italic.woff2 +0 -0
  40. package/dist/nunito-sans-bold.woff2 +0 -0
  41. package/dist/nunito-sans-italic.woff2 +0 -0
  42. package/dist/nunito-sans-regular.woff2 +0 -0
  43. package/dist/project.json +1 -0
  44. package/dist/sb-addons/a11y-3/manager-bundle.js +5 -0
  45. package/dist/sb-addons/a11y-3/manager-bundle.js.LEGAL.txt +0 -0
  46. package/dist/sb-addons/chromatic-com-storybook-1/manager-bundle.js +356 -0
  47. package/dist/sb-addons/chromatic-com-storybook-1/manager-bundle.js.LEGAL.txt +40 -0
  48. package/dist/sb-addons/docs-2/manager-bundle.js +151 -0
  49. package/dist/sb-addons/docs-2/manager-bundle.js.LEGAL.txt +0 -0
  50. package/dist/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
  51. package/dist/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js.LEGAL.txt +0 -0
  52. package/dist/sb-addons/vitest-4/manager-bundle.js +3 -0
  53. package/dist/sb-addons/vitest-4/manager-bundle.js.LEGAL.txt +0 -0
  54. package/dist/sb-common-assets/favicon-wrapper.svg +46 -0
  55. package/dist/sb-common-assets/favicon.svg +1 -0
  56. package/dist/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  57. package/dist/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  58. package/dist/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  59. package/dist/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  60. package/dist/sb-manager/globals-module-info.js +797 -0
  61. package/dist/sb-manager/globals-runtime.js +69679 -0
  62. package/dist/sb-manager/globals.js +34 -0
  63. package/dist/sb-manager/runtime.js +13195 -0
  64. package/package.json +77 -53
  65. package/dist/assets/tuix-styles.css +0 -58
  66. package/dist/src/index.d.ts +0 -36
  67. package/dist/src/index.js +0 -43
  68. package/dist/src/index.js.map +0 -1
  69. package/dist/src/tuix-button/TuixBaseButton.d.ts +0 -17
  70. package/dist/src/tuix-button/TuixBaseButton.js +0 -62
  71. package/dist/src/tuix-button/TuixBaseButton.js.map +0 -1
  72. package/dist/src/tuix-button/TuixButton.d.ts +0 -11
  73. package/dist/src/tuix-button/TuixButton.js +0 -85
  74. package/dist/src/tuix-button/TuixButton.js.map +0 -1
  75. package/dist/src/tuix-button/TuixButton.styles.d.ts +0 -3
  76. package/dist/src/tuix-button/TuixButton.styles.js +0 -108
  77. package/dist/src/tuix-button/TuixButton.styles.js.map +0 -1
  78. package/dist/src/tuix-button/enums/tuix-button.enums.d.ts +0 -2
  79. package/dist/src/tuix-button/enums/tuix-button.enums.js +0 -7
  80. package/dist/src/tuix-button/enums/tuix-button.enums.js.map +0 -1
  81. package/dist/src/tuix-button/interfaces/tuix-button.interface.d.ts +0 -1
  82. package/dist/src/tuix-button/interfaces/tuix-button.interface.js +0 -2
  83. package/dist/src/tuix-button/interfaces/tuix-button.interface.js.map +0 -1
  84. package/dist/src/tuix-checkbox/TuixCheckbox.d.ts +0 -15
  85. package/dist/src/tuix-checkbox/TuixCheckbox.js +0 -107
  86. package/dist/src/tuix-checkbox/TuixCheckbox.js.map +0 -1
  87. package/dist/src/tuix-checkbox/TuixCheckbox.styles.d.ts +0 -4
  88. package/dist/src/tuix-checkbox/TuixCheckbox.styles.js +0 -133
  89. package/dist/src/tuix-checkbox/TuixCheckbox.styles.js.map +0 -1
  90. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.d.ts +0 -21
  91. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.js +0 -24
  92. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.js.map +0 -1
  93. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.d.ts +0 -5
  94. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.js +0 -2
  95. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.js.map +0 -1
  96. package/dist/src/tuix-dropdown/TuixDropdown.d.ts +0 -55
  97. package/dist/src/tuix-dropdown/TuixDropdown.js +0 -368
  98. package/dist/src/tuix-dropdown/TuixDropdown.js.map +0 -1
  99. package/dist/src/tuix-dropdown/TuixDropdown.styles.d.ts +0 -3
  100. package/dist/src/tuix-dropdown/TuixDropdown.styles.js +0 -126
  101. package/dist/src/tuix-dropdown/TuixDropdown.styles.js.map +0 -1
  102. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.d.ts +0 -4
  103. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.js +0 -6
  104. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.js.map +0 -1
  105. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.d.ts +0 -15
  106. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.js +0 -2
  107. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.js.map +0 -1
  108. package/dist/src/tuix-icon/TuixIcon.d.ts +0 -15
  109. package/dist/src/tuix-icon/TuixIcon.icons.d.ts +0 -6
  110. package/dist/src/tuix-icon/TuixIcon.icons.js.map +0 -1
  111. package/dist/src/tuix-icon/TuixIcon.js +0 -81
  112. package/dist/src/tuix-icon/TuixIcon.js.map +0 -1
  113. package/dist/src/tuix-icon/enums/tuix-icon.enums.d.ts +0 -62
  114. package/dist/src/tuix-icon/enums/tuix-icon.enums.js +0 -70
  115. package/dist/src/tuix-icon/enums/tuix-icon.enums.js.map +0 -1
  116. package/dist/src/tuix-icon-button/TuixIconButton.d.ts +0 -9
  117. package/dist/src/tuix-icon-button/TuixIconButton.js +0 -52
  118. package/dist/src/tuix-icon-button/TuixIconButton.js.map +0 -1
  119. package/dist/src/tuix-input/TuixInput.d.ts +0 -52
  120. package/dist/src/tuix-input/TuixInput.js +0 -374
  121. package/dist/src/tuix-input/TuixInput.js.map +0 -1
  122. package/dist/src/tuix-input/TuixInput.styles.d.ts +0 -8
  123. package/dist/src/tuix-input/TuixInput.styles.js +0 -296
  124. package/dist/src/tuix-input/TuixInput.styles.js.map +0 -1
  125. package/dist/src/tuix-input/enums/tuix-input.enums.d.ts +0 -38
  126. package/dist/src/tuix-input/enums/tuix-input.enums.js +0 -42
  127. package/dist/src/tuix-input/enums/tuix-input.enums.js.map +0 -1
  128. package/dist/src/tuix-input/interfaces/tuix-input.interface.d.ts +0 -17
  129. package/dist/src/tuix-input/interfaces/tuix-input.interface.js +0 -7
  130. package/dist/src/tuix-input/interfaces/tuix-input.interface.js.map +0 -1
  131. package/dist/src/tuix-link/TuixLink.d.ts +0 -15
  132. package/dist/src/tuix-link/TuixLink.js +0 -72
  133. package/dist/src/tuix-link/TuixLink.js.map +0 -1
  134. package/dist/src/tuix-link/TuixLink.styles.d.ts +0 -2
  135. package/dist/src/tuix-link/TuixLink.styles.js +0 -56
  136. package/dist/src/tuix-link/TuixLink.styles.js.map +0 -1
  137. package/dist/src/tuix-link/enums/linkTarget.enum.d.ts +0 -6
  138. package/dist/src/tuix-link/enums/linkTarget.enum.js +0 -8
  139. package/dist/src/tuix-link/enums/linkTarget.enum.js.map +0 -1
  140. package/dist/src/tuix-modal/TuixModal.d.ts +0 -9
  141. package/dist/src/tuix-modal/TuixModal.js +0 -64
  142. package/dist/src/tuix-modal/TuixModal.js.map +0 -1
  143. package/dist/src/tuix-modal/TuixModal.styles.d.ts +0 -2
  144. package/dist/src/tuix-modal/TuixModal.styles.js +0 -56
  145. package/dist/src/tuix-modal/TuixModal.styles.js.map +0 -1
  146. package/dist/src/tuix-paper/TuixPaper.d.ts +0 -10
  147. package/dist/src/tuix-paper/TuixPaper.js +0 -47
  148. package/dist/src/tuix-paper/TuixPaper.js.map +0 -1
  149. package/dist/src/tuix-paper/TuixPaper.styles.d.ts +0 -1
  150. package/dist/src/tuix-paper/TuixPaper.styles.js +0 -31
  151. package/dist/src/tuix-paper/TuixPaper.styles.js.map +0 -1
  152. package/dist/src/tuix-paper/enums/tuix-paper.enum.d.ts +0 -13
  153. package/dist/src/tuix-paper/enums/tuix-paper.enum.js +0 -16
  154. package/dist/src/tuix-paper/enums/tuix-paper.enum.js.map +0 -1
  155. package/dist/src/tuix-radio-button/TuixRadioButton.d.ts +0 -16
  156. package/dist/src/tuix-radio-button/TuixRadioButton.js +0 -96
  157. package/dist/src/tuix-radio-button/TuixRadioButton.js.map +0 -1
  158. package/dist/src/tuix-radio-button/TuixRadioButton.styles.d.ts +0 -5
  159. package/dist/src/tuix-radio-button/TuixRadioButton.styles.js +0 -136
  160. package/dist/src/tuix-radio-button/TuixRadioButton.styles.js.map +0 -1
  161. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.d.ts +0 -3
  162. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.js +0 -2
  163. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.js.map +0 -1
  164. package/dist/src/tuix-table/TuixTable.d.ts +0 -46
  165. package/dist/src/tuix-table/TuixTable.js +0 -373
  166. package/dist/src/tuix-table/TuixTable.js.map +0 -1
  167. package/dist/src/tuix-table/TuixTable.styles.d.ts +0 -2
  168. package/dist/src/tuix-table/TuixTable.styles.js +0 -198
  169. package/dist/src/tuix-table/TuixTable.styles.js.map +0 -1
  170. package/dist/src/tuix-table/interfaces/tuix-table.interface.d.ts +0 -45
  171. package/dist/src/tuix-table/interfaces/tuix-table.interface.js +0 -2
  172. package/dist/src/tuix-table/interfaces/tuix-table.interface.js.map +0 -1
  173. package/dist/src/tuix-text/TuixText.d.ts +0 -12
  174. package/dist/src/tuix-text/TuixText.js +0 -67
  175. package/dist/src/tuix-text/TuixText.js.map +0 -1
  176. package/dist/src/tuix-text/TuixText.styles.d.ts +0 -2
  177. package/dist/src/tuix-text/TuixText.styles.js +0 -159
  178. package/dist/src/tuix-text/TuixText.styles.js.map +0 -1
  179. package/dist/src/tuix-text/enums/tuix-text.enums.d.ts +0 -31
  180. package/dist/src/tuix-text/enums/tuix-text.enums.js +0 -64
  181. package/dist/src/tuix-text/enums/tuix-text.enums.js.map +0 -1
  182. package/dist/src/tuix-toast/TuixToast.d.ts +0 -15
  183. package/dist/src/tuix-toast/TuixToast.js +0 -101
  184. package/dist/src/tuix-toast/TuixToast.js.map +0 -1
  185. package/dist/src/tuix-toast/TuixToast.styles.d.ts +0 -3
  186. package/dist/src/tuix-toast/TuixToast.styles.js +0 -44
  187. package/dist/src/tuix-toast/TuixToast.styles.js.map +0 -1
  188. package/dist/src/tuix-toast/enums/tuix-toast.enums.d.ts +0 -20
  189. package/dist/src/tuix-toast/enums/tuix-toast.enums.js +0 -60
  190. package/dist/src/tuix-toast/enums/tuix-toast.enums.js.map +0 -1
  191. package/dist/src/tuix-toggle-button/TuixToggleButton.d.ts +0 -13
  192. package/dist/src/tuix-toggle-button/TuixToggleButton.js +0 -86
  193. package/dist/src/tuix-toggle-button/TuixToggleButton.js.map +0 -1
  194. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.d.ts +0 -5
  195. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.js +0 -135
  196. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.js.map +0 -1
  197. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.d.ts +0 -2
  198. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.js +0 -2
  199. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.js.map +0 -1
  200. package/dist/src/utils/colors.d.ts +0 -29
  201. package/dist/src/utils/colors.js +0 -31
  202. package/dist/src/utils/colors.js.map +0 -1
  203. package/dist/src/utils/darkColors.d.ts +0 -31
  204. package/dist/src/utils/darkColors.js +0 -33
  205. package/dist/src/utils/darkColors.js.map +0 -1
  206. package/dist/src/utils/hex-rgb.d.ts +0 -5
  207. package/dist/src/utils/hex-rgb.js +0 -16
  208. package/dist/src/utils/hex-rgb.js.map +0 -1
  209. package/dist/src/utils/interfaces/detail-value.interface.d.ts +0 -3
  210. package/dist/src/utils/interfaces/detail-value.interface.js +0 -2
  211. package/dist/src/utils/interfaces/detail-value.interface.js.map +0 -1
  212. package/dist/src/utils/mainVariant.enum.d.ts +0 -4
  213. package/dist/src/utils/mainVariant.enum.js +0 -6
  214. package/dist/src/utils/mainVariant.enum.js.map +0 -1
  215. package/dist/src/utils/screenSizes.enum.d.ts +0 -4
  216. package/dist/src/utils/screenSizes.enum.js +0 -6
  217. package/dist/src/utils/screenSizes.enum.js.map +0 -1
  218. package/dist/src/utils/slottedClassName.d.ts +0 -2
  219. package/dist/src/utils/slottedClassName.js +0 -2
  220. package/dist/src/utils/slottedClassName.js.map +0 -1
  221. package/dist/tsconfig.publish.tsbuildinfo +0 -1
@@ -1,373 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { LitElement, html } from 'lit';
3
- import { customElement, property, state } from 'lit/decorators.js';
4
- import { styleMap } from 'lit/directives/style-map.js';
5
- import { repeat } from 'lit/directives/repeat.js';
6
- import { tableStyles, threeDots } from './TuixTable.styles.js';
7
- import { TextSize, TextVariant } from '../tuix-text/enums/tuix-text.enums.js';
8
- import { IconName } from '../tuix-icon/enums/tuix-icon.enums.js';
9
- import { Palette } from '../utils/colors.js';
10
- import { ScreenSizes } from '../utils/screenSizes.enum.js';
11
- let TuixTable = class TuixTable extends LitElement {
12
- constructor() {
13
- super(...arguments);
14
- this.paginated = false;
15
- this.disableMobileTable = false;
16
- this.showMobileTableInTablet = false;
17
- this.data = [];
18
- this.headers = [];
19
- this.pageSizeOptions = [5, 10, 20];
20
- this.isLoadingData = false;
21
- this._isTabletView = false;
22
- this._isMobileView = false;
23
- this._headerPercents = [];
24
- this._onScreenSizeChange = () => {
25
- var _a, _b;
26
- this._isTabletView = !!((_a = this._mqTablet) === null || _a === void 0 ? void 0 : _a.matches);
27
- this._isMobileView = !!((_b = this._mqMobile) === null || _b === void 0 ? void 0 : _b.matches);
28
- };
29
- this._nextPage = () => {
30
- if (this.currentPage === this.totalPages)
31
- return;
32
- const next = Math.min(this.totalPages, this._effectiveCurrentPage + 1);
33
- const detail = {
34
- page: next,
35
- pageSize: this._effectivePageSize,
36
- };
37
- this.dispatchEvent(new CustomEvent('next-page', {
38
- detail,
39
- bubbles: true,
40
- composed: true,
41
- }));
42
- };
43
- this._prevPage = () => {
44
- if (this.currentPage === 1)
45
- return;
46
- const prev = Math.max(1, this._effectiveCurrentPage - 1);
47
- const detail = {
48
- page: prev,
49
- pageSize: this._effectivePageSize,
50
- };
51
- this.dispatchEvent(new CustomEvent('previous-page', {
52
- detail,
53
- bubbles: true,
54
- composed: true,
55
- }));
56
- };
57
- this._setPageSize = (value) => {
58
- const newSize = Math.max(1, Math.floor(value));
59
- const newPage = 1;
60
- const detail = { page: newPage, pageSize: newSize };
61
- this.dispatchEvent(new CustomEvent('page-size-change', {
62
- detail,
63
- bubbles: true,
64
- composed: true,
65
- }));
66
- };
67
- }
68
- connectedCallback() {
69
- super.connectedCallback();
70
- this._mqTablet = window.matchMedia(`(max-width:${ScreenSizes.TABLET}px)`);
71
- this._mqMobile = window.matchMedia(`(max-width:${ScreenSizes.MOBILE}px)`);
72
- this._onScreenSizeChange();
73
- this._mqTablet.addEventListener('change', this._onScreenSizeChange);
74
- this._mqMobile.addEventListener('change', this._onScreenSizeChange);
75
- this._computeHeaderPercents();
76
- }
77
- disconnectedCallback() {
78
- var _a, _b;
79
- super.disconnectedCallback();
80
- (_a = this._mqTablet) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', this._onScreenSizeChange);
81
- (_b = this._mqMobile) === null || _b === void 0 ? void 0 : _b.removeEventListener('change', this._onScreenSizeChange);
82
- }
83
- updated(changedProps) {
84
- if (changedProps.has('headers'))
85
- this._computeHeaderPercents();
86
- }
87
- get _effectiveTotalItems() {
88
- var _a;
89
- return (_a = this.totalItems) !== null && _a !== void 0 ? _a : this.data.length;
90
- }
91
- get _effectiveCurrentPage() {
92
- var _a;
93
- return (_a = this.currentPage) !== null && _a !== void 0 ? _a : 1;
94
- }
95
- get _effectivePageSize() {
96
- var _a;
97
- return (_a = this.currentSize) !== null && _a !== void 0 ? _a : this.pageSizeOptions[0];
98
- }
99
- get totalPages() {
100
- const denom = this._effectivePageSize;
101
- return Math.max(1, Math.ceil(this._effectiveTotalItems / denom));
102
- }
103
- get _paginationProps() {
104
- const totalItems = this._effectiveTotalItems;
105
- const itemsPerPage = this._effectivePageSize;
106
- const startItem = totalItems
107
- ? (this._effectiveCurrentPage - 1) * itemsPerPage + 1
108
- : 0;
109
- const endItem = Math.min(this._effectiveCurrentPage * itemsPerPage, totalItems);
110
- return {
111
- totalItems,
112
- currentPage: this._effectiveCurrentPage,
113
- itemsPerPage,
114
- startItem,
115
- endItem,
116
- onNextPage: this._nextPage,
117
- onPreviousPage: this._prevPage,
118
- onItemsPerPageChange: this._setPageSize,
119
- isLoading: this.isLoadingData,
120
- };
121
- }
122
- _computeHeaderPercents() {
123
- const total = this.headers.reduce((acum, header) => acum + header.width, 0);
124
- this._headerPercents =
125
- total === 0
126
- ? this.headers.map(() => 100 / this.headers.length)
127
- : this.headers.map(header => (header.width / total) * 100);
128
- }
129
- _cellStyleString() {
130
- return `border-bottom:1px solid ${Palette.NEUTRAL_200};`;
131
- }
132
- _textVariantColor(header, row) {
133
- const color = header.cellColor
134
- ? header.cellColor(row)
135
- : TextVariant.PRIMARY;
136
- return color;
137
- }
138
- _renderHeaderCells() {
139
- return html `<tr>
140
- ${this.headers.map((header, idx) => html `<th
141
- style=${styleMap({
142
- width: `${this._headerPercents[idx]}%`,
143
- color: Palette.WHITE,
144
- })}
145
- >
146
- <tuix-text size=${TextSize.Body1} color=${TextVariant.SECONDARY}
147
- >${header.name}</tuix-text
148
- >
149
- </th>`)}
150
- </tr>`;
151
- }
152
- _renderCell(header, row) {
153
- if (header.isSlot) {
154
- const slotName = `${header.slotName}-${row.id}`;
155
- return html `<td style="${this._cellStyleString()}">
156
- <slot name=${slotName}></slot>
157
- </td>`;
158
- }
159
- const content = row[header.dataKey];
160
- return html `<td style="${this._cellStyleString()}">
161
- <tuix-text
162
- size=${TextSize.Body1}
163
- color=${this._textVariantColor(header, row)}
164
- >${content}</tuix-text
165
- >
166
- </td>`;
167
- }
168
- _renderRows() {
169
- const rows = this.data;
170
- return repeat(rows, row => row.id, row => html `<tr>
171
- ${this.headers.map(header => this._renderCell(header, row))}
172
- </tr>`);
173
- }
174
- _onPageSizeChange(e) {
175
- const selectedValue = parseInt(e.target.value);
176
- this._setPageSize(selectedValue);
177
- }
178
- _renderPageSizeOptions() {
179
- return this.pageSizeOptions.map(size => html `<option value=${size}>${size}</option>`);
180
- }
181
- _renderSpinner() {
182
- const threeDotsConfiguration = {
183
- size: '14px',
184
- color: Palette.MAIN,
185
- visible: true,
186
- ariaLabel: 'Loading',
187
- wrapperStyle: {
188
- width: '100%',
189
- display: 'flex',
190
- justifyContent: 'center',
191
- padding: '48px 0',
192
- },
193
- ...this.loader,
194
- };
195
- if (!threeDotsConfiguration.visible)
196
- return null;
197
- const wrapperVars = {
198
- '--dot-size': threeDotsConfiguration.size,
199
- '--dot-color': threeDotsConfiguration.color,
200
- ...threeDotsConfiguration.wrapperStyle,
201
- };
202
- const aria = threeDotsConfiguration.ariaLabel;
203
- return html `<div class="tuix-spinner-wrapper">
204
- <div
205
- class="three-dots-wrapper"
206
- role="status"
207
- aria-label=${aria}
208
- style=${styleMap(wrapperVars)}
209
- >
210
- <span class="dot" aria-hidden="true"></span>
211
- <span class="dot" aria-hidden="true"></span>
212
- <span class="dot" aria-hidden="true"></span>
213
- <span class="sr-only">${aria}</span>
214
- </div>
215
- </div>`;
216
- }
217
- _renderPagination() {
218
- const { totalItems, startItem, endItem, itemsPerPage, isLoading } = this._paginationProps;
219
- return html `<footer
220
- style="background-color:${Palette.SECTION_BG};"
221
- class="table_footer sticky"
222
- >
223
- <div class="items-per-page">
224
- <tuix-text size=${TextSize.Body2}>Items per page</tuix-text>
225
- <div
226
- style="outline: 1px solid ${Palette.NEUTRAL_200};"
227
- class="dropdown_container"
228
- >
229
- <select
230
- class="items-per-page-dropdown"
231
- .value=${String(itemsPerPage)}
232
- @change=${this._onPageSizeChange}
233
- ?disabled=${isLoading}
234
- >
235
- ${this._renderPageSizeOptions()}
236
- </select>
237
- <tuix-icon
238
- class="arrow-icon"
239
- name=${IconName.CHEVRON_DOWN}
240
- ></tuix-icon>
241
- </div>
242
- </div>
243
-
244
- <div class="navigation">
245
- <tuix-text size=${TextSize.Body2}
246
- >${startItem} - ${endItem} of ${totalItems}</tuix-text
247
- >
248
- <div class="buttons">
249
- <tuix-icon
250
- class="arrow-icon"
251
- name=${IconName.CHEVRON_LEFT}
252
- @click=${this._prevPage}
253
- ></tuix-icon>
254
- <tuix-icon
255
- class="arrow-icon"
256
- name=${IconName.CHEVRON_RIGHT}
257
- @click=${this._nextPage}
258
- ></tuix-icon>
259
- </div>
260
- </div>
261
- </footer>`;
262
- }
263
- _renderTable() {
264
- return html `<table>
265
- <thead style="background-color: ${Palette.MAIN}">
266
- ${this._renderHeaderCells()}
267
- </thead>
268
- ${this.isLoadingData
269
- ? html `<tbody>
270
- <tr>
271
- <td colspan=${this.headers.length}>${this._renderSpinner()}</td>
272
- </tr>
273
- </tbody>`
274
- : html `<tbody>
275
- ${this._renderRows()}
276
- </tbody>`}
277
- </table>
278
- ${this.paginated ? this._renderPagination() : null}`;
279
- }
280
- _renderCards() {
281
- const rows = this.data;
282
- return html `<div class="mobile_table">
283
- ${this.isLoadingData
284
- ? this._renderSpinner()
285
- : rows.map(row => html `<div
286
- style="border-bottom: 2px solid ${Palette.MAIN};"
287
- class="table_entity"
288
- >
289
- ${this.headers.map(header => html `<div
290
- class="table_row"
291
- style="border-bottom:1px solid ${Palette.NEUTRAL_200};"
292
- >
293
- <div
294
- class="header"
295
- style="background-color:${Palette.SECTION_BG};"
296
- >
297
- <tuix-text
298
- size=${TextSize.Body1}
299
- color=${TextVariant.PRIMARY}
300
- >${header.name}</tuix-text
301
- >
302
- </div>
303
- <div class="content">
304
- ${header.isSlot
305
- ? html `<slot
306
- name="${header.slotName}-${row.id}"
307
- ></slot>`
308
- : html `<tuix-text size=${TextSize.Body1}
309
- >${row[header.dataKey]}</tuix-text
310
- >`}
311
- </div>
312
- </div>`)}
313
- </div>`)}
314
- </div>
315
- ${this.paginated ? this._renderPagination() : null}`;
316
- }
317
- render() {
318
- const shouldRenderCards = !this.disableMobileTable &&
319
- (this._isMobileView ||
320
- (this._isTabletView && this.showMobileTableInTablet));
321
- return shouldRenderCards
322
- ? html `${this._renderCards()}`
323
- : html `${this._renderTable()}`;
324
- }
325
- };
326
- TuixTable.styles = [tableStyles, threeDots];
327
- __decorate([
328
- property({ type: Boolean })
329
- ], TuixTable.prototype, "paginated", void 0);
330
- __decorate([
331
- property({ type: Boolean })
332
- ], TuixTable.prototype, "disableMobileTable", void 0);
333
- __decorate([
334
- property({ type: Boolean })
335
- ], TuixTable.prototype, "showMobileTableInTablet", void 0);
336
- __decorate([
337
- property({ type: Object })
338
- ], TuixTable.prototype, "loader", void 0);
339
- __decorate([
340
- property({ type: Array })
341
- ], TuixTable.prototype, "data", void 0);
342
- __decorate([
343
- property({ type: Array })
344
- ], TuixTable.prototype, "headers", void 0);
345
- __decorate([
346
- property({ type: Array })
347
- ], TuixTable.prototype, "pageSizeOptions", void 0);
348
- __decorate([
349
- property({ type: Number })
350
- ], TuixTable.prototype, "totalItems", void 0);
351
- __decorate([
352
- property({ type: Number })
353
- ], TuixTable.prototype, "currentPage", void 0);
354
- __decorate([
355
- property({ type: Number })
356
- ], TuixTable.prototype, "currentSize", void 0);
357
- __decorate([
358
- property({ type: Boolean })
359
- ], TuixTable.prototype, "isLoadingData", void 0);
360
- __decorate([
361
- state()
362
- ], TuixTable.prototype, "_isTabletView", void 0);
363
- __decorate([
364
- state()
365
- ], TuixTable.prototype, "_isMobileView", void 0);
366
- __decorate([
367
- state()
368
- ], TuixTable.prototype, "_headerPercents", void 0);
369
- TuixTable = __decorate([
370
- customElement('tuix-table')
371
- ], TuixTable);
372
- export { TuixTable };
373
- //# sourceMappingURL=TuixTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TuixTable.js","sourceRoot":"","sources":["../../../src/tuix-table/TuixTable.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { tableStyles, threeDots } from './TuixTable.styles';\nimport { TextSize, TextVariant } from '../tuix-text/enums/tuix-text.enums';\nimport { IconName } from '../tuix-icon/enums/tuix-icon.enums.js';\nimport { Palette } from '../utils/colors';\nimport { ScreenSizes } from '../utils/screenSizes.enum';\n\nimport type {\n IDataTableHeader,\n TablePaginationProps,\n PaginationEventDetail,\n ThreeDotsLoaderConfig,\n} from './interfaces/tuix-table.interface.js';\n\n@customElement('tuix-table')\nexport class TuixTable extends LitElement {\n static styles = [tableStyles, threeDots];\n\n @property({ type: Boolean }) paginated = false;\n @property({ type: Boolean }) disableMobileTable = false;\n @property({ type: Boolean }) showMobileTableInTablet = false;\n @property({ type: Object }) loader?: ThreeDotsLoaderConfig;\n @property({ type: Array }) data: Record<string, any>[] = [];\n @property({ type: Array }) headers: IDataTableHeader<any>[] = [];\n @property({ type: Array }) pageSizeOptions: number[] = [5, 10, 20];\n\n @property({ type: Number }) totalItems?: number;\n @property({ type: Number }) currentPage?: number;\n @property({ type: Number }) currentSize?: number;\n @property({ type: Boolean }) isLoadingData = false;\n\n @state() private _isTabletView = false;\n @state() private _isMobileView = false;\n @state() private _headerPercents: number[] = [];\n\n private _mqTablet?: MediaQueryList;\n private _mqMobile?: MediaQueryList;\n\n private _onScreenSizeChange = () => {\n this._isTabletView = !!this._mqTablet?.matches;\n this._isMobileView = !!this._mqMobile?.matches;\n };\n\n connectedCallback() {\n super.connectedCallback();\n this._mqTablet = window.matchMedia(`(max-width:${ScreenSizes.TABLET}px)`);\n this._mqMobile = window.matchMedia(`(max-width:${ScreenSizes.MOBILE}px)`);\n this._onScreenSizeChange();\n this._mqTablet.addEventListener('change', this._onScreenSizeChange);\n this._mqMobile.addEventListener('change', this._onScreenSizeChange);\n this._computeHeaderPercents();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._mqTablet?.removeEventListener('change', this._onScreenSizeChange);\n this._mqMobile?.removeEventListener('change', this._onScreenSizeChange);\n }\n\n updated(changedProps: Map<string, any>) {\n if (changedProps.has('headers')) this._computeHeaderPercents();\n }\n\n private get _effectiveTotalItems() {\n return this.totalItems ?? this.data.length;\n }\n\n private get _effectiveCurrentPage() {\n return this.currentPage ?? 1;\n }\n\n private get _effectivePageSize() {\n return this.currentSize ?? this.pageSizeOptions[0];\n }\n\n private get totalPages() {\n const denom = this._effectivePageSize;\n return Math.max(1, Math.ceil(this._effectiveTotalItems / denom));\n }\n\n private get _paginationProps(): TablePaginationProps {\n const totalItems = this._effectiveTotalItems;\n const itemsPerPage = this._effectivePageSize;\n const startItem = totalItems\n ? (this._effectiveCurrentPage - 1) * itemsPerPage + 1\n : 0;\n const endItem = Math.min(\n this._effectiveCurrentPage * itemsPerPage,\n totalItems\n );\n\n return {\n totalItems,\n currentPage: this._effectiveCurrentPage,\n itemsPerPage,\n startItem,\n endItem,\n onNextPage: this._nextPage,\n onPreviousPage: this._prevPage,\n onItemsPerPageChange: this._setPageSize,\n isLoading: this.isLoadingData,\n } as TablePaginationProps;\n }\n\n private _nextPage = () => {\n if (this.currentPage === this.totalPages) return;\n const next = Math.min(this.totalPages, this._effectiveCurrentPage + 1);\n const detail: PaginationEventDetail = {\n page: next,\n pageSize: this._effectivePageSize,\n };\n this.dispatchEvent(\n new CustomEvent<PaginationEventDetail>('next-page', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _prevPage = () => {\n if (this.currentPage === 1) return;\n const prev = Math.max(1, this._effectiveCurrentPage - 1);\n const detail: PaginationEventDetail = {\n page: prev,\n pageSize: this._effectivePageSize,\n };\n this.dispatchEvent(\n new CustomEvent<PaginationEventDetail>('previous-page', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _setPageSize = (value: number) => {\n const newSize = Math.max(1, Math.floor(value));\n const newPage = 1;\n const detail: PaginationEventDetail = { page: newPage, pageSize: newSize };\n this.dispatchEvent(\n new CustomEvent<PaginationEventDetail>('page-size-change', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n };\n\n private _computeHeaderPercents() {\n const total = this.headers.reduce((acum, header) => acum + header.width, 0);\n this._headerPercents =\n total === 0\n ? this.headers.map(() => 100 / this.headers.length)\n : this.headers.map(header => (header.width / total) * 100);\n }\n\n private _cellStyleString() {\n return `border-bottom:1px solid ${Palette.NEUTRAL_200};`;\n }\n\n private _textVariantColor(header: IDataTableHeader<any>, row: any) {\n const color = header.cellColor\n ? header.cellColor(row)\n : TextVariant.PRIMARY;\n return color;\n }\n\n private _renderHeaderCells() {\n return html`<tr>\n ${this.headers.map(\n (header, idx) => html`<th\n style=${styleMap({\n width: `${this._headerPercents[idx]}%`,\n color: Palette.WHITE,\n })}\n >\n <tuix-text size=${TextSize.Body1} color=${TextVariant.SECONDARY}\n >${header.name}</tuix-text\n >\n </th>`\n )}\n </tr>`;\n }\n\n private _renderCell(header: IDataTableHeader<any>, row: any) {\n if (header.isSlot) {\n const slotName = `${header.slotName}-${row.id}`;\n return html`<td style=\"${this._cellStyleString()}\">\n <slot name=${slotName}></slot>\n </td>`;\n }\n const content = row[header.dataKey];\n return html`<td style=\"${this._cellStyleString()}\">\n <tuix-text\n size=${TextSize.Body1}\n color=${this._textVariantColor(header, row)}\n >${content}</tuix-text\n >\n </td>`;\n }\n\n private _renderRows() {\n const rows = this.data;\n return repeat(\n rows,\n row => row.id,\n row =>\n html`<tr>\n ${this.headers.map(header => this._renderCell(header, row))}\n </tr>`\n );\n }\n\n private _onPageSizeChange(e: Event) {\n const selectedValue = parseInt((e.target as HTMLSelectElement).value);\n this._setPageSize(selectedValue);\n }\n\n private _renderPageSizeOptions() {\n return this.pageSizeOptions.map(\n size => html`<option value=${size}>${size}</option>`\n );\n }\n\n private _renderSpinner() {\n const threeDotsConfiguration = {\n size: '14px',\n color: Palette.MAIN,\n visible: true,\n ariaLabel: 'Loading',\n wrapperStyle: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n padding: '48px 0',\n },\n ...this.loader,\n } as Required<ThreeDotsLoaderConfig>;\n\n if (!threeDotsConfiguration.visible) return null;\n\n const wrapperVars: Record<string, string | number> = {\n '--dot-size': threeDotsConfiguration.size,\n '--dot-color': threeDotsConfiguration.color,\n ...threeDotsConfiguration.wrapperStyle,\n };\n\n const aria = threeDotsConfiguration.ariaLabel;\n\n return html`<div class=\"tuix-spinner-wrapper\">\n <div\n class=\"three-dots-wrapper\"\n role=\"status\"\n aria-label=${aria}\n style=${styleMap(wrapperVars)}\n >\n <span class=\"dot\" aria-hidden=\"true\"></span>\n <span class=\"dot\" aria-hidden=\"true\"></span>\n <span class=\"dot\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">${aria}</span>\n </div>\n </div>`;\n }\n private _renderPagination() {\n const { totalItems, startItem, endItem, itemsPerPage, isLoading } =\n this._paginationProps;\n\n return html`<footer\n style=\"background-color:${Palette.SECTION_BG};\"\n class=\"table_footer sticky\"\n >\n <div class=\"items-per-page\">\n <tuix-text size=${TextSize.Body2}>Items per page</tuix-text>\n <div\n style=\"outline: 1px solid ${Palette.NEUTRAL_200};\"\n class=\"dropdown_container\"\n >\n <select\n class=\"items-per-page-dropdown\"\n .value=${String(itemsPerPage)}\n @change=${this._onPageSizeChange}\n ?disabled=${isLoading}\n >\n ${this._renderPageSizeOptions()}\n </select>\n <tuix-icon\n class=\"arrow-icon\"\n name=${IconName.CHEVRON_DOWN}\n ></tuix-icon>\n </div>\n </div>\n\n <div class=\"navigation\">\n <tuix-text size=${TextSize.Body2}\n >${startItem} - ${endItem} of ${totalItems}</tuix-text\n >\n <div class=\"buttons\">\n <tuix-icon\n class=\"arrow-icon\"\n name=${IconName.CHEVRON_LEFT}\n @click=${this._prevPage}\n ></tuix-icon>\n <tuix-icon\n class=\"arrow-icon\"\n name=${IconName.CHEVRON_RIGHT}\n @click=${this._nextPage}\n ></tuix-icon>\n </div>\n </div>\n </footer>`;\n }\n\n private _renderTable() {\n return html`<table>\n <thead style=\"background-color: ${Palette.MAIN}\">\n ${this._renderHeaderCells()}\n </thead>\n ${this.isLoadingData\n ? html`<tbody>\n <tr>\n <td colspan=${this.headers.length}>${this._renderSpinner()}</td>\n </tr>\n </tbody>`\n : html`<tbody>\n ${this._renderRows()}\n </tbody>`}\n </table>\n ${this.paginated ? this._renderPagination() : null}`;\n }\n\n private _renderCards() {\n const rows = this.data;\n return html`<div class=\"mobile_table\">\n ${this.isLoadingData\n ? this._renderSpinner()\n : rows.map(\n row => html`<div\n style=\"border-bottom: 2px solid ${Palette.MAIN};\"\n class=\"table_entity\"\n >\n ${this.headers.map(\n header => html`<div\n class=\"table_row\"\n style=\"border-bottom:1px solid ${Palette.NEUTRAL_200};\"\n >\n <div\n class=\"header\"\n style=\"background-color:${Palette.SECTION_BG};\"\n >\n <tuix-text\n size=${TextSize.Body1}\n color=${TextVariant.PRIMARY}\n >${header.name}</tuix-text\n >\n </div>\n <div class=\"content\">\n ${header.isSlot\n ? html`<slot\n name=\"${header.slotName}-${row.id}\"\n ></slot>`\n : html`<tuix-text size=${TextSize.Body1}\n >${row[header.dataKey]}</tuix-text\n >`}\n </div>\n </div>`\n )}\n </div>`\n )}\n </div>\n ${this.paginated ? this._renderPagination() : null}`;\n }\n\n render() {\n const shouldRenderCards =\n !this.disableMobileTable &&\n (this._isMobileView ||\n (this._isTabletView && this.showMobileTableInTablet));\n\n return shouldRenderCards\n ? html`${this._renderCards()}`\n : html`${this._renderTable()}`;\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- export declare const tableStyles: import("lit").CSSResult;
2
- export declare const threeDots: import("lit").CSSResult;
@@ -1,198 +0,0 @@
1
- import { css } from 'lit';
2
- import { ScreenSizes } from '../utils/screenSizes.enum.js';
3
- export const tableStyles = css `
4
- :host {
5
- display: block;
6
- width: 100%;
7
- }
8
-
9
- .table_wrapper {
10
- width: 100%;
11
- overflow-x: auto;
12
- }
13
-
14
- table {
15
- min-width: 650px;
16
- table-layout: fixed;
17
- width: 100%;
18
- border-collapse: collapse;
19
- }
20
-
21
- thead th {
22
- box-sizing: border-box;
23
- padding: 8px;
24
- text-align: left;
25
- overflow: hidden;
26
- text-overflow: ellipsis;
27
- white-space: nowrap;
28
- }
29
-
30
- tbody tr td {
31
- box-sizing: border-box;
32
- height: 52px;
33
- padding: 6px 8px;
34
- text-align: left;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- white-space: nowrap;
38
- }
39
-
40
- ::slotted(*) {
41
- display: inline-flex;
42
- align-items: center;
43
- margin-right: 8px;
44
- gap: 10px;
45
- }
46
-
47
- .dropdown_container {
48
- position: relative;
49
- border-radius: 4px;
50
- }
51
-
52
- .dropdown_container .items-per-page-dropdown {
53
- width: 55px;
54
- border: none;
55
- background-color: transparent;
56
- padding: 8px;
57
- cursor: pointer;
58
- -webkit-appearance: none;
59
- -moz-appearance: none;
60
- appearance: none;
61
- }
62
-
63
- .dropdown_container .items-per-page-dropdown:focus-visible {
64
- border: none;
65
- outline: none;
66
- }
67
-
68
- .dropdown_container .arrow-icon {
69
- position: absolute;
70
- right: 8px;
71
- bottom: 8px;
72
- cursor: pointer;
73
- pointer-events: none;
74
- }
75
-
76
- footer.table_footer {
77
- height: 48px;
78
- padding: 8px;
79
- width: 100%;
80
- display: flex;
81
- justify-content: space-between;
82
- align-items: center;
83
- box-sizing: border-box;
84
- }
85
-
86
- footer.table_footer .items-per-page {
87
- display: flex;
88
- align-items: center;
89
- gap: 8px;
90
- }
91
-
92
- footer.table_footer .navigation {
93
- display: flex;
94
- align-items: center;
95
- gap: 8px;
96
- }
97
-
98
- footer.table_footer .navigation .buttons {
99
- display: flex;
100
- gap: 8px;
101
- cursor: pointer;
102
- }
103
-
104
- .mobile_table {
105
- display: none;
106
- }
107
-
108
- @media only screen and (max-width: ${ScreenSizes.TABLET}px) {
109
- .mobile_table {
110
- display: block;
111
- }
112
-
113
- footer.table_footer {
114
- align-items: flex-start;
115
- gap: 8px;
116
- }
117
-
118
- .mobile_table .table_row {
119
- display: flex;
120
- min-height: 40px;
121
- }
122
-
123
- .mobile_table .table_row > * {
124
- padding: 0 16px;
125
- width: 50%;
126
- text-overflow: ellipsis;
127
- overflow: hidden;
128
- display: flex;
129
- align-items: center;
130
- }
131
- }
132
- `;
133
- export const threeDots = css `
134
- .tuix-spinner-wrapper {
135
- display: flex;
136
- justify-content: center;
137
- align-items: center;
138
- padding: 24px 0;
139
- }
140
-
141
- .three-dots-wrapper {
142
- display: inline-flex;
143
- gap: calc(var(--dot-size) * 0.5);
144
- align-items: center;
145
- justify-content: center;
146
- position: relative;
147
- }
148
- .three-dots-wrapper .dot {
149
- width: var(--dot-size);
150
- height: var(--dot-size);
151
- background: var(--dot-color);
152
- border-radius: 50%;
153
- display: inline-block;
154
- animation: threeDots 0.9s infinite ease-in-out both;
155
- }
156
- .three-dots-wrapper .dot:nth-child(2) {
157
- animation-delay: 0.15s;
158
- }
159
- .three-dots-wrapper .dot:nth-child(3) {
160
- animation-delay: 0.3s;
161
- }
162
-
163
- @keyframes threeDots {
164
- 0%,
165
- 80%,
166
- 100% {
167
- transform: scale(0.6);
168
- opacity: 0.6;
169
- }
170
- 40% {
171
- transform: scale(1);
172
- opacity: 1;
173
- }
174
- }
175
-
176
- .sr-only {
177
- border: 0;
178
- clip: rect(1px, 1px, 1px, 1px);
179
- -webkit-clip-path: inset(50%);
180
- clip-path: inset(50%);
181
- height: 1px;
182
- margin: -1px;
183
- overflow: hidden;
184
- padding: 0;
185
- position: absolute;
186
- width: 1px;
187
- white-space: nowrap;
188
- }
189
-
190
- .clientsLoader,
191
- .mobileClientsLoader,
192
- .tabletClientsLoader {
193
- display: flex;
194
- justify-content: center;
195
- padding: 16px 0;
196
- }
197
- `;
198
- //# sourceMappingURL=TuixTable.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TuixTable.styles.js","sourceRoot":"","sources":["../../../src/tuix-table/TuixTable.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAyGS,WAAW,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAwBxD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE3B,CAAC","sourcesContent":["import { css } from 'lit';\nimport { ScreenSizes } from '../utils/screenSizes.enum';\n\nexport const tableStyles = css`\n :host {\n display: block;\n width: 100%;\n }\n\n .table_wrapper {\n width: 100%;\n overflow-x: auto;\n }\n\n table {\n min-width: 650px;\n table-layout: fixed;\n width: 100%;\n border-collapse: collapse;\n }\n\n thead th {\n box-sizing: border-box;\n padding: 8px;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n tbody tr td {\n box-sizing: border-box;\n height: 52px;\n padding: 6px 8px;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n ::slotted(*) {\n display: inline-flex;\n align-items: center;\n margin-right: 8px;\n gap: 10px;\n }\n\n .dropdown_container {\n position: relative;\n border-radius: 4px;\n }\n\n .dropdown_container .items-per-page-dropdown {\n width: 55px;\n border: none;\n background-color: transparent;\n padding: 8px;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n\n .dropdown_container .items-per-page-dropdown:focus-visible {\n border: none;\n outline: none;\n }\n\n .dropdown_container .arrow-icon {\n position: absolute;\n right: 8px;\n bottom: 8px;\n cursor: pointer;\n pointer-events: none;\n }\n\n footer.table_footer {\n height: 48px;\n padding: 8px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n }\n\n footer.table_footer .items-per-page {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n footer.table_footer .navigation {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n footer.table_footer .navigation .buttons {\n display: flex;\n gap: 8px;\n cursor: pointer;\n }\n\n .mobile_table {\n display: none;\n }\n\n @media only screen and (max-width: ${ScreenSizes.TABLET}px) {\n .mobile_table {\n display: block;\n }\n\n footer.table_footer {\n align-items: flex-start;\n gap: 8px;\n }\n\n .mobile_table .table_row {\n display: flex;\n min-height: 40px;\n }\n\n .mobile_table .table_row > * {\n padding: 0 16px;\n width: 50%;\n text-overflow: ellipsis;\n overflow: hidden;\n display: flex;\n align-items: center;\n }\n }\n`;\n\nexport const threeDots = css`\n .tuix-spinner-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 24px 0;\n }\n\n .three-dots-wrapper {\n display: inline-flex;\n gap: calc(var(--dot-size) * 0.5);\n align-items: center;\n justify-content: center;\n position: relative;\n }\n .three-dots-wrapper .dot {\n width: var(--dot-size);\n height: var(--dot-size);\n background: var(--dot-color);\n border-radius: 50%;\n display: inline-block;\n animation: threeDots 0.9s infinite ease-in-out both;\n }\n .three-dots-wrapper .dot:nth-child(2) {\n animation-delay: 0.15s;\n }\n .three-dots-wrapper .dot:nth-child(3) {\n animation-delay: 0.3s;\n }\n\n @keyframes threeDots {\n 0%,\n 80%,\n 100% {\n transform: scale(0.6);\n opacity: 0.6;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n .sr-only {\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n white-space: nowrap;\n }\n\n .clientsLoader,\n .mobileClientsLoader,\n .tabletClientsLoader {\n display: flex;\n justify-content: center;\n padding: 16px 0;\n }\n`;\n"]}
@@ -1,45 +0,0 @@
1
- export interface IDataTableHeader<TRowData = Record<string, unknown>> {
2
- cellColor?: (rowData: TRowData) => string | undefined;
3
- isSlot?: boolean;
4
- slotName?: string;
5
- name?: string;
6
- dataKey: Extract<keyof TRowData, string>;
7
- width: number;
8
- }
9
- export interface TablePaginationProps {
10
- totalItems: number;
11
- currentPage: number;
12
- itemsPerPage: number;
13
- startItem: number;
14
- endItem: number;
15
- onNextPage: () => void;
16
- onPreviousPage: () => void;
17
- onItemsPerPageChange: (newPageSize: number) => void;
18
- isLoading?: boolean;
19
- stickyInTablet?: boolean;
20
- }
21
- export interface ThreeDotsLoaderConfig {
22
- size?: string;
23
- color?: string;
24
- visible?: boolean;
25
- ariaLabel?: string;
26
- wrapperStyle?: Record<string, string | number>;
27
- }
28
- export interface TuixTableElement<TRowData = any> extends HTMLElement {
29
- data: TRowData[];
30
- headers: IDataTableHeader<TRowData>[];
31
- totalItems?: number;
32
- currentPage?: number;
33
- currentSize?: number;
34
- isLoadingData?: boolean;
35
- paginated?: boolean;
36
- showMobileTableInTablet?: boolean;
37
- disableMobileTable?: boolean;
38
- pageSizeOptions?: number[];
39
- loader?: ThreeDotsLoaderConfig;
40
- }
41
- export interface PaginationEventDetail {
42
- page: number;
43
- pageSize: number;
44
- }
45
- export type TuixPaginationEvent = CustomEvent<PaginationEventDetail>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tuix-table.interface.js.map