commons-shared-web-ui 0.0.62 → 0.0.63

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 (222) hide show
  1. package/fesm2022/commons-shared-web-ui.mjs +16153 -0
  2. package/fesm2022/commons-shared-web-ui.mjs.map +1 -0
  3. package/index.d.ts +5033 -0
  4. package/package.json +34 -53
  5. package/.claude/settings.local.json +0 -10
  6. package/documentation/alert.md +0 -123
  7. package/documentation/button-dropdown.md +0 -126
  8. package/documentation/button.md +0 -184
  9. package/documentation/cards-usage-guidelines.md +0 -131
  10. package/documentation/configurable-form.md +0 -605
  11. package/documentation/confirmation-modal.md +0 -250
  12. package/documentation/filter-sidebar.md +0 -178
  13. package/documentation/filter-table-selector.md +0 -228
  14. package/documentation/form-builder.md +0 -599
  15. package/documentation/form-components.md +0 -384
  16. package/documentation/form-field-configuration.md +0 -250
  17. package/documentation/nav.md +0 -427
  18. package/documentation/pagination.md +0 -181
  19. package/documentation/side-nav-documentation.md +0 -169
  20. package/documentation/smart-form.md +0 -2819
  21. package/documentation/smart-table.md +0 -1297
  22. package/documentation/snackbar.md +0 -118
  23. package/documentation/style-externalization.md +0 -88
  24. package/documentation/summary-card.md +0 -279
  25. package/documentation/table-column-configuration.md +0 -221
  26. package/documentation/time-picker.md +0 -274
  27. package/ng-package.json +0 -30
  28. package/src/lib/modules/alert/alert.models.ts +0 -6
  29. package/src/lib/modules/alert/alert.module.ts +0 -16
  30. package/src/lib/modules/alert/components/alert/alert.component.html +0 -27
  31. package/src/lib/modules/alert/components/alert/alert.component.scss +0 -92
  32. package/src/lib/modules/alert/components/alert/alert.component.ts +0 -81
  33. package/src/lib/modules/button/button.models.ts +0 -13
  34. package/src/lib/modules/button/button.module.ts +0 -16
  35. package/src/lib/modules/button/components/button/button.component.html +0 -22
  36. package/src/lib/modules/button/components/button/button.component.scss +0 -92
  37. package/src/lib/modules/button/components/button/button.component.ts +0 -67
  38. package/src/lib/modules/button-dropdown/button-dropdown.models.ts +0 -26
  39. package/src/lib/modules/button-dropdown/button-dropdown.module.ts +0 -22
  40. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.html +0 -41
  41. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.scss +0 -135
  42. package/src/lib/modules/button-dropdown/components/button-dropdown/button-dropdown.component.ts +0 -160
  43. package/src/lib/modules/configurable-form/component/configurable-form.component.html +0 -294
  44. package/src/lib/modules/configurable-form/component/configurable-form.component.scss +0 -503
  45. package/src/lib/modules/configurable-form/component/configurable-form.component.ts +0 -628
  46. package/src/lib/modules/configurable-form/configurable-form.examples.ts +0 -154
  47. package/src/lib/modules/configurable-form/configurable-form.model.ts +0 -131
  48. package/src/lib/modules/configurable-form/configurable-form.module.ts +0 -19
  49. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.html +0 -77
  50. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.scss +0 -395
  51. package/src/lib/modules/confirmation-modal/components/confirmation-modal/confirmation-modal.component.ts +0 -266
  52. package/src/lib/modules/confirmation-modal/confirmation-modal.models.ts +0 -71
  53. package/src/lib/modules/confirmation-modal/confirmation-modal.module.ts +0 -20
  54. package/src/lib/modules/filter/components/filter/filter.component.html +0 -131
  55. package/src/lib/modules/filter/components/filter/filter.component.scss +0 -245
  56. package/src/lib/modules/filter/components/filter/filter.component.ts +0 -216
  57. package/src/lib/modules/filter/filter.models.ts +0 -88
  58. package/src/lib/modules/filter/filter.module.ts +0 -24
  59. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.html +0 -112
  60. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.scss +0 -186
  61. package/src/lib/modules/filter-sidebar/components/filter-sidebar/filter-sidebar.component.ts +0 -163
  62. package/src/lib/modules/filter-sidebar/filter-sidebar.models.ts +0 -95
  63. package/src/lib/modules/filter-sidebar/filter-sidebar.module.ts +0 -24
  64. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.html +0 -73
  65. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.scss +0 -321
  66. package/src/lib/modules/filter-table-selector/components/filter-table-selector/filter-table-selector.component.ts +0 -361
  67. package/src/lib/modules/filter-table-selector/filter-table-selector.models.ts +0 -91
  68. package/src/lib/modules/filter-table-selector/filter-table-selector.module.ts +0 -22
  69. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.html +0 -63
  70. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.scss +0 -496
  71. package/src/lib/modules/form-builder/components/field-configurator/configurator-config-panel/configurator-config-panel.component.ts +0 -445
  72. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.html +0 -75
  73. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.scss +0 -210
  74. package/src/lib/modules/form-builder/components/field-configurator/configurator-tree/configurator-tree.component.ts +0 -55
  75. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.html +0 -25
  76. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.scss +0 -82
  77. package/src/lib/modules/form-builder/components/field-configurator/field-configurator.component.ts +0 -95
  78. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.html +0 -20
  79. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.scss +0 -37
  80. package/src/lib/modules/form-builder/components/field-selection/field-selection.component.ts +0 -94
  81. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.html +0 -46
  82. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.scss +0 -102
  83. package/src/lib/modules/form-builder/components/field-selection/group-node/group-node.component.ts +0 -50
  84. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.html +0 -35
  85. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.scss +0 -67
  86. package/src/lib/modules/form-builder/components/field-selection/selection-field-node/selection-field-node.component.ts +0 -34
  87. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.html +0 -68
  88. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.scss +0 -113
  89. package/src/lib/modules/form-builder/components/field-selection/selection-section-node/selection-section-node.component.ts +0 -74
  90. package/src/lib/modules/form-builder/configs/field-type-schema.map.ts +0 -533
  91. package/src/lib/modules/form-builder/form-builder.module.ts +0 -36
  92. package/src/lib/modules/form-builder/index.ts +0 -9
  93. package/src/lib/modules/form-builder/models/builder.models.ts +0 -7
  94. package/src/lib/modules/form-builder/models/field-configurator.models.ts +0 -38
  95. package/src/lib/modules/form-builder/models/field-selection.models.ts +0 -51
  96. package/src/lib/modules/form-builder/services/field-configurator.service.ts +0 -258
  97. package/src/lib/modules/form-builder/services/field-selection.service.ts +0 -299
  98. package/src/lib/modules/form-builder/services/form-schema-tree.service.ts +0 -670
  99. package/src/lib/modules/form-builder/tokens/builder.tokens.ts +0 -10
  100. package/src/lib/modules/form-builder/utils/constants.ts +0 -43
  101. package/src/lib/modules/form-components/components/checkbox/checkbox.component.html +0 -29
  102. package/src/lib/modules/form-components/components/checkbox/checkbox.component.scss +0 -111
  103. package/src/lib/modules/form-components/components/checkbox/checkbox.component.ts +0 -207
  104. package/src/lib/modules/form-components/components/checkbox/checkbox.models.ts +0 -35
  105. package/src/lib/modules/form-components/components/datepicker/datepicker.component.html +0 -42
  106. package/src/lib/modules/form-components/components/datepicker/datepicker.component.scss +0 -115
  107. package/src/lib/modules/form-components/components/datepicker/datepicker.component.ts +0 -267
  108. package/src/lib/modules/form-components/components/datepicker/datepicker.models.ts +0 -45
  109. package/src/lib/modules/form-components/components/dropdown/dropdown.component.html +0 -74
  110. package/src/lib/modules/form-components/components/dropdown/dropdown.component.scss +0 -252
  111. package/src/lib/modules/form-components/components/dropdown/dropdown.component.ts +0 -377
  112. package/src/lib/modules/form-components/components/dropdown/dropdown.models.ts +0 -53
  113. package/src/lib/modules/form-components/components/input/input.component.html +0 -51
  114. package/src/lib/modules/form-components/components/input/input.component.scss +0 -128
  115. package/src/lib/modules/form-components/components/input/input.component.ts +0 -250
  116. package/src/lib/modules/form-components/components/input/input.models.ts +0 -55
  117. package/src/lib/modules/form-components/components/radio/radio.component.html +0 -22
  118. package/src/lib/modules/form-components/components/radio/radio.component.scss +0 -107
  119. package/src/lib/modules/form-components/components/radio/radio.component.ts +0 -181
  120. package/src/lib/modules/form-components/components/radio/radio.models.ts +0 -39
  121. package/src/lib/modules/form-components/components/search/search.component.html +0 -15
  122. package/src/lib/modules/form-components/components/search/search.component.scss +0 -87
  123. package/src/lib/modules/form-components/components/search/search.component.ts +0 -213
  124. package/src/lib/modules/form-components/components/search/search.models.ts +0 -40
  125. package/src/lib/modules/form-components/components/toggle/toggle.component.html +0 -15
  126. package/src/lib/modules/form-components/components/toggle/toggle.component.scss +0 -81
  127. package/src/lib/modules/form-components/components/toggle/toggle.component.ts +0 -166
  128. package/src/lib/modules/form-components/components/toggle/toggle.models.ts +0 -27
  129. package/src/lib/modules/form-components/directives/click-outside.directive.ts +0 -22
  130. package/src/lib/modules/form-components/form-components.module.ts +0 -42
  131. package/src/lib/modules/form-field-configuration/components/_ffc-controls.scss +0 -89
  132. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.html +0 -68
  133. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.scss +0 -73
  134. package/src/lib/modules/form-field-configuration/components/config-field-node/config-field-node.component.ts +0 -34
  135. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.html +0 -78
  136. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.scss +0 -83
  137. package/src/lib/modules/form-field-configuration/components/config-section-node/config-section-node.component.ts +0 -94
  138. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.html +0 -38
  139. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.scss +0 -42
  140. package/src/lib/modules/form-field-configuration/components/form-field-configuration/form-field-configuration.component.ts +0 -92
  141. package/src/lib/modules/form-field-configuration/form-field-configuration.module.ts +0 -23
  142. package/src/lib/modules/form-field-configuration/index.ts +0 -7
  143. package/src/lib/modules/form-field-configuration/models/field-configuration.models.ts +0 -62
  144. package/src/lib/modules/form-field-configuration/services/config-schema-tree.service.ts +0 -159
  145. package/src/lib/modules/form-field-configuration/services/field-configuration.service.ts +0 -228
  146. package/src/lib/modules/material/material.module.ts +0 -94
  147. package/src/lib/modules/nav/components/nav/nav.component.html +0 -34
  148. package/src/lib/modules/nav/components/nav/nav.component.scss +0 -171
  149. package/src/lib/modules/nav/components/nav/nav.component.ts +0 -82
  150. package/src/lib/modules/nav/nav.models.ts +0 -31
  151. package/src/lib/modules/nav/nav.module.ts +0 -17
  152. package/src/lib/modules/pagination/components/pagination/pagination.component.html +0 -52
  153. package/src/lib/modules/pagination/components/pagination/pagination.component.scss +0 -155
  154. package/src/lib/modules/pagination/components/pagination/pagination.component.ts +0 -109
  155. package/src/lib/modules/pagination/pagination.module.ts +0 -17
  156. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.html +0 -56
  157. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.scss +0 -342
  158. package/src/lib/modules/side-nav/components/side-nav/side-nav.component.ts +0 -135
  159. package/src/lib/modules/side-nav/side-nav.models.ts +0 -38
  160. package/src/lib/modules/side-nav/side-nav.module.ts +0 -16
  161. package/src/lib/modules/smart-form/components/form-field/form-field.component.html +0 -1379
  162. package/src/lib/modules/smart-form/components/form-field/form-field.component.scss +0 -2255
  163. package/src/lib/modules/smart-form/components/form-field/form-field.component.ts +0 -3174
  164. package/src/lib/modules/smart-form/components/form-section/form-section.component.html +0 -67
  165. package/src/lib/modules/smart-form/components/form-section/form-section.component.scss +0 -209
  166. package/src/lib/modules/smart-form/components/form-section/form-section.component.ts +0 -142
  167. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.html +0 -253
  168. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.scss +0 -689
  169. package/src/lib/modules/smart-form/components/smart-form/smart-form.component.ts +0 -1134
  170. package/src/lib/modules/smart-form/index.ts +0 -10
  171. package/src/lib/modules/smart-form/models/form-schema.model.ts +0 -803
  172. package/src/lib/modules/smart-form/models/hierarchy-config.model.ts +0 -22
  173. package/src/lib/modules/smart-form/services/expression.service.ts +0 -75
  174. package/src/lib/modules/smart-form/services/smart-form-controller.service.ts +0 -67
  175. package/src/lib/modules/smart-form/smart-form.examples.ts +0 -1324
  176. package/src/lib/modules/smart-form/smart-form.module.ts +0 -40
  177. package/src/lib/modules/smart-form/utils/translation.utils.ts +0 -82
  178. package/src/lib/modules/smart-form/utils/trusted-url.pipe.ts +0 -25
  179. package/src/lib/modules/smart-form/utils/validation.utils.ts +0 -98
  180. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.html +0 -283
  181. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.scss +0 -685
  182. package/src/lib/modules/smart-table/components/smart-table/smart-table.component.ts +0 -1219
  183. package/src/lib/modules/smart-table/models/table-config.model.ts +0 -247
  184. package/src/lib/modules/smart-table/smart-table.module.ts +0 -30
  185. package/src/lib/modules/smart-table/utils/safe-html.pipe.ts +0 -28
  186. package/src/lib/modules/smart-table/utils/smart-table.utils.ts +0 -18
  187. package/src/lib/modules/snackbar/components/snackbar.component.html +0 -41
  188. package/src/lib/modules/snackbar/components/snackbar.component.scss +0 -99
  189. package/src/lib/modules/snackbar/components/snackbar.component.ts +0 -18
  190. package/src/lib/modules/snackbar/models/snackbar.models.ts +0 -10
  191. package/src/lib/modules/snackbar/services/snackbar.service.ts +0 -40
  192. package/src/lib/modules/snackbar/snackbar.module.ts +0 -11
  193. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.html +0 -47
  194. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.scss +0 -199
  195. package/src/lib/modules/summary-card/components/summary-card/summary-card.component.ts +0 -126
  196. package/src/lib/modules/summary-card/summary-card.module.ts +0 -18
  197. package/src/lib/modules/table-column-configuration/components/_tcc-controls.scss +0 -53
  198. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.html +0 -47
  199. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.scss +0 -50
  200. package/src/lib/modules/table-column-configuration/components/config-column-node/config-column-node.component.ts +0 -33
  201. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.html +0 -30
  202. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.scss +0 -36
  203. package/src/lib/modules/table-column-configuration/components/table-column-configuration/table-column-configuration.component.ts +0 -78
  204. package/src/lib/modules/table-column-configuration/index.ts +0 -5
  205. package/src/lib/modules/table-column-configuration/models/table-column-configuration.models.ts +0 -20
  206. package/src/lib/modules/table-column-configuration/services/table-column-configuration.service.ts +0 -77
  207. package/src/lib/modules/table-column-configuration/table-column-configuration.module.ts +0 -21
  208. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.html +0 -37
  209. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.scss +0 -102
  210. package/src/lib/modules/time-picker/components/time-picker/time-picker.component.ts +0 -178
  211. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.html +0 -78
  212. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.scss +0 -226
  213. package/src/lib/modules/time-picker/components/time-wheel-panel/time-wheel-panel.component.ts +0 -595
  214. package/src/lib/modules/time-picker/models/time-picker.models.ts +0 -49
  215. package/src/lib/modules/time-picker/time-picker.module.ts +0 -23
  216. package/src/lib/shared-ui.module.ts +0 -55
  217. package/src/lib/utils/constants.ts +0 -11
  218. package/src/lib/utils/storage.utils.ts +0 -37
  219. package/src/lib/utils/string.utils.ts +0 -23
  220. package/src/lib/utils/translation.utils.ts +0 -87
  221. package/src/public-api.ts +0 -127
  222. package/tsconfig.lib.json +0 -15
@@ -1,274 +0,0 @@
1
- # Time Picker Component (`lib-time-picker`)
2
-
3
- A highly customizable, slot-machine / drum-roll style wheel picker component that supports 12-hour or 24-hour modes, custom minute steps, disabled time range limits (`minTime` and `maxTime`), full touch interaction, and accessibility attributes.
4
-
5
- ---
6
-
7
- ## 1. Importing the Module
8
-
9
- To use the time picker in your Angular application (or within a Micro Frontend Remote MFE), import `TimePickerModule` into your Angular module:
10
-
11
- ```typescript
12
- import { NgModule } from '@angular/core';
13
- import { CommonModule } from '@angular/common';
14
- import { TimePickerModule } from 'commons-shared-web-ui';
15
-
16
- @NgModule({
17
- imports: [
18
- CommonModule,
19
- TimePickerModule
20
- ]
21
- })
22
- export class MyFeatureModule {}
23
- ```
24
-
25
- ---
26
-
27
- ## 2. Basic Component Usage
28
-
29
- ### Template-Driven Form / Two-Way Binding (`ngModel`)
30
- ```html
31
- <lib-time-picker
32
- [(ngModel)]="selectedTime"
33
- [label]="'Meeting Time'"
34
- [placeholder]="'Choose a time'"
35
- [required]="true"
36
- [mode]="'12'"
37
- [minuteStep]="15">
38
- </lib-time-picker>
39
- ```
40
-
41
- ### Reactive Forms (`formControlName`)
42
- ```html
43
- <form [formGroup]="form">
44
- <lib-time-picker
45
- [formControlName]="'startTime'"
46
- [label]="'Start Time'"
47
- [mode]="'24'"
48
- [minTime]="'08:00'"
49
- [maxTime]="'18:00'">
50
- </lib-time-picker>
51
- </form>
52
- ```
53
-
54
- ### Complete Example (Reactive Form + Events)
55
-
56
- A full working component wiring up two pickers with a time range, a minute step, and the `(timeChange)` output.
57
-
58
- ```typescript
59
- import { Component } from '@angular/core';
60
- import { FormBuilder, FormGroup, Validators } from '@angular/forms';
61
-
62
- @Component({
63
- selector: 'app-schedule-form',
64
- templateUrl: './schedule-form.component.html'
65
- })
66
- export class ScheduleFormComponent {
67
- form: FormGroup = this.fb.group({
68
- startTime: ['09:00 AM', Validators.required],
69
- endTime: ['05:00 PM', Validators.required]
70
- });
71
-
72
- constructor(private fb: FormBuilder) {}
73
-
74
- onStartChange(value: string): void {
75
- // Emitted on Confirm — "hh:mm AM|PM" (12h) or "HH:mm" (24h)
76
- console.log('Start time selected:', value);
77
- }
78
-
79
- submit(): void {
80
- if (this.form.valid) {
81
- console.log('Schedule:', this.form.value);
82
- }
83
- }
84
- }
85
- ```
86
-
87
- ```html
88
- <form [formGroup]="form" (ngSubmit)="submit()">
89
- <lib-time-picker
90
- formControlName="startTime"
91
- [label]="'Start Time'"
92
- [placeholder]="'Select start'"
93
- [required]="true"
94
- [mode]="'12'"
95
- [minuteStep]="15"
96
- [errorMessage]="form.get('startTime')?.touched && form.get('startTime')?.invalid ? 'Start time is required' : ''"
97
- (timeChange)="onStartChange($event)">
98
- </lib-time-picker>
99
-
100
- <lib-time-picker
101
- formControlName="endTime"
102
- [label]="'End Time'"
103
- [mode]="'12'"
104
- [minuteStep]="15"
105
- [minTime]="'09:00'"
106
- [maxTime]="'21:00'">
107
- </lib-time-picker>
108
-
109
- <button type="submit" [disabled]="form.invalid">Save</button>
110
- </form>
111
- ```
112
-
113
- ### Complete Example (Single `config` object)
114
-
115
- Every input can also be supplied through one `TimePickerConfig` object — handy when the config comes from JSON/i18n.
116
-
117
- ```typescript
118
- import { Component } from '@angular/core';
119
- import { TimePickerConfig } from 'commons-shared-web-ui';
120
-
121
- @Component({
122
- selector: 'app-reminder',
123
- template: `
124
- <lib-time-picker
125
- [(ngModel)]="reminderTime"
126
- [config]="pickerConfig"
127
- (timeChange)="reminderTime = $event">
128
- </lib-time-picker>
129
- `
130
- })
131
- export class ReminderComponent {
132
- reminderTime = '';
133
-
134
- pickerConfig: TimePickerConfig = {
135
- label: 'Daily Reminder',
136
- placeholder: 'Pick a time',
137
- mode: '24',
138
- minuteStep: 5, // 0/1 = every minute; > 0 adds the break
139
- required: true,
140
- minTime: '06:00',
141
- maxTime: '23:30'
142
- };
143
- }
144
- ```
145
-
146
- ---
147
-
148
- ## 3. Configuration Properties
149
-
150
- ### Inputs
151
- | Input | Type | Default | Description |
152
- | --- | --- | --- | --- |
153
- | `config` | `TimePickerConfig` | `undefined` | Unified configuration object that mirrors individual inputs. |
154
- | `labels` | `TimePickerLabels` | `undefined` | i18n label map keys. |
155
- | `label` | `string` | `""` | The label text displayed above the trigger input. |
156
- | `placeholder` | `string` | `""` | Placeholder text shown inside the input when no time is selected. |
157
- | `mode` | `'12' \| '24'` | `'12'` | Hour display format. `'12'` shows a AM/PM column, while `'24'` runs from 00-23. |
158
- | `minuteStep` | `number` | `0` | Increment for the minutes column. `0` (or `1`) shows every minute `00–59` with no break; a value greater than `0` adds the step break (e.g. `15` → `00, 15, 30, 45`). |
159
- | `disabled` | `boolean` | `false` | Disables the trigger field, blocking popup opening. |
160
- | `required` | `boolean` | `false` | Appends a red asterisk to the field label. |
161
- | `errorMessage` | `string` | `""` | Validation error message text. |
162
- | `minTime` | `string` | `undefined` | Minimum allowed limit in 24hr `"HH:mm"` string format (e.g., `"09:30"`). |
163
- | `maxTime` | `string` | `undefined` | Maximum allowed limit in 24hr `"HH:mm"` string format (e.g., `"17:00"`). |
164
-
165
- ### `TimePickerLabels` Properties
166
- When passing the `[labels]` input, you can provide any of the following fields (all optional, falling back to English defaults):
167
-
168
- | Property | Type | Default | Description |
169
- | --- | --- | --- | --- |
170
- | `selectTimeTitle` | `string` | `'Select Time'` | The subtle header title printed at the top of the dialog. |
171
- | `hourLabel` | `string` | `'Hour'` | Header label shown above the hour column. |
172
- | `minuteLabel` | `string` | `'Minute'` | Header label shown above the minute column. |
173
- | `periodLabel` | `string` | `'AM/PM'` | Header label shown above the AM/PM column (12h mode only). |
174
- | `confirmLabel` | `string` | `'Confirm'` | Confirm button text. |
175
- | `cancelLabel` | `string` | `'Cancel'` | Cancel button text. |
176
-
177
- ### Outputs
178
- | Output | Type | Description |
179
- | --- | --- | --- |
180
- | `timeChange` | `EventEmitter<string>` | Emitted when a time is confirmed and closed. Emits `"hh:mm AM\|PM"` for `'12'` mode, or `"HH:mm"` for `'24'` mode. |
181
-
182
- ---
183
-
184
- ## 4. Styling & Customization in MFEs
185
-
186
- The time-picker has two main styling options: the **Default (Black/Grey)** scheme (matching Image 2) and the **Blue Accent** scheme. These are easily set via the theme mixin or global CSS variables.
187
-
188
- ### Variant Options (SCSS)
189
-
190
- #### Option 1: Default (Black/Grey Theme — Image 2)
191
- The default theme features black text active indicators, borderless wheels, a light-grey center highlight bar, a black Confirm button, and a light-grey Cancel button.
192
-
193
- ```scss
194
- @use 'commons-shared-web-ui/lib/modules/time-picker/time-picker.theme' as tp;
195
-
196
- :root {
197
- @include tp.time-picker-theme();
198
- }
199
- ```
200
-
201
- #### Option 2: Blue Accent Variant
202
- The blue accent theme uses the same layout and headers, but changes highlights, preview text, active wheel items, and buttons to use the blue accent color.
203
-
204
- ```scss
205
- @use 'commons-shared-web-ui/lib/modules/time-picker/time-picker.theme' as tp;
206
-
207
- :root {
208
- @include tp.time-picker-theme((
209
- accent: #4D89EB,
210
- accent-light: rgba(77, 137, 235, 0.08),
211
- accent-border: rgba(77, 137, 235, 0.15),
212
- btn-confirm-bg: #4D89EB,
213
- btn-confirm-hover: #3b74d1,
214
- btn-cancel-bg: transparent,
215
- btn-cancel-border: #e5e7eb,
216
- btn-cancel-hover: #e5e7eb
217
- ));
218
- }
219
- ```
220
-
221
- You can style the trigger inputs and picker wheels using two different methods: using Scss Mixins or CSS Custom Properties.
222
-
223
- ### Method A: Including Theme Mixin inside MFE Component SCSS
224
-
225
- To scope the theme changes inside a specific feature component or the main MFE root stylesheet, use the `@use` rule to import the SCSS file and `@include` the mixin:
226
-
227
- ```scss
228
- // remote-mfe/src/app/feature/feature.component.scss
229
-
230
- @use 'commons-shared-web-ui/lib/modules/time-picker/time-picker.theme' as tp;
231
-
232
- // Apply default theme to component scope
233
- :host {
234
- @include tp.time-picker-theme();
235
- }
236
-
237
- // OR customize theme properties:
238
- .custom-theme-picker {
239
- @include tp.time-picker-theme((
240
- accent: #C21E25, // Crimson Red brand color
241
- accent-light: rgba(194, 30, 37, 0.08),
242
- accent-border: rgba(194, 30, 37, 0.15),
243
- btn-confirm-bg: #C21E25,
244
- btn-confirm-hover: #a1141a,
245
- border-radius: 8px
246
- ));
247
- }
248
- ```
249
-
250
- ### Method B: Overriding CSS Custom Properties directly
251
-
252
- If you prefer not to include mixins, you can set the CSS variables directly in your MFE stylesheet:
253
-
254
- ```css
255
- /* remote-mfe/src/styles.scss */
256
- :root {
257
- --cc-timepicker-accent: #C21E25;
258
- --cc-timepicker-accent-light: rgba(194, 30, 37, 0.08);
259
- --cc-timepicker-accent-border: rgba(194, 30, 37, 0.15);
260
- --cc-timepicker-btn-confirm-bg: #C21E25;
261
- --cc-timepicker-btn-confirm-hover: #a1141a;
262
- --cc-timepicker-border-radius: 8px;
263
- }
264
- ```
265
-
266
- ---
267
-
268
- ## 5. Constraint Engine Enforcement
269
-
270
- When `minTime` and/or `maxTime` is specified:
271
- 1. Slices of time that violate the boundaries are **automatically greyed out** (`opacity: 0.25`) and have pointer events disabled.
272
- 2. Clicking on a disabled item will not trigger selection.
273
- 3. Flicking or scrolling past a disabled value snaps to the **closest valid item** automatically.
274
- 4. Changing the AM/PM column to a period where the current hour is disabled triggers an automatic visual snap transition to a valid hour.
package/ng-package.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
3
- "dest": "./dist/commons-shared-web-ui",
4
- "lib": {
5
- "entryFile": "src/public-api.ts"
6
- },
7
- "assets": [
8
- "src/lib/styles/global.scss",
9
- "src/lib/styles/utilities.scss",
10
- "src/lib/modules/pagination/pagination.theme.scss",
11
- "src/lib/modules/summary-card/summary-card.theme.scss",
12
- "src/lib/modules/button/button.theme.scss",
13
- "src/lib/modules/alert/alert.theme.scss",
14
- "src/lib/modules/confirmation-modal/confirmation-modal.theme.scss",
15
- "src/lib/modules/filter-sidebar/filter-sidebar.theme.scss",
16
- "src/lib/modules/filter/filter.theme.scss",
17
- "src/lib/modules/nav/nav.theme.scss",
18
- "src/lib/modules/configurable-form/configurable-form.theme.scss",
19
- "src/lib/modules/form-components/form-components.theme.scss",
20
- "src/lib/modules/form-components/**/_theme.scss",
21
- "src/lib/modules/smart-table/smart-table.theme.scss",
22
- "src/lib/modules/smart-form/smart-form.theme.scss",
23
- "src/lib/modules/side-nav/side-nav.theme.scss",
24
- "src/lib/modules/form-builder/form-builder.theme.scss",
25
- "src/lib/modules/filter-table-selector/filter-table-selector.theme.scss",
26
- "src/lib/modules/snackbar/snackbar.theme.scss",
27
- "src/lib/modules/button-dropdown/button-dropdown.theme.scss",
28
- "src/lib/modules/time-picker/time-picker.theme.scss"
29
- ]
30
- }
@@ -1,6 +0,0 @@
1
- export type AlertVariant = 'info' | 'warning' | 'warning-shadow' | 'success' | 'error';
2
- export type IconInput = boolean | string | { type: 'material' | 'fontawesome' | 'img'; value: string };
3
-
4
- export interface AlertLabels {
5
- iconAltText?: string;
6
- }
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { AlertComponent } from './components/alert/alert.component';
4
-
5
- @NgModule({
6
- declarations: [
7
- AlertComponent
8
- ],
9
- imports: [
10
- CommonModule
11
- ],
12
- exports: [
13
- AlertComponent
14
- ]
15
- })
16
- export class AlertModule { }
@@ -1,27 +0,0 @@
1
- <div class="cc-alert" [ngClass]="'cc-alert-' + variant" [style.width]="width" [style.height]="height"
2
- [style.border-radius]="borderRadius" [style.border-top-left-radius]="borderTopLeftRadius"
3
- [style.border-top-right-radius]="borderTopRightRadius" [style.border-bottom-left-radius]="borderBottomLeftRadius"
4
- [style.border-bottom-right-radius]="borderBottomRightRadius" [style.padding]="padding" [style.gap]="gap"
5
- [style.background-color]="backgroundColor" [style.color]="color" [style.border-color]="borderColor"
6
- [style.font-size]="fontSize" [style.font-weight]="fontWeight" [style.box-shadow]="boxShadow">
7
-
8
- <div class="cc-alert-icon" *ngIf="icon">
9
- <i *ngIf="customIcon" [ngClass]="customIcon"></i>
10
- <i *ngIf="!customIcon && isDefaultIcon" [ngClass]="defaultIconClass"></i>
11
- <i *ngIf="!customIcon && isStringIcon && !isImgIcon" [ngClass]="iconString"></i>
12
- <img *ngIf="!customIcon && isStringIcon && isImgIcon" [src]="iconString"
13
- [attr.alt]="labels?.iconAltText || 'alert icon'" />
14
- <ng-container *ngIf="isObjectIcon">
15
- <i *ngIf="iconObject.type === 'fontawesome'" [ngClass]="iconObject.value"></i>
16
- <span *ngIf="iconObject.type === 'material'" class="material-icons">{{ iconObject.value }}</span>
17
- <img *ngIf="iconObject.type === 'img'" [src]="iconObject.value"
18
- [attr.alt]="labels?.iconAltText || 'alert icon'" />
19
- </ng-container>
20
- </div>
21
-
22
- <div class="cc-alert-content">
23
- <div class="cc-alert-title" *ngIf="title">{{ title }}</div>
24
- <div class="cc-alert-message" *ngIf="message">{{ message }}</div>
25
- <ng-content></ng-content>
26
- </div>
27
- </div>
@@ -1,92 +0,0 @@
1
- .cc-alert {
2
- display: flex;
3
- align-items: flex-start;
4
- width: 100%;
5
- padding: var(--cc-alert-padding, 1rem 2rem);
6
- border-radius: var(--cc-alert-radius, 0.75rem);
7
- gap: var(--cc-alert-gap, 1rem);
8
- box-sizing: border-box;
9
- font-family: var(--cc-alert-font-family, inherit);
10
-
11
- .cc-alert-icon {
12
- font-size: var(--cc-alert-icon-size, 1.25rem);
13
- flex-shrink: 0;
14
- margin-top: var(--cc-alert-icon-margin-top, 0.125rem);
15
-
16
- img {
17
- width: var(--cc-alert-icon-size, 1.25rem);
18
- height: var(--cc-alert-icon-size, 1.25rem);
19
- object-fit: contain;
20
- }
21
- }
22
-
23
- .cc-alert-content {
24
- display: flex;
25
- flex-direction: column;
26
- gap: 0.25rem; // Keeping small internal gap as is, or could be a var
27
- flex-grow: 1;
28
-
29
- .cc-alert-title {
30
- font-weight: 700;
31
- font-size: var(--cc-alert-title-size, 1rem);
32
- line-height: var(--cc-alert-title-line-height, 1.5rem);
33
- }
34
-
35
- .cc-alert-message {
36
- font-size: var(--cc-alert-message-size, 0.875rem);
37
- line-height: 200%; // Relative unit is fine
38
- opacity: 0.9;
39
- }
40
- }
41
-
42
- // Variants
43
- &.cc-alert-info {
44
- background-color: var(--cc-alert-info-bg);
45
- color: var(--cc-alert-info-color);
46
-
47
- .cc-alert-icon {
48
- color: #5F6368;
49
- }
50
- }
51
-
52
- &.cc-alert-warning {
53
- background-color: var(--cc-alert-warning-bg);
54
- color: var(--cc-alert-warning-color);
55
-
56
- .cc-alert-title {
57
- color: var(--cc-alert-warning-title-color);
58
- }
59
-
60
- .cc-alert-icon {
61
- color: var(--cc-alert-warning-title-color);
62
- }
63
- }
64
-
65
- &.cc-alert-warning-shadow {
66
- background-color: var(--cc-alert-warning-bg);
67
- color: var(--cc-alert-warning-color);
68
- box-shadow: var(--cc-alert-warning-shadow);
69
-
70
- .cc-alert-title {
71
- color: var(--cc-alert-warning-title-color);
72
- }
73
-
74
- .cc-alert-icon {
75
- color: var(--cc-alert-warning-title-color);
76
- }
77
- }
78
-
79
- &.cc-alert-success {
80
- background-color: var(--cc-alert-success-bg);
81
- color: var(--cc-alert-success-color);
82
- }
83
-
84
- &.cc-alert-error {
85
- background-color: var(--cc-alert-error-bg);
86
- color: var(--cc-alert-error-color);
87
-
88
- .cc-alert-icon {
89
- color: var(--cc-alert-error-color);
90
- }
91
- }
92
- }
@@ -1,81 +0,0 @@
1
- import { Component, Input, OnInit } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { AlertLabels, AlertVariant, IconInput } from '../../alert.models';
4
-
5
- @Component({
6
- selector: 'lib-alert',
7
- templateUrl: './alert.component.html',
8
- styleUrls: ['./alert.component.scss'],
9
- standalone: false
10
- })
11
- export class AlertComponent implements OnInit {
12
- @Input() variant: AlertVariant = 'info';
13
- @Input() title: string = '';
14
- @Input() message: string = '';
15
- @Input() icon: IconInput = true;
16
- @Input() customIcon: string = ''; // New input for custom class
17
- @Input() labels?: AlertLabels;
18
-
19
- // Customization Inputs
20
- @Input() width?: string;
21
- @Input() height?: string;
22
- @Input() borderRadius?: string;
23
- @Input() padding?: string;
24
- @Input() gap?: string;
25
- @Input() backgroundColor?: string;
26
- @Input() color?: string; // New input for custom text color
27
- @Input() borderColor?: string;
28
- @Input() fontSize?: string;
29
- @Input() fontWeight?: string;
30
- @Input() boxShadow?: string;
31
-
32
- // Granular Border Radius Customization
33
- @Input() borderTopLeftRadius?: string;
34
- @Input() borderTopRightRadius?: string;
35
- @Input() borderBottomLeftRadius?: string;
36
- @Input() borderBottomRightRadius?: string;
37
-
38
- constructor() { }
39
-
40
- ngOnInit(): void {
41
- }
42
-
43
- get isDefaultIcon(): boolean {
44
- return this.icon === true;
45
- }
46
-
47
- get isStringIcon(): boolean {
48
- return typeof this.icon === 'string';
49
- }
50
-
51
- get isObjectIcon(): boolean {
52
- return typeof this.icon === 'object' && this.icon !== null;
53
- }
54
-
55
- get iconString(): string {
56
- return typeof this.icon === 'string' ? this.icon : '';
57
- }
58
-
59
- get isImgIcon(): boolean {
60
- const icon = this.icon;
61
- if (typeof icon === 'string') {
62
- return icon.includes('/') || icon.includes('.') || icon.startsWith('http');
63
- }
64
- return typeof icon === 'object' && icon !== null && icon.type === 'img';
65
- }
66
-
67
- get iconObject(): { type: string; value: string } {
68
- return typeof this.icon === 'object' ? this.icon as any : { type: '', value: '' };
69
- }
70
-
71
- get defaultIconClass(): string {
72
- switch (this.variant) {
73
- case 'success': return 'fa-solid fa-circle-check';
74
- case 'warning':
75
- case 'warning-shadow': return 'fa-solid fa-triangle-exclamation';
76
- case 'error': return 'fa-solid fa-triangle-exclamation';
77
- case 'info':
78
- default: return 'fa-solid fa-circle-info';
79
- }
80
- }
81
- }
@@ -1,13 +0,0 @@
1
- export type ButtonVariant =
2
- | 'primary'
3
- | 'warning'
4
- | 'outline'
5
- | 'secondary'
6
- | 'success'
7
- | 'danger'
8
- | 'danger-outline'
9
- | 'text';
10
-
11
- export interface ButtonLabels {
12
- iconAltText?: string;
13
- }
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ButtonComponent } from './components/button/button.component';
4
-
5
- @NgModule({
6
- declarations: [
7
- ButtonComponent
8
- ],
9
- imports: [
10
- CommonModule
11
- ],
12
- exports: [
13
- ButtonComponent
14
- ]
15
- })
16
- export class ButtonModule { }
@@ -1,22 +0,0 @@
1
- <button [type]="type" [disabled]="disabled" class="cc-btn" [ngClass]="'cc-btn-' + variant" [style.width]="width"
2
- [style.height]="height" [style.border-radius]="borderRadius" [style.font-size]="fontSize"
3
- [style.font-weight]="fontWeight" [style.background-color]="backgroundColor" [style.color]="color"
4
- [style.border]="border">
5
- <div class="cc-btn-icon-wrapper" *ngIf="icon">
6
- <!-- String Icons -->
7
- <ng-container *ngIf="isStringIcon">
8
- <i *ngIf="!isImgIcon" [ngClass]="iconString" class="cc-btn-icon"></i>
9
- <img *ngIf="isImgIcon" [src]="iconString" [attr.alt]="labels?.iconAltText || 'button icon'"
10
- class="cc-btn-icon cc-btn-img-icon" />
11
- </ng-container>
12
-
13
- <!-- Object Icons -->
14
- <ng-container *ngIf="isObjectIcon">
15
- <i *ngIf="iconObject.type === 'fontawesome'" [ngClass]="iconObject.value" class="cc-btn-icon"></i>
16
- <span *ngIf="iconObject.type === 'material'" class="material-icons cc-btn-icon">{{ iconObject.value }}</span>
17
- <img *ngIf="iconObject.type === 'img'" [src]="iconObject.value" [attr.alt]="labels?.iconAltText || 'button icon'"
18
- class="cc-btn-icon cc-btn-img-icon" />
19
- </ng-container>
20
- </div>
21
- <ng-content></ng-content>
22
- </button>
@@ -1,92 +0,0 @@
1
- .cc-btn {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- box-sizing: border-box;
6
- cursor: pointer;
7
- transition: all 0.2s ease-in-out;
8
- // Space icon ↔ label via flex gap rather than a fixed margin. A whitespace-only
9
- // projected label produces no flex item (per the flexbox spec), so an icon-only
10
- // button (empty label) gets no stray spacing and the icon stays centered.
11
- gap: 0.5rem;
12
- height:100%;
13
-
14
- // Common styles from variables
15
- font-family: var(--cc-btn-font-family);
16
- font-weight: var(--cc-btn-font-weight);
17
- font-size: var(--cc-btn-font-size);
18
- padding: var(--cc-btn-padding);
19
-
20
- // Disabled State
21
- &:disabled {
22
- opacity: var(--cc-btn-disabled-opacity);
23
- cursor: var(--cc-btn-disabled-cursor);
24
- pointer-events: none;
25
- }
26
-
27
- // Variants
28
- &.cc-btn-primary {
29
- background-color: var(--cc-btn-primary-bg);
30
- color: var(--cc-btn-primary-color);
31
- border-radius: var(--cc-btn-primary-radius);
32
- border: var(--cc-btn-primary-border);
33
- }
34
-
35
- &.cc-btn-warning {
36
- background-color: var(--cc-btn-warning-bg);
37
- color: var(--cc-btn-warning-color);
38
- border-radius: var(--cc-btn-warning-radius);
39
- border: var(--cc-btn-warning-border);
40
- }
41
-
42
- &.cc-btn-outline {
43
- background-color: var(--cc-btn-outline-bg);
44
- color: var(--cc-btn-outline-color);
45
- border-radius: var(--cc-btn-outline-radius);
46
- border: var(--cc-btn-outline-border);
47
- }
48
-
49
- &.cc-btn-secondary {
50
- background-color: var(--cc-btn-secondary-bg);
51
- color: var(--cc-btn-secondary-color);
52
- border-radius: var(--cc-btn-secondary-radius);
53
- border: var(--cc-btn-secondary-border);
54
- }
55
-
56
- &.cc-btn-success {
57
- background-color: var(--cc-btn-success-bg);
58
- color: var(--cc-btn-success-color);
59
- border-radius: var(--cc-btn-success-radius);
60
- border: var(--cc-btn-success-border);
61
- }
62
-
63
- &.cc-btn-danger {
64
- background-color: var(--cc-btn-danger-bg);
65
- color: var(--cc-btn-danger-color);
66
- border-radius: var(--cc-btn-danger-radius);
67
- border: var(--cc-btn-danger-border);
68
- }
69
-
70
- &.cc-btn-danger-outline {
71
- background-color: var(--cc-btn-danger-outline-bg);
72
- color: var(--cc-btn-danger-outline-color);
73
- border-radius: var(--cc-btn-danger-outline-radius);
74
- border: var(--cc-btn-danger-outline-border);
75
- }
76
-
77
- .cc-btn-icon-wrapper {
78
- display: inline-flex;
79
- align-items: center;
80
- }
81
-
82
- .cc-btn-icon {
83
- font-size: 1.1em;
84
- line-height: 1;
85
- }
86
-
87
- .cc-btn-img-icon {
88
- width: 1.25rem;
89
- height: 1.25rem;
90
- object-fit: contain;
91
- }
92
- }