@3t-transform/threeteeui 0.0.16 → 0.0.18

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 (125) hide show
  1. package/dist/cjs/{index-864b7110.js → index-bf777121.js} +3 -0
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/tttx-button.cjs.entry.js +25 -19
  4. package/dist/cjs/tttx-checkbox.cjs.entry.js +18 -18
  5. package/dist/cjs/tttx-form.cjs.entry.js +365 -365
  6. package/dist/cjs/tttx-icon.cjs.entry.js +14 -1856
  7. package/dist/cjs/tttx-input-calendar.cjs.entry.js +125 -0
  8. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +33 -0
  9. package/dist/cjs/tttx-list.cjs.entry.js +188 -188
  10. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +16 -16
  11. package/dist/cjs/tttx-popover-content.cjs.entry.js +13 -13
  12. package/dist/cjs/tttx-standalone-input.cjs.entry.js +127 -127
  13. package/dist/cjs/tttx-table.cjs.entry.js +50 -50
  14. package/dist/cjs/tttx.cjs.js +2 -2
  15. package/dist/collection/collection-manifest.json +2 -0
  16. package/dist/collection/components/atoms/tttx-button/tttx-button.css +94 -18
  17. package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -93
  18. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +74 -27
  19. package/dist/collection/components/atoms/tttx-icon/tttx-icon.css +8 -5
  20. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -116
  21. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -47
  22. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.css +26 -0
  23. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +56 -0
  24. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +12 -0
  25. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -66
  26. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -17
  27. package/dist/collection/components/atoms/tttx-popover-content/tttx-popover-content.js +97 -96
  28. package/dist/collection/components/atoms/tttx-popover-content/tttx-popover-content.stories.js +23 -23
  29. package/dist/collection/components/atoms/ttx-checkbox/tttx-checkbox.js +102 -101
  30. package/dist/collection/components/atoms/ttx-checkbox/tttx-checkbox.stories.js +9 -9
  31. package/dist/collection/components/molecules/tttx-form/tttx-form.css +95 -11
  32. package/dist/collection/components/molecules/tttx-form/tttx-form.js +452 -451
  33. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +109 -109
  34. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.css +93 -0
  35. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.js +174 -0
  36. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.stories.js +27 -0
  37. package/dist/collection/components/molecules/tttx-list/tttx-list.js +312 -311
  38. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +14 -14
  39. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +570 -569
  40. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +134 -134
  41. package/dist/collection/components/molecules/tttx-table/tttx-table.js +174 -177
  42. package/dist/collection/components/molecules/tttx-table/tttx-table.stories.js +65 -65
  43. package/dist/collection/components/palette.stories.js +7 -7
  44. package/dist/collection/docs/gettingstarted-developer.stories.js +5 -5
  45. package/dist/collection/icons.js +2838 -2838
  46. package/dist/collection/index.js +1 -1
  47. package/dist/components/index.d.ts +2 -0
  48. package/dist/components/index.js +2 -0
  49. package/dist/components/tttx-button.js +1 -40
  50. package/dist/components/tttx-button2.js +56 -0
  51. package/dist/components/tttx-checkbox.js +36 -36
  52. package/dist/components/tttx-form.js +382 -382
  53. package/dist/components/tttx-icon2.js +32 -1874
  54. package/dist/components/tttx-input-calendar.d.ts +11 -0
  55. package/dist/components/tttx-input-calendar.js +157 -0
  56. package/dist/components/tttx-keyvalue-block.d.ts +11 -0
  57. package/dist/components/tttx-keyvalue-block.js +49 -0
  58. package/dist/components/tttx-list.js +214 -214
  59. package/dist/components/tttx-loading-spinner2.js +33 -33
  60. package/dist/components/tttx-popover-content2.js +32 -32
  61. package/dist/components/tttx-standalone-input.js +168 -169
  62. package/dist/components/tttx-table.js +79 -79
  63. package/dist/esm/{index-232e347b.js → index-a05bd606.js} +3 -0
  64. package/dist/esm/loader.js +3 -3
  65. package/dist/esm/polyfills/core-js.js +0 -0
  66. package/dist/esm/polyfills/dom.js +0 -0
  67. package/dist/esm/polyfills/es5-html-element.js +0 -0
  68. package/dist/esm/polyfills/index.js +0 -0
  69. package/dist/esm/polyfills/system.js +0 -0
  70. package/dist/esm/tttx-button.entry.js +25 -19
  71. package/dist/esm/tttx-checkbox.entry.js +18 -18
  72. package/dist/esm/tttx-form.entry.js +365 -365
  73. package/dist/esm/tttx-icon.entry.js +14 -1856
  74. package/dist/esm/tttx-input-calendar.entry.js +121 -0
  75. package/dist/esm/tttx-keyvalue-block.entry.js +29 -0
  76. package/dist/esm/tttx-list.entry.js +188 -188
  77. package/dist/esm/tttx-loading-spinner.entry.js +16 -16
  78. package/dist/esm/tttx-popover-content.entry.js +13 -13
  79. package/dist/esm/tttx-standalone-input.entry.js +127 -127
  80. package/dist/esm/tttx-table.entry.js +50 -50
  81. package/dist/esm/tttx.js +3 -3
  82. package/dist/tttx/{p-3973b7dd.entry.js → p-037d286f.entry.js} +1 -1
  83. package/dist/tttx/{p-184c4fae.js → p-07b134af.js} +1 -1
  84. package/dist/tttx/{p-125f06b3.entry.js → p-1b63f16a.entry.js} +1 -1
  85. package/dist/tttx/p-45afb84c.entry.js +1 -0
  86. package/dist/tttx/p-68ff0f39.entry.js +1 -0
  87. package/dist/tttx/{p-6828fe6f.entry.js → p-93763d3c.entry.js} +1 -1
  88. package/dist/tttx/p-a5808741.entry.js +1 -0
  89. package/dist/tttx/{p-fe4c70b2.entry.js → p-a92ca87e.entry.js} +1 -1
  90. package/dist/tttx/{p-5ce1ba22.entry.js → p-a96ca037.entry.js} +1 -1
  91. package/dist/tttx/p-dc087fd8.entry.js +1 -0
  92. package/dist/tttx/p-e3cc75bb.entry.js +1 -0
  93. package/dist/tttx/{p-01e1894e.entry.js → p-f579ed1e.entry.js} +1 -1
  94. package/dist/tttx/tttx.esm.js +1 -1
  95. package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -9
  96. package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -20
  97. package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -14
  98. package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -21
  99. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +4 -0
  100. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +6 -0
  101. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -6
  102. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -17
  103. package/dist/types/components/atoms/tttx-popover-content/tttx-popover-content.d.ts +7 -7
  104. package/dist/types/components/atoms/tttx-popover-content/tttx-popover-content.stories.d.ts +18 -18
  105. package/dist/types/components/atoms/ttx-checkbox/tttx-checkbox.d.ts +9 -9
  106. package/dist/types/components/atoms/ttx-checkbox/tttx-checkbox.stories.d.ts +6 -6
  107. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +134 -134
  108. package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +12 -12
  109. package/dist/types/components/molecules/tttx-input-calendar/tttx-input-calendar.d.ts +19 -0
  110. package/dist/types/components/molecules/tttx-input-calendar/tttx-input-calendar.stories.d.ts +26 -0
  111. package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +51 -51
  112. package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +13 -13
  113. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +38 -38
  114. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +106 -106
  115. package/dist/types/components/molecules/tttx-table/tttx-table.d.ts +15 -15
  116. package/dist/types/components/molecules/tttx-table/tttx-table.stories.d.ts +21 -21
  117. package/dist/types/components/palette.stories.d.ts +6 -6
  118. package/dist/types/components.d.ts +46 -15
  119. package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -5
  120. package/dist/types/icons.d.ts +2 -2
  121. package/dist/types/index.d.ts +1 -1
  122. package/package.json +4 -4
  123. package/dist/tttx/p-10316ff1.entry.js +0 -1
  124. package/dist/tttx/p-b1c22f5f.entry.js +0 -1
  125. package/dist/tttx/p-c7f9be65.entry.js +0 -1
@@ -1,70 +1,70 @@
1
- import icons from '../../../icons';
2
- export default {
3
- title: 'Molecules/Standalone Input',
4
- component: 'tttx-standalone-input',
5
- argTypes: {
6
- iconleft: {
7
- options: icons,
8
- control: { type: 'select' },
9
- },
10
- iconright: {
11
- options: icons,
12
- control: { type: 'select' },
13
- },
14
- label: {
15
- control: { type: 'text' },
16
- },
17
- errormsg: {
18
- control: { type: 'text' },
19
- },
20
- showerrormsg: {
21
- control: { type: 'boolean' },
22
- },
23
- checked: {
24
- control: { type: 'boolean' },
25
- },
26
- disabled: {
27
- control: { type: 'boolean' },
28
- },
29
- max: {
30
- control: { type: 'text' },
31
- },
32
- maxlength: {
33
- control: { type: 'text' },
34
- },
35
- min: {
36
- control: { type: 'text' },
37
- },
38
- minlength: {
39
- control: { type: 'text' },
40
- },
41
- name: {
42
- control: { type: 'text' },
43
- },
44
- pattern: {
45
- control: { type: 'text' },
46
- },
47
- placeholder: {
48
- control: { type: 'text' },
49
- },
50
- readonly: {
51
- control: { type: 'boolean' },
52
- },
53
- required: {
54
- control: { type: 'boolean' },
55
- },
56
- step: {
57
- control: { type: 'text' },
58
- },
59
- type: {
60
- options: ['text', 'password', 'email', 'number'],
61
- control: { type: 'radio' },
62
- },
63
- value: {
64
- control: { type: 'text' },
65
- },
66
- },
67
- };
1
+ import icons from '../../../icons';
2
+ export default {
3
+ title: 'Molecules/Standalone Input',
4
+ component: 'tttx-standalone-input',
5
+ argTypes: {
6
+ iconleft: {
7
+ options: icons,
8
+ control: { type: 'select' },
9
+ },
10
+ iconright: {
11
+ options: icons,
12
+ control: { type: 'select' },
13
+ },
14
+ label: {
15
+ control: { type: 'text' },
16
+ },
17
+ errormsg: {
18
+ control: { type: 'text' },
19
+ },
20
+ showerrormsg: {
21
+ control: { type: 'boolean' },
22
+ },
23
+ checked: {
24
+ control: { type: 'boolean' },
25
+ },
26
+ disabled: {
27
+ control: { type: 'boolean' },
28
+ },
29
+ max: {
30
+ control: { type: 'text' },
31
+ },
32
+ maxlength: {
33
+ control: { type: 'text' },
34
+ },
35
+ min: {
36
+ control: { type: 'text' },
37
+ },
38
+ minlength: {
39
+ control: { type: 'text' },
40
+ },
41
+ name: {
42
+ control: { type: 'text' },
43
+ },
44
+ pattern: {
45
+ control: { type: 'text' },
46
+ },
47
+ placeholder: {
48
+ control: { type: 'text' },
49
+ },
50
+ readonly: {
51
+ control: { type: 'boolean' },
52
+ },
53
+ required: {
54
+ control: { type: 'boolean' },
55
+ },
56
+ step: {
57
+ control: { type: 'text' },
58
+ },
59
+ type: {
60
+ options: ['text', 'password', 'email', 'number'],
61
+ control: { type: 'radio' },
62
+ },
63
+ value: {
64
+ control: { type: 'text' },
65
+ },
66
+ },
67
+ };
68
68
  const TemplateTextInput = ({ iconleft, iconright, label, errormsg, showerrormsg, checked, disabled, max, maxlength, min, minlength, name, pattern, placeholder, readonly, required, step, type, value, }) => `
69
69
  <tttx-standalone-input
70
70
  iconleft="${iconleft || ''}"
@@ -87,70 +87,70 @@ const TemplateTextInput = ({ iconleft, iconright, label, errormsg, showerrormsg,
87
87
  type="${type}"
88
88
  value="${value}"
89
89
  />
90
- `;
91
- export const InputField = TemplateTextInput.bind({});
92
- InputField.args = {
93
- value: '',
94
- label: 'First name',
95
- type: 'text',
96
- errormsg: 'Please enter your first name',
97
- required: false,
98
- showerrormsg: false,
99
- placeholder: 'Enter first name',
100
- };
101
- // export const TextInputIconLeft = TemplateTextInput.bind({});
102
- // TextInputIconLeft.args = {
103
- // value: 'Uh egg',
104
- // label: 'Please tell me about your egg',
105
- // iconleft: 'egg',
106
- // type: 'text',
107
- // errormsg: 'Incorrect egg, please egg again.',
108
- // required: true,
109
- // showerrormsg: true,
110
- // placeholder: 'Please for the love of god tell me about your egg',
111
- // };
112
- // export const TextInputIconRight = TemplateTextInput.bind({});
113
- // TextInputIconRight.args = {
114
- // value: 'Uh egg',
115
- // label: 'Please tell me about your egg',
116
- // iconright: 'egg',
117
- // type: 'text',
118
- // errormsg: 'Incorrect egg, please egg again.',
119
- // required: true,
120
- // showerrormsg: true,
121
- // placeholder: 'Please for the love of god tell me about your egg',
122
- // };
123
- // export const PasswordInputBasic = TemplateTextInput.bind({});
124
- // PasswordInputBasic.args = {
125
- // value: 'qwefdweferg',
126
- // label: 'Input your Password',
127
- // iconleft: 'lock',
128
- // type: 'password',
129
- // errormsg: 'Password is not strong enough',
130
- // required: true,
131
- // showerrormsg: true,
132
- // placeholder: 'Your password',
133
- // };
134
- // export const EmailInputBasic = TemplateTextInput.bind({});
135
- // EmailInputBasic.args = {
136
- // value: 'email.address@website.com',
137
- // label: 'Choose an email address',
138
- // iconleft: 'mail',
139
- // type: 'email',
140
- // errormsg: 'This email smells funny',
141
- // required: true,
142
- // valid: false,
143
- // showerrormsg: true,
144
- // placeholder: 'Your email address',
145
- // };
146
- // export const NumberInputBasic = TemplateTextInput.bind({});
147
- // NumberInputBasic.args = {
148
- // value: '42069',
149
- // label: 'What is your favourite number?',
150
- // iconleft: '123',
151
- // type: 'number',
152
- // errormsg: 'This number feels wrong',
153
- // required: true,
154
- // showerrormsg: true,
155
- // placeholder: 'Your favourite number',
156
- // };
90
+ `;
91
+ export const InputField = TemplateTextInput.bind({});
92
+ InputField.args = {
93
+ value: '',
94
+ label: 'First name',
95
+ type: 'text',
96
+ errormsg: 'Please enter your first name',
97
+ required: false,
98
+ showerrormsg: false,
99
+ placeholder: 'Enter first name',
100
+ };
101
+ // export const TextInputIconLeft = TemplateTextInput.bind({});
102
+ // TextInputIconLeft.args = {
103
+ // value: 'Uh egg',
104
+ // label: 'Please tell me about your egg',
105
+ // iconleft: 'egg',
106
+ // type: 'text',
107
+ // errormsg: 'Incorrect egg, please egg again.',
108
+ // required: true,
109
+ // showerrormsg: true,
110
+ // placeholder: 'Please for the love of god tell me about your egg',
111
+ // };
112
+ // export const TextInputIconRight = TemplateTextInput.bind({});
113
+ // TextInputIconRight.args = {
114
+ // value: 'Uh egg',
115
+ // label: 'Please tell me about your egg',
116
+ // iconright: 'egg',
117
+ // type: 'text',
118
+ // errormsg: 'Incorrect egg, please egg again.',
119
+ // required: true,
120
+ // showerrormsg: true,
121
+ // placeholder: 'Please for the love of god tell me about your egg',
122
+ // };
123
+ // export const PasswordInputBasic = TemplateTextInput.bind({});
124
+ // PasswordInputBasic.args = {
125
+ // value: 'qwefdweferg',
126
+ // label: 'Input your Password',
127
+ // iconleft: 'lock',
128
+ // type: 'password',
129
+ // errormsg: 'Password is not strong enough',
130
+ // required: true,
131
+ // showerrormsg: true,
132
+ // placeholder: 'Your password',
133
+ // };
134
+ // export const EmailInputBasic = TemplateTextInput.bind({});
135
+ // EmailInputBasic.args = {
136
+ // value: 'email.address@website.com',
137
+ // label: 'Choose an email address',
138
+ // iconleft: 'mail',
139
+ // type: 'email',
140
+ // errormsg: 'This email smells funny',
141
+ // required: true,
142
+ // valid: false,
143
+ // showerrormsg: true,
144
+ // placeholder: 'Your email address',
145
+ // };
146
+ // export const NumberInputBasic = TemplateTextInput.bind({});
147
+ // NumberInputBasic.args = {
148
+ // value: '42069',
149
+ // label: 'What is your favourite number?',
150
+ // iconleft: '123',
151
+ // type: 'number',
152
+ // errormsg: 'This number feels wrong',
153
+ // required: true,
154
+ // showerrormsg: true,
155
+ // placeholder: 'Your favourite number',
156
+ // };
@@ -1,177 +1,174 @@
1
- import { Host, h } from '@stencil/core';
2
- export class TttxTable {
3
- constructor() {
4
- this.headers = [];
5
- this.data = {};
6
- this.loading = false;
7
- this.selected = -1;
8
- }
9
- handleKeyDown(ev) {
10
- if (ev.key === 'ArrowDown' || ev.key === 'ArrowUp') {
11
- this.updateSelectedIndex(ev.key);
12
- this.emitRowSelected();
13
- }
14
- }
15
- updateSelectedIndex(key) {
16
- if (this.selected === -1) {
17
- this.selected = 0;
18
- }
19
- else {
20
- const isArrowDown = key === 'ArrowDown';
21
- const isArrowUp = key === 'ArrowUp';
22
- if (isArrowDown && this.selected < this.data.length - 1) {
23
- this.selected++;
24
- }
25
- else if (isArrowUp && this.selected > 0) {
26
- this.selected--;
27
- }
28
- }
29
- }
30
- emitRowSelected() {
31
- this.rowSelected.emit(this.data[this.selected]);
32
- }
33
- rowSelectedHandler(row) {
34
- this.rowSelected.emit(row);
35
- this.selected = this.data.findIndex((item) => item === row);
36
- }
37
- headerClickedHandler(key) {
38
- this.headerClicked.emit(key);
39
- }
40
- render() {
41
- return (h(Host, null, h("table", null, h("thead", null, h("tr", null, this.loading ?
42
- [1, 2, 3].map(() => (h("th", null, h("div", { class: "skeleton" })))) :
43
- this.headers && this.headers.map((header) => (h("th", { scope: "col", onClick: () => this.headerClickedHandler(header.key) }, header.label))))), h("tbody", null, this.loading ?
44
- [1, 2, 3].map(() => (h("tr", null, h("td", null, h("div", { class: "skeleton" })), h("td", null, h("div", { class: "skeleton" })), h("td", null, h("div", { class: "skeleton" }))))) :
45
- Object.keys(this.data).map((key, index) => (h("tr", { class: index === this.selected ? 'selected' : '', onClick: () => this.rowSelectedHandler(this.data[key]) }, this.headers.map((header) => (h("td", null, this.data[key][header.key], " ", header.actions && h("tttx-icon", { class: "align-right", icon: "more_vert" }, h("div", { slot: "popover" }, h("tttx-popover-content", { header: "The humble egg", body: "Most arthropods such as insects, vertebrates (excluding live-bearing mammals), and mollusks lay eggs, although some, such as scorpions, do not.", linkcontext: "Wikipedia_egg", linktext: "Learn more about eggs" })))))))))))));
46
- }
47
- static get is() { return "tttx-table"; }
48
- static get encapsulation() { return "shadow"; }
49
- static get originalStyleUrls() {
50
- return {
51
- "$": ["tttx-table.css"]
52
- };
53
- }
54
- static get styleUrls() {
55
- return {
56
- "$": ["tttx-table.css"]
57
- };
58
- }
59
- static get properties() {
60
- return {
61
- "headers": {
62
- "type": "any",
63
- "mutable": false,
64
- "complexType": {
65
- "original": "any",
66
- "resolved": "any",
67
- "references": {}
68
- },
69
- "required": false,
70
- "optional": false,
71
- "docs": {
72
- "tags": [],
73
- "text": ""
74
- },
75
- "attribute": "headers",
76
- "reflect": false,
77
- "defaultValue": "[]"
78
- },
79
- "data": {
80
- "type": "any",
81
- "mutable": false,
82
- "complexType": {
83
- "original": "any",
84
- "resolved": "any",
85
- "references": {}
86
- },
87
- "required": false,
88
- "optional": false,
89
- "docs": {
90
- "tags": [],
91
- "text": ""
92
- },
93
- "attribute": "data",
94
- "reflect": false,
95
- "defaultValue": "{}"
96
- },
97
- "loading": {
98
- "type": "boolean",
99
- "mutable": false,
100
- "complexType": {
101
- "original": "boolean",
102
- "resolved": "boolean",
103
- "references": {}
104
- },
105
- "required": false,
106
- "optional": false,
107
- "docs": {
108
- "tags": [],
109
- "text": ""
110
- },
111
- "attribute": "loading",
112
- "reflect": false,
113
- "defaultValue": "false"
114
- },
115
- "selected": {
116
- "type": "number",
117
- "mutable": false,
118
- "complexType": {
119
- "original": "number",
120
- "resolved": "number",
121
- "references": {}
122
- },
123
- "required": false,
124
- "optional": false,
125
- "docs": {
126
- "tags": [],
127
- "text": ""
128
- },
129
- "attribute": "selected",
130
- "reflect": false,
131
- "defaultValue": "-1"
132
- }
133
- };
134
- }
135
- static get events() {
136
- return [{
137
- "method": "rowSelected",
138
- "name": "rowSelected",
139
- "bubbles": true,
140
- "cancelable": true,
141
- "composed": true,
142
- "docs": {
143
- "tags": [],
144
- "text": ""
145
- },
146
- "complexType": {
147
- "original": "any",
148
- "resolved": "any",
149
- "references": {}
150
- }
151
- }, {
152
- "method": "headerClicked",
153
- "name": "headerClicked",
154
- "bubbles": true,
155
- "cancelable": true,
156
- "composed": true,
157
- "docs": {
158
- "tags": [],
159
- "text": ""
160
- },
161
- "complexType": {
162
- "original": "any",
163
- "resolved": "any",
164
- "references": {}
165
- }
166
- }];
167
- }
168
- static get listeners() {
169
- return [{
170
- "name": "keydown",
171
- "method": "handleKeyDown",
172
- "target": "document",
173
- "capture": false,
174
- "passive": false
175
- }];
176
- }
177
- }
1
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
+ import { Host, h } from '@stencil/core';
3
+ export class TttxTable {
4
+ constructor() {
5
+ this.headers = [];
6
+ this.data = [];
7
+ this.loading = false;
8
+ this.selected = -1;
9
+ }
10
+ handleKeyDown(ev) {
11
+ if (ev.key === 'ArrowDown' || ev.key === 'ArrowUp') {
12
+ this.updateSelectedIndex(ev.key);
13
+ this.emitRowSelected();
14
+ }
15
+ }
16
+ updateSelectedIndex(key) {
17
+ if (this.selected === -1) {
18
+ this.selected = 0;
19
+ }
20
+ else {
21
+ const isArrowDown = key === 'ArrowDown';
22
+ const isArrowUp = key === 'ArrowUp';
23
+ if (isArrowDown && this.selected < this.data.length - 1) {
24
+ this.selected++;
25
+ }
26
+ else if (isArrowUp && this.selected > 0) {
27
+ this.selected--;
28
+ }
29
+ }
30
+ }
31
+ emitRowSelected() {
32
+ this.rowSelected.emit(this.data[this.selected]);
33
+ }
34
+ rowSelectedHandler(row) {
35
+ this.rowSelected.emit(row);
36
+ this.selected = this.data.findIndex((item) => item === row);
37
+ }
38
+ headerClickedHandler(key) {
39
+ this.headerClicked.emit(key);
40
+ }
41
+ render() {
42
+ return (h(Host, null, h("table", null, h("thead", null, h("tr", null, this.loading ?
43
+ [1, 2, 3].map(() => (h("th", null, h("div", { class: "skeleton" })))) :
44
+ this.headers && this.headers.map((header) => (h("th", { scope: "col", onClick: () => this.headerClickedHandler(header.key) }, header.label))))), h("tbody", null, this.loading ?
45
+ [1, 2, 3].map(() => (h("tr", null, h("td", null, h("div", { class: "skeleton" })), h("td", null, h("div", { class: "skeleton" })), h("td", null, h("div", { class: "skeleton" }))))) :
46
+ Object.keys(this.data).map((key, index) => (h("tr", { class: index === this.selected ? 'selected' : '', onClick: () => this.rowSelectedHandler(this.data[key]) }, this.headers.map((header) => (h("td", null, this.data[key][header.key], " ", header.actions && h("tttx-icon", { class: "align-right", icon: "more_vert" }, h("div", { slot: "popover" }, h("tttx-popover-content", { header: "The humble egg", body: "Most arthropods such as insects, vertebrates (excluding live-bearing mammals), and mollusks lay eggs, although some, such as scorpions, do not.", linkcontext: "Wikipedia_egg", linktext: "Learn more about eggs" })))))))))))));
47
+ }
48
+ static get is() { return "tttx-table"; }
49
+ static get encapsulation() { return "shadow"; }
50
+ static get originalStyleUrls() {
51
+ return {
52
+ "$": ["tttx-table.css"]
53
+ };
54
+ }
55
+ static get styleUrls() {
56
+ return {
57
+ "$": ["tttx-table.css"]
58
+ };
59
+ }
60
+ static get properties() {
61
+ return {
62
+ "headers": {
63
+ "type": "unknown",
64
+ "mutable": false,
65
+ "complexType": {
66
+ "original": "any[]",
67
+ "resolved": "any[]",
68
+ "references": {}
69
+ },
70
+ "required": false,
71
+ "optional": false,
72
+ "docs": {
73
+ "tags": [],
74
+ "text": ""
75
+ },
76
+ "defaultValue": "[]"
77
+ },
78
+ "data": {
79
+ "type": "unknown",
80
+ "mutable": false,
81
+ "complexType": {
82
+ "original": "any[]",
83
+ "resolved": "any[]",
84
+ "references": {}
85
+ },
86
+ "required": false,
87
+ "optional": false,
88
+ "docs": {
89
+ "tags": [],
90
+ "text": ""
91
+ },
92
+ "defaultValue": "[]"
93
+ },
94
+ "loading": {
95
+ "type": "boolean",
96
+ "mutable": false,
97
+ "complexType": {
98
+ "original": "boolean",
99
+ "resolved": "boolean",
100
+ "references": {}
101
+ },
102
+ "required": false,
103
+ "optional": false,
104
+ "docs": {
105
+ "tags": [],
106
+ "text": ""
107
+ },
108
+ "attribute": "loading",
109
+ "reflect": false,
110
+ "defaultValue": "false"
111
+ },
112
+ "selected": {
113
+ "type": "number",
114
+ "mutable": false,
115
+ "complexType": {
116
+ "original": "number",
117
+ "resolved": "number",
118
+ "references": {}
119
+ },
120
+ "required": false,
121
+ "optional": false,
122
+ "docs": {
123
+ "tags": [],
124
+ "text": ""
125
+ },
126
+ "attribute": "selected",
127
+ "reflect": false,
128
+ "defaultValue": "-1"
129
+ }
130
+ };
131
+ }
132
+ static get events() {
133
+ return [{
134
+ "method": "rowSelected",
135
+ "name": "rowSelected",
136
+ "bubbles": true,
137
+ "cancelable": true,
138
+ "composed": true,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": ""
142
+ },
143
+ "complexType": {
144
+ "original": "any",
145
+ "resolved": "any",
146
+ "references": {}
147
+ }
148
+ }, {
149
+ "method": "headerClicked",
150
+ "name": "headerClicked",
151
+ "bubbles": true,
152
+ "cancelable": true,
153
+ "composed": true,
154
+ "docs": {
155
+ "tags": [],
156
+ "text": ""
157
+ },
158
+ "complexType": {
159
+ "original": "any",
160
+ "resolved": "any",
161
+ "references": {}
162
+ }
163
+ }];
164
+ }
165
+ static get listeners() {
166
+ return [{
167
+ "name": "keydown",
168
+ "method": "handleKeyDown",
169
+ "target": "document",
170
+ "capture": false,
171
+ "passive": false
172
+ }];
173
+ }
174
+ }