tailjng 0.1.6 → 0.1.7

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 (176) hide show
  1. package/README.md +12 -4
  2. package/cli/execute/init-app.js +5 -2
  3. package/cli/execute/sync-app.js +14 -2
  4. package/cli/settings/colors-config-utils.js +43 -8
  5. package/cli/settings/icons-config-utils.js +62 -0
  6. package/cli/settings/path-utils.js +32 -2
  7. package/cli/settings/project-utils.js +7 -1
  8. package/cli/templates/app.generator.js +2 -2
  9. package/fesm2022/tailjng.mjs +247 -80
  10. package/fesm2022/tailjng.mjs.map +1 -1
  11. package/lib/services/static/theme.service.d.ts +39 -1
  12. package/lib/utils/theme/theme-variables.util.d.ts +31 -0
  13. package/package.json +1 -1
  14. package/public-api.d.ts +2 -1
  15. package/registry/components.json +41 -18
  16. package/src/colors.safelist.css +2 -2
  17. package/src/lib/components/.config/README.md +11 -0
  18. package/src/lib/components/.config/colors/README.md +38 -0
  19. package/src/lib/components/{colors-config → .config/colors}/colors.config.ts +5 -5
  20. package/src/lib/components/{colors-config → .config/colors}/colors.safelist.css +2 -2
  21. package/src/lib/components/.config/icons/README.md +26 -0
  22. package/src/lib/components/.config/icons/icons.lucide.ts +134 -0
  23. package/src/lib/components/.config/input/README.md +24 -0
  24. package/src/lib/components/.config/input/input.classes.ts +119 -0
  25. package/src/lib/components/alert/alert-dialog/dialog-alert.component.css +244 -2
  26. package/src/lib/components/alert/alert-dialog/dialog-alert.component.html +25 -38
  27. package/src/lib/components/alert/alert-dialog/dialog-alert.component.ts +66 -56
  28. package/src/lib/components/alert/alert-dialog/dialog-alert.types.ts +19 -0
  29. package/src/lib/components/alert/alert-toast/toast-alert.component.css +630 -12
  30. package/src/lib/components/alert/alert-toast/toast-alert.component.html +103 -102
  31. package/src/lib/components/alert/alert-toast/toast-alert.component.ts +485 -128
  32. package/src/lib/components/alert/alert-toast/toast-alert.types.ts +25 -0
  33. package/src/lib/components/badge/badge.component.html +34 -21
  34. package/src/lib/components/badge/badge.component.ts +140 -31
  35. package/src/lib/components/button/button.component.html +16 -10
  36. package/src/lib/components/button/button.component.ts +162 -22
  37. package/src/lib/components/card/card-complete/complete-card.component.html +2 -2
  38. package/src/lib/components/card/card-complete/complete-card.component.ts +26 -16
  39. package/src/lib/components/card/card-crud-complete/complete-crud-card.component.html +2 -2
  40. package/src/lib/components/card/card-crud-complete/complete-crud-card.component.ts +26 -16
  41. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.css +97 -0
  42. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.html +54 -46
  43. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.ts +135 -64
  44. package/src/lib/components/checkbox/checkbox-input/input-checkbox.types.ts +3 -0
  45. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.css +112 -0
  46. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.html +28 -25
  47. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.ts +67 -15
  48. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.types.ts +1 -0
  49. package/src/lib/components/coach-mark/coach-mark.component.html +4 -22
  50. package/src/lib/components/coach-mark/coach-mark.component.scss +1 -1
  51. package/src/lib/components/coach-mark/coach-mark.component.ts +51 -18
  52. package/src/lib/components/coach-mark/coach-mark.directive.ts +133 -78
  53. package/src/lib/components/coach-mark/coach-mark.types.ts +12 -0
  54. package/src/lib/components/dialog/dialog.component.css +103 -1
  55. package/src/lib/components/dialog/dialog.component.html +46 -66
  56. package/src/lib/components/dialog/dialog.component.ts +136 -110
  57. package/src/lib/components/dialog/dialog.types.ts +19 -0
  58. package/src/lib/components/filter/filter-complete/complete-filter.component.html +16 -19
  59. package/src/lib/components/filter/filter-complete/complete-filter.component.scss +35 -0
  60. package/src/lib/components/filter/filter-complete/complete-filter.component.ts +58 -34
  61. package/src/lib/components/filter/filter-complete/complete-filter.types.ts +7 -0
  62. package/src/lib/components/filter/filter-complete/complete-filter.util.ts +16 -0
  63. package/src/lib/components/form/form-container/container-form.component.css +4 -0
  64. package/src/lib/components/form/form-container/container-form.component.html +2 -2
  65. package/src/lib/components/form/form-container/container-form.component.ts +72 -16
  66. package/src/lib/components/form/form-container/container-form.types.ts +42 -0
  67. package/src/lib/components/form/form-container/form-col-span.directive.ts +25 -0
  68. package/src/lib/components/form/form-sidebar/sidebar-form.component.css +276 -0
  69. package/src/lib/components/form/form-sidebar/sidebar-form.component.html +117 -125
  70. package/src/lib/components/form/form-sidebar/sidebar-form.component.ts +109 -34
  71. package/src/lib/components/form/form-sidebar/sidebar-form.types.ts +3 -0
  72. package/src/lib/components/{toggle-radio/toggle-radio.component.css → form/form-validation/validation-form.component.css} +0 -1
  73. package/src/lib/components/form/form-validation/validation-form.component.html +10 -6
  74. package/src/lib/components/form/form-validation/validation-form.component.ts +99 -12
  75. package/src/lib/components/form/form-validation/validation-form.types.ts +33 -0
  76. package/src/lib/components/icon/icon.component.html +8 -5
  77. package/src/lib/components/icon/icon.component.ts +111 -9
  78. package/src/lib/components/input/input/input.component.html +19 -16
  79. package/src/lib/components/input/input/input.component.ts +130 -53
  80. package/src/lib/components/input/input/input.types.ts +8 -0
  81. package/src/lib/components/input/input-file/file-input.component.html +65 -56
  82. package/src/lib/components/input/input-file/file-input.component.ts +276 -173
  83. package/src/lib/components/input/input-file/file-input.types.ts +2 -0
  84. package/src/lib/components/input/input-range/range-input.component.css +67 -0
  85. package/src/lib/components/input/input-range/range-input.component.html +50 -58
  86. package/src/lib/components/input/input-range/range-input.component.ts +148 -60
  87. package/src/lib/components/input/input-range/range-input.types.ts +7 -0
  88. package/src/lib/components/input/input-textarea/textarea-input.component.html +16 -7
  89. package/src/lib/components/input/input-textarea/textarea-input.component.ts +140 -50
  90. package/src/lib/components/input/input-textarea/textarea-input.types.ts +2 -0
  91. package/src/lib/components/label/label.component.html +17 -16
  92. package/src/lib/components/label/label.component.ts +70 -16
  93. package/src/lib/components/label/label.types.ts +2 -0
  94. package/src/lib/components/menu/menu-options-table/menu-options-defaults.ts +34 -0
  95. package/src/lib/components/menu/menu-options-table/options-table-menu.component.html +34 -20
  96. package/src/lib/components/menu/menu-options-table/options-table-menu.component.ts +211 -58
  97. package/src/lib/components/menu/menu-options-table/options-table-menu.types.ts +38 -0
  98. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.html +49 -52
  99. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.ts +112 -24
  100. package/src/lib/components/menu/options-coach-menu/options-coach-menu.types.ts +9 -0
  101. package/src/lib/components/mode-toggle/mode-toggle.component.html +11 -16
  102. package/src/lib/components/mode-toggle/mode-toggle.component.ts +69 -33
  103. package/src/lib/components/paginator/paginator-complete/complete-paginator.component.html +4 -4
  104. package/src/lib/components/paginator/paginator-complete/complete-paginator.component.ts +31 -7
  105. package/src/lib/components/paginator/paginator-complete/complete-paginator.types.ts +12 -0
  106. package/src/lib/components/paginator/paginator-complete/complete-paginator.util.ts +36 -0
  107. package/src/lib/components/progress-bar/progress-bar.component.css +11 -0
  108. package/src/lib/components/progress-bar/progress-bar.component.html +41 -40
  109. package/src/lib/components/progress-bar/progress-bar.component.ts +95 -11
  110. package/src/lib/components/progress-bar/progress-bar.types.ts +2 -0
  111. package/src/lib/components/select/select-dropdown/dropdown-select.component.css +6 -0
  112. package/src/lib/components/select/select-dropdown/dropdown-select.component.html +54 -44
  113. package/src/lib/components/select/select-dropdown/dropdown-select.component.ts +450 -509
  114. package/src/lib/components/select/select-dropdown/dropdown-select.types.ts +43 -0
  115. package/src/lib/components/select/select-dropdown/dropdown-select.util.ts +179 -0
  116. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.component.css +6 -0
  117. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.component.html +131 -42
  118. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.component.ts +491 -475
  119. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.types.ts +22 -0
  120. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.util.ts +20 -0
  121. package/src/lib/components/select/select-multi-table/multi-table-select.component.css +10 -0
  122. package/src/lib/components/select/select-multi-table/multi-table-select.component.html +76 -60
  123. package/src/lib/components/select/select-multi-table/multi-table-select.component.ts +250 -313
  124. package/src/lib/components/select/select-multi-table/multi-table-select.types.ts +10 -0
  125. package/src/lib/components/select/select-multi-table/multi-table-select.util.ts +5 -0
  126. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.css +212 -0
  127. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.html +62 -53
  128. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.ts +84 -27
  129. package/src/lib/components/sidebar/sidebar-static/static-sidebar.types.ts +2 -0
  130. package/src/lib/components/table/table-complete/complete-table.component.html +15 -17
  131. package/src/lib/components/table/table-complete/complete-table.component.ts +190 -338
  132. package/src/lib/components/table/table-complete/complete-table.types.ts +28 -0
  133. package/src/lib/components/table/table-complete/complete-table.util.ts +236 -0
  134. package/src/lib/components/table/table-complete/index.ts +2 -0
  135. package/src/lib/components/table/table-crud-complete/complete-crud-table.animations.ts +34 -0
  136. package/src/lib/components/table/table-crud-complete/complete-crud-table.component.html +73 -128
  137. package/src/lib/components/table/table-crud-complete/complete-crud-table.component.ts +542 -829
  138. package/src/lib/components/table/table-crud-complete/complete-crud-table.types.ts +57 -0
  139. package/src/lib/components/table/table-crud-complete/complete-crud-table.util.ts +723 -0
  140. package/src/lib/components/table/table-crud-complete/index.ts +3 -0
  141. package/src/lib/components/theme-generator/theme-generator.component.css +21 -0
  142. package/src/lib/components/theme-generator/theme-generator.component.html +146 -116
  143. package/src/lib/components/theme-generator/theme-generator.component.ts +44 -24
  144. package/src/lib/components/toggle-radio/shared/toggle-options.types.ts +8 -0
  145. package/src/lib/components/toggle-radio/shared/toggle-options.util.ts +44 -0
  146. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.css +135 -0
  147. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.html +52 -0
  148. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.ts +198 -0
  149. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.types.ts +1 -0
  150. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.css +108 -0
  151. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.html +37 -0
  152. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.ts +193 -0
  153. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.types.ts +1 -0
  154. package/src/lib/components/tooltip/tooltip.directive.ts +12 -9
  155. package/src/lib/components/tooltip/tooltip.service.ts +331 -133
  156. package/src/lib/components/tooltip/tooltip.types.ts +9 -0
  157. package/src/lib/components/viewer/viewer-image/image-viewer.component.css +90 -4
  158. package/src/lib/components/viewer/viewer-image/image-viewer.component.html +52 -103
  159. package/src/lib/components/viewer/viewer-image/image-viewer.component.ts +182 -177
  160. package/src/lib/components/viewer/viewer-image/image-viewer.types.ts +3 -0
  161. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.css +177 -0
  162. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.html +74 -24
  163. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.ts +168 -15
  164. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.types.ts +1 -0
  165. package/src/styles.css +2 -2
  166. package/lib/services/static/icons.service.d.ts +0 -65
  167. package/src/lib/components/colors-config/README.md +0 -38
  168. package/src/lib/components/form/form-sidebar/sidebar-form.component.scss +0 -0
  169. package/src/lib/components/form/form-validation/validation-form.component.scss +0 -0
  170. package/src/lib/components/menu/menu-options-table/options-table-menu.component.scss +0 -0
  171. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.scss +0 -12
  172. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.scss +0 -0
  173. package/src/lib/components/toggle-radio/toggle-radio.component.html +0 -51
  174. package/src/lib/components/toggle-radio/toggle-radio.component.ts +0 -222
  175. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.scss +0 -0
  176. package/tailjng-0.1.6.tgz +0 -0
@@ -0,0 +1,22 @@
1
+ import type {
2
+ DropdownOption,
3
+ DropdownSelectDefaultFilters,
4
+ DropdownSelectDynamicParams,
5
+ DropdownSelectType,
6
+ DropdownSortOrder,
7
+ } from '../select-dropdown/dropdown-select.types';
8
+
9
+ /** Static options or API-backed searchable multi-select. */
10
+ export type MultiDropdownSelectType = DropdownSelectType;
11
+
12
+ /** Sort order for searchable API requests. */
13
+ export type MultiDropdownSortOrder = DropdownSortOrder;
14
+
15
+ /** Normalized option shown in the multi-select panel. */
16
+ export type MultiDropdownOption<TOriginal = unknown> = DropdownOption<TOriginal>;
17
+
18
+ /** Placeholder map for `{param}` segments in {@link JMultiDropdownSelectComponent.endpoint}. */
19
+ export type MultiDropdownSelectDynamicParams = DropdownSelectDynamicParams;
20
+
21
+ /** Default filters sent as `filter[key]` query params (searchable mode). */
22
+ export type MultiDropdownSelectDefaultFilters = DropdownSelectDefaultFilters;
@@ -0,0 +1,20 @@
1
+ export {
2
+ DROPDOWN_PANEL_DEFAULTS,
3
+ filterOptionsBySearch,
4
+ getNestedValue,
5
+ mapObjectOptions,
6
+ mapPrimitiveOptions,
7
+ positionDropdownPanel,
8
+ rebuildEndpointUrl,
9
+ resetDropdownPanelStyles,
10
+ resolveOptionLabel,
11
+ } from '../select-dropdown/dropdown-select.util';
12
+
13
+ /** Coerces numeric strings to numbers so checkbox matching stays stable. */
14
+ export function normalizeMultiDropdownValue(value: unknown): unknown {
15
+ if (typeof value === 'string' && value.trim() !== '' && !Number.isNaN(Number(value))) {
16
+ return Number(value);
17
+ }
18
+
19
+ return value;
20
+ }
@@ -0,0 +1,10 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ }
5
+
6
+ /* Floating panel — coordinates set in TS via positionDropdownPanel */
7
+ .jdropdown-panel {
8
+ position: fixed;
9
+ z-index: 1100;
10
+ }
@@ -1,73 +1,89 @@
1
+ <!-- Trigger -->
1
2
  <div class="relative w-full h-full">
2
- <div #selectButton class="min-w-[40px] max-[400px]:min-w-[30px]" >
3
- <JButton
4
- (clicked)="toggleColumnSelector()"
5
- classes="secondary"
6
- [icon]="btnIcon"
7
- [disabled]="isDisabled"
8
- [ngClasses]="getButtonNgClass()"
9
- >
10
- {{btnText}}
11
- </JButton>
12
- </div>
3
+ <div #selectButton class="min-w-[40px] max-[400px]:min-w-[30px]">
4
+ <JButton
5
+ (clicked)="toggleColumnSelector()"
6
+ classes="secondary"
7
+ [icon]="btnIcon"
8
+ [disabled]="isDisabled"
9
+ [ngClasses]="getButtonNgClass()"
10
+ >
11
+ {{ btnText }}
12
+ </JButton>
13
+ </div>
13
14
  </div>
14
15
 
15
- <!-- Dropdown positioned outside the flow -->
16
+ <!-- Floating panel (position: fixed see dropdown-select.util) -->
16
17
  @if (isColumnSelectorOpen) {
17
- <div @modalTransition
18
- class="absolute z-[100] min-w-[250px] max-w-[250px] mt-1 bg-background dark:bg-dark-background rounded-lg shadow-lg border border-border border-dark-border"
19
- [style.width.px]="dropdownWidth"
20
- [style.top.px]="dropdownTop"
21
- [style.left.px]="dropdownLeft"
22
- [ngClass]="getButtonNgClass()"
23
- >
24
- <div class="pt-1 pl-3 pr-3 pb-3">
25
- <div class="text-[10px] font-medium text-gray-500 dark:text-gray-500 mb-1">{{title}}</div>
18
+ <div
19
+ #dropdownPanel
20
+ @modalTransition
21
+ class="jdropdown-panel min-w-[250px] max-w-[250px] bg-background dark:bg-dark-background rounded-lg shadow-lg border border-border border-dark-border"
22
+ [style.width.px]="dropdownWidth"
23
+ >
24
+ <div class="pt-1 pl-3 pr-3 pb-3">
25
+ <div class="text-[10px] font-medium text-gray-500 dark:text-gray-500 mb-1">
26
+ {{ title }}
27
+ </div>
26
28
 
27
- <div class="max-h-60 max-[400px]:max-h-48 overflow-auto flex flex-col gap-1 scroll-element">
28
- @for (column of columns; track column.key) {
29
- <div onKeyDown
30
- class="flex gap-5 items-center border border-accent dark:border-dark-accent/50 px-4 py-2 cursor-pointer group rounded-md transition-all hover:bg-accent/50 hover:dark:bg-dark-accent/40"
31
- [ngClass]="{'bg-accent! dark:bg-dark-accent/80!' : column.visible}"
32
- (click)="toggleColumnVisibility(column)"
33
- >
34
- <input type="checkbox" [id]="'col-' + column.key" [(ngModel)]="column.visible" class="hidden" >
29
+ <div
30
+ class="jdropdown-options-list max-h-60 max-[400px]:max-h-48 overflow-auto flex flex-col gap-1 scroll-element"
31
+ >
32
+ @for (column of columns; track column.key) {
33
+ <div
34
+ onKeyDown
35
+ class="flex gap-5 items-center border border-accent dark:border-dark-accent/50 px-4 py-2 cursor-pointer group rounded-md transition-all hover:bg-accent/50 hover:dark:bg-dark-accent/40"
36
+ [ngClass]="{ 'bg-accent! dark:bg-dark-accent/80!': column.visible }"
37
+ (click)="toggleColumnVisibility(column)"
38
+ >
39
+ <input
40
+ type="checkbox"
41
+ [id]="'col-' + column.key"
42
+ [(ngModel)]="column.visible"
43
+ class="hidden"
44
+ />
35
45
 
36
- @if (column.visible) {
37
- <lucide-icon [name]="iconsService.icons.check" size="15" class="transition text-black dark:text-white" />
38
- } @else {
39
- <lucide-icon [name]="iconsService.icons.squareDashedMousePointer" size="15" class="transition text-black dark:text-white opacity-40" />
40
- }
46
+ @if (column.visible) {
47
+ <JIcon
48
+ [icon]="Icons.Check"
49
+ [size]="15"
50
+ iconClass="transition text-black dark:text-white"
51
+ [ariaHidden]="true"
52
+ />
53
+ } @else {
54
+ <JIcon
55
+ [icon]="Icons.SquareDashedMousePointer"
56
+ [size]="15"
57
+ iconClass="transition text-black dark:text-white opacity-40"
58
+ [ariaHidden]="true"
59
+ />
60
+ }
41
61
 
42
- <label [for]="'col-' + column.key"
43
- class="text-black dark:text-white text-sm max-[400px]:text-[12px] font-medium w-full cursor-pointer">
44
- {{ column.label }}
45
- </label>
46
- </div>
47
- }
62
+ <label
63
+ [for]="'col-' + column.key"
64
+ class="text-black dark:text-white text-sm max-[400px]:text-[12px] font-medium w-full cursor-pointer"
65
+ >
66
+ {{ column.label }}
67
+ </label>
68
+ </div>
69
+ }
48
70
 
49
- @if (columns.length === 0) {
50
- <div class="px-3 py-2 text-sm text-gray-500">No hay columnas disponibles</div>
51
- }
52
- </div>
71
+ @if (columns.length === 0) {
72
+ <div class="px-3 py-2 text-sm text-gray-500">No hay columnas disponibles</div>
73
+ }
74
+ </div>
53
75
 
54
- @if (showActions) {
55
- <div class="mt-3 pt-2 border-t border-border dark:border-dark-border flex gap-2 justify-center">
56
- <JButton onKeyPress
57
- (click)="selectAllColumns()"
58
- classes="primary text-[10px]"
59
- >
60
- Mostrar todo
61
- </JButton>
76
+ @if (showActions) {
77
+ <div class="mt-3 pt-2 border-t border-border dark:border-dark-border flex gap-2 justify-center">
78
+ <JButton onKeyPress (click)="selectAllColumns()" classes="primary text-[10px]">
79
+ Mostrar todo
80
+ </JButton>
62
81
 
63
- <JButton onKeyPress
64
- (click)="deselectAllColumns()"
65
- classes="secondary text-[10px]"
66
- >
67
- Ocultar todo
68
- </JButton>
69
- </div>
70
- }
82
+ <JButton onKeyPress (click)="deselectAllColumns()" classes="secondary text-[10px]">
83
+ Ocultar todo
84
+ </JButton>
71
85
  </div>
86
+ }
72
87
  </div>
88
+ </div>
73
89
  }