@tacdaed/fragments 1.0.0-beta.3 → 1.0.0-beta.4

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 (248) hide show
  1. package/README.md +14 -0
  2. package/ng-package.json +20 -0
  3. package/package.json +22 -29
  4. package/src/lib/components/accordion/accordion.component.html +103 -0
  5. package/src/lib/components/accordion/accordion.component.scss +382 -0
  6. package/src/lib/components/accordion/accordion.component.spec.ts +147 -0
  7. package/src/lib/components/accordion/accordion.component.ts +211 -0
  8. package/src/lib/components/accordion/accordion.type.ts +82 -0
  9. package/src/lib/components/breadcrumb/breadcrumb.component.html +43 -0
  10. package/src/lib/components/breadcrumb/breadcrumb.component.scss +112 -0
  11. package/src/lib/components/breadcrumb/breadcrumb.component.spec.ts +33 -0
  12. package/src/lib/components/breadcrumb/breadcrumb.component.ts +103 -0
  13. package/src/lib/components/breadcrumb/breadcrumb.interface.ts +7 -0
  14. package/src/lib/components/button/button.component.html +57 -0
  15. package/src/lib/components/button/button.component.scss +445 -0
  16. package/src/lib/components/button/button.component.spec.ts +99 -0
  17. package/src/lib/components/button/button.component.ts +143 -0
  18. package/src/lib/components/button/button.type.ts +7 -0
  19. package/src/lib/components/card/card.component.html +44 -0
  20. package/src/lib/components/card/card.component.scss +114 -0
  21. package/src/lib/components/card/card.component.spec.ts +65 -0
  22. package/src/lib/components/card/card.component.ts +21 -0
  23. package/src/lib/components/card/card.type.ts +3 -0
  24. package/src/lib/components/code-block/code-block.component.html +55 -0
  25. package/src/lib/components/code-block/code-block.component.scss +122 -0
  26. package/src/lib/components/code-block/code-block.component.spec.ts +81 -0
  27. package/src/lib/components/code-block/code-block.component.ts +302 -0
  28. package/src/lib/components/code-block/code-block.interface.ts +28 -0
  29. package/src/lib/components/code-block/code-block.type.ts +73 -0
  30. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.html +14 -0
  31. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.scss +20 -0
  32. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.spec.ts +38 -0
  33. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.ts +181 -0
  34. package/src/lib/components/input/input-base.ts +187 -0
  35. package/src/lib/components/input/input-calendar/input-calendar.component.html +76 -0
  36. package/src/lib/components/input/input-calendar/input-calendar.component.scss +179 -0
  37. package/src/lib/components/input/input-calendar/input-calendar.component.spec.ts +44 -0
  38. package/src/lib/components/input/input-calendar/input-calendar.component.ts +299 -0
  39. package/src/lib/components/input/input-checkbox/input-checkbox.component.html +37 -0
  40. package/src/lib/components/input/input-checkbox/input-checkbox.component.scss +128 -0
  41. package/src/lib/components/input/input-checkbox/input-checkbox.component.spec.ts +43 -0
  42. package/src/lib/components/input/input-checkbox/input-checkbox.component.ts +112 -0
  43. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.html +43 -0
  44. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.scss +140 -0
  45. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.spec.ts +62 -0
  46. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.ts +136 -0
  47. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.html +81 -0
  48. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.scss +228 -0
  49. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.spec.ts +62 -0
  50. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.ts +178 -0
  51. package/src/lib/components/input/input-consts.ts +132 -0
  52. package/src/lib/components/input/input-date/input-date-validators.ts +41 -0
  53. package/src/lib/components/input/input-date/input-date.component.html +41 -0
  54. package/src/lib/components/input/input-date/input-date.component.scss +95 -0
  55. package/src/lib/components/input/input-date/input-date.component.spec.ts +43 -0
  56. package/src/lib/components/input/input-date/input-date.component.ts +359 -0
  57. package/src/lib/components/input/input-date-time/input-date-time.component.html +70 -0
  58. package/src/lib/components/input/input-date-time/input-date-time.component.scss +133 -0
  59. package/src/lib/components/input/input-date-time/input-date-time.component.spec.ts +36 -0
  60. package/src/lib/components/input/input-date-time/input-date-time.component.ts +387 -0
  61. package/src/lib/components/input/input-file-upload/input-file-upload.component.html +89 -0
  62. package/src/lib/components/input/input-file-upload/input-file-upload.component.scss +171 -0
  63. package/src/lib/components/input/input-file-upload/input-file-upload.component.spec.ts +43 -0
  64. package/src/lib/components/input/input-file-upload/input-file-upload.component.ts +351 -0
  65. package/src/lib/components/input/input-interface.ts +8 -0
  66. package/src/lib/components/input/input-number/input-number-validators.ts +0 -0
  67. package/src/lib/components/input/input-number/input-number.component.html +51 -0
  68. package/src/lib/components/input/input-number/input-number.component.scss +140 -0
  69. package/src/lib/components/input/input-number/input-number.component.spec.ts +44 -0
  70. package/src/lib/components/input/input-number/input-number.component.ts +343 -0
  71. package/src/lib/components/input/input-radio-group/input-radio-group.component.html +44 -0
  72. package/src/lib/components/input/input-radio-group/input-radio-group.component.scss +139 -0
  73. package/src/lib/components/input/input-radio-group/input-radio-group.component.spec.ts +58 -0
  74. package/src/lib/components/input/input-radio-group/input-radio-group.component.ts +132 -0
  75. package/src/lib/components/input/input-slider/input-slider.component.html +111 -0
  76. package/src/lib/components/input/input-slider/input-slider.component.scss +203 -0
  77. package/src/lib/components/input/input-slider/input-slider.component.spec.ts +46 -0
  78. package/src/lib/components/input/input-slider/input-slider.component.ts +410 -0
  79. package/src/lib/components/input/input-text/input-text-validators.ts +67 -0
  80. package/src/lib/components/input/input-text/input-text.component.html +71 -0
  81. package/src/lib/components/input/input-text/input-text.component.scss +118 -0
  82. package/src/lib/components/input/input-text/input-text.component.spec.ts +55 -0
  83. package/src/lib/components/input/input-text/input-text.component.ts +215 -0
  84. package/src/lib/components/input/input-time/input-time-validators.ts +42 -0
  85. package/src/lib/components/input/input-time/input-time.component.html +92 -0
  86. package/src/lib/components/input/input-time/input-time.component.scss +191 -0
  87. package/src/lib/components/input/input-time/input-time.component.spec.ts +39 -0
  88. package/src/lib/components/input/input-time/input-time.component.ts +691 -0
  89. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.html +36 -0
  90. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.scss +121 -0
  91. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.spec.ts +54 -0
  92. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.ts +117 -0
  93. package/src/lib/components/input/input-type.ts +18 -0
  94. package/src/lib/components/input/input-validation/input-validation.component.html +19 -0
  95. package/src/lib/components/input/input-validation/input-validation.component.scss +39 -0
  96. package/src/lib/components/input/input-validation/input-validation.component.spec.ts +45 -0
  97. package/src/lib/components/input/input-validation/input-validation.component.ts +13 -0
  98. package/src/lib/components/input/input.pipe.ts +14 -0
  99. package/src/lib/components/layout/container/container.component.html +1 -0
  100. package/src/lib/components/layout/container/container.component.scss +33 -0
  101. package/src/lib/components/layout/container/container.component.ts +32 -0
  102. package/src/lib/components/layout/container/container.type.ts +1 -0
  103. package/src/lib/components/layout/divider/divider.component.html +1 -0
  104. package/src/lib/components/layout/divider/divider.component.scss +60 -0
  105. package/src/lib/components/layout/divider/divider.component.ts +38 -0
  106. package/src/lib/components/layout/divider/divider.type.ts +2 -0
  107. package/src/lib/components/layout/section/section.component.html +21 -0
  108. package/src/lib/components/layout/section/section.component.scss +43 -0
  109. package/src/lib/components/layout/section/section.component.ts +33 -0
  110. package/src/lib/components/layout/section/section.type.ts +2 -0
  111. package/src/lib/components/layout/separator/separator.component.html +9 -0
  112. package/src/lib/components/layout/separator/separator.component.scss +52 -0
  113. package/src/lib/components/layout/separator/separator.component.ts +25 -0
  114. package/src/lib/components/layout/separator/separator.type.ts +1 -0
  115. package/src/lib/components/loader/content-blur/content-blur.component.html +13 -0
  116. package/src/lib/components/loader/content-blur/content-blur.component.scss +43 -0
  117. package/src/lib/components/loader/content-blur/content-blur.component.spec.ts +42 -0
  118. package/src/lib/components/loader/content-blur/content-blur.component.ts +34 -0
  119. package/src/lib/components/loader/loader.type.ts +2 -0
  120. package/src/lib/components/loader/progress-bar/progress-bar.component.html +26 -0
  121. package/src/lib/components/loader/progress-bar/progress-bar.component.scss +151 -0
  122. package/src/lib/components/loader/progress-bar/progress-bar.component.spec.ts +47 -0
  123. package/src/lib/components/loader/progress-bar/progress-bar.component.ts +28 -0
  124. package/src/lib/components/loader/progress-bar/progress-bar.type.ts +8 -0
  125. package/src/lib/components/loader/pulse-loader/pulse-loader.component.html +12 -0
  126. package/src/lib/components/loader/pulse-loader/pulse-loader.component.scss +202 -0
  127. package/src/lib/components/loader/pulse-loader/pulse-loader.component.spec.ts +55 -0
  128. package/src/lib/components/loader/pulse-loader/pulse-loader.component.ts +73 -0
  129. package/src/lib/components/loader/pulse-loader/pulse-loader.type.ts +6 -0
  130. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.html +13 -0
  131. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.scss +113 -0
  132. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.spec.ts +37 -0
  133. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.ts +51 -0
  134. package/src/lib/components/loader/skeleton-loader/skeleton-loader.type.ts +6 -0
  135. package/src/lib/components/loader/spinner/spinner.component.html +20 -0
  136. package/src/lib/components/loader/spinner/spinner.component.scss +137 -0
  137. package/src/lib/components/loader/spinner/spinner.component.spec.ts +43 -0
  138. package/src/lib/components/loader/spinner/spinner.component.ts +32 -0
  139. package/src/lib/components/loader/spinner/spinner.type.ts +6 -0
  140. package/src/lib/components/modal/modal.component.html +47 -0
  141. package/src/lib/components/modal/modal.component.scss +139 -0
  142. package/src/lib/components/modal/modal.component.spec.ts +60 -0
  143. package/src/lib/components/modal/modal.component.ts +83 -0
  144. package/src/lib/components/modal/modal.type.ts +9 -0
  145. package/src/lib/components/morph/blob-moph/blob-moprh.component.spec.ts +79 -0
  146. package/src/lib/components/morph/blob-moph/blob-moprh.component.ts +96 -0
  147. package/src/lib/components/morph/blob-moph/blob-morph.component.html +34 -0
  148. package/src/lib/components/morph/blob-moph/blob-morph.component.scss +7 -0
  149. package/src/lib/components/morph/morph.abstract.ts +13 -0
  150. package/src/lib/components/pagination/pagination.interface.ts +4 -0
  151. package/src/lib/components/pagination/small-pagination/small-pagination.component.html +61 -0
  152. package/src/lib/components/pagination/small-pagination/small-pagination.component.scss +187 -0
  153. package/src/lib/components/pagination/small-pagination/small-pagination.component.spec.ts +88 -0
  154. package/src/lib/components/pagination/small-pagination/small-pagination.component.ts +177 -0
  155. package/src/lib/components/selection-lists/multi-select/multi-select.component.html +170 -0
  156. package/src/lib/components/selection-lists/multi-select/multi-select.component.scss +312 -0
  157. package/src/lib/components/selection-lists/multi-select/multi-select.component.spec.ts +61 -0
  158. package/src/lib/components/selection-lists/multi-select/multi-select.component.ts +372 -0
  159. package/src/lib/components/selection-lists/selection-list/selection-list.component.html +125 -0
  160. package/src/lib/components/selection-lists/selection-list/selection-list.component.scss +267 -0
  161. package/src/lib/components/selection-lists/selection-list/selection-list.component.spec.ts +66 -0
  162. package/src/lib/components/selection-lists/selection-list/selection-list.component.ts +315 -0
  163. package/src/lib/components/selection-lists/selection-lists-base.ts +35 -0
  164. package/src/lib/components/selection-lists/selection-lists-const.ts +17 -0
  165. package/src/lib/components/selection-lists/selection-lists-interface.ts +7 -0
  166. package/src/lib/components/selection-lists/selection-lists.type.ts +1 -0
  167. package/src/lib/components/side-nav/side-nav.component.html +101 -0
  168. package/src/lib/components/side-nav/side-nav.component.scss +295 -0
  169. package/src/lib/components/side-nav/side-nav.component.spec.ts +0 -0
  170. package/src/lib/components/side-nav/side-nav.component.ts +18 -0
  171. package/src/lib/components/side-nav/side-nav.type.ts +28 -0
  172. package/src/lib/components/snackbar/snackbar.component.html +33 -0
  173. package/src/lib/components/snackbar/snackbar.component.scss +195 -0
  174. package/src/lib/components/snackbar/snackbar.component.ts +112 -0
  175. package/src/lib/components/snackbar/snackbar.type.ts +27 -0
  176. package/src/lib/components/status/chip/chip.component.html +51 -0
  177. package/src/lib/components/status/chip/chip.component.scss +149 -0
  178. package/src/lib/components/status/chip/chip.component.spec.ts +62 -0
  179. package/src/lib/components/status/chip/chip.component.ts +83 -0
  180. package/src/lib/components/status/chip/chip.type.ts +42 -0
  181. package/src/lib/components/status/directives/badge/badge.directive.spec.ts +60 -0
  182. package/src/lib/components/status/directives/badge/badge.directive.ts +190 -0
  183. package/src/lib/components/status/directives/badge/badge.interface.ts +19 -0
  184. package/src/lib/components/status/pill/pill.component.html +40 -0
  185. package/src/lib/components/status/pill/pill.component.scss +113 -0
  186. package/src/lib/components/status/pill/pill.component.spec.ts +47 -0
  187. package/src/lib/components/status/pill/pill.component.ts +83 -0
  188. package/src/lib/components/status/pill/pill.type.ts +42 -0
  189. package/src/lib/components/status/status.interface.ts +57 -0
  190. package/src/lib/components/status/status.type.ts +62 -0
  191. package/src/lib/components/status/tag/tag.component.html +39 -0
  192. package/src/lib/components/status/tag/tag.component.scss +140 -0
  193. package/src/lib/components/status/tag/tag.component.spec.ts +47 -0
  194. package/src/lib/components/status/tag/tag.component.ts +83 -0
  195. package/src/lib/components/status/tag/tag.type.ts +42 -0
  196. package/src/lib/components/stepper/stepper.component.html +83 -0
  197. package/src/lib/components/stepper/stepper.component.scss +196 -0
  198. package/src/lib/components/stepper/stepper.component.ts +482 -0
  199. package/src/lib/components/stepper/stepper.type.ts +60 -0
  200. package/src/lib/components/table/table.component.html +438 -0
  201. package/src/lib/components/table/table.component.scss +259 -0
  202. package/src/lib/components/table/table.component.spec.ts +117 -0
  203. package/src/lib/components/table/table.component.ts +215 -0
  204. package/src/lib/components/table/table.enum.ts +4 -0
  205. package/src/lib/components/table/table.function.ts +47 -0
  206. package/src/lib/components/table/table.interface.ts +143 -0
  207. package/src/lib/components/table/table.pipe.ts +62 -0
  208. package/src/lib/components/table/table.type.ts +15 -0
  209. package/src/lib/components/tabs/tabs.component.html +88 -0
  210. package/src/lib/components/tabs/tabs.component.scss +305 -0
  211. package/src/lib/components/tabs/tabs.component.spec.ts +94 -0
  212. package/src/lib/components/tabs/tabs.component.ts +282 -0
  213. package/src/lib/components/tabs/tabs.type.ts +81 -0
  214. package/src/lib/components/title-bar/title-bar.component.html +21 -0
  215. package/src/lib/components/title-bar/title-bar.component.scss +139 -0
  216. package/src/lib/components/title-bar/title-bar.component.spec.ts +44 -0
  217. package/src/lib/components/title-bar/title-bar.component.ts +13 -0
  218. package/src/lib/components/toast/toast.component.html +36 -0
  219. package/src/lib/components/toast/toast.component.scss +241 -0
  220. package/src/lib/components/toast/toast.component.ts +165 -0
  221. package/src/lib/components/toast/toast.type.ts +37 -0
  222. package/src/lib/components/toast-stack/toast-stack.component.html +30 -0
  223. package/src/lib/components/toast-stack/toast-stack.component.scss +35 -0
  224. package/src/lib/components/toast-stack/toast-stack.component.ts +51 -0
  225. package/src/lib/consts/country-prefix.ts +244 -0
  226. package/src/lib/directives/tooltip/popover.directive.ts +274 -0
  227. package/src/lib/directives/tooltip/tooltip.directive.spec.ts +86 -0
  228. package/src/lib/directives/tooltip/tooltip.directive.ts +234 -0
  229. package/src/lib/directives/tooltip/tooltip.interface.ts +29 -0
  230. package/src/lib/directives/tooltip/tooltip.type.ts +9 -0
  231. package/src/lib/interfaces/common.interfaces.ts +4 -0
  232. package/src/lib/pipes/chunk.pipe.ts +16 -0
  233. package/src/lib/pipes/safe-html.pipe.ts +14 -0
  234. package/src/lib/pipes/sanitize-html.pipe.ts +23 -0
  235. package/src/lib/types/base.types.ts +23 -0
  236. package/src/lib/types/common.types.ts +98 -0
  237. package/src/lib/types/form.types.ts +5 -0
  238. package/src/lib/utils/common.utils.ts +53 -0
  239. package/src/lib/utils/date.utils.ts +474 -0
  240. package/src/lib/utils/number.utils.ts +16 -0
  241. package/src/lib/utils/uuid.utils.ts +39 -0
  242. package/src/public-api.ts +114 -0
  243. package/tsconfig.lib.json +17 -0
  244. package/tsconfig.lib.prod.json +10 -0
  245. package/tsconfig.spec.json +9 -0
  246. package/fesm2022/tacdaed-fragments.mjs +0 -8928
  247. package/fesm2022/tacdaed-fragments.mjs.map +0 -1
  248. package/index.d.ts +0 -3929
@@ -0,0 +1,438 @@
1
+ @if (configTable.tTitleBar?.title) {
2
+ <frg-title-bar
3
+ [title]="configTable.tTitleBar?.title ?? ''"
4
+ [styleType]="styleType"
5
+ ></frg-title-bar>
6
+ }
7
+ @if (configTable.tBody.data && configTable.tBody.data.length > 0) {
8
+ <div class="frg-table-responsive">
9
+ <table
10
+ class="frg-table"
11
+ id="table1"
12
+ [ngClass]="{
13
+ 'frg-table__primary': styleType === 'primary',
14
+ 'frg-table__secondary': styleType === 'secondary',
15
+ 'frg-table__tertiary': styleType === 'tertiary',
16
+ 'frg-table__dark': styleType === 'dark',
17
+ 'frg-table__light': styleType === 'light',
18
+ 'frg-table--row-small': rowSize === 'small',
19
+ 'frg-table--row-medium': rowSize === 'medium',
20
+ 'frg-table--row-large': rowSize === 'large'
21
+ }"
22
+ >
23
+ @if (configTable.tCaption && configTable.tCaption.srOnly) {
24
+ <caption class="visually-hidden">
25
+ {{ configTable.tCaption.srOnly }}
26
+ </caption>
27
+ }
28
+ @if (configTable.tHead.columns.length > 0) {
29
+ <thead #tableHead>
30
+ <tr>
31
+ <!--Sort-->
32
+ @if (configTable.tHead) {
33
+ @for (hColumn of configTable.tHead.columns; track $index) {
34
+ @if (hColumn.fieldOrder) {
35
+ <th
36
+ scope="col"
37
+ [tabindex]="hColumn.fieldOrder ? 0 : null"
38
+ [attr.aria-sort]="
39
+ !(hColumn.fieldOrder === configTable.tPagination.order)
40
+ ? null
41
+ : configTable.tPagination.direction ===
42
+ EnumDirectionSortTable.asc
43
+ ? 'ascending'
44
+ : 'descending'
45
+ "
46
+ [ngClass]="{
47
+ 'frg-sorting': hColumn.fieldOrder,
48
+ 'frg-sorting-asc':
49
+ configTable.tPagination.direction ===
50
+ EnumDirectionSortTable.asc &&
51
+ hColumn.fieldOrder === configTable.tPagination.order,
52
+ 'frg-sorting-desc':
53
+ configTable.tPagination.direction ===
54
+ EnumDirectionSortTable.desc &&
55
+ hColumn.fieldOrder === configTable.tPagination.order
56
+ }"
57
+ (click)="
58
+ hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null
59
+ "
60
+ (keydown.enter)="
61
+ hColumn.fieldOrder ? orderBy(hColumn.fieldOrder) : null
62
+ "
63
+ >
64
+ <span>
65
+ {{ hColumn.fieldLabel }}
66
+ </span>
67
+ </th>
68
+ } @else {
69
+ <th scope="col">
70
+ <span>
71
+ {{ hColumn.fieldLabel }}
72
+ </span>
73
+ </th>
74
+ }
75
+ }
76
+ }
77
+ <!--End Sort-->
78
+ @if (configTable.tHead.action) {
79
+ <th
80
+ scope="col"
81
+ [ngClass]="configTable.tHead.action.customClass ?? ''"
82
+ >
83
+ {{ configTable.tHead.action.label }}
84
+ </th>
85
+ }
86
+ </tr>
87
+ </thead>
88
+ }
89
+ <tbody>
90
+ @for (item of configTable.tBody.data; let i = $index; track $index) {
91
+ <tr
92
+ [attr.id]="i === 0 ? idFirstTr : null"
93
+ [ngClass]="
94
+ configTable.tBody.rowClick?.behaviourAction?.clickEvent
95
+ ? 'cursor-pointer'
96
+ : ''
97
+ "
98
+ [routerLink]="
99
+ configTable.tBody.rowClick?.disabled &&
100
+ configTable.tBody.rowClick?.disabled(item)
101
+ ? null
102
+ : configTable.tBody.rowClick?.behaviourAction?.link
103
+ ? [
104
+ configTable.tBody.rowClick?.behaviourAction?.link
105
+ ? configTable.tBody.rowClick?.behaviourAction?.link
106
+ : './',
107
+ configTable.tBody.rowClick?.behaviourAction
108
+ ?.customParamsLink ||
109
+ (item | fieldArrayPosition: configTable.tBody.uniqueField)
110
+ ]
111
+ : null
112
+ "
113
+ (click)="handleRowClick($event, item)"
114
+ (keyup.enter)="handleRowClick($event, item)"
115
+ (keydown)="handleRowClick($event, item)"
116
+ >
117
+ @for (column of configTable.tBody.columns; let i = $index; track $index) {
118
+ <td>
119
+ <div [ngClass]="column.customClass">
120
+ <ng-container
121
+ [ngTemplateOutlet]="
122
+ (column.cells | typeOfArray) ? cellForTpl : cellTpl
123
+ "
124
+ [ngTemplateOutletContext]="{
125
+ cells: column.cells,
126
+ item: item
127
+ }"
128
+ ></ng-container>
129
+ </div>
130
+ </td>
131
+ }
132
+ @if (configTable.tBody.action ?? false) {
133
+ <td
134
+ class="table-action"
135
+ [ngClass]="configTable.tBody.action?.customClasses ?? ''"
136
+ >
137
+ @for (act of configTable.tBody.action?.buttons ?? []; track $index) {
138
+ @if (act.visible && act.visible(item) ? true : null) {
139
+ <frg-button
140
+ [ariaLabel]="act.ariaLabel || 'Azione'"
141
+ [text]="''"
142
+ [iconClass]="act.iconClass ? act.iconClass(item) : ''"
143
+ [styleType]="'icon'"
144
+ [size]="'small'"
145
+ frgTooltip
146
+ [tooltipConfig]="{
147
+ apply:
148
+ act.tooltip &&
149
+ act.tooltip.apply &&
150
+ act.visible &&
151
+ act.visible(item)
152
+ ? act.tooltip.apply
153
+ : true,
154
+ text:
155
+ act.tooltip && act.tooltip.text
156
+ ? act.tooltip.text(item)
157
+ : '',
158
+ textContent:
159
+ act.tooltip && act.tooltip.textContent
160
+ ? act.tooltip.textContent(item)
161
+ : '',
162
+ position:
163
+ act.tooltip && act.tooltip.position
164
+ ? act.tooltip.position
165
+ : 'top',
166
+ gap: act.tooltip && act.tooltip.gap ? act.tooltip.gap : 0
167
+ }"
168
+ [disabled]="act.disabled ? act.disabled(item) : null"
169
+ [buttonRouterLink]="
170
+ act.disabled && act.disabled(item)
171
+ ? null
172
+ : act.behaviourAction.link
173
+ ? [
174
+ act.behaviourAction.link
175
+ ? act.behaviourAction.link
176
+ : './',
177
+ act.behaviourAction.customParamsLink ||
178
+ (item
179
+ | fieldArrayPosition
180
+ : configTable.tBody.uniqueField)
181
+ ]
182
+ : null
183
+ "
184
+ (clickEvent)="
185
+ act.behaviourAction.clickEvent
186
+ ? act.behaviourAction.clickEvent(item)
187
+ : null
188
+ "
189
+ (click)="$event.stopPropagation()"
190
+ (keydown)="$event.stopPropagation()"
191
+ (keyup.enter)="$event.stopPropagation()"
192
+ >
193
+ </frg-button>
194
+ }
195
+ }
196
+ </td>
197
+ }
198
+ </tr>
199
+ }
200
+ </tbody>
201
+ </table>
202
+ </div>
203
+
204
+ @if (configTable.tPagination) {
205
+ <frg-small-pagination
206
+ [hasElipsisPages]="configTable.tPagination.hasElipsisPages ?? false"
207
+ [pageSize]="configTable.tPagination.pageSize ?? 10"
208
+ [page]="configTable.tPagination.page ?? 0"
209
+ [totalItems]="configTable.tPagination.fullData?.length ?? 0"
210
+ [fullData]="configTable.tPagination.fullData ?? []"
211
+ [styleType]="styleType"
212
+ (pageChange)="updateCurrentPage($event)"
213
+ ></frg-small-pagination>
214
+ }
215
+ } @else {
216
+ <div class="d-flex justify-content-center my-4">
217
+ <div class="text-center">No Elements</div>
218
+ </div>
219
+ }
220
+
221
+ <ng-template #cellForTpl let-cells="cells" let-item="item">
222
+ @for (cell of $any(cells); track $index) {
223
+ <ng-container
224
+ [ngTemplateOutlet]="cellTpl"
225
+ [ngTemplateOutletContext]="{
226
+ cell: cell,
227
+ item: item
228
+ }"
229
+ ></ng-container>
230
+ <br />
231
+ }
232
+ </ng-template>
233
+
234
+ <ng-template #cellTpl let-cell="cells" let-item="item">
235
+ @if (!cell.fieldPipe) {
236
+ @if (
237
+ cell.icon &&
238
+ cell.icon.position !== 'right' &&
239
+ cell.icon.action.visible &&
240
+ cell.icon.action.visible(item)
241
+ ) {
242
+ <frg-button
243
+ [ariaLabel]="cell.icon.ariaLabel || 'Azione'"
244
+ [text]="''"
245
+ [iconClass]="cell.icon.iconClass ? cell.icon.iconClass : ''"
246
+ [styleType]="'icon'"
247
+ [size]="'small'"
248
+ frgTooltip
249
+ [tooltipConfig]="{
250
+ apply:
251
+ cell.icon.action.tooltip && cell.icon.action.tooltip.apply
252
+ ? cell.icon.action.tooltip.apply
253
+ : true,
254
+ text:
255
+ cell.icon.action.tooltip && cell.icon.action.tooltip.text
256
+ ? cell.icon.action.tooltip.text(item)
257
+ : '',
258
+ textContent:
259
+ cell.icon.action.tooltip && cell.icon.action.tooltip.textContent
260
+ ? cell.icon.action.tooltip.textContent(item)
261
+ : '',
262
+ position:
263
+ cell.icon.action.tooltip && cell.icon.action.tooltip.position
264
+ ? cell.icon.action.tooltip.position
265
+ : 'top',
266
+ gap:
267
+ cell.icon.action.tooltip && cell.icon.action.tooltip.gap
268
+ ? cell.icon.action.tooltip.gap
269
+ : 0
270
+ }"
271
+ [disabled]="
272
+ cell.icon.action.disabled
273
+ ? cell.icon.action.disabled(item)
274
+ : null
275
+ "
276
+ (clickEvent)="handleIconClick(cell, item)"
277
+ (click)="$event.stopPropagation()"
278
+ (keydown)="$event.stopPropagation()"
279
+ (keyup.enter)="$event.stopPropagation()"
280
+ >
281
+ </frg-button>
282
+ }
283
+ <span [ngClass]="cell.customClass ? cell.customClass(item) : ''">
284
+ {{ item | fieldArrayPosition: cell.fieldArrayPosition }}
285
+ </span>
286
+ @if (
287
+ cell.icon &&
288
+ cell.icon.position === 'right' &&
289
+ cell.icon.action.visible &&
290
+ cell.icon.action.visible(item)
291
+ ) {
292
+ <frg-button
293
+ [ariaLabel]="cell.icon.ariaLabel || 'Azione'"
294
+ [text]="''"
295
+ [iconClass]="cell.icon.iconClass ? cell.icon.iconClass : ''"
296
+ [styleType]="'icon'"
297
+ [size]="'small'"
298
+ frgTooltip
299
+ [tooltipConfig]="{
300
+ apply:
301
+ cell.icon.action.tooltip && cell.icon.action.tooltip.apply
302
+ ? cell.icon.action.tooltip.apply
303
+ : true,
304
+ text:
305
+ cell.icon.action.tooltip && cell.icon.action.tooltip.text
306
+ ? cell.icon.action.tooltip.text(item)
307
+ : '',
308
+ textContent:
309
+ cell.icon.action.tooltip && cell.icon.action.tooltip.textContent
310
+ ? cell.icon.action.tooltip.textContent(item)
311
+ : '',
312
+ position:
313
+ cell.icon.action.tooltip && cell.icon.action.tooltip.position
314
+ ? cell.icon.action.tooltip.position
315
+ : 'top',
316
+ gap:
317
+ cell.icon.action.tooltip && cell.icon.action.tooltip.gap
318
+ ? cell.icon.action.tooltip.gap
319
+ : 0
320
+ }"
321
+ [disabled]="
322
+ cell.icon.action.disabled
323
+ ? cell.icon.action.disabled(item)
324
+ : null
325
+ "
326
+ (clickEvent)="handleIconClick(cell, item)"
327
+ (click)="$event.stopPropagation()"
328
+ (keydown)="$event.stopPropagation()"
329
+ (keyup.enter)="$event.stopPropagation()"
330
+ >
331
+ </frg-button>
332
+ }
333
+ } @else {
334
+ @if (
335
+ cell.icon &&
336
+ cell.icon.position !== 'right' &&
337
+ cell.icon.action.visible &&
338
+ cell.icon.action.visible(item)
339
+ ) {
340
+ <frg-button
341
+ [ariaLabel]="cell.icon.ariaLabel || 'Azione'"
342
+ [text]="''"
343
+ [iconClass]="cell.icon.iconClass ? cell.icon.iconClass : ''"
344
+ [styleType]="'icon'"
345
+ [size]="'small'"
346
+ frgTooltip
347
+ [tooltipConfig]="{
348
+ apply:
349
+ cell.icon.action.tooltip && cell.icon.action.tooltip.apply
350
+ ? cell.icon.action.tooltip.apply
351
+ : true,
352
+ text:
353
+ cell.icon.action.tooltip && cell.icon.action.tooltip.text
354
+ ? cell.icon.action.tooltip.text(item)
355
+ : '',
356
+ textContent:
357
+ cell.icon.action.tooltip && cell.icon.action.tooltip.textContent
358
+ ? cell.icon.action.tooltip.textContent(item)
359
+ : '',
360
+ position:
361
+ cell.icon.action.tooltip && cell.icon.action.tooltip.position
362
+ ? cell.icon.action.tooltip.position
363
+ : 'top',
364
+ gap:
365
+ cell.icon.action.tooltip && cell.icon.action.tooltip.gap
366
+ ? cell.icon.action.tooltip.gap
367
+ : 0
368
+ }"
369
+ [disabled]="
370
+ cell.icon.action.disabled
371
+ ? cell.icon.action.disabled(item)
372
+ : null
373
+ "
374
+ (clickEvent)="handleIconClick(cell, item)"
375
+ (click)="$event.stopPropagation()"
376
+ (keydown)="$event.stopPropagation()"
377
+ (keyup.enter)="$event.stopPropagation()"
378
+ >
379
+ </frg-button>
380
+ }
381
+ <span
382
+ [innerHtml]="
383
+ item
384
+ | fieldArrayPosition: cell.fieldArrayPosition
385
+ | dynamicPipe: cell.fieldPipe.type : cell.fieldPipe.args
386
+ | safeHtml
387
+ "
388
+ [ngClass]="cell.customClass ? cell.customClass(item) : ''"
389
+ ></span>
390
+ @if (
391
+ cell.icon &&
392
+ cell.icon.position === 'right' &&
393
+ cell.icon.action.visible &&
394
+ cell.icon.action.visible(item)
395
+ ) {
396
+ <frg-button
397
+ [ariaLabel]="cell.icon.ariaLabel || 'Azione'"
398
+ [text]="''"
399
+ [iconClass]="cell.icon.iconClass ? cell.icon.iconClass : ''"
400
+ [styleType]="'icon'"
401
+ [size]="'small'"
402
+ frgTooltip
403
+ [tooltipConfig]="{
404
+ apply:
405
+ cell.icon.action.tooltip && cell.icon.action.tooltip.apply
406
+ ? cell.icon.action.tooltip.apply
407
+ : true,
408
+ text:
409
+ cell.icon.action.tooltip && cell.icon.action.tooltip.text
410
+ ? cell.icon.action.tooltip.text(item)
411
+ : '',
412
+ textContent:
413
+ cell.icon.action.tooltip && cell.icon.action.tooltip.textContent
414
+ ? cell.icon.action.tooltip.textContent(item)
415
+ : '',
416
+ position:
417
+ cell.icon.action.tooltip && cell.icon.action.tooltip.position
418
+ ? cell.icon.action.tooltip.position
419
+ : 'top',
420
+ gap:
421
+ cell.icon.action.tooltip && cell.icon.action.tooltip.gap
422
+ ? cell.icon.action.tooltip.gap
423
+ : 0
424
+ }"
425
+ [disabled]="
426
+ cell.icon.action.disabled
427
+ ? cell.icon.action.disabled(item)
428
+ : null
429
+ "
430
+ (clickEvent)="handleIconClick(cell, item)"
431
+ (click)="$event.stopPropagation()"
432
+ (keydown)="$event.stopPropagation()"
433
+ (keyup.enter)="$event.stopPropagation()"
434
+ >
435
+ </frg-button>
436
+ }
437
+ }
438
+ </ng-template>
@@ -0,0 +1,259 @@
1
+ @use "sass:color";
2
+ @use './../../../../assets/styles/scss/variables' as *;
3
+ @use './../title-bar/title-bar.component.scss';
4
+
5
+ .frg-filter,
6
+ .frg-search {
7
+ & label {
8
+ display: block;
9
+ font-size: 0.875rem;
10
+ font-weight: 400;
11
+ margin-bottom: 0.5rem;
12
+ font-family: $input-font-family;
13
+ text-transform: uppercase;
14
+ letter-spacing: 0.05rem;
15
+ }
16
+
17
+ & input {
18
+ display: block;
19
+ width: 100%;
20
+ padding: $table-input-padding;
21
+ font-size: $input-font-size;
22
+ font-family: $input-font-family;
23
+ line-height: 1.5;
24
+ color: $color-dark;
25
+ background-color: $input-background;
26
+ background-clip: padding-box;
27
+ border: 1px solid $input-border-color;
28
+ border-radius: $input-border-radius;
29
+ transition:
30
+ border-color 0.15s ease-in-out,
31
+ box-shadow 0.15s ease-in-out;
32
+
33
+ &::placeholder {
34
+ color: $input-placeholder-color;
35
+ opacity: 1;
36
+ }
37
+
38
+ &:focus {
39
+ color: $color-dark;
40
+ background-color: $input-background;
41
+ border-color: $input-focus-border-color;
42
+ outline: 0;
43
+ box-shadow: 0 0 0 0.2rem rgba(46, 110, 166, 0.25);
44
+ }
45
+
46
+ &.is-invalid {
47
+ border-color: $input-error-border-color;
48
+ padding-right: calc($table-input-padding + 2rem);
49
+ background-image: url('data:image/svg+xml, ...');
50
+ background-repeat: no-repeat;
51
+ background-position: center right calc($table-input-padding / 2);
52
+ background-size: calc($table-input-padding / 1.5) calc($table-input-padding / 1.5);
53
+
54
+ &:focus {
55
+ border-color: $input-error-border-color;
56
+ box-shadow: 0 0 0 0.2rem rgba(218, 30, 40, 0.25);
57
+ }
58
+ }
59
+
60
+ &:disabled {
61
+ background-color: $input-disabled-background;
62
+ border-color: $input-disabled-border-color;
63
+ }
64
+ }
65
+ }
66
+
67
+ .frg-table-responsive {
68
+ border: 1px solid #e6e9ef;
69
+ border-radius: 0.25rem;
70
+ overflow: hidden;
71
+ background-color: $color-light;
72
+ }
73
+
74
+ frg-title-bar + .frg-table-responsive {
75
+ border-top: none;
76
+ border-radius: 0 0 0.25rem 0.25rem;
77
+ }
78
+
79
+ .frg-table {
80
+ width: 100%;
81
+ border-collapse: separate;
82
+ border-spacing: 0;
83
+ font-size: 0.95rem;
84
+ background-color: $color-light;
85
+
86
+ &-responsive {
87
+ border-radius: 0 0 .25rem .25rem;
88
+ border: 1px solid #e6e9ef;
89
+ overflow: hidden;
90
+ background-color: $color-light;
91
+ }
92
+
93
+ & td,
94
+ & th {
95
+ text-align: left;
96
+ padding: 0.75rem 0.9rem;
97
+ border-bottom: 1px solid #e6e9ef;
98
+ vertical-align: middle;
99
+ }
100
+
101
+ &--row-small td,
102
+ &--row-small th {
103
+ padding: 0.35rem 0.6rem;
104
+ }
105
+
106
+ &--row-medium td,
107
+ &--row-medium th {
108
+ padding: 0.75rem 0.9rem;
109
+ }
110
+
111
+ &--row-large td,
112
+ &--row-large th {
113
+ padding: 1rem 1.2rem;
114
+ }
115
+
116
+ thead th {
117
+ background-color: #edf0f6;
118
+ font-weight: 600;
119
+ color: #1f252e;
120
+ letter-spacing: 0.01em;
121
+ border-bottom: 1px solid #e6e9ef;
122
+ }
123
+
124
+ tbody tr {
125
+ transition: background-color 0.18s ease;
126
+
127
+ &:hover {
128
+ background-color: #f1f4f9;
129
+ }
130
+ }
131
+
132
+ & .frg-sorting {
133
+ position: relative;
134
+ cursor: pointer;
135
+ padding-right: 1.4rem;
136
+
137
+ &::before,
138
+ &::after {
139
+ content: '';
140
+ position: absolute;
141
+ right: 0.65rem;
142
+ border-left: 4px solid transparent;
143
+ border-right: 4px solid transparent;
144
+ opacity: 0.5;
145
+ }
146
+
147
+ &::before {
148
+ top: calc(50% - 6px);
149
+ border-bottom: 5px solid currentColor;
150
+ }
151
+
152
+ &::after {
153
+ top: calc(50% + 2px);
154
+ border-top: 5px solid currentColor;
155
+ }
156
+ }
157
+
158
+ & .frg-sorting-asc::after {
159
+ opacity: 0.5;
160
+ }
161
+
162
+ & .frg-sorting-asc::before {
163
+ opacity: 1;
164
+ }
165
+
166
+ & .frg-sorting-desc::before {
167
+ opacity: 0.5;
168
+ }
169
+
170
+ & .frg-sorting-desc::after {
171
+ opacity: 1;
172
+ }
173
+
174
+ &__primary {
175
+ overflow: hidden;
176
+
177
+ & thead th,
178
+ &.frg-table thead th {
179
+ background-color: color.mix($color-primary, $color-light, 85%);
180
+ color: $color-light;
181
+ border-bottom-color: color.scale($color-primary, $lightness: 35%);
182
+ }
183
+
184
+ & tbody tr:hover {
185
+ background-color: color.mix($color-primary, $color-light, 15%);
186
+ }
187
+ }
188
+
189
+ &__secondary {
190
+ overflow: hidden;
191
+
192
+ & thead th,
193
+ &.frg-table thead th {
194
+ background-color: color.mix($color-secondary, $color-light, 85%);
195
+ color: $color-light;
196
+ border-bottom-color: color.scale($color-secondary, $lightness: 35%);
197
+ }
198
+
199
+ & tbody tr:hover {
200
+ background-color: color.mix($color-secondary, $color-light, 15%);
201
+ }
202
+ }
203
+
204
+ &__tertiary {
205
+ overflow: hidden;
206
+
207
+ & thead th,
208
+ &.frg-table thead th {
209
+ background-color: color.mix($color-tertiary, $color-light, 85%);
210
+ color: $color-light;
211
+ border-bottom-color: color.scale($color-tertiary, $lightness: 35%);
212
+ }
213
+
214
+ & tbody tr:hover {
215
+ background-color: color.mix($color-tertiary, $color-light, 15%);
216
+ }
217
+ }
218
+
219
+ &__dark {
220
+ background-color: $color-dark;
221
+ color: $color-light;
222
+
223
+ & td,
224
+ & th {
225
+ border-bottom-color: rgba($color-light, 0.12);
226
+ }
227
+
228
+ & thead th {
229
+ background-color: color.scale($color-dark, $lightness: 10%);
230
+ color: $color-light;
231
+ border-bottom-color: rgba($color-light, 0.16);
232
+ }
233
+
234
+ & tbody tr:hover {
235
+ background-color: color.scale($color-dark, $lightness: 8%);
236
+ }
237
+ }
238
+
239
+ &__light {
240
+ background-color: $color-light;
241
+ color: $color-dark;
242
+
243
+ & thead th {
244
+ background-color: $color-light;
245
+ color: $color-dark;
246
+ }
247
+
248
+ & tbody tr:hover {
249
+ background-color: #f1f4f9;
250
+ }
251
+ }
252
+ }
253
+
254
+ // Media query for responsiveness
255
+ @media screen and (max-width: $screen-md-min) {
256
+ .frg-table-responsive {
257
+ overflow: auto;
258
+ }
259
+ }