@morozeckiy/dd-lib 0.1.1 → 0.1.2

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 (227) hide show
  1. package/esm2022/lib/common/lib-common-button.mjs +62 -0
  2. package/esm2022/lib/common/lib-common-input-text.mjs +172 -0
  3. package/esm2022/lib/core/dialog/dialog-config.mjs +15 -0
  4. package/esm2022/lib/core/dialog/dialog-container.component.mjs +40 -0
  5. package/esm2022/lib/core/dialog/dialog-ref.mjs +19 -0
  6. package/esm2022/lib/core/dialog/dialog.service.mjs +106 -0
  7. package/esm2022/lib/core/directives/auto-height.directive.mjs +36 -0
  8. package/esm2022/lib/core/directives/click-outside.directive.mjs +42 -0
  9. package/esm2022/lib/core/directives/counter.directive.mjs +64 -0
  10. package/esm2022/lib/core/directives/declension.directive.mjs +40 -0
  11. package/esm2022/lib/core/directives/resize-textarea.directive.mjs +26 -0
  12. package/esm2022/lib/core/directives/triangle.directive.mjs +75 -0
  13. package/esm2022/lib/core/index.mjs +26 -0
  14. package/esm2022/lib/core/pipes/filter-tabs.pipe.mjs +31 -0
  15. package/esm2022/lib/core/pipes/filter.pipe.mjs +49 -0
  16. package/esm2022/lib/core/pipes/highlight.pipe.mjs +23 -0
  17. package/esm2022/lib/core/pipes/reverse.pipe.mjs +17 -0
  18. package/esm2022/lib/core/pipes/safe.pipe.mjs +34 -0
  19. package/esm2022/lib/core/services/date.service.mjs +113 -0
  20. package/esm2022/lib/core/services/destroy.service.mjs +15 -0
  21. package/esm2022/lib/core/services/fetcher.service.mjs +92 -0
  22. package/esm2022/lib/core/services/interceptors.service.mjs +27 -0
  23. package/esm2022/lib/core/services/svg-icons.service.mjs +26 -0
  24. package/esm2022/lib/core/services/theme-constructor.service.mjs +64 -0
  25. package/esm2022/lib/core/services/validators.service.mjs +73 -0
  26. package/esm2022/lib/core/tools.mjs +128 -0
  27. package/esm2022/lib/core/tooltip/tooltip.component.mjs +27 -0
  28. package/esm2022/lib/core/tooltip/tooltip.directive.mjs +137 -0
  29. package/esm2022/lib/lib-accordion/lib-accordion.component.mjs +15 -0
  30. package/esm2022/lib/lib-back-button/lib-back-button.component.mjs +37 -0
  31. package/esm2022/lib/lib-button/lib-button.component.mjs +30 -0
  32. package/esm2022/lib/lib-calendar/lib-calendar.component.mjs +222 -0
  33. package/esm2022/lib/lib-card/lib-card.component.mjs +34 -0
  34. package/esm2022/lib/lib-checkbox/lib-checkbox.component.mjs +66 -0
  35. package/esm2022/lib/lib-comment-input/lib-comment-input.component.mjs +20 -0
  36. package/esm2022/lib/lib-file-upload/lib-file-upload.component.mjs +34 -0
  37. package/esm2022/lib/lib-filter-button/lib-filter-button.component.mjs +42 -0
  38. package/esm2022/lib/lib-image-loader/lib-image-loader.component.mjs +14 -0
  39. package/esm2022/lib/lib-input/lib-input.component.mjs +55 -0
  40. package/esm2022/lib/lib-loader/lib-loader.component.mjs +16 -0
  41. package/esm2022/lib/lib-period/lib-period.component.mjs +114 -0
  42. package/esm2022/lib/lib-radio/lib-radio.component.mjs +76 -0
  43. package/esm2022/lib/lib-search-input/lib-search-input.component.mjs +91 -0
  44. package/esm2022/lib/lib-select/lib-select.component.mjs +137 -0
  45. package/esm2022/lib/lib-skeleton/lib-skeleton.component.mjs +45 -0
  46. package/esm2022/lib/lib-sort/lib-sort.component.mjs +44 -0
  47. package/esm2022/lib/lib-step/lib-step.component.mjs +19 -0
  48. package/esm2022/lib/lib-svg/lib-svg.component.mjs +75 -0
  49. package/esm2022/lib/lib-svg-icon/lib-svg-icon.component.mjs +55 -0
  50. package/esm2022/lib/lib-tabs-fragment/lib-tabs-fragment.component.mjs +79 -0
  51. package/esm2022/lib/lib-textarea/lib-textarea.component.mjs +50 -0
  52. package/esm2022/lib/toast/toast-base/toast-base.component.mjs +29 -0
  53. package/esm2022/lib/toast/toast-placeholder/toast-placeholder.component.mjs +29 -0
  54. package/esm2022/lib/toast/toast.service.mjs +124 -0
  55. package/esm2022/lib/utils/decorators.mjs +102 -0
  56. package/esm2022/morozeckiy-dd-lib.mjs +5 -0
  57. package/esm2022/public-api.mjs +35 -0
  58. package/fesm2022/morozeckiy-dd-lib.mjs +3004 -0
  59. package/fesm2022/morozeckiy-dd-lib.mjs.map +1 -0
  60. package/index.d.ts +5 -0
  61. package/lib/common/lib-common-button.d.ts +20 -0
  62. package/lib/common/lib-common-input-text.d.ts +53 -0
  63. package/lib/core/dialog/dialog-config.d.ts +14 -0
  64. package/lib/core/dialog/dialog-container.component.d.ts +18 -0
  65. package/lib/core/dialog/dialog-ref.d.ts +18 -0
  66. package/lib/core/dialog/dialog.service.d.ts +28 -0
  67. package/lib/core/directives/auto-height.directive.d.ts +11 -0
  68. package/lib/core/directives/click-outside.directive.d.ts +11 -0
  69. package/lib/core/directives/counter.directive.d.ts +11 -0
  70. package/lib/core/directives/declension.directive.d.ts +13 -0
  71. package/lib/core/directives/resize-textarea.directive.d.ts +10 -0
  72. package/lib/core/directives/triangle.directive.d.ts +16 -0
  73. package/lib/core/index.d.ts +20 -0
  74. package/lib/core/pipes/filter-tabs.pipe.d.ts +7 -0
  75. package/lib/core/pipes/filter.pipe.d.ts +12 -0
  76. package/lib/core/pipes/highlight.pipe.d.ts +7 -0
  77. package/lib/core/pipes/reverse.pipe.d.ts +7 -0
  78. package/lib/core/pipes/safe.pipe.d.ts +10 -0
  79. package/lib/core/services/date.service.d.ts +41 -0
  80. package/lib/core/services/destroy.service.d.ts +8 -0
  81. package/lib/core/services/fetcher.service.d.ts +29 -0
  82. package/lib/core/services/interceptors.service.d.ts +12 -0
  83. package/lib/core/services/svg-icons.service.d.ts +9 -0
  84. package/lib/core/services/theme-constructor.service.d.ts +27 -0
  85. package/lib/core/services/validators.service.d.ts +18 -0
  86. package/lib/core/tools.d.ts +16 -0
  87. package/lib/core/tooltip/tooltip.component.d.ts +12 -0
  88. package/lib/core/tooltip/tooltip.directive.d.ts +22 -0
  89. package/lib/lib-accordion/lib-accordion.component.d.ts +8 -0
  90. package/lib/lib-back-button/lib-back-button.component.d.ts +13 -0
  91. package/lib/lib-button/lib-button.component.d.ts +10 -0
  92. package/lib/lib-calendar/lib-calendar.component.d.ts +76 -0
  93. package/lib/lib-card/lib-card.component.d.ts +16 -0
  94. package/lib/lib-checkbox/lib-checkbox.component.d.ts +23 -0
  95. package/lib/lib-comment-input/lib-comment-input.component.d.ts +8 -0
  96. package/lib/lib-file-upload/lib-file-upload.component.d.ts +12 -0
  97. package/lib/lib-filter-button/lib-filter-button.component.d.ts +13 -0
  98. package/lib/lib-image-loader/lib-image-loader.component.d.ts +6 -0
  99. package/lib/lib-input/lib-input.component.d.ts +13 -0
  100. package/lib/lib-loader/lib-loader.component.d.ts +6 -0
  101. package/lib/lib-period/lib-period.component.d.ts +41 -0
  102. package/lib/lib-radio/lib-radio.component.d.ts +25 -0
  103. package/lib/lib-search-input/lib-search-input.component.d.ts +29 -0
  104. package/lib/lib-select/lib-select.component.d.ts +30 -0
  105. package/lib/lib-skeleton/lib-skeleton.component.d.ts +16 -0
  106. package/lib/lib-sort/lib-sort.component.d.ts +18 -0
  107. package/lib/lib-step/lib-step.component.d.ts +7 -0
  108. package/{src/lib/lib-svg/lib-svg.component.ts → lib/lib-svg/lib-svg.component.d.ts} +38 -66
  109. package/lib/lib-svg-icon/lib-svg-icon.component.d.ts +18 -0
  110. package/lib/lib-tabs-fragment/lib-tabs-fragment.component.d.ts +29 -0
  111. package/lib/lib-textarea/lib-textarea.component.d.ts +13 -0
  112. package/lib/toast/toast-base/toast-base.component.d.ts +21 -0
  113. package/lib/toast/toast-placeholder/toast-placeholder.component.d.ts +12 -0
  114. package/lib/toast/toast.service.d.ts +35 -0
  115. package/lib/utils/decorators.d.ts +4 -0
  116. package/package.json +16 -3
  117. package/public-api.d.ts +30 -0
  118. package/ekgip-dd-lib-0.0.1.tgz +0 -0
  119. package/ng-package.json +0 -8
  120. package/src/lib/common/lib-common-button.ts +0 -34
  121. package/src/lib/common/lib-common-input-text.ts +0 -154
  122. package/src/lib/core/dialog/dialog-config.ts +0 -19
  123. package/src/lib/core/dialog/dialog-container.component.ts +0 -38
  124. package/src/lib/core/dialog/dialog-ref.ts +0 -28
  125. package/src/lib/core/dialog/dialog.service.ts +0 -144
  126. package/src/lib/core/directives/auto-height.directive.ts +0 -29
  127. package/src/lib/core/directives/click-outside.directive.ts +0 -33
  128. package/src/lib/core/directives/counter.directive.ts +0 -54
  129. package/src/lib/core/directives/declension.directive.ts +0 -29
  130. package/src/lib/core/directives/resize-textarea.directive.ts +0 -16
  131. package/src/lib/core/directives/triangle.directive.ts +0 -56
  132. package/src/lib/core/index.ts +0 -27
  133. package/src/lib/core/pipes/filter-tabs.pipe.ts +0 -25
  134. package/src/lib/core/pipes/filter.pipe.ts +0 -36
  135. package/src/lib/core/pipes/highlight.pipe.ts +0 -17
  136. package/src/lib/core/pipes/reverse.pipe.ts +0 -11
  137. package/src/lib/core/pipes/safe.pipe.ts +0 -37
  138. package/src/lib/core/services/date.service.ts +0 -153
  139. package/src/lib/core/services/destroy.service.ts +0 -10
  140. package/src/lib/core/services/fetcher.service.ts +0 -109
  141. package/src/lib/core/services/interceptors.service.ts +0 -26
  142. package/src/lib/core/services/svg-icons.service.ts +0 -25
  143. package/src/lib/core/services/theme-constructor.service.ts +0 -68
  144. package/src/lib/core/services/validators.service.ts +0 -73
  145. package/src/lib/core/tools.ts +0 -159
  146. package/src/lib/core/tooltip/tooltip.component.html +0 -10
  147. package/src/lib/core/tooltip/tooltip.component.scss +0 -59
  148. package/src/lib/core/tooltip/tooltip.component.ts +0 -27
  149. package/src/lib/core/tooltip/tooltip.directive.ts +0 -137
  150. package/src/lib/core/utils.ts +0 -28
  151. package/src/lib/lib-accordion/lib-accordion.component.html +0 -15
  152. package/src/lib/lib-accordion/lib-accordion.component.scss +0 -23
  153. package/src/lib/lib-accordion/lib-accordion.component.ts +0 -17
  154. package/src/lib/lib-back-button/lib-back-button.component.html +0 -4
  155. package/src/lib/lib-back-button/lib-back-button.component.scss +0 -3
  156. package/src/lib/lib-back-button/lib-back-button.component.ts +0 -31
  157. package/src/lib/lib-button/lib-button.component.html +0 -30
  158. package/src/lib/lib-button/lib-button.component.scss +0 -89
  159. package/src/lib/lib-button/lib-button.component.ts +0 -33
  160. package/src/lib/lib-calendar/lib-calendar.component.html +0 -64
  161. package/src/lib/lib-calendar/lib-calendar.component.scss +0 -88
  162. package/src/lib/lib-calendar/lib-calendar.component.ts +0 -227
  163. package/src/lib/lib-card/lib-card.component.html +0 -23
  164. package/src/lib/lib-card/lib-card.component.scss +0 -64
  165. package/src/lib/lib-card/lib-card.component.ts +0 -32
  166. package/src/lib/lib-checkbox/lib-checkbox.component.html +0 -15
  167. package/src/lib/lib-checkbox/lib-checkbox.component.scss +0 -80
  168. package/src/lib/lib-checkbox/lib-checkbox.component.ts +0 -67
  169. package/src/lib/lib-comment-input/lib-comment-input.component.html +0 -32
  170. package/src/lib/lib-comment-input/lib-comment-input.component.scss +0 -28
  171. package/src/lib/lib-comment-input/lib-comment-input.component.ts +0 -20
  172. package/src/lib/lib-file-upload/lib-file-upload.component.html +0 -14
  173. package/src/lib/lib-file-upload/lib-file-upload.component.scss +0 -3
  174. package/src/lib/lib-file-upload/lib-file-upload.component.ts +0 -26
  175. package/src/lib/lib-filter-button/lib-filter-button.component.html +0 -46
  176. package/src/lib/lib-filter-button/lib-filter-button.component.scss +0 -62
  177. package/src/lib/lib-filter-button/lib-filter-button.component.ts +0 -45
  178. package/src/lib/lib-image-loader/lib-image-loader.component.html +0 -17
  179. package/src/lib/lib-image-loader/lib-image-loader.component.scss +0 -6
  180. package/src/lib/lib-image-loader/lib-image-loader.component.ts +0 -16
  181. package/src/lib/lib-input/lib-input.component.html +0 -32
  182. package/src/lib/lib-input/lib-input.component.scss +0 -72
  183. package/src/lib/lib-input/lib-input.component.ts +0 -62
  184. package/src/lib/lib-loader/lib-loader.component.html +0 -29
  185. package/src/lib/lib-loader/lib-loader.component.scss +0 -26
  186. package/src/lib/lib-loader/lib-loader.component.ts +0 -13
  187. package/src/lib/lib-period/lib-period.component.html +0 -41
  188. package/src/lib/lib-period/lib-period.component.scss +0 -77
  189. package/src/lib/lib-period/lib-period.component.ts +0 -131
  190. package/src/lib/lib-radio/lib-radio.component.html +0 -22
  191. package/src/lib/lib-radio/lib-radio.component.scss +0 -113
  192. package/src/lib/lib-radio/lib-radio.component.ts +0 -78
  193. package/src/lib/lib-search-input/lib-search-input.component.html +0 -48
  194. package/src/lib/lib-search-input/lib-search-input.component.scss +0 -86
  195. package/src/lib/lib-search-input/lib-search-input.component.ts +0 -94
  196. package/src/lib/lib-select/lib-select.component.html +0 -83
  197. package/src/lib/lib-select/lib-select.component.scss +0 -130
  198. package/src/lib/lib-select/lib-select.component.ts +0 -152
  199. package/src/lib/lib-skeleton/lib-skeleton.component.html +0 -11
  200. package/src/lib/lib-skeleton/lib-skeleton.component.scss +0 -36
  201. package/src/lib/lib-skeleton/lib-skeleton.component.ts +0 -41
  202. package/src/lib/lib-sort/lib-sort.component.html +0 -21
  203. package/src/lib/lib-sort/lib-sort.component.scss +0 -21
  204. package/src/lib/lib-sort/lib-sort.component.ts +0 -52
  205. package/src/lib/lib-step/lib-step.component.html +0 -4
  206. package/src/lib/lib-step/lib-step.component.scss +0 -23
  207. package/src/lib/lib-step/lib-step.component.ts +0 -14
  208. package/src/lib/lib-svg/lib-svg.component.html +0 -15
  209. package/src/lib/lib-svg/lib-svg.component.scss +0 -81
  210. package/src/lib/lib-svg-icon/lib-svg-icon.component.css +0 -0
  211. package/src/lib/lib-svg-icon/lib-svg-icon.component.ts +0 -58
  212. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.html +0 -12
  213. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.scss +0 -19
  214. package/src/lib/lib-tabs-fragment/lib-tabs-fragment.component.ts +0 -88
  215. package/src/lib/lib-textarea/lib-textarea.component.html +0 -37
  216. package/src/lib/lib-textarea/lib-textarea.component.scss +0 -77
  217. package/src/lib/lib-textarea/lib-textarea.component.ts +0 -49
  218. package/src/lib/toast/toast-base/toast-base.component.html +0 -7
  219. package/src/lib/toast/toast-base/toast-base.component.scss +0 -44
  220. package/src/lib/toast/toast-base/toast-base.component.ts +0 -38
  221. package/src/lib/toast/toast-placeholder/toast-placeholder.component.ts +0 -20
  222. package/src/lib/toast/toast.service.ts +0 -130
  223. package/src/lib/utils/decorators.ts +0 -124
  224. package/src/public-api.ts +0 -35
  225. package/tsconfig.lib.json +0 -14
  226. package/tsconfig.lib.prod.json +0 -10
  227. package/tsconfig.spec.json +0 -14
@@ -1,131 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- EventEmitter,
5
- forwardRef,
6
- Input,
7
- OnInit,
8
- Output,
9
- } from '@angular/core';
10
- import { LibCardComponent } from '../lib-card/lib-card.component';
11
- import { LibFilterButtonComponent } from '../lib-filter-button/lib-filter-button.component';
12
- import { LibRadioComponent } from '../lib-radio/lib-radio.component';
13
-
14
- import { LibCalendarComponent } from '../lib-calendar/lib-calendar.component';
15
- import { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
16
-
17
- import { format } from 'date-fns';
18
- import {ClickOutsideDirective, DateService, DEFAULT_FORMAT, GetDateBy, PeriodMenuDate, PeriodName} from "../core";
19
-
20
- @Component({
21
- selector: 'dd-lib-period',
22
- standalone: true,
23
- imports: [
24
- LibCardComponent,
25
- LibFilterButtonComponent,
26
- LibRadioComponent,
27
- LibCalendarComponent,
28
- FormsModule,
29
- ClickOutsideDirective,
30
- ],
31
-
32
- templateUrl: './lib-period.component.html',
33
- styleUrl: './lib-period.component.scss',
34
- changeDetection: ChangeDetectionStrategy.OnPush,
35
- providers: [
36
- {
37
- provide: NG_VALUE_ACCESSOR,
38
- useExisting: forwardRef(() => LibPeriodComponent),
39
- multi: true,
40
- },
41
- ],
42
- })
43
- export class LibPeriodComponent implements OnInit, ControlValueAccessor {
44
- public static idCounter = 1;
45
- @Input() public maxDate: Date | undefined;
46
- @Output() public setPeriodDate = new EventEmitter<{ [key in keyof GetDateBy]: string } | null>();
47
-
48
- public periodMenu: PeriodMenuDate[] | undefined;
49
- public periodIsShown = false;
50
- public calendarIsShown = false;
51
- public periodIsSelected = false;
52
- public calendarIsSelected = false;
53
- public selectedPeriod: PeriodName | undefined;
54
- public selectedDate: Date | undefined;
55
- public idPeriod!: string;
56
- public idCalendar!: string;
57
- private onTouchedCallback: (() => void) | undefined;
58
-
59
- constructor(private dateService: DateService) {}
60
-
61
- public ngOnInit(): void {
62
- this.idPeriod = 'period-wrapper-' + LibPeriodComponent.idCounter++;
63
- this.idCalendar = 'calendar-wrapper-' + LibPeriodComponent.idCounter++;
64
- this.periodMenu = this.dateService.getPeriodMenu();
65
- }
66
-
67
- public registerOnChange(fn: any): void {
68
- this.propagateChange = fn;
69
- }
70
-
71
- public registerOnTouched(fn: any): void {
72
- this.onTouchedCallback = fn;
73
- }
74
-
75
- public showPeriod(): void {
76
- this.periodIsShown = !this.periodIsShown;
77
- this.calendarIsShown = !!this.selectedDate;
78
- }
79
-
80
- public clearPeriod(): void {
81
- this.periodIsSelected = false;
82
- this.calendarIsSelected = false;
83
- this.periodIsShown = false;
84
- this.calendarIsShown = false;
85
- this.selectedPeriod = undefined;
86
- this.selectedDate = undefined;
87
- this.setPeriodDate.emit(null);
88
- }
89
-
90
- public selectPeriod(type: keyof GetDateBy): void {
91
- this.periodIsShown = false;
92
- this.calendarIsShown = false;
93
- this.periodIsSelected = true;
94
- this.calendarIsSelected = false;
95
- const date = this.dateService.getFormattedDate(type);
96
- this.propagateChange(type);
97
- this.setPeriodDate.emit({ [type]: date });
98
- }
99
-
100
- public writeValue(value: any): void {
101
- this.selectedPeriod = value;
102
- }
103
-
104
- public selectDate($event: Date | undefined): void {
105
- this.calendarIsShown = false;
106
- if ($event) {
107
- this.selectedPeriod = 'calendar';
108
- this.propagateChange(this.selectedPeriod);
109
- this.periodIsShown = false;
110
- this.periodIsSelected = false;
111
- this.calendarIsSelected = true;
112
- this.setPeriodDate.emit({ calendar: format($event, DEFAULT_FORMAT) });
113
- } else {
114
- this.selectedDate = undefined;
115
- this.setPeriodDate.emit(null);
116
- if (!this.selectedPeriod) {
117
- this.periodIsSelected = false;
118
- }
119
- this.calendarIsSelected = false;
120
- }
121
- }
122
-
123
- public clickOutside($event: boolean): void {
124
- this.periodIsShown = $event;
125
- if (this.periodIsShown && !$event) {
126
- this.calendarIsShown = $event;
127
- }
128
- }
129
-
130
- private propagateChange(value: PeriodName) {}
131
- }
@@ -1,22 +0,0 @@
1
- <label [for]="radioId" class="radio">
2
- <input
3
- (change)="onSelected($event.target)"
4
- [attr.aria-checked]="checked"
5
- [attr.tabIndex]="disabled ? -1 : 0"
6
- [attr.value]="value"
7
- [checked]="checked"
8
- [disabled]="disabled"
9
- [id]="radioId"
10
- [name]="name"
11
- [ngClass]="{ disabled: disabled }"
12
- [required]="required"
13
- class="radio-input"
14
- role="radio"
15
- type="radio" />
16
- <div [class.focused]="focused" class="mark-wrap">
17
- <div class="radio-button"></div>
18
- </div>
19
- <div class="label-wrap">
20
- <span><ng-content></ng-content></span>
21
- </div>
22
- </label>
@@ -1,113 +0,0 @@
1
-
2
- :host {
3
- outline: none;
4
- }
5
-
6
- .radio {
7
- display: flex;
8
- align-items: center;
9
- position: relative;
10
- font-size: 16px;
11
- cursor: pointer;
12
- }
13
-
14
- .radio-input {
15
- opacity: 0;
16
- position: absolute;
17
- z-index: -1;
18
-
19
- &:focus {
20
- opacity: 1;
21
- width: 24px;
22
- height: 24px;
23
- left: 0;
24
- top: 0;
25
- margin: 0;
26
- border-color: #000;
27
- }
28
-
29
- &:focus:not(:focus-visible) {
30
- opacity: 0;
31
- border: 0;
32
- outline: 0;
33
- margin: 0;
34
- width: inherit;
35
- height: inherit;
36
- }
37
-
38
- &:checked ~ .label-wrap {
39
- font-weight: bold;
40
- }
41
-
42
- &:checked + .mark-wrap {
43
- border: 2px solid var(--radio-active-color);
44
-
45
- .radio-button {
46
- background-color: var(--radio-active-color);
47
- border: 2px solid #fff;
48
- width: 16px;
49
- height: 16px;
50
- }
51
- }
52
-
53
- &:checked:disabled + .mark-wrap,
54
- &:checked:disabled:hover + .mark-wrap {
55
- border-color: var(--radio-disabled);
56
- cursor: default;
57
-
58
- .radio-button {
59
- cursor: default;
60
- background-color: var(--radio-disabled);
61
- border: 2px solid #fff;
62
- }
63
- }
64
-
65
- &:disabled + .mark-wrap,
66
- &:disabled:hover + .mark-wrap {
67
- border-color: var(--radio-disabled);
68
- cursor: default;
69
-
70
- .radio-button {
71
- cursor: default;
72
- border: 2px solid #fff;
73
- }
74
- }
75
-
76
- &:hover + .mark-wrap {
77
- border-color: #1c1c1c;
78
-
79
- .radio-button {
80
- border-color: #1c1c1c;
81
- }
82
- }
83
-
84
- &:checked:hover + .mark-wrap {
85
- cursor: pointer;
86
- border: 2px solid var(--radio-hover-color);
87
-
88
- .radio-button {
89
- cursor: pointer;
90
- background-color: var(--radio-hover-color);
91
- border: 2px solid #fff;
92
- }
93
- }
94
- }
95
-
96
- .mark-wrap {
97
- border-radius: 100%;
98
- border: 1px solid #d7d7d7;
99
- background: #fff;
100
- margin-right: 12px;
101
- }
102
-
103
- .radio-button {
104
- box-sizing: border-box;
105
- border-radius: 100%;
106
- width: 18px;
107
- height: 18px;
108
- }
109
-
110
- .label-wrap {
111
- display: inline-block;
112
- line-height: 19px;
113
- }
@@ -1,78 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- EventEmitter,
5
- forwardRef,
6
- Input,
7
- OnInit,
8
- Output,
9
- } from '@angular/core';
10
- import { CommonModule } from '@angular/common';
11
- import { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
12
-
13
- @Component({
14
- selector: 'dd-lib-radio',
15
- standalone: true,
16
- imports: [CommonModule, FormsModule, ReactiveFormsModule],
17
- templateUrl: './lib-radio.component.html',
18
- styleUrl: './lib-radio.component.scss',
19
- changeDetection: ChangeDetectionStrategy.OnPush,
20
- providers: [
21
- {
22
- provide: NG_VALUE_ACCESSOR,
23
- useExisting: forwardRef(() => LibRadioComponent),
24
- multi: true,
25
- },
26
- ],
27
- })
28
- export class LibRadioComponent implements OnInit, ControlValueAccessor {
29
- public static idCounter = 1;
30
-
31
- @Input() public radioId: string | undefined; // input ID: если не указан, генерируется уникальный ID
32
- @Input() public disabled = false; // состояние: по умолчанию - активное
33
- @Input() public required = false;
34
- @Input() public name: string | undefined;
35
- @Input() public value: any;
36
- @Input() public checked = false;
37
-
38
- @Output() public changed = new EventEmitter();
39
-
40
- public focused: boolean | undefined;
41
- public onTouchedCallback: (() => void) | undefined;
42
- private modelInitialization = true;
43
-
44
- public ngOnInit() {
45
- if (!this.radioId) {
46
- this.radioId = 'dd-radio-' + LibRadioComponent.idCounter++;
47
- }
48
- }
49
-
50
- public onSelected(target: EventTarget | null) {
51
- this.checked = (target as HTMLInputElement)?.checked;
52
- this.propagateChange(this.value);
53
- this.changed.emit(this.value);
54
- }
55
-
56
- public registerOnChange(fn: any): void {
57
- this.propagateChange = fn;
58
- }
59
-
60
- public setDisabledState(disabled: boolean): void {
61
- this.disabled = disabled;
62
- }
63
-
64
- public registerOnTouched(fn: any): void {
65
- this.onTouchedCallback = fn;
66
- }
67
-
68
- public writeValue(value: any): void {
69
- const isInitialization = this.modelInitialization;
70
- this.modelInitialization = false;
71
- if (this.checked !== undefined && value === undefined && isInitialization) {
72
- return;
73
- }
74
- this.checked = value === this.value;
75
- }
76
-
77
- private propagateChange(_value: any) {}
78
- }
@@ -1,48 +0,0 @@
1
- <div class="lib-search-input">
2
- <label [for]="id" class="lib-search-input__title">
3
- {{ label }}
4
- @if (required) {
5
- <dd-lib-svg-icon icon="error_hint"></dd-lib-svg-icon>
6
- }
7
- </label>
8
- <div class="pos-relative">
9
- <dd-lib-svg-icon (click)="forceChange()" class="search-icon" icon="search"></dd-lib-svg-icon>
10
- <input
11
- #searchInput
12
- (keyup)="keyUp.next($event)"
13
- (keyup.enter)="forceChange()"
14
- [(ngModel)]="value"
15
- [attr.autocomplete]="autocomplete === undefined ? null : autocomplete"
16
- [attr.id]="id ? id : null"
17
- [attr.maxlength]="maxlength"
18
- [attr.minlength]="minlength"
19
- [attr.name]="name"
20
- [attr.placeholder]="placeholder"
21
- [attr.tabIndex]="tabIndex"
22
- [attr.type]="type || 'text'"
23
- [class.focused]="focused"
24
- [class.round]="styleInput === 'round'"
25
- [class.white]="inputStyle === 'white'"
26
- [disabled]="disabled"
27
- [readOnly]="readOnly"
28
- class="search-input" />
29
- <dd-lib-svg-icon
30
- (click)="onClear()"
31
- [id]="idClose" [style.display]="value?.length ? 'block' : 'none'"
32
- class="clear-icon" icon="clear"></dd-lib-svg-icon>
33
- </div>
34
-
35
- @if (searchData?.length) {
36
- <dd-lib-card>
37
- @for (item of searchData; track item) {
38
- <div (click)="onClickSearchItem(item)" class="search-result">
39
- @if (getTitle(item); as title) {
40
- <div [innerHTML]="title | highlight: value | safe: 'html'" class="search-result__title"></div>
41
- } @if (getDesc(item); as desc) {
42
- <div [innerHTML]="desc | highlight: value | safe: 'html'" class="search-result__desc"></div>
43
- }
44
- </div>
45
- }
46
- </dd-lib-card>
47
- }
48
- </div>
@@ -1,86 +0,0 @@
1
- :host {
2
- display: block;
3
- }
4
- .lib-search-input {
5
- position: relative;
6
-
7
- &__title {
8
- margin-bottom: 4px;
9
- font-size: 14px;
10
- line-height: 24px;
11
- display: flex;
12
- align-items: flex-start;
13
- }
14
-
15
- input {
16
- width: 100%;
17
- height: 48px;
18
- padding: 16px 16px 15px 44px;
19
- border-radius: 8px;
20
- border: none;
21
- background-color: var(--input-gray-bgc);
22
-
23
- &.white {
24
- background-color: var(--white-color);
25
- border: 1px solid var(--primary-gray-color);
26
- }
27
- }
28
-
29
- .round {
30
- border-radius: 24px;
31
- }
32
-
33
- .search-icon {
34
- position: absolute;
35
- left: 16px;
36
- top: 14px;
37
- cursor: pointer;
38
- }
39
-
40
- .clear-icon {
41
- position: absolute;
42
- right: 16px;
43
- top: 14px;
44
- cursor: pointer;
45
- }
46
-
47
- .search-result {
48
- font-size: 16px;
49
- font-weight: 400;
50
- line-height: 24px;
51
- letter-spacing: 0;
52
- text-align: left;
53
- cursor: pointer;
54
-
55
- &:hover {
56
- opacity: 0.8;
57
- }
58
- &:last-child {
59
- .search-result__desc {
60
- border: none;
61
- padding-bottom: 0;
62
- }
63
- }
64
-
65
- &__title {
66
- color: var(--second-gray-color);
67
- margin: 24px 0 2px 0;
68
- }
69
-
70
- &__desc {
71
- padding-bottom: 16px;
72
- border-bottom: 1px solid var(--gray-color-200);
73
- }
74
- }
75
-
76
- dd-lib-card {
77
- position: absolute;
78
- display: block;
79
- top: 76px;
80
- z-index: 100;
81
- width: 100%;
82
- max-height: 400px;
83
- box-shadow: var(--main-card-shadow);
84
- overflow: auto;
85
- }
86
- }
@@ -1,94 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- ChangeDetectorRef,
4
- Component,
5
- EventEmitter,
6
- Input,
7
- OnInit,
8
- Output,
9
- } from '@angular/core';
10
- import {FormsModule} from '@angular/forms';
11
- import {NgOptimizedImage} from '@angular/common';
12
- import {LibCommonInputTextComponent} from '../common/lib-common-input-text';
13
- import {LibCardComponent} from '../lib-card/lib-card.component';
14
- import {of, Subject} from 'rxjs';
15
- import {debounceTime, delay, map, mergeMap, takeUntil} from 'rxjs/operators';
16
- import {DestroyService, HighlightPipe, SafePipe} from "../core";
17
- import {LibSvgIconComponent} from "../lib-svg-icon/lib-svg-icon.component";
18
-
19
- @Component({
20
- selector: 'dd-lib-search-input',
21
- standalone: true,
22
- imports: [FormsModule, NgOptimizedImage, LibCardComponent, HighlightPipe, SafePipe, LibSvgIconComponent],
23
- templateUrl: './lib-search-input.component.html',
24
- styleUrl: './lib-search-input.component.scss',
25
- changeDetection: ChangeDetectionStrategy.OnPush,
26
- providers: [DestroyService],
27
- })
28
- export class LibSearchInputComponent<T> extends LibCommonInputTextComponent implements OnInit {
29
- @Input() public keyTitle = 'title';
30
- @Input() public keyDesc = 'description';
31
- @Input() public styleInput: 'round' | 'standard' = 'standard';
32
- @Input() public inputStyle: 'white' | 'gray' = 'gray';
33
- @Input() public searchData: T[] | null | undefined;
34
- @Input() public debounceTime = 100;
35
- @Input() public delay = 0;
36
- @Input() public idClose: string | undefined;
37
- @Output() public keyupEvent = new EventEmitter<string>();
38
- @Output() public selectedItem = new EventEmitter();
39
- public keyUp = new Subject<KeyboardEvent>();
40
-
41
- constructor(
42
- private destroy$: DestroyService,
43
- changeDetection: ChangeDetectorRef,
44
- private cdr: ChangeDetectorRef,
45
- ) {
46
- super(changeDetection);
47
- }
48
-
49
- public ngOnInit(): void {
50
- if (this.commitOnInput) {
51
- this.keyUp
52
- .pipe(
53
- map(event => (event.target as HTMLInputElement)?.value),
54
- debounceTime(this.debounceTime),
55
- // distinctUntilChanged(), надо ли?
56
- mergeMap(search => of(search).pipe(delay(this.delay))),
57
- takeUntil(this.destroy$),
58
- )
59
- .subscribe(str => {
60
- this.keyupEvent.emit(str);
61
- });
62
- }
63
- }
64
-
65
- public override forceChange(): void {
66
- if (!this.commitOnInput) {
67
- this.keyupEvent.emit(this.value);
68
- }
69
- }
70
-
71
- public onClear(noEmit?: boolean): void {
72
- this.value = '';
73
- if (!noEmit) {
74
- this.cleared.emit();
75
- this.keyupEvent.emit('');
76
- }
77
- this.inputSearchElement?.nativeElement.focus();
78
- this.cdr.detectChanges();
79
- }
80
-
81
- public onClickSearchItem(item: T): void {
82
- this.onClear();
83
- this.selectedItem.emit(item);
84
- this.value = this.getTitle(item);
85
- }
86
-
87
- public getTitle(item: T): string {
88
- return item[this.keyTitle as keyof typeof item] as string;
89
- }
90
-
91
- public getDesc(item: T): string {
92
- return item[this.keyDesc as keyof typeof item] as string;
93
- }
94
- }
@@ -1,83 +0,0 @@
1
- <div class="lib-select" id="lib-select-{{ selectId }}">
2
- <label [for]="id" class="lib-select__title">
3
- {{ label }}
4
- @if (required) {
5
- <dd-lib-svg-icon icon="error_hint"></dd-lib-svg-icon>
6
- }
7
- </label>
8
-
9
- <div class="pos-relative">
10
- <input
11
- #select
12
- (change)="handleChange()"
13
- (click)="notifyFocusEvent($event)"
14
- (input)="handleInput($event)"
15
- [(ngModel)]="inputValue"
16
- [attr.id]="selectId"
17
- [attr.name]="name"
18
- [attr.placeholder]="placeholder"
19
- [attr.tabIndex]="tabIndex"
20
- [attr.type]="'text'"
21
- [class.focused]="focused"
22
- [class.invalid]="invalid"
23
- [disabled]="disabled"
24
- [readOnly]="readOnly"
25
- [title]="inputValue"
26
- class="text-select" />
27
- <!-- (blur)="notifyFocusEvent($event)"-->
28
- @if (!checkedItem) {
29
- <dd-lib-svg-icon
30
- (click)="notifyFocusEvent($event)"
31
- [class.black-svg]="isShownList"
32
- [class.disabled]="disabled"
33
- [class.gray-svg]="!isShownList"
34
- [class.up]="isShownList"
35
- id="chevron-{{ selectId }}" class="chevron" icon="down_chevron"></dd-lib-svg-icon>
36
-
37
- } @else {
38
- <dd-lib-svg-icon
39
- (click)="selectItem(checkedItem)"
40
- class="clear"
41
- id="chevron-{{ selectId }}" icon="clear"></dd-lib-svg-icon>
42
-
43
- }
44
- </div>
45
-
46
- @if (errorText && invalid) {
47
- <div class="lib-select__error">{{ errorText }}</div>
48
- } @if (isShownList) {
49
- <div
50
- (ddClickOutside)="notifyFocusEvent($event)"
51
- [elements]="['lib-select-' + selectId, 'chevron' + selectId]"
52
- class="select-list-wrapper">
53
- @if (data?.length) { @for (item of data | filterByKey: filterList.bind(this); track item) {
54
- <div
55
- (click)="selectItem(item)"
56
- [class.active]="checkedItem?.[keyValue!] === item[keyValue!] || checkedItem === item"
57
- class="select-data">
58
- @if (!keyDesc && !keyTitle) {
59
- <div [innerHTML]="item | highlight: inputValue | safe: 'html'" class="select-data__title"></div>
60
- } @if (keyTitle) {
61
- <div
62
- [innerHTML]="item[keyTitle!] | highlight: inputValue | safe: 'html'"
63
- class="select-data__title"></div>
64
- } @if (keyDesc) {
65
- <div
66
- [innerHTML]="item[keyDesc!] | highlight: inputValue | safe: 'html'"
67
- [title]="item[keyDesc]"
68
- class="select-data__desc"></div>
69
- } @if (checkedItem?.[keyValue!] === item?.[keyValue!] || checkedItem === item) {
70
- <dd-lib-svg-icon
71
- (click)="selectItem(checkedItem)"
72
- class="checked"
73
- id="chevron-{{ selectId }}" icon="check_green"></dd-lib-svg-icon>
74
- }
75
- </div>
76
- } } @else {
77
- <div class="select-loader">
78
- <dd-lib-loader></dd-lib-loader>
79
- </div>
80
- }
81
- </div>
82
- }
83
- </div>