@testgorilla/tgo-ui 4.1.3-beta → 4.1.3

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 (281) hide show
  1. package/components/accordion/accordion.component.d.ts +2 -2
  2. package/components/accordion/accordion.component.module.d.ts +2 -2
  3. package/components/ai-feedback/ai-feedback.module.d.ts +2 -2
  4. package/components/alert-banner/alert-banner.component.d.ts +2 -2
  5. package/components/alert-banner/alert-banner.component.module.d.ts +3 -3
  6. package/components/autocomplete/autocomplete.component.d.ts +2 -2
  7. package/components/autocomplete/autocomplete.component.module.d.ts +10 -9
  8. package/components/avatar/avatar.component.d.ts +2 -2
  9. package/components/avatar/avatar.component.module.d.ts +4 -4
  10. package/components/avatar/avatar.model.d.ts +2 -2
  11. package/components/badge/badge.component.d.ts +2 -2
  12. package/components/badge/badge.component.module.d.ts +1 -1
  13. package/components/breadcrumb/breadcrumb.component.d.ts +5 -3
  14. package/components/breadcrumb/breadcrumb.component.module.d.ts +4 -4
  15. package/components/button/button.component.d.ts +2 -2
  16. package/components/button/button.component.module.d.ts +5 -4
  17. package/components/button/button.model.d.ts +1 -1
  18. package/components/card/card.component.d.ts +2 -2
  19. package/components/card/card.component.module.d.ts +1 -1
  20. package/components/card/card.model.d.ts +1 -1
  21. package/components/checkbox/checkbox.component.d.ts +2 -2
  22. package/components/checkbox/checkbox.component.module.d.ts +8 -6
  23. package/components/checklist/checklist.component.d.ts +2 -2
  24. package/components/confirm-dialog/confirm-dialog.component.d.ts +4 -4
  25. package/components/confirm-dialog/confirm-dialog.component.module.d.ts +2 -2
  26. package/components/confirm-dialog/confirm-dialog.model.d.ts +3 -3
  27. package/components/datepicker/datepicker.component.d.ts +1 -1
  28. package/components/datepicker/datepicker.component.module.d.ts +3 -3
  29. package/components/dialog/dialog.component.d.ts +4 -4
  30. package/components/dialog/dialog.component.module.d.ts +2 -2
  31. package/components/dialog/dialog.model.d.ts +1 -1
  32. package/components/dialog/dialog.service.d.ts +1 -1
  33. package/components/divider/divider.component.d.ts +1 -1
  34. package/components/donut-chart/donut-chart.component.d.ts +5 -17
  35. package/components/dropdown/dropdown.component.d.ts +2 -2
  36. package/components/dropdown/dropdown.component.module.d.ts +6 -5
  37. package/components/elevation-shadow/elevation-shadow.component.d.ts +1 -1
  38. package/components/empty-state/empty-state.component.d.ts +3 -3
  39. package/components/empty-state/empty-state.component.module.d.ts +3 -3
  40. package/components/field/field.component.d.ts +4 -4
  41. package/components/field/field.component.module.d.ts +8 -6
  42. package/components/file-upload/file-upload.component.d.ts +1 -1
  43. package/components/file-upload/file-upload.component.module.d.ts +3 -3
  44. package/components/filter-button/filter-button.component.d.ts +3 -3
  45. package/components/filter-button/filter-button.component.module.d.ts +8 -7
  46. package/components/filter-button/filter-button.model.d.ts +1 -1
  47. package/components/gaussian-chart/gaussian-chart.component.d.ts +1 -1
  48. package/components/gaussian-chart/gaussian-chart.module.d.ts +2 -2
  49. package/components/icon/icon.component.d.ts +2 -2
  50. package/components/icon-label/icon-label.component.d.ts +2 -2
  51. package/components/icon-label/icon-label.component.module.d.ts +1 -1
  52. package/components/inline-field/inline-field.component.d.ts +3 -3
  53. package/components/inline-field/inline-field.component.module.d.ts +3 -3
  54. package/components/inline-field/inline-field.model.d.ts +1 -1
  55. package/components/logo/logo.component.d.ts +1 -1
  56. package/components/multi-input/multi-input.component.module.d.ts +8 -7
  57. package/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.d.ts +2 -2
  58. package/components/navbar/navbar.component.d.ts +3 -3
  59. package/components/navbar/navbar.component.module.d.ts +6 -6
  60. package/components/navbar/navbar.model.d.ts +2 -2
  61. package/components/overflow-menu/overflow-menu.component.d.ts +3 -3
  62. package/components/overflow-menu/overflow-menu.component.module.d.ts +5 -4
  63. package/components/overflow-menu/overflow-menu.model.d.ts +1 -1
  64. package/components/page-header/page-header.component.d.ts +1 -1
  65. package/components/page-header/page-header.component.module.d.ts +2 -2
  66. package/components/paginator/paginator.component.d.ts +1 -1
  67. package/components/password-criteria/password.component.module.d.ts +4 -4
  68. package/components/password-strength/password-strength.component.d.ts +2 -2
  69. package/components/password-strength/password-strength.component.module.d.ts +3 -3
  70. package/components/phone-input/phone-input.component.d.ts +1 -1
  71. package/components/phone-input/phone-input.component.module.d.ts +4 -4
  72. package/components/progress-bar/progress-bar.component.d.ts +1 -1
  73. package/components/progress-bar/progress-bar.component.module.d.ts +1 -1
  74. package/components/prompt/prompt.component.d.ts +1 -1
  75. package/components/prompt/prompt.module.d.ts +7 -7
  76. package/components/radial-progress/radial-progress.component.d.ts +2 -2
  77. package/components/radial-progress/radial-progress.component.module.d.ts +1 -1
  78. package/components/radio-button/radio-button.component.d.ts +2 -2
  79. package/components/radio-button/radio-button.component.module.d.ts +2 -2
  80. package/components/rating/rating.component.d.ts +1 -1
  81. package/components/scale/scale.component.d.ts +1 -1
  82. package/components/scale-table/scale-table.component.d.ts +1 -1
  83. package/components/segmented-bar/segmented-bar.component.d.ts +1 -1
  84. package/components/segmented-bar/segmented-bar.component.module.d.ts +2 -2
  85. package/components/segmented-bar/segmented-bar.model.d.ts +1 -1
  86. package/components/segmented-button/segmented-button.component.d.ts +1 -1
  87. package/components/selectable-card/selectable-card.component.d.ts +6 -2
  88. package/components/selectable-card/selectable-card.component.module.d.ts +2 -2
  89. package/components/side-panel/side-panel.component.d.ts +1 -1
  90. package/components/side-sheet/side-sheet.component.d.ts +1 -1
  91. package/components/side-sheet/side-sheet.component.module.d.ts +4 -4
  92. package/components/skeleton/skeleton.component.d.ts +2 -2
  93. package/components/slider/slider.component.d.ts +1 -1
  94. package/components/snackbar/snackbar.component.d.ts +2 -2
  95. package/components/snackbar/snackbar.component.module.d.ts +3 -3
  96. package/components/snackbar/snackbar.service.d.ts +1 -1
  97. package/components/spider-chart/spider-chart.component.d.ts +1 -1
  98. package/components/spider-chart/spider-chart.module.d.ts +2 -2
  99. package/components/spinner/spinner.component.d.ts +2 -2
  100. package/components/spinner/spinner.module.d.ts +2 -2
  101. package/components/step/step.component.d.ts +3 -3
  102. package/components/step/step.component.module.d.ts +2 -2
  103. package/components/stepper/stepper.component.d.ts +1 -1
  104. package/components/stepper/stepper.component.module.d.ts +3 -3
  105. package/components/stepper/stepper.model.d.ts +1 -1
  106. package/components/table/table.component.d.ts +1 -1
  107. package/components/table/table.component.module.d.ts +5 -5
  108. package/components/tabs/tab.directive.d.ts +1 -1
  109. package/components/tabs/tabs.component.d.ts +1 -1
  110. package/components/tabs/tabs.component.module.d.ts +3 -3
  111. package/components/tabs/tabs.model.d.ts +1 -1
  112. package/components/tag/tag.component.d.ts +2 -2
  113. package/components/tag/tag.component.module.d.ts +3 -3
  114. package/components/toggle/toggle.component.d.ts +1 -1
  115. package/components/toggle/toggle.component.module.d.ts +5 -4
  116. package/components/tooltip/tooltip.component.d.ts +1 -1
  117. package/components/tooltip/tooltip.component.module.d.ts +3 -2
  118. package/components/universal-skills-report/universal-skills-report.component.d.ts +2 -2
  119. package/components/universal-skills-report/universal-skills-report.component.module.d.ts +3 -3
  120. package/components/universal-skills-spider-charts/universal-skills-spider-charts.component.d.ts +2 -2
  121. package/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.d.ts +4 -4
  122. package/components/validation-error/validation-error.component.d.ts +1 -1
  123. package/components/validation-error/validation-error.module.d.ts +2 -2
  124. package/fesm2022/testgorilla-tgo-ui.mjs +22749 -3564
  125. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  126. package/models/application-theme.model.d.ts +1 -0
  127. package/package.json +9 -142
  128. package/{components/core → pipes}/ui-translate.pipe.d.ts +1 -1
  129. package/projects/tgo-canopy-ui/assets/i18n/da-dk.json +820 -0
  130. package/projects/tgo-canopy-ui/assets/i18n/de.json +820 -0
  131. package/projects/tgo-canopy-ui/assets/i18n/en.json +829 -0
  132. package/projects/tgo-canopy-ui/assets/i18n/es.json +820 -0
  133. package/projects/tgo-canopy-ui/assets/i18n/fr.json +820 -0
  134. package/projects/tgo-canopy-ui/assets/i18n/it-it.json +820 -0
  135. package/projects/tgo-canopy-ui/assets/i18n/ja-jp.json +820 -0
  136. package/projects/tgo-canopy-ui/assets/i18n/nb-no.json +820 -0
  137. package/projects/tgo-canopy-ui/assets/i18n/nl.json +820 -0
  138. package/projects/tgo-canopy-ui/assets/i18n/pl-pl.json +820 -0
  139. package/projects/tgo-canopy-ui/assets/i18n/pt-br.json +820 -0
  140. package/projects/tgo-canopy-ui/assets/i18n/sv-se.json +820 -0
  141. package/public-api.d.ts +87 -0
  142. package/utils/alert-bars.utils.d.ts +1 -1
  143. package/components/autocomplete/index.d.ts +0 -5
  144. package/components/autocomplete/public-api.d.ts +0 -4
  145. package/components/avatar/index.d.ts +0 -5
  146. package/components/avatar/public-api.d.ts +0 -4
  147. package/components/badge/index.d.ts +0 -5
  148. package/components/badge/public-api.d.ts +0 -4
  149. package/components/button/color-contrast.d.ts +0 -28
  150. package/components/button/index.d.ts +0 -5
  151. package/components/button/public-api.d.ts +0 -5
  152. package/components/card/index.d.ts +0 -5
  153. package/components/card/public-api.d.ts +0 -4
  154. package/components/checkbox/index.d.ts +0 -5
  155. package/components/checkbox/public-api.d.ts +0 -4
  156. package/components/core/application-theme.model.d.ts +0 -7
  157. package/components/core/has-validation-error.pipe.d.ts +0 -15
  158. package/components/core/index.d.ts +0 -5
  159. package/components/core/keyboard-events.model.d.ts +0 -11
  160. package/components/core/public-api.d.ts +0 -12
  161. package/components/core/select-text.directive.d.ts +0 -19
  162. package/components/divider/index.d.ts +0 -5
  163. package/components/divider/public-api.d.ts +0 -4
  164. package/components/dropdown/index.d.ts +0 -5
  165. package/components/dropdown/public-api.d.ts +0 -4
  166. package/components/elevation-shadow/index.d.ts +0 -5
  167. package/components/elevation-shadow/public-api.d.ts +0 -3
  168. package/components/empty-state/index.d.ts +0 -5
  169. package/components/empty-state/public-api.d.ts +0 -4
  170. package/components/field/index.d.ts +0 -5
  171. package/components/field/public-api.d.ts +0 -4
  172. package/components/filter-button/index.d.ts +0 -5
  173. package/components/filter-button/public-api.d.ts +0 -4
  174. package/components/icon/index.d.ts +0 -5
  175. package/components/icon/public-api.d.ts +0 -5
  176. package/components/inline-field/index.d.ts +0 -5
  177. package/components/inline-field/public-api.d.ts +0 -4
  178. package/components/logo/index.d.ts +0 -5
  179. package/components/logo/public-api.d.ts +0 -4
  180. package/components/paginator/index.d.ts +0 -5
  181. package/components/paginator/public-api.d.ts +0 -3
  182. package/components/progress-bar/index.d.ts +0 -5
  183. package/components/progress-bar/public-api.d.ts +0 -3
  184. package/components/radial-progress/index.d.ts +0 -5
  185. package/components/radial-progress/public-api.d.ts +0 -4
  186. package/components/radio-button/index.d.ts +0 -5
  187. package/components/radio-button/public-api.d.ts +0 -4
  188. package/components/rating/index.d.ts +0 -5
  189. package/components/rating/public-api.d.ts +0 -3
  190. package/components/scale/index.d.ts +0 -5
  191. package/components/scale/public-api.d.ts +0 -3
  192. package/components/segmented-bar/index.d.ts +0 -5
  193. package/components/segmented-bar/public-api.d.ts +0 -4
  194. package/components/segmented-button/index.d.ts +0 -5
  195. package/components/segmented-button/public-api.d.ts +0 -4
  196. package/components/skeleton/index.d.ts +0 -5
  197. package/components/skeleton/public-api.d.ts +0 -3
  198. package/components/slider/index.d.ts +0 -5
  199. package/components/slider/public-api.d.ts +0 -4
  200. package/components/spinner/index.d.ts +0 -5
  201. package/components/spinner/public-api.d.ts +0 -4
  202. package/components/tag/index.d.ts +0 -5
  203. package/components/tag/public-api.d.ts +0 -4
  204. package/components/toggle/index.d.ts +0 -5
  205. package/components/toggle/public-api.d.ts +0 -3
  206. package/components/tooltip/index.d.ts +0 -5
  207. package/components/tooltip/public-api.d.ts +0 -5
  208. package/components/validation-error/index.d.ts +0 -5
  209. package/components/validation-error/public-api.d.ts +0 -3
  210. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +0 -1045
  211. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +0 -1
  212. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +0 -173
  213. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +0 -1
  214. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +0 -180
  215. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +0 -1
  216. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +0 -635
  217. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +0 -1
  218. package/fesm2022/testgorilla-tgo-ui-components-card.mjs +0 -164
  219. package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +0 -1
  220. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +0 -402
  221. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +0 -1
  222. package/fesm2022/testgorilla-tgo-ui-components-core.mjs +0 -10807
  223. package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +0 -1
  224. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +0 -88
  225. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +0 -1
  226. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +0 -434
  227. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +0 -1
  228. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +0 -75
  229. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +0 -1
  230. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +0 -326
  231. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +0 -1
  232. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +0 -638
  233. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +0 -1
  234. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +0 -314
  235. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +0 -1
  236. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +0 -1496
  237. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +0 -1
  238. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +0 -367
  239. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +0 -1
  240. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +0 -218
  241. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +0 -1
  242. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +0 -110
  243. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +0 -1
  244. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +0 -128
  245. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +0 -1
  246. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +0 -152
  247. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +0 -1
  248. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +0 -373
  249. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +0 -1
  250. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +0 -150
  251. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +0 -1
  252. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +0 -158
  253. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +0 -1
  254. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +0 -137
  255. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +0 -1
  256. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +0 -128
  257. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +0 -1
  258. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +0 -81
  259. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +0 -1
  260. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +0 -274
  261. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +0 -1
  262. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +0 -108
  263. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +0 -1
  264. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +0 -239
  265. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +0 -1
  266. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +0 -216
  267. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +0 -1
  268. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +0 -272
  269. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +0 -1
  270. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +0 -79
  271. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +0 -1
  272. /package/{components/core → directives}/digits-only.directive.d.ts +0 -0
  273. /package/{components/core → directives}/ellipse-text.directive.d.ts +0 -0
  274. /package/{components/autocomplete → directives}/select-text.directive.d.ts +0 -0
  275. /package/{components/core → models}/checkbox.model.d.ts +0 -0
  276. /package/{components/avatar → pipes}/name-initials.pipe.d.ts +0 -0
  277. /package/{components/icon → services}/icons.service.d.ts +0 -0
  278. /package/{components/core → utils}/autocomplete-utils.d.ts +0 -0
  279. /package/{components/core → utils}/hex-to-rgb.d.ts +0 -0
  280. /package/{components/core → utils/localization}/language.model.d.ts +0 -0
  281. /package/{components/core → utils/localization}/language.service.d.ts +0 -0
@@ -1,367 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, output, signal, computed, HostListener, ViewChild, HostBinding, Optional, Self, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/forms';
4
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import * as i2 from '@angular/common';
6
- import { CommonModule } from '@angular/common';
7
- import * as i3 from '@testgorilla/tgo-ui/components/button';
8
- import { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
9
- import * as i4 from '@testgorilla/tgo-ui/components/field';
10
- import { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';
11
- import { MatInputModule } from '@angular/material/input';
12
- import { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
13
-
14
- /**
15
- * A global counter used to generate unique inline field IDs.
16
- */
17
- let inlineFieldID = 0;
18
- class InlineFieldComponent {
19
- constructor(cdr, destroyRef, elementRef, ngControl) {
20
- this.cdr = cdr;
21
- this.destroyRef = destroyRef;
22
- this.elementRef = elementRef;
23
- this.ngControl = ngControl;
24
- this.class = 'ui-inline-field';
25
- /**
26
- * Component ID for accessibility
27
- */
28
- this.id = input(`inline-field-${inlineFieldID++}`);
29
- /**
30
- * Field label
31
- */
32
- this.label = input('');
33
- /**
34
- * Field placeholder
35
- */
36
- this.placeholder = input('');
37
- /**
38
- * Current value
39
- */
40
- this.value = input('');
41
- /**
42
- * Whether the field is required
43
- */
44
- this.required = input(false);
45
- /**
46
- * Whether the field is disabled
47
- */
48
- this.disabled = input(false);
49
- /**
50
- * Application theme
51
- */
52
- this.applicationTheme = input('light');
53
- /**
54
- * Field type
55
- */
56
- this.fieldType = input('text');
57
- /**
58
- * Field type
59
- */
60
- this.maxRows = input(0);
61
- /**
62
- * Error messages
63
- */
64
- this.errors = input([]);
65
- /**
66
- * Whether to show errors
67
- */
68
- this.showErrors = input(true);
69
- /**
70
- * Button configuration
71
- */
72
- this.buttonConfig = input({
73
- saveLabel: 'Save',
74
- cancelLabel: 'Cancel',
75
- saveIcon: 'Check-filled',
76
- cancelIcon: 'Close-filled',
77
- });
78
- /**
79
- * Validation configuration
80
- */
81
- this.validation = input({});
82
- /**
83
- * ARIA label
84
- */
85
- this.ariaLabel = input('');
86
- /**
87
- * Full width
88
- */
89
- this.fullWidth = input(false);
90
- /**
91
- * Emitted when save button is clicked
92
- */
93
- this.save = output();
94
- /**
95
- * Emitted when cancel button is clicked
96
- */
97
- this.cancel = output();
98
- /**
99
- * Emitted when value changes
100
- */
101
- this.valueChange = output();
102
- /**
103
- * Emitted when editing mode changes
104
- */
105
- this.editingModeChange = output();
106
- /**
107
- * Emitted on focus
108
- */
109
- this.focusEvent = output();
110
- /**
111
- * Emitted on blur
112
- */
113
- this.blurEvent = output();
114
- this._isEditing = signal(false);
115
- this._originalValue = signal('');
116
- this._currentValue = signal('');
117
- this._state = signal('default');
118
- this.isEditing = computed(() => this._isEditing());
119
- this.currentValue = computed(() => this._currentValue());
120
- this.state = computed(() => this._state());
121
- this.saveButtonConfig = computed(() => ({
122
- label: this.buttonConfig().saveLabel || 'Save',
123
- iconName: this.buttonConfig().saveIcon || 'Check-filled',
124
- variant: 'secondary-inverted',
125
- size: 'small',
126
- disabled: this.disabled(),
127
- }));
128
- this.cancelButtonConfig = computed(() => ({
129
- label: this.buttonConfig().cancelLabel || 'Cancel',
130
- iconName: this.buttonConfig().cancelIcon || 'Close-filled',
131
- variant: 'secondary-inverted',
132
- size: 'small',
133
- disabled: this.disabled(),
134
- }));
135
- this.onChange = (_value) => { };
136
- this.onTouched = () => { };
137
- if (this.ngControl != null) {
138
- this.ngControl.valueAccessor = this;
139
- }
140
- }
141
- ngOnInit() {
142
- this._currentValue.set(this.value());
143
- this._originalValue.set(this.value());
144
- this.updateState();
145
- }
146
- writeValue(value) {
147
- const newValue = value || '';
148
- this._currentValue.set(newValue);
149
- if (!this.isEditing()) {
150
- this._originalValue.set(newValue);
151
- }
152
- this.cdr.markForCheck();
153
- }
154
- registerOnChange(fn) {
155
- this.onChange = fn;
156
- }
157
- registerOnTouched(fn) {
158
- this.onTouched = fn;
159
- }
160
- setDisabledState(_isDisabled) {
161
- this.updateState();
162
- this.cdr.markForCheck();
163
- }
164
- onComponentFocusOut(event) {
165
- const relatedTarget = event.relatedTarget;
166
- const isLeavingComponent = !relatedTarget || !this.elementRef.nativeElement.contains(relatedTarget);
167
- if (isLeavingComponent && this.isEditing()) {
168
- this._currentValue.set(this._originalValue());
169
- this.exitEditMode();
170
- this.onChange(this._originalValue());
171
- this.cancel.emit();
172
- }
173
- }
174
- onEscapePressed(event) {
175
- if (this.isEditing()) {
176
- event.preventDefault();
177
- this.cancelEdit();
178
- }
179
- }
180
- onEnterPressed(event) {
181
- if (this.isEditing() && !event.shiftKey) {
182
- event.preventDefault();
183
- this.saveEdit();
184
- }
185
- }
186
- onTabPressed() {
187
- return;
188
- }
189
- onInputFocus() {
190
- if (!this.disabled() && !this.isEditing()) {
191
- this.enterEditMode();
192
- }
193
- this._state.set('focused');
194
- this.focusEvent.emit();
195
- this.onTouched();
196
- }
197
- onInputBlur() {
198
- this.blurEvent.emit();
199
- }
200
- onInputChange(event) {
201
- const inputElement = event.target;
202
- const newValue = inputElement.value;
203
- this._currentValue.set(newValue);
204
- this.valueChange.emit(newValue);
205
- }
206
- focus() {
207
- if (this.fieldComponent) {
208
- this.fieldComponent.focus();
209
- this.fieldComponent.field?.nativeElement?.select();
210
- }
211
- }
212
- enterEditMode() {
213
- if (this.disabled() || this.isEditing()) {
214
- return;
215
- }
216
- this._originalValue.set(this._currentValue());
217
- this._isEditing.set(true);
218
- this._state.set('editing');
219
- this.editingModeChange.emit(true);
220
- this.cdr.markForCheck();
221
- }
222
- saveEdit() {
223
- if (!this.isEditing()) {
224
- return;
225
- }
226
- const newValue = this.currentValue();
227
- const hasValidationError = this.hasValidationError(newValue);
228
- if (hasValidationError) {
229
- this._state.set('error');
230
- this.cdr.markForCheck();
231
- return;
232
- }
233
- const changeEvent = {
234
- value: newValue,
235
- saved: true,
236
- previousValue: this._originalValue(),
237
- };
238
- this._originalValue.set(newValue);
239
- this.exitEditMode();
240
- this.onChange(newValue);
241
- this.save.emit(changeEvent);
242
- }
243
- cancelEdit() {
244
- if (!this.isEditing()) {
245
- return;
246
- }
247
- this._currentValue.set(this._originalValue());
248
- this.exitEditMode();
249
- this.cancel.emit();
250
- }
251
- exitEditMode() {
252
- this._isEditing.set(false);
253
- this.updateState();
254
- this.editingModeChange.emit(false);
255
- this.cdr.markForCheck();
256
- }
257
- updateState() {
258
- if (this.disabled()) {
259
- this._state.set('disabled');
260
- }
261
- else if (this.errors().length > 0) {
262
- this._state.set('error');
263
- }
264
- else if (this.isEditing()) {
265
- this._state.set('editing');
266
- }
267
- else {
268
- this._state.set('default');
269
- }
270
- }
271
- hasValidationError(value) {
272
- const config = this.validation();
273
- return (this.hasRequiredError(value, config) ||
274
- this.hasMinLengthError(value, config) ||
275
- this.hasMaxLengthError(value, config) ||
276
- this.hasPatternError(value, config) ||
277
- this.hasCustomValidationError(value, config));
278
- }
279
- hasRequiredError(value, config) {
280
- return !!config.required && (!value || value.trim().length === 0);
281
- }
282
- hasMinLengthError(value, config) {
283
- return !!config.minLength && value.length < config.minLength;
284
- }
285
- hasMaxLengthError(value, config) {
286
- return !!config.maxLength && value.length > config.maxLength;
287
- }
288
- hasPatternError(value, config) {
289
- return !!config.pattern && !config.pattern.test(value);
290
- }
291
- hasCustomValidationError(value, config) {
292
- return !!config.customValidator && config.customValidator(value);
293
- }
294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: InlineFieldComponent, isStandalone: false, selector: "ui-inline-field", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: true, isRequired: false, transformFunction: null }, fieldType: { classPropertyName: "fieldType", publicName: "fieldType", isSignal: true, isRequired: false, transformFunction: null }, maxRows: { classPropertyName: "maxRows", publicName: "maxRows", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, showErrors: { classPropertyName: "showErrors", publicName: "showErrors", isSignal: true, isRequired: false, transformFunction: null }, buttonConfig: { classPropertyName: "buttonConfig", publicName: "buttonConfig", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { save: "save", cancel: "cancel", valueChange: "valueChange", editingModeChange: "editingModeChange", focusEvent: "focusEvent", blurEvent: "blurEvent" }, host: { listeners: { "focusout": "onComponentFocusOut($event)", "keydown.escape": "onEscapePressed($event)", "keydown.enter": "onEnterPressed($event)", "keydown.tab": "onTabPressed($event)" }, properties: { "attr.theme": "applicationTheme()", "attr.state": "state()", "attr.editing": "isEditing()", "class.full-width": "fullWidth()", "class": "this.class" } }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldElement"], descendants: true }], ngImport: i0, template: "<div class=\"inline-field-container\">\n <div class=\"field-wrapper\" [ngClass]=\"{ 'is-editing': isEditing() }\">\n <ui-field\n [id]=\"id() + '-input'\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [value]=\"currentValue()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [errors]=\"errors()\"\n [showBottomContent]=\"showErrors()\"\n [ariaLabel]=\"ariaLabel()\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [isAutocompleteOff]=\"true\"\n [type]=\"fieldType()\"\n [maxRows]=\"maxRows()\"\n (input)=\"onInputChange($event)\"\n (fieldBlur)=\"onInputBlur()\"\n (focusin)=\"onInputFocus()\"\n #fieldElement\n data-testid=\"inline-field\"\n ></ui-field>\n\n <div *ngIf=\"isEditing()\" class=\"action-buttons\">\n <ui-button\n [label]=\"saveButtonConfig().label\"\n [iconName]=\"saveButtonConfig().iconName\"\n [variant]=\"saveButtonConfig().variant\"\n [size]=\"saveButtonConfig().size\"\n [disabled]=\"saveButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"saveEdit()\"\n [attr.aria-label]=\"'Save ' + (label() || 'field')\"\n class=\"save-button\"\n ></ui-button>\n\n <ui-button\n [label]=\"cancelButtonConfig().label\"\n [iconName]=\"cancelButtonConfig().iconName\"\n [variant]=\"cancelButtonConfig().variant\"\n [size]=\"cancelButtonConfig().size\"\n [disabled]=\"cancelButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"cancelEdit()\"\n [attr.aria-label]=\"'Cancel editing ' + (label() || 'field')\"\n class=\"cancel-button\"\n ></ui-button>\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ui-inline-field{display:block;position:relative;width:100%;max-width:320px}.ui-inline-field.full-width{max-width:100%}.ui-inline-field .inline-field-container,.ui-inline-field .field-wrapper{position:relative;width:100%}.ui-inline-field .field-wrapper ::ng-deep ui-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ui-inline-field .field-wrapper .action-buttons{position:absolute;top:calc(100% + 4px);right:0;display:flex;gap:8px;z-index:10}.ui-inline-field .field-wrapper:hover .action-buttons.show-on-hover{opacity:1}.ui-inline-field .error-messages{margin-top:4px}.ui-inline-field .error-messages .error-message{display:flex;align-items:center;gap:4px;color:#e02800;font-size:12px;line-height:16px}.ui-inline-field .error-messages .error-message .error-icon ::ng-deep svg{color:#e02800}.ui-inline-field[state=disabled]{pointer-events:none}@media (max-width: 768px){.ui-inline-field .field-wrapper .action-buttons{position:static;margin-top:8px;justify-content:flex-end}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i4.FieldComponent, selector: "ui-field", inputs: ["fullWidth", "fullHeight", "label", "labelHtml", "labelIcon", "fieldName", "placeholder", "id", "value", "badgeVariant", "errors", "disabled", "required", "readOnly", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "isAutocompleteOff", "allowNegative", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hasTextAreaCounter", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "borderless", "autosizableTextarea", "isAIVariant", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
296
- }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponent, decorators: [{
298
- type: Component,
299
- args: [{ selector: 'ui-inline-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
300
- '[attr.theme]': 'applicationTheme()',
301
- '[attr.state]': 'state()',
302
- '[attr.editing]': 'isEditing()',
303
- '[class.full-width]': 'fullWidth()',
304
- }, standalone: false, template: "<div class=\"inline-field-container\">\n <div class=\"field-wrapper\" [ngClass]=\"{ 'is-editing': isEditing() }\">\n <ui-field\n [id]=\"id() + '-input'\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [value]=\"currentValue()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [errors]=\"errors()\"\n [showBottomContent]=\"showErrors()\"\n [ariaLabel]=\"ariaLabel()\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [isAutocompleteOff]=\"true\"\n [type]=\"fieldType()\"\n [maxRows]=\"maxRows()\"\n (input)=\"onInputChange($event)\"\n (fieldBlur)=\"onInputBlur()\"\n (focusin)=\"onInputFocus()\"\n #fieldElement\n data-testid=\"inline-field\"\n ></ui-field>\n\n <div *ngIf=\"isEditing()\" class=\"action-buttons\">\n <ui-button\n [label]=\"saveButtonConfig().label\"\n [iconName]=\"saveButtonConfig().iconName\"\n [variant]=\"saveButtonConfig().variant\"\n [size]=\"saveButtonConfig().size\"\n [disabled]=\"saveButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"saveEdit()\"\n [attr.aria-label]=\"'Save ' + (label() || 'field')\"\n class=\"save-button\"\n ></ui-button>\n\n <ui-button\n [label]=\"cancelButtonConfig().label\"\n [iconName]=\"cancelButtonConfig().iconName\"\n [variant]=\"cancelButtonConfig().variant\"\n [size]=\"cancelButtonConfig().size\"\n [disabled]=\"cancelButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"cancelEdit()\"\n [attr.aria-label]=\"'Cancel editing ' + (label() || 'field')\"\n class=\"cancel-button\"\n ></ui-button>\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ui-inline-field{display:block;position:relative;width:100%;max-width:320px}.ui-inline-field.full-width{max-width:100%}.ui-inline-field .inline-field-container,.ui-inline-field .field-wrapper{position:relative;width:100%}.ui-inline-field .field-wrapper ::ng-deep ui-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ui-inline-field .field-wrapper .action-buttons{position:absolute;top:calc(100% + 4px);right:0;display:flex;gap:8px;z-index:10}.ui-inline-field .field-wrapper:hover .action-buttons.show-on-hover{opacity:1}.ui-inline-field .error-messages{margin-top:4px}.ui-inline-field .error-messages .error-message{display:flex;align-items:center;gap:4px;color:#e02800;font-size:12px;line-height:16px}.ui-inline-field .error-messages .error-message .error-icon ::ng-deep svg{color:#e02800}.ui-inline-field[state=disabled]{pointer-events:none}@media (max-width: 768px){.ui-inline-field .field-wrapper .action-buttons{position:static;margin-top:8px;justify-content:flex-end}}\n"] }]
305
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.DestroyRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
306
- type: Optional
307
- }, {
308
- type: Self
309
- }] }], propDecorators: { class: [{
310
- type: HostBinding
311
- }], fieldComponent: [{
312
- type: ViewChild,
313
- args: ['fieldElement']
314
- }], onComponentFocusOut: [{
315
- type: HostListener,
316
- args: ['focusout', ['$event']]
317
- }], onEscapePressed: [{
318
- type: HostListener,
319
- args: ['keydown.escape', ['$event']]
320
- }], onEnterPressed: [{
321
- type: HostListener,
322
- args: ['keydown.enter', ['$event']]
323
- }], onTabPressed: [{
324
- type: HostListener,
325
- args: ['keydown.tab', ['$event']]
326
- }] } });
327
-
328
- class InlineFieldComponentModule {
329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
330
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponentModule, declarations: [InlineFieldComponent], imports: [CommonModule,
331
- FormsModule,
332
- ReactiveFormsModule,
333
- MatInputModule,
334
- ButtonComponentModule,
335
- FieldComponentModule,
336
- IconComponentModule], exports: [InlineFieldComponent] }); }
337
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponentModule, imports: [CommonModule,
338
- FormsModule,
339
- ReactiveFormsModule,
340
- MatInputModule,
341
- ButtonComponentModule,
342
- FieldComponentModule,
343
- IconComponentModule] }); }
344
- }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: InlineFieldComponentModule, decorators: [{
346
- type: NgModule,
347
- args: [{
348
- declarations: [InlineFieldComponent],
349
- imports: [
350
- CommonModule,
351
- FormsModule,
352
- ReactiveFormsModule,
353
- MatInputModule,
354
- ButtonComponentModule,
355
- FieldComponentModule,
356
- IconComponentModule,
357
- ],
358
- exports: [InlineFieldComponent],
359
- }]
360
- }] });
361
-
362
- /**
363
- * Generated bundle index. Do not edit.
364
- */
365
-
366
- export { InlineFieldComponent, InlineFieldComponentModule, inlineFieldID };
367
- //# sourceMappingURL=testgorilla-tgo-ui-components-inline-field.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testgorilla-tgo-ui-components-inline-field.mjs","sources":["../../../components/inline-field/inline-field.component.ts","../../../components/inline-field/inline-field.component.html","../../../components/inline-field/inline-field.component.module.ts","../../../components/inline-field/testgorilla-tgo-ui-components-inline-field.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n input,\n OnInit,\n output,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport {\n InlineFieldState,\n InlineFieldButtonConfig,\n InlineFieldValidation,\n InlineFieldChangeEvent,\n} from './inline-field.model';\nimport { FieldComponent } from '@testgorilla/tgo-ui/components/field';\nimport { FieldType } from '@testgorilla/tgo-ui/components/field';\n\n/**\n * A global counter used to generate unique inline field IDs.\n */\nexport let inlineFieldID = 0;\n\n@Component({\n selector: 'ui-inline-field',\n templateUrl: './inline-field.component.html',\n styleUrls: ['./inline-field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.theme]': 'applicationTheme()',\n '[attr.state]': 'state()',\n '[attr.editing]': 'isEditing()',\n '[class.full-width]': 'fullWidth()',\n },\n standalone: false\n})\nexport class InlineFieldComponent implements OnInit, ControlValueAccessor {\n @HostBinding() class = 'ui-inline-field';\n\n /**\n * Component ID for accessibility\n */\n id = input(`inline-field-${inlineFieldID++}`);\n\n /**\n * Field label\n */\n label = input('');\n\n /**\n * Field placeholder\n */\n placeholder = input('');\n\n /**\n * Current value\n */\n value = input('');\n\n /**\n * Whether the field is required\n */\n required = input(false);\n\n /**\n * Whether the field is disabled\n */\n disabled = input(false);\n\n /**\n * Application theme\n */\n applicationTheme = input<ApplicationTheme>('light');\n\n /**\n * Field type\n */\n fieldType = input<FieldType>('text');\n\n /**\n * Field type\n */\n maxRows = input<number>(0);\n\n /**\n * Error messages\n */\n errors = input<string[]>([]);\n\n /**\n * Whether to show errors\n */\n showErrors = input(true);\n\n /**\n * Button configuration\n */\n buttonConfig = input<InlineFieldButtonConfig>({\n saveLabel: 'Save',\n cancelLabel: 'Cancel',\n saveIcon: 'Check-filled',\n cancelIcon: 'Close-filled',\n });\n\n /**\n * Validation configuration\n */\n validation = input<InlineFieldValidation>({});\n\n /**\n * ARIA label\n */\n ariaLabel = input('');\n\n /**\n * Full width\n */\n fullWidth = input(false);\n\n /**\n * Emitted when save button is clicked\n */\n save = output<InlineFieldChangeEvent>();\n\n /**\n * Emitted when cancel button is clicked\n */\n cancel = output<void>();\n\n /**\n * Emitted when value changes\n */\n valueChange = output<string>();\n\n /**\n * Emitted when editing mode changes\n */\n editingModeChange = output<boolean>();\n\n /**\n * Emitted on focus\n */\n focusEvent = output<void>();\n\n /**\n * Emitted on blur\n */\n blurEvent = output<void>();\n\n @ViewChild('fieldElement') fieldComponent: FieldComponent;\n\n private _isEditing = signal(false);\n private _originalValue = signal('');\n private _currentValue = signal('');\n private _state = signal<InlineFieldState>('default');\n\n isEditing = computed(() => this._isEditing());\n currentValue = computed(() => this._currentValue());\n state = computed(() => this._state());\n\n saveButtonConfig = computed(() => ({\n label: this.buttonConfig().saveLabel || 'Save',\n iconName: this.buttonConfig().saveIcon || 'Check-filled',\n variant: 'secondary-inverted' as const,\n size: 'small' as const,\n disabled: this.disabled(),\n }));\n\n cancelButtonConfig = computed(() => ({\n label: this.buttonConfig().cancelLabel || 'Cancel',\n iconName: this.buttonConfig().cancelIcon || 'Close-filled',\n variant: 'secondary-inverted' as const,\n size: 'small' as const,\n disabled: this.disabled(),\n }));\n\n private onChange = (_value: string) => {};\n private onTouched = () => {};\n\n constructor(\n private cdr: ChangeDetectorRef,\n private destroyRef: DestroyRef,\n private elementRef: ElementRef,\n @Optional() @Self() public ngControl: NgControl\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this._currentValue.set(this.value());\n this._originalValue.set(this.value());\n this.updateState();\n }\n\n writeValue(value: string): void {\n const newValue = value || '';\n this._currentValue.set(newValue);\n if (!this.isEditing()) {\n this._originalValue.set(newValue);\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n this.updateState();\n this.cdr.markForCheck();\n }\n\n @HostListener('focusout', ['$event'])\n onComponentFocusOut(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement;\n const isLeavingComponent = !relatedTarget || !this.elementRef.nativeElement.contains(relatedTarget);\n\n if (isLeavingComponent && this.isEditing()) {\n this._currentValue.set(this._originalValue());\n this.exitEditMode();\n this.onChange(this._originalValue());\n this.cancel.emit();\n }\n }\n\n @HostListener('keydown.escape', ['$event'])\n onEscapePressed(event: KeyboardEvent): void {\n if (this.isEditing()) {\n event.preventDefault();\n this.cancelEdit();\n }\n }\n\n @HostListener('keydown.enter', ['$event'])\n onEnterPressed(event: KeyboardEvent): void {\n if (this.isEditing() && !event.shiftKey) {\n event.preventDefault();\n this.saveEdit();\n }\n }\n\n @HostListener('keydown.tab', ['$event'])\n onTabPressed(): void {\n return;\n }\n\n onInputFocus(): void {\n if (!this.disabled() && !this.isEditing()) {\n this.enterEditMode();\n }\n this._state.set('focused');\n this.focusEvent.emit();\n this.onTouched();\n }\n\n onInputBlur(): void {\n this.blurEvent.emit();\n }\n\n onInputChange(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n const newValue = inputElement.value;\n this._currentValue.set(newValue);\n this.valueChange.emit(newValue);\n }\n\n focus(): void {\n if (this.fieldComponent) {\n this.fieldComponent.focus();\n this.fieldComponent.field?.nativeElement?.select();\n }\n }\n\n enterEditMode(): void {\n if (this.disabled() || this.isEditing()) {\n return;\n }\n\n this._originalValue.set(this._currentValue());\n this._isEditing.set(true);\n this._state.set('editing');\n this.editingModeChange.emit(true);\n\n this.cdr.markForCheck();\n }\n\n saveEdit(): void {\n if (!this.isEditing()) {\n return;\n }\n\n const newValue = this.currentValue();\n const hasValidationError = this.hasValidationError(newValue);\n\n if (hasValidationError) {\n this._state.set('error');\n this.cdr.markForCheck();\n return;\n }\n\n const changeEvent: InlineFieldChangeEvent = {\n value: newValue,\n saved: true,\n previousValue: this._originalValue(),\n };\n\n this._originalValue.set(newValue);\n this.exitEditMode();\n this.onChange(newValue);\n this.save.emit(changeEvent);\n }\n\n cancelEdit(): void {\n if (!this.isEditing()) {\n return;\n }\n\n this._currentValue.set(this._originalValue());\n this.exitEditMode();\n this.cancel.emit();\n }\n\n private exitEditMode(): void {\n this._isEditing.set(false);\n this.updateState();\n this.editingModeChange.emit(false);\n this.cdr.markForCheck();\n }\n\n private updateState(): void {\n if (this.disabled()) {\n this._state.set('disabled');\n } else if (this.errors().length > 0) {\n this._state.set('error');\n } else if (this.isEditing()) {\n this._state.set('editing');\n } else {\n this._state.set('default');\n }\n }\n\n private hasValidationError(value: string): boolean {\n const config = this.validation();\n\n return (\n this.hasRequiredError(value, config) ||\n this.hasMinLengthError(value, config) ||\n this.hasMaxLengthError(value, config) ||\n this.hasPatternError(value, config) ||\n this.hasCustomValidationError(value, config)\n );\n }\n\n private hasRequiredError(value: string, config: InlineFieldValidation): boolean {\n return !!config.required && (!value || value.trim().length === 0);\n }\n\n private hasMinLengthError(value: string, config: InlineFieldValidation): boolean {\n return !!config.minLength && value.length < config.minLength;\n }\n\n private hasMaxLengthError(value: string, config: InlineFieldValidation): boolean {\n return !!config.maxLength && value.length > config.maxLength;\n }\n\n private hasPatternError(value: string, config: InlineFieldValidation): boolean {\n return !!config.pattern && !config.pattern.test(value);\n }\n\n private hasCustomValidationError(value: string, config: InlineFieldValidation): boolean {\n return !!config.customValidator && config.customValidator(value);\n }\n}\n","<div class=\"inline-field-container\">\n <div class=\"field-wrapper\" [ngClass]=\"{ 'is-editing': isEditing() }\">\n <ui-field\n [id]=\"id() + '-input'\"\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n [value]=\"currentValue()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [errors]=\"errors()\"\n [showBottomContent]=\"showErrors()\"\n [ariaLabel]=\"ariaLabel()\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [isAutocompleteOff]=\"true\"\n [type]=\"fieldType()\"\n [maxRows]=\"maxRows()\"\n (input)=\"onInputChange($event)\"\n (fieldBlur)=\"onInputBlur()\"\n (focusin)=\"onInputFocus()\"\n #fieldElement\n data-testid=\"inline-field\"\n ></ui-field>\n\n <div *ngIf=\"isEditing()\" class=\"action-buttons\">\n <ui-button\n [label]=\"saveButtonConfig().label\"\n [iconName]=\"saveButtonConfig().iconName\"\n [variant]=\"saveButtonConfig().variant\"\n [size]=\"saveButtonConfig().size\"\n [disabled]=\"saveButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"saveEdit()\"\n [attr.aria-label]=\"'Save ' + (label() || 'field')\"\n class=\"save-button\"\n ></ui-button>\n\n <ui-button\n [label]=\"cancelButtonConfig().label\"\n [iconName]=\"cancelButtonConfig().iconName\"\n [variant]=\"cancelButtonConfig().variant\"\n [size]=\"cancelButtonConfig().size\"\n [disabled]=\"cancelButtonConfig().disabled\"\n [applicationTheme]=\"applicationTheme()\"\n [iconPosition]=\"'left'\"\n (buttonClickEvent)=\"cancelEdit()\"\n [attr.aria-label]=\"'Cancel editing ' + (label() || 'field')\"\n class=\"cancel-button\"\n ></ui-button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\n\nimport { InlineFieldComponent } from './inline-field.component';\n\n@NgModule({\n declarations: [InlineFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n ButtonComponentModule,\n FieldComponentModule,\n IconComponentModule,\n ],\n exports: [InlineFieldComponent],\n})\nexport class InlineFieldComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}