@3t-transform/threeteeui 0.0.15 → 0.0.17

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 (153) hide show
  1. package/dist/cjs/index-864b7110.js +1531 -0
  2. package/dist/cjs/index.cjs.js +2 -0
  3. package/dist/cjs/loader.cjs.js +22 -0
  4. package/dist/cjs/tttx-button.cjs.entry.js +34 -0
  5. package/dist/cjs/tttx-checkbox.cjs.entry.js +28 -0
  6. package/dist/cjs/tttx-form.cjs.entry.js +374 -0
  7. package/dist/cjs/tttx-icon.cjs.entry.js +21 -0
  8. package/dist/cjs/tttx-input-calendar.cjs.entry.js +125 -0
  9. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +33 -0
  10. package/dist/cjs/tttx-list.cjs.entry.js +198 -0
  11. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +26 -0
  12. package/dist/cjs/tttx-popover-content.cjs.entry.js +23 -0
  13. package/dist/cjs/tttx-standalone-input.cjs.entry.js +136 -0
  14. package/dist/cjs/tttx-table.cjs.entry.js +60 -0
  15. package/dist/cjs/tttx.cjs.js +23 -0
  16. package/dist/collection/collection-manifest.json +22 -0
  17. package/dist/collection/components/atoms/tttx-button/tttx-button.css +138 -0
  18. package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -0
  19. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +74 -0
  20. package/dist/collection/components/atoms/tttx-icon/tttx-icon.css +108 -0
  21. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -0
  22. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -0
  23. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.css +26 -0
  24. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +56 -0
  25. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +12 -0
  26. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.css +48 -0
  27. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -0
  28. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -0
  29. package/dist/collection/components/atoms/tttx-popover-content/tttx-popover-content.css +30 -0
  30. package/dist/collection/components/atoms/tttx-popover-content/tttx-popover-content.js +97 -0
  31. package/dist/collection/components/atoms/tttx-popover-content/tttx-popover-content.stories.js +23 -0
  32. package/dist/collection/components/atoms/ttx-checkbox/tttx-checkbox.css +181 -0
  33. package/dist/collection/components/atoms/ttx-checkbox/tttx-checkbox.js +102 -0
  34. package/dist/collection/components/atoms/ttx-checkbox/tttx-checkbox.stories.js +13 -0
  35. package/dist/collection/components/molecules/tttx-form/tttx-form.css +314 -0
  36. package/dist/collection/components/molecules/tttx-form/tttx-form.js +452 -0
  37. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +109 -0
  38. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.css +93 -0
  39. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.js +174 -0
  40. package/dist/collection/components/molecules/tttx-input-calendar/tttx-input-calendar.stories.js +27 -0
  41. package/dist/collection/components/molecules/tttx-list/tttx-list.css +56 -0
  42. package/dist/collection/components/molecules/tttx-list/tttx-list.js +312 -0
  43. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +37 -0
  44. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.css +177 -0
  45. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +570 -0
  46. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +156 -0
  47. package/dist/collection/components/molecules/tttx-table/tttx-table.css +166 -0
  48. package/dist/collection/components/molecules/tttx-table/tttx-table.js +174 -0
  49. package/dist/collection/components/molecules/tttx-table/tttx-table.stories.js +81 -0
  50. package/dist/collection/components/palette.stories.js +88 -0
  51. package/dist/collection/docs/gettingstarted-developer.stories.js +9 -0
  52. package/dist/collection/icons.js +2838 -0
  53. package/dist/collection/index.js +1 -0
  54. package/dist/components/index.d.ts +41 -0
  55. package/dist/components/index.js +12 -0
  56. package/dist/components/tttx-button.d.ts +11 -0
  57. package/dist/components/tttx-button.js +6 -0
  58. package/dist/components/tttx-button2.js +56 -0
  59. package/dist/components/tttx-checkbox.d.ts +11 -0
  60. package/dist/components/tttx-checkbox.js +46 -0
  61. package/dist/components/tttx-form.d.ts +11 -0
  62. package/dist/components/tttx-form.js +391 -0
  63. package/dist/components/tttx-icon.d.ts +11 -0
  64. package/dist/components/tttx-icon.js +6 -0
  65. package/dist/components/tttx-icon2.js +35 -0
  66. package/dist/components/tttx-input-calendar.d.ts +11 -0
  67. package/dist/components/tttx-input-calendar.js +157 -0
  68. package/dist/components/tttx-keyvalue-block.d.ts +11 -0
  69. package/dist/components/tttx-keyvalue-block.js +49 -0
  70. package/dist/components/tttx-list.d.ts +11 -0
  71. package/dist/components/tttx-list.js +225 -0
  72. package/dist/components/tttx-loading-spinner.d.ts +11 -0
  73. package/dist/components/tttx-loading-spinner.js +6 -0
  74. package/dist/components/tttx-loading-spinner2.js +40 -0
  75. package/dist/components/tttx-popover-content.d.ts +11 -0
  76. package/dist/components/tttx-popover-content.js +6 -0
  77. package/dist/components/tttx-popover-content2.js +39 -0
  78. package/dist/components/tttx-standalone-input.d.ts +11 -0
  79. package/dist/components/tttx-standalone-input.js +179 -0
  80. package/dist/components/tttx-table.d.ts +11 -0
  81. package/dist/components/tttx-table.js +91 -0
  82. package/dist/esm/index-232e347b.js +1502 -0
  83. package/dist/esm/index.js +1 -0
  84. package/dist/esm/loader.js +18 -0
  85. package/dist/esm/polyfills/core-js.js +11 -0
  86. package/dist/esm/polyfills/css-shim.js +1 -0
  87. package/dist/esm/polyfills/dom.js +79 -0
  88. package/dist/esm/polyfills/es5-html-element.js +1 -0
  89. package/dist/esm/polyfills/index.js +34 -0
  90. package/dist/esm/polyfills/system.js +6 -0
  91. package/dist/esm/tttx-button.entry.js +30 -0
  92. package/dist/esm/tttx-checkbox.entry.js +24 -0
  93. package/dist/esm/tttx-form.entry.js +370 -0
  94. package/dist/esm/tttx-icon.entry.js +17 -0
  95. package/dist/esm/tttx-input-calendar.entry.js +121 -0
  96. package/dist/esm/tttx-keyvalue-block.entry.js +29 -0
  97. package/dist/esm/tttx-list.entry.js +194 -0
  98. package/dist/esm/tttx-loading-spinner.entry.js +22 -0
  99. package/dist/esm/tttx-popover-content.entry.js +19 -0
  100. package/dist/esm/tttx-standalone-input.entry.js +132 -0
  101. package/dist/esm/tttx-table.entry.js +56 -0
  102. package/dist/esm/tttx.js +18 -0
  103. package/dist/index.cjs.js +1 -0
  104. package/dist/index.js +1 -0
  105. package/dist/tttx/index.esm.js +0 -0
  106. package/dist/tttx/p-01e1894e.entry.js +1 -0
  107. package/dist/tttx/p-184c4fae.js +2 -0
  108. package/dist/tttx/p-1bc3dfee.entry.js +1 -0
  109. package/dist/tttx/p-1cf8f9e8.entry.js +1 -0
  110. package/dist/tttx/p-220f7519.entry.js +1 -0
  111. package/dist/tttx/p-3973b7dd.entry.js +1 -0
  112. package/dist/tttx/p-5247e827.entry.js +1 -0
  113. package/dist/tttx/p-6828fe6f.entry.js +1 -0
  114. package/dist/tttx/p-81904eed.entry.js +1 -0
  115. package/dist/tttx/p-cf107fb6.entry.js +1 -0
  116. package/dist/tttx/p-f56fe662.entry.js +1 -0
  117. package/dist/tttx/p-fe4c70b2.entry.js +1 -0
  118. package/dist/tttx/tttx.esm.js +1 -0
  119. package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -0
  120. package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -0
  121. package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -0
  122. package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -0
  123. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +4 -0
  124. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +6 -0
  125. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -0
  126. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -0
  127. package/dist/types/components/atoms/tttx-popover-content/tttx-popover-content.d.ts +7 -0
  128. package/dist/types/components/atoms/tttx-popover-content/tttx-popover-content.stories.d.ts +18 -0
  129. package/dist/types/components/atoms/ttx-checkbox/tttx-checkbox.d.ts +9 -0
  130. package/dist/types/components/atoms/ttx-checkbox/tttx-checkbox.stories.d.ts +6 -0
  131. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +134 -0
  132. package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +12 -0
  133. package/dist/types/components/molecules/tttx-input-calendar/tttx-input-calendar.d.ts +19 -0
  134. package/dist/types/components/molecules/tttx-input-calendar/tttx-input-calendar.stories.d.ts +26 -0
  135. package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +51 -0
  136. package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +13 -0
  137. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +38 -0
  138. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +106 -0
  139. package/dist/types/components/molecules/tttx-table/tttx-table.d.ts +15 -0
  140. package/dist/types/components/molecules/tttx-table/tttx-table.stories.d.ts +21 -0
  141. package/dist/types/components/palette.stories.d.ts +6 -0
  142. package/dist/types/components.d.ts +295 -0
  143. package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -0
  144. package/dist/types/icons.d.ts +2 -0
  145. package/dist/types/index.d.ts +1 -0
  146. package/dist/types/stencil-public-runtime.d.ts +1637 -0
  147. package/loader/cdn.js +3 -0
  148. package/loader/index.cjs.js +3 -0
  149. package/loader/index.d.ts +21 -0
  150. package/loader/index.es2017.js +3 -0
  151. package/loader/index.js +4 -0
  152. package/loader/package.json +11 -0
  153. package/package.json +4 -4
@@ -0,0 +1,156 @@
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
+ const TemplateTextInput = ({ iconleft, iconright, label, errormsg, showerrormsg, checked, disabled, max, maxlength, min, minlength, name, pattern, placeholder, readonly, required, step, type, value, }) => `
69
+ <tttx-standalone-input
70
+ iconleft="${iconleft || ''}"
71
+ iconright="${iconright || ''}"
72
+ label="${label}"
73
+ errormsg="${errormsg}"
74
+ ${showerrormsg ? 'showerrormsg' : ''}
75
+ ${checked ? 'checked' : ''}
76
+ ${disabled ? 'disabled' : ''}
77
+ ${max ? `max=${max}` : ''}
78
+ ${maxlength ? `maxlength=${maxlength}` : ''}
79
+ ${min ? `min=${min}` : ''}
80
+ ${minlength ? `minlength=${minlength}` : ''}
81
+ ${name ? `name=${name}` : ''}
82
+ ${pattern ? `pattern=${pattern}` : ''}
83
+ ${placeholder ? `placeholder=${placeholder}` : ''}
84
+ ${readonly ? 'readonly' : ''}
85
+ ${required ? 'required' : ''}
86
+ ${step ? 'step' : ''}
87
+ type="${type}"
88
+ value="${value}"
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
+ // };
@@ -0,0 +1,166 @@
1
+ // SPACING
2
+ $spacing-unit: 4px;
3
+
4
+ // REGULAR
5
+ $horizontal-spacing: $spacing-unit * 4;
6
+ $vertical-spacing: $spacing-unit * 2;
7
+ $base-padding: $vertical-spacing $horizontal-spacing;
8
+ $base-height: $spacing-unit * 9;
9
+ $component-spacing: $spacing-unit * 4;
10
+
11
+ // SMALL
12
+ $horizontal-spacing-sm: $spacing-unit * 2;
13
+ $vertical-spacing-sm: $spacing-unit * 1;
14
+ $base-padding-sm: $vertical-spacing-sm $horizontal-spacing-sm;
15
+ $base-height-sm: $spacing-unit * 7;
16
+
17
+ // COLOURS
18
+ $grey-0: #212121;
19
+ $grey-1: #363636;
20
+ $grey-2: #4c4c4c;
21
+ $grey-3: #636363;
22
+ $grey-4: #757575;
23
+ $grey-5: #9e9e9e;
24
+ $grey-6: #aeaeae;
25
+ $grey-7: #c8c8c8;
26
+ $grey-8: #e3e3e3;
27
+ $grey-9: #f0f0f0;
28
+
29
+ $white: white;
30
+ $black: $grey-0;
31
+ $transparent: transparent;
32
+
33
+ $blue-0: #00187c;
34
+ $blue-1: #032e8c;
35
+ $blue-2: #0849a3;
36
+ $blue-3: #0951a8;
37
+ $blue-4: #1169ba;
38
+ $blue-5: #1479c6;
39
+ $blue-6: #5194d2;
40
+ $blue-7: #7aacdd;
41
+ $blue-8: #b9d5ed;
42
+ $blue-9: #e7f1f9;
43
+
44
+ $red-0: #7c0000;
45
+ $red-1: #8c0000;
46
+ $red-2: #a30000;
47
+ $red-3: #a80000;
48
+ $red-4: #ba0000;
49
+ $red-5: #dc0000;
50
+ $red-6: #d25151;
51
+ $red-7: #dd7a7a;
52
+ $red-8: #edc1c1;
53
+ $red-9: #f9e7e7;
54
+
55
+ $black-1: #e6e6e6;
56
+
57
+ $brand: $blue-0;
58
+ $accent: $blue-5;
59
+ $accent-selected: $blue-9;
60
+ $error: $red-5;
61
+
62
+ $severity-critical: #dc0000;
63
+ $severity-warning: #f59500;
64
+ $severity-success: #a2bb31;
65
+ $severity-info: $accent;
66
+
67
+ $ui-primary: $black;
68
+ $ui-secondary: $grey-4;
69
+ $ui-disabled: $grey-2;
70
+ $ui-placeholder: $grey-5;
71
+
72
+ $ui-background: $grey-9;
73
+ $ui-sheet: $white;
74
+ $ui-border: #d5d5d5;
75
+
76
+ // BORDERS
77
+ $ui-border-radius: 4px;
78
+ $ui-border-width: 1px;
79
+
80
+ // TYPOGRAPHY
81
+ $font-size-default: 16px;
82
+ $font-size-small: 14px;
83
+
84
+ .material-symbols-rounded {
85
+ font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
86
+ }
87
+
88
+ .skeleton {
89
+ animation: skeleton-loading 1s linear infinite alternate;
90
+ border-radius: 4px;
91
+ width: 100%;
92
+ }
93
+
94
+ @keyframes skeleton-loading {
95
+ 0% {
96
+ background-color: hsl(200, 20%, 80%);
97
+ }
98
+
99
+ 100% {
100
+ background-color: hsl(200, 20%, 95%);
101
+ }
102
+ }
103
+
104
+ :host {
105
+ display: block;
106
+ }
107
+
108
+ table {
109
+ box-sizing: border-box;
110
+ width: 100%;
111
+ border-collapse: collapse;
112
+ border-spacing: 0;
113
+ border: 1px solid #ddd;
114
+ border-bottom: none;
115
+ }
116
+
117
+ thead tr {
118
+ height: 52px;
119
+ color: #757575;
120
+ }
121
+
122
+ tbody tr {
123
+ height: 48px;
124
+ color: #212121;
125
+ }
126
+
127
+ tr {
128
+
129
+ /* Cell typography */
130
+ font-family: 'Roboto', sans-serif;
131
+ font-weight: 400;
132
+ font-size: 16px;
133
+
134
+ /* center the contents vertically */
135
+ display: flex;
136
+ align-items: center;
137
+
138
+ /* Border */
139
+ border-bottom: 1px solid #ddd;
140
+
141
+ }
142
+
143
+ .selected {
144
+ background-color: #F0F0F0;
145
+ }
146
+
147
+ .checked {
148
+ background-color: #e7f1f9;
149
+ }
150
+
151
+ td,
152
+ th {
153
+ min-width: 300px;
154
+ margin-left: 16px;
155
+ display: flex;
156
+ align-items: left;
157
+ }
158
+
159
+ .skeleton {
160
+ height: 24px;
161
+ display: block;
162
+ }
163
+
164
+ .align-right {
165
+ margin-left: auto;
166
+ }
@@ -0,0 +1,174 @@
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
+ }
@@ -0,0 +1,81 @@
1
+ import { withActions } from '@storybook/addon-actions/decorator';
2
+ const templateData = [
3
+ { name: 'John', age: 25, faveColor: 'blue' },
4
+ { name: 'Jane', age: 30, faveColor: 'green' },
5
+ { name: 'Bob', age: 40, faveColor: 'red' },
6
+ ];
7
+ const templateHeaders = [
8
+ {
9
+ key: 'name',
10
+ label: 'Name'
11
+ },
12
+ {
13
+ key: 'age',
14
+ label: 'Age'
15
+ },
16
+ {
17
+ key: 'faveColor',
18
+ label: '',
19
+ actions: [
20
+ {
21
+ label: 'Edit',
22
+ icon: 'edit',
23
+ action: 'edit'
24
+ },
25
+ {
26
+ label: 'Delete',
27
+ icon: 'delete',
28
+ action: 'delete'
29
+ }
30
+ ]
31
+ }
32
+ ];
33
+ export default {
34
+ title: 'Molecules/Table',
35
+ component: 'tttx-table',
36
+ argTypes: {
37
+ loading: {
38
+ control: { type: 'boolean' },
39
+ }
40
+ },
41
+ parameters: {
42
+ actions: {
43
+ handles: ['rowSelected', 'headerClicked'],
44
+ },
45
+ },
46
+ decorators: [withActions],
47
+ };
48
+ const TemplateTable = ({ headers, data, loading, selected }) => `
49
+
50
+ <tttx-table
51
+ id="table"
52
+ ></tttx-table>
53
+
54
+ <script>
55
+ if (!table) {
56
+ const table = document.getElementById('table');
57
+ }
58
+ table.headers = ${JSON.stringify(headers)};
59
+ table.data = ${JSON.stringify(data)};
60
+ table.loading = ${loading};
61
+ table.selected = ${selected};
62
+ </script>
63
+
64
+ `;
65
+ export const BasicTable = TemplateTable.bind({});
66
+ BasicTable.args = {
67
+ headers: templateHeaders,
68
+ data: templateData
69
+ };
70
+ export const TablePreSelected = TemplateTable.bind({});
71
+ TablePreSelected.args = {
72
+ headers: templateHeaders,
73
+ data: templateData,
74
+ selected: 1
75
+ };
76
+ export const TableLoading = TemplateTable.bind({});
77
+ TableLoading.args = {
78
+ headers: templateHeaders,
79
+ data: templateData,
80
+ loading: true
81
+ };
@@ -0,0 +1,88 @@
1
+ export default {
2
+ title: 'Foundations/Palette',
3
+ component: 'tttx-palette',
4
+ };
5
+ const Swatch = (colour, name = '') => `
6
+ <div class="swatch">
7
+ <div class="swatchcontent" style="background-color:${colour};">
8
+ <div class="pill">${colour}</div>
9
+ </div>
10
+ <p>${name}</p>
11
+ </div>
12
+ `;
13
+ const Template = () => `
14
+
15
+ <style>
16
+ h2 { clear:both; margin-top: 2em; display: block; }
17
+ .swatch { width:130px; height:130px; float:left; font-size: 12px; }
18
+ .swatchcontent { width:120px; height:80px; }
19
+ .pill {
20
+ margin: 0.5em;
21
+ display: inline-block;
22
+ padding: 0.25em 0.5em;
23
+ border-radius: 1em;
24
+ background-color: #FFFFFF;
25
+ color: #000000;
26
+ font-size: 1em;
27
+ font-weight: bold;
28
+ }
29
+ p { margin: 8px 0 0 0; }
30
+ </style>
31
+
32
+ <h2>Primary</h2>
33
+ ${Swatch('#111111', '$black')}
34
+ ${Swatch('#FFFFFF', '$white')}
35
+ ${Swatch('#00187C', '$brand')}
36
+ ${Swatch('#1579C6', '$accent')}
37
+ ${Swatch('#E7F1F9', '$selected')}
38
+
39
+ <h2>Text and icons</h2>
40
+ ${Swatch('#212121', '$ui-primary')}
41
+ ${Swatch('#757575', '$ui-secondary')}
42
+ ${Swatch('#9E9E9E', '$ui-placeholder')}
43
+ ${Swatch('#4C4C4C', '$ui-disabled')}
44
+
45
+ <h2>Layout</h2>
46
+ ${Swatch('#F0F0F0', '$background')}
47
+ ${Swatch('#FAFAFA', '$backround-secondary')}
48
+ ${Swatch('#D5D5D5', '$ui-border')}
49
+
50
+ <h2>Buttons</h2>
51
+ ${Swatch('#1579C6', '$btn-accent')}
52
+ ${Swatch('#146EB3', '$btn-accent-hover')}
53
+ ${Swatch('#10609D', '$btn-accent-active')}
54
+ <div style="clear:both;"></div>
55
+ ${Swatch('#FFFFFF', '$btn-default')}
56
+ ${Swatch('#e6e6e6', '$btn-hover')}
57
+ ${Swatch('#cccccc', '$btn-active')}
58
+ <div style="clear:both;"></div>
59
+ ${Swatch('#DC0000', '$btn-danger')}
60
+ ${Swatch('#C70101', '$btn-danger-hover')}
61
+ ${Swatch('#B30303', '$btn-danger-active')}
62
+ <div style="clear:both;"></div>
63
+ ${Swatch('#BDBDBD', '$btn-disabled')}
64
+
65
+ <h2>Severity</h2>
66
+ ${Swatch('#DC0000', '$severity-critical')}
67
+ ${Swatch('#F59500', '$severity-warning')}
68
+ ${Swatch('#A2BB31', '$severity-success')}
69
+ ${Swatch('#00187C', '$severity-info')}
70
+ <div style="clear:both;"></div>
71
+ ${Swatch('#F2BEBE', '$message-critical')}
72
+ ${Swatch('#F9E1BE', '$message-warning')}
73
+ ${Swatch('#E4EBC9', '$message-success')}
74
+ ${Swatch('#C2DAEE', '$message-info')}
75
+
76
+ <h2>Diverging</h2>
77
+ ${Swatch('#0373A5', '$dv-lowest')}
78
+ ${Swatch('#00C2D1', '$dv-very-low')}
79
+ ${Swatch('#50A472', '$dv-low')}
80
+ ${Swatch('#A2BB31', '$dv-med-low')}
81
+ ${Swatch('#FDC500', '$dv-medium')}
82
+ ${Swatch('#F59500', '$dv-med-high')}
83
+ ${Swatch('#EA6100', '$dv-high')}
84
+ ${Swatch('#DC0000', '$dv-very-high')}
85
+ ${Swatch('#A20000', '$dv-highest')}
86
+
87
+ `;
88
+ export const Default = Template.bind({});
@@ -0,0 +1,9 @@
1
+ export default {
2
+ title: 'Getting Started/Developer',
3
+ };
4
+ const Template = () => `
5
+ <tttx-typography>
6
+ <p>Quick start guide for developers</p>
7
+ </tttx-typography>
8
+ `;
9
+ export const Default = Template.bind({});