q2-tecton-elements 1.10.9 → 1.11.1

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 (138) hide show
  1. package/dist/cjs/{icons-4595ee47.js → icons-9bd0febe.js} +10 -0
  2. package/dist/cjs/{index-a55d3c34.js → index-f5807a6a.js} +12 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  5. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  6. package/dist/cjs/q2-calendar.cjs.entry.js +5 -3
  7. package/dist/cjs/q2-card.cjs.entry.js +89 -0
  8. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-checkbox-group.cjs.entry.js +4 -1
  11. package/dist/cjs/q2-checkbox.cjs.entry.js +26 -7
  12. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-editable-field.cjs.entry.js +23 -18
  15. package/dist/cjs/q2-icon.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-input.cjs.entry.js +12 -7
  17. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-pagination.cjs.entry.js +118 -0
  21. package/dist/cjs/q2-radio-group.cjs.entry.js +48 -3
  22. package/dist/cjs/q2-radio.cjs.entry.js +8 -3
  23. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-select.cjs.entry.js +18 -8
  25. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-stepper.cjs.entry.js +4 -2
  27. package/dist/cjs/q2-tab-container.cjs.entry.js +4 -2
  28. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  29. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  30. package/dist/collection/collection-manifest.json +2 -0
  31. package/dist/collection/components/q2-calendar/index.js +21 -2
  32. package/dist/collection/components/q2-card/index.js +290 -0
  33. package/dist/collection/components/q2-card/styles.css +161 -0
  34. package/dist/collection/components/q2-checkbox/index.js +43 -7
  35. package/dist/collection/components/q2-checkbox/styles.css +6 -2
  36. package/dist/collection/components/q2-checkbox-group/index.js +21 -0
  37. package/dist/collection/components/q2-editable-field/index.js +27 -20
  38. package/dist/collection/components/q2-icon/icons.js +10 -0
  39. package/dist/collection/components/q2-input/index.js +61 -5
  40. package/dist/collection/components/q2-input/styles.css +86 -125
  41. package/dist/collection/components/q2-pagination/index.js +277 -0
  42. package/dist/collection/components/q2-pagination/styles.css +120 -0
  43. package/dist/collection/components/q2-radio/index.js +25 -1
  44. package/dist/collection/components/q2-radio/styles.css +16 -16
  45. package/dist/collection/components/q2-radio-group/index.js +77 -9
  46. package/dist/collection/components/q2-radio-group/styles.css +4 -9
  47. package/dist/collection/components/q2-select/index.js +35 -7
  48. package/dist/collection/components/q2-stepper/index.js +2 -0
  49. package/dist/collection/components/q2-stepper/styles.css +4 -4
  50. package/dist/collection/components/q2-tab-container/index.js +3 -1
  51. package/dist/collection/components/q2-textarea/styles.css +72 -109
  52. package/dist/collection/components/tecton-tab-pane/index.js +1 -1
  53. package/dist/collection/utils/index.js +11 -1
  54. package/dist/esm/{icons-3ee662ea.js → icons-6a143c2f.js} +10 -0
  55. package/dist/esm/{index-ec6660af.js → index-0e13a57f.js} +12 -2
  56. package/dist/esm/loader.js +1 -1
  57. package/dist/esm/q2-avatar.entry.js +1 -1
  58. package/dist/esm/q2-btn_2.entry.js +1 -1
  59. package/dist/esm/q2-calendar.entry.js +5 -3
  60. package/dist/esm/q2-card.entry.js +85 -0
  61. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  62. package/dist/esm/q2-carousel.entry.js +1 -1
  63. package/dist/esm/q2-checkbox-group.entry.js +4 -1
  64. package/dist/esm/q2-checkbox.entry.js +26 -7
  65. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  66. package/dist/esm/q2-dropdown.entry.js +1 -1
  67. package/dist/esm/q2-editable-field.entry.js +23 -18
  68. package/dist/esm/q2-icon.entry.js +2 -2
  69. package/dist/esm/q2-input.entry.js +12 -7
  70. package/dist/esm/q2-loc.entry.js +1 -1
  71. package/dist/esm/q2-message.entry.js +1 -1
  72. package/dist/esm/q2-optgroup.entry.js +1 -1
  73. package/dist/esm/q2-pagination.entry.js +114 -0
  74. package/dist/esm/q2-radio-group.entry.js +49 -4
  75. package/dist/esm/q2-radio.entry.js +8 -3
  76. package/dist/esm/q2-section.entry.js +1 -1
  77. package/dist/esm/q2-select.entry.js +18 -8
  78. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  79. package/dist/esm/q2-stepper.entry.js +4 -2
  80. package/dist/esm/q2-tab-container.entry.js +4 -2
  81. package/dist/esm/q2-tecton-elements.js +1 -1
  82. package/dist/esm/q2-textarea.entry.js +2 -2
  83. package/dist/q2-tecton-elements/{p-a6f8d09a.entry.js → p-2372f988.entry.js} +1 -1
  84. package/dist/q2-tecton-elements/p-27ec0a16.entry.js +1 -0
  85. package/dist/q2-tecton-elements/{p-fbf7c5e6.entry.js → p-2be33492.entry.js} +1 -1
  86. package/dist/q2-tecton-elements/p-346b65d5.entry.js +1 -0
  87. package/dist/q2-tecton-elements/p-3c6f73cb.js +1 -0
  88. package/dist/q2-tecton-elements/p-3cb34e2e.entry.js +1 -0
  89. package/dist/q2-tecton-elements/{p-843b1ee9.entry.js → p-492dfb55.entry.js} +1 -1
  90. package/dist/q2-tecton-elements/p-564154f3.entry.js +1 -0
  91. package/dist/q2-tecton-elements/{p-7e6fc65d.entry.js → p-6a83a97c.entry.js} +1 -1
  92. package/dist/q2-tecton-elements/{p-9b50c3c3.entry.js → p-701b381a.entry.js} +1 -1
  93. package/dist/q2-tecton-elements/p-7dec37d6.entry.js +1 -0
  94. package/dist/q2-tecton-elements/p-841ec108.entry.js +1 -0
  95. package/dist/q2-tecton-elements/{p-bb2e110a.entry.js → p-88bc2f49.entry.js} +1 -1
  96. package/dist/q2-tecton-elements/p-9ccbc3d8.entry.js +1 -0
  97. package/dist/q2-tecton-elements/{p-8509b171.entry.js → p-a72e7a12.entry.js} +1 -1
  98. package/dist/q2-tecton-elements/{p-df182f61.entry.js → p-af202624.entry.js} +1 -1
  99. package/dist/q2-tecton-elements/p-b5b12e46.entry.js +1 -0
  100. package/dist/q2-tecton-elements/{p-c5e55b9f.entry.js → p-bfd77f9b.entry.js} +1 -1
  101. package/dist/q2-tecton-elements/p-c83dba0a.entry.js +1 -0
  102. package/dist/q2-tecton-elements/p-ca847db7.entry.js +1 -0
  103. package/dist/q2-tecton-elements/p-d199fca8.entry.js +1 -0
  104. package/dist/q2-tecton-elements/p-dffbcec3.entry.js +1 -0
  105. package/dist/q2-tecton-elements/{p-5559f126.entry.js → p-f73df612.entry.js} +1 -1
  106. package/dist/q2-tecton-elements/{p-bbacb804.entry.js → p-f85bf7fb.entry.js} +1 -1
  107. package/dist/q2-tecton-elements/p-f85da2a8.js +1 -0
  108. package/dist/q2-tecton-elements/p-fc318ae2.entry.js +1 -0
  109. package/dist/q2-tecton-elements/{p-07a5d703.entry.js → p-fe61c1aa.entry.js} +1 -1
  110. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  111. package/dist/test/helpers.js +10 -3
  112. package/dist/types/components/q2-calendar/index.d.ts +1 -0
  113. package/dist/types/components/q2-card/index.d.ts +31 -0
  114. package/dist/types/components/q2-checkbox/index.d.ts +4 -0
  115. package/dist/types/components/q2-checkbox-group/index.d.ts +1 -0
  116. package/dist/types/components/q2-editable-field/index.d.ts +2 -0
  117. package/dist/types/components/q2-input/index.d.ts +3 -0
  118. package/dist/types/components/q2-pagination/index.d.ts +30 -0
  119. package/dist/types/components/q2-radio/index.d.ts +2 -1
  120. package/dist/types/components/q2-radio-group/index.d.ts +4 -0
  121. package/dist/types/components/q2-select/index.d.ts +2 -0
  122. package/dist/types/components.d.ts +80 -0
  123. package/dist/types/utils/index.d.ts +1 -0
  124. package/dist/types/workspace/workspace/{tecton-production_release_1.10.x → tecton-production_release_1.11.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +4 -1
  125. package/package.json +2 -2
  126. package/dist/q2-tecton-elements/p-37aba2a4.js +0 -1
  127. package/dist/q2-tecton-elements/p-4ae9d1f3.entry.js +0 -1
  128. package/dist/q2-tecton-elements/p-4cd00f1a.js +0 -1
  129. package/dist/q2-tecton-elements/p-52f53e07.entry.js +0 -1
  130. package/dist/q2-tecton-elements/p-78642b7b.entry.js +0 -1
  131. package/dist/q2-tecton-elements/p-7eb39c90.entry.js +0 -1
  132. package/dist/q2-tecton-elements/p-81df91a1.entry.js +0 -1
  133. package/dist/q2-tecton-elements/p-95a73559.entry.js +0 -1
  134. package/dist/q2-tecton-elements/p-96c9eb75.entry.js +0 -1
  135. package/dist/q2-tecton-elements/p-ab977515.entry.js +0 -1
  136. package/dist/q2-tecton-elements/p-c555f1de.entry.js +0 -1
  137. package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +0 -1
  138. package/dist/q2-tecton-elements/p-fc804ebd.entry.js +0 -1
@@ -66,9 +66,9 @@ button {
66
66
 
67
67
  :host {
68
68
  display: block;
69
- margin-top: var(--tct-input-margin-top, var(--app-scale-6x, 30px));
70
- margin-bottom: var(--tct-input-margin-bottom, var(--app-scale-6x, 30px));
71
- font-size: var(--tct-input-font-size, var(--app-font-size, inherit));
69
+ margin-top: var(--tct-input-margin-top, var(--t-input-margin-top, var(--app-scale-6x, 30px)));
70
+ margin-bottom: var(--tct-input-margin-bottom, var(--t-input-margin-bottom, var(--app-scale-6x, 30px)));
71
+ font-size: var(--tct-input-font-size, var(--t-input-font-size, var(--app-font-size, inherit)));
72
72
  }
73
73
 
74
74
  :host([hidden]) {
@@ -80,51 +80,40 @@ button {
80
80
  position: relative;
81
81
  }
82
82
 
83
+ .field-container {
84
+ --comp-input-tween: var(--tct-input-tween, var(--t-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))));
85
+ }
86
+
83
87
  label {
84
88
  display: block;
85
- padding-left: var(--tct-input-label-padding-left, 0);
86
- padding-right: var(--tct-input-label-padding-right, 0);
87
- margin-top: var(--tct-input-label-margin-top, 0);
88
- margin-bottom: var(--tct-input-label-margin-bottom, var(--tct-scale-1, var(--app-scale-1, 5px)));
89
- color: var(--tct-input-label-font-color, inherit);
90
- font-size: var(--tct-input-label-font-size, inherit);
91
- font-weight: var(--tct-input-label-font-weight, 600);
92
- text-transform: var(--tct-input-label-text-transform, none);
93
- letter-spacing: var(--tct-input-label-letter-spacing, normal);
94
- transition: color var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease)));
89
+ padding-left: var(--tct-input-label-padding-left, var(--t-input-label-padding-left, 0));
90
+ padding-right: var(--tct-input-label-padding-right, var(--t-input-label-padding-right, 0));
91
+ margin-top: var(--tct-input-label-margin-top, var(--t-input-label-margin-top, 0));
92
+ margin-bottom: var(--tct-input-label-margin-bottom, var(--t-input-label-margin-bottom, var(--tct-scale-1, var(--app-scale-1, 5px))));
93
+ color: var(--tct-input-label-font-color, var(--t-input-label-font-color, inherit));
94
+ font-size: var(--tct-input-label-font-size, var(--t-input-label-font-size, inherit));
95
+ font-weight: var(--tct-input-label-font-weight, var(--t-input-label-font-weight, 600));
96
+ text-transform: var(--tct-input-label-text-transform, var(--t-input-label-text-transform, none));
97
+ letter-spacing: var(--tct-input-label-letter-spacing, var(--t-input-label-letter-spacing, normal));
98
+ transition: color var(--comp-input-tween);
95
99
  }
96
100
 
97
101
  .optional-tag {
98
- margin-left: var(--tct-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1, 5px)));
99
- color: var(--tct-input-label-optional-font-color, var(--tct-a11y-color, var(--t-a11y-gray-color, #767676)));
100
- font-size: var(--tct-input-label-optional-font-size, 12px);
101
- font-weight: var(--tct-input-label-optional-font-weight, 400);
102
+ margin-left: var(--tct-input-label-optional-margin-left, var(--t-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1, 5px))));
103
+ color: var(--tct-input-label-optional-font-color, var(--t-input-label-optional-font-color, var(--t-textA, var(--t-a11y-gray-color, rgba(77, 77, 77, 0.77)))));
104
+ font-size: var(--tct-input-label-optional-font-size, var(--t-input-label-optional-font-size, 12px));
105
+ font-weight: var(--tct-input-label-optional-font-weight, var(--t-input-label-optional-font-weight, 400));
102
106
  }
103
107
 
104
108
  .input-container {
105
109
  background-color: var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--t-gray-14, #f2f2f2))));
106
110
  display: flex;
107
111
  align-items: center;
108
- --comp-input-horizontal-gap: var(
109
- --tct-input-horizontal-gap,
110
- var(--t-input-horizontal-gap, 8px)
111
- );
112
- --comp-input-border-top-left-radius: var(
113
- --tct-input-border-top-left-radius,
114
- var(--tct-border-radius-1, var(--app-border-radius-1, 3px))
115
- );
116
- --comp-input-border-top-right-radius: var(
117
- --tct-input-border-top-right-radius,
118
- var(--tct-border-radius-1, var(--app-border-radius-1, 3px))
119
- );
120
- --comp-input-border-bottom-right-radius: var(
121
- --tct-input-border-bottom-right-radius,
122
- var(--tct-border-radius-1, var(--app-border-radius-1, 3px))
123
- );
124
- --comp-input-border-bottom-left-radius: var(
125
- --tct-input-border-bottom-left-radius,
126
- var(--tct-border-radius-1, var(--app-border-radius-1, 3px))
127
- );
112
+ --comp-input-horizontal-gap: var(--tct-input-horizontal-gap, var(--t-input-horizontal-gap, 8px));
113
+ --comp-input-border-top-left-radius: var(--tct-input-border-top-left-radius, var(--t-input-border-top-left-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
114
+ --comp-input-border-top-right-radius: var(--tct-input-border-top-right-radius, var(--t-input-border-top-right-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
115
+ --comp-input-border-bottom-right-radius: var(--tct-input-border-bottom-right-radius, var(--t-input-border-bottom-right-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
116
+ --comp-input-border-bottom-left-radius: var(--tct-input-border-bottom-left-radius, var(--t-input-border-bottom-left-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
128
117
  --comp-input-border-radius: var(--comp-input-border-top-left-radius)
129
118
  var(--comp-input-border-top-right-radius) var(--comp-input-border-bottom-right-radius)
130
119
  var(--comp-input-border-bottom-left-radius);
@@ -139,13 +128,17 @@ label {
139
128
  3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px)
140
129
  );
141
130
  --comp-input-icon-clearance: 34px;
142
- --comp-input-min-height: 44px;
131
+ --comp-input-min-height: var(--tct-input-min-height, 44px);
143
132
  border-width: var(--comp-input-border-width);
144
133
  border-style: solid;
145
- border-color: var(--tct-input-border-color, var(--t-input-border, var(--tct-gray-11, var(--t-gray-11, #cccccc))));
134
+ border-color: var(--tct-input-border-color, var(--t-input-border-color, var(--tct-gray-11, var(--t-gray-11, #cccccc))));
146
135
  border-radius: var(--comp-input-border-radius);
147
- box-shadow: var(--tct-input-box-shadow, none);
148
- transition: border-width var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))), border-color var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))), box-shadow var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease)));
136
+ box-shadow: var(--tct-input-box-shadow, var(--t-input-box-shadow, none));
137
+ transition: border-width var(--comp-input-tween), border-color var(--comp-input-tween), box-shadow var(--comp-input-tween);
138
+ }
139
+ :host([disabled]) .input-container {
140
+ cursor: not-allowed;
141
+ opacity: var(--tct-input-disabled-opacity, var(--t-input-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4))));
149
142
  }
150
143
 
151
144
  .input-field {
@@ -155,109 +148,91 @@ label {
155
148
  appearance: none;
156
149
  box-sizing: border-box;
157
150
  min-height: var(--comp-input-min-height);
158
- height: var(--tct-input-height, 44px);
151
+ height: var(--tct-input-height, var(--t-input-height, 44px));
159
152
  width: 100%;
160
- padding: 0 var(--tct-input-horizontal-padding, var(--tct-scale-2, var(--app-scale-2, 10px)));
153
+ padding: 0 var(--tct-input-horizontal-padding, var(--t-input-horizontal-padding, var(--tct-scale-2, var(--app-scale-2, 10px))));
161
154
  background-color: transparent;
162
155
  color: var(--tct-input-font-color, var(--t-input-font-color, var(--t-text, inherit)));
163
- }
164
-
165
- input {
166
156
  display: inline-block;
157
+ text-align: var(--tct-input-align, "start");
158
+ /* To remove up/down arrow in number field for webkit based browser */
159
+ /* For Firefox */
167
160
  }
168
-
169
161
  .input-field:focus {
170
162
  outline: none;
171
163
  box-shadow: none;
172
164
  }
173
-
174
- /* To remove up/down arrow in number field for webkit based browser */
175
- .input-field::-webkit-outer-spin-button,
176
- .input-field::-webkit-inner-spin-button {
165
+ .input-field::-webkit-outer-spin-button, .input-field::-webkit-inner-spin-button {
177
166
  -webkit-appearance: none;
178
167
  margin: 0;
179
168
  }
180
-
181
- /* For Firefox */
182
169
  .input-field[type=number] {
183
170
  -moz-appearance: textfield;
184
171
  }
185
-
186
- .input-container:focus-within {
187
- border-width: var(--comp-input-focus-border-width, 1px);
188
- border-color: var(--tct-input-focus-border-color, var(--t-input-focus, var(--tct-gray-9, var(--t-gray-9, #999999))));
189
- box-shadow: var(--tct-global-focus, var(--const-global-focus, 0 0 0 2px #33b4ff)), var(--tct-input-focus-box-shadow, 0 0 transparent);
172
+ .input-field::-ms-clear {
173
+ display: none;
190
174
  }
191
-
192
- input::-ms-clear {
175
+ .input-field[type=search]::-webkit-search-decoration, .input-field[type=search]::-webkit-search-cancel-button, .input-field[type=search]::-webkit-search-results-button, .input-field[type=search]::-webkit-search-results-decoration {
193
176
  display: none;
194
177
  }
178
+ .input-field[disabled] {
179
+ cursor: not-allowed;
180
+ }
181
+ .right-aligned .input-field {
182
+ text-align: right;
183
+ }
195
184
 
196
- input[type=search]::-webkit-search-decoration,
197
- input[type=search]::-webkit-search-cancel-button,
198
- input[type=search]::-webkit-search-results-button,
199
- input[type=search]::-webkit-search-results-decoration {
200
- display: none;
185
+ .input-container:focus-within {
186
+ border-width: var(--comp-input-focus-border-width, 1px);
187
+ border-color: var(--tct-input-focus-border-color, var(--t-input-focus-border-color, var(--tct-gray-9, var(--t-gray-9, #999999))));
188
+ box-shadow: var(--tct-global-focus, var(--const-global-focus, 0 0 0 2px #33b4ff)), var(--tct-input-focus-box-shadow, var(--t-input-focus-box-shadow, 0 0 transparent));
201
189
  }
202
190
 
203
- input::placeholder,
191
+ .input-field::placeholder,
204
192
  .placeholder-text {
205
- color: var(--tct-input-placeholder-font-color, var(--t-input-placeholder-font-color, var(--tct-gray-7, var(--t-gray-7, var(--tct-gray-d1, var(--app-gray-d1, #666666))))));
193
+ color: var(--tct-input-placeholder-font-color, var(--t-input-placeholder-font-color, var(--t-textA, var(--app-gray-d1, rgba(77, 77, 77, 0.77)))));
206
194
  }
207
195
 
208
196
  .pseudo-input {
209
197
  display: inline-flex;
210
198
  align-items: center;
211
199
  }
212
-
213
200
  .pseudo-input span {
214
201
  white-space: nowrap;
215
202
  overflow: hidden;
216
203
  text-overflow: ellipsis;
217
204
  }
218
205
 
219
- .input-icons-container-left:empty {
220
- display: none;
221
- }
222
-
223
- .input-icons-container-left {
206
+ .input-icons-container-left,
207
+ .input-icons-container-right {
224
208
  display: flex;
225
209
  flex-direction: row;
226
210
  align-items: center;
227
211
  gap: var(--comp-input-horizontal-gap);
228
- padding-left: var(--comp-input-horizontal-gap);
229
212
  }
230
-
213
+ .input-icons-container-left:empty,
231
214
  .input-icons-container-right:empty {
232
215
  display: none;
233
216
  }
234
217
 
218
+ .input-icons-container-left {
219
+ padding-left: var(--comp-input-horizontal-gap);
220
+ }
221
+
235
222
  .input-icons-container-right {
236
- display: flex;
237
- flex-direction: row;
238
- align-items: center;
239
- gap: var(--comp-input-horizontal-gap);
240
223
  padding-right: var(--comp-input-horizontal-gap);
241
224
  }
242
-
243
225
  .input-icons-container-right .btn-visibility-toggle {
244
226
  color: var(--tct-primary, var(--t-primary, #006eb2));
245
227
  font-size: 12px;
246
228
  }
247
229
 
248
230
  q2-icon {
249
- margin-top: calc(var(--tct-input-border-top-width, 1px) / 2);
250
- margin-bottom: calc(var(--tct-input-border-bottom-width, 1px) / 2);
231
+ margin-top: calc(var(--tct-input-border-top-width, var(--t-input-border-top-width, 1px)) / 2);
232
+ margin-bottom: calc(var(--tct-input-border-bottom-width, var(--t-input-border-bottom-width, 1px)) / 2);
251
233
  pointer-events: none;
252
- color: var(--tct-input-icon-stroke-primary, var(--t-gray-9, var(--tct-gray, var(--app-gray, #999999))));
253
- --tct-icon-stroke-primary: var(
254
- --tct-input-icon-stroke-primary,
255
- var(--tct-gray-9, var(--t-gray-9, var(--tct-gray, var(--app-gray, #999999))))
256
- );
257
- --t-icon-stroke-primary: var(
258
- --tct-input-icon-stroke-primary,
259
- var(--tct-gray-9, var(--t-gray-9, var(--tct-gray, var(--app-gray, #999999))))
260
- );
234
+ color: var(--tct-input-icon-stroke-primary, var(--t-input-icon-stroke-primary, var(--t-textA, var(--app-gray, rgba(77, 77, 77, 0.77)))));
235
+ --tct-icon-stroke-primary: var(--tct-input-icon-stroke-primary, var(--t-input-icon-stroke-primary, var(--t-textA, var(--app-gray, rgba(77, 77, 77, 0.77)))));
261
236
  }
262
237
 
263
238
  .icon-left-muted {
@@ -272,30 +247,29 @@ q2-icon {
272
247
  display: inline-flex;
273
248
  align-items: center;
274
249
  justify-content: center;
275
- min-height: calc( var(--comp-input-min-height) - var(--tct-input-focus-border-top-width, 1px) - var(--tct-input-focus-border-bottom-width, 1px) );
276
- height: calc( var(--tct-input-height, 44px) - var(--tct-input-focus-border-top-width, 1px) - var(--tct-input-focus-border-bottom-width, 1px) );
277
- font-size: var(--tct-input-prefix-font-size, inherit);
278
- color: var(--tct-input-prefix-font-color, inherit);
279
- background-color: var(--tct-input-prefix-bg, var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--t-gray-14, #f2f2f2)))));
280
- transition: color var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease))), background-color var(--tct-input-tween, var(--tct-tween-2, var(--app-tween-2, 0.4s ease)));
250
+ min-height: calc( var(--comp-input-min-height) - var(--tct-input-focus-border-top-width, var(--t-input-focus-border-top-width, 1px)) - var(--tct-input-focus-border-bottom-width, var(--t-input-focus-border-bottom-width, 1px)) );
251
+ height: calc( var(--tct-input-height, var(--t-input-height, 44px)) - var(--tct-input-focus-border-top-width, var(--t-input-focus-border-top-width, 1px)) - var(--tct-input-focus-border-bottom-width, var(--t-input-focus-border-bottom-width, 1px)) );
252
+ font-size: var(--tct-input-prefix-font-size, var(--t-input-prefix-font-size, inherit));
253
+ color: var(--tct-input-prefix-font-color, var(--t-input-prefix-font-color, inherit));
254
+ background-color: var(--tct-input-prefix-bg, var(--t-input-prefix-bg, var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--t-gray-14, #f2f2f2))))));
255
+ transition: color var(--comp-input-tween), background-color var(--comp-input-tween);
281
256
  }
282
257
 
283
258
  .input-prefix {
284
- border-top-left-radius: calc( var(--comp-input-border-top-left-radius) - var(--tct-input-border-top-width, 1px) - var(--tct-input-border-left-width, 1px) );
285
- border-bottom-left-radius: calc( var(--comp-input-border-bottom-left-radius) - var(--tct-input-border-bottom-width, 1px) - var(--tct-input-border-left-width, 1px) );
259
+ border-top-left-radius: calc( var(--comp-input-border-top-left-radius) - var(--tct-input-border-top-width, var(--t-input-border-top-width, 1px)) - var(--tct-input-border-left-width, var(--t-input-border-left-width, 1px)) );
260
+ border-bottom-left-radius: calc( var(--comp-input-border-bottom-left-radius) - var(--tct-input-border-bottom-width, var(--t-input-border-bottom-width, 1px)) - var(--tct-input-border-left-width, var(--t-input-border-left-width, 1px)) );
286
261
  pointer-events: none;
287
262
  /* used to allow iOS voiceover to display keyboard in input TCT-1194 */
288
263
  }
289
264
 
290
265
  .input-suffix {
291
- border-top-right-radius: calc( var(--comp-input-border-top-right-radius) - var(--tct-input-border-top-width, 1px) - var(--tct-input-border-right-width, 1px) );
292
- border-bottom-right-radius: calc( var(--comp-input-border-bottom-right-radius) - var(--tct-input-border-bottom-width, 1px) - var(--tct-input-border-right-width, 1px) );
266
+ border-top-right-radius: calc( var(--comp-input-border-top-right-radius) - var(--tct-input-border-top-width, var(--t-input-border-top-width, 1px)) - var(--tct-input-border-right-width, var(--t-input-border-right-width, 1px)) );
267
+ border-bottom-right-radius: calc( var(--comp-input-border-bottom-right-radius) - var(--tct-input-border-bottom-width, var(--t-input-border-bottom-width, 1px)) - var(--tct-input-border-right-width, var(--t-input-border-right-width, 1px)) );
293
268
  }
294
269
 
295
270
  .icon-error {
296
271
  color: var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));
297
272
  --tct-icon-stroke-primary: var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));
298
- --t-icon-stroke-primary: var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));
299
273
  }
300
274
 
301
275
  .pw-show {
@@ -304,8 +278,8 @@ q2-icon {
304
278
  }
305
279
 
306
280
  .btn-clear {
307
- margin-top: calc(var(--tct-input-border-top-width, 1px) / 2);
308
- margin-bottom: calc(var(--tct-input-border-bottom-width, 1px) / 2);
281
+ margin-top: calc(var(--tct-input-border-top-width, var(--t-input-border-top-width, 1px)) / 2);
282
+ margin-bottom: calc(var(--tct-input-border-bottom-width, var(--t-input-border-bottom-width, 1px)) / 2);
309
283
  height: 22px;
310
284
  --tct-btn-icon-width: 17px;
311
285
  --tct-btn-icon-height: 22px;
@@ -315,37 +289,24 @@ q2-icon {
315
289
  .messages-container {
316
290
  height: 0px;
317
291
  overflow: hidden;
318
- background-color: var(--tct-message-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))));
319
- box-shadow: var(--tct-input-message-box-shadow, var(--tct-box-shadow-1, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3))));
320
- transition: height var(--tct-input-messages-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease)));
292
+ background-color: var(--tct-message-bg, var(--t-message-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
293
+ box-shadow: var(--tct-input-message-box-shadow, var(--t-input-message-box-shadow, var(--tct-box-shadow-1, var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3)))));
294
+ transition: height var(--tct-input-messages-tween, var(--t-input-messages-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease))));
321
295
  margin-top: 2px;
322
296
  z-index: 1;
323
297
  position: absolute;
324
298
  width: 100%;
325
- color: var(--tct-input-messages-font-color, inherit);
326
- }
327
-
328
- :host([disabled]) .input-container {
329
- cursor: not-allowed;
330
- opacity: var(--tct-input-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4)));
331
- }
332
-
333
- .input-field[disabled] {
334
- cursor: not-allowed;
335
- }
336
-
337
- .right-aligned .input-field {
338
- text-align: right;
299
+ color: var(--tct-input-messages-font-color, var(--t-input-messages-font-color, inherit));
339
300
  }
340
301
 
341
302
  .has-error label {
342
- color: var(--tct-input-error-label-font-color, var(--tct-input-label-font-color, inherit));
303
+ color: var(--tct-input-error-label-font-color, var(--t-input-error-label-font-color, var(--tct-input-label-font-color, var(--t-input-label-font-color, inherit))));
343
304
  }
344
305
 
345
306
  .has-error:not(.has-focus) .input-prefix,
346
307
  .has-error:not(.has-focus) .input-suffix {
347
- color: var(--tct-input-error-prefix-font-color, inherit);
348
- background-color: var(--tct-input-error-prefix-bg, var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--app-var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))))));
308
+ color: var(--tct-input-error-prefix-font-color, var(--t-input-error-prefix-font-color, inherit));
309
+ background-color: var(--tct-input-error-prefix-bg, var(--t-input-error-prefix-bg, var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))))));
349
310
  }
350
311
 
351
312
  .has-error .input-container:not(:focus-within) {
@@ -359,5 +320,5 @@ q2-icon {
359
320
 
360
321
  .vertical-separator {
361
322
  height: calc(var(--comp-input-min-height) - 2px);
362
- border-right: 1px solid var(--tct-input-prefix-border-color, var(--tct-input-border-color, var(--t-input-border, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc)))))));
323
+ border-right: 1px solid var(--tct-input-prefix-border-color, var(--t-input-prefix-border-color, var(--tct-input-border-color, var(--t-input-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))))));
363
324
  }
@@ -0,0 +1,277 @@
1
+ import { Component, State, Prop, h, Listen, Element, Event } from '@stencil/core';
2
+ import { isEventFromElement, loc, nextPaint, overrideFocus } from 'src/utils';
3
+ export class Q2Pagination {
4
+ constructor() {
5
+ this.handlePageChange = (page) => {
6
+ const { totalPages, inputField } = this;
7
+ if (page < 1) {
8
+ page = 1;
9
+ }
10
+ else if (page > totalPages) {
11
+ page = totalPages;
12
+ }
13
+ if (inputField.value !== `${page}`)
14
+ inputField.value = `${page}`;
15
+ if (!this.hostElement.onchange) {
16
+ this.page = page;
17
+ }
18
+ this.change.emit({ value: page });
19
+ };
20
+ }
21
+ ////////// LIFECYCLE HOOKS ////////
22
+ componentDidLoad() {
23
+ if (this.recordsOnly || this.pagesOnly)
24
+ return;
25
+ this.containerWidth = this.containerElement.clientWidth;
26
+ this.resizeObserver = new ResizeObserver(() => this.checkSize());
27
+ this.resizeObserver.observe(this.hostElement);
28
+ overrideFocus(this.hostElement);
29
+ }
30
+ disconnectedCallback() {
31
+ var _a;
32
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
33
+ }
34
+ onHostElementFocus(event) {
35
+ var _a;
36
+ if (!isEventFromElement(event, this.hostElement))
37
+ return;
38
+ const { isFullViewHidden, containerElement, inputField } = this;
39
+ if (isFullViewHidden) {
40
+ (_a = containerElement.querySelector('q2-btn:not([disabled])')) === null || _a === void 0 ? void 0 : _a.focus();
41
+ }
42
+ else {
43
+ inputField.focus();
44
+ }
45
+ }
46
+ get isFullViewHidden() {
47
+ return this.isSmall || this.recordsOnly || this.pagesOnly;
48
+ }
49
+ get pageWithDefault() {
50
+ return this.page || 1;
51
+ }
52
+ get perPageWithDefault() {
53
+ return this.perPage || 10;
54
+ }
55
+ get totalWithDefault() {
56
+ return this.total || 0;
57
+ }
58
+ get recordTypeWithDefault() {
59
+ return this.recordType || loc('tecton.element.pagination.defaultRecordType');
60
+ }
61
+ get currentRange() {
62
+ const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;
63
+ const start = (page - 1) * perPage + 1;
64
+ const end = Math.min(page * perPage, total);
65
+ return `${start} - ${end}`;
66
+ }
67
+ get totalPages() {
68
+ const { pagesOnly, totalWithDefault: total, perPageWithDefault: perPage, pages } = this;
69
+ if (pagesOnly && pages && !isNaN(parseInt(`${pages}`)))
70
+ return pages;
71
+ return Math.ceil(total / perPage);
72
+ }
73
+ checkSize() {
74
+ const { hostElement, containerElement } = this;
75
+ const isOverflowing = this.containerWidth > hostElement.clientWidth;
76
+ this.isSmall = isOverflowing;
77
+ if (isOverflowing)
78
+ return;
79
+ nextPaint(() => {
80
+ const containerWidthHasNotChanged = this.containerWidth === containerElement.clientWidth;
81
+ if (containerWidthHasNotChanged)
82
+ return;
83
+ this.containerWidth = containerElement.clientWidth;
84
+ this.checkSize();
85
+ });
86
+ }
87
+ ////////// OBSERVERS //////////
88
+ render() {
89
+ const { pagesOnly, isFullViewHidden, recordTypeWithDefault: recordType, totalPages, totalWithDefault: total, pageWithDefault: page, currentRange } = this;
90
+ const onFirstPage = page === 1;
91
+ const onLastPage = page === totalPages;
92
+ return (h("nav", { class: "container", ref: el => (this.containerElement = el), "aria-label": loc('tecton.element.pagination.title') },
93
+ h("div", { class: "description", "test-id": "description" }, pagesOnly
94
+ ? loc('tecton.element.pagination.pages', {
95
+ current: page,
96
+ total: totalPages
97
+ })
98
+ : loc('tecton.element.pagination.description', {
99
+ range: currentRange,
100
+ recordType: recordType.toLowerCase(),
101
+ total: total.toLocaleString()
102
+ })),
103
+ h("div", { class: "btn-group" },
104
+ h("q2-btn", { label: "tecton.element.pagination.goToFirstPage", disabled: onFirstPage, hidden: isFullViewHidden, onClick: () => this.handlePageChange(1), "test-id": "firstPageBtn", "hide-label": true },
105
+ h("q2-icon", { type: "chevron-double-left" })),
106
+ h("q2-btn", { label: loc('tecton.element.pagination.goToPage', [page - 1]), disabled: onFirstPage, onClick: () => this.handlePageChange(page - 1), "test-id": "prevPageBtn", "hide-label": true },
107
+ h("q2-icon", { type: "chevron-left" }))),
108
+ h("div", { class: "controls", hidden: isFullViewHidden, "test-id": "controls" },
109
+ h("span", { "aria-hidden": "true" }, loc('tecton.element.pagination.page')),
110
+ h("div", { class: "input-wrapper", onClick: () => this.inputField.dispatchEvent(new FocusEvent('focus')) },
111
+ h("q2-input", { type: "number", value: `${page}`, min: 1, max: this.totalPages, hideLabel: true, optional: true, label: `${loc('tecton.element.pagination.page')} (${loc('tecton.element.pagination.ofPages', [
112
+ totalPages.toLocaleString()
113
+ ])})`, onChange: event => this.handlePageChange(event.detail.value), "test-id": "pageInput", current: "page", ref: el => (this.inputField = el) })),
114
+ h("span", { "aria-hidden": "true" }, loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()]))),
115
+ h("div", { class: "btn-group" },
116
+ h("q2-btn", { label: loc('tecton.element.pagination.goToPage', [page + 1]), disabled: onLastPage, onClick: () => this.handlePageChange(page + 1), "test-id": "nextPageBtn", "hide-label": true },
117
+ h("q2-icon", { type: "chevron-right" })),
118
+ h("q2-btn", { label: "tecton.element.pagination.goToLastPage", disabled: onLastPage, hidden: isFullViewHidden, onClick: () => this.handlePageChange(totalPages), "test-id": "lastPageBtn", "hide-label": true },
119
+ h("q2-icon", { type: "chevron-double-right" })))));
120
+ }
121
+ static get is() { return "q2-pagination"; }
122
+ static get encapsulation() { return "shadow"; }
123
+ static get originalStyleUrls() { return {
124
+ "$": ["styles.scss"]
125
+ }; }
126
+ static get styleUrls() { return {
127
+ "$": ["styles.css"]
128
+ }; }
129
+ static get properties() { return {
130
+ "recordType": {
131
+ "type": "string",
132
+ "mutable": false,
133
+ "complexType": {
134
+ "original": "string",
135
+ "resolved": "string",
136
+ "references": {}
137
+ },
138
+ "required": false,
139
+ "optional": false,
140
+ "docs": {
141
+ "tags": [],
142
+ "text": ""
143
+ },
144
+ "attribute": "record-type",
145
+ "reflect": false
146
+ },
147
+ "perPage": {
148
+ "type": "number",
149
+ "mutable": false,
150
+ "complexType": {
151
+ "original": "number",
152
+ "resolved": "number",
153
+ "references": {}
154
+ },
155
+ "required": false,
156
+ "optional": false,
157
+ "docs": {
158
+ "tags": [],
159
+ "text": ""
160
+ },
161
+ "attribute": "per-page",
162
+ "reflect": false
163
+ },
164
+ "total": {
165
+ "type": "number",
166
+ "mutable": false,
167
+ "complexType": {
168
+ "original": "number",
169
+ "resolved": "number",
170
+ "references": {}
171
+ },
172
+ "required": false,
173
+ "optional": false,
174
+ "docs": {
175
+ "tags": [],
176
+ "text": ""
177
+ },
178
+ "attribute": "total",
179
+ "reflect": true
180
+ },
181
+ "page": {
182
+ "type": "number",
183
+ "mutable": true,
184
+ "complexType": {
185
+ "original": "number",
186
+ "resolved": "number",
187
+ "references": {}
188
+ },
189
+ "required": false,
190
+ "optional": false,
191
+ "docs": {
192
+ "tags": [],
193
+ "text": ""
194
+ },
195
+ "attribute": "page",
196
+ "reflect": true
197
+ },
198
+ "pages": {
199
+ "type": "number",
200
+ "mutable": true,
201
+ "complexType": {
202
+ "original": "number",
203
+ "resolved": "number",
204
+ "references": {}
205
+ },
206
+ "required": false,
207
+ "optional": false,
208
+ "docs": {
209
+ "tags": [],
210
+ "text": ""
211
+ },
212
+ "attribute": "pages",
213
+ "reflect": true
214
+ },
215
+ "recordsOnly": {
216
+ "type": "boolean",
217
+ "mutable": true,
218
+ "complexType": {
219
+ "original": "boolean",
220
+ "resolved": "boolean",
221
+ "references": {}
222
+ },
223
+ "required": false,
224
+ "optional": false,
225
+ "docs": {
226
+ "tags": [],
227
+ "text": ""
228
+ },
229
+ "attribute": "records-only",
230
+ "reflect": true
231
+ },
232
+ "pagesOnly": {
233
+ "type": "boolean",
234
+ "mutable": true,
235
+ "complexType": {
236
+ "original": "boolean",
237
+ "resolved": "boolean",
238
+ "references": {}
239
+ },
240
+ "required": false,
241
+ "optional": false,
242
+ "docs": {
243
+ "tags": [],
244
+ "text": ""
245
+ },
246
+ "attribute": "pages-only",
247
+ "reflect": true
248
+ }
249
+ }; }
250
+ static get states() { return {
251
+ "isSmall": {}
252
+ }; }
253
+ static get events() { return [{
254
+ "method": "change",
255
+ "name": "change",
256
+ "bubbles": true,
257
+ "cancelable": true,
258
+ "composed": true,
259
+ "docs": {
260
+ "tags": [],
261
+ "text": ""
262
+ },
263
+ "complexType": {
264
+ "original": "any",
265
+ "resolved": "any",
266
+ "references": {}
267
+ }
268
+ }]; }
269
+ static get elementRef() { return "hostElement"; }
270
+ static get listeners() { return [{
271
+ "name": "focus",
272
+ "method": "onHostElementFocus",
273
+ "target": undefined,
274
+ "capture": false,
275
+ "passive": false
276
+ }]; }
277
+ }