primekit 1.0.9 → 1.0.10
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.
- package/README.md +25 -25
- package/ng-package.json +8 -0
- package/package.json +12 -25
- package/src/assets/images/empty-table.svg +25 -25
- package/src/lib/lib/atomix-alert/atomix-alert.component.css +67 -0
- package/src/lib/lib/atomix-alert/atomix-alert.component.html +7 -0
- package/src/lib/lib/atomix-alert/atomix-alert.component.spec.ts +154 -0
- package/src/lib/lib/atomix-alert/atomix-alert.component.ts +75 -0
- package/src/lib/lib/atomix-autocomplete/atomix-autocomplete.component.html +35 -0
- package/src/lib/lib/atomix-autocomplete/atomix-autocomplete.component.scss +72 -0
- package/src/lib/lib/atomix-autocomplete/atomix-autocomplete.component.spec.ts +210 -0
- package/src/lib/lib/atomix-autocomplete/atomix-autocomplete.component.ts +70 -0
- package/src/lib/lib/atomix-button/atomix-button.component.css +70 -0
- package/src/lib/lib/atomix-button/atomix-button.component.html +20 -0
- package/src/lib/lib/atomix-button/atomix-button.component.spec.ts +135 -0
- package/src/lib/lib/atomix-button/atomix-button.component.ts +28 -0
- package/{lib/lib/atomix-button/atomix-button.models.d.ts → src/lib/lib/atomix-button/atomix-button.models.ts} +2 -2
- package/src/lib/lib/atomix-calendar/atomix-calendar.component.css +5 -0
- package/src/lib/lib/atomix-calendar/atomix-calendar.component.html +20 -0
- package/src/lib/lib/atomix-calendar/atomix-calendar.component.spec.ts +145 -0
- package/src/lib/lib/atomix-calendar/atomix-calendar.component.ts +71 -0
- package/src/lib/lib/atomix-card/atomix-card.component.css +4 -0
- package/src/lib/lib/atomix-card/atomix-card.component.html +3 -0
- package/src/lib/lib/atomix-card/atomix-card.component.spec.ts +63 -0
- package/src/lib/lib/atomix-card/atomix-card.component.ts +13 -0
- package/src/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.css +12 -0
- package/src/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.html +9 -0
- package/src/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.spec.ts +63 -0
- package/src/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.ts +22 -0
- package/src/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.html +233 -0
- package/src/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.scss +266 -0
- package/src/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.spec.ts +1465 -0
- package/src/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.ts +717 -0
- package/src/lib/lib/atomix-divider/atomix-divider.component.css +0 -0
- package/src/lib/lib/atomix-divider/atomix-divider.component.html +7 -0
- package/src/lib/lib/atomix-divider/atomix-divider.component.spec.ts +91 -0
- package/src/lib/lib/atomix-divider/atomix-divider.component.ts +17 -0
- package/src/lib/lib/atomix-dropdown/atomix-dropdown.component.css +25 -0
- package/src/lib/lib/atomix-dropdown/atomix-dropdown.component.html +37 -0
- package/src/lib/lib/atomix-dropdown/atomix-dropdown.component.spec.ts +178 -0
- package/src/lib/lib/atomix-dropdown/atomix-dropdown.component.ts +89 -0
- package/src/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.css +0 -0
- package/src/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.html +0 -0
- package/src/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.spec.ts +128 -0
- package/src/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.ts +42 -0
- package/src/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.models.ts +12 -0
- package/src/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.html +20 -0
- package/src/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.scss +7 -0
- package/src/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.spec.ts +169 -0
- package/src/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.ts +41 -0
- package/src/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.html +21 -0
- package/src/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.scss +7 -0
- package/src/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.spec.ts +142 -0
- package/src/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.ts +32 -0
- package/src/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.html +13 -0
- package/src/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.scss +14 -0
- package/src/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.spec.ts +112 -0
- package/src/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.ts +28 -0
- package/src/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.html +20 -0
- package/src/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.scss +3 -0
- package/src/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.spec.ts +153 -0
- package/src/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.ts +28 -0
- package/src/lib/lib/atomix-form/atomix-form-chips/form.chips.models.ts +5 -0
- package/src/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.html +24 -0
- package/src/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.scss +15 -0
- package/src/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.spec.ts +156 -0
- package/src/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.ts +36 -0
- package/src/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.html +33 -0
- package/src/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.scss +32 -0
- package/src/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.spec.ts +156 -0
- package/src/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.ts +42 -0
- package/src/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.html +14 -0
- package/src/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.scss +0 -0
- package/src/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.spec.ts +104 -0
- package/src/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.ts +24 -0
- package/src/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.html +16 -0
- package/src/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.scss +0 -0
- package/src/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.spec.ts +92 -0
- package/src/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.ts +24 -0
- package/src/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.html +23 -0
- package/src/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.scss +3 -0
- package/src/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.spec.ts +126 -0
- package/src/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.ts +26 -0
- package/src/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.html +17 -0
- package/src/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.scss +6 -0
- package/src/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.spec.ts +120 -0
- package/src/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.ts +24 -0
- package/src/lib/lib/atomix-input/atomix-input.component.css +52 -0
- package/src/lib/lib/atomix-input/atomix-input.component.html +45 -0
- package/src/lib/lib/atomix-input/atomix-input.component.spec.ts +229 -0
- package/src/lib/lib/atomix-input/atomix-input.component.ts +64 -0
- package/src/lib/lib/atomix-input-switch/atomix-input-switch.component.css +12 -0
- package/src/lib/lib/atomix-input-switch/atomix-input-switch.component.html +17 -0
- package/src/lib/lib/atomix-input-switch/atomix-input-switch.component.spec.ts +173 -0
- package/src/lib/lib/atomix-input-switch/atomix-input-switch.component.ts +62 -0
- package/src/lib/lib/atomix-loading-overlay/atomix-loading-overlay.component.html +47 -0
- package/src/lib/lib/atomix-loading-overlay/atomix-loading-overlay.component.scss +14 -0
- package/src/lib/lib/atomix-loading-overlay/atomix-loading-overlay.component.spec.ts +21 -0
- package/src/lib/lib/atomix-loading-overlay/atomix-loading-overlay.component.ts +25 -0
- package/src/lib/lib/atomix-messages/messages.component.css +0 -0
- package/src/lib/lib/atomix-messages/messages.component.html +9 -0
- package/src/lib/lib/atomix-messages/messages.component.spec.ts +115 -0
- package/src/lib/lib/atomix-messages/messages.component.ts +17 -0
- package/src/lib/lib/atomix-pagination/atomix-pagination.component.css +19 -0
- package/src/lib/lib/atomix-pagination/atomix-pagination.component.html +24 -0
- package/src/lib/lib/atomix-pagination/atomix-pagination.component.spec.ts +98 -0
- package/src/lib/lib/atomix-pagination/atomix-pagination.component.ts +36 -0
- package/src/lib/lib/atomix-radio-button/atomix-radio-button.component.css +0 -0
- package/src/lib/lib/atomix-radio-button/atomix-radio-button.component.html +7 -0
- package/src/lib/lib/atomix-radio-button/atomix-radio-button.component.spec.ts +116 -0
- package/src/lib/lib/atomix-radio-button/atomix-radio-button.component.ts +37 -0
- package/src/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.css +49 -0
- package/src/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.html +68 -0
- package/src/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.spec.ts +282 -0
- package/src/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.ts +119 -0
- package/{lib/lib/atomix-select-button/atomix-select-button-models.d.ts → src/lib/lib/atomix-select-button/atomix-select-button-models.ts} +4 -4
- package/src/lib/lib/atomix-select-button/atomix-select-button.component.css +5 -0
- package/src/lib/lib/atomix-select-button/atomix-select-button.component.html +7 -0
- package/src/lib/lib/atomix-select-button/atomix-select-button.component.spec.ts +73 -0
- package/src/lib/lib/atomix-select-button/atomix-select-button.component.ts +19 -0
- package/src/lib/lib/atomix-snackbar/atomix-snackbar.component.css +30 -0
- package/src/lib/lib/atomix-snackbar/atomix-snackbar.component.html +4 -0
- package/src/lib/lib/atomix-snackbar/atomix-snackbar.component.spec.ts +60 -0
- package/src/lib/lib/atomix-snackbar/atomix-snackbar.component.ts +27 -0
- package/src/lib/lib/atomix-spinner/atomix-spinner.component.css +0 -0
- package/src/lib/lib/atomix-spinner/atomix-spinner.component.html +7 -0
- package/src/lib/lib/atomix-spinner/atomix-spinner.component.spec.ts +70 -0
- package/src/lib/lib/atomix-spinner/atomix-spinner.component.ts +13 -0
- package/src/lib/lib/atomix-steps/atomix-steps.component.html +9 -0
- package/src/lib/lib/atomix-steps/atomix-steps.component.scss +0 -0
- package/src/lib/lib/atomix-steps/atomix-steps.component.spec.ts +120 -0
- package/src/lib/lib/atomix-steps/atomix-steps.component.ts +32 -0
- package/src/lib/lib/atomix-tabMenu/atomix-tabMenu.component.css +0 -0
- package/src/lib/lib/atomix-tabMenu/atomix-tabMenu.component.html +26 -0
- package/src/lib/lib/atomix-tabMenu/atomix-tabMenu.component.spec.ts +106 -0
- package/src/lib/lib/atomix-tabMenu/atomix-tabMenu.component.ts +36 -0
- package/src/lib/lib/atomix-table/atomix-table.component.css +152 -0
- package/src/lib/lib/atomix-table/atomix-table.component.html +647 -0
- package/src/lib/lib/atomix-table/atomix-table.component.spec.ts +1648 -0
- package/src/lib/lib/atomix-table/atomix-table.component.ts +422 -0
- package/src/lib/lib/atomix-table/atomix-table.models.ts +39 -0
- package/src/lib/lib/atomix-tag/atomix-tag.component.css +0 -0
- package/src/lib/lib/atomix-tag/atomix-tag.component.html +6 -0
- package/src/lib/lib/atomix-tag/atomix-tag.component.spec.ts +47 -0
- package/src/lib/lib/atomix-tag/atomix-tag.component.ts +13 -0
- package/src/lib/lib/utils/prime-icons.util.spec.ts +21 -0
- package/src/lib/lib/utils/prime-icons.util.ts +11 -0
- package/src/lib/primekit.component.spec.ts +19 -0
- package/src/lib/primekit.component.ts +10 -0
- package/src/lib/primekit.module.spec.ts +155 -0
- package/src/lib/primekit.module.ts +183 -0
- package/src/lib/primekit.service.spec.ts +17 -0
- package/src/lib/primekit.service.ts +8 -0
- package/{public-api.d.ts → src/public-api.ts} +47 -37
- package/tsconfig.lib.json +13 -0
- package/tsconfig.lib.prod.json +11 -0
- package/tsconfig.spec.json +10 -0
- package/esm2022/lib/lib/atomix-alert/atomix-alert.component.mjs +0 -76
- package/esm2022/lib/lib/atomix-autocomplete/atomix-autocomplete.component.mjs +0 -108
- package/esm2022/lib/lib/atomix-button/atomix-button.component.mjs +0 -49
- package/esm2022/lib/lib/atomix-button/atomix-button.models.mjs +0 -2
- package/esm2022/lib/lib/atomix-calendar/atomix-calendar.component.mjs +0 -90
- package/esm2022/lib/lib/atomix-card/atomix-card.component.mjs +0 -24
- package/esm2022/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.mjs +0 -28
- package/esm2022/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.mjs +0 -648
- package/esm2022/lib/lib/atomix-divider/atomix-divider.component.mjs +0 -27
- package/esm2022/lib/lib/atomix-dropdown/atomix-dropdown.component.mjs +0 -105
- package/esm2022/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.mjs +0 -38
- package/esm2022/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.models.mjs +0 -2
- package/esm2022/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.mjs +0 -67
- package/esm2022/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.mjs +0 -59
- package/esm2022/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.mjs +0 -48
- package/esm2022/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.mjs +0 -54
- package/esm2022/lib/lib/atomix-form/atomix-form-chips/form.chips.models.mjs +0 -2
- package/esm2022/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.mjs +0 -70
- package/esm2022/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.mjs +0 -80
- package/esm2022/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.mjs +0 -48
- package/esm2022/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.mjs +0 -48
- package/esm2022/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.mjs +0 -46
- package/esm2022/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.mjs +0 -46
- package/esm2022/lib/lib/atomix-input/atomix-input.component.mjs +0 -94
- package/esm2022/lib/lib/atomix-input-switch/atomix-input-switch.component.mjs +0 -85
- package/esm2022/lib/lib/atomix-messages/messages.component.mjs +0 -33
- package/esm2022/lib/lib/atomix-pagination/atomix-pagination.component.mjs +0 -48
- package/esm2022/lib/lib/atomix-radio-button/atomix-radio-button.component.mjs +0 -50
- package/esm2022/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.mjs +0 -149
- package/esm2022/lib/lib/atomix-select-button/atomix-select-button-models.mjs +0 -2
- package/esm2022/lib/lib/atomix-select-button/atomix-select-button.component.mjs +0 -25
- package/esm2022/lib/lib/atomix-snackbar/atomix-snackbar.component.mjs +0 -29
- package/esm2022/lib/lib/atomix-spinner/atomix-spinner.component.mjs +0 -24
- package/esm2022/lib/lib/atomix-steps/atomix-steps.component.mjs +0 -41
- package/esm2022/lib/lib/atomix-tabMenu/atomix-tabMenu.component.mjs +0 -51
- package/esm2022/lib/lib/atomix-table/atomix-table.component.mjs +0 -454
- package/esm2022/lib/lib/atomix-table/atomix-table.models.mjs +0 -2
- package/esm2022/lib/lib/atomix-tag/atomix-tag.component.mjs +0 -24
- package/esm2022/lib/lib/utils/prime-icons.util.mjs +0 -10
- package/esm2022/lib/primekit.component.mjs +0 -11
- package/esm2022/lib/primekit.module.mjs +0 -313
- package/esm2022/lib/primekit.service.mjs +0 -14
- package/esm2022/primekit.mjs +0 -5
- package/esm2022/public-api.mjs +0 -43
- package/fesm2022/primekit.mjs +0 -3041
- package/fesm2022/primekit.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/lib/atomix-alert/atomix-alert.component.d.ts +0 -22
- package/lib/lib/atomix-autocomplete/atomix-autocomplete.component.d.ts +0 -34
- package/lib/lib/atomix-button/atomix-button.component.d.ts +0 -19
- package/lib/lib/atomix-calendar/atomix-calendar.component.d.ts +0 -27
- package/lib/lib/atomix-card/atomix-card.component.d.ts +0 -9
- package/lib/lib/atomix-confirmation-dialog/atomix-confirmation-dialog.component.d.ts +0 -12
- package/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.d.ts +0 -72
- package/lib/lib/atomix-divider/atomix-divider.component.d.ts +0 -12
- package/lib/lib/atomix-dropdown/atomix-dropdown.component.d.ts +0 -50
- package/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.component.d.ts +0 -15
- package/lib/lib/atomix-dynamic-dialog/atomix-dynamic-dialog.models.d.ts +0 -11
- package/lib/lib/atomix-form/atomix-form-autocomplete/atomix-form-autocomplete.component.d.ts +0 -25
- package/lib/lib/atomix-form/atomix-form-calendar/atomix-form-calendar.component.d.ts +0 -23
- package/lib/lib/atomix-form/atomix-form-checkbox/atomix-form-checkbox.component.d.ts +0 -18
- package/lib/lib/atomix-form/atomix-form-chips/atomix-form-chips.component.d.ts +0 -19
- package/lib/lib/atomix-form/atomix-form-chips/form.chips.models.d.ts +0 -5
- package/lib/lib/atomix-form/atomix-form-dropdown/atomix-form-dropdown.component.d.ts +0 -25
- package/lib/lib/atomix-form/atomix-form-input-component/atomix-form-input-component.component.d.ts +0 -28
- package/lib/lib/atomix-form/atomix-form-inputmask-component/atomix-form-inputmask-component.component.d.ts +0 -17
- package/lib/lib/atomix-form/atomix-form-password-component/atomix-form-password-component.component.d.ts +0 -17
- package/lib/lib/atomix-form/atomix-form-radio-button/atomix-radio-button.component.d.ts +0 -19
- package/lib/lib/atomix-form/atomix-form-textarea/atomix-form-textarea.component.d.ts +0 -17
- package/lib/lib/atomix-input/atomix-input.component.d.ts +0 -29
- package/lib/lib/atomix-input-switch/atomix-input-switch.component.d.ts +0 -30
- package/lib/lib/atomix-messages/messages.component.d.ts +0 -13
- package/lib/lib/atomix-pagination/atomix-pagination.component.d.ts +0 -19
- package/lib/lib/atomix-radio-button/atomix-radio-button.component.d.ts +0 -15
- package/lib/lib/atomix-search-dropdown/atomix-search-dropdown.component.d.ts +0 -60
- package/lib/lib/atomix-select-button/atomix-select-button.component.d.ts +0 -12
- package/lib/lib/atomix-snackbar/atomix-snackbar.component.d.ts +0 -12
- package/lib/lib/atomix-spinner/atomix-spinner.component.d.ts +0 -9
- package/lib/lib/atomix-steps/atomix-steps.component.d.ts +0 -19
- package/lib/lib/atomix-tabMenu/atomix-tabMenu.component.d.ts +0 -19
- package/lib/lib/atomix-table/atomix-table.component.d.ts +0 -119
- package/lib/lib/atomix-table/atomix-table.models.d.ts +0 -43
- package/lib/lib/atomix-tag/atomix-tag.component.d.ts +0 -9
- package/lib/lib/utils/prime-icons.util.d.ts +0 -3
- package/lib/primekit.component.d.ts +0 -5
- package/lib/primekit.module.d.ts +0 -70
- package/lib/primekit.service.d.ts +0 -6
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<ng-container *ngIf="target && !fullscreen">
|
|
2
|
+
<p-blockUI [blocked]="blocked" [target]="target">
|
|
3
|
+
<div
|
|
4
|
+
class="flex flex-column align-items-center justify-content-center p-3 {{
|
|
5
|
+
customClass
|
|
6
|
+
}}"
|
|
7
|
+
>
|
|
8
|
+
<p-progressSpinner
|
|
9
|
+
*ngIf="icon === 'pi pi-spin pi-spinner'"
|
|
10
|
+
styleClass="w-{{ iconSize }} h-{{ iconSize }}"
|
|
11
|
+
strokeWidth="4"
|
|
12
|
+
animationDuration=".5s"
|
|
13
|
+
>
|
|
14
|
+
</p-progressSpinner>
|
|
15
|
+
|
|
16
|
+
<i
|
|
17
|
+
*ngIf="icon !== 'pi pi-spin pi-spinner'"
|
|
18
|
+
class="{{ icon }} text-{{ iconSize }} mb-3"
|
|
19
|
+
>
|
|
20
|
+
</i>
|
|
21
|
+
|
|
22
|
+
<span *ngIf="message" class="mt-3 font-bold text-lg">{{ message }}</span>
|
|
23
|
+
</div>
|
|
24
|
+
</p-blockUI>
|
|
25
|
+
</ng-container>
|
|
26
|
+
|
|
27
|
+
<div
|
|
28
|
+
*ngIf="fullscreen && blocked"
|
|
29
|
+
class="atomix-loading-overlay-fullscreen flex flex-column align-items-center justify-content-center"
|
|
30
|
+
[ngClass]="{ 'atomix-loading-overlay-transparent': transparent }"
|
|
31
|
+
>
|
|
32
|
+
<p-progressSpinner
|
|
33
|
+
*ngIf="icon === 'pi pi-spin pi-spinner'"
|
|
34
|
+
styleClass="w-{{ iconSize }} h-{{ iconSize }}"
|
|
35
|
+
strokeWidth="4"
|
|
36
|
+
animationDuration=".5s"
|
|
37
|
+
>
|
|
38
|
+
</p-progressSpinner>
|
|
39
|
+
|
|
40
|
+
<i
|
|
41
|
+
*ngIf="icon !== 'pi pi-spin pi-spinner'"
|
|
42
|
+
class="{{ icon }} text-{{ iconSize }} mb-3"
|
|
43
|
+
>
|
|
44
|
+
</i>
|
|
45
|
+
|
|
46
|
+
<span *ngIf="message" class="mt-3 font-bold text-lg">{{ message }}</span>
|
|
47
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.atomix-loading-overlay-fullscreen {
|
|
2
|
+
position: fixed;
|
|
3
|
+
top: 0;
|
|
4
|
+
left: 0;
|
|
5
|
+
width: 100%;
|
|
6
|
+
height: 100%;
|
|
7
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
8
|
+
z-index: 9999;
|
|
9
|
+
color: white;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.atomix-loading-overlay-transparent {
|
|
13
|
+
background-color: rgba(0, 0, 0, 0.2);
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
import { AtomixLoadingOverlayComponent } from './atomix-loading-overlay.component';
|
|
3
|
+
|
|
4
|
+
describe('AtomixLoadingOverlayComponent', () => {
|
|
5
|
+
let component: AtomixLoadingOverlayComponent;
|
|
6
|
+
let fixture: ComponentFixture<AtomixLoadingOverlayComponent>;
|
|
7
|
+
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
await TestBed.configureTestingModule({
|
|
10
|
+
declarations: [AtomixLoadingOverlayComponent],
|
|
11
|
+
}).compileComponents();
|
|
12
|
+
|
|
13
|
+
fixture = TestBed.createComponent(AtomixLoadingOverlayComponent);
|
|
14
|
+
component = fixture.componentInstance;
|
|
15
|
+
fixture.detectChanges();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should create', () => {
|
|
19
|
+
expect(component).toBeTruthy();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Component({
|
|
4
|
+
selector: 'atomix-loading-overlay',
|
|
5
|
+
templateUrl: './atomix-loading-overlay.component.html',
|
|
6
|
+
styleUrls: ['./atomix-loading-overlay.component.scss'],
|
|
7
|
+
})
|
|
8
|
+
export class AtomixLoadingOverlayComponent implements OnChanges {
|
|
9
|
+
@Input() loading = false;
|
|
10
|
+
@Input() target: any;
|
|
11
|
+
@Input() message = 'Processing...';
|
|
12
|
+
@Input() icon = 'pi pi-spin pi-spinner';
|
|
13
|
+
@Input() iconSize = '3rem';
|
|
14
|
+
@Input() customClass = '';
|
|
15
|
+
@Input() fullscreen = false;
|
|
16
|
+
@Input() transparent = false;
|
|
17
|
+
|
|
18
|
+
blocked = false;
|
|
19
|
+
|
|
20
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
21
|
+
if (changes['loading']) {
|
|
22
|
+
this.blocked = this.loading;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
3
|
+
import { AtomixMessagesComponent } from './messages.component';
|
|
4
|
+
|
|
5
|
+
describe('AtomixMessagesComponent', () => {
|
|
6
|
+
let component: AtomixMessagesComponent;
|
|
7
|
+
let fixture: ComponentFixture<AtomixMessagesComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
TestBed.configureTestingModule({
|
|
11
|
+
declarations: [AtomixMessagesComponent],
|
|
12
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(AtomixMessagesComponent);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should create', () => {
|
|
20
|
+
expect(component).toBeTruthy();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
describe('default values', () => {
|
|
24
|
+
it('should have empty value array by default', () => {
|
|
25
|
+
expect(component.value).toEqual([]);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should have closable set to true by default', () => {
|
|
29
|
+
expect(component.closable).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should have empty severity by default', () => {
|
|
33
|
+
expect(component.severity).toBe('');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should have escape set to true by default', () => {
|
|
37
|
+
expect(component.escape).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should have enableService set to true by default', () => {
|
|
41
|
+
expect(component.enableService).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should have empty styleClass by default', () => {
|
|
45
|
+
expect(component.styleClass).toBe('');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should have empty text by default', () => {
|
|
49
|
+
expect(component.text).toBe('');
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('message display', () => {
|
|
54
|
+
it('should accept message value input', () => {
|
|
55
|
+
const messages = [
|
|
56
|
+
{
|
|
57
|
+
severity: 'success',
|
|
58
|
+
summary: 'Success',
|
|
59
|
+
detail: 'Operation completed',
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
component.value = messages;
|
|
63
|
+
fixture.detectChanges();
|
|
64
|
+
|
|
65
|
+
expect(component.value).toEqual(messages);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('should accept multiple messages', () => {
|
|
69
|
+
const messages = [
|
|
70
|
+
{ severity: 'success', summary: 'Success', detail: 'Done' },
|
|
71
|
+
{ severity: 'error', summary: 'Error', detail: 'Failed' },
|
|
72
|
+
{ severity: 'warn', summary: 'Warning', detail: 'Caution' },
|
|
73
|
+
];
|
|
74
|
+
component.value = messages;
|
|
75
|
+
fixture.detectChanges();
|
|
76
|
+
|
|
77
|
+
expect(component.value).toHaveLength(3);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should accept severity input', () => {
|
|
81
|
+
component.severity = 'error';
|
|
82
|
+
fixture.detectChanges();
|
|
83
|
+
|
|
84
|
+
expect(component.severity).toBe('error');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('should accept closable input', () => {
|
|
88
|
+
component.closable = false;
|
|
89
|
+
fixture.detectChanges();
|
|
90
|
+
|
|
91
|
+
expect(component.closable).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('should accept escape input', () => {
|
|
95
|
+
component.escape = false;
|
|
96
|
+
fixture.detectChanges();
|
|
97
|
+
|
|
98
|
+
expect(component.escape).toBe(false);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('should accept enableService input', () => {
|
|
102
|
+
component.enableService = false;
|
|
103
|
+
fixture.detectChanges();
|
|
104
|
+
|
|
105
|
+
expect(component.enableService).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('should accept styleClass input', () => {
|
|
109
|
+
component.styleClass = 'custom-class';
|
|
110
|
+
fixture.detectChanges();
|
|
111
|
+
|
|
112
|
+
expect(component.styleClass).toBe('custom-class');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Message } from 'primeng/api';
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'atomix-messages',
|
|
6
|
+
templateUrl: './messages.component.html',
|
|
7
|
+
styleUrls: ['./messages.component.css'],
|
|
8
|
+
})
|
|
9
|
+
export class AtomixMessagesComponent {
|
|
10
|
+
@Input() value: Message[] = [];
|
|
11
|
+
@Input() closable: boolean = true;
|
|
12
|
+
@Input() severity: string = '';
|
|
13
|
+
@Input() escape: boolean = true;
|
|
14
|
+
@Input() enableService: boolean = true;
|
|
15
|
+
@Input() styleClass: string = '';
|
|
16
|
+
@Input() text: string = '';
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.pagination-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: flex-end;
|
|
5
|
+
padding-right: 1rem;
|
|
6
|
+
|
|
7
|
+
.p-inputwrapper {
|
|
8
|
+
width: auto;
|
|
9
|
+
max-width: 7rem;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
::ng-deep .pagination-dropdown {
|
|
14
|
+
border-radius: 6px;
|
|
15
|
+
|
|
16
|
+
.p-inputtext {
|
|
17
|
+
padding: 0.4rem 1rem;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<div class="pagination-container">
|
|
2
|
+
<span class="mx-1 text-color table-text" *ngIf="getScreenWidth > 768"
|
|
3
|
+
>Items per page:
|
|
4
|
+
</span>
|
|
5
|
+
<p-dropdown
|
|
6
|
+
*ngIf="getScreenWidth > 768"
|
|
7
|
+
[options]="options"
|
|
8
|
+
optionLabel="label"
|
|
9
|
+
optionValue="value"
|
|
10
|
+
[(ngModel)]="size"
|
|
11
|
+
(onChange)="handleDropdownValueChange.emit($event)"
|
|
12
|
+
styleClass="pagination-dropdown"
|
|
13
|
+
/>
|
|
14
|
+
<p-paginator
|
|
15
|
+
[first]="page * size"
|
|
16
|
+
[rows]="size"
|
|
17
|
+
[totalRecords]="totalRecords"
|
|
18
|
+
(onPageChange)="paginatorChange.emit($event)"
|
|
19
|
+
[showCurrentPageReport]="true"
|
|
20
|
+
currentPageReportTemplate="{first} - {last} of {totalRecords}"
|
|
21
|
+
[showPageLinks]="false"
|
|
22
|
+
[showFirstLastIcon]="false"
|
|
23
|
+
></p-paginator>
|
|
24
|
+
</div>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
3
|
+
import { AtomixPaginationComponent } from './atomix-pagination.component';
|
|
4
|
+
|
|
5
|
+
describe('AtomixPaginationComponent', () => {
|
|
6
|
+
let component: AtomixPaginationComponent;
|
|
7
|
+
let fixture: ComponentFixture<AtomixPaginationComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
TestBed.configureTestingModule({
|
|
11
|
+
declarations: [AtomixPaginationComponent],
|
|
12
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
13
|
+
});
|
|
14
|
+
fixture = TestBed.createComponent(AtomixPaginationComponent);
|
|
15
|
+
component = fixture.componentInstance;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should create', () => {
|
|
19
|
+
expect(component).toBeTruthy();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('input bindings', () => {
|
|
23
|
+
it('should have default dataLength as 0', () => {
|
|
24
|
+
expect(component.dataLength).toBe(0);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should accept dataLength input', () => {
|
|
28
|
+
component.dataLength = 50;
|
|
29
|
+
fixture.detectChanges();
|
|
30
|
+
expect(component.dataLength).toBe(50);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('should have default totalRecords as 0', () => {
|
|
34
|
+
expect(component.totalRecords).toBe(0);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should accept totalRecords input', () => {
|
|
38
|
+
component.totalRecords = 200;
|
|
39
|
+
fixture.detectChanges();
|
|
40
|
+
expect(component.totalRecords).toBe(200);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('should have default page as 0', () => {
|
|
44
|
+
expect(component.page).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('should accept page input', () => {
|
|
48
|
+
component.page = 3;
|
|
49
|
+
fixture.detectChanges();
|
|
50
|
+
expect(component.page).toBe(3);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('should have default size as 25', () => {
|
|
54
|
+
expect(component.size).toBe(25);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('should accept size input', () => {
|
|
58
|
+
component.size = 50;
|
|
59
|
+
fixture.detectChanges();
|
|
60
|
+
expect(component.size).toBe(50);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe('options array', () => {
|
|
65
|
+
it('should have predefined pagination options', () => {
|
|
66
|
+
expect(component.options).toBeDefined();
|
|
67
|
+
expect(component.options.length).toBe(6);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('should contain expected option values', () => {
|
|
71
|
+
const expectedValues = [10, 25, 50, 75, 100, 500];
|
|
72
|
+
const optionValues = component.options.map((opt) => opt.value);
|
|
73
|
+
expect(optionValues).toEqual(expectedValues);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('should have matching label and value for each option', () => {
|
|
77
|
+
component.options.forEach((opt) => {
|
|
78
|
+
expect(opt.label).toBe(opt.value);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('window resize handler', () => {
|
|
84
|
+
it('should have initial getScreenWidth as 0', () => {
|
|
85
|
+
expect(component.getScreenWidth).toBe(0);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('should update getScreenWidth on window resize', () => {
|
|
89
|
+
component.onWindowResize();
|
|
90
|
+
expect(component.getScreenWidth).toBe(window.innerWidth);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('should respond to window resize event', () => {
|
|
94
|
+
window.dispatchEvent(new Event('resize'));
|
|
95
|
+
expect(component.getScreenWidth).toBe(window.innerWidth);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
EventEmitter,
|
|
4
|
+
HostListener,
|
|
5
|
+
Input,
|
|
6
|
+
Output,
|
|
7
|
+
} from '@angular/core';
|
|
8
|
+
import { DropdownChangeEvent } from 'primeng/dropdown';
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'app-pagination',
|
|
12
|
+
templateUrl: './atomix-pagination.component.html',
|
|
13
|
+
styleUrls: ['./atomix-pagination.component.css'],
|
|
14
|
+
})
|
|
15
|
+
export class AtomixPaginationComponent {
|
|
16
|
+
@Input() dataLength: number = 0;
|
|
17
|
+
@Input() totalRecords: number = 0;
|
|
18
|
+
@Input() page: number = 0;
|
|
19
|
+
@Input() size: number = 25;
|
|
20
|
+
@Output() handleDropdownValueChange = new EventEmitter<DropdownChangeEvent>();
|
|
21
|
+
@Output() paginatorChange = new EventEmitter<any>();
|
|
22
|
+
getScreenWidth: number = 0;
|
|
23
|
+
options = [
|
|
24
|
+
{ label: 10, value: 10 },
|
|
25
|
+
{ label: 25, value: 25 },
|
|
26
|
+
{ label: 50, value: 50 },
|
|
27
|
+
{ label: 75, value: 75 },
|
|
28
|
+
{ label: 100, value: 100 },
|
|
29
|
+
{ label: 500, value: 500 },
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
@HostListener('window:resize', ['$event'])
|
|
33
|
+
onWindowResize() {
|
|
34
|
+
this.getScreenWidth = window.innerWidth;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { NO_ERRORS_SCHEMA, forwardRef } from '@angular/core';
|
|
2
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { AtomixRadioButtonComponent } from './atomix-radio-button.component';
|
|
5
|
+
|
|
6
|
+
describe('AtomixRadioButtonComponent', () => {
|
|
7
|
+
let component: AtomixRadioButtonComponent;
|
|
8
|
+
let fixture: ComponentFixture<AtomixRadioButtonComponent>;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
TestBed.configureTestingModule({
|
|
12
|
+
declarations: [AtomixRadioButtonComponent],
|
|
13
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
14
|
+
}).overrideComponent(AtomixRadioButtonComponent, {
|
|
15
|
+
set: {
|
|
16
|
+
template: '<div></div>',
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
fixture = TestBed.createComponent(AtomixRadioButtonComponent);
|
|
20
|
+
component = fixture.componentInstance;
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should create', () => {
|
|
24
|
+
expect(component).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('input bindings', () => {
|
|
28
|
+
it('should have default name as empty string', () => {
|
|
29
|
+
expect(component.name).toBe('');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should have default value as empty string', () => {
|
|
33
|
+
expect(component.value).toBe('');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should have default selectedValue as empty string', () => {
|
|
37
|
+
expect(component.selectedValue).toBe('');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should have default inputId as empty string', () => {
|
|
41
|
+
expect(component.inputId).toBe('');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should accept name input', () => {
|
|
45
|
+
component.name = 'gender';
|
|
46
|
+
expect(component.name).toBe('gender');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should accept value input', () => {
|
|
50
|
+
component.value = 'male';
|
|
51
|
+
expect(component.value).toBe('male');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should accept selectedValue input', () => {
|
|
55
|
+
component.selectedValue = 'female';
|
|
56
|
+
expect(component.selectedValue).toBe('female');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('should accept inputId input', () => {
|
|
60
|
+
component.inputId = 'radio-1';
|
|
61
|
+
expect(component.inputId).toBe('radio-1');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe('ControlValueAccessor', () => {
|
|
66
|
+
it('should set selectedValue when writeValue is called', () => {
|
|
67
|
+
component.writeValue('option1');
|
|
68
|
+
expect(component.selectedValue).toBe('option1');
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should register onChange callback', () => {
|
|
72
|
+
const fn = jest.fn();
|
|
73
|
+
component.registerOnChange(fn);
|
|
74
|
+
component.onChange('test');
|
|
75
|
+
expect(fn).toHaveBeenCalledWith('test');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should register onTouched callback', () => {
|
|
79
|
+
const fn = jest.fn();
|
|
80
|
+
component.registerOnTouched(fn);
|
|
81
|
+
component.onTouched();
|
|
82
|
+
expect(fn).toHaveBeenCalled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should call onChange when selection changes', () => {
|
|
86
|
+
const onChangeSpy = jest.fn();
|
|
87
|
+
component.registerOnChange(onChangeSpy);
|
|
88
|
+
|
|
89
|
+
component.onChange('selectedOption');
|
|
90
|
+
|
|
91
|
+
expect(onChangeSpy).toHaveBeenCalledWith('selectedOption');
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe('NG_VALUE_ACCESSOR provider', () => {
|
|
96
|
+
it('should provide itself as NG_VALUE_ACCESSOR via forwardRef', () => {
|
|
97
|
+
// Create a fresh TestBed without template override to test the provider registration
|
|
98
|
+
TestBed.resetTestingModule();
|
|
99
|
+
TestBed.configureTestingModule({
|
|
100
|
+
declarations: [AtomixRadioButtonComponent],
|
|
101
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
102
|
+
});
|
|
103
|
+
const fix = TestBed.createComponent(AtomixRadioButtonComponent);
|
|
104
|
+
const injector = fix.debugElement.injector;
|
|
105
|
+
const valueAccessors = injector.get(NG_VALUE_ACCESSOR);
|
|
106
|
+
expect(valueAccessors).toBeDefined();
|
|
107
|
+
expect(valueAccessors.length).toBeGreaterThan(0);
|
|
108
|
+
expect(valueAccessors[0]).toBe(fix.componentInstance);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it('should resolve forwardRef to AtomixRadioButtonComponent', () => {
|
|
112
|
+
const resolved = forwardRef(() => AtomixRadioButtonComponent);
|
|
113
|
+
expect(resolved).toBeDefined();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'atomix-radio-button',
|
|
6
|
+
templateUrl: './atomix-radio-button.component.html',
|
|
7
|
+
styleUrl: './atomix-radio-button.component.css',
|
|
8
|
+
providers: [
|
|
9
|
+
{
|
|
10
|
+
provide: NG_VALUE_ACCESSOR,
|
|
11
|
+
useExisting: forwardRef(() => AtomixRadioButtonComponent),
|
|
12
|
+
multi: true,
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
})
|
|
16
|
+
export class AtomixRadioButtonComponent {
|
|
17
|
+
@Input() name: string = '';
|
|
18
|
+
@Input() value: string = '';
|
|
19
|
+
@Input() selectedValue: string = '';
|
|
20
|
+
@Input() inputId: string = '';
|
|
21
|
+
model: any;
|
|
22
|
+
|
|
23
|
+
onChange = (_: any) => {};
|
|
24
|
+
onTouched = () => {};
|
|
25
|
+
|
|
26
|
+
writeValue(value: any): void {
|
|
27
|
+
this.selectedValue = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
registerOnChange(fn: any): void {
|
|
31
|
+
this.onChange = fn;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
registerOnTouched(fn: any): void {
|
|
35
|
+
this.onTouched = fn;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* Hide the default browser clear icon for search inputs */
|
|
2
|
+
input[type='search']::-webkit-search-cancel-button {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
input[type='search']::-moz-search-cancel-button {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
input[type='search']::-ms-clear {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.lib-error-asterisk {
|
|
15
|
+
color: red;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.billing-input-column-container {
|
|
19
|
+
display: flex;
|
|
20
|
+
}
|
|
21
|
+
.filter-dropdown-icon {
|
|
22
|
+
position: absolute;
|
|
23
|
+
top: 50%;
|
|
24
|
+
right: 10px;
|
|
25
|
+
transform: translateY(-50%);
|
|
26
|
+
z-index: 1;
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
color: #6c757d;
|
|
29
|
+
right: 10px;
|
|
30
|
+
}
|
|
31
|
+
.search-dropdown {
|
|
32
|
+
width: max-content !important;
|
|
33
|
+
border-top-left-radius: 0px !important;
|
|
34
|
+
border-bottom-left-radius: 0px !important;
|
|
35
|
+
width: max-content !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.search-input {
|
|
39
|
+
background-color: var(--filter-inventory-bg);
|
|
40
|
+
border: 1px solid var(--border-color) !important;
|
|
41
|
+
margin-top: 0 !important;
|
|
42
|
+
border-right: none !important;
|
|
43
|
+
padding-right: 8px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.search-dropdown-container {
|
|
47
|
+
position: relative;
|
|
48
|
+
flex: 1;
|
|
49
|
+
}
|