@unipin/angular-applet 18.9.7 → 21.0.1
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 +49 -10
- package/common/assets/sprites/flagGlobal.png +0 -0
- package/common/assets/sprites/flagSprite42.webp +0 -0
- package/common/assets/styles/freakflags.scss +263 -0
- package/common/assets/styles/theme.css +69 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs +242 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +267 -0
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-alert.mjs +94 -0
- package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-auth.mjs +707 -0
- package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-avatar.mjs +41 -0
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-badge.mjs +50 -0
- package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-buttons.mjs +263 -0
- package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-calendar.mjs +492 -0
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-collapsible.mjs +97 -0
- package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-common.mjs +342 -0
- package/fesm2022/unipin-angular-applet-common.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-containers.mjs +472 -0
- package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-dialog.mjs +535 -0
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-forms.mjs +1699 -0
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-froala.mjs +298 -0
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-grids.mjs +105 -0
- package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +86 -0
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +71 -0
- package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +252 -0
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-markdown.mjs +703 -0
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-micro-frontend.mjs +75 -0
- package/fesm2022/unipin-angular-applet-micro-frontend.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-popover.mjs +333 -0
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +38 -0
- package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-skeleton.mjs +32 -0
- package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-spinner.mjs +144 -0
- package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-swipeable.mjs +270 -0
- package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-tabs.mjs +142 -0
- package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-tooltip.mjs +118 -0
- package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet.mjs +5 -4617
- package/fesm2022/unipin-angular-applet.mjs.map +1 -1
- package/package.json +132 -29
- package/types/unipin-angular-applet-accordion.d.ts +60 -0
- package/types/unipin-angular-applet-alert-dialog.d.ts +35 -0
- package/types/unipin-angular-applet-alert.d.ts +34 -0
- package/types/unipin-angular-applet-auth.d.ts +225 -0
- package/types/unipin-angular-applet-avatar.d.ts +16 -0
- package/types/unipin-angular-applet-badge.d.ts +20 -0
- package/types/unipin-angular-applet-buttons.d.ts +37 -0
- package/types/unipin-angular-applet-calendar.d.ts +44 -0
- package/types/unipin-angular-applet-collapsible.d.ts +35 -0
- package/types/unipin-angular-applet-common.d.ts +94 -0
- package/types/unipin-angular-applet-containers.d.ts +179 -0
- package/types/unipin-angular-applet-dialog.d.ts +180 -0
- package/types/unipin-angular-applet-forms.d.ts +412 -0
- package/types/unipin-angular-applet-froala.d.ts +85 -0
- package/types/unipin-angular-applet-grids.d.ts +22 -0
- package/types/unipin-angular-applet-infinite-scroll.d.ts +51 -0
- package/types/unipin-angular-applet-json-viewer.d.ts +30 -0
- package/types/unipin-angular-applet-loading-dialog.d.ts +19 -0
- package/types/unipin-angular-applet-markdown.d.ts +119 -0
- package/types/unipin-angular-applet-micro-frontend.d.ts +11 -0
- package/types/unipin-angular-applet-popover.d.ts +58 -0
- package/types/unipin-angular-applet-progress-bar.d.ts +14 -0
- package/types/unipin-angular-applet-skeleton.d.ts +11 -0
- package/types/unipin-angular-applet-spinner.d.ts +12 -0
- package/types/unipin-angular-applet-swipeable.d.ts +66 -0
- package/types/unipin-angular-applet-tabs.d.ts +40 -0
- package/types/unipin-angular-applet-tooltip.d.ts +32 -0
- package/types/unipin-angular-applet.d.ts +3 -0
- package/esm2022/graphql/generated.mjs +0 -938
- package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +0 -78
- package/esm2022/lib/components/approval/form/approval-form.component.mjs +0 -128
- package/esm2022/lib/components/approval/index.mjs +0 -5
- package/esm2022/lib/components/approval/list/approval-list.component.mjs +0 -114
- package/esm2022/lib/components/approval/list/provide-approval-entities.util.mjs +0 -9
- package/esm2022/lib/components/approval/services/approval.service.mjs +0 -46
- package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +0 -123
- package/esm2022/lib/components/audit/index.mjs +0 -3
- package/esm2022/lib/components/audit/list/audit-list.component.mjs +0 -81
- package/esm2022/lib/components/audit/service/audit.service.mjs +0 -49
- package/esm2022/lib/components/audit/types/audit-detail-form.type.mjs +0 -2
- package/esm2022/lib/components/buttons/group/btn-group.component.mjs +0 -43
- package/esm2022/lib/components/buttons/group/interfaces/btn-group-config.interface.mjs +0 -2
- package/esm2022/lib/components/buttons/index.mjs +0 -3
- package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +0 -48
- package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +0 -55
- package/esm2022/lib/components/containers/applet-container/provide-applet-config.util.mjs +0 -9
- package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +0 -23
- package/esm2022/lib/components/containers/column-container/column-container.component.mjs +0 -79
- package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +0 -57
- package/esm2022/lib/components/containers/index.mjs +0 -7
- package/esm2022/lib/components/containers/list-container/index.mjs +0 -3
- package/esm2022/lib/components/containers/list-container/interfaces/list-container-config.interface.mjs +0 -2
- package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +0 -58
- package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +0 -57
- package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +0 -40
- package/esm2022/lib/components/filter/filter.component.mjs +0 -222
- package/esm2022/lib/components/filter/index.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-config.interface.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-search-event.interface.mjs +0 -2
- package/esm2022/lib/components/forms/country-input/form-country-input.component.mjs +0 -122
- package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +0 -157
- package/esm2022/lib/components/forms/date/form-date.component.mjs +0 -117
- package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +0 -49
- package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +0 -68
- package/esm2022/lib/components/forms/index.mjs +0 -12
- package/esm2022/lib/components/forms/input/form-input.component.mjs +0 -98
- package/esm2022/lib/components/forms/number/form-number.component.mjs +0 -97
- package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +0 -33
- package/esm2022/lib/components/forms/password/form-password.component.mjs +0 -100
- package/esm2022/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.mjs +0 -135
- package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +0 -138
- package/esm2022/lib/components/forms/select/form-select.component.mjs +0 -119
- package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +0 -88
- package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +0 -111
- package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +0 -109
- package/esm2022/lib/components/grids/index.mjs +0 -4
- package/esm2022/lib/components/grids/interfaces/grid-config.interface.mjs +0 -2
- package/esm2022/lib/components/grids/services/grid.service.mjs +0 -25
- package/esm2022/lib/components/index.mjs +0 -9
- package/esm2022/lib/components/infinite-scroll/directive/infinite-scroll.directive.mjs +0 -43
- package/esm2022/lib/components/infinite-scroll/index.mjs +0 -3
- package/esm2022/lib/components/infinite-scroll/infinite-scroll.component.mjs +0 -36
- package/esm2022/lib/components/tabs/index.mjs +0 -3
- package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +0 -37
- package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +0 -47
- package/esm2022/lib/guards/auth/auth.guard.mjs +0 -10
- package/esm2022/lib/guards/index.mjs +0 -2
- package/esm2022/lib/interceptors/header/header.interceptor.mjs +0 -29
- package/esm2022/lib/interceptors/index.mjs +0 -3
- package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +0 -83
- package/esm2022/lib/interfaces/index.mjs +0 -2
- package/esm2022/lib/interfaces/user/user.interface.mjs +0 -2
- package/esm2022/lib/modules/index.mjs +0 -3
- package/esm2022/lib/modules/micro-frontend/index.mjs +0 -2
- package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +0 -55
- package/esm2022/lib/modules/micro-frontend/utils/mf-global-state.util.mjs +0 -14
- package/esm2022/lib/modules/permission/directive/permission.directive.mjs +0 -41
- package/esm2022/lib/modules/permission/guards/permission.guard.mjs +0 -26
- package/esm2022/lib/modules/permission/index.mjs +0 -7
- package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +0 -15
- package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +0 -65
- package/esm2022/lib/modules/permission/pages/loading/provide-loading-config.util.mjs +0 -9
- package/esm2022/lib/modules/permission/services/permission.service.mjs +0 -50
- package/esm2022/lib/resolvers/auth/auth.resolver.mjs +0 -87
- package/esm2022/lib/resolvers/index.mjs +0 -2
- package/esm2022/lib/services/auth/auth.service.mjs +0 -171
- package/esm2022/lib/services/country/country.service.mjs +0 -43
- package/esm2022/lib/services/currency/currency.service.mjs +0 -40
- package/esm2022/lib/services/index.mjs +0 -6
- package/esm2022/lib/services/profile/profile.service.mjs +0 -82
- package/esm2022/lib/services/rate-group-code/rate-group-code.service.mjs +0 -31
- package/esm2022/lib/utils/contrast-color-generator/contrast-color-generator.util.mjs +0 -16
- package/esm2022/lib/utils/form-error-message/form-error-message.util.mjs +0 -21
- package/esm2022/lib/utils/format-capitalize/format-capitalize.util.mjs +0 -18
- package/esm2022/lib/utils/index.mjs +0 -5
- package/esm2022/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.mjs +0 -9
- package/esm2022/public-api.mjs +0 -10
- package/esm2022/unipin-angular-applet.mjs +0 -2
- package/graphql/generated.d.ts +0 -16225
- package/index.d.ts +0 -2
- package/lib/components/approval/detail/approval-detail.component.d.ts +0 -26
- package/lib/components/approval/form/approval-form.component.d.ts +0 -33
- package/lib/components/approval/index.d.ts +0 -4
- package/lib/components/approval/list/approval-list.component.d.ts +0 -33
- package/lib/components/approval/list/provide-approval-entities.util.d.ts +0 -3
- package/lib/components/approval/services/approval.service.d.ts +0 -18
- package/lib/components/audit/detail/audit-detail.component.d.ts +0 -33
- package/lib/components/audit/index.d.ts +0 -2
- package/lib/components/audit/list/audit-list.component.d.ts +0 -31
- package/lib/components/audit/service/audit.service.d.ts +0 -15
- package/lib/components/audit/types/audit-detail-form.type.d.ts +0 -12
- package/lib/components/buttons/group/btn-group.component.d.ts +0 -18
- package/lib/components/buttons/group/interfaces/btn-group-config.interface.d.ts +0 -11
- package/lib/components/buttons/index.d.ts +0 -3
- package/lib/components/buttons/loading/btn-loading.component.d.ts +0 -19
- package/lib/components/containers/applet-container/applet-container.component.d.ts +0 -22
- package/lib/components/containers/applet-container/provide-applet-config.util.d.ts +0 -15
- package/lib/components/containers/colum-header-container/column-header-container.component.d.ts +0 -7
- package/lib/components/containers/column-container/column-container.component.d.ts +0 -26
- package/lib/components/containers/column-container/directives/lazy-route.directive.d.ts +0 -17
- package/lib/components/containers/index.d.ts +0 -6
- package/lib/components/containers/list-container/index.d.ts +0 -3
- package/lib/components/containers/list-container/interfaces/list-container-config.interface.d.ts +0 -9
- package/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.d.ts +0 -23
- package/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.d.ts +0 -23
- package/lib/components/containers/modal-container/modal-container.component.d.ts +0 -16
- package/lib/components/filter/filter.component.d.ts +0 -44
- package/lib/components/filter/index.d.ts +0 -4
- package/lib/components/filter/interfaces/filter-config.interface.d.ts +0 -5
- package/lib/components/filter/interfaces/filter-field.interface.d.ts +0 -24
- package/lib/components/filter/interfaces/filter-search-event.interface.d.ts +0 -4
- package/lib/components/forms/country-input/form-country-input.component.d.ts +0 -41
- package/lib/components/forms/currency-input/form-currency-input.component.d.ts +0 -52
- package/lib/components/forms/date/form-date.component.d.ts +0 -33
- package/lib/components/forms/image-picker/directives/drag-n-drop.directive.d.ts +0 -10
- package/lib/components/forms/image-picker/form-image-picker.component.d.ts +0 -21
- package/lib/components/forms/index.d.ts +0 -11
- package/lib/components/forms/input/form-input.component.d.ts +0 -31
- package/lib/components/forms/number/form-number.component.d.ts +0 -27
- package/lib/components/forms/number/pipes/locale-number.pipe.d.ts +0 -8
- package/lib/components/forms/password/form-password.component.d.ts +0 -27
- package/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.d.ts +0 -41
- package/lib/components/forms/searchable-select/form-searchable-select.component.d.ts +0 -42
- package/lib/components/forms/select/form-select.component.d.ts +0 -34
- package/lib/components/forms/textarea/form-textarea.component.d.ts +0 -26
- package/lib/components/grids/grid-pagination/grid-pagination.component.d.ts +0 -33
- package/lib/components/grids/grid-snapshot/grid-snapshot.component.d.ts +0 -36
- package/lib/components/grids/index.d.ts +0 -4
- package/lib/components/grids/interfaces/grid-config.interface.d.ts +0 -16
- package/lib/components/grids/services/grid.service.d.ts +0 -12
- package/lib/components/index.d.ts +0 -8
- package/lib/components/infinite-scroll/directive/infinite-scroll.directive.d.ts +0 -15
- package/lib/components/infinite-scroll/index.d.ts +0 -2
- package/lib/components/infinite-scroll/infinite-scroll.component.d.ts +0 -12
- package/lib/components/tabs/index.d.ts +0 -6
- package/lib/components/tabs/tab-content/tab-content.component.d.ts +0 -14
- package/lib/components/tabs/tab-group/tab-group.component.d.ts +0 -18
- package/lib/guards/auth/auth.guard.d.ts +0 -1
- package/lib/guards/index.d.ts +0 -1
- package/lib/interceptors/header/header.interceptor.d.ts +0 -9
- package/lib/interceptors/index.d.ts +0 -2
- package/lib/interceptors/refresh-token/refresh-token.interceptor.d.ts +0 -14
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/user/user.interface.d.ts +0 -27
- package/lib/modules/index.d.ts +0 -2
- package/lib/modules/micro-frontend/index.d.ts +0 -1
- package/lib/modules/micro-frontend/utils/mf-bootstrap.util.d.ts +0 -9
- package/lib/modules/micro-frontend/utils/mf-global-state.util.d.ts +0 -4
- package/lib/modules/permission/directive/permission.directive.d.ts +0 -16
- package/lib/modules/permission/guards/permission.guard.d.ts +0 -2
- package/lib/modules/permission/index.d.ts +0 -6
- package/lib/modules/permission/pages/401/unauthorized.page.d.ts +0 -5
- package/lib/modules/permission/pages/loading/loading.page.d.ts +0 -18
- package/lib/modules/permission/pages/loading/provide-loading-config.util.d.ts +0 -10
- package/lib/modules/permission/services/permission.service.d.ts +0 -21
- package/lib/resolvers/auth/auth.resolver.d.ts +0 -14
- package/lib/resolvers/index.d.ts +0 -1
- package/lib/services/auth/auth.service.d.ts +0 -39
- package/lib/services/country/country.service.d.ts +0 -16
- package/lib/services/currency/currency.service.d.ts +0 -16
- package/lib/services/index.d.ts +0 -5
- package/lib/services/profile/profile.service.d.ts +0 -12
- package/lib/services/rate-group-code/rate-group-code.service.d.ts +0 -14
- package/lib/utils/contrast-color-generator/contrast-color-generator.util.d.ts +0 -4
- package/lib/utils/form-error-message/form-error-message.util.d.ts +0 -2
- package/lib/utils/format-capitalize/format-capitalize.util.d.ts +0 -1
- package/lib/utils/index.d.ts +0 -4
- package/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.d.ts +0 -2
- package/public-api.d.ts +0 -11
- package/src/assets/scss/forms.scss +0 -65
- package/src/assets/scss/grid.scss +0 -7505
- package/src/assets/scss/select.scss +0 -328
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-forms.mjs","sources":["../../../projects/unipin-angular/forms/components/form-field/field-control.ts","../../../projects/unipin-angular/forms/components/input/input.directive.ts","../../../projects/unipin-angular/forms/components/number/number.directive.ts","../../../projects/unipin-angular/forms/components/checkbox/checkbox.directive.ts","../../../projects/unipin-angular/forms/components/switch/switch.component.ts","../../../projects/unipin-angular/forms/components/password/password.component.ts","../../../projects/unipin-angular/forms/components/select/select.component.ts","../../../projects/unipin-angular/forms/components/country-select/country-select.component.ts","../../../projects/unipin-angular/forms/components/currency-select/currency-select.component.ts","../../../projects/unipin-angular/forms/components/searchable-select/searchable-select.component.ts","../../../projects/unipin-angular/forms/components/datepicker/datepicker.component.ts","../../../projects/unipin-angular/forms/components/date-range-picker/date-range-picker.component.ts","../../../projects/unipin-angular/forms/components/form-field/form-field.component.ts","../../../projects/unipin-angular/forms/utils/set-validators/set-validators.util.ts","../../../projects/unipin-angular/forms/utils/toggle-form-controls/toggle-form-controls.util.ts","../../../projects/unipin-angular/forms/validators/valid-range.validator.ts","../../../projects/unipin-angular/forms/unipin-angular-applet-forms.ts"],"sourcesContent":["import { DoCheck, inject, Injectable, Injector, Signal, signal } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\n\n\nconst errMessage = {\n email: (label: string) => `${ label } is not a valid email`,\n required: (label: string) => `${ label } is required`,\n minlength: (label: string, length?: number) => `${ label } must be at least ${ length } characters`,\n maxlength: (label: string, length?: number) => `${ label } must not exceed ${ length } characters`,\n max: (label: string, max?: number) => `${ label } value must be lower than ${ max }`,\n min: (label: string, min?: number) => `${ label } value must be larger than ${ min }`,\n}\n\nconst extraParamKey = {\n max: 'max',\n min: 'min',\n minlength: 'requiredLength',\n maxlength: 'requiredLength',\n}\n\nexport abstract class UpFieldControl {\n \n public readonly abstract error: Signal<string>;\n public readonly abstract ngControl: NgControl | AbstractControl | null;\n\n public abstract setControlName(name: string): void;\n}\n\n@Injectable()\nexport class UpFieldControlComponent implements UpFieldControl, DoCheck {\n \n public readonly error = signal('');\n \n public readonly injector = inject(Injector);\n public readonly ngControl: NgControl | null = this.injector.get(NgControl, null);\n\n protected readonly _parentForm = inject(NgForm, { optional: true });\n protected readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n protected _controlName = '';\n\n public ngDoCheck(): void{\n this.updateErrorState();\n }\n\n public setControlName(name: string): void{\n this._controlName = name;\n }\n\n protected updateErrorState(): void{\n const control = this.ngControl?.control?? null;\n if (\n !control ||\n !control.touched ||\n !control.dirty\n ) {\n return;\n }\n\n if (!control.errors) {\n this.error.set('');\n return;\n }\n\n const errKey = Object.keys(control.errors)[0];\n const newState = errMessage[errKey as keyof typeof errMessage](this._controlName?? 'Field', control.errors[errKey as keyof typeof control.errors][extraParamKey[errKey as keyof typeof extraParamKey]]);\n\n if (newState !== this.error()) {\n this.error.set(newState);\n }\n }\n}\n","import { Directive, computed, forwardRef, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Directive({\n standalone: true,\n exportAs: 'upInput',\n selector: '[upInput]',\n host: {\n '[class]': '_computedClass()',\n },\n providers:[\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpInputDirective)\n }\n ]\n})\nexport class UpInputDirective extends UpFieldControlComponent {\n\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'peer file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:h-7 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none',\n this.error()? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '',\n this.inlineClass(),\n );\n }\n );\n}\n","import { computed, Directive, ElementRef, forwardRef, HostListener, input, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { UpFieldControl } from '../form-field/field-control';\nimport { UpInputDirective } from '../input/input.directive';\n\n@Directive({\n standalone: true,\n exportAs: 'upNumber',\n selector: '[upNumber]',\n host: { \n '[class]': '_computedClass()' \n },\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpNumberDirective),\n },\n ],\n})\nexport class UpNumberDirective extends UpInputDirective implements ControlValueAccessor {\n \n public readonly magnifyValue = input<number>(1);\n \n protected readonly maxDecimalDigits = computed(\n () => {\n if (\n !this.magnifyValue() ||\n this.magnifyValue() === 1\n ) {\n return 0;\n }\n\n const floatPoint = Math.log10(\n this.magnifyValue()\n );\n return floatPoint % 1 !== 0? 0 : floatPoint;\n }\n );\n\n protected lastCaretPos = 0;\n protected lastRawValue = '';\n protected lastKey: string | null = null;\n\n /**\n * Callback function to handle value changes in the password input.\n * @type {(_val: any) => void}\n */\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n /**\n * Callback function to handle touch events in the password input.\n * @type {() => void}\n */\n protected _onTouched: () => void = (): void => {};\n\n constructor(\n protected readonly renderer: Renderer2,\n protected readonly el: ElementRef<HTMLInputElement>,\n ) {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener('blur')\n public onBlur(): void{\n this._onTouched();\n \n const input = this.el.nativeElement;\n if (!input.value.trim()) {\n input.value = ''\n this._onChange(null);\n return;\n }\n const { integer, decimal } = this.sanitizeNumber(input.value);\n\n const cleanedInteger = integer.replace(/^0+/, '') || '';\n const cleanedDecimal = decimal?? '';\n\n let formatted: string;\n if (\n (\n !cleanedInteger || \n /^0+$/.test(cleanedInteger)\n ) && \n (\n !cleanedDecimal || \n /^0+$/.test(cleanedDecimal)\n )\n ) {\n formatted = '0';\n } else if (!cleanedDecimal) {\n formatted = this.formatWithThousandSeparator(cleanedInteger || '0');\n } else {\n formatted = `${ this.formatWithThousandSeparator(cleanedInteger || '0') },${ cleanedDecimal }`;\n }\n input.value = formatted;\n }\n\n @HostListener('input', ['$event'])\n public onInput(event: Event): void{\n const input = event.target as HTMLInputElement;\n const postRaw = input.value;\n const postCaret = input.selectionStart ?? postRaw.length;\n\n const formatted = this.formatNumber(postRaw);\n input.value = formatted;\n\n const numericValue = Number(\n formatted.replace(/\\./g, '').replace(',', '.')\n );\n this._onChange(numericValue);\n\n const digitsBefore = postRaw.slice(0, postCaret).replace(/\\D/g, '').length;\n let newCaret = this.lastKey === ','? this.findCommaCaret(formatted, digitsBefore) : this.mapDigitsToIndex(formatted, digitsBefore);\n \n input.setSelectionRange(newCaret, newCaret);\n\n this.lastKey = null;\n this.lastRawValue = postRaw;\n this.lastCaretPos = newCaret;\n }\n\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void{\n const input = event.target as HTMLInputElement;\n const allowedKeys = [\n 'Backspace',\n 'Tab',\n 'Enter',\n 'Escape',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n ];\n\n this.lastKey = event.key;\n this.lastRawValue = input.value;\n this.lastCaretPos = input.selectionStart ?? input.value.length;\n\n if (\n (\n event.ctrlKey || \n event.metaKey\n ) && \n ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())\n ) {\n return;\n }\n if (allowedKeys.includes(event.key)) return;\n\n if (event.key === ',') {\n if (\n this.maxDecimalDigits() === 0 || \n input.value.includes(',')\n ) {\n event.preventDefault();\n }\n return;\n }\n\n if (!/^[0-9,]$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n /**\n * Registers a callback function to be called when the password input value changes.\n * @param {(_val: any) => void} fn - Callback function for value changes.\n */\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the password input is touched.\n * @param {() => void} fn - Callback function for touch events.\n */\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void{\n this.renderer.setProperty(\n this.el.nativeElement,\n 'disabled',\n isDisabled\n );\n }\n\n public writeValue(value: any): void{\n this.el.nativeElement.value = this.formatNumber(\n String(value?? '')\n );\n }\n\n protected findCommaCaret(formatted: string, digitsBefore: number): number{\n const commaIndex = formatted.indexOf(',');\n \n return commaIndex >= 0? commaIndex + 1 : this.mapDigitsToIndex(formatted, digitsBefore);\n }\n\n protected mapDigitsToIndex(formatted: string, digitsBefore: number): number{\n if (digitsBefore <= 0) return 0;\n \n let count = 0;\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) {\n count++;\n \n if (count === digitsBefore) {\n return i + 1;\n }\n }\n }\n return formatted.length;\n }\n\n protected formatNumber(value: string): string{\n if (!value) {\n return '';\n }\n const { integer, decimal } = this.sanitizeNumber(value);\n const formattedInt = this.formatWithThousandSeparator(integer || '');\n \n if (decimal !== undefined) {\n return `${ formattedInt || '0' },${ decimal }`;\n }\n return formattedInt || '0';\n }\n\n protected formatWithThousandSeparator(value: string): string{\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n }\n\n protected sanitizeNumber(value: string): { integer: string; decimal?: string }{\n const onlyDigitsComma = value.replace(/[^0-9,]/g, '');\n const singleComma = onlyDigitsComma.replace(\n /,/g, \n (_, i) => onlyDigitsComma.indexOf(',') === i ? ',' : ''\n );\n \n const [integerPart, decimalPart] = singleComma.split(',');\n return {\n integer: integerPart || '',\n decimal: decimalPart?.slice(0, this.maxDecimalDigits()),\n };\n }\n}\n","import { Directive, computed, forwardRef, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Directive({\n standalone: true,\n exportAs: 'upCheckbox',\n selector: '[upCheckbox]',\n host: {\n type: 'checkbox',\n '[class]': '_computedClass()',\n },\n providers:[\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpCheckboxDirective)\n }\n ]\n})\nexport class UpCheckboxDirective extends UpFieldControlComponent {\n\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'peer dark:bg-input/30 border-input size-5 min-w-0 rounded-md border bg-transparent shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-border/40 relative cursor-pointer',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none',\n 'appearance-none checked:border-primary checked:bg-primary',\n 'checked:after:content-[\\'\\'] checked:after:absolute checked:after:border-white checked:after:border-b-2 checked:after:border-r-2 checked:after:w-1.5 checked:after:h-2.5 checked:after:rounded-br-xs checked:after:rotate-45 checked:after:left-1.5 checked:after:top-0.75',\n this.error()? 'ring-destructive/20 dark:ring-destructive/40 border-destructive focus-visible:ring-destructive/50' : '',\n this.inlineClass(),\n );\n }\n );\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-switch',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'inline-flex items-center cursor-pointer'\n },\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpSwitchComponent),\n }\n ],\n template: `\n <input\n type=\"checkbox\" \n class=\"sr-only peer\"\n [checked]=\"checked()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n (blur)=\"touch()\"\n />\n \n <span \n (click)=\"toggle()\"\n [class]=\"_computedClass()\"\n >\n </span>\n `\n})\nexport class UpSwitchComponent extends UpFieldControlComponent implements ControlValueAccessor {\n\n public readonly checked = model(false);\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n public readonly required = input(\n false, \n {\n transform: booleanAttribute\n }\n );\n public readonly disabled = input(\n false, \n {\n transform: booleanAttribute\n }\n );\n \n public isTouched: boolean = false;\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n `\n relative w-9 h-5 flex items-center justify-start flex-shrink-0 outline outline-input bg-input rounded-full \n transition-colors duration-300 ease-in-out \n peer-checked:bg-primary after:absolute \n after:top-1/2 after:left-[2px] after:-translate-y-1/2\n after:w-4 after:h-4 after:bg-white after:rounded-full after:shadow-md\n after:transition-transform after:duration-300 after:ease-in-out\n peer-checked:after:translate-x-[15px]\n peer-focus-visible:ring-2 peer-focus-visible:ring-primary peer-focus-visible:ring-offset-2\n `,\n this.inlineClass(),\n );\n }\n );\n \n protected _onChange: (_val: any) => void = (_val: any): void => {};\n protected _onTouched: () => void = (): void => {};\n\n constructor() {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public writeValue(value: boolean): void{\n this.checked.set(value);\n }\n\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public touch(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n public toggle(): void{\n if (this.disabled()) {\n return;\n }\n \n this.checked.set(!this.checked());\n this._onChange(this.checked());\n this._onTouched();\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal, WritableSignal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ClassValue } from 'clsx';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matVisibilityRound, matVisibilityOffRound } from '@ng-icons/material-icons/round';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpInputDirective } from './../input/input.directive';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-password',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block relative',\n },\n imports: [\n NgIcon,\n UpInputDirective\n ],\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpPasswordComponent)\n },\n provideIcons(\n { \n matVisibilityRound, \n matVisibilityOffRound \n }\n ),\n ],\n template: `\n <input\n upInput\n maxlength=\"64\"\n [type]=\"type()\"\n [value]=\"value()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n [class]=\"_computedClass()\"\n [placeholder]=\"placeholder()?? ''\"\n [attr.autocomplete]=\"autocomplete()\"\n (blur)=\"touch()\"\n (input)=\"change($event.target)\"\n />\n \n <ng-icon\n class=\"absolute right-3 top-1/2 -translate-y-1/2 cursor-pointer text-gray-500 hover:text-primary peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\"\n [name]=\"type() === 'password'? 'matVisibilityRound' : 'matVisibilityOffRound'\"\n (click)=\"changeType()\"\n />\n `,\n})\nexport class UpPasswordComponent extends UpFieldControlComponent implements ControlValueAccessor {\n\n public readonly placeholder = input<string | undefined>();\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n public readonly autocomplete = input<'off' | 'current-password' | 'new-password'>('off');\n\n public readonly required = input(\n false, \n { \n transform: booleanAttribute \n }\n );\n public readonly disabled = model<boolean>(false);\n \n public readonly value: WritableSignal<string> = signal('');\n public readonly type = signal<'text' | 'password'>('password');\n\n public isTouched: boolean = false;\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'pr-10 peer', \n this.inlineClass()\n );\n }\n );\n\n /**\n * Callback function to handle value changes in the password input.\n * @type {(_val: any) => void}\n */\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n /**\n * Callback function to handle touch events in the password input.\n * @type {() => void}\n */\n protected _onTouched: () => void = (): void => {};\n\n constructor() {\n super();\n\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * Registers a callback function to be called when the password input value changes.\n * @param {(_val: any) => void} fn - Callback function for value changes.\n */\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the password input is touched.\n * @param {() => void} fn - Callback function for touch events.\n */\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n /**\n * Writes a new value to the password input.\n * @param {*} val - The new value to be set.\n */\n public writeValue(val: any): void{\n this.value.set(val?? '');\n }\n\n /** \n * Function that is called by the forms API when the control status change to or from 'DISABLED'.\n * Depending on the status, it enables or disables the appropriate DOM element\n * @param {boolean} isDisabled - disable state\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n \n /**\n * Toggles the type of the password input between text and password.\n */\n public changeType(): void{\n if (!this.disabled()) {\n this.type.set(\n this.type() === 'text'? 'password' : 'text'\n );\n }\n }\n\n /**\n * Event handler to handle touch status.\n * \n * @returns {void}\n */\n public touch(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n /**\n * Event handler for changes in the password input.\n * If not touched, marks the input as touched.\n * Updates the value and triggers change detection.\n * @param {any} param - Event detail containing the new password input value.\n */\n public change({ value }: any): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n\n this.value.set(value);\n this._onChange(\n this.value()\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input, output, contentChild, InputSignal, Signal, OutputEmitterRef, model, ModelSignal, booleanAttribute } from '@angular/core';\nimport { ControlValueAccessor, FormsModule } from '@angular/forms';\nimport { ClassValue } from 'clsx';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-select',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block relative',\n },\n imports: [\n FormsModule,\n NgSelectComponent\n ],\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpSelectComponent)\n }\n ],\n template: `\n <ng-select\n [items]=\"items()\"\n [ngModel]=\"value()\"\n [addTag]=\"addTag()\"\n [loading]=\"loading()\"\n [multiple]=\"multiple()\"\n [readonly]=\"disabled()\"\n [appendTo]=\"appendTo()\"\n [clearable]=\"clearable()\"\n [bindLabel]=\"bindLabel()\"\n [bindValue]=\"bindValue()\"\n [class]=\"_computedClass()\"\n [searchable]=\"searchable()\"\n [placeholder]=\"placeholder()\"\n [virtualScroll]=\"virtualScroll()\"\n [attr.data-disabled]=\"disabled()\"\n (blur)=\"touch()\"\n (ngModelChange)=\"change($event)\"\n />\n `,\n})\nexport class UpSelectComponent extends UpFieldControlComponent implements ControlValueAccessor {\n \n public readonly items: InputSignal<any[]> = input.required<any[]>();\n \n public readonly label: InputSignal<string> = input<string>(''); \n public readonly appendTo: InputSignal<string> = input<string>('');\n public readonly placeholder: InputSignal<string> = input<string>('');\n public readonly bindLabel: InputSignal<string> = input<string>('label');\n public readonly bindValue: InputSignal<string> = input<string>('value');\n public readonly value: ModelSignal<any | null> = model<any | null>(null);\n public readonly inlineClass: InputSignal<ClassValue> = input<ClassValue>('', { alias: 'class' });\n\n public readonly loading: InputSignal<boolean> = input<boolean>(false);\n public readonly multiple: InputSignal<boolean> = input<boolean>(false);\n public readonly required: InputSignal<boolean> = input<boolean>(false);\n public readonly disabled: InputSignal<boolean> = input<boolean>(false);\n public readonly clearable: InputSignal<boolean> = input<boolean>(true);\n\n public readonly addTag = input(false, { transform: booleanAttribute });\n public readonly searchable = input(false, { transform: booleanAttribute });\n public readonly virtualScroll = input(false, { transform: booleanAttribute });\n \n public readonly changed: OutputEmitterRef<any> = output<any>();\n \n public readonly control: Signal<UpFieldControl | undefined> = contentChild(UpFieldControl);\n \n public readonly _computedClass: Signal<any> = computed(\n () => {\n return up(\n 'w-full min-w-0 h-9',\n 'data-[disabled=true]:[&>.ng-select-container]:cursor-not-allowed! data-[disabled=true]:[&>.ng-select-container]:opacity-50! data-[disabled=true]:[&>.ng-select-container]:bg-transparent!', \n '[&>.ng-select-container]:border! [&>.ng-select-container]:border-input! [&>.ng-select-container]:rounded-md! [&>.ng-select-container]:cursor-pointer! [&>.ng-select-container]:shadow-xs! [&>.ng-select-container]:items-center!',\n '[&>.ng-select-container>.ng-value-container>.ng-placeholder]:text-base! md:[&>.ng-select-container>.ng-value-container>.ng-placeholder]:text-sm!',\n '[&>.ng-select-container>.ng-value-container>.ng-value]:text-base! md:[&>.ng-select-container>.ng-value-container>.ng-value]:text-sm! [&>.ng-select-container>.ng-value-container>.ng-value]:text-black!',\n '[&.ng-select-focused>.ng-select-container]:border-ring! [&.ng-select-focused>.ng-select-container]:ring-ring/50! [&.ng-select-focused>.ng-select-container]:ring-[3px]!',\n this.inlineClass(),\n );\n }\n );\n \n protected isTouched: boolean = false;\n protected _onTouched: () => void = (): void => {};\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n constructor() {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * Lifecycle hook — initializes the control name for form integration.\n */\n public ngOnInit(): void{\n this.setControlName(<string> this.ngControl?.name);\n }\n\n /**\n * Writes a new value from the form model into the view.\n * \n * @param {any} value - The value to assign to the select.\n */\n public writeValue(value: any): void{\n this.value.set(value);\n }\n\n /**\n * Registers a callback function to be called when the select value changes.\n * \n * @param {(val: any) => void} fn - Callback function to handle value changes.\n */\n public registerOnChange(fn: (val: any) => void): void{\n this._onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the component is touched.\n * \n * @param {() => void} fn - Callback function for touch events.\n */\n public registerOnTouched(fn: () => void): void{\n this._onTouched = fn;\n }\n\n /**\n * Marks the component as touched (used for form validation state).\n */\n public touch(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n /**\n * Handles changes from the dropdown and propagates them to the form model.\n * \n * @param {any} e - The new value emitted by the ng-select component.\n */\n public change(e?: any): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n\n if (!this.disabled()) {\n this.value.set(e);\n \n this._onChange(this.value());\n this.changed.emit(this.value());\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, input, model, OnDestroy, OnInit, output, OutputEmitterRef, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { ClassValue } from 'clsx';\nimport { Country } from '@unipin/graphql-schema';\nimport { CountryService } from '@unipin/angular-applet/common';\nimport { UpSelectComponent } from '../select/select.component';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-country-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { \n class: 'block' \n },\n imports: [\n UpSelectComponent\n ],\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpCountrySelectComponent),\n }\n ],\n template: `\n <up-select\n searchable\n virtualScroll \n appendTo=\"body\"\n bindValue=\"code\"\n bindLabel=\"name\"\n [value]=\"value()\"\n [items]=\"countries()\"\n [loading]=\"isLoading()\"\n [multiple]=\"multiple()\"\n [class]=\"inlineClass()\"\n [clearable]=\"clearable()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled() || _disabled()\"\n (blur)=\"onTouched()\"\n (changed)=\"change($event)\"\n />\n `,\n})\nexport class UpCountrySelectComponent extends UpFieldControlComponent implements OnInit, OnDestroy, ControlValueAccessor {\n \n public readonly multiple = input<boolean>(false);\n public readonly clearable = input<boolean>(true);\n public readonly placeholder = input<string>('Select country');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n public readonly value = model<string | null>(null);\n\n public readonly changed: OutputEmitterRef<Country> = output<Country>();\n\n public readonly countries = signal<Country[]>([]);\n public readonly isLoading = signal<boolean>(true);\n public readonly _disabled = signal<boolean>(false);\n\n protected sub?: Subscription;\n protected isTouched: boolean = false;\n protected _onTouched: () => void = (): void => {};\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n constructor(\n protected readonly service: CountryService\n ) {\n super();\n \n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void{\n this.sub = this.service.query().subscribe({\n error: () => {\n this.countries.set([]);\n this.isLoading.set(false);\n },\n next: ({ data: { webConfigMsCountry: { data }}}) => {\n this.countries.set(data as Country[]);\n this.isLoading.set(false);\n }\n });\n }\n\n public ngOnDestroy(): void{\n this.sub?.unsubscribe();\n }\n\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void{\n this._disabled.set(isDisabled);\n }\n\n public writeValue(value: any): void{\n this.value.set(value);\n }\n\n public onTouched(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n public change(value: any): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n\n if (!this.disabled()) {\n this.value.set(value);\n \n this._onChange(value);\n this.changed.emit(\n this.countries().find(c => c.code === value)!\n );\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, input, model, OnDestroy, OnInit, output, OutputEmitterRef, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { ClassValue } from 'clsx';\nimport { QueryResult } from '@unipin/angular-gql';\nimport { Currency, CurrencyResult } from '@unipin/graphql-schema';\nimport { CurrencyService } from '@unipin/angular-applet/common';\nimport { UpSelectComponent } from '../select/select.component';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-currency-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { \n class: 'block' \n },\n imports: [\n UpSelectComponent\n ],\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpCurrencySelectComponent)\n }\n ],\n template: `\n <up-select\n searchable\n virtualScroll \n appendTo=\"body\"\n bindValue=\"code\"\n bindLabel=\"displayLabel\"\n [value]=\"value()\"\n [items]=\"currencies()\"\n [loading]=\"isLoading()\"\n [multiple]=\"multiple()\"\n [class]=\"inlineClass()\"\n [clearable]=\"clearable()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled() || _disabled()\"\n (blur)=\"onTouched()\"\n (changed)=\"change($event)\"\n />\n `,\n})\nexport class UpCurrencySelectComponent extends UpFieldControlComponent implements OnInit, OnDestroy, ControlValueAccessor {\n \n public readonly multiple = input<boolean>(false);\n public readonly clearable = input<boolean>(true);\n public readonly placeholder = input<string>('Select currency');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n public readonly value = model<string | null>(null);\n public readonly changed: OutputEmitterRef<Currency> = output<Currency>();\n\n public readonly isLoading = signal<boolean>(true);\n public readonly _disabled = signal<boolean>(false);\n public readonly currencies = signal<Array<Currency & { displayLabel: string }>>([]);\n\n protected sub?: Subscription;\n protected isTouched: boolean = false;\n protected _onTouched: () => void = (): void => {};\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n constructor(\n protected readonly service: CurrencyService\n ) {\n super();\n \n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void{\n this.sub = this.service.query().subscribe(\n {\n error: () => {\n this.currencies.set([]);\n this.isLoading.set(false);\n },\n next: ({ data: { webConfigMsCurrency: { data }}}: QueryResult<{ webConfigMsCurrency: CurrencyResult }>) => {\n this.currencies.set(\n (data as Currency[]).map(\n ({ code, name, ...ccy }) => {\n return {\n ...ccy,\n code,\n name,\n displayLabel: `${ code } - ${ name }`\n };\n }\n )\n );\n this.isLoading.set(false);\n }\n }\n );\n }\n\n public ngOnDestroy(): void{\n this.sub?.unsubscribe();\n }\n\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void{\n this._disabled.set(isDisabled);\n }\n\n public writeValue(value: any): void{\n this.value.set(value);\n }\n\n public onTouched(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n public change(value: any): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n\n if (!this.disabled()) {\n this.value.set(value);\n \n this._onChange(value);\n this.changed.emit(\n this.currencies().find(c => c.code === value)!\n );\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, forwardRef, Signal, InputSignal, input, ModelSignal, model, booleanAttribute, OutputEmitterRef, output, contentChild, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule, ControlValueAccessor } from '@angular/forms';\nimport { Observable, Subject, distinctUntilChanged, debounceTime, tap, switchMap, map, catchError, of } from 'rxjs';\nimport { ClassValue } from 'clsx';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-searchable-select',\n styleUrl: '../select/select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block relative',\n },\n imports: [\n FormsModule,\n NgSelectComponent\n ],\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpSearchableSelectComponent)\n }\n ],\n template: `\n <ng-select\n typeToSearchText=\"Please enter 3 or more characters\"\n [minTermLength]=\"3\"\n [virtualScroll]=\"true\"\n [editableSearchTerm]=\"true\"\n \n [typeahead]=\"typeahead\"\n \n [items]=\"items()\"\n [ngModel]=\"value()\"\n [addTag]=\"addTag()\"\n [loading]=\"loading()\"\n [multiple]=\"multiple()\"\n [readonly]=\"disabled()\"\n [appendTo]=\"appendTo()\"\n [clearable]=\"clearable()\"\n [bindLabel]=\"bindLabel()\"\n [bindValue]=\"bindValue()\"\n [class]=\"_computedClass()\"\n [placeholder]=\"placeholder()\"\n [virtualScroll]=\"virtualScroll()\"\n [attr.data-disabled]=\"disabled()\"\n \n (blur)=\"touch()\"\n (change)=\"change($event)\"\n />\n `,\n})\nexport class UpSearchableSelectComponent extends UpFieldControlComponent implements ControlValueAccessor {\n \n public readonly query: InputSignal<(keyword: string) => Observable<any>> = input.required<(keyword: string) => Observable<any>>(); \n \n public readonly label = input<string>(''); \n public readonly appendTo = input<string>('');\n public readonly placeholder = input<string>('');\n public readonly initialItems = input<any[]>([]); \n public readonly bindLabel = input<string>('label');\n public readonly bindValue = input<string>('value');\n\n public readonly inlineClass: InputSignal<ClassValue> = input<ClassValue>('', { alias: 'class' });\n\n public readonly addTag = input(false, { transform: booleanAttribute });\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly required = input(false, { transform: booleanAttribute });\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly clearable = input(true, { transform: booleanAttribute });\n public readonly virtualScroll = input(false, { transform: booleanAttribute });\n\n public readonly loading: ModelSignal<boolean> = model<boolean>(false);\n public readonly value: ModelSignal<any | null> = model<any | null>(null);\n\n public readonly changed: OutputEmitterRef<any> = output<any>();\n\n public readonly control: Signal<UpFieldControl | undefined> = contentChild(UpFieldControl);\n\n public readonly _computedClass: Signal<any> = computed(\n () => {\n return up(\n 'w-full min-w-0 h-9',\n 'data-[disabled=true]:[&>.ng-select-container]:cursor-not-allowed! data-[disabled=true]:[&>.ng-select-container]:opacity-50! data-[disabled=true]:[&>.ng-select-container]:bg-transparent!', \n '[&>.ng-select-container]:border! [&>.ng-select-container]:border-input! [&>.ng-select-container]:rounded-md! [&>.ng-select-container]:cursor-pointer! [&>.ng-select-container]:shadow-xs! [&>.ng-select-container]:items-center!',\n '[&>.ng-select-container>.ng-value-container>.ng-placeholder]:text-base! md:[&>.ng-select-container>.ng-value-container>.ng-placeholder]:text-sm!',\n '[&>.ng-select-container>.ng-value-container>.ng-value]:text-base! md:[&>.ng-select-container>.ng-value-container>.ng-value]:text-sm! [&>.ng-select-container>.ng-value-container>.ng-value]:text-black!',\n '[&.ng-select-focused>.ng-select-container]:border-ring! [&.ng-select-focused>.ng-select-container]:ring-ring/50! [&.ng-select-focused>.ng-select-container]:ring-[3px]!',\n this.inlineClass(),\n );\n }\n );\n \n public readonly items: Signal<any[]> = computed(\n () => {\n const results = this._queryResults();\n return results.length > 0? results : this.initialItems();\n }\n );\n public readonly typeahead: Subject<string> = new Subject<string>();\n\n protected readonly query$: Observable<any[]> = this.typeahead.pipe(\n distinctUntilChanged(),\n debounceTime(300),\n tap(\n () => this.loading.set(true)\n ),\n switchMap(\n (k: string) => {\n return this.query()(k).pipe(\n map(\n (result: any[]) => !result.length? this.initialItems() : result\n ),\n catchError(\n () => of(this.initialItems())\n )\n );\n }\n ),\n tap(\n () => this.loading.set(false)\n )\n );\n\n protected readonly _queryResults: Signal<any[]> = toSignal(this.query$, { initialValue: [] });\n\n protected isTouched: boolean = false;\n protected _onTouched: () => void = (): void => {};\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n constructor() {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void{\n this.setControlName(<string> this.ngControl?.name);\n }\n\n public registerOnChange(fn: (val: any) => void): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void{\n this._onTouched = fn;\n }\n\n public writeValue(value: any): void{\n this.value.set(value);\n }\n\n public touch(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n }\n\n public change(e?: any): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n\n if (!this.disabled()) {\n if (!e) {\n this.value.set(null);\n } else {\n this.value.set(\n !this.multiple()? e[ this.bindValue() ] : e.map((o: any) => o[ this.bindValue() ])\n );\n }\n \n this._onChange(this.value());\n this.changed.emit(this.value());\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, input, signal, viewChild } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matCalendarMonthRound } from '@ng-icons/material-icons/round';\nimport { format } from 'date-fns';\nimport { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { SingleDate, UpCalendarComponent } from '@unipin/angular-applet/calendar';\nimport { UpPopoverComponent, UpPopoverContentRefDirective, UpPopoverTriggerDirective } from '@unipin/angular-applet/popover';\nimport { UpFieldControl, UpFieldControlComponent } from '../form-field/field-control';\n\n@Component({\n standalone: true,\n selector: 'up-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpDatepickerComponent),\n },\n provideIcons(\n { \n matCalendarMonthRound\n }\n ),\n ],\n imports: [\n NgIcon,\n UpButtonDirective, \n UpPopoverComponent, \n UpCalendarComponent, \n UpPopoverTriggerDirective, \n UpPopoverContentRefDirective\n ],\n template: `\n <up-popover \n alignment=\"start\" \n placementOffset=\"4\"\n >\n <button\n upButton\n upPopoverTrigger\n type=\"button\"\n variant=\"ghost\"\n [class]=\"_computedClass()\"\n [disabled]=\"disabled() || _disabled()\"\n [attr.data-has-value]=\"value()? true : false\"\n (blur)=\"touch()\"\n #btnTrigger\n >\n {{ value()? formattedDate() : placeholder() }}\n\n <ng-icon\n size=\"16\"\n class=\"ml-auto\"\n name=\"matCalendarMonthRound\"\n />\n </button>\n\n <ng-container *upPopoverContentRef>\n <up-calendar\n [activeDay]=\"value()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n (selected)=\"selectedDate($event)\"\n />\n </ng-container>\n </up-popover>\n `\n})\nexport class UpDatepickerComponent extends UpFieldControlComponent implements ControlValueAccessor {\n \n public readonly placeholder = input<string>('');\n public readonly minDate = input<SingleDate>(null);\n public readonly maxDate = input<SingleDate>(null);\n\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n public readonly dateFormat = input<string>('dd LLL yyyy', { alias: 'format' });\n \n public readonly disabled = input(\n false,\n {\n transform: booleanAttribute\n }\n );\n \n public readonly btnTrigger = viewChild<ElementRef<HTMLButtonElement>>('btnTrigger');\n \n public readonly value = signal<SingleDate>(null);\n public readonly _disabled = signal<boolean>(false);\n \n public readonly formattedDate = computed(\n () => {\n return this.value()? format(this.value()!, this.dateFormat()) : ''\n }\n );\n \n public readonly _computedClass = computed(\n () => {\n return up(\n 'flex justify-between px-3 border border-border min-w-48 w-full font-normal hover:not-disabled:text-primary! data-[has-value=false]:text-muted-foreground',\n this.inlineClass()\n )\n }\n );\n\n protected _isTouched: boolean = false;\n protected _onTouched: () => void = () => {};\n protected _onChange: (_val: any) => void = () => {};\n\n constructor() {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public writeValue(value: any): void{\n this.value.set(value?? null);\n }\n\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void{\n this._disabled.set(isDisabled);\n }\n\n public touch(): void{\n this._markTouched();\n }\n \n public selectedDate(day: SingleDate): void{\n this.value.set(day);\n \n this._onChange(day);\n this._markTouched();\n \n this.btnTrigger()?.nativeElement.click();\n }\n\n protected _markTouched(): void{\n if (this._isTouched) return;\n \n this._onTouched();\n this._isTouched = true;\n }\n}\n","import { Component, ChangeDetectionStrategy, forwardRef, booleanAttribute, computed, input, signal } from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\nimport { NgIcon, provideIcons } from \"@ng-icons/core\";\nimport { matCalendarMonthRound } from \"@ng-icons/material-icons/round\";\nimport { format } from \"date-fns\";\nimport { ClassValue } from \"clsx\";\nimport { up } from '@unipin/angular-applet/common';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { RangeDate, SingleDate, UpCalendarComponent } from '@unipin/angular-applet/calendar';\nimport { UpPopoverComponent, UpPopoverTriggerDirective, UpPopoverContentRefDirective } from '@unipin/angular-applet/popover';\nimport { UpFieldControl, UpFieldControlComponent } from \"../form-field/field-control\";\n\n\n@Component({\n standalone: true,\n selector: 'up-date-range-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpDateRangePickerComponent)\n },\n provideIcons(\n { \n matCalendarMonthRound \n }\n ),\n ],\n imports: [\n NgIcon,\n UpButtonDirective, \n UpPopoverComponent, \n UpCalendarComponent, \n UpPopoverTriggerDirective, \n UpPopoverContentRefDirective\n ],\n template: `\n <up-popover \n alignment=\"start\" \n placementOffset=\"4\"\n >\n <button\n upButton\n upPopoverTrigger\n type=\"button\"\n variant=\"ghost\"\n [class]=\"_computedClass()\"\n [disabled]=\"disabled() || _disabled()\"\n [attr.data-has-value]=\"value().from && value().to? true : false\"\n (blur)=\"touch()\"\n >\n {{ value().from && value().to? formattedDate() : placeholder()}}\n\n <ng-icon\n size=\"16\"\n class=\"ml-auto\"\n name=\"matCalendarMonthRound\"\n />\n </button>\n\n <ng-container *upPopoverContentRef>\n <up-calendar\n variant=\"range\"\n [activeDay]=\"null\"\n [activeRangeDay]=\"value()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n (rangeSelected)=\"selectedDate($event)\"\n />\n </ng-container>\n </up-popover>\n `\n})\nexport class UpDateRangePickerComponent extends UpFieldControlComponent implements ControlValueAccessor {\n\n public readonly placeholder = input<string>('');\n public readonly minDate = input<SingleDate>(null);\n public readonly maxDate = input<SingleDate>(null);\n\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n public readonly dateFormat = input<string>('dd LLL yyyy', { alias: 'format' });\n \n public readonly disabled = input(\n false,\n {\n transform: booleanAttribute\n }\n );\n\n public readonly _disabled = signal<boolean>(false);\n public readonly value = signal<RangeDate>({ from: null, to: null });\n \n public readonly formattedDate = computed(\n () => {\n return this.value().from && this.value().to? `${ format(this.value().from!, this.dateFormat()) } - ${ format(this.value().to!, this.dateFormat()) }` : ''\n }\n );\n \n public readonly _computedClass = computed(\n () => {\n return up(\n 'flex justify-between px-3 border border-border min-w-60 w-full font-normal hover:not-disabled:text-primary! data-[has-value=false]:text-muted-foreground',\n this.inlineClass()\n )\n }\n );\n\n protected _isTouched: boolean = false;\n protected _onTouched: () => void = () => {};\n protected _onChange: (_val: any) => void = () => {};\n\n constructor() {\n super();\n \n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public writeValue(value: any): void{\n this.value.set(value?? null);\n }\n\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void{\n this._disabled.set(isDisabled);\n }\n\n public touch(): void{\n this._markTouched();\n }\n \n public selectedDate(range: RangeDate): void{\n this.value.set(range);\n \n this._onChange(range);\n this._markTouched();\n }\n\n protected _markTouched(): void{\n if (this._isTouched) return;\n \n this._onTouched();\n this._isTouched = true;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, effect, input } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl } from './field-control';\n\n@Component({\n standalone: true,\n selector: 'up-form-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n template: `\n <div \n class=\"\n group flex flex-col gap-2\n has-[input[type='checkbox']]:flex-row has-[input[type='checkbox']]:items-center\n \"\n >\n @if (label()) {\n <label \n class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 select-none group-has-[input[type='checkbox']]:order-2\"\n [for]=\"name()\"\n [class.text-destructive]=\"control()?.error()\"\n >\n {{ label() }}\n </label>\n }\n\n <ng-content />\n </div>\n\n @if (control()?.error()) {\n <p class=\"text-xs font-medium text-destructive\">\n {{ control()?.error() }}\n </p>\n }\n @else if (hint()) {\n <p class=\"text-xs text-muted-foreground\">\n {{ hint() }}\n </p>\n }\n `\n})\nexport class UpFormFieldComponent {\n\n public readonly name = input<string>('');\n public readonly hint = input<string>('');\n public readonly label = input<string>('');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n public readonly control = contentChild(UpFieldControl);\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'block space-y-2',\n this.inlineClass(),\n );\n }\n );\n\n constructor() {\n effect(\n () => {\n if (!this.control()) {\n throw new Error('Form field must contain a field control, eg: input, checkbox, textarea, etc.');\n }\n this.control()!.setControlName(this.label());\n }\n );\n }\n}\n","import { FormGroup, ValidatorFn } from '@angular/forms';\n\nexport function setValidator(form: FormGroup, keys: string[], validators: ValidatorFn | ValidatorFn[]): void {\n \n if (\n !keys.length || \n keys.length === 1\n ) {\n throw new Error('Use normal action for single keys and keys cannot be empty.');\n }\n\n keys.forEach(\n (key) => {\n const control = form.get(key);\n\n if (control) {\n control.setValidators(validators);\n control.updateValueAndValidity();\n }\n }\n );\n}\n","import { FormGroup } from '@angular/forms';\n\nexport function toggleFormControls(form: FormGroup, keys: string[], mode: 'enable' | 'disable'): void{\n \n if (\n !keys.length ||\n keys.length === 1\n ) {\n throw new Error('Use normal action for single keys and keys cannot be empty.');\n }\n keys.forEach((key) => form.get(key)?.[mode]());\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nfunction prettifyLabel(name: string): string{\n \n return name\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/_/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase());\n}\n\nfunction convertToDate(value: any): Date | null{\n \n if (value instanceof Date) return value;\n \n if (\n typeof value === 'string' &&\n !isNaN(Date.parse(value))\n ) {\n return new Date(value);\n }\n return null;\n}\n\n/**\n * Range validator for number and date values.\n * @param {string} fromKey - The \"from\" control name\n * @param {string} toKey - The \"to\" control name\n * @returns {ValidatorFn} Throw error message when fromKey is greater than toKey\n *\n * Usage:\n * this.form = new FormGroup({\n * agingFrom: new FormControl(),\n * agingTo: new FormControl(),\n * }, { validators: rangeValidator('agingFrom', 'agingTo') });\n */\nexport function validRangeValidator(fromKey: string, toKey: string): ValidatorFn{\n \n return (group: AbstractControl): ValidationErrors | null => {\n if (!group) {\n return null;\n }\n\n const toControl = group.get(toKey);\n const fromControl = group.get(fromKey);\n \n if (\n !fromControl || \n !toControl\n ) {\n return null;\n }\n\n const toValue = toControl.value;\n const fromValue = fromControl.value;\n \n if (\n fromValue === null || \n toValue === null || \n fromValue === '' || \n toValue === ''\n ) {\n return null;\n }\n\n let isInvalid = false;\n const toDate = convertToDate(toValue);\n const fromDate = convertToDate(fromValue);\n\n if (fromDate && toDate) {\n isInvalid = toDate <= fromDate;\n } else if (\n !isNaN(fromValue) && \n !isNaN(toValue)\n ) {\n isInvalid = Number(toValue) <= Number(fromValue);\n }\n\n return !isInvalid? null : {\n rangeInvalid: {\n to: toKey,\n from: fromKey,\n message: `${ prettifyLabel(toKey) } must be greater than ${ prettifyLabel(fromKey) }`\n }\n }\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, signal, computed, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import * as i1 from 'angular-froala-wysiwyg';
|
|
5
|
+
import { FroalaViewModule, FroalaEditorModule } from 'angular-froala-wysiwyg';
|
|
6
|
+
import FroalaEditor from 'froala-editor';
|
|
7
|
+
import { up } from '@unipin/angular-applet/common';
|
|
8
|
+
import { UpFieldControlComponent, UpFieldControl } from '@unipin/angular-applet/forms';
|
|
9
|
+
import 'froala-editor/js/plugins.pkgd.min.js';
|
|
10
|
+
import 'froala-editor/js/plugins/align.min.js';
|
|
11
|
+
import 'froala-editor/js/third_party/embedly.min';
|
|
12
|
+
import 'froala-editor/js/third_party/image_tui.min';
|
|
13
|
+
import 'froala-editor/js/third_party/font_awesome.min';
|
|
14
|
+
|
|
15
|
+
class UpFroalaComponent extends UpFieldControlComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.froalaKey = input.required(...(ngDevMode ? [{ debugName: "froalaKey" }] : []));
|
|
19
|
+
this.froalaEvents = input({}, ...(ngDevMode ? [{ debugName: "froalaEvents" }] : []));
|
|
20
|
+
this.inlineClass = input('', ...(ngDevMode ? [{ debugName: "inlineClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
21
|
+
this.useCustomSocialEmbed = input(false, ...(ngDevMode ? [{ debugName: "useCustomSocialEmbed", transform: booleanAttribute }] : [{
|
|
22
|
+
transform: booleanAttribute
|
|
23
|
+
}]));
|
|
24
|
+
this.value = signal('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
25
|
+
this.froalaOptions = computed(() => {
|
|
26
|
+
return {
|
|
27
|
+
fullPage: true,
|
|
28
|
+
toolbarSticky: false,
|
|
29
|
+
videoResponsive: true,
|
|
30
|
+
imageMaxSize: 5242880,
|
|
31
|
+
imageDefaultWidth: 100,
|
|
32
|
+
videoMaxSize: 52428800,
|
|
33
|
+
imageDefaultAlign: 'left',
|
|
34
|
+
key: this.froalaKey(),
|
|
35
|
+
imageResizeWithPercent: true,
|
|
36
|
+
imageAllowedTypes: ['jpeg', 'jpg', 'png'],
|
|
37
|
+
placeholderText: 'Add Page Content Here!',
|
|
38
|
+
videoAllowedTypes: ['quicktime', 'webm', 'jpg', 'ogg'],
|
|
39
|
+
pasteAllowedStyleProps: ['font-size', 'font-family', 'font-style', 'text-decoration', 'text-align', 'font-weight'],
|
|
40
|
+
htmlAllowedTags: ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'queue', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'style', 'section', 'select', 'small', 'source', 'span', 'strike', 'strong', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'],
|
|
41
|
+
events: {
|
|
42
|
+
...this.froalaEvents(),
|
|
43
|
+
'initialized': (e) => {
|
|
44
|
+
const styleTag = document.createElement('style');
|
|
45
|
+
styleTag.innerHTML = `
|
|
46
|
+
.adsense {
|
|
47
|
+
width: 100%;
|
|
48
|
+
height: 50px;
|
|
49
|
+
padding: 5px;
|
|
50
|
+
position: relative;
|
|
51
|
+
background-color: #D3D3D3;
|
|
52
|
+
&::after{
|
|
53
|
+
content: 'Google Ads';
|
|
54
|
+
position: absolute;
|
|
55
|
+
top: 0;
|
|
56
|
+
left: 0;
|
|
57
|
+
margin-left: 50%;
|
|
58
|
+
margin-top: 13px;
|
|
59
|
+
transform: translate(-50%);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
.fr-view {
|
|
63
|
+
font-family: Roboto, sans-serif !important;
|
|
64
|
+
font-weight: 400 !important;
|
|
65
|
+
font-size: 18px !important;
|
|
66
|
+
line-height: 27px !important;
|
|
67
|
+
text-align: justify !important;
|
|
68
|
+
p {
|
|
69
|
+
margin: 0 0 14px !important;
|
|
70
|
+
}
|
|
71
|
+
}`;
|
|
72
|
+
const iframeDocument = e._editor.$el.get(0).ownerDocument;
|
|
73
|
+
iframeDocument.head.appendChild(styleTag);
|
|
74
|
+
},
|
|
75
|
+
'paste.afterCleanup': function (html) {
|
|
76
|
+
const doc = new DOMParser().parseFromString(html, 'text/html');
|
|
77
|
+
doc.querySelectorAll('iframe[src*="youtube.com"]').forEach((video) => {
|
|
78
|
+
video.setAttribute('style', 'width: 100%; height: 500px;');
|
|
79
|
+
});
|
|
80
|
+
doc.querySelectorAll('table').forEach((table) => {
|
|
81
|
+
table.querySelectorAll('tr').forEach((row) => {
|
|
82
|
+
row.querySelectorAll('td, th').forEach((cell) => cell.style.border = '1px solid #000');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
return doc.documentElement.innerHTML;
|
|
86
|
+
},
|
|
87
|
+
'video.inserted': function (vid) {
|
|
88
|
+
vid.attr('contentEditable', 'true');
|
|
89
|
+
vid.css('width', '100%');
|
|
90
|
+
vid.css('height', '500px');
|
|
91
|
+
},
|
|
92
|
+
'window.copy': function () {
|
|
93
|
+
localStorage.removeItem('fr-copied-html');
|
|
94
|
+
localStorage.removeItem('fr-copied-text');
|
|
95
|
+
},
|
|
96
|
+
'window.cut': function () {
|
|
97
|
+
localStorage.removeItem('fr-copied-html');
|
|
98
|
+
localStorage.removeItem('fr-copied-text');
|
|
99
|
+
},
|
|
100
|
+
'contentChanged': () => this._onChange(this.value)
|
|
101
|
+
},
|
|
102
|
+
toolbarButtons: {
|
|
103
|
+
moreText: {
|
|
104
|
+
buttons: ['adsense', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineClass', 'inlineStyle', 'clearFormatting'],
|
|
105
|
+
align: 'left',
|
|
106
|
+
buttonsVisible: 3
|
|
107
|
+
},
|
|
108
|
+
moreParagraph: {
|
|
109
|
+
buttons: ['alignCenter', 'formatOLSimple', 'alignLeft', 'alignRight', 'alignJustify', 'formatOL', 'formatUL', 'paragraphFormat', 'paragraphStyle', 'lineHeight', 'outdent', 'indent', 'quote'],
|
|
110
|
+
align: 'left',
|
|
111
|
+
buttonsVisible: 2
|
|
112
|
+
},
|
|
113
|
+
moreRich: {
|
|
114
|
+
buttons: ['insertLink', 'insertImage', 'customEmbed', 'insertVideo', 'insertTable', 'emoticons', 'specialCharacters', 'insertHR'],
|
|
115
|
+
align: 'left',
|
|
116
|
+
buttonsVisible: 4
|
|
117
|
+
},
|
|
118
|
+
moreMisc: {
|
|
119
|
+
buttons: ['undo', 'redo', 'fullscreen', 'print', 'getPDF', 'spellChecker', 'selectAll', 'html', 'help'],
|
|
120
|
+
align: 'right',
|
|
121
|
+
buttonsVisible: 2
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}, ...(ngDevMode ? [{ debugName: "froalaOptions" }] : []));
|
|
126
|
+
this._computedClass = computed(() => {
|
|
127
|
+
return up('peer placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex flex-col min-h-48 size-full min-w-0 rounded-md border bg-transparent text-base shadow-xs transition-[color,box-shadow] outline-none md:text-sm overflow-hidden bg-white', this.error() ? 'ring-destructive/20 dark:ring-destructive/40 border-destructive has-[textarea:focus-visible]:ring-destructive/50' : '', this.inlineClass());
|
|
128
|
+
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
129
|
+
/**
|
|
130
|
+
* Callback function to handle value changes in the password input.
|
|
131
|
+
* @type {(_val: any) => void}
|
|
132
|
+
*/
|
|
133
|
+
this._onChange = (_val) => { };
|
|
134
|
+
/**
|
|
135
|
+
* Callback function to handle touch events in the password input.
|
|
136
|
+
* @type {() => void}
|
|
137
|
+
*/
|
|
138
|
+
this._onTouched = () => { };
|
|
139
|
+
if (this.ngControl !== null) {
|
|
140
|
+
this.ngControl.valueAccessor = this;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
ngOnInit() {
|
|
144
|
+
if (this.useCustomSocialEmbed()) {
|
|
145
|
+
this.customSocialEmbed();
|
|
146
|
+
}
|
|
147
|
+
FroalaEditor.DefineIcon('adsense', { NAME: 'plus', SVG_KEY: 'tags' });
|
|
148
|
+
FroalaEditor.RegisterCommand('adsense', {
|
|
149
|
+
title: 'Adsense',
|
|
150
|
+
focus: false, undo: false,
|
|
151
|
+
refreshAfterCallback: true,
|
|
152
|
+
callback() { this.html.insert('<div class="adsense"></div>'); }
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Registers a callback function to be called when the password input value changes.
|
|
157
|
+
* @param {(_val: any) => void} fn - Callback function for value changes.
|
|
158
|
+
*/
|
|
159
|
+
registerOnChange(fn) {
|
|
160
|
+
this._onChange = fn;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Registers a callback function to be called when the password input is touched.
|
|
164
|
+
* @param {() => void} fn - Callback function for touch events.
|
|
165
|
+
*/
|
|
166
|
+
registerOnTouched(fn) {
|
|
167
|
+
this._onTouched = fn;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Writes a new value to the password input.
|
|
171
|
+
* @param {*} val - The new value to be set.
|
|
172
|
+
*/
|
|
173
|
+
writeValue(val) {
|
|
174
|
+
this.value.set(val ?? '');
|
|
175
|
+
}
|
|
176
|
+
customSocialEmbed() {
|
|
177
|
+
FroalaEditor.POPUP_TEMPLATES['customPlugin.popup'] = '[_BUTTONS_][_CUSTOM_LAYER_]';
|
|
178
|
+
Object.assign(FroalaEditor.DEFAULTS, { popupButtons: ['popupClose'] });
|
|
179
|
+
FroalaEditor.PLUGINS.customPlugin = function (editor) {
|
|
180
|
+
function initPopup() {
|
|
181
|
+
let tabidx = 0;
|
|
182
|
+
const popupButtons = `<div class="fr-buttons fr-tabs">${editor.button.buildList(editor.opts.popupButtons)}</div>`;
|
|
183
|
+
const inputLayer = `
|
|
184
|
+
<div class="fr-link-insert-layer fr-layer fr-active" id="fr-link-insert-layer-${editor.id}">
|
|
185
|
+
<div class="errorlist"></div>
|
|
186
|
+
<div class="fr-input-line"><input name="href" type="text" placeholder="Paste in embed code" tabIndex="${(++tabidx)}"></div>
|
|
187
|
+
<div class="fr-action-buttons"><button class="fr-command fr-submit" data-cmd="linkCustomInsert" href="#" tabIndex="${(++tabidx)}" type="button">${editor.language.translate('Insert')}</button></div>
|
|
188
|
+
</div>
|
|
189
|
+
`;
|
|
190
|
+
return editor.popups.create('customPlugin.popup', { buttons: popupButtons, custom_layer: inputLayer });
|
|
191
|
+
}
|
|
192
|
+
function showPopup() {
|
|
193
|
+
let popup = editor.popups.get('customPlugin.popup');
|
|
194
|
+
if (!popup) {
|
|
195
|
+
popup = initPopup();
|
|
196
|
+
}
|
|
197
|
+
editor.popups.setContainer('customPlugin.popup', editor.$tb);
|
|
198
|
+
const btn = editor.$tb.find('.fr-command[data-cmd="customEmbed"]');
|
|
199
|
+
editor.popups.show('customPlugin.popup', (btn.offset().left + btn.outerWidth() / 2), (btn.offset().top + (editor.opts.toolbarBottom ? 10 : btn.outerHeight() - 10)), btn.outerHeight());
|
|
200
|
+
}
|
|
201
|
+
function hidePopup() {
|
|
202
|
+
editor.popups.hide('customPlugin.popup');
|
|
203
|
+
editor.popups.get('customPlugin.popup').find('input[type="text"][name="href"]').val('');
|
|
204
|
+
}
|
|
205
|
+
function showError(error) {
|
|
206
|
+
const popup = editor.popups.get('customPlugin.popup');
|
|
207
|
+
const errors = popup.find('div.errorlist');
|
|
208
|
+
errors.html('<small>' + error + '</small>');
|
|
209
|
+
popup.find('input[type="text"][name="href"]').on('keyup', function () { errors.html(''); });
|
|
210
|
+
}
|
|
211
|
+
function insert(url) {
|
|
212
|
+
editor.events.focus(true);
|
|
213
|
+
editor.selection.restore();
|
|
214
|
+
if (url.includes('<script')) {
|
|
215
|
+
showError('Oops, can not insert script!');
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
editor.html.insert('<center>' + url + '</center>');
|
|
219
|
+
editor.popups.hide('customPlugin.popup');
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
function insertCallback() {
|
|
223
|
+
insert(editor.popups.get('customPlugin.popup').find('input[type="text"][name="href"]').val());
|
|
224
|
+
}
|
|
225
|
+
return { showPopup, hidePopup, insertCallback };
|
|
226
|
+
};
|
|
227
|
+
FroalaEditor.DefineIcon('socialEmbed', { NAME: 'star', SVG_KEY: 'insertEmbed' });
|
|
228
|
+
FroalaEditor.RegisterCommand('customEmbed', {
|
|
229
|
+
title: 'Embed Social',
|
|
230
|
+
icon: 'socialEmbed',
|
|
231
|
+
undo: false,
|
|
232
|
+
focus: false,
|
|
233
|
+
plugin: 'customPlugin',
|
|
234
|
+
callback: function () { this['customPlugin'].showPopup(); }
|
|
235
|
+
});
|
|
236
|
+
FroalaEditor.DefineIcon('popupClose', { NAME: 'times', SVG_KEY: 'back' });
|
|
237
|
+
FroalaEditor.RegisterCommand('popupClose', {
|
|
238
|
+
title: 'Close',
|
|
239
|
+
undo: false,
|
|
240
|
+
focus: false,
|
|
241
|
+
callback: function () { this['customPlugin'].hidePopup(); }
|
|
242
|
+
});
|
|
243
|
+
FroalaEditor.RegisterCommand('linkCustomInsert', {
|
|
244
|
+
focus: false,
|
|
245
|
+
refreshAfterCallback: false,
|
|
246
|
+
callback: function () { this['customPlugin'].insertCallback(); }
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpFroalaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
250
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: UpFroalaComponent, isStandalone: true, selector: "up-froala", inputs: { froalaKey: { classPropertyName: "froalaKey", publicName: "froalaKey", isSignal: true, isRequired: true, transformFunction: null }, froalaEvents: { classPropertyName: "froalaEvents", publicName: "froalaEvents", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, useCustomSocialEmbed: { classPropertyName: "useCustomSocialEmbed", publicName: "useCustomSocialEmbed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [
|
|
251
|
+
{
|
|
252
|
+
provide: UpFieldControl,
|
|
253
|
+
useExisting: forwardRef(() => UpFroalaComponent)
|
|
254
|
+
},
|
|
255
|
+
], usesInheritance: true, ngImport: i0, template: `
|
|
256
|
+
<div
|
|
257
|
+
[froalaModel]="value()"
|
|
258
|
+
[froalaEditor]="froalaOptions()"
|
|
259
|
+
>
|
|
260
|
+
</div>
|
|
261
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FroalaViewModule }, { kind: "ngmodule", type: FroalaEditorModule }, { kind: "directive", type: i1.FroalaEditorDirective, selector: "[froalaEditor]", inputs: ["froalaEditor", "froalaModel"], outputs: ["froalaModelChange", "froalaInit"], exportAs: ["froalaEditor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
262
|
+
}
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpFroalaComponent, decorators: [{
|
|
264
|
+
type: Component,
|
|
265
|
+
args: [{
|
|
266
|
+
standalone: true,
|
|
267
|
+
selector: 'up-froala',
|
|
268
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
269
|
+
host: {
|
|
270
|
+
'[class]': '_computedClass()',
|
|
271
|
+
},
|
|
272
|
+
providers: [
|
|
273
|
+
{
|
|
274
|
+
provide: UpFieldControl,
|
|
275
|
+
useExisting: forwardRef(() => UpFroalaComponent)
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
imports: [
|
|
279
|
+
ReactiveFormsModule,
|
|
280
|
+
FroalaViewModule,
|
|
281
|
+
FroalaEditorModule
|
|
282
|
+
],
|
|
283
|
+
template: `
|
|
284
|
+
<div
|
|
285
|
+
[froalaModel]="value()"
|
|
286
|
+
[froalaEditor]="froalaOptions()"
|
|
287
|
+
>
|
|
288
|
+
</div>
|
|
289
|
+
`
|
|
290
|
+
}]
|
|
291
|
+
}], ctorParameters: () => [], propDecorators: { froalaKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "froalaKey", required: true }] }], froalaEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "froalaEvents", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], useCustomSocialEmbed: [{ type: i0.Input, args: [{ isSignal: true, alias: "useCustomSocialEmbed", required: false }] }] } });
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Generated bundle index. Do not edit.
|
|
295
|
+
*/
|
|
296
|
+
|
|
297
|
+
export { UpFroalaComponent };
|
|
298
|
+
//# sourceMappingURL=unipin-angular-applet-froala.mjs.map
|