@inobeta/ui 18.0.1-build.1722007687
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 +1 -0
- package/_index.scss +1 -0
- package/esm2022/inobeta-ui.mjs +5 -0
- package/esm2022/public_api.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/core/filter.pipe.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/core/index.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/auth/guard.service.mjs +157 -0
- package/esm2022/src/app/inobeta-ui/http/auth/login.service.mjs +137 -0
- package/esm2022/src/app/inobeta-ui/http/auth/login.service.stub.spec.mjs +20 -0
- package/esm2022/src/app/inobeta-ui/http/auth/session.model.mjs +16 -0
- package/esm2022/src/app/inobeta-ui/http/http/auth.interceptor.mjs +79 -0
- package/esm2022/src/app/inobeta-ui/http/http/error.interceptor.mjs +76 -0
- package/esm2022/src/app/inobeta-ui/http/http/loader.interceptor.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton-container.component.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.component.mjs +34 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.mjs +66 -0
- package/esm2022/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/http/http/messages.decorator.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/http/http/role-check.directive.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.component.mjs +28 -0
- package/esm2022/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.mjs +15 -0
- package/esm2022/src/app/inobeta-ui/http/http-test.module.mjs +35 -0
- package/esm2022/src/app/inobeta-ui/http/http.module.mjs +178 -0
- package/esm2022/src/app/inobeta-ui/http/index.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/http/store/index.mjs +11 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/actions.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/reducers.mjs +35 -0
- package/esm2022/src/app/inobeta-ui/http/store/loader/selectors.mjs +9 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/actions.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/effects.mjs +50 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/reducers.mjs +12 -0
- package/esm2022/src/app/inobeta-ui/http/store/session/selectors.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/http/translations.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/hydration/actions.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/hydration/effects.mjs +45 -0
- package/esm2022/src/app/inobeta-ui/hydration/index.mjs +21 -0
- package/esm2022/src/app/inobeta-ui/hydration/reducer.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/storage/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/storage/storage-test.module.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.module.mjs +22 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.service.mjs +105 -0
- package/esm2022/src/app/inobeta-ui/storage/storage.stub.spec.mjs +8 -0
- package/esm2022/src/app/inobeta-ui/translate/index.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/translate/translate-loader.service.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.mjs +44 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.mjs +16 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.module.mjs +92 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/data-export.service.mjs +83 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.mjs +66 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/index.mjs +10 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/provider.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.mjs +113 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/table-data-export.component.mjs +58 -0
- package/esm2022/src/app/inobeta-ui/ui/data-export/transformer.mjs +68 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/array/array.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/checkbox.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/dropdown.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/form-control-base.mjs +80 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/radio.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/controls/textbox.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.mjs +118 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.mjs +46 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.mjs +28 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/form-control.service.mjs +57 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.module.mjs +36 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.pipes.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/forms.types.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/forms/index.mjs +12 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.mjs +14 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.mjs +31 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.component.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filter.types.mjs +30 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.mjs +83 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.mjs +284 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.mjs +111 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.mjs +99 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.mjs +106 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.mjs +98 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.mjs +109 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/filters.module.mjs +175 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/index.mjs +14 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/tokens.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-filter/translations.mjs +51 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/action.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/cells.mjs +212 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/action-column.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/column.mjs +260 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/date-column.mjs +93 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/index.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/number-column.mjs +112 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/selection-column.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/columns/text-column.mjs +90 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/index.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/paginator-intl.mjs +53 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/remote-data-source.mjs +73 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/rowgroup.mjs +17 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/sort-header.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/const.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/index.mjs +9 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.mjs +47 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.mjs +56 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.mjs +19 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table-data-source.mjs +450 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table-url.service.mjs +129 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.component.mjs +260 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.module.mjs +150 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/table.types.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/tokens.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/kai-table/translations.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.mjs +120 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.mjs +38 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.mjs +139 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/index.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.mjs +24 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/main-menu.module.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.mjs +108 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/button.mjs +80 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/checkbox.mjs +54 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/datepicker.mjs +96 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/dropdown.mjs +149 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/label.mjs +50 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/padding.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/radio.mjs +61 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.mjs +62 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textarea.mjs +63 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/controls/textbox.mjs +205 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/index.mjs +18 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.mjs +73 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.mjs +48 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.mjs +65 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.mjs +18 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.mjs +64 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form-test.module.mjs +32 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/material-form.module.mjs +168 -0
- package/esm2022/src/app/inobeta-ui/ui/material-forms/translations.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/index.mjs +7 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.component.mjs +76 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.model.mjs +2 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.mjs +64 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.mjs +15 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal-test.module.mjs +26 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/modal.module.mjs +46 -0
- package/esm2022/src/app/inobeta-ui/ui/modal/translations.mjs +10 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/index.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast-test.module.mjs +23 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.module.mjs +21 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.mjs +54 -0
- package/esm2022/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/index.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.component.mjs +41 -0
- package/esm2022/src/app/inobeta-ui/ui/uploader/uploader.module.mjs +42 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.mjs +20 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/index.mjs +6 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.mjs +37 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.mjs +186 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.mjs +110 -0
- package/esm2022/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.mjs +43 -0
- package/esm2022/src/app/inobeta-ui/ui/views/index.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/actions.mjs +11 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/index.mjs +3 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/reducer.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/index.mjs +4 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/reducer.mjs +19 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/selectors.mjs +5 -0
- package/esm2022/src/app/inobeta-ui/ui/views/store/views/table-view.mjs +13 -0
- package/esm2022/src/app/inobeta-ui/ui/views/translations.mjs +34 -0
- package/esm2022/src/app/inobeta-ui/ui/views/view.module.mjs +98 -0
- package/esm2022/src/app/inobeta-ui/ui/views/view.service.mjs +137 -0
- package/fesm2022/inobeta-ui.mjs +8610 -0
- package/fesm2022/inobeta-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +55 -0
- package/public_api.d.ts +16 -0
- package/src/app/inobeta-ui/core/filter.pipe.d.ts +7 -0
- package/src/app/inobeta-ui/core/index.d.ts +1 -0
- package/src/app/inobeta-ui/http/auth/guard.service.d.ts +96 -0
- package/src/app/inobeta-ui/http/auth/login.service.d.ts +63 -0
- package/src/app/inobeta-ui/http/auth/login.service.stub.spec.d.ts +9 -0
- package/src/app/inobeta-ui/http/auth/session.model.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/auth.interceptor.d.ts +21 -0
- package/src/app/inobeta-ui/http/http/error.interceptor.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/loader.interceptor.d.ts +17 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton-container.component.d.ts +13 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.component.d.ts +12 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.directive.d.ts +27 -0
- package/src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.d.ts +13 -0
- package/src/app/inobeta-ui/http/http/messages.decorator.d.ts +18 -0
- package/src/app/inobeta-ui/http/http/role-check.directive.d.ts +17 -0
- package/src/app/inobeta-ui/http/http/spinner-loading.component.d.ts +9 -0
- package/src/app/inobeta-ui/http/http/spinner-loading.stub.spec.d.ts +5 -0
- package/src/app/inobeta-ui/http/http-test.module.d.ts +8 -0
- package/src/app/inobeta-ui/http/http.module.d.ts +20 -0
- package/src/app/inobeta-ui/http/index.d.ts +23 -0
- package/src/app/inobeta-ui/http/store/index.d.ts +10 -0
- package/src/app/inobeta-ui/http/store/loader/actions.d.ts +17 -0
- package/src/app/inobeta-ui/http/store/loader/interfaces.d.ts +8 -0
- package/src/app/inobeta-ui/http/store/loader/reducers.d.ts +3 -0
- package/src/app/inobeta-ui/http/store/loader/selectors.d.ts +5 -0
- package/src/app/inobeta-ui/http/store/session/actions.d.ts +20 -0
- package/src/app/inobeta-ui/http/store/session/effects.d.ts +16 -0
- package/src/app/inobeta-ui/http/store/session/interfaces.d.ts +4 -0
- package/src/app/inobeta-ui/http/store/session/reducers.d.ts +3 -0
- package/src/app/inobeta-ui/http/store/session/selectors.d.ts +4 -0
- package/src/app/inobeta-ui/http/translations.d.ts +12 -0
- package/src/app/inobeta-ui/hydration/actions.d.ts +1 -0
- package/src/app/inobeta-ui/hydration/effects.d.ts +13 -0
- package/src/app/inobeta-ui/hydration/index.d.ts +13 -0
- package/src/app/inobeta-ui/hydration/reducer.d.ts +2 -0
- package/src/app/inobeta-ui/storage/index.d.ts +3 -0
- package/src/app/inobeta-ui/storage/storage-test.module.d.ts +6 -0
- package/src/app/inobeta-ui/storage/storage.module.d.ts +6 -0
- package/src/app/inobeta-ui/storage/storage.service.d.ts +62 -0
- package/src/app/inobeta-ui/storage/storage.stub.spec.d.ts +5 -0
- package/src/app/inobeta-ui/translate/index.d.ts +1 -0
- package/src/app/inobeta-ui/translate/translate-loader.service.d.ts +11 -0
- package/src/app/inobeta-ui/ui/_index.scss +87 -0
- package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.d.ts +28 -0
- package/src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.d.ts +12 -0
- package/src/app/inobeta-ui/ui/breadcrumb/index.d.ts +3 -0
- package/src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.d.ts +6 -0
- package/src/app/inobeta-ui/ui/data-export/data-export.module.d.ts +20 -0
- package/src/app/inobeta-ui/ui/data-export/data-export.service.d.ts +35 -0
- package/src/app/inobeta-ui/ui/data-export/formats/csv-export.service.d.ts +19 -0
- package/src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.d.ts +20 -0
- package/src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.d.ts +14 -0
- package/src/app/inobeta-ui/ui/data-export/index.d.ts +9 -0
- package/src/app/inobeta-ui/ui/data-export/provider.d.ts +15 -0
- package/src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.d.ts +23 -0
- package/src/app/inobeta-ui/ui/data-export/table-data-export.component.d.ts +13 -0
- package/src/app/inobeta-ui/ui/data-export/transformer.d.ts +50 -0
- package/src/app/inobeta-ui/ui/forms/array/array.d.ts +32 -0
- package/src/app/inobeta-ui/ui/forms/controls/checkbox.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/dropdown.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/form-control-base.d.ts +88 -0
- package/src/app/inobeta-ui/ui/forms/controls/radio.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/controls/textbox.d.ts +4 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.d.ts +50 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.d.ts +18 -0
- package/src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.d.ts +11 -0
- package/src/app/inobeta-ui/ui/forms/form-control.service.d.ts +13 -0
- package/src/app/inobeta-ui/ui/forms/forms.module.d.ts +12 -0
- package/src/app/inobeta-ui/ui/forms/forms.pipes.d.ts +20 -0
- package/src/app/inobeta-ui/ui/forms/forms.types.d.ts +3 -0
- package/src/app/inobeta-ui/ui/forms/index.d.ts +11 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.d.ts +5 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter.component.d.ts +41 -0
- package/src/app/inobeta-ui/ui/kai-filter/filter.types.d.ts +141 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.d.ts +42 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.d.ts +12 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.d.ts +56 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.d.ts +27 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.d.ts +28 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-filter/filters.module.d.ts +35 -0
- package/src/app/inobeta-ui/ui/kai-filter/index.d.ts +13 -0
- package/src/app/inobeta-ui/ui/kai-filter/tokens.d.ts +2 -0
- package/src/app/inobeta-ui/ui/kai-filter/translations.d.ts +50 -0
- package/src/app/inobeta-ui/ui/kai-table/_table-theme.scss +123 -0
- package/src/app/inobeta-ui/ui/kai-table/action.d.ts +19 -0
- package/src/app/inobeta-ui/ui/kai-table/cells.d.ts +88 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/action-column.d.ts +9 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/column.d.ts +87 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/date-column.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/index.d.ts +6 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/number-column.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/selection-column.d.ts +26 -0
- package/src/app/inobeta-ui/ui/kai-table/columns/text-column.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/index.d.ts +12 -0
- package/src/app/inobeta-ui/ui/kai-table/paginator-intl.d.ts +18 -0
- package/src/app/inobeta-ui/ui/kai-table/remote-data-source.d.ts +60 -0
- package/src/app/inobeta-ui/ui/kai-table/rowgroup.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-table/sort-header.d.ts +20 -0
- package/src/app/inobeta-ui/ui/kai-table/store/const.d.ts +1 -0
- package/src/app/inobeta-ui/ui/kai-table/store/index.d.ts +8 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/actions.d.ts +59 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/effects.d.ts +15 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/interfaces.d.ts +16 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.d.ts +2 -0
- package/src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.d.ts +3 -0
- package/src/app/inobeta-ui/ui/kai-table/table-data-source.d.ts +164 -0
- package/src/app/inobeta-ui/ui/kai-table/table-url.service.d.ts +51 -0
- package/src/app/inobeta-ui/ui/kai-table/table.component.d.ts +79 -0
- package/src/app/inobeta-ui/ui/kai-table/table.module.d.ts +30 -0
- package/src/app/inobeta-ui/ui/kai-table/table.types.d.ts +21 -0
- package/src/app/inobeta-ui/ui/kai-table/tokens.d.ts +22 -0
- package/src/app/inobeta-ui/ui/kai-table/translations.d.ts +40 -0
- package/src/app/inobeta-ui/ui/main-menu/_main-menu-theme.scss +226 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.d.ts +56 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.d.ts +18 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.d.ts +13 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.d.ts +9 -0
- package/src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/main-menu/index.d.ts +10 -0
- package/src/app/inobeta-ui/ui/main-menu/main-menu-test.module.d.ts +8 -0
- package/src/app/inobeta-ui/ui/main-menu/main-menu.module.d.ts +16 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-button.model.d.ts +8 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data-set.model.d.ts +14 -0
- package/src/app/inobeta-ui/ui/main-menu/models/main-menu-data.model.d.ts +4 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/autocomplete.d.ts +14 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/button.d.ts +28 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/checkbox.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/datepicker.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/dropdown.d.ts +29 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/label.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/padding.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/radio.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.d.ts +10 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/textarea.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/controls/textbox.d.ts +21 -0
- package/src/app/inobeta-ui/ui/material-forms/index.d.ts +17 -0
- package/src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.d.ts +25 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.d.ts +26 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.d.ts +21 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.d.ts +6 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.d.ts +19 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form-test.module.d.ts +9 -0
- package/src/app/inobeta-ui/ui/material-forms/material-form.module.d.ts +49 -0
- package/src/app/inobeta-ui/ui/material-forms/translations.d.ts +25 -0
- package/src/app/inobeta-ui/ui/modal/index.d.ts +6 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.component.d.ts +10 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.model.d.ts +32 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.service.d.ts +49 -0
- package/src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.d.ts +6 -0
- package/src/app/inobeta-ui/ui/modal/modal-test.module.d.ts +7 -0
- package/src/app/inobeta-ui/ui/modal/modal.module.d.ts +11 -0
- package/src/app/inobeta-ui/ui/modal/translations.d.ts +9 -0
- package/src/app/inobeta-ui/ui/toast/_toast-theme.scss +56 -0
- package/src/app/inobeta-ui/ui/toast/index.d.ts +4 -0
- package/src/app/inobeta-ui/ui/toast/toast-test.module.d.ts +6 -0
- package/src/app/inobeta-ui/ui/toast/toast.module.d.ts +7 -0
- package/src/app/inobeta-ui/ui/toast/toast.service.d.ts +36 -0
- package/src/app/inobeta-ui/ui/toast/toast.service.stub.spec.d.ts +3 -0
- package/src/app/inobeta-ui/ui/uploader/index.d.ts +2 -0
- package/src/app/inobeta-ui/ui/uploader/uploader.component.d.ts +12 -0
- package/src/app/inobeta-ui/ui/uploader/uploader.module.d.ts +10 -0
- package/src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.d.ts +8 -0
- package/src/app/inobeta-ui/ui/views/components/index.d.ts +5 -0
- package/src/app/inobeta-ui/ui/views/components/table-view/table-view.component.d.ts +14 -0
- package/src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.d.ts +45 -0
- package/src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.d.ts +22 -0
- package/src/app/inobeta-ui/ui/views/components/view-list/view-list.component.d.ts +16 -0
- package/src/app/inobeta-ui/ui/views/index.d.ts +4 -0
- package/src/app/inobeta-ui/ui/views/store/actions.d.ts +27 -0
- package/src/app/inobeta-ui/ui/views/store/index.d.ts +2 -0
- package/src/app/inobeta-ui/ui/views/store/reducer.d.ts +7 -0
- package/src/app/inobeta-ui/ui/views/store/views/index.d.ts +3 -0
- package/src/app/inobeta-ui/ui/views/store/views/reducer.d.ts +3 -0
- package/src/app/inobeta-ui/ui/views/store/views/selectors.d.ts +4 -0
- package/src/app/inobeta-ui/ui/views/store/views/table-view.d.ts +22 -0
- package/src/app/inobeta-ui/ui/views/translations.d.ts +33 -0
- package/src/app/inobeta-ui/ui/views/view.module.d.ts +23 -0
- package/src/app/inobeta-ui/ui/views/view.service.d.ts +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inobeta-ui.mjs","sources":["../../src/app/inobeta-ui/core/filter.pipe.ts","../../src/app/inobeta-ui/http/auth/session.model.ts","../../src/app/inobeta-ui/ui/toast/toast.service.ts","../../src/app/inobeta-ui/http/store/session/selectors.ts","../../src/app/inobeta-ui/http/store/session/actions.ts","../../src/app/inobeta-ui/http/auth/login.service.ts","../../src/app/inobeta-ui/http/auth/guard.service.ts","../../src/app/inobeta-ui/http/store/loader/selectors.ts","../../src/app/inobeta-ui/http/http/spinner-loading.component.ts","../../src/app/inobeta-ui/ui/toast/toast.module.ts","../../src/app/inobeta-ui/http/http/auth.interceptor.ts","../../src/app/inobeta-ui/http/http/error.interceptor.ts","../../src/app/inobeta-ui/storage/storage.service.ts","../../src/app/inobeta-ui/storage/storage.module.ts","../../src/app/inobeta-ui/http/store/loader/actions.ts","../../src/app/inobeta-ui/http/http/loader.interceptor.ts","../../src/app/inobeta-ui/http/http/loading-skeleton.component.ts","../../src/app/inobeta-ui/http/http/loading-skeleton-container.component.ts","../../src/app/inobeta-ui/http/http/loading-skeleton.directive.ts","../../src/app/inobeta-ui/http/http/role-check.directive.ts","../../src/app/inobeta-ui/http/http.module.ts","../../src/app/inobeta-ui/http/http/messages.decorator.ts","../../src/app/inobeta-ui/http/store/session/effects.ts","../../src/app/inobeta-ui/http/store/loader/reducers.ts","../../src/app/inobeta-ui/http/store/session/reducers.ts","../../src/app/inobeta-ui/http/store/index.ts","../../src/app/inobeta-ui/http/http/spinner-loading.stub.spec.ts","../../src/app/inobeta-ui/http/auth/login.service.stub.spec.ts","../../src/app/inobeta-ui/http/http/loading-skeleton.directive.stub.spec.ts","../../src/app/inobeta-ui/http/http-test.module.ts","../../src/app/inobeta-ui/http/index.ts","../../src/app/inobeta-ui/hydration/actions.ts","../../src/app/inobeta-ui/hydration/effects.ts","../../src/app/inobeta-ui/hydration/reducer.ts","../../src/app/inobeta-ui/hydration/index.ts","../../src/app/inobeta-ui/storage/storage.stub.spec.ts","../../src/app/inobeta-ui/storage/storage-test.module.ts","../../src/app/inobeta-ui/http/translations.ts","../../src/app/inobeta-ui/ui/material-forms/translations.ts","../../src/app/inobeta-ui/ui/kai-filter/translations.ts","../../src/app/inobeta-ui/ui/views/translations.ts","../../src/app/inobeta-ui/ui/kai-table/translations.ts","../../src/app/inobeta-ui/ui/modal/translations.ts","../../src/app/inobeta-ui/translate/translate-loader.service.ts","../../src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.ts","../../src/app/inobeta-ui/ui/breadcrumb/breadcrumb.component.html","../../src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.ts","../../src/app/inobeta-ui/ui/breadcrumb/material-breadcrumb/material-breadcrumb.component.html","../../src/app/inobeta-ui/ui/breadcrumb/breadcrumb.module.ts","../../src/app/inobeta-ui/ui/kai-table/action.ts","../../src/app/inobeta-ui/ui/kai-table/tokens.ts","../../src/app/inobeta-ui/ui/kai-table/cells.ts","../../src/app/inobeta-ui/ui/kai-table/sort-header.ts","../../src/app/inobeta-ui/ui/kai-table/columns/column.ts","../../src/app/inobeta-ui/ui/kai-table/columns/action-column.ts","../../src/app/inobeta-ui/ui/kai-table/columns/date-column.ts","../../src/app/inobeta-ui/ui/kai-table/columns/number-column.ts","../../src/app/inobeta-ui/ui/kai-table/columns/selection-column.ts","../../src/app/inobeta-ui/ui/kai-table/columns/text-column.ts","../../src/app/inobeta-ui/ui/kai-table/rowgroup.ts","../../src/app/inobeta-ui/ui/kai-filter/filter.types.ts","../../src/app/inobeta-ui/ui/kai-filter/filters.ts","../../src/app/inobeta-ui/ui/kai-table/store/url-state/actions.ts","../../src/app/inobeta-ui/ui/kai-table/table-data-source.ts","../../src/app/inobeta-ui/ui/kai-table/remote-data-source.ts","../../src/app/inobeta-ui/ui/data-export/table-data-export-dialog.component.ts","../../src/app/inobeta-ui/ui/data-export/data-export.service.ts","../../src/app/inobeta-ui/ui/data-export/table-data-export.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filter-button/filter-action-group.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filter-button/filter-button.component.html","../../src/app/inobeta-ui/ui/kai-filter/tokens.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/base/filter-base.ts","../../src/app/inobeta-ui/ui/kai-filter/filter.component.ts","../../src/app/inobeta-ui/ui/material-forms/intl/datepicker.intl.ts","../../src/app/inobeta-ui/ui/forms/forms.pipes.ts","../../src/app/inobeta-ui/ui/modal/modal-message.component.ts","../../src/app/inobeta-ui/ui/modal/modal-message.service.ts","../../src/app/inobeta-ui/ui/modal/modal.module.ts","../../src/app/inobeta-ui/ui/forms/controls/form-control-base.ts","../../src/app/inobeta-ui/ui/material-forms/controls/autocomplete.ts","../../src/app/inobeta-ui/ui/material-forms/controls/button.ts","../../src/app/inobeta-ui/ui/material-forms/controls/checkbox.ts","../../src/app/inobeta-ui/ui/material-forms/controls/datepicker.ts","../../src/app/inobeta-ui/ui/material-forms/controls/dropdown.ts","../../src/app/inobeta-ui/ui/material-forms/controls/label.ts","../../src/app/inobeta-ui/ui/material-forms/controls/padding.ts","../../src/app/inobeta-ui/ui/material-forms/controls/radio.ts","../../src/app/inobeta-ui/ui/material-forms/controls/slide-toggle.ts","../../src/app/inobeta-ui/ui/material-forms/controls/textarea.ts","../../src/app/inobeta-ui/ui/material-forms/controls/textbox.ts","../../src/app/inobeta-ui/ui/forms/array/array.ts","../../src/app/inobeta-ui/ui/forms/form-control.service.ts","../../src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.ts","../../src/app/inobeta-ui/ui/forms/dynamic-form-control/dynamic-form-control.component.html","../../src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.ts","../../src/app/inobeta-ui/ui/forms/dynamic-form-array/dynamic-form-array.component.html","../../src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.ts","../../src/app/inobeta-ui/ui/material-forms/material-form-control/material-form-control.component.html","../../src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.ts","../../src/app/inobeta-ui/ui/material-forms/material-form-array/material-form-array.component.html","../../src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.ts","../../src/app/inobeta-ui/ui/forms/dynamic-form/dynamic-form.component.html","../../src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.ts","../../src/app/inobeta-ui/ui/material-forms/material-form/material-form.component.html","../../src/app/inobeta-ui/ui/material-forms/material-form.module.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/boolean/boolean-filter.component.html","../../src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/date/filter-date.component.html","../../src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/number/filter-number.component.html","../../src/app/inobeta-ui/ui/kai-filter/filters/search-bar/search-bar.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/tag/filter-tag.component.html","../../src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.ts","../../src/app/inobeta-ui/ui/kai-filter/filters/text/filter-text.component.html","../../src/app/inobeta-ui/ui/kai-filter/filters.module.ts","../../src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.ts","../../src/app/inobeta-ui/ui/views/components/default-table-view/default-table-view.component.html","../../src/app/inobeta-ui/ui/views/store/actions.ts","../../src/app/inobeta-ui/ui/views/store/views/reducer.ts","../../src/app/inobeta-ui/ui/views/store/views/selectors.ts","../../src/app/inobeta-ui/ui/views/store/views/table-view.ts","../../src/app/inobeta-ui/ui/kai-table/table-url.service.ts","../../src/app/inobeta-ui/ui/views/components/view-dialog/view-dialog.component.ts","../../src/app/inobeta-ui/ui/toast/toast.service.stub.spec.ts","../../src/app/inobeta-ui/ui/toast/toast-test.module.ts","../../src/app/inobeta-ui/ui/views/view.service.ts","../../src/app/inobeta-ui/ui/views/components/table-view/table-view.component.ts","../../src/app/inobeta-ui/ui/views/components/table-view/table-view.component.html","../../src/app/inobeta-ui/ui/views/components/view-list/view-list.component.ts","../../src/app/inobeta-ui/ui/views/components/view-list/view-list.component.html","../../src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.ts","../../src/app/inobeta-ui/ui/views/components/table-view-group/table-view-group.component.html","../../src/app/inobeta-ui/ui/views/store/reducer.ts","../../src/app/inobeta-ui/ui/views/view.module.ts","../../src/app/inobeta-ui/ui/kai-table/table.component.ts","../../src/app/inobeta-ui/ui/kai-table/table.component.html","../../src/app/inobeta-ui/ui/kai-table/store/const.ts","../../src/app/inobeta-ui/ui/kai-table/store/url-state/reducers.ts","../../src/app/inobeta-ui/ui/kai-table/store/url-state/effects.ts","../../src/app/inobeta-ui/ui/kai-table/store/index.ts","../../src/app/inobeta-ui/ui/kai-table/paginator-intl.ts","../../src/app/inobeta-ui/ui/kai-table/table.module.ts","../../src/app/inobeta-ui/ui/kai-table/store/url-state/selectors.ts","../../src/app/inobeta-ui/ui/data-export/formats/csv-export.service.ts","../../src/app/inobeta-ui/ui/data-export/formats/pdf-export.service.ts","../../src/app/inobeta-ui/ui/data-export/formats/xlsx-export.service.ts","../../src/app/inobeta-ui/ui/data-export/transformer.ts","../../src/app/inobeta-ui/ui/data-export/data-export.module.ts","../../src/app/inobeta-ui/ui/data-export/provider.ts","../../src/app/inobeta-ui/ui/forms/controls/checkbox.ts","../../src/app/inobeta-ui/ui/forms/controls/dropdown.ts","../../src/app/inobeta-ui/ui/forms/controls/radio.ts","../../src/app/inobeta-ui/ui/forms/controls/textbox.ts","../../src/app/inobeta-ui/ui/forms/forms.module.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/header-footer-buttons.component.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-expanded/main-menu-expanded.component.html","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-dialog/main-menu-dialog.component.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.component.html","../../src/app/inobeta-ui/ui/main-menu/main-menu.module.ts","../../src/app/inobeta-ui/ui/main-menu/components/main-menu-bar/main-menu-bar.stub.spec.ts","../../src/app/inobeta-ui/ui/main-menu/main-menu-test.module.ts","../../src/app/inobeta-ui/ui/material-forms/material-form/material-form.stub.spec.ts","../../src/app/inobeta-ui/ui/material-forms/material-form-test.module.ts","../../src/app/inobeta-ui/ui/modal/modal-message.service.stub.spec.ts","../../src/app/inobeta-ui/ui/modal/modal-test.module.ts","../../src/app/inobeta-ui/ui/uploader/uploader.component.ts","../../src/app/inobeta-ui/ui/uploader/uploader.module.ts","../../inobeta-ui.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"filterBy\",\n standalone: true,\n})\nexport class IbFilterPipe implements PipeTransform {\n transform(items: string[], query: string): string[] {\n if (!items) {\n return [];\n }\n\n if (!query) {\n return items;\n }\n\n return items.filter((i) =>\n i.toLocaleLowerCase().includes(query.toLocaleLowerCase())\n );\n }\n}\n","export class IbSession<T extends IbAPITokens | IbAPITokens> {\n user: IbUserLogin;\n valid: boolean;\n serverData: T\n}\n\nexport class IbUserLogin {\n email: string;\n password: string;\n rememberMe: boolean;\n}\n\nexport enum IbAuthTypes {\n BASIC_AUTH,\n JWT\n}\n\nexport interface IbAPITokens {\n accessToken: string;\n refreshToken: string;\n}\n","import { Injectable } from \"@angular/core\";\nimport {\n MatSnackBar,\n MatSnackBarHorizontalPosition,\n MatSnackBarVerticalPosition,\n} from \"@angular/material/snack-bar\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n/**\n * Displays toast notifications\n *\n * Usage:\n * - Inject the `IbToastNotification` service in your component or service.\n * - Call the `open` method to display a toast notification.\n *\n * Example: \n * ```typescript\n * constructor(private toastService: IbToastNotification) {}\n *\n * showMessage() {\n * this.toastService.open('user.created.feedback', 'success');\n * }\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbToastNotification {\n constructor(\n private translate: TranslateService,\n private snackBar: MatSnackBar\n ) {}\n\n /**\n * Method to open a toast notification.\n *\n * @param message The message to display in the toast notification\n * @param type The type of notification (e.g., 'success', 'error', 'warning')\n * @param duration Duration in milliseconds for how long the notification should be visible\n * @param horizontalPosition Horizontal position of the notification ('start', 'center', 'end', 'left', 'right')\n * @param verticalPosition Vertical position of the notification ('top', 'bottom')\n */\n open(\n message: string,\n type: string = \"success\",\n duration: number = 5000,\n horizontalPosition: MatSnackBarHorizontalPosition = \"end\",\n verticalPosition: MatSnackBarVerticalPosition = \"top\"\n ): void {\n this.translate.get(message).subscribe((translatedMessage) => {\n this.snackBar.open(translatedMessage, null, {\n duration: duration,\n horizontalPosition: horizontalPosition,\n verticalPosition: verticalPosition,\n panelClass: `ib-toast-${type}`,\n });\n });\n }\n}","import { createSelector } from '@ngrx/store';\nimport { jwtDecode } from 'jwt-decode';\nimport { IHttpStore } from '..';\nimport { IbAPITokens, IbSession } from '../../auth/session.model';\n\nconst selectFeature = (state) => state.ibHttpState;\n\nexport const ibSelectActiveSession = <T extends IbAPITokens | IbAPITokens>() => createSelector(\n selectFeature,\n (state: IHttpStore): IbSession<T> | null => (state?.session?.activeSession as IbSession<T>) ?? null\n)\n\nexport const ibSelectAccessTokenExp = createSelector(\n selectFeature,\n (state: IHttpStore): number => {\n const token = state.session.activeSession?.serverData?.accessToken\n if(!token) return 0\n const decoded: {\n exp: number\n } = jwtDecode(state.session.activeSession.serverData.accessToken);\n const now = new Date().getTime() / 1000;\n let exp = (decoded.exp - now - 300) * 1000\n if(exp < 0) exp = 0\n return exp\n }\n)\n\n\nexport const ibSelectDecodedData = <T>() => createSelector(\n selectFeature,\n (state: IHttpStore): T | null => {\n const token = state.session.activeSession?.serverData?.accessToken\n if(!token) return null\n return jwtDecode(state.session.activeSession.serverData.accessToken) as T;\n }\n)\n\n","import { createAction, props } from \"@ngrx/store\";\nimport { IbAPITokens, IbSession } from \"../../auth/session.model\";\n\n/**\n * User session actions\n */\nexport const ibAuthActions = {\n /**\n * Note that the name might be confusing. This action should be dispatched as a login success, rather than a login attempt.\n * \n * Legacy: only stores a token in the storage. Does not call the `login()` function\n */\n login: createAction(\n \"[IbSession Service] Login\",\n props<{ activeSession: IbSession<IbAPITokens> }>()\n ),\n /** Dispatch and listen to this action to cleanup the user's session on logout */\n logout: createAction(\"[IbSession Service] Logout\"),\n /** Dispatch to start a timer and refresh the access token once expired */\n refreshCycle: createAction(\"[IbSession Service] refreshCycle\"),\n};\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\nimport { Router } from \"@angular/router\";\nimport { Store } from \"@ngrx/store\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError, filter, map } from \"rxjs/operators\";\nimport { ibAuthActions } from \"../store/session/actions\";\nimport { ibSelectActiveSession } from \"../store/session/selectors\";\nimport {\n IbAPITokens,\n IbAuthTypes,\n IbSession,\n IbUserLogin,\n} from \"./session.model\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbLoginService<T extends IbAPITokens | IbAPITokens> {\n constructor(\n private httpClient: HttpClient,\n private store: Store,\n private srvRouter: Router,\n private snackBar: MatSnackBar,\n /** Login page path */\n @Inject(\"ibHttpGUILoginUrl\")\n public ibHttpGUILoginUrl,\n /** API login endpoint */\n @Inject(\"ibHttpAPILoginUrl\")\n public ibHttpAPILoginUrl,\n /** Authorizazion type. Either bearer token (JWT) or basic */\n @Inject(\"ibHttpAuthType\")\n public ibHttpAuthType,\n /** Where to storage the user's access token */\n @Inject(\"ibHttpSessionStorageType\")\n public ibHttpSessionStorageType,\n /** Refresh access token API endpoint */\n @Inject(\"ibHttpAPIRefreshUrl\")\n public ibHttpAPIRefreshUrl,\n /** Property name of additional data or claims within the JWT token */\n @Inject(\"ibHttpJWTClaimsField\")\n public ibHttpJWTClaimsField,\n /** Property name of the user roles within the JWT claims field */\n @Inject(\"ibHttpJWTRolesField\")\n public ibHttpJWTRolesField\n ) {}\n\n /**\n * Attempts a login to the server by contacting the endpoint provided by the token {@link ibHttpAPILoginUrl}\n */\n public login(user: IbUserLogin) {\n const activeSession = new IbSession<T>();\n\n if (user) {\n if (this.ibHttpAuthType === IbAuthTypes.BASIC_AUTH) {\n activeSession.serverData.accessToken = window.btoa(\n user.email + \":\" + user.password\n );\n }\n activeSession.valid = false;\n activeSession.user = {\n ...user,\n password: \"\",\n };\n }\n\n return this.httpClient.post<T>(this.ibHttpAPILoginUrl, user).pipe(\n map((token) => {\n activeSession.valid = true;\n activeSession.serverData = token;\n this.store.dispatch(\n ibAuthActions.login({ activeSession: activeSession })\n );\n return token;\n }),\n catchError((err) => throwError(() => err))\n );\n }\n\n /**\n * Refresh a token by contacting the endpoint provided by the token {@link ibHttpAPIRefreshUrl}\n */\n public refresh(token: string) {\n return this.httpClient.post<IbAPITokens>(this.ibHttpAPIRefreshUrl, {\n token,\n });\n }\n\n /**\n * Logout the user, clear the session, and navigate back to {@link ibHttpGUILoginUrl}\n * @param makeSnack Whether to show a snackbar message when logging out\n */\n public logout(makeSnack: boolean = true) {\n this.store.dispatch(ibAuthActions.logout());\n this.srvRouter.navigateByUrl(this.ibHttpGUILoginUrl);\n if (makeSnack) {\n this.snackBar.open(\"Logout completed\", null, { duration: 2000 });\n }\n }\n\n /**\n * Check whether the current user has at least one of the provided roles\n * @param roles List of roles\n * @returns true if the user has at least one of the provided roles\n */\n public hasRoles(roles: string[]): Observable<boolean> {\n return this.store.select(ibSelectActiveSession<IbAPITokens>()).pipe(\n filter((session) => session?.serverData?.accessToken !== undefined),\n map((session) => jwtDecode(session.serverData.accessToken)),\n map((decodedData) => {\n const userRoles: string[] =\n decodedData?.[this.ibHttpJWTClaimsField]?.[\n this.ibHttpJWTRolesField\n ] ?? [];\n for (let r of roles) {\n if (userRoles.findIndex((ur) => ur === r) >= 0) {\n return true;\n }\n }\n return false;\n })\n );\n }\n}\n","import { Inject, Injectable, Optional, inject } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, Router } from \"@angular/router\";\nimport { Store } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\nimport { map, take } from \"rxjs/operators\";\nimport { ibSelectActiveSession } from \"../store/session/selectors\";\nimport { IbLoginService } from \"./login.service\";\nimport { IbAPITokens, IbSession } from \"./session.model\";\n\n/**\n * Guard routes based on user authentication.\n *\n * Usage:\n * - Include the `IbAuthGuard` in the `canActivate` route guard to protect routes.\n * - If the user is not authenticated, they will be redirected to the login page provided by the `ibHttpGUILoginUrl` token.\n *\n * Example:\n * ```typescript\n * const routes: Routes = [\n * {\n * path: 'dashboard',\n * component: DashboardComponent,\n * canActivate: [IbAuthGuard],\n * },\n * // ... other routes ...\n * ];\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbAuthGuard {\n store = inject(Store);\n session$: Observable<IbSession<IbAPITokens> | null> = this.store.select(\n ibSelectActiveSession<IbAPITokens>()\n );\n\n constructor(\n private router: Router,\n @Inject(\"ibHttpGUILoginUrl\") public ibHttpGUILoginUrl: string\n ) {}\n\n canActivate() {\n return this.session$.pipe(\n take(1),\n map((session) => {\n const isAuth = session != null;\n if (!isAuth) {\n this.router.navigateByUrl(this.ibHttpGUILoginUrl);\n }\n return isAuth;\n })\n );\n }\n}\n\n/**\n * Guard routes based on user login status.\n * The opposite of IbAuthGuard, the route will activate if a user is NOT authenticated\n *\n * Usage:\n * - Include the `IbLoginGuard` in the `canActivate` route guard to protect routes.\n * - If the user is authenticated, they will be redirected to a page provided by the `ibHttpGUIDashboardUrl` token\n *\n * Example:\n * ```typescript\n * const routes: Routes = [\n * {\n * path: 'login',\n * component: LoginComponent,\n * canActivate: [IbLoginGuard],\n * },\n * // ... other routes ...\n * ];\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbLoginGuard {\n store = inject(Store);\n session$: Observable<IbSession<IbAPITokens> | null> = this.store.select(\n ibSelectActiveSession<IbAPITokens>()\n );\n\n public path = \"\";\n constructor(\n private router: Router,\n @Inject(\"ibHttpGUIDashboardUrl\")\n public ibHttpGUIDashboardUrl: string\n ) {}\n\n canActivate() {\n return this.session$.pipe(\n take(1),\n map((session) => {\n const isAuth = session != null;\n if (isAuth) {\n if (this.path !== \"\") {\n this.router.navigateByUrl(this.path);\n } else {\n this.router.navigateByUrl(this.ibHttpGUIDashboardUrl);\n }\n }\n return !isAuth;\n })\n );\n }\n}\n\n/**\n * Guard routes based on user roles.\n *\n * Usage:\n * - Include the `IbRoleGuard` in the `canActivate` route guard to protect routes based on user roles.\n * - Specify the required roles in the route's data property.\n * - If the user is not granted access, they will be redirected to a page provided by the `ibHttpGUIDashboardUrl` token\n *\n * Example:\n * ```typescript\n * const routes: Routes = [\n * {\n * path: 'admin',\n * component: AdminComponent,\n * canActivate: [IbRoleGuard],\n * data: { roles: ['admin'] }\n * },\n * // ... other routes ...\n * ];\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbRoleGuard {\n constructor(\n private router: Router,\n private login: IbLoginService<IbAPITokens>,\n @Inject(\"ibHttpGUIDashboardUrl\")\n public ibHttpGUIDashboardUrl: string\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot) {\n return this.login.hasRoles(route.data.roles).pipe(\n take(1),\n map((hasRole) => {\n if (!hasRole) {\n this.router.navigateByUrl(this.ibHttpGUIDashboardUrl);\n }\n return hasRole;\n })\n );\n }\n}\n","import { createSelector } from '@ngrx/store';\nimport { IHttpStore } from '..';\n\nconst selectFeature = (state) => state.ibHttpState;\n\nexport const ibSelectIsHttpLoading = createSelector(\n selectFeature,\n (state: IHttpStore): boolean => {\n return state?.loader?.showLoading ?? false\n }\n)\n\nexport const ibSelectIsHttpUrlLoading = (endpoint: { url: string, method: string}) => createSelector(\n selectFeature,\n (state: IHttpStore): boolean => {\n return state.loader.pendingRequestList.findIndex(pl => pl.url === endpoint.url && pl.method === endpoint.method) >= 0\n }\n)\n","import {Component, ViewEncapsulation, inject} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { ibSelectIsHttpLoading } from '../store/loader/selectors';\n\n@Component({\n selector: 'ib-spinner-loading',\n styles: [`\n .spinner {\n width: 40px;\n height: 40px;\n position: relative;\n margin: auto;\n top: 50%;\n }\n\n .double-bounce1, .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #333;\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n -webkit-animation: sk-bounce 1s infinite ease-in-out;\n animation: sk-bounce 1s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%, 100% {\n -webkit-transform: scale(0.0)\n }\n 50% {\n -webkit-transform: scale(1.0)\n }\n }\n\n @keyframes sk-bounce {\n 0%, 100% {\n transform: scale(0.0);\n -webkit-transform: scale(0.0);\n }\n 50% {\n transform: scale(1.0);\n -webkit-transform: scale(1.0);\n }\n }\n\n .modal-spinner {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n z-index: 9999;\n background-color: rgba(0, 0, 0, 0.4);\n }\n `],\n template: `\n <div *ngIf=\"showLoading$ | async\" class=\"modal-spinner\">\n <div class=\"spinner\">\n <div class=\"double-bounce1\"></div>\n <div class=\"double-bounce2\"></div>\n </div>\n </div>`,\n encapsulation: ViewEncapsulation.None\n})\n\nexport class IbSpinnerLoadingComponent {\n store = inject(Store);\n showLoading$: Observable<boolean> = this.store.select(ibSelectIsHttpLoading)\n}\n\n/* istanbul ignore next */\n","import { NgModule } from '@angular/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { IbToastNotification } from './toast.service';\n\n\n@NgModule({\n imports: [\n MatSnackBarModule\n ],\n exports: [],\n declarations: [\n ],\n providers: [IbToastNotification],\n})\nexport class IbToastModule { }\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Inject, Injectable, inject } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError, mergeMap, take } from \"rxjs/operators\";\nimport { IbToastNotification } from \"../../ui/toast/toast.service\";\nimport { IbLoginService } from \"../auth/login.service\";\nimport { IbAPITokens, IbAuthTypes, IbSession } from \"../auth/session.model\";\nimport { ibSelectActiveSession } from \"../store/session/selectors\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbAuthInterceptor implements HttpInterceptor {\n store = inject(Store);\n session$: Observable<IbSession<IbAPITokens> | null> = this.store.select(\n ibSelectActiveSession<IbAPITokens>()\n );\n\n constructor(\n private ibToast: IbToastNotification,\n private login: IbLoginService<IbAPITokens>,\n @Inject(\"ibHttpEnableInterceptors\")\n public ibHttpEnableInterceptors: boolean,\n @Inject(\"ibHttpAPILoginUrl\") public ibHttpAPILoginUrl: string,\n @Inject(\"ibHttpToastOnLoginFailure\")\n public ibHttpToastOnLoginFailure: string,\n @Inject(\"ibHttpAuthType\") public ibHttpAuthType: IbAuthTypes\n ) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n let authString = \"\";\n\n let authReq = request.clone({\n headers: request.headers.set(\"x-requested-with\", \"XMLHttpRequest\"),\n });\n switch (this.ibHttpAuthType) {\n case IbAuthTypes.JWT:\n authString = \"Bearer \";\n break;\n case IbAuthTypes.BASIC_AUTH:\n authString = \"Basic \";\n break;\n }\n return this.session$.pipe(\n take(1),\n mergeMap((session) => {\n if (session?.valid && session?.serverData?.accessToken) {\n authString += session.serverData.accessToken;\n authReq = request.clone({\n headers: request.headers.set(\"Authorization\", authString),\n });\n }\n return next.handle(authReq);\n }),\n catchError((err) => {\n if (!this.ibHttpEnableInterceptors) {\n return throwError(() => err);\n }\n if (request.url !== this.ibHttpAPILoginUrl && err.status === 401) {\n this.ibToast.open(this.ibHttpToastOnLoginFailure, \"warning\");\n this.login.logout(false);\n }\n return throwError(() => err);\n })\n );\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { IbToastNotification } from \"../../ui/toast/toast.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbErrorInterceptor implements HttpInterceptor {\n constructor(\n private ibToast: IbToastNotification,\n private translate: TranslateService,\n @Inject(\"ibHttpEnableInterceptors\")\n public ibHttpEnableInterceptors: boolean,\n @Inject(\"ibHttpToastOnGenericFailure\")\n public ibHttpToastOnGenericFailure: string,\n @Inject(\"ibHttpToastErrorField\") public ibHttpToastErrorField: string,\n @Inject(\"ibHttpToastOnStatusCode\") public ibHttpToastOnStatusCode: any,\n @Inject(\"ibHttpToastErrorCode\") public ibHttpToastErrorCode: string\n ) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError((err) => {\n if (!this.ibHttpEnableInterceptors) {\n return throwError(() => err);\n }\n if ([200, 401].indexOf(err.status) === -1) {\n let errorMessage = this.ibHttpToastOnGenericFailure;\n\n if (this.ibHttpToastOnStatusCode[err.status]) {\n errorMessage = this.ibHttpToastOnStatusCode[err.status];\n }\n\n if (\n this.ibHttpToastErrorField &&\n err.error &&\n err.error[this.ibHttpToastErrorField]\n ) {\n errorMessage = err.error[this.ibHttpToastErrorField];\n }\n\n if (\n this.ibHttpToastErrorCode &&\n err.error &&\n err.error[this.ibHttpToastErrorCode]\n ) {\n const codeError = `shared.ibHttp.error${\n err.error[this.ibHttpToastErrorCode]\n }`;\n const instant = this.translate.instant(codeError);\n if (\n instant !==\n `shared.ibHttp.error${err.error[this.ibHttpToastErrorCode]}`\n ) {\n errorMessage = instant;\n }\n }\n this.ibToast.open(errorMessage, \"error\");\n }\n return throwError(() => err);\n })\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n/**\n * Handles storage operations such as setting and getting data\n * in either localStorage or cookies.\n *\n * Usage:\n * - Inject the `IbStorageService` service in your component or service.\n * - Use the `set` method to store data and the `get` method to retrieve data.\n *\n * Example:\n * ```typescript\n * constructor(private storageService: IbStorageService) {}\n *\n * saveData() {\n * const data = { key: 'value' };\n * this.storageService.set('myKey', data);\n * }\n *\n * retrieveData() {\n * const savedData = this.storageService.get('myKey');\n * console.log(savedData);\n * }\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbStorageService {\n /**\n * Method to set data in storage (localStorage or cookies).\n *\n * @param key The key under which to store the data\n * @param object The data object to be stored\n * @param storageType The type of storage to use (IbStorageTypes.LOCALSTORAGE or IbStorageTypes.COOKIESTORAGE)\n */\n set(\n key: string,\n object: any,\n storageType: IbStorageTypes = IbStorageTypes.LOCALSTORAGE\n ): void {\n switch (storageType) {\n case IbStorageTypes.LOCALSTORAGE:\n localStorage.setItem(key, JSON.stringify(object));\n break;\n case IbStorageTypes.COOKIESTORAGE:\n this.setCookie(key, JSON.stringify(object));\n break;\n }\n }\n\n /**\n * Method to get data from storage (localStorage or cookies).\n *\n * @param key The key under which the data is stored\n * @param storageType The type of storage to use (IbStorageTypes.LOCALSTORAGE or IbStorageTypes.COOKIESTORAGE)\n * @returns The retrieved data object or null if not found\n */\n get(\n key: string,\n storageType: IbStorageTypes = IbStorageTypes.LOCALSTORAGE\n ): any {\n let data: string;\n switch (storageType) {\n case IbStorageTypes.LOCALSTORAGE:\n data = localStorage.getItem(key);\n break;\n case IbStorageTypes.COOKIESTORAGE:\n data = this.getCookie(key);\n break;\n }\n if (data) {\n return JSON.parse(data);\n }\n return null;\n }\n\n /**\n * Set a cookie with the provided name and value.\n *\n * @param name The name of the cookie\n * @param val The value to be stored in the cookie\n */\n private setCookie(name: string, val: string): void {\n const date = new Date();\n const value = val;\n date.setTime(date.getTime() + 7 * 24 * 60 * 60 * 1000); // Cookie expiration time: 7 days\n document.cookie =\n name + \"=\" + value + \"; expires=\" + date.toUTCString() + \"; path=/\";\n }\n\n /**\n * Get the value of a cookie with the provided name.\n *\n * @param name The name of the cookie\n * @returns The value of the cookie or undefined if not found\n */\n private getCookie(name: string): string | undefined {\n const value = \"; \" + document.cookie;\n const parts = value.split(\"; \" + name + \"=\");\n if (parts.length === 2) {\n return parts.pop().split(\";\").shift();\n }\n return undefined;\n }\n}\n\nexport enum IbStorageTypes {\n LOCALSTORAGE,\n COOKIESTORAGE,\n}\n","import { NgModule } from '@angular/core';\nimport { IbStorageService } from './storage.service';\n\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n IbStorageService\n ],\n})\nexport class IbStorageModule { }\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const ibLoaderActions = {\n incLoading: createAction('[Http/Loader] incLoading', props<{ url: string, method: string}>()),\n decLoading: createAction('[Http/Loader] decLoading', props<{ url: string, method: string}>()),\n skipShow: createAction('[Http/Loader] skipShow'),\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\nimport { delay, finalize } from \"rxjs/operators\";\nimport { ibLoaderActions } from \"../store/loader/actions\";\n\nexport interface IbHttpRequestDefinition {\n url: string;\n method: string;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class IbLoaderInterceptor implements HttpInterceptor {\n constructor(\n private store: Store,\n @Inject(\"ibHttpEnableInterceptors\")\n public ibHttpEnableInterceptors: boolean,\n @Inject(\"ibHttpUrlExcludedFromLoader\")\n public ibHttpUrlExcludedFromLoader: IbHttpRequestDefinition[]\n ) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n if (!this.ibHttpEnableInterceptors) {\n return next.handle(request);\n }\n\n if (\n this.ibHttpUrlExcludedFromLoader.find(\n (u) =>\n u.url.toUpperCase() === request.url.toUpperCase() &&\n u.method.toUpperCase() === request.method.toUpperCase()\n )\n ) {\n this.store.dispatch(ibLoaderActions.skipShow());\n }\n this.store.dispatch(\n ibLoaderActions.incLoading({\n url: request.url,\n method: request.method,\n })\n );\n return next.handle(request).pipe(\n delay(1000),\n finalize(() =>\n this.store.dispatch(\n ibLoaderActions.decLoading({\n url: request.url,\n method: request.method,\n })\n )\n )\n );\n }\n}\n","import { Component, ElementRef, Input } from \"@angular/core\";\n\n@Component({\n selector: 'ib-loading-skeleton-rect',\n host: {\n 'class': 'pulse'\n },\n template: ``,\n styles: [`\n :host {\n display: block;\n width: var(--skeleton-rect-width);\n height: var(--skeleton-rect-height);\n background: rgb(239, 241, 246) no-repeat;\n margin-bottom: 5px;\n }\n\n `]\n})\nexport class IbLoadingSkeletonRectComponent {\n @Input() width: string;\n @Input() height: string;\n @Input() className: string;\n\n constructor(private host: ElementRef<HTMLElement>) { }\n\n ngOnInit() {\n const host = this.host.nativeElement;\n\n if (this.className) {\n host.classList.add(this.className);\n }\n\n host.style.setProperty('--skeleton-rect-width', this.width ?? '100%');\n host.style.setProperty('--skeleton-rect-height', this.height ?? '20px');\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ib-loading-skeleton-container',\n template: `\n <div class=\"ib-skeleton-container\">\n <ib-loading-skeleton-rect\n *ngFor=\"let s of skeletons\"\n [width]=\"s.width\"\n [height]=\"s.height\"\n [className]=\"s.className\"\n ></ib-loading-skeleton-rect>\n </div>\n `,\n styles: [`\n :host{\n flex: 1;\n width: 100%;\n }\n .ib-skeleton-container{\n display: flex;\n flex-direction: column;\n }\n\n `]\n})\n\nexport class IbLoadingSkeletonContainerComponent implements OnInit {\n @Input() skeletons: {\n width: string;\n height: string;\n className: string;\n }[] = []\n constructor() { }\n ngOnInit() { }\n}\n","import {\n Directive,\n Input,\n TemplateRef,\n ViewContainerRef,\n OnDestroy,\n OnInit,\n inject,\n} from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport {\n ibSelectIsHttpLoading,\n ibSelectIsHttpUrlLoading,\n} from \"../store/loader/selectors\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { IbLoadingSkeletonContainerComponent } from \"./loading-skeleton-container.component\";\n\nconst defaultConfig = {\n size: 1,\n width: \"rand\",\n height: \"20px\",\n className: \"\",\n endpoint: null,\n};\n\n@Directive({ selector: \"[ibLoading]\" })\nexport class IbLoadingDirective implements OnInit, OnDestroy {\n store = inject(Store);\n isLoading$ = this.store.select(ibSelectIsHttpLoading);\n isLoadingSpecificUrl$: Observable<boolean> | null = null;\n @Input(\"ibLoading\") config: {\n size?: number;\n width?: string;\n height?: string;\n className?: string;\n endpoint?: { url: string; method: string } | null;\n } = { ...defaultConfig };\n\n loadingSub?: Subscription;\n constructor(private tpl: TemplateRef<any>, private vcr: ViewContainerRef) {}\n\n ngOnInit(): void {\n const { size, width, height, className, endpoint } = {\n ...defaultConfig,\n ...this.config,\n };\n const renderCb = (isLoading) => {\n this.vcr.clear();\n if (isLoading) {\n const ref = this.vcr.createComponent(\n IbLoadingSkeletonContainerComponent\n );\n const skeletons = Array.from({ length: size }).map(() => ({\n width: width === \"rand\" ? `${30 + 60 * Math.random()}%` : width,\n height: height,\n className: className,\n }));\n ref.setInput('skeletons', skeletons);\n } else {\n this.vcr.createEmbeddedView(this.tpl);\n }\n };\n if (endpoint) {\n this.isLoadingSpecificUrl$ = this.store.select(\n ibSelectIsHttpUrlLoading(endpoint)\n );\n this.loadingSub = this.isLoadingSpecificUrl$.subscribe(renderCb);\n } else {\n this.loadingSub = this.isLoading$.subscribe(renderCb);\n }\n }\n\n ngOnDestroy(): void {\n this.loadingSub?.unsubscribe();\n }\n}\n","import {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { IbLoginService } from \"../auth/login.service\";\nimport { IbAPITokens } from \"../auth/session.model\";\n\n@Directive({\n selector: \"[ibRoleCheck]\",\n standalone: true,\n})\nexport class IbRoleCheckDirective implements OnInit, OnDestroy {\n @Input(\"ibRoleCheck\") roles: string[];\n destroy: Subject<void> = new Subject();\n\n constructor(\n private tpl: TemplateRef<any>,\n private vcr: ViewContainerRef,\n private login: IbLoginService<IbAPITokens>\n ) {}\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n ngOnInit(): void {\n this.login\n .hasRoles(this.roles)\n .pipe(takeUntil(this.destroy))\n .subscribe((hasRole) => {\n this.vcr.clear();\n if (hasRole) {\n this.vcr.createEmbeddedView(this.tpl);\n }\n });\n }\n}\n","import { Injector, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from \"@angular/common/http\";\nimport { IbAuthGuard, IbLoginGuard, IbRoleGuard } from \"./auth/guard.service\";\nimport { IbSpinnerLoadingComponent } from \"./http/spinner-loading.component\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { IbToastModule } from \"../ui/toast/toast.module\";\nimport { IbAuthInterceptor } from \"./http/auth.interceptor\";\nimport { IbErrorInterceptor } from \"./http/error.interceptor\";\nimport { IbStorageModule } from \"../storage/storage.module\";\nimport { IbLoginService } from \"./auth/login.service\";\nimport { IbLoaderInterceptor } from \"./http/loader.interceptor\";\nimport { IbLoadingDirective } from \"./http/loading-skeleton.directive\";\nimport { IbLoadingSkeletonRectComponent } from \"./http/loading-skeleton.component\";\nimport { IbLoadingSkeletonContainerComponent } from \"./http/loading-skeleton-container.component\";\nimport { IbRoleCheckDirective } from \"./http/role-check.directive\";\nimport { IbStorageTypes } from \"../storage/storage.service\";\nimport { IbAuthTypes } from \"./auth/session.model\";\n\nconst components = [\n IbSpinnerLoadingComponent,\n IbLoadingDirective,\n IbLoadingSkeletonContainerComponent,\n IbLoadingSkeletonRectComponent,\n];\n@NgModule({ exports: [...components, IbRoleCheckDirective],\n declarations: [...components], imports: [TranslateModule.forChild({\n extend: true,\n }),\n CommonModule,\n ReactiveFormsModule,\n IbToastModule,\n IbStorageModule,\n IbRoleCheckDirective], providers: [\n IbLoginService,\n { provide: \"ibHttpAuthType\", useValue: IbAuthTypes.JWT },\n {\n provide: \"ibHttpUrlExcludedFromLoader\",\n useValue: [],\n },\n { provide: \"ibHttpGUIDashboardUrl\", useValue: \"/home\" },\n {\n provide: \"ibHttpAPILoginUrl\",\n useValue: \"/api/auth/login\",\n },\n { provide: \"ibHttpGUILoginUrl\", useValue: \"/login\" },\n {\n provide: \"ibHttpAPIRefreshUrl\",\n useValue: \"/api/auth/refresh\",\n },\n {\n provide: \"ibHttpSessionStorageType\",\n useValue: IbStorageTypes.LOCALSTORAGE,\n },\n {\n provide: \"ibHttpJWTClaimsField\",\n useValue: \"https://hasura.io/jwt/claims\",\n },\n { provide: \"ibHttpJWTRolesField\", useValue: \"x-hasura-allowed-roles\" },\n { provide: \"ibHttpEnableInterceptors\", useValue: true },\n {\n provide: \"ibHttpToastOnLoginFailure\",\n useValue: \"shared.ibHttp.authFailure\",\n },\n {\n provide: \"ibHttpToastOnGenericFailure\",\n useValue: \"shared.ibHttp.genericFailure\",\n },\n {\n provide: \"ibHttpToastOnStatusCode\",\n useValue: {},\n },\n {\n provide: \"ibHttpToastErrorCode\",\n useValue: null,\n },\n {\n provide: \"ibHttpToastErrorField\",\n useValue: null,\n },\n { provide: HTTP_INTERCEPTORS, useClass: IbAuthInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: IbErrorInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: IbLoaderInterceptor, multi: true },\n provideHttpClient(withInterceptorsFromDi()),\n ] })\nexport class IbHttpModule {\n static injector: Injector = null;\n\n constructor(injector: Injector) {\n IbHttpModule.injector = injector;\n }\n\n static forRoot(): ModuleWithProviders<IbHttpModule> {\n return {\n ngModule: IbHttpModule,\n providers: [\n IbLoginService,\n IbAuthGuard,\n IbLoginGuard,\n IbRoleGuard,\n ],\n };\n }\n}\n","import { catchError, map } from 'rxjs/operators';\nimport { IbToastNotification } from '../../ui/toast/toast.service';\nimport { IbHttpModule } from '../http.module';\n\n/**\n * Method decorator for displaying toast notifications and optionally navigating back after a CRUD operation.\n *\n * @param enableBackCall Indicates whether to navigate back after the operation.\n * @param successMessage The success message to be displayed in the toast notification. (i18n)\n * @param timeoutOnSave Time in milliseconds to wait before navigating back (if enabled).\n * @returns MethodDecorator\n *\n * Usage example:\n * ```typescript\n * @ibCrudToast(true, 'Record saved successfully', 500)\n * handleSave() {\n * // ... your save logic ...\n * return someObservable;\n * }\n * ```\n */\nexport function ibCrudToast(\n enableBackCall = false,\n successMessage = 'shared.ibCrudToast.success',\n timeoutOnSave = 500,\n ): MethodDecorator {\n return function(target, key: string, descriptor: any) {\n\n const originalMethod = descriptor.value;\n\n descriptor.value = function(...args: any[]) {\n\n const result = originalMethod.apply(this, args);\n const toast = IbHttpModule.injector.get<IbToastNotification>(IbToastNotification);\n return result.pipe(\n map((x) => {\n if (successMessage) { toast.open(successMessage); }\n if (enableBackCall) {\n setTimeout(() => {\n history.back();\n }, timeoutOnSave);\n }\n return x;\n }),\n );\n };\n\n return descriptor;\n };\n}\n","import { Inject, Injectable, Optional, inject } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { Store } from \"@ngrx/store\";\nimport { combineLatest, of } from \"rxjs\";\nimport {\n delay,\n map,\n mergeMap,\n switchMap,\n takeUntil,\n withLatestFrom,\n} from \"rxjs/operators\";\nimport { IbStorageTypes } from \"../../../storage/storage.service\";\nimport { IbLoginService } from \"../../auth/login.service\";\nimport { IbAPITokens, IbSession } from \"../../auth/session.model\";\nimport { ibAuthActions } from \"./actions\";\nimport { ibSelectAccessTokenExp, ibSelectActiveSession } from \"./selectors\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbSessionEffects {\n private actions$ = inject(Actions);\n private store = inject(Store);\n\n refreshCycle$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(ibAuthActions.refreshCycle),\n withLatestFrom(\n combineLatest([\n this.store.select(ibSelectActiveSession<IbAPITokens>()),\n this.store.select(ibSelectAccessTokenExp),\n ])\n ),\n mergeMap(([, [session, exp]]) =>\n of(session).pipe(\n delay(exp),\n takeUntil(this.actions$.pipe(ofType(ibAuthActions.logout)))\n )\n ),\n mergeMap((session) =>\n session?.serverData?.refreshToken\n ? this.login.refresh(session?.serverData?.refreshToken)\n : of(null)\n ),\n switchMap((serverData: IbAPITokens | null) => {\n if (serverData === null) {\n return [ibAuthActions.logout()];\n }\n const activeSession = new IbSession<IbAPITokens>();\n activeSession.valid = true;\n activeSession.serverData = serverData;\n return [\n ibAuthActions.login({ activeSession }),\n ibAuthActions.refreshCycle(),\n ];\n })\n );\n });\n\n constructor(\n private login: IbLoginService<IbAPITokens>,\n @Inject(\"ibHttpSessionStorageType\")\n public ibHttpSessionStorageType: IbStorageTypes\n ) {}\n}\n","import { Action, createReducer, on } from \"@ngrx/store\";\nimport { ibLoaderActions } from \"./actions\";\nimport { IbLoaderState } from \"./interfaces\";\n\n\nconst INITIAL: IbLoaderState = {\n showLoading: false,\n skipShow: false,\n pendingRequestList: []\n}\n\nconst main = createReducer(INITIAL,\n on(ibLoaderActions.incLoading, (state, {url, method}) => {\n const pendingRequestList = [...state.pendingRequestList, {url, method} ]\n return {\n ...state,\n pendingRequestList,\n showLoading: (!state.skipShow && pendingRequestList.length > 0)\n }\n }),\n on(ibLoaderActions.decLoading, (state, {url, method}) => {\n const pendingRequestList = state.pendingRequestList.reduce((acc, pl) => {\n if(pl.url !== url || pl.method !== method){\n acc.push(pl)\n }\n return acc\n }, [])\n return {\n ...state,\n skipShow: false,\n pendingRequestList,\n showLoading: (pendingRequestList.length > 0)\n }\n }),\n on(ibLoaderActions.skipShow, (state) => ({\n ...state,\n skipShow: true\n })),\n);\n\n\nexport function loaderReducer(state: IbLoaderState = INITIAL, action: Action){\n return main(state, action)\n}\n","\nimport { Action, createReducer, on } from \"@ngrx/store\";\nimport { ibAuthActions } from \"./actions\";\nimport { IbSessionState } from \"./interfaces\";\n\n\nconst INITIAL: IbSessionState = {\n activeSession: undefined\n}\n\nconst main = createReducer(INITIAL,\n on(ibAuthActions.login, (state, { activeSession }) => ({\n activeSession: {...activeSession}\n })),\n on(ibAuthActions.logout, state => ({activeSession: undefined})),\n);\n\n\nexport function sessionReducer(state: IbSessionState = INITIAL, action: Action){\n return main(state, action)\n}\n","import { sessionReducer } from './session/reducers';\nimport { ActionReducerMap } from '@ngrx/store';\nimport { loaderReducer } from './loader/reducers';\nimport { IbSessionEffects } from './session/effects';\nimport { IbLoaderState } from './loader/interfaces';\nimport { IbSessionState } from './session/interfaces';\n\nexport interface IHttpStore{\n session: IbSessionState;\n loader: IbLoaderState;\n}\n\nexport const ibHttpReducers: ActionReducerMap<IHttpStore> = {\n session: sessionReducer,\n loader: loaderReducer,\n};\n\nexport const ibHttpEffects = [\n IbSessionEffects\n]\n","import {Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'ib-spinner-loading',\n template: ``,\n encapsulation: ViewEncapsulation.None\n})\n\nexport class SpinnerLoadingStubComponent {\n\n}\n\n/* istanbul ignore next */\n","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { IbAPITokens, IbUserLogin } from \"./session.model\";\n\n\n@Injectable({providedIn: 'root'})\nexport class IbLoginServiceStub<T extends IbAPITokens | IbAPITokens > {\n\n login (u: IbUserLogin): Observable<T>{\n return of({\n accessToken: '',\n refreshToken: ''\n }) as Observable<T>\n }\n\n logout() {\n }\n\n}\n","import { Directive, Input } from \"@angular/core\";\n\n@Directive({ selector: '[ibLoading]' })\nexport class IbLoadingStubDirective {\n @Input('ibLoading') config = {\n size: 1,\n width: 'rand',\n height: '20px',\n className: '',\n endpoint: null\n }\n constructor() {}\n}\n","import { NgModule } from '@angular/core';\nimport { SpinnerLoadingStubComponent } from './http/spinner-loading.stub.spec';\nimport { provideHttpClientTesting } from '@angular/common/http/testing';\nimport { IbLoginServiceStub } from './auth/login.service.stub.spec';\nimport { IbLoginService } from './auth/login.service';\nimport { IbLoadingStubDirective } from './http/loading-skeleton.directive.stub.spec';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n\n\n@NgModule({ exports: [\n SpinnerLoadingStubComponent,\n IbLoadingStubDirective\n ],\n declarations: [\n SpinnerLoadingStubComponent,\n IbLoadingStubDirective\n ], imports: [], providers: [\n { provide: IbLoginService, useClass: IbLoginServiceStub },\n provideHttpClient(withInterceptorsFromDi()),\n provideHttpClientTesting(),\n ] })\nexport class IbHttpTestModule { }\n","\nexport * from './auth/session.model';\nexport * from './http/messages.decorator';\nexport * from './http/spinner-loading.component';\nexport * from './auth/guard.service';\nexport * from './auth/login.service';\nexport * from './store/loader/interfaces';\nexport * from './store/session/interfaces';\nexport * from './store/loader/actions';\nexport * from './store/session/actions';\nexport * from './store/loader/selectors';\nexport * from './store/session/selectors';\nexport * from './store/session/effects';\nexport * from './store/loader/reducers';\nexport * from './store/session/reducers';\nexport * from './store/index';\nexport * from './http/loading-skeleton.component'\nexport * from './http/loading-skeleton-container.component'\nexport * from './http/loading-skeleton.directive'\nexport * from './http/role-check.directive'\nexport * from './http.module';\n\nexport * from './http-test.module';\n\nexport * from './http/loading-skeleton.directive.stub.spec'\n\n// FIXME error NG3001\nexport * from './http/spinner-loading.stub.spec';\n// END FIXME error NG3001\n","import { createAction } from \"@ngrx/store\";\n\nexport const ibHydrate = createAction(\"[IbHydration] Hydrate\");\n","import { inject, Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType, OnInitEffects } from \"@ngrx/effects\";\nimport { Action, Store } from \"@ngrx/store\";\nimport { distinctUntilChanged, switchMap, tap } from \"rxjs/operators\";\nimport * as HydrationActions from \"./actions\";\n\n@Injectable()\nexport class HydrationEffects implements OnInitEffects {\n static ibSessionStorageKey: string;\n static ibReduxPersistKeys: string[];\n\n private actions$ = inject(Actions);\n private store = inject(Store);\n\n serialize$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(HydrationActions.ibHydrate),\n switchMap(() => this.store),\n distinctUntilChanged(),\n tap((state) => {\n saveState(\n HydrationEffects.ibSessionStorageKey,\n HydrationEffects.ibReduxPersistKeys,\n state\n );\n return state;\n })\n ),\n { dispatch: false }\n );\n\n ngrxOnInitEffects(): Action {\n return HydrationActions.ibHydrate();\n }\n}\n\nfunction saveState(\n ibSessionStorageKey: string,\n ibReduxPersistKeys: string[],\n state: any\n) {\n const storageValue = localStorage.getItem(ibSessionStorageKey);\n let oldState = {};\n try {\n oldState = JSON.parse(storageValue);\n } catch {\n console.log(\"no previous state to resume\");\n }\n const toSerialize = {\n ...oldState,\n ...state,\n };\n for (let k in toSerialize) {\n if (ibReduxPersistKeys?.indexOf(k) < 0) {\n delete toSerialize[k];\n }\n }\n return localStorage.setItem(ibSessionStorageKey, JSON.stringify(toSerialize));\n}\n","import { ActionReducer, UPDATE } from \"@ngrx/store\";\nimport * as HydrationActions from \"./actions\";\n\nexport const getIbHydrationMetaReducer = (\n ibSessionStorageKey: string,\n ibReduxPersistKeys: string[]\n) => {\n return (reducer: ActionReducer<any>): ActionReducer<any> => {\n return (state, action) => {\n switch (action.type) {\n case HydrationActions.ibHydrate.type:\n case UPDATE:\n return {\n ...state,\n ...loadState(ibSessionStorageKey, ibReduxPersistKeys),\n };\n default:\n return reducer(state, action);\n }\n };\n };\n};\n\nfunction loadState(ibSessionStorageKey: string, ibReduxPersistKeys: string[]) {\n const storageValue = localStorage.getItem(ibSessionStorageKey);\n if (storageValue) {\n try {\n const state = JSON.parse(storageValue);\n const filteredState = {};\n for (let fk of ibReduxPersistKeys) {\n filteredState[fk] = state[fk];\n }\n console.log(\"[IbHydrate] load from local storage\", filteredState);\n return filteredState;\n } catch {\n localStorage.removeItem(ibSessionStorageKey);\n }\n }\n}\n","import { MetaReducer } from \"@ngrx/store\";\nimport { HydrationEffects } from \"./effects\";\nimport { getIbHydrationMetaReducer } from \"./reducer\";\n\n/**\n * Function to set up hydration for the application.\n *\n * @param ibSessionStorageKey The key to identify the storage in which the state is stored.\n * @param ibReduxPersistKeys The keys to other redux stores to include in the persisted state.\n * @returns Effects and metareducers to apply to your root `EffectsModule` and `StoreModule`.\n */\nexport const ibSetupHydration = (\n ibSessionStorageKey: string,\n ibReduxPersistKeys: string[]\n) => {\n HydrationEffects.ibSessionStorageKey = ibSessionStorageKey;\n HydrationEffects.ibReduxPersistKeys = ibReduxPersistKeys;\n return {\n effects: [HydrationEffects],\n metareducers: getIbMetaReducers(ibSessionStorageKey, ibReduxPersistKeys),\n };\n};\n\nconst getIbMetaReducers = (\n ibSessionStorageKey: string,\n ibReduxPersistKeys: string[]\n): MetaReducer<any, any>[] => {\n return [getIbHydrationMetaReducer(ibSessionStorageKey, ibReduxPersistKeys)];\n};","import { IbStorageTypes } from './storage.service';\n\nexport class IbStorageServiceStub{\n set(key: string, object: any, storageType: IbStorageTypes = IbStorageTypes.LOCALSTORAGE){\n }\n\n get(key: string, storageType: IbStorageTypes = IbStorageTypes.LOCALSTORAGE): any{\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IbStorageService } from './storage.service';\nimport { IbStorageServiceStub } from './storage.stub.spec';\n\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n { provide: IbStorageService, useClass: IbStorageServiceStub}\n ],\n})\nexport class IbStorageTestModule { }\n","export const ibHttpTranslations = {\n it: {\n ibCrudToast: {\n success: \"Salvataggio avvenuto con successo\",\n error: \"Errore in fase di salvataggio\"\n },\n ibHttp: {\n authFailure: \"Errore: autenticazione non riuscita\",\n genericFailure: \"Errore: operazione non riuscita\"\n }\n }\n}\n","export const ibMaterialFormTranslations = {\n it: {\n \"ibDropdown\": {\n \"selectAll\": \"Seleziona tutti\",\n \"selectNone\": \"Deseleziona tutti\",\n \"nullLabel\": \"Seleziona un elemento\"\n },\n \"ibForms\": {\n \"errors\": {\n \"minlength\": \"deve avere una lunghezza minima di {{v}} caratteri\",\n \"maxlength\": \"deve avere una lunghezza massima di {{v}} caratteri\",\n \"min\": \"deve avere un valore minimo di {{v}}\",\n \"max\": \"deve avere un valore massimo di {{v}}\",\n \"required\": \"è obbligatorio\",\n \"email\": \"Indirizzo email non valido\",\n \"date\": \"Data non valida\"\n },\n \"unsavedTitle\": \"Attenzione\",\n \"unsavedMessage\": \"Questa pagina potrebbe contenere dei dati non salvati, vuoi proseguire?\",\n array: {\n add: \"Aggiungi un campo\"\n }\n },\n }\n}\n","export const ibKaiFilterTranslations = {\n it: {\n ibKaiFilter: {\n required: 'è obbligatorio'\n },\n \"ibFilter\": {\n \"search\": \"Cerca\",\n \"condition\": \"Condizione\",\n \"eq\": \"Uguale a\",\n \"contains\": \"Contiene\",\n \"startsWith\": \"Inizia con\",\n \"endsWith\": \"Finisce con\",\n \"update\": \"Aggiorna\",\n \"clear\": \"Cancella\",\n \"value\": \"Valore\",\n \"min\": \"Min\",\n \"max\": \"Max\",\n \"between\": \"Tra {{min}} e {{max}}\",\n \"date\": {\n \"withinTheLast\": \"A partire da\",\n \"moreThan\": \"Da oltre\",\n \"between\": \"Tra\",\n \"minutes\": \"minuti\",\n \"hours\": \"ore\",\n \"days\": \"giorni\",\n \"weeks\": \"settimane\",\n \"minutesAgo\": \"minuti fa\",\n \"hoursAgo\": \"ore fa\",\n \"daysAgo\": \"giorni fa\",\n \"weeksAgo\": \"settimane fa\",\n \"dateRangeLabel\": \"Inserisci un intervallo\",\n \"dateRangeInvalid\": \"Intervallo non valido\"\n },\n \"label\": {\n \"text\": \"{{condition}} \\\"{{value}}\\\"\",\n \"tag\": {\n \"default\": \"{{name}}\",\n \"empty\": \"senza valore\",\n \"singleItem\": \"{{item}}\",\n \"multipleItems\": \"{{item}} +{{length}}\"\n },\n \"number\": \"tra {{min}} e {{max}}\"\n },\n includeEmpty: \"Includi senza valore\",\n noItems: \"Nessun elemento.\",\n true: \"Vero\",\n false: \"Falso\"\n },\n }\n}\n","export const ibViewTranslations = {\n it: {\n \"ibTableView\": {\n \"no\": \"No\",\n \"add\": \"Crea vista\",\n \"remove\": \"Elimina vista\",\n \"rename\": \"Rinomina vista\",\n \"duplicate\": \"Duplica vista\",\n \"duplicatePlaceholder\": \"Copia di {{viewName}}\",\n \"save\": \"Salva\",\n \"undo\": \"Annulla modifiche\",\n \"cancel\": \"Annulla\",\n \"addTitle\": \"Crea una nuova vista\",\n \"removeTitle\": \"Elimina vista\",\n \"renameTitle\": \"Rinomina vista\",\n \"duplicateTitle\": \"Duplica vista\",\n \"removeMessage\": \"Questa operazione non è reversivbile. \\\"{{viewName}}\\\" non sarà più disponibile.\",\n \"viewName\": \"Nome vista\",\n \"defaultView\": \"Tutti\",\n \"unsavedTitle\": \"Modifiche non salvate\",\n \"unsavedView\": \"Vuoi salvare le modifiche apportate a \\\"{{viewName}}\\\"?\",\n \"unsavedUnnamedView\": \"Vuoi salvare le modifiche apportate in una nuova vista?\",\n \"view\": {\n \"added\": \"Vista creata\",\n \"removed\": \"Vista eliminata\",\n \"duplicated\": \"Vista duplicata\",\n \"renamed\": \"Vista rinominata\",\n \"saved\": \"Vista salvata\",\n },\n \"showFilters\": \"Mostra filtri\"\n },\n }\n}\n","export const ibKaiTableTranslations = {\n it: {\n \"aggregate\": {\n \"sum\": {\n \"name\": \"Somma\",\n \"label\": \"Calcola somma\",\n \"help\": \"Totale pagina (Totale complessivo)\"\n },\n \"avg\": {\n \"name\": \"Media\",\n \"label\": \"Calcola media\",\n \"help\": \"Media pagina (Media complessiva)\"\n },\n \"help\": \"Pagina corrente (Totale)\",\n \"apply\": \"Applica una funzione\",\n \"currentPage\": \"pagina\",\n \"total\": \"tutti\"\n },\n \"ibTable\": {\n \"export\": \"Esporta\",\n \"paginator\": {\n \"itemsPerPageLabel\": \"Elementi per pagina\",\n \"nextPageLabel\": \"Pagina successiva\",\n \"previousPageLabel\": \"Pagina precedente\",\n \"firstPageLabel\": \"Prima pagina\",\n \"lastPageLabel\": \"Ultima pagina\",\n \"rangeLabel1\": \"0 di {{length}}\",\n \"rangeLabel2\": \"{{startIndex}} - {{endIndex}} di {{length}}\"\n },\n \"exportData\": {\n \"title\": \"Esporta Dati\",\n \"export\": \"Esporta\",\n \"format\": \"Formato\",\n \"all\": \"Tutti i dati\",\n \"currentPage\": \"Pagina corrente\",\n \"selectedRows\": \"Righe selezionate\"\n }\n }\n }\n}\n","export const ibModalTranslations = {\n it: {\n \"ibModal\": {\n \"yes\": \"Si\",\n \"no\": \"No\",\n \"close\": \"Chiudi\"\n },\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { TranslateLoader } from \"@ngx-translate/core\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { ibHttpTranslations } from \"../http/translations\";\nimport { ibMaterialFormTranslations } from \"../ui/material-forms/translations\";\nimport { ibKaiFilterTranslations } from \"../ui/kai-filter/translations\";\nimport { ibViewTranslations } from \"../ui/views/translations\";\nimport { ibKaiTableTranslations } from \"../ui/kai-table/translations\";\nimport { ibModalTranslations } from \"../ui/modal/translations\";\n\n@Injectable({providedIn: 'root'})\nexport class IbTranslateModuleLoader implements TranslateLoader{\n constructor(private http: HttpClient){}\n getTranslation(lang: string): Observable<any> {\n return this.http.get(`./assets/i18n/${lang}.json`).pipe(\n map(tran => ({\n ...tran,\n shared: {\n ...ibHttpTranslations[lang],\n ...ibMaterialFormTranslations[lang],\n ...ibKaiFilterTranslations[lang],\n ...ibViewTranslations[lang],\n ...ibKaiTableTranslations[lang],\n ...ibModalTranslations[lang],\n ...(tran['shared'] ?? {})\n }\n }))\n )\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\ntype IbBreadcrumbItem = {\n label?: string;\n url?: string;\n icon?: string;\n}\n\n@Component({\n selector: 'ib-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n})\nexport class IbBreadcrumbComponent implements OnInit {\n static readonly ROUTE_DATA_BREADCRUMB = 'breadcrumb';\n /**\n * Edit icon or label of the first crumb\n */\n @Input() home: IbBreadcrumbItem = {url: '/', icon: 'home'};\n @Input() items: IbBreadcrumbItem[] = [];\n /**\n * Whether create breadcrumbs looking up the routes (`auto`), or define them through the `items` input ('static')\n */\n @Input() mode: 'static' | 'auto';\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute) {}\n\n ngOnInit() {\n if (this.mode === 'static') {\n return;\n }\n this.items = this.createBreadcrumbs(this.activatedRoute.root);\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => this.items = this.createBreadcrumbs(this.activatedRoute.root));\n }\n\n private createBreadcrumbs(route: ActivatedRoute, url = '', breadcrumbs: IbBreadcrumbItem[] = []) {\n const children = route.children;\n\n if (children.length === 0) {\n return breadcrumbs;\n }\n\n for (const child of children) {\n const routeURL: string = child.snapshot.url.map(segment => segment.path).join('/');\n if (routeURL !== '') {\n url += `/${routeURL}`;\n }\n\n const label = child.snapshot.data[IbBreadcrumbComponent.ROUTE_DATA_BREADCRUMB];\n if (label) {\n breadcrumbs.push({label, url});\n }\n\n return this.createBreadcrumbs(child, url, breadcrumbs);\n }\n }\n}\n","<div class=\"ibBreadcrumbs\">\n <a class=\"ibBreadcrumbs-link\" [routerLink]=\"['/']\">Home</a>\n <a class=\"ibBreadcrumbs-link\" [routerLink]=\"[item.url]\" *ngFor=\"let item of items\" style=\"margin: 5px;\">{{item.label}}</a>\n</div>","import { Component } from '@angular/core';\nimport { IbBreadcrumbComponent } from '../breadcrumb.component';\n\n@Component({\n selector: 'ib-material-breadcrumb',\n templateUrl: './material-breadcrumb.component.html',\n styleUrls: ['./material-breadcrumb.component.css']\n})\nexport class IbMaterialBreadcrumbComponent extends IbBreadcrumbComponent {}\n","<ul class=\"ibBreadcrumbs\">\n <li class=\"ibBreadcrumbs-link\">\n <ng-container *ngIf=\"!home.icon; else iconTemplate\">\n <a [routerLink]=\"[home.url]\">{{home.label | translate}}</a>\n </ng-container>\n <ng-template #iconTemplate>\n <a mat-icon-button aria-label=\"Homepage\" [routerLink]=\"[home.url]\"><mat-icon>{{home.icon}}</mat-icon></a>\n </ng-template>\n </li>\n <li *ngFor=\"let item of items\" class=\"ibBreadcrumbs-link\">\n <mat-icon>chevron_right</mat-icon>\n <a [routerLink]=\"[item.url]\">{{item.label | translate}}</a>\n </li>\n</ul>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IbBreadcrumbComponent } from './breadcrumb.component';\nimport { RouterModule } from '@angular/router';\nimport { IbMaterialBreadcrumbComponent } from './material-breadcrumb/material-breadcrumb.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n IbBreadcrumbComponent,\n IbMaterialBreadcrumbComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TranslateModule.forChild({\n extend: true\n }),\n MatIconModule\n ],\n exports: [\n IbBreadcrumbComponent,\n IbMaterialBreadcrumbComponent\n ]\n})\nexport class IbBreadcrumbModule { }\n","import {\n Directive,\n NgModule,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[ibTableAction]\",\n})\nexport class IbKaiTableAction {\n @ViewChild(TemplateRef) templateRef;\n constructor(\n @Optional() public _templateRef: TemplateRef<any>,\n public viewContainerRef: ViewContainerRef\n ) {\n this.templateRef = this.templateRef ?? this._templateRef;\n }\n}\n\n@Directive({\n selector: \"ib-table-action-group, [ib-table-action-group]\",\n})\nexport class IbKaiTableActionGroup {}\n\n@NgModule({\n exports: [IbKaiTableAction, IbKaiTableActionGroup],\n declarations: [IbKaiTableAction, IbKaiTableActionGroup],\n})\nexport class IbTableActionModule {}\n","import {InjectionToken} from '@angular/core';\n\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n */\nexport const IB_TABLE = new InjectionToken<any>(\"IbTable\");\n\n/** Used to provide a column to the aggregate cell of a given column. */\nexport const IB_COLUMN = new InjectionToken<any>(\"IbColumn\");\n\n/** Configurable options for `IbColumn`. */\nexport interface IbColumnOptions<T> {\n /**\n * Default function that provides the header text based on the column name if a header\n * text is not provided.\n */\n defaultHeaderTextTransform?: (name: string) => string;\n\n /** Default data accessor to use if one is not provided. */\n defaultDataAccessor?: (data: T, name: string) => string;\n}\n\n/** Injection token that can be used to specify the text column options. */\nexport const IB_COLUMN_OPTIONS = new InjectionToken<IbColumnOptions<any>>(\n 'ib-column-options',\n);\n\n/** Used to provide a list of aggregate funciton to a number column */\nexport const IB_AGGREGATE = new InjectionToken<any>(\"IbAggregate\");\nexport const IB_AGGREGATE_TYPE = new InjectionToken<any>(\"IbAggregateType\");","import {\n Component,\n Directive,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { IB_AGGREGATE, IB_AGGREGATE_TYPE, IB_COLUMN } from \"./tokens\";\n\n@Directive({\n selector: \"[ibCellDef]\",\n})\nexport class IbCellDef {\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n\nexport interface IbAggregateResult {\n currentPage?: number | string | undefined;\n total?: number | string | undefined;\n}\n\nexport abstract class IbAggregate {\n /** Unique identifier for the aggregate function. */\n abstract id: string;\n /** Function name displayed before the results. i18n supported. */\n abstract name: string;\n /** Menu item label. i18n supported. */\n abstract label: string;\n /**\n * Function type. Used to include this function in the available functions of\n * a given column with the same `IB_AGGREGATE_TYPE` token value.\n * Currently, only `number` is supported.\n */\n abstract type: string;\n\n /**\n * Calls {@link aggregateData} twice and returns an {@link IbAggregateResult}\n * with the aggregated value for the entire column and the current visible page.\n *\n * It takes into account only filtered data.\n *\n * @param dataSource `IbTableDataSource` compatible data source instance\n * @param column Column name\n */\n aggregate(\n /**\n * Note: this is any to avoid an importing cycle\n */\n dataSource: any,\n column: string\n ): IbAggregateResult {\n const dataset = dataSource\n ._orderData(dataSource.filteredData)\n .map((i) => i[column]);\n const pagedData = dataSource._pageData(dataset);\n return {\n currentPage: this.aggregateData(pagedData),\n total: this.aggregateData(dataset),\n };\n }\n\n /**\n * An aggregate function.\n *\n * @param data Data array of a given column.\n * @returns Aggregated value.\n */\n abstract aggregateData(data: any[]): number | string;\n}\n\nclass IbSumAggregate extends IbAggregate {\n id = \"sum\";\n name = \"shared.aggregate.sum.name\";\n label = \"shared.aggregate.sum.label\";\n type = \"number\";\n\n aggregateData(data: number[]) {\n return data.reduce((acc, cur) => acc + cur, 0);\n }\n}\n\nexport const IbSumAggregateProvider = {\n provide: IB_AGGREGATE,\n useClass: IbSumAggregate,\n multi: true,\n};\n\nclass IbAverageAggregate extends IbAggregate {\n id = \"avg\";\n name = \"shared.aggregate.avg.name\";\n label = \"shared.aggregate.avg.label\";\n type = \"number\";\n\n aggregateData(data: number[]) {\n const length = Math.max(data.length, 1);\n return data.reduce((acc, cur) => acc + cur, 0) / length;\n }\n}\n\nexport const IbAverageAggregateProvider = {\n provide: IB_AGGREGATE,\n useClass: IbAverageAggregate,\n multi: true,\n};\n\n@Component({\n selector: \"ib-aggregate\",\n template: `\n <section class=\"ib-aggregate__function\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [matTooltip]=\"'shared.aggregate.apply' | translate\"\n >\n <mat-icon>functions</mat-icon>\n </button>\n <span class=\"mat-caption\">{{ displayName | translate }}</span>\n </section>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let function of availableFunctions\"\n mat-menu-item\n (click)=\"apply(function.id)\"\n >\n {{ function.label | translate }}\n </button>\n </mat-menu>\n <section class=\"ib-aggregate__display-value\">\n <div>\n <span class=\"mat-caption\">{{\n \"shared.aggregate.currentPage\" | translate\n }}</span>\n {{ result?.currentPage ? (result.currentPage | number) : \"--\" }}\n </div>\n\n <div *ngIf=\"showTotal\">\n <span class=\"mat-caption\">{{\n \"shared.aggregate.total\" | translate\n }}</span>\n {{ result?.total ? (result.total | number) : \"--\" }}\n </div>\n </section>\n `,\n})\nexport class IbAggregateCell {\n @Input() set function(fun: string) {\n this.updateDisplayName(fun);\n }\n @Input() result: IbAggregateResult = {\n currentPage: undefined,\n total: undefined,\n };\n\n @Input() showTotal = true;\n @Output() ibFunctionChange = new EventEmitter<string>();\n\n availableFunctions: IbAggregate[] = [];\n displayName = \"\";\n\n constructor(\n @Inject(IB_COLUMN) private column: any,\n @Optional() @Inject(IB_AGGREGATE_TYPE) private type: string,\n @Optional() @Inject(IB_AGGREGATE) private functions: IbAggregate[]\n ) {\n this.availableFunctions = functions.filter((f) => f.type === type);\n }\n\n apply(fun: string) {\n this.ibFunctionChange.emit(fun);\n }\n\n updateDisplayName(fun: string) {\n const strategy = this.availableFunctions.find((f) => f.id === fun);\n if (!strategy) {\n this.displayName = \"\";\n this.result = { currentPage: undefined, total: undefined };\n return;\n }\n\n this.displayName = strategy.name;\n }\n}\n","import { Directive, Input } from \"@angular/core\";\nimport { MatSort, MatSortHeader } from \"@angular/material/sort\";\n\n/**\n * Directive to use in combination with `mat-sort-header`\n *\n * Since `mat-sort-header` only looks up the `MatSort` instance coming directly\n * from its parent (usually `mat-table`), it is necessary to substitute it with\n * the correct `MatSort` attached to the `dataSource`, as well reinitialize\n * the state changes to properly render the current state of the header.\n *\n * This solution is far from optimal and has a high risk of breaking with\n * a different release of Angular Material\n */\n@Directive({\n selector: \"[ib-sort-header-for], [ibSortHeaderFor]\",\n standalone: true,\n})\nexport class IbSortHeader {\n @Input(\"ibSortHeaderFor\") set matSort(matSort: MatSort) {\n this.matSortHeader._sort = matSort;\n this.matSortHeader[\"_handleStateChanges\"]();\n }\n\n constructor(public matSortHeader: MatSortHeader) {}\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n booleanAttribute,\n inject,\n} from \"@angular/core\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport {\n MatCellDef,\n MatColumnDef,\n MatFooterCellDef,\n MatHeaderCellDef,\n MatTableModule,\n} from \"@angular/material/table\";\nimport { IbAggregateCell, IbCellDef } from \"../cells\";\nimport { IbSortHeader } from \"../sort-header\";\nimport { IbTable } from \"../table.component\";\nimport { IB_COLUMN_OPTIONS, IB_TABLE, IbColumnOptions } from \"../tokens\";\n\n/**\n * Column that shows any arbitrary content for the row cells.\n *\n * It requires a single element with the `*ibCellDef` directive in its template.\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input.\n */\n@Component({\n selector: \"ib-column\",\n template: `\n <ng-container\n matColumnDef\n matSort\n [sticky]=\"sticky\"\n [stickyEnd]=\"stickyEnd\"\n >\n <th\n class=\"ib-table__header-cell\"\n mat-header-cell\n *matHeaderCellDef\n [ibSortHeaderFor]=\"matSort\"\n mat-sort-header\n [disabled]=\"!sort\"\n >\n {{ headerText }}\n </th>\n <td mat-cell *matCellDef=\"let data\">\n <ng-container\n *ngTemplateOutlet=\"\n ibCellDef.templateRef;\n context: { $implicit: data }\n \"\n >\n </ng-container>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n `,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [MatSortModule, MatTableModule, IbSortHeader, NgTemplateOutlet],\n})\nexport class IbColumn<T> implements OnDestroy, OnInit {\n /** Column name that should be used to reference this column. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(name: string) {\n this._name = name;\n\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n _name: string;\n\n /**\n * Text label that should be used for the column header. If this property is not\n * set, the header text will default to the column name with its first letter capitalized.\n */\n @Input() headerText: string;\n\n /**\n * Accessor function to retrieve the data rendered for each cell. If this\n * property is not set, the data cells will render the value found in the data's property matching\n * the column's name. For example, if the column is named `id`, then the rendered value will be\n * value defined by the data's `id` property.\n */\n @Input() dataAccessor: (data: T, name: string) => number | string;\n /**\n * Data accessor function that is used to retrieve data properties for sorting\n */\n @Input() sortingDataAccessor: (data: T, name: string) => number | string;\n /**\n * Data accessor function that is used to retrieve data properties for filtering\n */\n @Input() filterDataAccessor: (data: T, name: string) => number | string;\n\n /**\n * Enables sorting for the column.\n */\n @Input({ transform: booleanAttribute }) sort = false;\n\n /** Whether sticky positioning should be applied. */\n @Input({ transform: booleanAttribute }) sticky = false;\n\n /** Whether this column should be sticky positioned on the end of the row. */\n @Input({ transform: booleanAttribute }) stickyEnd = false;\n\n /** Whether this column should display in the roll-up footer. */\n @Input({ transform: booleanAttribute }) aggregate = false;\n\n get aggregationFunction() {\n return this._table.dataSource.aggregatedColumns?.[this.name];\n }\n\n get aggregatedData() {\n return this._table.dataSource.aggregatedData[this.name];\n }\n\n @ContentChild(IbCellDef, { static: true }) ibCellDef: IbCellDef;\n\n /** @ignore */\n @ViewChild(MatColumnDef, { static: true }) columnDef: MatColumnDef;\n\n /**\n * The column cell, headerCell, and footerCell are provided to the column during `ngOnInit` with a static query.\n * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the\n * column definition was provided in the same view as the table, which is not the case with this\n * component.\n * @ignore\n */\n @ViewChild(MatCellDef, { static: true }) cell: MatCellDef;\n @ViewChild(MatHeaderCellDef, { static: true }) headerCell: MatHeaderCellDef;\n @ViewChild(MatFooterCellDef, { static: true }) footerCell: MatFooterCellDef;\n\n @ViewChild(IbAggregateCell) aggregateCell: IbAggregateCell;\n\n /** @ignore */\n get matSort() {\n return this._table.sort;\n }\n\n _table: IbTable = inject(IB_TABLE, { optional: true });\n _options: IbColumnOptions<T> =\n inject(IB_COLUMN_OPTIONS, { optional: true }) || {};\n\n ngOnInit() {\n this._syncColumnDefName();\n\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor ||\n ((data: T, name: string) => (data as any)[name]);\n }\n\n if (!this.sortingDataAccessor) {\n this.sortingDataAccessor = this.dataAccessor;\n }\n\n if (!this.filterDataAccessor) {\n this.filterDataAccessor = this.dataAccessor;\n }\n\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this.columnDef.footerCell = this.footerCell;\n this._table.matTable.addColumnDef(this.columnDef);\n }\n }\n\n ngOnDestroy() {\n if (this._table) {\n this._table.matTable.removeColumnDef(this.columnDef);\n }\n }\n\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n\n if (!name) {\n throw Error(`Table column must have a name.`);\n }\n\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n\n return name[0].toUpperCase() + name.slice(1);\n }\n\n handleAggregationChange(fun: string) {\n this._table.dataSource.aggregate.next({\n columnName: this.name,\n function: fun,\n });\n }\n\n /** Synchronizes the column definition name with the text column name. */\n private _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { IbColumn } from \"./column\";\n\n@Directive({\n selector: \"[ib-action-column]\",\n})\nexport class IbActionColumn {\n constructor(public ibColumn: IbColumn<unknown>) {\n this.ibColumn.name = \"ib-action\";\n }\n\n ngOnInit() {\n this.ibColumn.headerText = \"\";\n this.ibColumn._table.displayedColumns.push(\"ib-action\")\n }\n}","import { formatDate } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IB_COLUMN } from \"../tokens\";\nimport { IbColumn } from \"./column\";\n\n/**\n * Column that shows a formatted date for the row cells.\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the date-time components using\n * the `format` input. Same as `DatePipe` or `formatDate` function.\n */\n@Component({\n selector: \"ib-date-column\",\n template: `\n <ng-container\n matColumnDef\n matSort\n [sticky]=\"sticky\"\n [stickyEnd]=\"stickyEnd\"\n >\n <th\n class=\"ib-table__header-cell\"\n mat-header-cell\n *matHeaderCellDef\n [ibSortHeaderFor]=\"matSort\"\n mat-sort-header\n [disabled]=\"!sort\"\n >\n {{ headerText }}\n </th>\n <td mat-cell *matCellDef=\"let data\">\n {{ dataAccessor(data, name) | date : format : undefined : locale }}\n </td>\n <td mat-footer-cell *matFooterCellDef>\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n { provide: IbColumn, useExisting: IbDateColumn },\n { provide: IB_COLUMN, useExisting: IbDateColumn },\n ],\n})\nexport class IbDateColumn<T> extends IbColumn<T> {\n @Input() format = \"dd/MM/yyyy HH:mm z\";\n @Input() locale = \"it\";\n filterDataAccessor = (data: T, name: string) => new Date(this.dataAccessor(data, name)).getTime();\n\n /** @ignore */\n transform = { pdf: (data) => formatDate(data, this.format, this.locale) };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IB_AGGREGATE_TYPE, IB_COLUMN } from \"../tokens\";\nimport { IbColumn } from \"./column\";\n\n/**\n * Column that shows a formatted number for the row cells.\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the decimal representation using the\n * `digitsInfo` input. Same as `DecimalPipe` or `formatNumber` function.\n */\n@Component({\n selector: \"ib-number-column\",\n template: `\n <ng-container\n matColumnDef\n matSort\n [sticky]=\"sticky\"\n [stickyEnd]=\"stickyEnd\"\n >\n <th\n class=\"ib-table__header-cell\"\n mat-header-cell\n *matHeaderCellDef\n [ibSortHeaderFor]=\"matSort\"\n mat-sort-header\n [disabled]=\"!sort\"\n >\n {{ headerText }}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"'end'\">\n {{ dataAccessor(data, name) | number : digitsInfo : locale }}\n </td>\n <td mat-footer-cell *matFooterCellDef style=\"max-width: fit-content\">\n <ib-aggregate\n *ngIf=\"aggregate\"\n [showTotal]=\"!_table.isRemote\"\n [result]=\"aggregatedData\"\n [function]=\"aggregationFunction\"\n (ibFunctionChange)=\"handleAggregationChange($event)\"\n />\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: IbColumn,\n useExisting: IbNumberColumn,\n },\n { provide: IB_COLUMN, useExisting: IbNumberColumn },\n { provide: IB_AGGREGATE_TYPE, useValue: \"number\" },\n ],\n})\nexport class IbNumberColumn<T> extends IbColumn<T> {\n @Input() digitsInfo = \"1.0-2\";\n @Input() locale = \"it\";\n}\n","import { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n Component,\n EventEmitter,\n Inject,\n OnInit,\n Optional,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport {\n MatCellDef,\n MatColumnDef,\n MatFooterCellDef,\n MatHeaderCellDef,\n} from \"@angular/material/table\";\nimport { IbTableRowSelectionChange } from \"../table.types\";\nimport { IB_TABLE } from \"../tokens\";\n\n@Component({\n selector: \"ib-selection-column\",\n template: `\n <ng-container matColumnDef=\"ib-selection\">\n <th\n style=\"width: 40px\"\n class=\"ib-table__header-cell\"\n mat-header-cell\n *matHeaderCellDef\n >\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n [disabled]=\"isDisabled()\"\n >\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRowSelection($event, row)\"\n [checked]=\"selection.isSelected(row)\"\n [disabled]=\"isDisabled()\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n `,\n})\nexport class IbSelectionColumn implements OnInit {\n /** @ignore */\n @ViewChild(MatCellDef, { static: true }) cell: MatCellDef;\n /** @ignore */\n @ViewChild(MatHeaderCellDef, { static: true }) headerCell: MatHeaderCellDef;\n /** @ignore */\n @ViewChild(MatFooterCellDef, { static: true }) footerCell: MatFooterCellDef;\n /** @ignore */\n @ViewChild(MatColumnDef, { static: true }) columnDef: MatColumnDef;\n selection = new SelectionModel<any>(true, []);\n\n @Output() ibRowSelectionChange = new EventEmitter<\n IbTableRowSelectionChange[]\n >();\n\n constructor(@Inject(IB_TABLE) @Optional() private table: any) {}\n\n ngOnInit() {\n if (this.table) {\n if (this.table.isRemote) {\n console.warn(\"Selection column is currently not supported with IbTableRemoteDataSource\")\n }\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this.columnDef.footerCell = this.footerCell;\n this.table.matTable.addColumnDef(this.columnDef);\n this.table.displayedColumns.unshift(\"ib-selection\");\n }\n }\n\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.table.dataSource.filteredData.length;\n return numSelected == numRows;\n }\n\n toggleAllRows() {\n this.isAllSelected()\n ? this.selection.clear()\n : this.selection.select(...this.table.dataSource.filteredData);\n\n const selectionAfterToggle = this.isAllSelected();\n this.ibRowSelectionChange.emit(\n this.table.dataSource.filteredData.map((row) => ({\n tableName: this.table.tableName,\n row,\n selection: selectionAfterToggle,\n }))\n );\n }\n\n toggleRowSelection(ev, row) {\n if (ev) {\n this.selection.toggle(row);\n\n this.ibRowSelectionChange.emit([\n {\n tableName: this.table.tableName,\n row,\n selection: ev.checked,\n },\n ]);\n }\n }\n\n isDisabled() {\n return this.table.state !== \"idle\";\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IB_AGGREGATE_TYPE, IB_COLUMN } from \"../tokens\";\nimport { IbColumn } from \"./column\";\n\n/**\n * Column that simply shows text content for the header and row cells.\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: \"ib-text-column\",\n template: `\n <ng-container\n matColumnDef\n matSort\n [sticky]=\"sticky\"\n [stickyEnd]=\"stickyEnd\"\n >\n <th\n class=\"ib-table__header-cell\"\n mat-header-cell\n *matHeaderCellDef\n [style.text-align]=\"justify\"\n [ibSortHeaderFor]=\"matSort\"\n mat-sort-header\n [disabled]=\"!sort\"\n >\n {{ headerText }}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{ dataAccessor(data, name) }}\n </td>\n <td mat-footer-cell *matFooterCellDef style=\"max-width: fit-content\">\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n { provide: IbColumn, useExisting: IbTextColumn },\n { provide: IB_COLUMN, useExisting: IbTextColumn },\n { provide: IB_AGGREGATE_TYPE, useValue: \"string\" },\n ],\n})\nexport class IbTextColumn<T> extends IbColumn<T> {\n /** Alignment of the cell values. */\n @Input() justify: \"start\" | \"end\" | \"center\" = \"start\";\n}\n","import { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: '[ibKaiRowGroup]'\n})\nexport class IbKaiRowGroupDirective {\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n","export enum IbFilterOperator {\n NONE,\n EQUALS,\n NOT_EQUALS,\n LESS_THAN,\n LESS_THAN_EQUALS,\n GREATER_THAN,\n GREATER_THAN_EQUALS,\n CONTAINS,\n NOT_CONTAINS,\n STARTS_WITH,\n ENDS_WITH,\n AND,\n OR,\n}\n\nexport type IbFilterDef = {\n operator: IbFilterOperator;\n value: IbFilterDef[] | string | number;\n};\n\nexport type IbFilterSyntax = Record<string, IbFilterDef>;\n//FIXME: why ibSearchBar is not in IbFilterSyntax? It should be a text filter with operator \"contains\"\nexport type IbFilterSyntaxExtended = IbFilterSyntax & { ibSearchBar?: string };\n\nexport type IbTextFilterCriteria = {\n operator: IbFilterOperator;\n value: string;\n};\n\nexport type IbTagFilterCriteria<T = string> = T[];\n\nexport type IbNumberFilterCriteria = {\n min: number;\n max: number;\n};\n\nexport enum IbDateFilterCategory {\n WITHIN = \"within\",\n MORE_THAN = \"moreThan\",\n RANGE = \"range\",\n}\n\nexport enum IbDateFilterPeriod {\n MINUTES = 1,\n HOURS,\n DAYS,\n WEEKS,\n}\n\nexport type IbDateFilterPeriodCriteria = {\n period: IbDateFilterPeriod;\n value: number;\n};\n\nexport type IbDateFilterRangeCriteria = {\n start: Date;\n end: Date;\n};\n\nexport type IbDateFilterCriteria = {\n categorySelected: IbDateFilterCategory;\n moreThan: IbDateFilterPeriodCriteria;\n within: IbDateFilterPeriodCriteria;\n range: IbDateFilterRangeCriteria;\n};\n\n/**\n * Text query object.\n *\n * Provides a regular expression or a `like` pattern.\n */\nexport type IbTextQuery = {\n /**\n * Generated regular expression.\n * The result depends on the selected condition.\n *\n * | Condition | Regex |\n * |-------------|-------------|\n * | Contains | `.*apple.*` |\n * | Starts with | `^apple.*` |\n * | Ends with | `.*apple$` |\n * | Equals | `^apple$` |\n */\n regex: string;\n /**\n * Generated pattern to be used in a SQL LIKE operation.\n * The result depends on the selected condition.\n *\n * | Condition | Pattern |\n * |-------------|-----------|\n * | Contains | `%apple%` |\n * | Starts with | `apple%` |\n * | Ends with | `%apple` |\n * | Equals | `apple` |\n */\n like: string;\n /**\n * Condition provided by the user\n *\n * | Condition | Operator |\n * |-------------|-----------|\n * | Contains | IbFilterOperator.CONTAINS |\n * | Starts with | IbFilterOperator.STARTS_WITH |\n * | Ends with | IbFilterOperator.ENDS_WITH |\n * | Equals | IbFilterOperator.EQUALS |\n *\n * @example\n * ```typescript\n * if (filter.title.condition === IbFilterOperator.STARTS_WITH) {\n * // your login\n * }\n * ```\n */\n condition: IbFilterOperator;\n /** Query provided by the user */\n text: string;\n};\n\n/**\n * Number query object.\n *\n * Provides a range of numbers.\n */\nexport type IbNumberQuery = {\n /** Minimum value of the range */\n min: number;\n /** Maximum value of the range */\n max: number;\n};\n\n/**\n * Options query object.\n *\n * Provides a list of options selected.\n */\nexport type IbTagQuery<T = string> = {\n /** Array of options selected */\n items: T[];\n /** String of options separated by a comma */\n joined: string;\n};\n\n/**\n * Date query object.\n *\n * Provides a range of a dates.\n */\nexport type IbDateQuery = {\n /** Start date of the interval in ISO format */\n start: string;\n /** End date of the interval in ISO format */\n end: string;\n};\n","import { IbFilterDef, IbFilterOperator } from \"./filter.types\";\n\nexport const eq = (value): IbFilterDef => ({\n operator: IbFilterOperator.EQUALS,\n value,\n});\nexport const neq = (value): IbFilterDef => ({\n operator: IbFilterOperator.NOT_EQUALS,\n value,\n});\nexport const gt = (value): IbFilterDef => ({\n operator: IbFilterOperator.GREATER_THAN,\n value,\n});\nexport const gte = (value): IbFilterDef => ({\n operator: IbFilterOperator.GREATER_THAN_EQUALS,\n value,\n});\nexport const lt = (value): IbFilterDef => ({\n operator: IbFilterOperator.LESS_THAN,\n value,\n});\nexport const lte = (value): IbFilterDef => ({\n operator: IbFilterOperator.LESS_THAN_EQUALS,\n value,\n});\nexport const contains = (value): IbFilterDef => ({\n operator: IbFilterOperator.CONTAINS,\n value,\n});\nexport const ncontains = (value): IbFilterDef => ({\n operator: IbFilterOperator.NOT_CONTAINS,\n value,\n});\nexport const startsWith = (value): IbFilterDef => ({\n operator: IbFilterOperator.STARTS_WITH,\n value,\n});\nexport const endsWith = (value): IbFilterDef => ({\n operator: IbFilterOperator.ENDS_WITH,\n value,\n});\n\nexport const and = (value): IbFilterDef => ({\n operator: IbFilterOperator.AND,\n value,\n});\nexport const or = (value): IbFilterDef => ({\n operator: IbFilterOperator.OR,\n value,\n});\n\nexport const none = (): IbFilterDef => ({\n operator: IbFilterOperator.NONE,\n value: null,\n});\n\nexport function applyFilter(filter: IbFilterDef, filterValue: any) {\n if (!filter) {\n return true;\n }\n\n if (!filter.operator) {\n return true;\n }\n\n if (filter.operator === IbFilterOperator.OR) {\n return (filter.value as IbFilterDef[]).some((subFilter) =>\n applyFilter(subFilter, filterValue)\n );\n }\n\n if (filter.operator === IbFilterOperator.AND) {\n return (filter.value as IbFilterDef[]).every((subFilter) =>\n applyFilter(subFilter, filterValue)\n );\n }\n\n return evalOperation(filter.operator, filter.value, filterValue);\n}\n\nexport function evalOperation(\n operation: IbFilterOperator,\n value: any,\n filterValue: any\n) {\n const valueType = typeof value;\n const filterValueType = typeof filterValue;\n\n if (filterValue instanceof Date) {\n filterValue = filterValue.toISOString();\n }\n\n if (valueType == \"string\") {\n value = (value as string).trim().toLowerCase();\n }\n\n if (filterValueType == \"string\") {\n filterValue = (filterValue as string).trim().toLowerCase();\n\n if (operation === IbFilterOperator.CONTAINS) {\n return filterValue.indexOf(value) != -1;\n }\n\n if (operation === IbFilterOperator.NOT_CONTAINS) {\n return filterValue.indexOf(value) === -1;\n }\n\n if (operation === IbFilterOperator.STARTS_WITH) {\n return filterValue.startsWith(value);\n }\n\n if (operation === IbFilterOperator.ENDS_WITH) {\n return filterValue.endsWith(value);\n }\n }\n\n if (operation === IbFilterOperator.EQUALS) {\n return filterValue === value;\n }\n\n if (operation === IbFilterOperator.GREATER_THAN) {\n return filterValue > value;\n }\n\n if (operation === IbFilterOperator.GREATER_THAN_EQUALS) {\n return filterValue >= value;\n }\n\n if (operation === IbFilterOperator.LESS_THAN) {\n return filterValue < value;\n }\n\n if (operation === IbFilterOperator.LESS_THAN_EQUALS) {\n return filterValue <= value;\n }\n}\n","import { createActionGroup, props } from \"@ngrx/store\";\nimport { IbFilterSyntaxExtended } from \"../../../kai-filter\";\nimport { Sort } from \"@angular/material/sort\";\nimport { IbKaiTableParams } from \"./interfaces\";\n\nexport const urlStateActions = createActionGroup({\n source: 'KaiTable/UrlState',\n events: {\n 'Set Filters': props<{ tableName: string; params: IbFilterSyntaxExtended }>(),\n 'Set Paginator': props<{ tableName: string; params: {pageIndex: number, pageSize: number} }>(),\n 'Set Aggregated Columns': props<{ tableName: string; params: Record<string, string> }>(),\n 'Set Sort': props<{ tableName: string; params: Sort }>(),\n 'Set Remote Datasource Params': props<{ tableName: string; filters: IbFilterSyntaxExtended, sort: Sort }>(),\n 'Handle View Change': props<{tableName: string; params: Omit<IbKaiTableParams, 'tableName'> & {view: string}}>()\n },\n});\n","import { DataSource } from \"@angular/cdk/collections\";\nimport { inject } from \"@angular/core\";\nimport { MatPaginator, PageEvent } from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n combineLatest,\n merge,\n of as observableOf,\n} from \"rxjs\";\nimport { filter, map } from \"rxjs/operators\";\nimport { IbFilter } from \"../kai-filter/filter.component\";\nimport { IbFilterDef, IbFilterSyntax } from \"../kai-filter/filter.types\";\nimport { applyFilter } from \"../kai-filter/filters\";\nimport { IbTableViewGroup } from \"../views/components/table-view-group/table-view-group.component\";\nimport { IView } from \"../views/store/views/table-view\";\nimport { IbAggregateResult } from \"./cells\";\nimport { IbColumn, IbSelectionColumn } from \"./columns\";\nimport { IB_AGGREGATE } from \"./tokens\";\nimport { Store } from \"@ngrx/store\";\nimport { urlStateActions } from \"./store/url-state/actions\";\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterPredicate,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class IbTableDataSource<\n T,\n P extends MatPaginator = MatPaginator\n> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n protected readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n protected readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription: Subscription | null = null;\n\n _viewChangesSubscription: Subscription | null = null;\n\n tableName: string;\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n\n set data(data: T[]) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n this._initializeFilters(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n\n /**\n * Instance of the IbFilter component used by the table to filter its data. Filter changes\n * emitted by the IbFilter will trigger an update to the table's rendered data.\n */\n get filter(): IbFilter | null {\n return this._filter;\n }\n\n set filter(f: IbFilter | null) {\n this._filter = f;\n this._initializeFilters(this.data);\n this._updateChangeSubscription();\n }\n\n private _filter: IbFilter | null;\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null {\n return this._sort;\n }\n\n set sort(sort: MatSort | null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n\n private _sort: MatSort | null;\n\n _sortState: Sort = {\n active: \"\",\n direction: \"\",\n }\n get sortState(){\n return {\n active: this._sortState.direction !== '' ? this._sortState.active : '',\n direction: this._sortState.direction\n }\n }\n set sortState(sort: Sort){\n this._sortState = {\n active: sort?.active ?? '',\n direction: sort?.direction ?? ''\n };\n }\n\n /**\n * Instance of the paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the paginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): P | null {\n return this._paginator;\n }\n\n set paginator(paginator: P | null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n\n private _paginator: P | null;\n\n get columns(): Record<string, IbColumn<unknown>> {\n return this._columns;\n }\n\n set columns(columns: IbColumn<unknown>[]) {\n this._columns = columns.reduce((acc, c) => ({ [c.name]: c, ...acc }), {});\n }\n\n private _columns: Record<string, IbColumn<unknown>> = {};\n\n set view(view: IbTableViewGroup | null) {\n this._view = view;\n this._updateViewChangeSubscription();\n }\n\n get view() {\n return this._view;\n }\n\n private _view: IbTableViewGroup | null;\n\n /**\n * Aggregated data by column name.\n */\n aggregatedData: Record<string, IbAggregateResult> = {};\n /**\n * Dictionary of columns to aggregate and the function (function id) to apply.\n * Note: this structure is serialized within a view\n */\n aggregatedColumns: Record<string, string> = {};\n aggregationFunctions = inject(IB_AGGREGATE);\n protected store = inject(Store);\n\n /**\n * Used to trigger the aggregation of a column by the user.\n *\n * IbTableViewGroup listens to this stream to detect state changes\n */\n aggregate = new Subject<{ columnName: string; function: string }>();\n /**\n * Whether the table should display the aggregation footer.\n * (this reeks...)\n */\n get shouldDisplayAggregationFooter() {\n return Object.values(this.columns).filter((c) => c.aggregate).length > 0;\n }\n\n selectionColumn: IbSelectionColumn | null;\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: (data: T[], sort: MatSort) => T[] = (\n data: T[],\n sort: MatSort\n ): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == \"\") {\n return data;\n }\n\n const column = this._columns[active];\n return data.sort((a, b) => {\n let valueA = column.sortingDataAccessor(a, active);\n let valueB = column.sortingDataAccessor(b, active);\n\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === \"number\") {\n valueA += \"\";\n }\n if (valueBType === \"number\") {\n valueB += \"\";\n }\n }\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == \"asc\" ? 1 : -1);\n });\n };\n\n /**\n * Checks if a data object matches the data source's filter.\n * @param data Data object used to check against the filter.\n * @param filter Filter that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: (data: T, filter: IbFilterSyntax) => boolean = (\n data: T,\n filter: IbFilterSyntax\n ): boolean => {\n const { ibSearchBar, ...filters } = filter;\n const matchesSearchBar = this.applySearchBarFilter(data, ibSearchBar);\n\n const matches = Object.entries(filters).every(([columnName, condition]) => {\n const column = this.columns[columnName];\n if (!column) {\n throw Error(`ib-filter: column ${columnName} not found`);\n }\n\n const filterValue = column.filterDataAccessor(data, columnName);\n return applyFilter(condition, filterValue);\n });\n\n return matches && matchesSearchBar;\n };\n\n private applySearchBarFilter = (data: any, filter: IbFilterDef) => {\n if (!filter) {\n return true;\n }\n\n const dataStr = Object.keys(data as unknown as Record<string, any>)\n .reduce((currentTerm: string, key: string) => {\n const column = this.columns[key];\n const value = column ? column.filterDataAccessor(data, key) : data[key];\n return currentTerm + value + \"◬\";\n }, \"\")\n .toLowerCase();\n\n return applyFilter(filter, dataStr);\n };\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n this.aggregate.subscribe((target) => {\n this.aggregatedColumns[target.columnName] = target.function;\n this.store.dispatch(urlStateActions.setAggregatedColumns({tableName: this.tableName, params: {...this.aggregatedColumns}}));\n this._aggregateData(this.filteredData);\n this._aggregatePaginatedData(\n this._pageData(this._orderData(this.filteredData))\n );\n });\n }\n\n private _initializeFilters(data: any[]) {\n this.filter?.filters.forEach((f) => f.initializeFromColumn(data));\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort | null | void> = this._sort\n ? (merge(\n this.sort.sortChange,\n this.sort.initialized\n ) as Observable<Sort | void>)\n : observableOf(null);\n const pageChange: Observable<PageEvent | null | void> = this._paginator\n ? (merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent | void>)\n : observableOf(null);\n const filterChange: Observable<IbFilterSyntax | null | void> = this._filter\n ? merge(this._filter.ibFilterUpdated, this._filter.initialized)\n : observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, filterChange]).pipe(\n map(([data, filterChange]) => {\n if(this.filter?.initialized){\n this.store.dispatch(urlStateActions.setFilters({tableName: this.tableName, params: this.filter?.selectedCriteria ?? {}}));\n }\n return this._filterData(data)\n }),\n map((data) => this._aggregateData(data))\n );\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\n map(([data, sort]) => {\n if(sort){\n this.sortState = this.sort;\n this.store.dispatch(urlStateActions.setSort({tableName: this.tableName, params: this.sortState}));\n }\n return this._orderData(data);\n })\n );\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n map(([data]) => this._pageData(data)),\n map((data) => this._aggregatePaginatedData(data))\n );\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe((data) => {\n this._renderData.next(data);\n });\n }\n\n private _updateViewChangeSubscription() {\n this.view.defaultView.data = {\n filter: this.filter.initialRawValue,\n pageSize: this.paginator.pageSize,\n aggregatedColumns: this.aggregatedColumns,\n sort: {\n ...this.sortState\n }\n };\n\n this.view.viewDataAccessor = () => {\n return {\n filter: this.filter.selectedCriteria,\n pageSize: this.paginator.pageSize,\n aggregatedColumns: this.aggregatedColumns,\n sort: {\n ...this.sortState\n },\n }\n };\n\n const changes$ = merge(\n this.filter.ibQueryUpdated,\n this.paginator.page,\n this.aggregate,\n this.sort.sortChange\n );\n this.view.handleStateChanges(changes$);\n\n this._viewChangesSubscription?.unsubscribe();\n this._viewChangesSubscription = this.view._activeView\n // Skip initial view, initialization come from querystring\n .pipe(filter((view) => !!view && !view.initial))\n .subscribe(this.handleViewChange);\n }\n\n private handleViewChange = (view: IView) => {\n this.paginator.firstPage();\n this.paginator.pageSize = view.data.pageSize;\n this.aggregatedColumns = { ...view.data.aggregatedColumns };\n this.filter.value = view.data.filter;\n this.sortState = view.data.sort;\n this.store.dispatch(urlStateActions.handleViewChange({\n tableName: this.tableName,\n params: {\n view: view.id,\n pageSize: view.data.pageSize,\n page: 0,\n filters: view.data.filter,\n aggregatedColumns: view.data.aggregatedColumns,\n sort: {\n active: view.data.sort.active,\n direction: view.data.sort.direction,\n },\n }\n }));\n };\n\n /**\n * Returns a filtered data array where each row satisfies the filter.\n * If no filter is set, returns the data array as provided.\n */\n _filterData(data: T[]) {\n this.selectionColumn?.selection.clear();\n this.filteredData = !this.filter?.value\n ? data\n : data.filter((obj) => this.filterPredicate(obj, this.filter.value));\n\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided paginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) {\n return data;\n }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) {\n return;\n }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex =\n Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n _aggregateData(data: T[]): T[] {\n for (const [columnName, fun] of Object.entries(this.aggregatedColumns)) {\n const f = this.aggregationFunctions.find((f) => f.id === fun);\n if (!f) {\n continue;\n }\n this.aggregatedData[columnName] = {\n ...(this.aggregatedData[columnName] ?? {}),\n total: f.aggregateData(data.map((i) => i[columnName])),\n };\n }\n return data;\n }\n\n _aggregatePaginatedData(data: T[]): T[] {\n for (const [columnName, fun] of Object.entries(this.aggregatedColumns)) {\n const f = this.aggregationFunctions.find((f) => f.id === fun);\n if (!f) {\n continue;\n }\n this.aggregatedData[columnName] = {\n ...(this.aggregatedData[columnName] ?? {}),\n currentPage: f.aggregateData(data.map((i) => i[columnName])),\n };\n }\n return data;\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n */\n disconnect() {\n this._viewChangesSubscription?.unsubscribe();\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n","import { MatPaginator, PageEvent } from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n combineLatest,\n merge,\n of,\n} from \"rxjs\";\nimport { catchError, debounceTime, map, switchMap } from \"rxjs/operators\";\nimport { IbTableDataSource } from \"./table-data-source\";\nimport { IbKaiTableState } from \"./table.types\";\nimport { urlStateActions } from \"./store/url-state/actions\";\n\nexport type IbFetchDataResponse<T> = {\n /**\n * Subset of rows returned by the server.\n */\n data: T[];\n /**\n * Total row count of the query without pagination.\n */\n totalCount: number;\n};\n\nexport abstract class IbTableRemoteDataSource<\n T,\n V = Record<string, any>\n> extends IbTableDataSource<T> {\n private _refresh = new Subject<void>();\n\n _renderChangesSubscription: Subscription | null = null;\n get state() {\n return this._state.value;\n }\n\n set state(value) {\n this._state.next(value);\n }\n\n readonly _state = new BehaviorSubject<IbKaiTableState>(\"loading\");\n\n _updateChangeSubscription() {\n if (!this._state) {\n return;\n }\n\n const sortChange: Observable<Sort | null | void> = this.sort\n ? (merge(\n this.sort.sortChange,\n this.sort.initialized\n ) as Observable<Sort | void>)\n : of(null);\n\n const pageChange: Observable<PageEvent | null | void> = this.paginator\n ? (merge(\n this.paginator.page,\n // this._internalPageChanges,\n this.paginator.initialized\n ) as Observable<PageEvent | void>)\n : of(null);\n\n const filterChange: Observable<Record<string, any> | null | void> = this\n .filter\n ? merge(this.filter.ibQueryUpdated, this.filter.initialized)\n : of(null);\n\n const refresh = this._refresh?.asObservable();\n const pipeline = combineLatest([filterChange, sortChange, pageChange]);\n\n const dataChange = merge(refresh, pipeline).pipe(\n map(() => this.state = \"loading\"),\n debounceTime(500),\n map((v) => {\n if(this.sort?.active !== this.sortState?.active || this.sort?.direction !== this.sortState?.direction){\n this.sortState = this.sort;\n }\n if(this.filter?.initialized){\n this.store.dispatch(urlStateActions.setRemoteDatasourceParams({\n tableName: this.tableName,\n filters: this.filter?.selectedCriteria ?? {},\n sort: this.sortState ?? {active: '', direction: ''}\n }));\n }\n else if(this.sort?.active !== this.sortState?.active || this.sort?.direction !== this.sortState?.direction){\n this.store.dispatch(urlStateActions.setSort({tableName: this.tableName, params: this.sortState}));\n }\n return v\n }),\n switchMap(() => {\n this.state = \"loading\";\n return this.fetchData(\n this.sort,\n this.paginator,\n this.filter.query as V\n ).pipe(\n catchError(() => {\n this.state = \"http_error\";\n return of(null);\n })\n );\n }),\n map((result) => {\n if (result === null || result === undefined) {\n return [];\n }\n\n this.state = \"idle\";\n this.paginator.length = result.totalCount;\n return result.data;\n }),\n map((data) => this._filterData(data)),\n map((data) => this._aggregatePaginatedData(data))\n );\n\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = dataChange.subscribe((data) =>\n this._renderData.next(data)\n );\n }\n\n refresh() {\n this._refresh.next();\n }\n\n /** Disable _filterData */\n _filterData(data: T[]): T[] {\n return (this.filteredData = data);\n }\n\n /**\n * Data fetching strategy\n *\n * ```typescript\n * class ProductDataSource extends IbTableRemoteDataSource<Product> {\n * private http = inject(HttpClient)\n *\n * fetchData(\n * sort: MatSort,\n * page: MatPaginator\n * ): Observable<IbFetchDataResponse<Product>> {\n * return this.http.get(\"/products\", {\n * params: {\n * sort: sort.active,\n * order: sort.direction,\n * page: page.pageIndex + 1,\n * per_page: page.pageSize\n * }\n * }).pipe(\n * map((result) => ({\n * data: result.items,\n * totalCount: result.total_count\n * }))\n * );\n * }\n * }\n * ```\n *\n * @param sort Sort state\n * @param page Paginator state\n * @param filter Filter applied\n * @returns Observable of data and total count\n */\n abstract fetchData(\n sort: MatSort,\n page: MatPaginator,\n filter?: V\n ): Observable<IbFetchDataResponse<T>>;\n}\n","import { Component, Inject, inject } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { MAT_DIALOG_DATA } from \"@angular/material/dialog\";\n\nexport interface IbTableDataExportDialogData {\n showAllRowsOption: boolean;\n showSelectedRowsOption: boolean;\n formats: { value: string, label: string }[]\n}\n\n@Component({\n selector: \"ib-table-data-export-dialog\",\n template: `\n <h2 mat-dialog-title>\n {{ \"shared.ibTable.exportData.title\" | translate }}\n </h2>\n <mat-dialog-content [formGroup]=\"_settings\">\n <mat-form-field style=\"width: 100%;\">\n <mat-label>{{\n \"shared.ibTable.exportData.format\" | translate\n }}</mat-label>\n <mat-select formControlName=\"format\">\n <mat-option *ngFor=\"let format of data.formats\" [value]=\"format.value\">\n {{ format.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-radio-group\n formControlName=\"dataset\"\n style=\"display:flex;flex-direction:column;margin: 10px 0;\"\n >\n <mat-radio-button value=\"all\"*ngIf=\"data?.showAllRowsOption\">{{\n \"shared.ibTable.exportData.all\" | translate\n }}</mat-radio-button>\n <mat-radio-button value=\"selected\" *ngIf=\"data?.showSelectedRowsOption\">\n {{ \"shared.ibTable.exportData.selectedRows\" | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"current\">{{\n \"shared.ibTable.exportData.currentPage\" | translate\n }}</mat-radio-button>\n </mat-radio-group>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close>\n {{ \"shared.ibModal.close\" | translate }}\n </button>\n <button mat-button [mat-dialog-close]=\"settings\">\n {{ \"shared.ibTable.export\" | translate }}\n </button>\n </mat-dialog-actions>\n `,\n})\nexport class IbTableDataExportDialog {\n data: IbTableDataExportDialogData = inject(MAT_DIALOG_DATA);\n _settings = new FormGroup({\n format: new FormControl(this.data.formats[0].value),\n dataset: new FormControl(this.data.showAllRowsOption ? \"all\" : \"current\"),\n });\n\n get settings() {\n return this._settings.value;\n }\n}\n","import { Inject, Injectable, InjectionToken } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { IbColumn } from \"../kai-table/columns/column\";\nimport { IbTableDataSource } from \"../kai-table/table-data-source\";\nimport { IbDataExportProvider } from \"./provider\";\nimport {\n IbTableDataExportDialog,\n IbTableDataExportDialogData,\n} from \"./table-data-export-dialog.component\";\n\nexport interface IDataExportSettings {\n format: \"xlsx\" | \"pdf\" | \"csv\";\n dataset: \"all\" | \"selected\" | \"current\";\n}\n\nexport const OVERRIDE_EXPORT_FORMATS = new InjectionToken<IbDataExportProvider>(\n \"overrideExportFormats\"\n);\n\n@Injectable({ providedIn: \"root\" })\nexport class IbDataExportService {\n formats: any;\n\n constructor(\n private dialog: MatDialog,\n @Inject(OVERRIDE_EXPORT_FORMATS) private providers: IbDataExportProvider[]\n ) {\n this.formats = this.providers.map((p) => ({\n value: p.format,\n label: p.label,\n }));\n }\n\n openExportDialog(data: Partial<IbTableDataExportDialogData>) {\n return this.dialog\n .open(IbTableDataExportDialog, {\n width: \"350px\",\n data: {\n ...data,\n formats: this.formats,\n },\n })\n .afterClosed();\n }\n\n /**\n * Internal use for IbTable\n *\n * @ignore\n */\n _exportFromTable(\n tableName: string,\n dataSource: IbTableDataSource<unknown>,\n settings: IDataExportSettings\n ) {\n let data: unknown[];\n if (settings.dataset === \"all\") {\n data = dataSource._orderData(dataSource.filteredData);\n }\n\n if (settings.dataset === \"selected\") {\n data = dataSource._orderData(\n dataSource.selectionColumn?.selection.selected\n );\n }\n\n if (settings.dataset === \"current\") {\n data = dataSource._pageData(\n dataSource._orderData(dataSource.filteredData)\n );\n }\n\n const columns = Object.values(dataSource.columns).filter(\n (c) => !c.name.startsWith(\"ib-\")\n );\n const displayHeader = columns.reduce(\n (acc, column) => ({ ...acc, [column.name]: column.headerText }),\n {}\n );\n\n const dataAccessor = this.getDataAccessorForFormat(settings.format);\n\n const output = data.map((row) =>\n columns.reduce(\n (acc, column) => ({\n ...acc,\n [displayHeader[column.name]]: dataAccessor(row, column),\n }),\n {}\n )\n );\n\n this.export(output, tableName, settings.format);\n }\n\n /**\n *\n * @param data Array of object to export\n * @param filename Name of the output file\n * @param format Output file format. By default, only `xlsx`, `pdf`, and `csv` are supported\n */\n export(data: any[], filename: string, format: string) {\n const provider = this.providers.find((p) => p.format === format);\n return provider.export(data, filename);\n }\n\n /** @ignore */\n private getDataAccessorForFormat =\n (format: string) => (row: unknown, column: IbColumn<unknown>) => {\n const data = column.dataAccessor(row, column.name);\n const fn =\n column?.[\"transform\"]?.[format] ?? column?.[\"transform\"]?.[\"ibAny\"];\n if (!fn) {\n return data;\n }\n return fn(data);\n };\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { filter } from \"rxjs/operators\";\nimport {\n IDataExportSettings,\n IbDataExportService,\n} from \"./data-export.service\";\n\n@Component({\n selector: \"ib-table-data-export-action\",\n template: `\n <button\n mat-icon-button\n [matTooltip]=\"'shared.ibTable.export' | translate\"\n (click)=\"openExportDialog()\"\n >\n <mat-icon>file_download</mat-icon>\n </button>\n `,\n})\nexport class IbTableDataExportAction {\n @Input() showAllRowsOption = false;\n @Input() showSelectedRowsOption = false;\n @Output() ibDataExport = new EventEmitter<IDataExportSettings>();\n\n constructor(public exportService: IbDataExportService) {}\n\n openExportDialog() {\n this.exportService\n .openExportDialog({\n showSelectedRowsOption: this.showSelectedRowsOption,\n showAllRowsOption: this.showAllRowsOption,\n })\n .pipe(filter((settings) => !!settings))\n .subscribe((settings) => this.ibDataExport.emit(settings));\n }\n}\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n standalone: true,\n selector: \"ib-filter-action-group\",\n})\nexport class IbFilterActionGroup {}\n","import { Component, ViewChild } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\n\n@Component({\n standalone: true,\n imports: [\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatDividerModule\n ],\n selector: \"ib-filter-button\",\n templateUrl: \"filter-button.component.html\",\n})\nexport class IbFilterButton {\n @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n\n closeMenu() {\n this.trigger.closeMenu();\n }\n}\n","<button class=\"ib-filter-button\" [matMenuTriggerFor]=\"menu\" mat-stroked-button>\n <section>\n <ng-content select=\"[ib-filter-name]\"></ng-content>\n <ng-content select=\"[ib-filter-value]\"></ng-content>\n </section>\n <mat-icon iconPositionEnd>arrow_drop_down</mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <section (click)=\"$event.stopPropagation();\" style=\"display:flex;flex-direction: column; width: 280px\">\n <ng-content></ng-content>\n <mat-divider></mat-divider>\n <section style=\"display:flex; justify-content: flex-end; margin-right: 1em; margin-top: 0.5em\">\n <ng-content select=\"ib-filter-action-group\"></ng-content>\n </section>\n </section>\n</mat-menu>","import { InjectionToken } from \"@angular/core\";\n\nexport const IB_FILTER = new InjectionToken<any>(\"IbFilter\");\n","import { Directive, Input, ViewChild, inject } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { IbFilterButton } from \"../../filter-button/filter-button.component\";\nimport { IbFilter } from \"../../filter.component\";\nimport { IbFilterDef } from \"../../filter.types\";\nimport { IB_FILTER } from \"../../tokens\";\n\nexport interface IFilterBase {\n /** Name that should be used to reference this filter. */\n name: string;\n /** Ra */\n searchCriteria: FormControl | FormGroup;\n\n /** Perform validation and call `filter.update()` */\n applyFilter(): void;\n /** Reset search criteria and call `filter.update()` */\n clear(): void;\n /** Build filter syntax */\n build(): IbFilterDef;\n toQuery(): any;\n /** */\n initializeFromColumn(data: any[]): void;\n}\n\n@Directive({\n selector: \"ib-filter-base\",\n})\nexport class IbFilterBase implements IFilterBase {\n @ViewChild(IbFilterButton) button: IbFilterButton;\n\n @Input() name: string;\n\n searchCriteria: FormGroup | FormControl;\n\n get rawValue() {\n return this.filter?.selectedCriteria[this.name];\n }\n\n get isDirty() {\n const value = this.filter.value[this.name]?.value;\n return value != null || value != undefined;\n }\n\n protected _destroyed = new Subject<void>();\n filter: IbFilter = inject(IB_FILTER);\n\n ngOnInit() {\n if (!this.name) {\n throw Error(\"Filter must have a name.\");\n }\n\n if (!this.searchCriteria) {\n throw Error(`Filter ${this.name} has no search criteria`);\n }\n\n this.filter.form.addControl(this.name, this.searchCriteria);\n }\n\n ngAfterViewInit() {\n this.button?.trigger.menuClosed\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this.revertFilter();\n });\n }\n\n ngOnDestroy() {\n this.filter.form.removeControl(this.name);\n this.filter.update();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n revertFilter() {\n this.searchCriteria.patchValue(this.rawValue);\n }\n\n build(): IbFilterDef {\n throw Error(`Filter ${this.name} has no build method defined.`);\n }\n\n toQuery() {\n throw Error(`Filter ${this.name} has no toQuery method defined.`);\n }\n\n applyFilter() {\n if (!this.searchCriteria.valid) {\n this.searchCriteria.markAllAsTouched();\n return;\n }\n this.filter?.update();\n this.closeMenu();\n }\n\n initializeFromColumn(data: any[]): void {}\n\n clear() {\n this.searchCriteria.markAsPristine();\n this.searchCriteria.clearValidators();\n this.searchCriteria.reset();\n this.filter?.update();\n }\n\n closeMenu() {\n this.button?.closeMenu();\n }\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { HasInitialized } from \"@angular/material/core\";\nimport { ReplaySubject } from \"rxjs\";\nimport { IbKaiTableAction } from \"../kai-table/action\";\nimport { IbFilterSyntax, IbFilterSyntaxExtended } from \"./filter.types\";\nimport { IbFilterBase } from \"./filters/base/filter-base\";\nimport { IB_FILTER } from \"./tokens\";\n\n@Component({\n selector: \"ib-filter\",\n template: `\n <section\n class=\"ib-filter\"\n [class.ib-filter--hidden]=\"hideFilters\"\n [attr.aria-hidden]=\"hideFilters\"\n >\n <ng-content select=\"ib-search-bar\"></ng-content>\n <section #list class=\"ib-filter__list\">\n <mat-icon *ngIf=\"list.children.length > 1\">filter_list</mat-icon>\n <ng-content></ng-content>\n </section>\n </section>\n\n <button\n *ibTableAction\n mat-icon-button\n [matTooltip]=\"'shared.ibTableView.showFilters' | translate\"\n [color]=\"!hideFilters ? 'primary' : ''\"\n (click)=\"hideFilters = !hideFilters\"\n >\n <mat-icon>{{ \"filter_alt\" }}</mat-icon>\n </button>\n `,\n styleUrls: [\"./filter.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: IB_FILTER, useExisting: IbFilter }],\n})\nexport class IbFilter implements HasInitialized {\n /** @ignore */\n @ContentChildren(IbFilterBase)\n filters: QueryList<IbFilterBase>;\n\n /** @ignore */\n @ViewChild(IbKaiTableAction) hideFilterAction: IbKaiTableAction;\n\n /**\n * Manually sets a filter\n *\n * @example\n * { category: ['pants'] }\n * */\n @Input()\n set value(value: IbFilterSyntaxExtended) {\n if (!value) {\n return;\n }\n\n // as indicated in NG01000\n setTimeout(() => {\n this.form.patchValue(value);\n this.update();\n });\n }\n\n get value(): IbFilterSyntaxExtended {\n return this._value;\n }\n\n private _value: IbFilterSyntaxExtended = {};\n\n @Output() ibFilterUpdated = new EventEmitter<IbFilterSyntaxExtended>();\n @Output() ibQueryUpdated = new EventEmitter<Record<string, any>>();\n\n form: FormGroup = new FormGroup({});\n\n initialRawValue: IbFilterSyntaxExtended = {};\n get selectedCriteria(){\n return this.form.getRawValue();\n }\n query: Record<string, any> = {};\n\n hideFilters = false;\n\n initialized = new ReplaySubject<void>(1);\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n this.initialRawValue = this.form.getRawValue();\n this._markInitialized();\n }\n\n update() {\n this._value = this.buildFilter();\n this.query = this.toQuery();\n this.ibFilterUpdated.emit(this._value);\n this.ibQueryUpdated.emit(this.query);\n }\n\n reset() {\n this.form.reset();\n this.update();\n }\n\n toQuery() {\n let output = {};\n const filters = this.filters?.toArray() ?? [];\n\n for (const filter of filters) {\n output[filter.name] = filter.toQuery();\n }\n\n return output;\n }\n\n /** @ignore */\n private buildFilter(): IbFilterSyntax {\n let output = {};\n const filters = this.filters?.toArray() ?? [];\n\n for (const filter of filters) {\n output[filter.name] = filter.build();\n }\n\n return output;\n }\n\n _markInitialized() {\n this.initialized.next();\n this.initialized.complete();\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { MAT_DATE_LOCALE, NativeDateAdapter } from '@angular/material/core';\n\nexport class IbMatDatepickerI18n {\n\n getDateFormats() {\n return {\n parse: {\n dateInput: 'dd/MM/yyyy',\n },\n display: {\n dateInput: 'dd/MM/yyyy',\n monthYearLabel: 'MMMM yyyy',\n dateA11yLabel: 'dd/MM/yyyy',\n monthYearA11yLabel: 'MMMM yyyy',\n }\n };\n }\n}\n\n// FIXME: this adapter supports it format only but it is linked to translate service. We must support a dynamic parse and format\n\n@Injectable({providedIn: 'root'})\nexport class IbMatDateAdapter extends NativeDateAdapter {\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string) {\n super(matDateLocale);\n super.setLocale(matDateLocale);\n }\n\n parse(date: string, displayFormat?: string): Date {\n if (date === '') {\n return null;\n }\n const dateParts = date.split('/');\n if (dateParts.length === 3) {\n return new Date(parseInt(dateParts[2], 10), parseInt(dateParts[1], 10) - 1, parseInt(dateParts[0], 10));\n }\n return new Date(NaN);\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('IbMatDateAdapter: Cannot format invalid date.');\n }\n // if (displayFormat === 'input') {\n let day: string = date.getDate().toString();\n day = +day < 10 ? '0' + day : day;\n let month: string = (date.getMonth() + 1).toString();\n month = +month < 10 ? '0' + month : month;\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n // }\n // return date.toDateString();\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n deserialize(value: any): Date | null {\n if (!value) {\n return null;\n }\n return super.deserialize(value);\n }\n}\n","import { NgModule, Pipe, PipeTransform } from '@angular/core';\nimport { IbFormArray } from './array/array';\nimport { IbFormControlBase } from './controls/form-control-base';\nimport { IbFormField } from './forms.types';\n\n@Pipe({\n name: 'asFormControl'\n})\nexport class IbFormControlPipe implements PipeTransform {\n transform(value: IbFormField): IbFormControlBase<string> {\n return value as IbFormControlBase<string>;\n }\n}\n\n@Pipe({\n name: 'asFormArray',\n})\nexport class IbFormArrayPipe implements PipeTransform {\n transform(value: IbFormField): IbFormArray {\n return value as IbFormArray;\n }\n}\n\n@NgModule({\n exports: [IbFormArrayPipe, IbFormControlPipe],\n declarations: [IbFormArrayPipe, IbFormControlPipe],\n})\nexport class IbFormPipeModule { }\n","import {Component, Inject} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { IbModalMessage } from './modal-message.model';\n\n@Component({\n selector: 'ib-modal-message',\n template: `\n <h2 mat-dialog-title>{{ data.title | translate }}</h2>\n <mat-dialog-content style=\"min-width:350px;min-height: 10vh;\">{{ data.message | translate }}</mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button\n *ngFor=\"let btn of data.actions\"\n mat-button\n [color]=\"btn.color || 'basic'\"\n [mat-dialog-close]=\"btn.value\">\n {{ btn.label | translate }}\n </button>\n <button\n *ngIf=\"data.hasNo\"\n mat-button\n [mat-dialog-close]=\"false\">\n {{ 'shared.ibModal.no' | translate }}\n </button>\n <button\n *ngIf=\"data.hasYes\"\n mat-button\n color=\"primary\"\n [mat-dialog-close]=\"true\">\n {{ 'shared.ibModal.yes' | translate }}\n </button>\n </mat-dialog-actions>`,\n})\nexport class IbModalMessageComponent {\n\n constructor(\n public dialogRef: MatDialogRef<IbModalMessageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: IbModalMessage) {}\n}\n","import { Injectable, Type } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { IbModalMessageComponent } from \"./modal-message.component\";\nimport type { IbModalMessage } from \"./modal-message.model\";\n\n/**\n * Display modal messages\n *\n * Usage:\n * - Inject the `IbModalMessageService` service in your component or service.\n * - Call the `show` method to display a modal message.\n * - Subscribe to the returned observable to get the result of the modal message.\n *\n * Example:\n *\n * ```typescript\n * constructor(private modalService: IbModalMessageService) {}\n *\n * showMessage() {\n * const modalData: IbModalMessage = {\n * title: 'product.delete.title',\n * message: 'product.delete.description',\n * hasYes: true,\n * hasNo: true,\n * actions: [] // Custom actions can be provided\n * };\n * this.modalService.show(modalData).subscribe((result) => {\n * if (result) {\n * // Do something\n * }\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: \"root\" })\nexport class IbModalMessageService {\n constructor(private dialog: MatDialog) {}\n\n /**\n * Shows a modal message.\n *\n * Returns An observable that resolves with true or false, if the yes or no button was clicked.\n * Otherwise it'll resolve with the `value` parameter of an action.\n *\n * @param data Configuration for the modal message {@link IbModalMessage}\n * @param component The component to use as the content of the modal (default is {@link IbModalMessageComponent})\n */\n show(data: IbModalMessage, component: Type<any> = IbModalMessageComponent) {\n data.hasYes = data.hasYes === undefined ? true : data.hasYes;\n data.hasNo = data.hasNo === undefined ? true : data.hasNo;\n data.actions = data.actions || [];\n\n const dialogRef = this.dialog.open(component, {\n data,\n });\n\n return dialogRef.afterClosed();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IbModalMessageComponent } from './modal-message.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { IbModalMessageService } from './modal-message.service';\n\n\n@NgModule({\n imports: [\n TranslateModule.forChild({\n extend: true\n }),\n CommonModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n IbModalMessageComponent\n ],\n declarations: [\n IbModalMessageComponent\n ],\n providers: [\n IbModalMessageService\n ]\n})\nexport class IbModalModule { }\n","import {\n UntypedFormControl,\n ValidatorFn,\n Form,\n UntypedFormGroup,\n Validators,\n} from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { debounceTime } from \"rxjs/operators\";\nimport { TemplateRef, Type } from \"@angular/core\";\n\nexport class IbFormControlBase<T> {\n /** @deprecated Use the `value` input in `ib-material-form` instead */\n public value: T;\n /** Whether or not disable the form field */\n public disabled: boolean;\n /** Form field name. Same as a FormGroup key */\n public key: string;\n /** Label for this form field. i18n available */\n public label: string;\n public required: boolean;\n public order: number;\n public controlType: string;\n /** Same as <input [type]=\"type\" /> */\n public type: string;\n public validators: ValidatorFn[];\n public options: { key?: string | number; value: string }[];\n public change: (c: UntypedFormControl) => void;\n /**\n * Width size of the form field. Same as [style.width]=\"width\":\n * @example\n * width: '200px'\n * width: '100%'\n * width: '10ch'\n * */\n public width: string;\n public control: IbFormControlBaseComponent;\n public cols: number;\n public rows: number;\n public debounceOnChange: number;\n readonly role = \"control\";\n\n constructor(options: IbFormControlBaseParams<T> = {}) {\n this.value = options.value;\n this.disabled = options.disabled || false;\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.validators = options.validators || [];\n this.required = !!options.required;\n if (this.validators.indexOf(Validators.required) >= 0) {\n this.required = true;\n }\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.options = options.options || [];\n this.width = options.width || \"\";\n this.control = options.control || null;\n this.cols = options.cols || 1;\n this.rows = options.rows || 1;\n this.debounceOnChange =\n options.debounceOnChange >= 0 ? options.debounceOnChange : 0;\n this.setupChangeEvent(options);\n }\n\n private setupChangeEvent(options) {\n let previousValue = this.value;\n const changeSubject = new Subject();\n this.change = (c: UntypedFormControl) => {\n if (options.change && c.value !== previousValue) {\n changeSubject.next(c);\n }\n };\n changeSubject\n .pipe(debounceTime(this.debounceOnChange))\n .subscribe((control: UntypedFormControl) => {\n previousValue = control.value;\n options.change(control);\n });\n }\n}\n\nexport interface IbFormControlBaseParams<T> {\n /** @deprecated Use the `value` input in `ib-material-form` instead */\n value?: T;\n /** @deprecated should not be used with the `disabled` input of `ib-material-form` */\n disabled?: boolean;\n /** Form field name. Same as a FormGroup key */\n key?: string;\n /** Label for this form field. i18n available */\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n /** Same as <input [type]=\"type\" /> */\n type?: string;\n validators?: ValidatorFn[];\n options?: { key?: string | number; value: string }[];\n change?: (c: UntypedFormControl) => void;\n /**\n * Width size of the form field. Same as [style.width]=\"width\":\n * @example\n * width: '200px'\n * width: '100%'\n * width: '10ch'\n * */\n width?: string;\n control?: IbFormControlBaseComponent;\n /** Numbers of columns to span */\n cols?: number;\n /** Numbers of rows to span */\n rows?: number;\n debounceOnChange?: number;\n}\n\nexport interface IbFormControlInterface {\n data: IbFormControlData;\n}\n\nexport class IbFormControlBaseComponent {\n constructor(public component: Type<any>, public data: IbFormControlData) {}\n}\n\nexport interface IbFormControlData {\n base: IbFormControlBaseParams<any>;\n self?: UntypedFormControl;\n form?: UntypedFormGroup;\n hasError?: (errorCode: string) => boolean;\n formControlErrors?: TemplateRef<any>;\n}\n","import { IbFormControlInterface, IbFormControlBase, IbFormControlBaseParams,\n IbFormControlBaseComponent, IbFormControlData } from '../../forms/controls/form-control-base';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: '[ib-mat-autocomplete]',\n template: `\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-label>{{data.base.label | translate}}</mat-label>\n <input\n matInput\n type=\"text\"\n [formControlName]=\"data.base.key\"\n #searchBox\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n (input)=\"onSearchChange($event.target['value'], data.base.options)\"\n (focus)=\"onSearchChange($event.target['value'], data.base.options)\"\n [matAutocomplete]=\"auto\"\n />\n <mat-icon\n style=\"cursor:pointer;color:#666;\"\n matSuffix\n (click)=\"data.self.reset(); data.base.change(data.self)\"\n >{{'clear'}}</mat-icon>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"data.base.change(data.self)\">\n <mat-option\n *ngFor=\"let item of autocompleteFiltered\"\n [value]=\"item.value\"\n (click)=\"selectedItem = item\"\n >\n {{item.value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n </mat-form-field>\n `\n})\n\nexport class IbMatAutocompleteComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n autocompleteFiltered = [];\n selectedItem: any;\n multiSearchAnd = (text, searchWords) => (\n searchWords.every((el) => {\n return text.match(new RegExp(el, 'i'));\n })\n )\n onSearchChange(input: string, values) {\n this.autocompleteFiltered = values.filter(el =>\n this.multiSearchAnd((el.value).toLowerCase(),\n input.toLowerCase().split('%').filter(e => {\n return e !== '' && e !== ' ';\n }))\n );\n }\n}\n\n\nexport class IbMatAutocompleteControl extends IbFormControlBase<string> {\n constructor(options: IbFormControlBaseParams<string>) {\n super(options);\n this.control = new IbFormControlBaseComponent(IbMatAutocompleteComponent, {\n base: this\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData, IbFormControlInterface } from '../../forms/controls/form-control-base';\nimport { IbModalMessageService } from '../../modal/modal-message.service';\n\n@Component({\n selector: '[ib-mat-button]',\n template: `\n<div style=\"padding-top:5px;padding-bottom:5px;height:45px;\">\n <button\n (click)=\"handleActionClick()\"\n [type]=\"(data.base.key === 'submit') ? 'submit' : 'button'\"\n [disabled]=\"data.base.disabled || ((data.base.requireValidation) && !data.form.valid)\"\n mat-flat-button\n [color]=\"data.base.color\"\n >{{data.base.label | translate}}</button>\n</div>\n `\n})\n\nexport class IbMatButtonComponent implements IbFormControlInterface {\n @Input() data: IbMatButtonData;\n constructor(private dialog: IbModalMessageService) {\n\n }\n handleActionClick() {\n if (this.data.base.key === 'submit') {\n return;\n }\n\n if (this.data.base.requireConfirmOnDirty && this.data.form && this.data.form.dirty) {\n return this.dialog.show( {\n title: 'shared.ibForms.unsavedTitle',\n message: 'shared.ibForms.unsavedMessage'\n }).subscribe(result => {\n if (result) {\n this.data.base.handler(this.data.form);\n }\n });\n }\n\n this.data.base.handler(this.data.form);\n }\n}\n\n\nexport class IbMatButtonControl extends IbFormControlBase<string> {\n color;\n handler;\n requireValidation;\n requireConfirmOnDirty;\n constructor(options: IbMatButtonParams) {\n if (options.key === 'submit') { options.requireValidation = true; }\n super(options);\n this.color = options.color || 'primary';\n this.handler = options.handler;\n this.requireValidation = options.requireValidation || false;\n this.requireConfirmOnDirty = options.requireConfirmOnDirty || false;\n this.control = new IbFormControlBaseComponent(IbMatButtonComponent, {\n base: this\n });\n }\n\n}\n\nexport interface IbMatButtonParams extends IbFormControlBaseParams<string> {\n color?: string;\n requireValidation?: boolean;\n requireConfirmOnDirty?: boolean;\n handler?: (form: UntypedFormGroup) => void;\n}\n\n\n\nexport interface IbMatButtonData extends IbFormControlData {\n base: IbMatButtonParams;\n}\n\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlInterface, IbFormControlBase, IbFormControlBaseComponent,\n IbFormControlBaseParams, IbFormControlData } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-checkbox]',\n template: `\n <div style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-checkbox\n [formControlName]=\"data.base.key\"\n (change)=\"data.base.change(data.self)\"\n >{{data.base.label | translate}}{{(data.base.required) ? '*' : ''}}</mat-checkbox>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n</div>\n `\n})\n\nexport class IbMatCheckboxComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n}\n\n\nexport class IbMatCheckboxControl extends IbFormControlBase<boolean | number | string> {\n constructor(options: IbFormControlBaseParams<boolean | number | string>) {\n if (!options.value) { options.value = false; }\n super(options);\n this.control = new IbFormControlBaseComponent(IbMatCheckboxComponent, {\n base: this\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { DateAdapter } from '@angular/material/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IbFormControlInterface, IbFormControlBase, IbFormControlBaseComponent,\n IbFormControlBaseParams, IbFormControlData } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-datepicker]',\n template: `\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-label>{{data.base.label | translate}}</mat-label>\n <input\n [formControlName]=\"data.base.key\"\n matInput\n [matDatepicker]=\"picker\"\n (dateInput)=\"data.base.change(data.self)\"\n (dateChange)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n </mat-form-field>\n `\n})\n\nexport class IbMatDatepickerComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n constructor(\n private adapter: DateAdapter<any>,\n private translate: TranslateService\n ) {\n this.adapter.setLocale(this.translate.currentLang);\n this.translate.onTranslationChange.subscribe(ev => {\n this.adapter.setLocale(ev.lang);\n });\n }\n}\n\n\nexport class IbMatDatepickerControl extends IbFormControlBase<string | Date> {\n constructor(options: IbFormControlBaseParams<string | Date>) {\n if (options.value && typeof options.value === 'string') {\n options.value = new Date(options.value);\n }\n if (!options.value) {\n options.value = null;\n }\n if (options.required) {\n options.validators = options.validators || [];\n options.validators.push(dateRequiredValidator());\n }\n super(options);\n this.control = new IbFormControlBaseComponent(IbMatDatepickerComponent, {\n base: this\n });\n }\n}\n\nexport function dateRequiredValidator(): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value || isNaN(control.value.getTime())) {\n return {\n required: true\n };\n }\n };\n}\n","import { Component, Input } from \"@angular/core\";\nimport { MatSelectChange } from \"@angular/material/select\";\nimport {\n IbFormControlBase,\n IbFormControlBaseComponent,\n IbFormControlBaseParams,\n IbFormControlData,\n IbFormControlInterface,\n} from \"../../forms/controls/form-control-base\";\n\n@Component({\n selector: \"[ib-mat-dropdown]\",\n template: `\n <mat-form-field\n appearance=\"fill\"\n style=\"width: 100%;\"\n [formGroup]=\"data.form\"\n >\n <mat-label>{{ data.base.label | translate }}</mat-label>\n <mat-select\n [formControlName]=\"data.base.key\"\n [multiple]=\"data.base.multiple\"\n (selectionChange)=\"handleSelection($event)\"\n >\n <mat-option\n *ngIf=\"data.base.multiple\"\n class=\"ib-mat-dropdown-select-all\"\n value=\"__all\"\n >{{\n (this.all\n ? \"shared.ibDropdown.selectNone\"\n : \"shared.ibDropdown.selectAll\"\n ) | translate\n }}</mat-option\n >\n <mat-option *ngIf=\"data.base.emptyRow\" [value]=\"data.base.emptyRow.key\">\n {{ data.base.emptyRow.value | translate }}\n </mat-option>\n <mat-option *ngFor=\"let opt of data.base.options\" [value]=\"opt.key\">\n {{ opt.value | translate }}\n </mat-option>\n </mat-select>\n <mat-icon\n matSuffix\n *ngIf=\"hintMessage\"\n [matTooltip]=\"hintMessage | translate\"\n >\n help_outline\n </mat-icon>\n <mat-error>\n <ng-container\n *ngTemplateOutlet=\"data.formControlErrors; context: this\"\n ></ng-container>\n </mat-error>\n </mat-form-field>\n `,\n styles: [\n `\n .ib-mat-dropdown-select-all ::ng-deep mat-pseudo-checkbox {\n display: none;\n }\n `,\n ],\n})\nexport class IbMatDropdownComponent implements IbFormControlInterface {\n @Input() data: IbDropdownData;\n all = false;\n get hintMessage() {\n return this.data.base.hintMessage ? this.data.base.hintMessage() : null;\n }\n\n selectAll() {\n this.all = !this.all;\n if (this.all) {\n const newValues = this.data.base.options.map((t) => t.key);\n this.data.self.setValue(newValues);\n } else {\n this.data.self.setValue([]);\n }\n this.data.base.change(this.data.self);\n }\n\n handleSelection(option: MatSelectChange) {\n if (this.data.base.multiple) {\n if (option.value.includes(\"__all\")) {\n this.selectAll();\n }\n const currentValue = this.data.self.value.filter((t) => t !== \"__all\");\n this.all =\n currentValue && currentValue.length === this.data.base.options.length;\n }\n\n this.data.base.change(this.data.self);\n }\n}\n\nexport class IbMatDropdownControl extends IbFormControlBase<\n string | string[] | number | number[]\n> {\n multiple = false;\n emptyRow = null;\n hintMessage;\n constructor(options: IbMatDropdownParams) {\n super(options);\n this.multiple = options.multiple || false;\n this.emptyRow = options.emptyRow || null;\n this.hintMessage = options.hintMessage || null;\n this.control = new IbFormControlBaseComponent(IbMatDropdownComponent, {\n base: this,\n });\n }\n}\n\nexport interface IbMatDropdownParams\n extends IbFormControlBaseParams<string | string[] | number | number[]> {\n multiple?: boolean;\n emptyRow?: { key?: string | number; value: string };\n hintMessage?: () => string;\n}\n\nexport interface IbDropdownData extends IbFormControlData {\n base: IbMatDropdownParams;\n}\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlInterface, IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-label]',\n template: `\n <div style=\"width:100%;height:50px;\">\n <div\n *ngIf=\"data.base.label\"\n style=\"padding-right:10px;\"\n >{{data.base.label | translate}}: </div>\n <div\n *ngIf=\"data.base.value\"\n style=\"font-weight:bold;\"\n >{{ data.base.value }}</div>\n</div>\n `\n})\n\nexport class IbMatLabelComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n}\n\n\nexport class IbMatLabelControl extends IbFormControlBase<string>{\n constructor(options: IbFormControlBaseParams<string>){\n super(options)\n this.control = new IbFormControlBaseComponent(IbMatLabelComponent, {\n base: this\n })\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData, IbFormControlInterface } from '../../forms/controls/form-control-base';\n@Component({\n selector: '[ib-mat-padding]',\n template: ``\n})\nexport class IbMatPaddingComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n}\n\nexport class IbMatPaddingControl extends IbFormControlBase<string>{\n constructor(options: IbFormControlBaseParams<string>){\n super(options)\n this.control = new IbFormControlBaseComponent(IbMatPaddingComponent, {\n base: this\n })\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlInterface, IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-radio]',\n template: `\n <div style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-label [attr.for]=\"data.base.key\" style=\"display: block\">{{data.base.label | translate}} {{(data.base.required) ? '*' : ''}}</mat-label>\n <mat-radio-group\n [formControlName]=\"data.base.key\"\n (change)=\"data.base.change(data.self)\"\n >\n <mat-radio-button style=\"margin: 5px\" *ngFor=\"let opt of data.base.options\" [value]=\"opt.key\">\n {{opt.value | translate}}\n </mat-radio-button>\n </mat-radio-group>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n</div>\n `\n})\n\nexport class IbMatRadioComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n}\n\n\nexport class IbMatRadioControl extends IbFormControlBase<string>{\n constructor(options: IbFormControlBaseParams<string>){\n super(options);\n this.control = new IbFormControlBaseComponent(IbMatRadioComponent, {\n base: this\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlBase, IbFormControlBaseComponent,\n IbFormControlBaseParams, IbFormControlData, IbFormControlInterface } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-slide-toggle]',\n template: `\n <div style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-slide-toggle\n [formControlName]=\"data.base.key\"\n (change)=\"data.base.change(data.self)\"\n >\n {{data.base.label | translate}}{{(data.base.required) ? '*' : ''}}\n </mat-slide-toggle>\n <mat-error>\n <ng-container\n *ngTemplateOutlet=\"data.formControlErrors;context: this\">\n </ng-container>\n </mat-error>\n </div>\n `\n})\n\nexport class IbMatSlideToggleComponent implements IbFormControlInterface {\n @Input() data: IbFormControlData;\n}\n\n\nexport class IbMatSlideToggleControl extends IbFormControlBase<boolean | number | string> {\n constructor(options: IbFormControlBaseParams<boolean | number | string>) {\n if (!options.value) {\n options.value = false;\n }\n super(options);\n this.control = new IbFormControlBaseComponent(IbMatSlideToggleComponent, {\n base: this\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData, IbFormControlInterface } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-textarea]',\n template: `\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-label>{{data.base.label | translate}}</mat-label>\n <textarea\n matInput\n [formControlName]=\"data.base.key\"\n [type]=\"data.base.type\"\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n [style.height]=\"data.base.height\"\n ></textarea>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n </mat-form-field>\n `\n})\n\nexport class IbMatTextareaComponent implements IbFormControlInterface {\n @Input() data: IbMatTextareaData;\n}\n\n\nexport class IbMatTextareaControl extends IbFormControlBase<string>{\n height = 'auto'\n constructor(options: IbMatTextareaParams){\n super(options)\n this.height = options.height || 'auto';\n this.control = new IbFormControlBaseComponent(IbMatTextareaComponent, {\n base: this\n })\n }\n}\n\n\nexport interface IbMatTextareaParams extends IbFormControlBaseParams<string>{\n height?: string;\n}\n\n\nexport interface IbMatTextareaData extends IbFormControlData {\n base: IbMatTextareaParams;\n}\n","import { Component, Input } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { IbFormControlInterface, IbFormControlBase, IbFormControlBaseComponent, IbFormControlBaseParams, IbFormControlData } from '../../forms/controls/form-control-base';\n\n@Component({\n selector: '[ib-mat-textbox]',\n template: `\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\" [formGroup]=\"data.form\">\n <mat-label>{{data.base.label | translate}}</mat-label>\n <!--\n https://github.com/angular/angular/issues/13243\n type is not dynamic (see angular issue)\n -->\n <input\n matInput\n *ngIf=\"data.base.type === 'number'\"\n [formControlName]=\"data.base.key\"\n [min]=\"minValidator\"\n [max]=\"maxValidator\"\n type=\"number\"\n (keyup)=\"data.base.change(data.self)\"\n (input)=\"data.base.change(data.self)\"\n />\n <input\n matInput\n *ngIf=\"data.base.type === 'text'\"\n [formControlName]=\"data.base.key\"\n [maxlength]=\"maxLengthValidator\"\n type=\"text\"\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n />\n <input\n matInput\n *ngIf=\"data.base.type === 'email'\"\n [formControlName]=\"data.base.key\"\n type=\"email\"\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n />\n <input\n matInput\n *ngIf=\"data.base.type === 'password'\"\n [formControlName]=\"data.base.key\"\n type=\"password\"\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n />\n <input\n matInput\n *ngIf=\"data.base.type === 'date'\"\n [formControlName]=\"data.base.key\"\n type=\"date\"\n (keyup)=\"data.base.change(data.self)\"\n (change)=\"data.base.change(data.self)\"\n />\n <mat-icon\n matSuffix\n *ngIf=\"hintMessage\"\n [matTooltip]=\"hintMessage | translate\"\n >\n help_outline\n </mat-icon>\n <mat-error>\n <ng-container *ngTemplateOutlet=\"data.formControlErrors;context: this\"></ng-container>\n </mat-error>\n </mat-form-field>\n `\n})\n\nexport class IbMatTextboxComponent implements IbFormControlInterface {\n @Input() data: IbMatTextboxData;\n get hintMessage() {\n return (this.data.base.hintMessage) ? this.data.base.hintMessage() : null;\n }\n\n get minValidator() {\n for (const func of this.data.base.validators) {\n const validation = func({value: -Infinity} as AbstractControl);\n if (validation && validation.min) {\n return validation.min.min;\n }\n }\n return null;\n }\n\n get maxValidator() {\n for (const func of this.data.base.validators) {\n const validation = func({value: Infinity} as AbstractControl);\n if (validation && validation.max) {\n return validation.max.max;\n }\n }\n return null;\n }\n\n\n get maxLengthValidator() {\n for (const func of this.data.base.validators) {\n const getMethods = (obj) => {\n let properties = new Set()\n let currentObj = obj\n do {\n Object.getOwnPropertyNames(currentObj).map(item => properties.add(item))\n } while ((currentObj = Object.getPrototypeOf(currentObj)))\n return [...properties.keys()].filter((item: any) => typeof obj[item] === 'function') as string[]\n }\n const sampleString = this.data.self.value\n if(!sampleString) return Infinity\n\n const methods: string[] = getMethods(sampleString)\n const fakeString: any = {}\n for(let m of methods){\n fakeString[m] = sampleString[m].bind(sampleString)\n }\n fakeString['length'] = Infinity\n const validation = func({value: fakeString} as AbstractControl);\n if (validation && validation.maxlength) {\n return validation.maxlength.requiredLength;\n }\n }\n return Infinity;\n }\n}\n\n\nexport class IbMatTextboxControl extends IbFormControlBase<number | string> {\n hintMessage;\n\n constructor(options: IbMatTextboxParams) {\n options.type = options.type || 'text';\n super(options);\n this.hintMessage = options.hintMessage || null;\n this.control = new IbFormControlBaseComponent(IbMatTextboxComponent, {\n base: this\n });\n }\n}\n\n\nexport interface IbMatTextboxParams extends IbFormControlBaseParams<number | string> {\n hintMessage?: () => string;\n}\n\nexport interface IbMatTextboxData extends IbFormControlData {\n base: IbMatTextboxParams;\n}\n\n","import { UntypedFormArray } from \"@angular/forms\";\nimport { IbFormControlBase } from \"../controls/form-control-base\";\n\nexport interface IFormArrayOptions {\n /** Max numbers of lines that an user can add to this form array */\n max: number;\n /** Label for the button to add the first line (i18n) */\n addFieldLabel: string;\n}\n\nexport interface IFormArray {\n /** Property name for this form array. Corresponds to a FormGroup key */\n key: string;\n /** Form control definition. These fields will be repeated for each line */\n fields: IbFormControlBase<any>[];\n options?: Partial<IFormArrayOptions>;\n cols?: number;\n rows?: number;\n width?: string;\n addRow?: (c: UntypedFormArray, newLength: number) => void;\n removeRow?: (c: UntypedFormArray, newLength: number, removedIndex: number, removedData: Record<string, unknown>) => void;\n}\n\nexport class IbFormArray implements IFormArray {\n key: string;\n options: Partial<IFormArrayOptions> = {};\n fields: IbFormControlBase<any>[];\n cols: number;\n rows: number;\n width: string;\n addRow: (c: UntypedFormArray, newLength: number) => void;\n removeRow: (c: UntypedFormArray, newLength: number, removedIndex: number, removedData: Record<string, unknown>) => void;\n readonly role = \"array\";\n\n constructor(options: IFormArray) {\n this.key = options.key;\n this.fields = options.fields ?? [];\n this.options = {\n max: Infinity,\n addFieldLabel: \"shared.ibForms.array.add\",\n ...options.options\n };\n this.cols = options.cols ?? 1;\n this.rows = options.rows ?? 1;\n this.width = options.width || '100%'\n this.addRow = options.addRow ?? (() => {});\n this.removeRow = options.removeRow ?? (() => {});\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { IbFormControlBase } from \"./controls/form-control-base\";\nimport {\n UntypedFormControl,\n Validators,\n UntypedFormGroup,\n UntypedFormArray,\n} from \"@angular/forms\";\nimport { IbFormField } from \"./forms.types\";\nimport { IbFormArray } from \"./array/array\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbFormControlService {\n constructor() {}\n\n toFormGroup(fields: IbFormField[]) {\n const group = new UntypedFormGroup({});\n\n for (const field of fields) {\n if (!field.key) {\n continue;\n }\n \n if (field instanceof IbFormControlBase) {\n group.addControl(field.key, this.toControl(field))\n }\n\n if (field instanceof IbFormArray) {\n group.addControl(field.key, this.toFormArray(field));\n }\n }\n\n return group;\n }\n\n toControl(field: IbFormControlBase<any>) {\n const elem = {\n value: field.value === undefined ? null : field.value,\n disabled: field.disabled,\n };\n let validators = [];\n if (field.validators && field.validators.length) {\n validators = validators.concat(field.validators);\n }\n if (field.required) {\n validators.push(Validators.required);\n }\n return new UntypedFormControl(elem, validators)\n }\n\n toFormArray(source: IbFormArray) {\n const formArray = new UntypedFormArray([]);\n const patchValue = formArray.patchValue;\n formArray.patchValue = (value: any[], options) => {\n formArray.controls = [];\n let i = Math.min(Math.max(value.length, 0), source.options.max);\n while (i--) {\n formArray.push(this.toFormGroup(source.fields));\n }\n patchValue.call(formArray, value, options);\n }\n return formArray;\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { IbFormControlBase } from '../controls/form-control-base';\nimport { UntypedFormGroup, UntypedFormControl } from '@angular/forms';\n\n@Component({\n selector: 'ib-dynamic-form-control',\n templateUrl: './dynamic-form-control.component.html',\n host: {\n class: 'ibFormControl'\n },\n})\n/**\n * @deprecated Do not use this component. It will be removed in a future release\n */\nexport class IbDynamicFormControlComponent {\n @Input() base: IbFormControlBase<any>;\n @Input() form: UntypedFormGroup;\n\n get self(): UntypedFormControl { return this.form.get(this.base.key) as UntypedFormControl; }\n\n hasError(e) {\n return this.self.hasError(e);\n }\n}\n","<div [formGroup]=\"form\">\n <label [attr.for]=\"base.key\" class=\"ibFormControl-label\">{{base.label}}</label>\n\n <div [ngSwitch]=\"base.controlType\">\n\n <input\n [ngSwitch]=\"base.controlType\"\n *ngSwitchCase=\"'textbox'\"\n [formControlName]=\"base.key\"\n [type]=\"base.type\"\n (keyup)=\"base.change(self)\"\n >\n\n <select\n *ngSwitchCase=\"'dropdown'\"\n [formControlName]=\"base.key\"\n (change)=\"base.change(self)\"\n >\n <option *ngFor=\"let opt of base.options\" [value]=\"opt.key\">{{opt.value}}</option>\n </select>\n\n </div>\n\n <div class=\"ibFormControl-errorMessage\" *ngIf=\"self.invalid && self.dirty\">{{base.label}} is required</div>\n</div>\n","import { Component, Input } from \"@angular/core\";\nimport { UntypedFormArray, UntypedFormGroup } from \"@angular/forms\";\nimport { IbFormArray } from \"../array/array\";\nimport { IbFormControlService } from \"../form-control.service\";\n\n@Component({\n selector: \"ib-dynamic-form-array\",\n templateUrl: \"dynamic-form-array.component.html\",\n})\nexport class IbDynamicFormArrayComponent {\n @Input() base: IbFormArray;\n @Input() form: UntypedFormGroup;\n\n constructor(private cs: IbFormControlService) {}\n\n get array() {\n return this.form.get(this.base.key) as UntypedFormArray;\n }\n\n get max() {\n return this.base.options.max;\n }\n\n get lines() {\n return this.array.controls.length;\n }\n\n getGroupAt(index: number) {\n return this.array.at(index) as UntypedFormGroup;\n }\n\n addField() {\n this.array.push(this.cs.toFormGroup(this.base.fields));\n this.base.addRow(this.array, this.lines)\n }\n\n removeField(index: number) {\n const removedData = structuredClone(this.getGroupAt(index)?.getRawValue())\n this.array.removeAt(index);\n this.base.removeRow(this.array, this.lines, index, removedData);\n }\n}\n","<div [formGroup]=\"form\">\n\n <section class=\"ibFormArrayItem\" *ngFor=\"let line of array.controls; let index = index\">\n <ng-container *ngFor=\"let field of base.fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field\"\n [form]=\"getGroupAt(index)\"></ib-dynamic-form-control>\n <!-- <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field\" [form]=\"form\"></ib-dynamic-form-array> -->\n </ng-container>\n </ng-container>\n <div class=\"ibFormRow ibFormActions\">\n <button *ngIf=\"lines > 1\" (click)=\"removeField(index)\" [disabled]=\"array.disabled\">-</button>\n <button *ngIf=\"lines - 1 === index\" (click)=\"addField()\" [disabled]=\"array.disabled\">Add</button>\n </div>\n </section>\n\n</div>","import {\n Component,\n Directive,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { IbFormControlInterface } from \"../../forms/controls/form-control-base\";\nimport { IbDynamicFormControlComponent } from \"../../forms/dynamic-form-control/dynamic-form-control.component\";\n\n@Directive({\n selector: \"[formControlHost]\",\n})\nexport class IbFormControlDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n\n@Component({\n selector: \"ib-material-form-control\",\n templateUrl: \"./material-form-control.component.html\",\n})\nexport class IbMaterialFormControlComponent\n extends IbDynamicFormControlComponent\n implements OnInit, OnChanges\n{\n @ViewChild(IbFormControlDirective, { static: true })\n formControlHost: IbFormControlDirective;\n @ViewChild(\"formControlErrors\", { static: true })\n formControlErrors: TemplateRef<any>;\n\n componentRef;\n ngOnChanges(changes: SimpleChanges): void {\n const form = changes[\"form\"];\n if (form && !form.isFirstChange()) {\n this.componentRef.instance.data = {\n ...this.componentRef.instance.data,\n form: form.currentValue,\n };\n }\n }\n ngOnInit(): void {\n this.loadComponent();\n }\n\n loadComponent() {\n if (!this.base.control) {\n return;\n }\n\n const viewContainerRef = this.formControlHost.viewContainerRef;\n viewContainerRef.clear();\n\n this.componentRef =\n viewContainerRef.createComponent<IbFormControlInterface>(\n this.base.control.component\n );\n this.componentRef.setInput('data', {\n ...this.base.control.data,\n form: this.form,\n self: this.self,\n hasError: this.hasError,\n formControlErrors: this.formControlErrors,\n });\n }\n}\n","<ng-template formControlHost></ng-template>\n<ng-template #formControlErrors>\n @if (hasError('required')) {\n <span>\n {{base.label | translate}} {{ 'shared.ibForms.errors.required' | translate }}\n </span>\n }\n @else if (hasError('minlength')) {\n <span>\n {{base.label | translate}} {{ 'shared.ibForms.errors.minlength' | translate:{v:self.errors.minlength.requiredLength} }}\n </span>\n }\n @else if (hasError('maxlength')) {\n <span>\n {{base.label | translate}} {{ 'shared.ibForms.errors.maxlength' | translate:{v:self.errors.maxlength.requiredLength} }}\n </span>\n }\n @else if (hasError('min')) {\n <span>\n {{base.label | translate}} {{ 'shared.ibForms.errors.min' | translate:{v:self.errors.min.min} }}\n </span>\n }\n @else if (hasError('max')) {\n <span>\n {{base.label | translate}} {{ 'shared.ibForms.errors.max' | translate:{v:self.errors.max.max} }}\n </span>\n }\n @else if (hasError('email')) {\n <span>\n {{ 'shared.ibForms.errors.email' | translate }}\n </span>\n }\n @else if (hasError('matDatepickerParse')) {\n <span>\n {{ 'shared.ibForms.errors.date' | translate:{v:self.errors.matDatepickerParse.matDatepickerParse} }}\n </span>\n }\n @else if (hasError('customError')) {\n <span>\n {{ self.errors.customError.message | translate:self.errors.customError.params }}\n </span>\n }\n</ng-template>\n","import { Component } from \"@angular/core\";\nimport { IbDynamicFormArrayComponent } from \"../../forms/dynamic-form-array/dynamic-form-array.component\";\n\n@Component({\n selector: \"ib-material-form-array\",\n templateUrl: \"material-form-array.component.html\",\n})\nexport class IbMaterialFormArrayComponent extends IbDynamicFormArrayComponent {}\n","<form class=\"ibFormArray\" [formGroup]=\"form\">\n\n <section class=\"ibFormArrayItem\" *ngFor=\"let line of array.controls; let index = index\"\n style=\"display: flex; flex-wrap: wrap\">\n <ng-container *ngFor=\"let field of base.fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-material-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field\" [form]=\"getGroupAt(index)\"\n [style.flex]=\"'1 1 ' + field.width\" [style.max-width]=\"field.width\"\n [attr.data-cy]=\"field.key\"\n ></ib-material-form-control>\n </ng-container>\n </ng-container>\n <div class=\"ibFormArrayActions\">\n <button mat-icon-button *ngIf=\"lines > 0\" (click)=\"removeField(index)\" [disabled]=\"array.disabled\">\n <mat-icon>remove</mat-icon>\n </button>\n <button mat-icon-button *ngIf=\"lines - 1 === index && lines !== max\" (click)=\"addField()\"\n [disabled]=\"array.disabled\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </section>\n\n <section *ngIf=\"!array.controls.length\" class=\"ibFormArrayItem\">\n <div class=\"ibFormArrayActions\">\n <button mat-flat-button (click)=\"addField()\"\n [disabled]=\"array.disabled\">\n <mat-icon>add</mat-icon>\n {{ base.options.addFieldLabel | translate }}\n </button>\n </div>\n </section>\n\n</form>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport { UntypedFormGroup } from \"@angular/forms\";\nimport { Observable, Subject } from \"rxjs\";\nimport { IbFormControlService } from \"../form-control.service\";\nimport { IbFormField } from \"../forms.types\";\n\nexport interface IbFormAction {\n key?: string;\n label: string;\n handler?: (form: UntypedFormGroup) => void;\n options?: any;\n requireConfirmOnDirty?: boolean;\n}\n\ninterface IbFormOnChanges {\n changes: SimpleChanges;\n form: UntypedFormGroup;\n}\n\n@Component({\n selector: \"ib-form\",\n templateUrl: \"./dynamic-form.component.html\",\n})\nexport class IbDynamicFormComponent implements OnInit, OnChanges, OnDestroy {\n @Input() fields: IbFormField[] = [];\n @Input() value: Record<string, unknown> = {};\n @Input() actions: IbFormAction[] = [{ key: \"submit\", label: \"Save\" }];\n @Input() cols: number;\n /**\n * @ignore\n * @deprecated\n * this input will be removed in a future release.\n * Utilizzare una subscription ad `afterInit()` per eseguire codice immediatamente dopo aver\n * inizializzato il `FormGroup` (come `form.disable()`)\n */\n @Input() disabledOnInit = false;\n @Input() disabled = false;\n @Output() ibSubmit = new EventEmitter<any>();\n form: UntypedFormGroup;\n\n /** @ignore */\n private readonly onInitSubject = new Subject<UntypedFormGroup>();\n\n /** @ignore */\n private readonly onChangesSubject = new Subject<IbFormOnChanges>();\n\n constructor(private cs: IbFormControlService) {}\n\n ngOnInit() {\n this.form = this.cs.toFormGroup(this.fields);\n if (this.disabled) {\n this.form?.disable();\n } else {\n this.form?.enable();\n }\n this.form.patchValue(this.value);\n this.onInitSubject.next(this.form);\n if (this.disabledOnInit) {\n this.form.disable();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const fields = changes.fields;\n\n if (fields && !fields.isFirstChange()) {\n this.form = this.cs.toFormGroup(fields.currentValue);\n this.form.patchValue(this.value);\n }\n\n const value = changes.value;\n if (value && !value.isFirstChange()) {\n this.form.patchValue(value.currentValue);\n }\n\n if (this.disabled) {\n this.form?.disable();\n } else {\n this.form?.enable();\n }\n\n const cols = changes.cols;\n if (fields && cols) {\n const hasFormArray = (fields.currentValue as IbFormField[]).find(\n (f) => f.role === \"array\"\n );\n if (hasFormArray && cols.currentValue > 0) {\n console.warn(\n `IbFormArray is not supported in grid mode and will not be shown. Please, remove the cols input from ib-material-form`\n );\n }\n }\n\n for (const prop of Object.values(changes)) {\n if (!prop.isFirstChange()) {\n this.onChangesSubject.next({ changes, form: this.form });\n break;\n }\n }\n }\n\n ngOnDestroy() {\n this.onInitSubject?.complete();\n this.onChangesSubject?.complete();\n }\n\n handleSubmit() {\n this.ibSubmit.emit(this.form.getRawValue());\n }\n\n handleActionClick(source: IbFormAction) {\n if (source.key === \"submit\") {\n return;\n }\n source.handler(this.form);\n }\n\n afterInit(): Observable<UntypedFormGroup> {\n return this.onInitSubject;\n }\n\n afterChanges(): Observable<IbFormOnChanges> {\n return this.onChangesSubject;\n }\n}\n","<form (ngSubmit)=\"handleSubmit()\" [formGroup]=\"form\" class=\"ibForm\">\n\n <ng-container *ngFor=\"let field of fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-dynamic-form-control *ngSwitchCase=\"'control'\" class=\"ibFormRow\" [base]=\"field | asFormControl\" [form]=\"form\"></ib-dynamic-form-control>\n <ib-dynamic-form-array *ngSwitchCase=\"'array'\" class=\"ibFormRow\" [base]=\"field | asFormArray\" [form]=\"form\"></ib-dynamic-form-array>\n </ng-container>\n </ng-container>\n\n <div class=\"ibFormRow ibFormActions\">\n <button type=\"submit\" [disabled]=\"!form.valid\">Save</button>\n </div>\n</form>","import { Component, Input, OnChanges } from \"@angular/core\";\nimport { IbDynamicFormComponent } from \"../../forms/dynamic-form/dynamic-form.component\";\n\n/**\n * Crea un form dinamico usando componenti di Angular Material.\n *\n * @example\n * <ib-material-form\n * [fields]=\"loginFormFields\"\n * (ibSubmit)=\"onSubmit($event)\"></ib-material-form>\n */\n\nexport enum IbMatActionsPosition {\n BOTH,\n TOP,\n BOTTOM,\n}\n\n@Component({\n selector: \"ib-material-form\",\n templateUrl: \"./material-form.component.html\",\n})\nexport class IbMaterialFormComponent\n extends IbDynamicFormComponent\n implements OnChanges\n{\n @Input() actionsPosition = IbMatActionsPosition.BOTTOM;\n @Input() rowHeight = \"80px\";\n simpleActions = [];\n submitAction = null;\n ibMatActionsPosition = IbMatActionsPosition;\n\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (changes.actions && changes.actions.currentValue) {\n this.simpleActions = changes.actions.currentValue.filter(\n (a) => a.key !== \"submit\"\n );\n this.submitAction = changes.actions.currentValue.find(\n (a) => a.key === \"submit\"\n );\n }\n }\n}\n","<form (ngSubmit)=\"handleSubmit()\" [formGroup]=\"form\" class=\"ibForm\">\n <div\n class=\"ibFormActions\"\n style=\"display:flex;flex-direction:row;justify-content: end; gap:10px\"\n *ngIf=\"[ibMatActionsPosition.BOTH, ibMatActionsPosition.TOP].indexOf(actionsPosition) > -1\"\n >\n <ib-material-form-control\n *ngFor=\"let action of simpleActions\"\n class=\"ibFormRow\"\n [base]=\"action\"\n [form]=\"form\"\n [attr.data-cy]=\"action.key\"\n ></ib-material-form-control>\n <ib-material-form-control\n *ngIf=\"submitAction\"\n class=\"ibFormRow\"\n [base]=\"submitAction\"\n [form]=\"form\"\n [attr.data-cy]=\"submitAction.key\"\n ></ib-material-form-control>\n </div>\n\n <mat-grid-list class=\"ib-material-form-grid\" *ngIf=\"cols\" [cols]=\"cols\" [rowHeight]=\"rowHeight\">\n <mat-grid-tile\n *ngFor=\"let field of fields\"\n [colspan]=\"field.cols\"\n [rowspan]=\"field.rows\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-material-form-control\n *ngSwitchCase=\"'control'\"\n class=\"ibFormRow\"\n [base]=\"field | asFormControl\"\n [form]=\"form\"\n [ngStyle]=\"{ flex: '1 1 ' + field.width }\"\n [attr.data-cy]=\"field?.key\"\n ></ib-material-form-control>\n </ng-container>\n </mat-grid-tile>\n </mat-grid-list>\n\n <div style=\"display:flex;flex-direction:row;flex-wrap: wrap\" *ngIf=\"!cols\">\n <ng-container *ngFor=\"let field of fields\">\n <ng-container [ngSwitch]=\"field.role\">\n <ib-material-form-control\n *ngSwitchCase=\"'control'\"\n class=\"ibFormRow\"\n [base]=\"field | asFormControl\"\n [form]=\"form\"\n [ngStyle]=\"{ flex: '1 1 ' + field.width }\"\n [attr.data-cy]=\"field?.key\"\n ></ib-material-form-control>\n <ib-material-form-array\n *ngSwitchCase=\"'array'\"\n class=\"ibFormRow\"\n [base]=\"field | asFormArray\"\n [form]=\"form\"\n [ngStyle]=\"{ flex: '1 1 ' + field.width }\"\n [attr.data-cy]=\"field?.key\"\n ></ib-material-form-array>\n </ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"ibFormActions\"\n style=\"display:flex;flex-direction:row;justify-content: end; gap:10px\"\n *ngIf=\"[ibMatActionsPosition.BOTH, ibMatActionsPosition.BOTTOM].indexOf(actionsPosition) > -1\"\n >\n <ib-material-form-control\n *ngFor=\"let action of simpleActions\"\n class=\"ibFormRow\"\n [base]=\"action\"\n [form]=\"form\"\n [attr.data-cy]=\"action.key\"\n ></ib-material-form-control>\n <ib-material-form-control\n *ngIf=\"submitAction\"\n class=\"ibFormRow\"\n [base]=\"submitAction\"\n [form]=\"form\"\n [attr.data-cy]=\"submitAction.key\"\n ></ib-material-form-control>\n </div>\n</form>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n MatOptionModule,\n} from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatGridListModule } from \"@angular/material/grid-list\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IbFormPipeModule } from \"../forms/forms.pipes\";\nimport { IbModalModule } from \"../modal/modal.module\";\nimport { IbMatAutocompleteComponent } from \"./controls/autocomplete\";\nimport { IbMatButtonComponent } from \"./controls/button\";\nimport { IbMatCheckboxComponent } from \"./controls/checkbox\";\nimport { IbMatDatepickerComponent } from \"./controls/datepicker\";\nimport { IbMatDropdownComponent } from \"./controls/dropdown\";\nimport { IbMatLabelComponent } from \"./controls/label\";\nimport { IbMatPaddingComponent } from \"./controls/padding\";\nimport { IbMatRadioComponent } from \"./controls/radio\";\nimport { IbMatSlideToggleComponent } from \"./controls/slide-toggle\";\nimport { IbMatTextareaComponent } from \"./controls/textarea\";\nimport { IbMatTextboxComponent } from \"./controls/textbox\";\nimport { IbMatDateAdapter, IbMatDatepickerI18n } from \"./intl/datepicker.intl\";\nimport { IbMaterialFormArrayComponent } from \"./material-form-array/material-form-array.component\";\nimport {\n IbFormControlDirective,\n IbMaterialFormControlComponent,\n} from \"./material-form-control/material-form-control.component\";\nimport { IbMaterialFormComponent } from \"./material-form/material-form.component\";\n\nconst components = [\n IbMatTextboxComponent,\n IbMatDropdownComponent,\n IbMatRadioComponent,\n IbMatCheckboxComponent,\n IbMatDatepickerComponent,\n IbMatAutocompleteComponent,\n IbMatLabelComponent,\n IbMatTextareaComponent,\n IbMatButtonComponent,\n IbMatPaddingComponent,\n IbMatSlideToggleComponent,\n IbMaterialFormComponent,\n IbMaterialFormControlComponent,\n IbFormControlDirective,\n IbMaterialFormArrayComponent,\n];\n\nexport function ibMatDatepickerTranslate() {\n return new IbMatDatepickerI18n().getDateFormats();\n}\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule.forChild({\n extend: true,\n }),\n MatButtonModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n MatRadioModule,\n MatCheckboxModule,\n MatInputModule,\n MatDatepickerModule,\n MatAutocompleteModule,\n MatIconModule,\n MatGridListModule,\n MatTooltipModule,\n MatSlideToggleModule,\n IbModalModule,\n IbFormPipeModule,\n ],\n exports: [...components],\n declarations: [...components],\n providers: [\n {\n provide: DateAdapter,\n useClass: IbMatDateAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useFactory: ibMatDatepickerTranslate },\n ],\n})\nexport class IbMaterialFormModule {}\n","import { LowerCasePipe, NgIf } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { FormControl, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IbFilterActionGroup } from \"../../filter-button/filter-action-group.component\";\nimport { IbFilterButton } from \"../../filter-button/filter-button.component\";\nimport { IbFilterDef } from \"../../filter.types\";\nimport { eq, none } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n standalone: true,\n imports: [\n NgIf,\n IbFilterButton,\n IbFilterActionGroup,\n ReactiveFormsModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatRadioModule,\n TranslateModule,\n LowerCasePipe,\n ],\n selector: \"ib-boolean-filter\",\n templateUrl: \"boolean-filter.component.html\",\n providers: [{ provide: IbFilterBase, useExisting: IbBooleanFilter }],\n})\nexport class IbBooleanFilter extends IbFilterBase {\n searchCriteria = new FormControl(null);\n\n get displayValue() {\n return this.rawValue;\n }\n\n build(): IbFilterDef {\n if (this.searchCriteria.value === null) {\n return none();\n }\n\n return eq(this.searchCriteria.value);\n }\n\n toQuery() {\n return this.searchCriteria.value;\n }\n}\n","<ib-filter-button>\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ (displayValue ? \"shared.ibFilter.true\" : \"shared.ibFilter.false\") | translate | lowercase }}\n </span>\n\n <section [formGroup]=\"filter.form\" style=\"padding: .5em 1em 1em 1em\">\n <mat-button-toggle-group [formControlName]=\"name\" style=\"width: 100%;\">\n <mat-button-toggle [value]=\"true\" style=\"width: 100%;\">{{ \"shared.ibFilter.true\" | translate }}</mat-button-toggle>\n <mat-button-toggle [value]=\"false\" style=\"width: 100%;\"> {{ \"shared.ibFilter.false\" | translate }}</mat-button-toggle>\n </mat-button-toggle-group>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>","import { formatDate } from \"@angular/common\";\nimport { Component, ViewEncapsulation } from \"@angular/core\";\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { DateAdapter } from \"@angular/material/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport {\n IbDateFilterCategory,\n IbDateFilterPeriod,\n IbDateQuery,\n IbFilterDef,\n} from \"../../filter.types\";\nimport { and, gte, lte, none } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n selector: \"ib-date-filter\",\n templateUrl: \"filter-date.component.html\",\n styleUrls: [\"./filter-date.component.scss\"],\n providers: [{ provide: IbFilterBase, useExisting: IbDateFilter }],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IbDateFilter extends IbFilterBase {\n searchCriteria = new FormGroup({\n categorySelected: new FormControl(null, [Validators.required]),\n within: new FormGroup({\n value: new FormControl(null, [Validators.min(1)]),\n period: new FormControl(IbDateFilterPeriod.MINUTES, {\n nonNullable: true,\n }),\n }),\n moreThan: new FormGroup({\n value: new FormControl(null, [Validators.min(1)]),\n period: new FormControl(IbDateFilterPeriod.MINUTES, {\n nonNullable: true,\n }),\n }),\n range: new FormGroup({\n start: new FormControl(null),\n end: new FormControl(null),\n }),\n });\n\n withinPeriodOptions = [\n {\n displayValue: \"shared.ibFilter.date.minutes\",\n value: IbDateFilterPeriod.MINUTES,\n },\n {\n displayValue: \"shared.ibFilter.date.hours\",\n value: IbDateFilterPeriod.HOURS,\n },\n {\n displayValue: \"shared.ibFilter.date.days\",\n value: IbDateFilterPeriod.DAYS,\n },\n {\n displayValue: \"shared.ibFilter.date.weeks\",\n value: IbDateFilterPeriod.WEEKS,\n },\n ];\n\n moreThanPeriodOptions = [\n {\n displayValue: \"shared.ibFilter.date.minutesAgo\",\n value: IbDateFilterPeriod.MINUTES,\n },\n {\n displayValue: \"shared.ibFilter.date.hoursAgo\",\n value: IbDateFilterPeriod.HOURS,\n },\n {\n displayValue: \"shared.ibFilter.date.daysAgo\",\n value: IbDateFilterPeriod.DAYS,\n },\n {\n displayValue: \"shared.ibFilter.date.weeksAgo\",\n value: IbDateFilterPeriod.WEEKS,\n },\n ];\n\n private multipliers = {\n [IbDateFilterPeriod.MINUTES]: 60_000,\n [IbDateFilterPeriod.HOURS]: 60_000 * 60,\n [IbDateFilterPeriod.DAYS]: 60_000 * 60 * 24,\n [IbDateFilterPeriod.WEEKS]: 60_000 * 60 * 24 * 7,\n };\n\n get isDirty() {\n if (this.getSelected()?.invalid) {\n return false;\n }\n\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return !!this.rawValue?.within?.value;\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return !!this.rawValue?.moreThan?.value;\n }\n\n if (this.isSelected(IbDateFilterCategory.RANGE)) {\n return this.rawValue?.range?.start && this.rawValue?.range?.end;\n }\n }\n\n get displayValue() {\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return this.rawValue?.within?.value;\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return this.rawValue?.moreThan?.value;\n }\n\n if (this.isSelected(IbDateFilterCategory.RANGE)) {\n if (!this.rawValue?.range?.start || !this.rawValue?.range?.end) {\n return;\n }\n const start = formatDate(this.rawValue?.range?.start, \"dd/MM/yyyy\", \"en\");\n const end = formatDate(this.rawValue?.range?.end, \"dd/MM/yyyy\", \"en\");\n return `${start} - ${end}`;\n }\n\n return;\n }\n\n get displayPeriod() {\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return this.withinPeriodOptions.find(\n (o) => o.value === this.rawValue?.within?.period\n )?.displayValue;\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return this.moreThanPeriodOptions.find(\n (o) => o.value === this.rawValue?.moreThan?.period\n )?.displayValue;\n }\n\n return;\n }\n\n get displayCondition() {\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return \"shared.ibFilter.date.withinTheLast\";\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return \"shared.ibFilter.date.moreThan\";\n }\n\n if (this.isSelected(IbDateFilterCategory.RANGE)) {\n return \"shared.ibFilter.date.between\";\n }\n }\n\n constructor(\n private adapter: DateAdapter<any>,\n private translate: TranslateService\n ) {\n super();\n this.adapter.setLocale(this.translate.currentLang);\n this.translate.onTranslationChange.subscribe((ev) => {\n this.adapter.setLocale(ev.lang);\n });\n }\n\n isSelected(category) {\n return this.searchCriteria.value.categorySelected === category;\n }\n\n getSelected() {\n return this.searchCriteria?.get(this.searchCriteria.value.categorySelected);\n }\n\n applyFilter(): void {\n this.searchCriteria.updateValueAndValidity();\n if (this.getSelected()?.invalid) {\n this.searchCriteria.markAllAsTouched();\n return;\n }\n\n const categorySelected = this.searchCriteria?.value.categorySelected;\n const patch = {\n [categorySelected]: this.getSelected()?.value,\n categorySelected,\n };\n\n this.clearFilter(patch);\n this.filter.update();\n this.button.closeMenu();\n }\n\n clearFilter(patchValue = {}) {\n const defaultPeriod = {\n period: IbDateFilterPeriod.MINUTES,\n value: null,\n };\n this.searchCriteria.reset({\n within: defaultPeriod,\n moreThan: defaultPeriod,\n ...patchValue,\n });\n }\n\n clear(): void {\n this.clearFilter();\n this.filter.update();\n }\n\n private getOffsetTime(value: number, category) {\n const now = new Date();\n const then = new Date();\n const multiplier = this.multipliers[category.period];\n\n then.setTime(now.getTime() - value * multiplier);\n return [then, now];\n }\n\n private toMidnight(date: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 23,\n 59,\n 59,\n 999\n );\n }\n\n private buildWithinCategory() {\n const value = this.searchCriteria.value.within.value;\n if (!value) {\n return none();\n }\n\n const [then, now] = this.getOffsetTime(\n value,\n this.searchCriteria.value.within\n );\n\n return and([gte(then), lte(now)]);\n }\n\n private buildMoreThanCategory() {\n const value = this.searchCriteria.value.moreThan.value;\n if (!value) {\n return none();\n }\n\n const [then] = this.getOffsetTime(\n value,\n this.searchCriteria.value.moreThan\n );\n\n return lte(then);\n }\n\n private buildRangeCategory() {\n const start = this.searchCriteria.value.range.start;\n const end = this.searchCriteria.value.range.end;\n if (!start || !end) {\n return none();\n }\n\n return and([gte(new Date(start)), lte(this.toMidnight(new Date(end)))]);\n }\n\n build = (): IbFilterDef => {\n if (this.getSelected()?.invalid) {\n return none();\n }\n\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return this.buildWithinCategory();\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return this.buildMoreThanCategory();\n }\n\n if (this.isSelected(IbDateFilterCategory.RANGE)) {\n return this.buildRangeCategory();\n }\n\n return none();\n };\n\n private toQueryWithinCategory() {\n const value = this.searchCriteria.value.within.value;\n if (!value) {\n return null;\n }\n\n const [then, now] = this.getOffsetTime(\n value,\n this.searchCriteria.value.within\n );\n\n return {\n start: then.toISOString(),\n end: now.toISOString(),\n };\n }\n\n private toQueryMoreThanCategory() {\n const value = this.searchCriteria.value.moreThan.value;\n if (!value) {\n return null;\n }\n\n const [then] = this.getOffsetTime(\n value,\n this.searchCriteria.value.moreThan\n );\n\n return {\n start: new Date(0).toISOString(),\n end: then.toISOString(),\n };\n }\n\n private toQueryRangeCategory() {\n const start = this.searchCriteria.value.range.start;\n const end = this.searchCriteria.value.range.end;\n if (!start || !end) {\n return null;\n }\n\n return {\n start: new Date(start).toISOString(),\n end: this.toMidnight(new Date(end)).toISOString(),\n };\n }\n\n toQuery(): IbDateQuery {\n if (this.getSelected()?.invalid) {\n return;\n }\n\n if (this.isSelected(IbDateFilterCategory.WITHIN)) {\n return this.toQueryWithinCategory();\n }\n\n if (this.isSelected(IbDateFilterCategory.MORE_THAN)) {\n return this.toQueryMoreThanCategory();\n }\n\n if (this.isSelected(IbDateFilterCategory.RANGE)) {\n return this.toQueryRangeCategory();\n }\n\n return;\n }\n}\n","<ib-filter-button [attr.data-cy]=\"'ib-date-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} {{ displayValue }} {{ displayPeriod | translate }}\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\" class=\"ib-filter-date\">\n <mat-radio-group formControlName=\"categorySelected\">\n <mat-radio-button value=\"within\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within'\">{{\n 'shared.ibFilter.date.withinTheLast' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('within')\" formGroupName=\"within\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-within-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-within-period'\">\n <mat-option *ngFor=\"let option of withinPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"moreThan\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan'\">{{\n 'shared.ibFilter.date.moreThan' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('moreThan')\" formGroupName=\"moreThan\"\n class=\"ib-filter-date__form\">\n <mat-form-field style=\"width: 100%\" appearance=\"outline\">\n <input type=\"number\" matInput formControlName=\"value\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-value'\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 100%\">\n <mat-select formControlName=\"period\" [attr.data-cy]=\"'ib-date-filter-' + name + '-moreThan-period'\">\n <mat-option *ngFor=\"let option of moreThanPeriodOptions\" [value]=\"option.value\">\n {{ option.displayValue | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </section>\n\n <mat-radio-button value=\"range\" [attr.data-cy]=\"'ib-date-filter-' + name + '-range'\">{{\n 'shared.ibFilter.date.between' | translate }}</mat-radio-button>\n <section [class.ib-filter-date__form--hidden]=\"!isSelected('range')\" formGroupName=\"range\"\n class=\"ib-filter-date__range\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ 'shared.ibFilter.date.dateRangeLabel' | translate }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-start'\">\n <input matEndDate formControlName=\"end\" placeholder=\"dd/mm/yyyy\"\n [attr.data-cy]=\"'ib-date-filter-' + name + '-range-end'\">\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error>{{ 'shared.ibFilter.date.dateRangeInvalid' | translate }}</mat-error>\n </mat-form-field>\n </section>\n\n </mat-radio-group>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>","import { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { IbFilterDef, IbNumberQuery } from \"../../filter.types\";\nimport { and, gte, lte, none } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n selector: \"ib-number-filter\",\n templateUrl: \"filter-number.component.html\",\n styleUrls: [\"./filter-number.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: IbFilterBase, useExisting: IbNumberFilter }],\n})\nexport class IbNumberFilter extends IbFilterBase {\n @Input() min: number = 0;\n @Input() max: number = 100;\n @Input() step: number = 1;\n\n slider = new FormGroup({\n min: new FormControl(this.min, {\n nonNullable: true,\n validators: [Validators.required],\n }),\n max: new FormControl(this.max, {\n nonNullable: true,\n validators: [Validators.required],\n }),\n });\n\n searchCriteria = new FormControl(none(), { nonNullable: true });\n\n get displayLabelParams() {\n return {\n min: this.rawValue?.value?.[0]?.value,\n max: this.rawValue?.value?.[1]?.value,\n };\n }\n\n ngOnInit() {\n this.searchCriteria.reset = () => {\n this.searchCriteria.setValue(none());\n this.clearRange();\n };\n this.searchCriteria.valueChanges.subscribe((values) => {\n if (values.operator === 0) {\n this.clearRange();\n return;\n }\n this.slider.setValue({\n min: values.value?.[0]?.value,\n max: values.value?.[1]?.value,\n });\n });\n this.clearRange();\n super.ngOnInit();\n }\n\n initializeFromColumn(data: any[]): void {\n if (!data.length) {\n return;\n }\n const values = data.map((x) => x[this.name]);\n this.min = Math.min(...values);\n this.max = Math.max(...values);\n if (!this.isDirty) {\n this.clearRange();\n }\n }\n\n applyFilter(): void {\n if (!this.slider.valid) {\n this.slider.markAllAsTouched();\n return;\n }\n this.searchCriteria.setValue(this.build());\n this.filter.update();\n this.button.closeMenu();\n }\n\n clear() {\n this.searchCriteria.setValue(none());\n this.clearRange();\n this.filter.update();\n }\n\n clearRange() {\n this.slider.setValue({\n min: this.min,\n max: this.max,\n });\n }\n\n build = (): IbFilterDef => {\n if (\n this.slider.value.min === this.min &&\n this.slider.value.max === this.max\n ) {\n return none();\n }\n\n return and([gte(this.slider.value.min), lte(this.slider.value.max)]);\n };\n\n toQuery(): IbNumberQuery {\n return {\n min: this.slider.value.min,\n max: this.slider.value.max,\n };\n }\n}\n","<ib-filter-button [attr.data-cy]=\"'ib-number-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{\n \"shared.ibFilter.label.number\"\n | translate : displayLabelParams\n | lowercase\n }}\n </span>\n\n <section style=\"padding: 0 1em\">\n <section class=\"ib-number-filter\" [formGroup]=\"slider\">\n <section style=\"display: flex\">\n <mat-slider style=\"flex: 1\" [max]=\"max\" [min]=\"min\" [step]=\"step\">\n <input\n matSliderStartThumb\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n />\n <input\n matSliderEndThumb\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n />\n </mat-slider>\n </section>\n\n <section class=\"ib-number-filter__input-range\">\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.min\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"min\"\n formControlName=\"min\"\n [value]=\"slider.value.min\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-min'\"\n />\n </mat-form-field>\n\n <mat-form-field appearance=\"outline\" style=\"width: 12ch\">\n <mat-label>{{ \"shared.ibFilter.max\" | translate }}</mat-label>\n <input\n matInput\n type=\"number\"\n placeholder=\"max\"\n formControlName=\"max\"\n [value]=\"slider.value.max\"\n [attr.data-cy]=\"'ib-number-filter-' + name + '-max'\"\n />\n </mat-form-field>\n </section>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n","import { Component, Input, booleanAttribute } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { debounceTime } from \"rxjs\";\nimport { IbFilterOperator, IbTextQuery } from \"../../filter.types\";\nimport { contains, none } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n selector: \"ib-search-bar\",\n template: `<mat-form-field\n [formGroup]=\"filter?.form\"\n subscriptSizing=\"dynamic\"\n style=\"width: 100%; padding-bottom: 0\"\n >\n <mat-icon matPrefix>search</mat-icon>\n <input\n matInput\n [formControlName]=\"name\"\n [placeholder]=\"'shared.ibFilter.search' | translate\"\n />\n <button\n *ngIf=\"searchCriteria.value\"\n matSuffix\n mat-icon-button\n (click)=\"clear()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>`,\n providers: [{ provide: IbFilterBase, useExisting: IbSearchBar }],\n})\nexport class IbSearchBar extends IbFilterBase {\n name = \"ibSearchBar\";\n searchCriteria = new FormControl(\"\", { nonNullable: true });\n private debounceTime = 0;\n\n @Input({ transform: booleanAttribute })\n set async(value: boolean) {\n if (value) {\n this.debounceTime = 300;\n } else {\n this.debounceTime = 0;\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.searchCriteria.valueChanges\n .pipe(debounceTime(this.debounceTime))\n .subscribe(() => {\n this.applyFilter();\n });\n }\n\n build = () =>\n this.searchCriteria.value ? contains(this.searchCriteria.value) : none();\n\n toQuery(): IbTextQuery {\n if (!this.searchCriteria.value) {\n return;\n }\n\n return {\n regex: `.*${this.searchCriteria.value}.*`,\n like: `%${this.searchCriteria.value}%`,\n condition: IbFilterOperator.CONTAINS,\n text: this.searchCriteria.value,\n };\n }\n}\n","import { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { IbFilterDef, IbTagQuery } from \"../../filter.types\";\nimport { eq, none, or } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n selector: \"ib-tag-filter\",\n templateUrl: \"./filter-tag.component.html\",\n styleUrls: [\"./filter-tag.component.scss\"],\n providers: [{ provide: IbFilterBase, useExisting: IbTagFilter }],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IbTagFilter extends IbFilterBase {\n searchCriteria = new FormControl([], { nonNullable: true });\n\n @Input() multiple = true;\n @Input()\n set options(value: string[]) {\n this.isSetByUser = true;\n this.setOptions(value);\n }\n get options() {\n return Array.from(this._options);\n }\n private _options: Set<string> = new Set();\n private isSetByUser = false;\n\n hasNullishValues = false;\n query = new FormControl(\"\", { nonNullable: true });\n\n get displayLabel() {\n if (this.rawValue?.length == 1) {\n if (this.rawValue[0] === \"__empty\") {\n return \"shared.ibFilter.label.tag.empty\";\n }\n return \"shared.ibFilter.label.tag.singleItem\";\n }\n\n if (this.rawValue?.length > 1) {\n return \"shared.ibFilter.label.tag.multipleItems\";\n }\n\n return \"\";\n }\n\n get displayLabelParams() {\n return {\n item: this.displayValue,\n length: this.rawValue?.length - 1,\n };\n }\n\n get displayValue() {\n if (!Array.isArray(this.rawValue)) {\n return \"\";\n }\n return this.rawValue[0] === \"__empty\" ? this.rawValue[1] : this.rawValue[0];\n }\n\n initializeFromColumn(data: any[]) {\n if (!this.isSetByUser) {\n this.setOptions(data.map((x) => x[this.name]));\n }\n }\n\n private setOptions(options: string[]) {\n this.hasNullishValues = options.some((a) => !a);\n this._options = new Set(\n options\n .map((a) => a)\n .filter((a) => a)\n .sort((a, b) => (a.toLowerCase() > b.toLowerCase() ? 1 : -1))\n );\n }\n\n applyFilter() {\n this.filter.update();\n this.button.closeMenu();\n this.query.setValue(\"\");\n }\n\n revertFilter(): void {\n this.query.setValue(\"\");\n super.revertFilter();\n }\n\n build = (): IbFilterDef => {\n if (!this.searchCriteria?.value.length) {\n return none();\n }\n\n let items = this.searchCriteria.value\n .filter((s) => s != \"__empty\")\n .map((s) => eq(s));\n\n if (this.searchCriteria.value.includes(\"__empty\")) {\n items = [...items, eq(null), eq(undefined), eq(\"\")];\n }\n\n return or(items);\n };\n\n toQuery(): IbTagQuery {\n const items = this.searchCriteria?.value\n ? this.searchCriteria?.value.filter((s) => s != \"__empty\").map((s) => s)\n : [];\n return {\n items,\n joined: items.join(\",\"),\n };\n }\n}\n","<ib-filter-button [attr.data-cy]=\"'ib-tag-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value>\n {{ displayLabel | translate : displayLabelParams }}\n </span>\n\n <mat-form-field class=\"ib-tag-filter-search\" subscriptSizing=\"dynamic\">\n <input matInput [formControl]=\"query\" [placeholder]=\"'shared.ibFilter.search' | translate\"/>\n </mat-form-field>\n <section [formGroup]=\"filter?.form\">\n <section class=\"ib-tag-filter\">\n <mat-selection-list\n [multiple]=\"multiple\"\n [formControlName]=\"name\"\n disableRipple=\"true\"\n [attr.data-cy]=\"'ib-tag-filter-' + name + '-options'\"\n >\n @if (hasNullishValues) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"'__empty'\"\n >\n {{ 'shared.ibFilter.includeEmpty' | translate }}\n </mat-list-option>\n }\n @for (option of options | filterBy: query.value; track option) {\n <mat-list-option\n togglePosition=\"before\"\n [value]=\"option\"\n >\n {{ option }}\n </mat-list-option>\n } @empty {\n <mat-list-item disabled>{{ 'shared.ibFilter.noItems' | translate }}</mat-list-item>\n }\n </mat-selection-list>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>\n","import { Component } from \"@angular/core\";\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { IbFilterDef, IbFilterOperator, IbTextQuery } from \"../../filter.types\";\nimport { none } from \"../../filters\";\nimport { IbFilterBase } from \"../base/filter-base\";\n\n@Component({\n selector: \"ib-text-filter\",\n templateUrl: \"filter-text.component.html\",\n providers: [{ provide: IbFilterBase, useExisting: IbTextFilter }],\n})\nexport class IbTextFilter extends IbFilterBase {\n searchCriteria = new FormGroup({\n operator: new FormControl<IbFilterOperator>(IbFilterOperator.CONTAINS, {\n validators: [Validators.required],\n nonNullable: true,\n }),\n value: new FormControl(null, { nonNullable: true }),\n });\n\n operators = [\n {\n value: IbFilterOperator.EQUALS,\n displayValue: \"shared.ibFilter.eq\",\n },\n {\n value: IbFilterOperator.CONTAINS,\n displayValue: \"shared.ibFilter.contains\",\n },\n {\n value: IbFilterOperator.STARTS_WITH,\n displayValue: \"shared.ibFilter.startsWith\",\n },\n {\n value: IbFilterOperator.ENDS_WITH,\n displayValue: \"shared.ibFilter.endsWith\",\n },\n ];\n\n get displayCondition() {\n const operator = this.rawValue.operator;\n return this.operators.find((o) => o.value === operator)?.displayValue;\n }\n\n get displayValue() {\n return this.rawValue.value;\n }\n\n clear(): void {\n this.searchCriteria.setValue({\n operator: IbFilterOperator.CONTAINS,\n value: \"\",\n });\n this.filter?.update();\n }\n\n build(): IbFilterDef {\n if (!this.searchCriteria.value.value) {\n return none();\n }\n\n return {\n operator: this.searchCriteria.value.operator,\n value: this.searchCriteria.value.value,\n };\n }\n\n toQuery(): IbTextQuery {\n const text = this.searchCriteria.value.value;\n if (!text) {\n return;\n }\n\n let regex: string, like: string;\n const condition = this.searchCriteria.value.operator;\n if (condition == IbFilterOperator.CONTAINS) {\n regex = `.*${text}.*`;\n like = `%${text}%`;\n }\n\n if (condition == IbFilterOperator.STARTS_WITH) {\n regex = `^${text}.*`;\n like = `${text}%`;\n }\n\n if (condition == IbFilterOperator.ENDS_WITH) {\n regex = `.*${text}$`;\n like = `%${text}`;\n }\n\n if (condition == IbFilterOperator.EQUALS) {\n regex = `^${text}$`;\n like = text;\n }\n\n return { regex, like, condition, text };\n }\n}\n","<ib-filter-button [attr.data-cy]=\"'ib-text-filter-' + name\">\n <span ib-filter-name><ng-content></ng-content></span>\n <span ib-filter-value *ngIf=\"isDirty\">\n {{ displayCondition | translate | lowercase }} \"{{ displayValue }}\"\n </span>\n\n <section [formGroup]=\"filter?.form\" style=\"padding: 0.5em 1em 0 1em\">\n <section [formGroupName]=\"name\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.condition\" | translate }}</mat-label>\n <mat-select formControlName=\"operator\" [attr.data-cy]=\"'ib-text-filter-' + name + '-condition'\">\n <mat-option *ngFor=\"let operator of operators\" [value]=\"operator.value\">\n {{ operator.displayValue | translate }}\n </mat-option>\n </mat-select>\n <mat-error>{{ \"shared.ibFilter.condition\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field style=\"width: 100%\">\n <mat-label>{{ \"shared.ibFilter.value\" | translate }}</mat-label>\n <input matInput formControlName=\"value\" [attr.data-cy]=\"'ib-text-filter-' + name + '-value'\" />\n <mat-error>{{ \"shared.ibFilter.value\" | translate }}\n {{ \"shared.ibKaiFilter.required\" | translate }}</mat-error>\n </mat-form-field>\n </section>\n </section>\n\n <ib-filter-action-group>\n <button mat-button (click)=\"clear()\" [disabled]=\"!isDirty\" [attr.data-cy]=\"'ib-filter-clear'\">\n {{ \"shared.ibFilter.clear\" | translate }}\n </button>\n <button mat-button color=\"primary\" (click)=\"applyFilter()\" [attr.data-cy]=\"'ib-filter-update'\">\n {{ \"shared.ibFilter.update\" | translate }}\n </button>\n </ib-filter-action-group>\n</ib-filter-button>","import { Platform } from \"@angular/cdk/platform\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatChipsModule } from \"@angular/material/chips\";\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n} from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatSliderModule } from \"@angular/material/slider\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { IbFilterPipe } from \"../../core\";\nimport { IbTableActionModule } from \"../kai-table/action\";\nimport { IbMatDateAdapter } from \"../material-forms/intl/datepicker.intl\";\nimport { ibMatDatepickerTranslate } from \"../material-forms/material-form.module\";\nimport { IbFilterActionGroup } from \"./filter-button/filter-action-group.component\";\nimport { IbFilterButton } from \"./filter-button/filter-button.component\";\nimport { IbFilter } from \"./filter.component\";\nimport { IbFilterBase } from \"./filters/base/filter-base\";\nimport { IbBooleanFilter } from \"./filters/boolean/boolean-filter.component\";\nimport { IbDateFilter } from \"./filters/date/filter-date.component\";\nimport { IbNumberFilter } from \"./filters/number/filter-number.component\";\nimport { IbSearchBar } from \"./filters/search-bar/search-bar.component\";\nimport { IbTagFilter } from \"./filters/tag/filter-tag.component\";\nimport { IbTextFilter } from \"./filters/text/filter-text.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n PortalModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatSelectModule,\n MatChipsModule,\n MatFormFieldModule,\n MatDividerModule,\n MatListModule,\n MatSliderModule,\n MatRadioModule,\n MatDatepickerModule,\n IbTableActionModule,\n MatTooltipModule,\n TranslateModule.forChild({\n extend: true,\n }),\n IbFilterPipe,\n IbFilterButton,\n IbFilterActionGroup,\n IbBooleanFilter,\n ],\n exports: [\n IbFilter,\n IbFilterBase,\n IbFilterButton,\n IbTextFilter,\n IbTagFilter,\n IbNumberFilter,\n IbDateFilter,\n IbSearchBar,\n IbBooleanFilter,\n IbFilterActionGroup,\n ],\n declarations: [\n IbFilter,\n IbFilterBase,\n IbTextFilter,\n IbTagFilter,\n IbNumberFilter,\n IbDateFilter,\n IbSearchBar,\n ],\n providers: [\n {\n provide: DateAdapter,\n useClass: IbMatDateAdapter,\n deps: [MAT_DATE_LOCALE, Platform],\n },\n {\n provide: MAT_DATE_FORMATS,\n deps: [TranslateService],\n useFactory: ibMatDatepickerTranslate,\n },\n ],\n})\nexport class IbFilterModule {}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Component({\n selector: \"ib-default-table-view\",\n templateUrl: \"default-table-view.component.html\",\n})\nexport class IbDefaultTableView {\n @Input() selected: boolean = false;\n @Output() ibChangeView = new EventEmitter();\n}\n","<button *ngIf=\"!selected\" mat-button (click)=\"ibChangeView.emit()\">\n {{ \"shared.ibTableView.defaultView\" | translate }}\n</button>\n\n<button *ngIf=\"selected\" mat-flat-button color=\"primary\">\n {{ \"shared.ibTableView.defaultView\" | translate }}\n</button>\n","import { createActionGroup, props } from \"@ngrx/store\";\nimport { ITableViewData, IView } from \"./views/table-view\";\n\nexport const TableViewActions = createActionGroup({\n source: \"TableView\",\n events: {\n \"Add View\": props<{\n view: IView;\n }>(),\n \"Save View\": props<{ id: string; data: ITableViewData }>(),\n \"Rename View\": props<{ id: string; name: string }>(),\n \"Delete View\": props<{ id: string }>()\n },\n});\n","import { createReducer, on } from \"@ngrx/store\";\nimport { TableViewActions } from \"../actions\";\nimport { IView } from \"./table-view\";\n\nexport const initialState: ReadonlyArray<IView> = [];\n\nexport const viewsReducer = createReducer(\n initialState,\n on(TableViewActions.addView, (state, { view }) => [...state, view]),\n\n on(TableViewActions.deleteView, (state, { id }) =>\n state.filter((view) => view.id !== id)\n ),\n\n on(TableViewActions.renameView, (state, { id, name }) => {\n const view = structuredClone(state.find((v) => v.id === id));\n if (!view) {\n return state;\n }\n\n view.name = name;\n return [...state.filter((v) => v.id !== id), view];\n }),\n\n on(TableViewActions.saveView, (state, { id, data }) => {\n const view = structuredClone(state.find((v) => v.id === id));\n if (!view) {\n return state;\n }\n view.data = data;\n return [...state.filter((v) => v.id !== id), view];\n })\n);\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { IViewState } from \"../reducer\";\nimport { IView } from \"./table-view\";\n\nexport const selectViewsFeature = createFeatureSelector(\"ibViews\");\nexport const selectViews = createSelector(\n selectViewsFeature,\n (state: IViewState) => state.views\n);\n\nexport const selectTableViews = (tableName: string) =>\n createSelector(selectViews, (views: IView[]) =>\n views.filter((v) => v.groupName === tableName).sort((a, b) => a.name.localeCompare(b.name))\n );\n","import { Sort } from \"@angular/material/sort\";\nimport { IbFilterSyntaxExtended } from \"../../../kai-filter\";\n\nexport interface IView {\n id: string;\n name: string;\n groupName: string;\n data: ITableViewData;\n initial?: boolean;\n}\n\nexport interface ITableViewData {\n filter: IbFilterSyntaxExtended;\n pageSize: number;\n aggregatedColumns: Record<string, string>;\n sort: Sort;\n}\n\nexport class IbView implements IView {\n id: string;\n name: string;\n groupName: string;\n data: ITableViewData;\n\n constructor(view: Partial<IView>) {\n this.id = view?.id ?? btoa(Math.random().toString());\n this.name = view?.name;\n this.groupName = view?.groupName;\n this.data = view?.data;\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { Injectable, inject } from '@angular/core';\nimport { IbFilterSyntaxExtended } from '../kai-filter/filter.types';\nimport { Sort } from '@angular/material/sort';\nimport { IbKaiTableParams } from './store/url-state/interfaces';\n\n\n@Injectable({providedIn: 'root'})\nexport class IbTableUrlService {\n _emptyFilterSchema: Record<string, IbFilterSyntaxExtended> = {};\n\n get emptyFilterSchema() {\n return this._emptyFilterSchema;\n }\n set emptyFilterSchema(value) {\n this._emptyFilterSchema = value;\n }\n\n router = inject(Router);\n activatedRoute = inject(ActivatedRoute);\n constructor() { }\n\n getRawParams(tableName: string): IbTableQsParams {\n return JSON.parse(this.activatedRoute.snapshot.queryParams?.[tableName]\n ?? `{\"ibfilter\": ${JSON.stringify(this.emptyFilterSchema[tableName] ?? {})}, \"ibview\": \"__ibTableView__all\", \"ibpage\": 0, \"ibpagesize\": 10, \"ibaggregatedcolumns\": {}, \"ibsort\": {} }`) ?? {};\n }\n\n\n getFilters(tableName: string): IbFilterSyntaxExtended {\n return this.getRawParams(tableName).ibfilter ?? {};\n }\n\n setFilters(tableName: string, params: IbFilterSyntaxExtended) {\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibfilter: params\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n\n getActiveView(tableName: string,) : string{\n return this.getRawParams(tableName).ibview ?? '__ibTableView__all';\n }\n\n setPaginator(tableName: string, params: {pageIndex: number, pageSize: number}) {\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibpage: params.pageIndex,\n ibpagesize: params.pageSize,\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n\n getPaginator(tableName: string) : {pageIndex: number, pageSize: number}{\n return {\n pageIndex: this.getRawParams(tableName).ibpage ?? 0,\n pageSize: this.getRawParams(tableName).ibpagesize ?? 0,\n }\n }\n\n setAggregatedColumns(tableName: string,params: Record<string, string>) {\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibaggregatedcolumns: params\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n\n getAggregatedColumns(tableName: string) {\n return this.getRawParams(tableName).ibaggregatedcolumns ?? {};\n }\n\n setSort(tableName: string,params: Sort) {\n const ibsort = params.direction !== '' ? params : null\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibsort\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n\n getSort(tableName: string) : Sort{\n return this.getRawParams(tableName).ibsort ?? {active: '', direction: ''};\n }\n\n handleViewChange(tableName: string,params: Omit<IbKaiTableParams, 'tableName'> & {view: string}) {\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibview: params.view,\n ibpage: params.page,\n ibpagesize: params.pageSize,\n ibfilter: params.filters,\n ibaggregatedcolumns: params.aggregatedColumns,\n ibsort: params.sort,\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n\n\n getViewState(tableName: string) {\n return {\n view: this.getActiveView(tableName),\n pageSize: this.getPaginator(tableName).pageSize,\n page: this.getPaginator(tableName).pageIndex,\n filters: this.getFilters(tableName),\n aggregatedColumns: this.getAggregatedColumns(tableName),\n sort: this.getSort(tableName)\n }\n }\n\n setFilterAndSort(tableName: string, ibfilter: IbFilterSyntaxExtended, sort: Sort) {\n const ibsort = sort.direction !== '' ? sort : null\n this.router.navigate([], {\n queryParams: {\n [tableName]: JSON.stringify({\n ...this.getRawParams(tableName),\n ibfilter,\n ibsort\n })\n },\n queryParamsHandling: 'merge',\n });\n }\n}\n\n\nexport type IbTableQsParams = {\n ibpage: number;\n ibpagesize: number;\n ibfilter: IbFilterSyntaxExtended;\n ibaggregatedcolumns: Record<string, string>;\n ibsort: Sort;\n ibview: string;\n}\n","import { Component, Inject } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { MAT_DIALOG_DATA } from \"@angular/material/dialog\";\n\nexport interface IbTableViewDialogData {\n title: string;\n message?: {\n label: string;\n args?: any;\n };\n confirm: string;\n color?: string;\n\n viewName?: string;\n hideInput?: boolean;\n\n hideCancel?: boolean;\n hasNo?: boolean;\n}\n\n@Component({\n selector: \"ib-table-view-dialog\",\n template: `\n <h2 mat-dialog-title>{{ data?.title | translate }}</h2>\n\n <mat-dialog-content>\n <p\n *ngIf=\"data?.hideInput\"\n translate\n [translateParams]=\"data?.message?.args\"\n >\n {{ data?.message?.label }}\n </p>\n\n <mat-form-field style=\"width: 100%;\" *ngIf=\"!data?.hideInput\">\n <mat-label>{{ \"shared.ibTableView.viewName\" | translate }}</mat-label>\n <input [formControl]=\"viewName\" matInput maxlength=\"40\" />\n <mat-hint align=\"end\">{{ viewName.value.length }}/40</mat-hint>\n </mat-form-field>\n </mat-dialog-content>\n\n <div mat-dialog-actions style=\"justify-content: flex-end\">\n <button *ngIf=\"!data?.hideCancel\" mat-button mat-dialog-close>\n {{ \"shared.ibTableView.cancel\" | translate }}\n </button>\n <button *ngIf=\"data?.hasNo\" mat-button [mat-dialog-close]=\"{\n confirmed: false\n }\">{{ \"shared.ibTableView.no\" | translate }}</button>\n <button\n mat-button\n [disabled]=\"!data?.hideInput ? viewName.value.length === 0 : false\"\n [color]=\"data?.color ?? 'primary'\"\n [mat-dialog-close]=\"{\n name: viewName.value,\n confirmed: true\n }\"\n >\n {{ data?.confirm | translate }}\n </button>\n </div>\n `,\n})\nexport class IbTableViewDialog {\n viewName = new FormControl(\"\");\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: IbTableViewDialogData) {\n if (data?.viewName) {\n this.viewName.setValue(data?.viewName.substring(0, 40));\n }\n }\n}\n","export const toastServiceStub = {\n open: () => {}\n}\n","import { NgModule } from '@angular/core';\nimport { IbToastNotification } from './toast.service';\nimport { toastServiceStub } from './toast.service.stub.spec';\n\n\n@NgModule({\n imports: [\n ],\n exports: [],\n declarations: [\n ],\n providers: [\n { provide: IbToastNotification, useValue: toastServiceStub}\n ],\n})\nexport class IbToastTestModule { }\n","import { Injectable } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { Store } from \"@ngrx/store\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { of } from \"rxjs\";\nimport { skipWhile, switchMap } from \"rxjs/operators\";\nimport { IbToastNotification } from \"../toast\";\nimport {\n IbTableViewDialog,\n IbTableViewDialogData,\n} from \"./components/view-dialog/view-dialog.component\";\nimport { TableViewActions } from \"./store/actions\";\nimport { IView, IbView } from \"./store/views/table-view\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbViewService {\n constructor(\n private store: Store,\n private dialog: MatDialog,\n private translate: TranslateService,\n private toast: IbToastNotification\n ) {}\n\n addView(viewDef: Partial<IView>) {\n const view = new IbView(viewDef);\n this.store.dispatch(TableViewActions.addView({ view }));\n this.toast.open(\"shared.ibTableView.view.added\");\n return view;\n }\n\n duplicateView(viewDef: Partial<IView>) {\n const view = new IbView(viewDef);\n this.store.dispatch(TableViewActions.addView({ view }));\n this.toast.open(\"shared.ibTableView.view.duplicated\");\n return view;\n }\n\n saveView(view: IView, data: any) {\n this.store.dispatch(\n TableViewActions.saveView({\n id: view.id,\n data,\n })\n );\n this.toast.open(\"shared.ibTableView.view.saved\");\n return { ...view, data };\n }\n\n deleteView(view: IView) {\n this.store.dispatch(\n TableViewActions.deleteView({\n id: view.id,\n })\n );\n\n this.toast.open(\"shared.ibTableView.view.removed\");\n }\n\n renameView(view: IView, name: string) {\n this.store.dispatch(\n TableViewActions.renameView({\n id: view.id,\n name,\n })\n );\n\n this.toast.open(\"shared.ibTableView.view.renamed\");\n return { ...view, name };\n }\n\n openDialog(data: IbTableViewDialogData) {\n return this.dialog.open(IbTableViewDialog, {\n width: \"480px\",\n data,\n });\n }\n\n openAddViewDialog() {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.addTitle\",\n confirm: \"shared.ibTableView.add\",\n });\n\n return dialog.afterClosed().pipe(skipWhile((result) => !result));\n }\n\n openDeleteViewDialog(view: IView) {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.removeTitle\",\n confirm: \"shared.ibTableView.remove\",\n message: {\n label: \"shared.ibTableView.removeMessage\",\n args: { viewName: view.name },\n },\n hideInput: true,\n color: \"warn\",\n });\n\n return dialog.afterClosed().pipe(skipWhile((result) => !result));\n }\n\n openRenameViewDialog(view: IView) {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.renameTitle\",\n confirm: \"shared.ibTableView.rename\",\n viewName: view.name,\n });\n\n return dialog.afterClosed().pipe(skipWhile((result) => !result));\n }\n\n openDuplicateViewDialog(currentView: IView) {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.duplicateTitle\",\n confirm: \"shared.ibTableView.add\",\n viewName: this.translate.instant(\n \"shared.ibTableView.duplicatePlaceholder\",\n {\n viewName: currentView.name,\n }\n ),\n });\n\n return dialog.afterClosed().pipe(skipWhile((result) => !result));\n }\n\n openSaveChangesDialog(currentView: IView) {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.unsavedTitle\",\n confirm: \"shared.ibTableView.save\",\n message: {\n label: \"shared.ibTableView.unsavedView\",\n args: {\n viewName: currentView.name,\n },\n },\n hideInput: true,\n hideCancel: true,\n hasNo: true,\n });\n\n return dialog.afterClosed().pipe(skipWhile((result) => !result));\n }\n\n openSaveAsDialog() {\n const dialog = this.openDialog({\n title: \"shared.ibTableView.unsavedTitle\",\n confirm: \"shared.ibTableView.save\",\n message: {\n label: \"shared.ibTableView.unsavedUnnamedView\",\n },\n hideInput: true,\n hideCancel: true,\n hasNo: true,\n });\n\n return dialog.afterClosed().pipe(\n skipWhile((result) => !result),\n switchMap((result) =>\n result.confirmed ? this.openAddViewDialog() : of(result)\n )\n );\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { IView } from \"../../store/views/table-view\";\n\n@Component({\n selector: \"ib-table-view\",\n templateUrl: \"./table-view.component.html\",\n})\nexport class IbTableView {\n @Input() view: Readonly<IView>;\n @Input() selected: boolean = false;\n @Input() dirty: boolean = false;\n @Output() ibRemoveView = new EventEmitter<IView>();\n @Output() ibRenameView = new EventEmitter<IView>();\n @Output() ibDuplicateView = new EventEmitter<IView>();\n @Output() ibChangeView = new EventEmitter<IView>();\n}\n","<button *ngIf=\"!selected\" mat-button (click)=\"ibChangeView.emit(view)\">\n {{ view.name }}\n</button>\n\n<button\n *ngIf=\"selected\"\n mat-flat-button\n [matMenuTriggerFor]=\"menu\"\n>\n {{ view.name }} {{ dirty ? \"*\" : \"\" }}\n <mat-icon iconPositionEnd>keyboard_arrow_down</mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"ibRenameView.emit(view)\">\n <mat-icon>drive_file_rename_outline</mat-icon>\n {{ \"shared.ibTableView.rename\" | translate }}\n </button>\n <button mat-menu-item (click)=\"ibDuplicateView.emit(view)\">\n <mat-icon>content_copy</mat-icon>\n {{ \"shared.ibTableView.duplicate\" | translate }}\n </button>\n\n <button mat-menu-item (click)=\"ibRemoveView.emit(view)\">\n <mat-icon color=\"warn\">delete_forever</mat-icon>\n {{ \"shared.ibTableView.remove\" | translate }}\n </button>\n</mat-menu>\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { IView } from \"../../store/views/table-view\";\n\n@Component({\n selector: \"ib-view-list\",\n templateUrl: \"./view-list.component.html\",\n styleUrls: [\"./view-list.component.scss\"],\n})\nexport class IbViewList {\n @Input() defaultView: IView;\n @Input() activeView: IView;\n @Input() views: IView[];\n @Input() dirty: boolean = false;\n\n @Output() ibAddView = new EventEmitter();\n @Output() ibRemoveView = new EventEmitter<IView>();\n @Output() ibRenameView = new EventEmitter<IView>();\n @Output() ibDuplicateView = new EventEmitter<IView>();\n @Output() ibChangeView = new EventEmitter<IView>();\n}\n","<ib-default-table-view\n [selected]=\"activeView?.id === defaultView.id\"\n (ibChangeView)=\"ibChangeView.emit(defaultView)\"\n></ib-default-table-view>\n<ib-table-view\n *ngFor=\"let view of views\"\n [view]=\"view\"\n [selected]=\"activeView?.id === view.id\"\n [dirty]=\"dirty\"\n (ibChangeView)=\"ibChangeView.emit($event)\"\n (ibRemoveView)=\"ibRemoveView.emit($event)\"\n (ibRenameView)=\"ibRenameView.emit($event)\"\n (ibDuplicateView)=\"ibDuplicateView.emit($event)\"\n></ib-table-view>\n\n<button mat-icon-button (click)=\"ibAddView.emit()\">\n <mat-icon>add</mat-icon>\n</button>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChildren,\n inject,\n} from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { takeUntil, tap } from \"rxjs/operators\";\nimport { IbKaiTableAction } from \"../../../kai-table/action\";\nimport { ITableViewData, IView, selectTableViews } from \"../../store/views\";\nimport { IbViewService } from \"../../view.service\";\nimport { IbTableUrlService } from \"../../../kai-table/table-url.service\";\n\n@Component({\n selector: \"ib-view-group, ib-table-view-group\",\n templateUrl: \"table-view-group.component.html\",\n styleUrls: [\"table-view-group.component.scss\"],\n})\nexport class IbTableViewGroup implements OnDestroy {\n @ViewChildren(IbKaiTableAction) actions: QueryList<IbKaiTableAction>;\n\n private _destroyed = new Subject<void>();\n tableUrl = inject(IbTableUrlService);\n\n get defaultView(): IView{\n return {\n id: \"__ibTableView__all\",\n name: \"\",\n groupName: \"\",\n data: {\n filter: this.tableUrl.emptyFilterSchema[this.viewGroupName],\n pageSize: 10,\n aggregatedColumns: {},\n sort: {\n active: \"\",\n direction: \"\",\n }\n },\n }\n };\n\n _activeView = new BehaviorSubject<IView>({\n ...this.defaultView,\n initial: true\n });\n get activeView() {\n return {\n ...this._activeView.value,\n initial: false\n };\n }\n\n\n @Input() viewDataAccessor: () => ITableViewData = () => structuredClone(this.defaultView.data);\n\n @Output() ibViewChanged = new EventEmitter<IView>();\n @Output() ibResetView = new EventEmitter();\n\n @Input() set viewGroupName(name) {\n this._viewGroupName = name;\n const activeView = this.tableUrl.getActiveView(name);\n this.views$ = this.store.select(selectTableViews(this._viewGroupName)).pipe(\n tap((views) => {\n if (activeView) {\n let view = views.find((v) => v.id === activeView);\n if (!view) {\n view = this.defaultView;\n }\n this._activeView.next({\n ...view,\n initial: true,\n });\n }\n })\n );\n }\n get viewGroupName() {\n return this._viewGroupName;\n }\n private _viewGroupName: string;\n\n dirty = false;\n views$: Observable<IView[]>;\n\n constructor(private store: Store, public viewService: IbViewService) {}\n\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n\n checkViewDataChanges(): boolean {\n const current = this.viewDataAccessor();\n if (current === undefined) {\n return false;\n }\n\n // FIXME: this check is really bad, we should use a deep comparison and schema initializer must be done in a better way\n if(JSON.stringify(this.activeView.data.filter) == '{}'){\n this.activeView.data.filter = structuredClone(this.tableUrl.emptyFilterSchema[this.viewGroupName])\n }\n\n\n return JSON.stringify(current) != JSON.stringify(this.activeView.data);\n }\n\n handleStateChanges(changes$: Observable<unknown>) {\n changes$\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => (this.dirty = this.checkViewDataChanges()));\n }\n\n handleAddView(data = this.defaultView.data) {\n this.viewService.openAddViewDialog().subscribe(({ name }) => {\n const view = this.viewService.addView({\n name,\n groupName: this.viewGroupName,\n data,\n });\n this._activeView.next(view);\n });\n }\n\n handleRemoveView(view: IView) {\n this.viewService.openDeleteViewDialog(view).subscribe(() => {\n this.viewService.deleteView(view);\n this._activeView.next(this.defaultView);\n });\n }\n\n handleRenameView(view: IView) {\n this.viewService.openRenameViewDialog(view).subscribe(({ name }) => {\n this._activeView.next(this.viewService.renameView(view, name));\n });\n }\n\n handleDuplicateView(view: IView) {\n this.viewService.openDuplicateViewDialog(view).subscribe(({ name }) => {\n const nextView = this.viewService.duplicateView({\n name,\n groupName: view.groupName,\n data: this.viewDataAccessor(),\n });\n this._activeView.next(nextView);\n });\n }\n\n handleSaveView() {\n if (this.activeView.id === this.defaultView.id) {\n this.handleAddView(this.viewDataAccessor());\n return;\n }\n\n const view = this.viewService.saveView(\n this.activeView,\n this.viewDataAccessor()\n );\n this._activeView.next(view);\n }\n\n handleChangeView(view: IView) {\n if (!this.dirty) {\n this._activeView.next(view);\n return;\n }\n\n if (this.activeView.id === this.defaultView.id) {\n this.viewService.openSaveAsDialog().subscribe((newView) => {\n if (newView.confirmed) {\n this.viewService.addView({\n name: newView.name,\n groupName: this.viewGroupName,\n data: this.viewDataAccessor(),\n });\n }\n this._activeView.next(view);\n });\n return;\n }\n\n this.viewService\n .openSaveChangesDialog(this.activeView)\n .subscribe((result) => {\n if (result.confirmed) {\n this.viewService.saveView(this.activeView, this.viewDataAccessor());\n }\n this._activeView.next(view);\n });\n }\n\n handleDiscardChanges() {\n this._activeView.next(this.activeView);\n }\n}\n","<ib-view-list\n [views]=\"views$ | async\"\n [defaultView]=\"defaultView\"\n [activeView]=\"activeView\"\n [dirty]=\"dirty\"\n (ibAddView)=\"handleAddView()\"\n (ibChangeView)=\"handleChangeView($event)\"\n (ibRemoveView)=\"handleRemoveView($event)\"\n (ibRenameView)=\"handleRenameView($event)\"\n (ibDuplicateView)=\"handleDuplicateView($event)\"\n></ib-view-list>\n\n<button\n *ibTableAction\n mat-icon-button\n [matTooltip]=\"'shared.ibTableView.undo' | translate\"\n (click)=\"handleDiscardChanges()\"\n [disabled]=\"!dirty\"\n>\n <mat-icon>undo</mat-icon>\n</button>\n\n<button\n *ibTableAction\n mat-icon-button\n [matTooltip]=\"'shared.ibTableView.save' | translate\"\n (click)=\"handleSaveView()\"\n [disabled]=\"!dirty\"\n>\n <mat-icon>save</mat-icon>\n</button>\n","import { viewsReducer } from \"./views/reducer\";\nimport { IView } from \"./views/table-view\";\n\nexport interface IViewState {\n views: IView[];\n}\n\nexport const reducers = {\n views: viewsReducer,\n};\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { StoreModule } from \"@ngrx/store\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IbDefaultTableView } from \"./components/default-table-view/default-table-view.component\";\nimport { IbTableViewGroup } from \"./components/table-view-group/table-view-group.component\";\nimport { IbTableView } from \"./components/table-view/table-view.component\";\nimport { IbTableViewDialog } from \"./components/view-dialog/view-dialog.component\";\nimport { IbViewList } from \"./components/view-list/view-list.component\";\nimport { reducers } from \"./store/reducer\";\nimport { IbViewService } from \"./view.service\";\nimport { IbTableActionModule } from \"../kai-table/action\";\n\n@NgModule({\n declarations: [\n IbTableViewGroup,\n IbTableView,\n IbDefaultTableView,\n IbTableViewDialog,\n IbViewList\n ],\n exports: [\n IbTableViewGroup,\n IbTableView,\n IbDefaultTableView,\n IbTableViewDialog,\n IbViewList,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatIconModule,\n MatMenuModule,\n MatInputModule,\n MatButtonModule,\n MatDialogModule,\n MatTooltipModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n IbTableActionModule,\n StoreModule.forFeature(\"ibViews\", reducers),\n TranslateModule.forChild({\n extend: true,\n }),\n ],\n providers: [IbViewService],\n})\nexport class IbViewModule {}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from \"@angular/animations\";\nimport { Portal, TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Component,\n ContentChild,\n ContentChildren,\n HostBinding,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from \"@angular/core\";\nimport { MatPaginator } from \"@angular/material/paginator\";\nimport { MatSort } from \"@angular/material/sort\";\nimport { MatTable } from \"@angular/material/table\";\nimport { Subject} from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { IbTableDataExportAction } from \"../data-export/table-data-export.component\";\nimport { IbFilter } from \"../kai-filter\";\nimport { IbTableViewGroup } from \"../views\";\nimport { IbColumn } from \"./columns/column\";\nimport { IbSelectionColumn } from \"./columns/selection-column\";\nimport { IbTableRemoteDataSource } from \"./remote-data-source\";\nimport { IbKaiRowGroupDirective } from \"./rowgroup\";\nimport { IbTableDataSource } from \"./table-data-source\";\nimport { IbKaiTableState, IbTableDef } from \"./table.types\";\nimport { IB_TABLE } from \"./tokens\";\nimport { IbTableUrlService } from \"./table-url.service\";\nimport { Store } from \"@ngrx/store\";\nimport { urlStateActions } from \"./store/url-state/actions\";\n\nconst defaultTableDef: IbTableDef = {\n paginator: {\n pageSizeOptions: [5, 10, 25, 100],\n showFirstLastButtons: true,\n pageSize: 10,\n },\n};\n\n@Component({\n selector: \"ib-kai-table\",\n templateUrl: \"./table.component.html\",\n styleUrls: [\"./table.component.scss\"],\n host: {\n class: \"ib-table__container\",\n },\n animations: [\n trigger(\"detailExpand\", [\n state(\"collapsed\", style({ height: \"0px\", minHeight: \"0\" })),\n state(\"expanded\", style({ height: \"*\" })),\n transition(\n \"expanded <=> collapsed\",\n animate(\"225ms cubic-bezier(0.4, 0.0, 0.2, 1)\")\n ),\n ]),\n ],\n providers: [{ provide: IB_TABLE, useExisting: IbTable }],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IbTable implements OnDestroy {\n private _destroyed = new Subject<void>();\n\n @ContentChildren(IbColumn) columns: QueryList<IbColumn<any>>;\n @ContentChild(IbSelectionColumn) selectionColumn!: IbSelectionColumn;\n @ContentChild(IbKaiRowGroupDirective) rowGroup!: IbKaiRowGroupDirective;\n\n @ContentChild(IbFilter) filter!: IbFilter;\n @ContentChild(IbTableViewGroup) view!: IbTableViewGroup;\n\n @ContentChild(IbTableDataExportAction) exportAction: IbTableDataExportAction;\n\n @ViewChild(MatTable, { static: true }) matTable: MatTable<any>;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n\n expandedElement: any;\n actionPortals: Portal<any>[] = [];\n\n @Input() state: IbKaiTableState = \"idle\";\n\n @Input()\n set data(data: any[]) {\n this.dataSource.data = data;\n }\n\n @Input()\n dataSource: IbTableDataSource<unknown> = new IbTableDataSource([]);\n\n @Input() tableName: string = btoa(\n window.location.pathname + window.location.hash\n );\n\n tableUrl = inject(IbTableUrlService);\n private store = inject(Store);\n\n /**\n * Configuration for the table and its inner components. Currently supports only\n * `paginator` and `sort` parameters.\n *\n * If left empty, the following default is used\n *\n * ```\n * {\n * paginator : {\n * pageSizeOptions: [5, 10, 25, 100],\n * showFirstLastButtons: true,\n * pageSize: 10,\n * hide: false,\n * }\n * }\n *\n * NB: querystring override these values\n * ```\n */\n @Input()\n set tableDef(value: Partial<IbTableDef>) {\n this._tableDef = {\n ...defaultTableDef,\n ...value,\n };\n }\n get tableDef() {\n return this._tableDef;\n }\n private _tableDef: IbTableDef = {...defaultTableDef};\n\n\n /**\n * Columns to be displayed.\n *\n * The order of the columns present in this array is rendered\n * as is in a language written from left-to-right. It is reversed\n * in a language written from right-to-left.\n */\n @Input()\n set displayedColumns(columns: string[]) {\n this._displayedColumns = columns.map((c) => c);\n if (this.selectionColumn) {\n this._displayedColumns.unshift(\"ib-selection\");\n }\n if (this.columns?.find((c) => c.name === \"ib-action\")) {\n this._displayedColumns.push(\"ib-action\");\n }\n }\n get displayedColumns() {\n return this._displayedColumns;\n }\n private _displayedColumns: string[] = [];\n\n @HostBinding(\"class.ib-table-striped-rows\")\n @Input({ transform: booleanAttribute })\n stripedRows = false;\n\n isRemote = false;\n\n\n ngOnInit() {\n const paginatorFromUrl = this.tableUrl.getPaginator(this.tableName);\n this.tableDef.paginator = {\n ...this.tableDef.paginator,\n ...paginatorFromUrl,\n }\n this.dataSource.tableName = this.tableName;\n this.dataSource.paginator = this.paginator;\n\n\n if (this.dataSource instanceof IbTableRemoteDataSource) {\n this.isRemote = true;\n this.dataSource._state\n .pipe(takeUntil(this._destroyed))\n .subscribe((s) => (this.state = s));\n }\n }\n\n ngAfterViewInit() {\n if (this.exportAction) {\n this.setupExportAction();\n }\n }\n\n ngAfterContentInit() {\n\n const viewInit = () => {\n this.view.viewGroupName = this.tableName;\n this.dataSource.view = this.view;\n this.setupViewGroup();\n }\n\n const dsInit = () => {\n this.dataSource.sort = this.sort;\n this.dataSource.aggregatedColumns = this.tableUrl.getAggregatedColumns(this.tableName);\n this.dataSource.sortState = {\n ...this.tableDef.initialSort,\n ...this.tableUrl.getSort(this.tableName),\n };\n }\n\n\n this.dataSource.selectionColumn = this.selectionColumn;\n this.dataSource.filter = this.filter;\n this.filter?.initialized.subscribe(() => {\n this.tableUrl.emptyFilterSchema[this.tableName] = structuredClone(this.filter.initialRawValue);\n //NG0100\n setTimeout(() => dsInit())\n\n const filtersFromUrl = this.tableUrl.getFilters(this.tableName)\n this.filter.value = filtersFromUrl\n if (this.view) {\n //NG0100\n setTimeout(() => viewInit())\n }\n })\n\n // If there is no filter, we need to set the viewGroupName to the table name\n if (this.view && !this.filter) {\n setTimeout(() => viewInit())\n }\n\n if(!this.filter){\n setTimeout(() => dsInit())\n }\n this.dataSource.columns = this.columns.toArray();\n this.columns.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe((columns) => {\n this.dataSource.columns = columns.toArray();\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n setPaginatorState(params){\n this.store.dispatch(urlStateActions.setPaginator({tableName: this.tableName, params}))\n }\n private setupViewGroup() {\n for (const action of [\n this.filter.hideFilterAction,\n ...this.view.actions.toArray(),\n ]) {\n this.actionPortals.push(\n new TemplatePortal(action.templateRef, action.viewContainerRef)\n );\n }\n }\n\n private setupExportAction() {\n this.exportAction.showSelectedRowsOption = !!this.selectionColumn;\n this.exportAction.showAllRowsOption = !this.isRemote;\n this.exportAction.ibDataExport\n .pipe(takeUntil(this._destroyed))\n .subscribe((settings) => {\n this.exportAction.exportService._exportFromTable(\n this.tableName,\n this.dataSource,\n settings\n );\n });\n }\n}\n","<section class=\"ib-table__toolbar\">\n <ng-content select=\"ib-table-view-group\" />\n <section class=\"ib-table__toolbar__actions\">\n <ng-content select=\"ib-table-action-group, [ib-table-action-group]\" />\n <ng-template *ngFor=\"let portal of actionPortals\" [cdkPortalOutlet]=\"portal\" />\n </section>\n</section>\n\n<ng-content select=\"ib-filter\" />\n\n<section class=\"ib-table__content\" [class.ib-table__content--loading]=\"state === 'loading'\">\n <div class=\"ib-table__content__progress-bar\" *ngIf=\"state === 'loading'\">\n <mat-progress-bar mode=\"indeterminate\" />\n </div>\n\n <table class=\"ib-table\" mat-table matSort multiTemplateDataRows [matSortActive]=\"this.dataSource.sortState.active\"\n [matSortDirection]=\"this.dataSource.sortState.direction\" [dataSource]=\"dataSource\">\n <ng-content select=\"ib-selection-column\" />\n <ng-content />\n\n <ng-container matColumnDef=\"expandedDetail\" *ngIf=\"rowGroup\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"ib-table__cell-detail\" [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\">\n <ng-container *ngTemplateOutlet=\"rowGroup.templateRef; context: {'$implicit': element, 'row': element}\" />\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true;\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" class=\"ib-table__row\"\n [class.ib-table__row--expanded]=\"expandedElement === row\"\n (click)=\"rowGroup && (expandedElement = expandedElement === row ? null : row)\"></tr>\n <ng-container *ngIf=\"rowGroup\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"ib-table__row-group\"\n [class.ib-table__row-group--hidden]=\"expandedElement !== row\"></tr>\n </ng-container>\n\n <tr *matNoDataRow>\n <td [attr.colspan]=\"columns.length\">\n <div>\n <ng-container *ngIf=\"state === 'idle'\">\n <mat-icon style=\"color: #888\">inbox</mat-icon>\n {{ \"common.noItems\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"state === 'http_error'\">\n <mat-icon style=\"color: #888\">error</mat-icon>\n {{ \"common.httpError\" | translate }}\n </ng-container>\n </div>\n </td>\n </tr>\n\n <ng-container *ngIf=\"dataSource.shouldDisplayAggregationFooter\">\n <tr class=\"ib-table__rollup-row\" mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\n </ng-container>\n </table>\n</section>\n<mat-paginator class=\"ib-table__paginator\"\n [disabled]=\"state !== 'idle'\"\n [style.display]=\"tableDef.paginator.hide ? 'none' : 'block'\"\n [pageSize]=\"tableDef.paginator.pageSize\"\n [showFirstLastButtons]=\"tableDef.paginator.showFirstLastButtons\"\n [pageSizeOptions]=\"tableDef.paginator.pageSizeOptions\"\n (page)=\"setPaginatorState({ pageIndex: $event.pageIndex, pageSize: $event.pageSize })\"\n />\n","export const kaiTableFeatureKey = \"ibKaiTable\";\n","\nimport { createReducer, on } from \"@ngrx/store\";\nimport { urlStateActions } from \"./actions\";\nimport { IUrlStateState, IbKaiTableNamedParams } from \"./interfaces\";\n\nconst INITIAL: IUrlStateState = {\n tables: []\n}\n\nexport const urlStateReducer = createReducer(INITIAL,\n on(urlStateActions.setFilters, (stateIn, action) => {\n let state = structuredClone(stateIn);\n const table = getTable(action.tableName, state.tables);\n table.filters = action.params;\n return {\n ...state\n }\n }),\n on(urlStateActions.setPaginator, (stateIn, action) => {\n let state = structuredClone(stateIn);\n const table = getTable(action.tableName, state.tables);\n table.page = action.params.pageIndex;\n table.pageSize = action.params.pageSize;\n return {\n ...state\n }\n }),\n on(urlStateActions.setAggregatedColumns, (stateIn, action) => {\n let state = structuredClone(stateIn);\n const table = getTable(action.tableName, state.tables);\n table.aggregatedColumns = {...action.params}\n return {\n ...state\n }\n }),\n on(urlStateActions.setSort, (stateIn, action) => {\n let state = structuredClone(stateIn);\n const table = getTable(action.tableName, state.tables);\n table.sort = {...action.params};\n return {\n ...state\n }\n }),\n on(urlStateActions.handleViewChange, (stateIn, action) => {\n let state = structuredClone(stateIn);\n const table = getTable(action.tableName, state.tables);\n table.view = action.params.view;\n table.page = action.params.page;\n table.pageSize = action.params.pageSize;\n table.filters = action.params.filters;\n table.aggregatedColumns = action.params.aggregatedColumns;\n table.sort = action.params.sort;\n return {\n ...state\n }\n }),\n);\n\n\n\n\nfunction getTable(tableName: string, state: IbKaiTableNamedParams[]) {\n let table = state.find((table) => table.tableName === tableName);\n if(!table) {\n state.push({ tableName });\n table = state.find((table) => table.tableName === tableName);\n }\n return table;\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { tap } from \"rxjs/operators\";\nimport { urlStateActions } from \"./actions\";\nimport { IbTableUrlService } from \"../../table-url.service\";\n\n@Injectable({providedIn: \"root\"})\nexport class UrlStateEffects {\n\n actions$ = inject(Actions);\n tableUrlService = inject(IbTableUrlService);\n setFilters$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.setFilters),\n tap((action) => this.tableUrlService.setFilters(action.tableName, action.params))\n )\n }, {\n dispatch: false\n });\n\n setPaginator$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.setPaginator),\n tap((action) => this.tableUrlService.setPaginator(action.tableName, action.params))\n )\n }, {\n dispatch: false\n });\n\n setAggregatedColumns$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.setAggregatedColumns),\n tap((action) => this.tableUrlService.setAggregatedColumns(action.tableName, action.params))\n )\n }, {\n dispatch: false\n });\n\n setSort$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.setSort),\n tap((action) => this.tableUrlService.setSort(action.tableName, action.params))\n )\n }, {\n dispatch: false\n });\n\n handleViewChange$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.handleViewChange),\n tap((action) => this.tableUrlService.handleViewChange(action.tableName, action.params))\n )\n }, {\n dispatch: false\n });\n\n setRemoteDatasourceParams$ = createEffect(():any => {\n return this.actions$.pipe(\n ofType(urlStateActions.setRemoteDatasourceParams),\n tap((action) => this.tableUrlService.setFilterAndSort(action.tableName, action.filters, action.sort))\n )\n }, {\n dispatch: false\n });\n}\n","import { ActionReducerMap } from '@ngrx/store';\nimport { IUrlStateState } from './url-state/interfaces';\nimport { urlStateReducer } from './url-state/reducers';\nimport { UrlStateEffects } from \"./url-state/effects\";\n\nexport interface IKaiTableStore{\n urlState: IUrlStateState;\n}\n\nexport const kaiTableReducers: ActionReducerMap<IKaiTableStore> = {\n urlState: urlStateReducer,\n};\n\nexport const kaiTableEffects = [\n UrlStateEffects,\n]\n","import { Injectable } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatPaginatorIntl } from \"@angular/material/paginator\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject } from \"rxjs\";\n\n@Injectable()\nexport class IbTablePaginatorIntl implements MatPaginatorIntl {\n changes = new Subject<void>();\n\n itemsPerPageLabel;\n nextPageLabel;\n previousPageLabel;\n firstPageLabel;\n lastPageLabel;\n\n constructor(private translate: TranslateService) {\n this.setLabels();\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n this.setLabels();\n this.changes.next();\n });\n }\n\n setLabels() {\n this.itemsPerPageLabel = this.translate.instant(\n \"shared.ibTable.paginator.itemsPerPageLabel\"\n );\n this.nextPageLabel = this.translate.instant(\n \"shared.ibTable.paginator.nextPageLabel\"\n );\n this.previousPageLabel = this.translate.instant(\n \"shared.ibTable.paginator.previousPageLabel\"\n );\n this.firstPageLabel = this.translate.instant(\n \"shared.ibTable.paginator.firstPageLabel\"\n );\n this.lastPageLabel = this.translate.instant(\n \"shared.ibTable.paginator.lastPageLabel\"\n );\n }\n\n getRangeLabel(page: number, pageSize: number, length: number): string {\n if (length === 0 || pageSize === 0) {\n return this.translate.instant(\"shared.ibTable.paginator.rangeLabel1\", {\n length,\n });\n }\n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n return this.translate.instant(\"shared.ibTable.paginator.rangeLabel2\", {\n startIndex: startIndex + 1,\n endIndex,\n length,\n });\n }\n}\n","import { kaiTableFeatureKey } from \"./store/const\";\nimport { kaiTableReducers, kaiTableEffects } from \"./store\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport {\n MatPaginatorIntl,\n MatPaginatorModule,\n} from \"@angular/material/paginator\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport {\n IbAggregateCell,\n IbAverageAggregateProvider,\n IbCellDef,\n IbSumAggregateProvider,\n} from \"./cells\";\nimport { IbActionColumn } from \"./columns/action-column\";\nimport { IbColumn } from \"./columns/column\";\nimport { IbDateColumn } from \"./columns/date-column\";\nimport { IbNumberColumn } from \"./columns/number-column\";\nimport { IbSelectionColumn } from \"./columns/selection-column\";\nimport { IbTextColumn } from \"./columns/text-column\";\nimport { IbTablePaginatorIntl } from \"./paginator-intl\";\nimport { IbKaiRowGroupDirective } from \"./rowgroup\";\nimport { IbSortHeader } from \"./sort-header\";\nimport { IbTable } from \"./table.component\";\nimport { StoreModule } from '@ngrx/store';\nimport { EffectsModule } from '@ngrx/effects';\n\n@NgModule({\n exports: [\n IbTable,\n IbKaiRowGroupDirective,\n IbCellDef,\n IbSelectionColumn,\n IbColumn,\n IbTextColumn,\n IbNumberColumn,\n IbDateColumn,\n IbSortHeader,\n IbActionColumn,\n IbAggregateCell,\n ],\n declarations: [\n IbTable,\n IbKaiRowGroupDirective,\n IbCellDef,\n IbSelectionColumn,\n IbTextColumn,\n IbNumberColumn,\n IbDateColumn,\n IbActionColumn,\n IbAggregateCell,\n ],\n imports: [\n CommonModule,\n PortalModule,\n IbColumn,\n IbSortHeader,\n MatTableModule,\n MatSortModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatCheckboxModule,\n MatPaginatorModule,\n MatProgressBarModule,\n TranslateModule.forChild({\n extend: true,\n }),\n StoreModule.forFeature(kaiTableFeatureKey, kaiTableReducers),\n EffectsModule.forFeature(kaiTableEffects),\n ],\n providers: [\n {\n provide: MatPaginatorIntl,\n deps: [TranslateService],\n useClass: IbTablePaginatorIntl,\n },\n IbSumAggregateProvider,\n IbAverageAggregateProvider,\n ],\n})\nexport class IbKaiTableModule {}\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { kaiTableFeatureKey } from \"../const\";\nimport { IKaiTableStore } from \"..\";\nimport { IUrlStateState } from \"./interfaces\";\nimport { IbTableQsParams } from \"../../table-url.service\";\n\nconst selectFeature = createFeatureSelector<IKaiTableStore>(kaiTableFeatureKey);\n\nconst selectAllUrlStateStore = createSelector(\n selectFeature,\n (state: IKaiTableStore): IUrlStateState => {\n return state.urlState\n }\n)\n\nconst selectUrlState = (tableName: string) => createSelector(\n selectAllUrlStateStore,\n (state: IUrlStateState) => {\n return state.tables.find((table) => table.tableName === tableName)\n }\n)\n\nexport const ibTableSelectLastQueryStringRaw = (tableName: string) => createSelector(\n selectUrlState(tableName),\n (state): IbTableQsParams => ({\n ibfilter: state.filters,\n ibpage: state.page,\n ibpagesize: state.pageSize,\n ibaggregatedcolumns: state.aggregatedColumns,\n ibsort: state.sort,\n ibview: state.view\n })\n)\n\nexport const ibTableSelectLastQueryString = (tableName: string) => createSelector(\n ibTableSelectLastQueryStringRaw(tableName),\n (state): string => JSON.stringify(state)\n)\n","declare global {\n interface Navigator {\n msSaveBlob: (blob: Blob, filename: string) => void;\n }\n}\n\nimport { Injectable } from \"@angular/core\";\nimport Papa from \"papaparse\";\nimport { OVERRIDE_EXPORT_FORMATS } from \"../data-export.service\";\nimport { IbDataExportProvider } from \"../provider\";\n\n@Injectable()\nexport class IbCSVExportService implements IbDataExportProvider {\n format = 'csv';\n label = 'Comma Separated Value (.csv)';\n\n export(data: any[], filename: string): void {\n const csv = Papa.unparse(data, {\n quotes: true,\n delimiter: \";\",\n });\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8;\" });\n\n if (navigator.msSaveBlob) {\n // IE 10+\n navigator.msSaveBlob(blob, filename + \".csv\");\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename + \".csv\");\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n }\n}\n\nexport const IbCSVExportProvider = {\n provide: OVERRIDE_EXPORT_FORMATS,\n useClass: IbCSVExportService,\n multi: true\n}","import {\n ClassProvider,\n Inject,\n Injectable,\n InjectionToken,\n Optional,\n} from \"@angular/core\";\nimport jsPDF, { jsPDFOptions } from \"jspdf\";\nimport { UserOptions, applyPlugin } from \"jspdf-autotable\";\nimport { OVERRIDE_EXPORT_FORMATS } from \"../data-export.service\";\nimport { IbDataExportProvider } from \"../provider\";\n\napplyPlugin(jsPDF);\n\ninterface jsPDFWithAutotable extends jsPDF {\n autoTable: (options: UserOptions) => void;\n}\n\nexport const IB_DATA_JSPDF_OPTIONS = new InjectionToken<jsPDFOptions>(\n \"jsPDFOptions\"\n);\n\nexport const IB_DATA_JSPDF_AUTOTABLE_USER_OPTIONS =\n new InjectionToken<UserOptions>(\"jsPDFAutotableUserOptions\");\n\n@Injectable()\nexport class IbPDFExportService implements IbDataExportProvider {\n format = \"pdf\";\n label = \"PDF (.pdf)\";\n\n private defaultPdfSetup: jsPDFOptions = {\n orientation: \"l\",\n unit: null,\n format: null,\n compress: true,\n };\n\n constructor(\n @Optional()\n @Inject(IB_DATA_JSPDF_OPTIONS)\n public pdfSetup: jsPDFOptions,\n @Optional()\n @Inject(IB_DATA_JSPDF_AUTOTABLE_USER_OPTIONS)\n public pdfUserOptions: UserOptions\n ) {\n if (!pdfSetup) {\n this.pdfSetup = this.defaultPdfSetup;\n }\n\n if (!pdfUserOptions) {\n this.pdfUserOptions = {};\n }\n }\n\n export(data: any[], filename: string): void {\n const doc = new jsPDF(this.pdfSetup) as jsPDFWithAutotable;\n doc.autoTable({\n ...this.pdfUserOptions,\n body: data,\n columns: this.preparePdfColumns(Object.keys(data[0])),\n });\n doc.save(filename + \".pdf\");\n }\n\n private preparePdfColumns(columns: string[]) {\n return columns.map((c) => ({\n header: c,\n dataKey: c,\n }));\n }\n}\n\nexport const IbPDFExportProvider: ClassProvider = {\n provide: OVERRIDE_EXPORT_FORMATS,\n useClass: IbPDFExportService,\n multi: true,\n};\n","import { Injectable } from \"@angular/core\";\nimport { WorkBook, utils, writeFile } from \"xlsx\";\nimport { OVERRIDE_EXPORT_FORMATS } from \"../data-export.service\";\nimport { IbDataExportProvider } from \"../provider\";\n\n@Injectable({ providedIn: \"root\" })\nexport class IbXLSXExportService implements IbDataExportProvider {\n format = \"xlsx\";\n label = \"Microsoft Excel (.xlsx)\";\n\n export(data: any[], filename: string): void {\n const ws = utils.json_to_sheet(data, { skipHeader: false });\n const wb: WorkBook = utils.book_new();\n utils.book_append_sheet(wb, ws, filename);\n writeFile(wb, filename + \".xlsx\");\n }\n}\n\nexport const IbXLXSExportProvider = {\n provide: OVERRIDE_EXPORT_FORMATS,\n useClass: IbXLSXExportService,\n multi: true,\n};\n","import { Directive, Input, inject } from \"@angular/core\";\nimport { IbColumn } from \"../kai-table/columns/column\";\nimport type { IbDataExportProvider } from \"./provider\";\n\nexport type IbDataTransformerFunction = (data: unknown) => unknown;\nexport type IbDataTransformerInput =\n | Record<string, IbDataTransformerFunction>\n | IbDataTransformerFunction;\n\n@Directive({\n selector: \"[ibDataTransformer]\",\n})\nexport class IbDataTransformer {\n /** @ignore */\n column = inject(IbColumn);\n\n /**\n * The {@link ibDataTransformer} input is used to specify the data transformation functions for the column.\n * It accepts either a single function or an object containing multiple functions.\n *\n * ### Single purpose:\n *\n * If a single function is provided, it will be assigned to the default transformation function for all formats\n * If {@link ibDataTransformerFor} is provided, the transformation function will be assigned only to the specified format.\n * \n * *Example:*\n * \n * ```typescript\n * // example.component.ts\n * uppercaseTransformer = (name: string) => name.toUpperCase()\n * ```\n *\n * ```html\n * <!-- example.component.html -->\n * <ib-text-column name=\"name\" [ibDataTransformer]=\"uppercaseTransformer\"></ib-text-column>\n * ```\n *\n * ### Multiple formats:\n *\n * If an object is provided, where keys represent {@link IbDataExportProvider.format file formats names}\n * and values are functions, each function will be assigned to the corresponding format.\n * \n * ```html\n * <ib-date-column name=\"created_at\" sort [ibDataTransformer]=\"{\n * pdf: dateToReadableFormat,\n * xlsx: dateToSeconds,\n * csv: dateToAnotherFormat,\n * }\"></ib-date-column>\n ```\n */\n @Input() set ibDataTransformer(t: IbDataTransformerInput) {\n if (typeof t === \"function\") {\n this.column[`transform`] = {\n [this.ibDataTransformerFor]: t,\n };\n return;\n }\n\n this.column[`transform`] = t;\n }\n\n /**\n * The ibDataTransformerFor input is used to specify the name of the format for which\n * the data transformation functions should be applied.\n */\n @Input() ibDataTransformerFor = \"ibAny\";\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IbTableActionModule } from \"../kai-table\";\nimport { IbDataExportService } from \"./data-export.service\";\nimport { IbCSVExportProvider } from \"./formats/csv-export.service\";\nimport { IbPDFExportProvider } from \"./formats/pdf-export.service\";\nimport { IbXLXSExportProvider } from \"./formats/xlsx-export.service\";\nimport { IbTableDataExportDialog } from \"./table-data-export-dialog.component\";\nimport { IbTableDataExportAction } from \"./table-data-export.component\";\nimport { IbDataTransformer } from \"./transformer\";\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n MatSelectModule,\n MatRadioModule,\n MatTooltipModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n IbTableActionModule,\n TranslateModule.forChild(),\n ],\n exports: [\n IbTableDataExportAction,\n IbTableDataExportDialog,\n IbDataTransformer,\n ],\n declarations: [\n IbTableDataExportAction,\n IbTableDataExportDialog,\n IbDataTransformer,\n ],\n providers: [\n IbDataExportService,\n IbXLXSExportProvider,\n IbPDFExportProvider,\n IbCSVExportProvider,\n ],\n})\nexport class IbDataExportModule {}\n","export abstract class IbDataExportProvider {\n /** Specifies the name of the format to be used in the {@link export} function */\n abstract format: string;\n /** Represents a label or identifier for the data export provider. Concrete implementations should provide a descriptive label. */\n abstract label: string;\n /**\n * This abstract method defines the core functionality for exporting data.\n * Concrete implementations must handle the actual process\n * of exporting data in the specified format.\n *\n * @param data An array of data to be exported\n * @param filename The desired filename for the exported data\n */\n abstract export(data: any[], filename: string): void;\n}\n","import { IbFormControlBase } from './form-control-base';\n\nexport class IbCheckbox extends IbFormControlBase<string> {\n controlType = 'checkbox';\n}\n","import { IbFormControlBase } from './form-control-base';\n\nexport class IbDropdown extends IbFormControlBase<string> {\n controlType = 'dropdown';\n}\n","import { IbFormControlBase } from './form-control-base';\n\nexport class IbRadio extends IbFormControlBase<string> {\n controlType = 'radio';\n}\n","import { IbFormControlBase } from './form-control-base';\n\nexport class IbTextbox extends IbFormControlBase<string> {\n controlType = 'textbox';\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { IbDynamicFormArrayComponent } from \"./dynamic-form-array/dynamic-form-array.component\";\nimport { IbDynamicFormControlComponent } from \"./dynamic-form-control/dynamic-form-control.component\";\nimport { IbDynamicFormComponent } from \"./dynamic-form/dynamic-form.component\";\nimport { IbFormControlService } from \"./form-control.service\";\nimport { IbFormPipeModule } from \"./forms.pipes\";\n\n@NgModule({\n declarations: [\n IbDynamicFormControlComponent,\n IbDynamicFormComponent,\n IbDynamicFormArrayComponent,\n ],\n imports: [CommonModule, ReactiveFormsModule, IbFormPipeModule],\n providers: [IbFormControlService],\n exports: [\n IbDynamicFormComponent,\n IbDynamicFormControlComponent,\n IbDynamicFormArrayComponent,\n ],\n})\nexport class IbDynamicFormsModule {}\n","import { Component, Input } from '@angular/core';\nimport { IbMainMenuButton } from '../../models/main-menu-button.model'\n\n@Component({\n selector: 'ib-main-menu-header-footer-buttons',\n template: `\n <ng-container>\n <div\n routerLink=\"{{ ( element.link === undefined) ? null : element.link }}\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n style=\"display: none;\"\n >\n </div>\n\n <!-- topCenter button ------------->\n <div\n *ngIf=\"type === 'topCenter'\"\n id=\"ib-main-menu-expanded-header-closeButton-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: space-around; align-items: center;align-content: center\">\n <button mat-button>\n <div\n style=\"display:flex;flex-direction:row;justify-content: space-evenly; align-items: center;align-content: center\">\n <mat-icon class=\"{{element.icon.type?'material-icons-' + element.icon.type + ' ' + element.icon.type : null}}\">\n {{element.icon.label}}\n </mat-icon>\n <p>\n {{ element.label | translate }}\n </p>\n </div>\n </button>\n </div>\n\n <!-- upRight button ------------->\n <button\n *ngIf=\"type === 'upRight'\"\n class=\"{{(rla.isActive && element.link !== undefined)? 'active-header-footer-button upRight-button': 'upRight-button'}}\"\n >\n <mat-icon class=\"{{element.icon.type?'material-icons-' + element.icon.type: null}}\">\n {{element.icon.label}}\n </mat-icon>\n </button>\n\n <!-- bottomLeft button --------->\n <button\n *ngIf=\"type === 'bottomLeft'\"\n id=\"ib-main-menu-expanded-footer-support-button\"\n class=\"{{(rla.isActive && element.link !== undefined)? 'active-header-footer-button': null}}\"\n >\n <div\n id=\"ib-main-menu-expanded-footer-support-button-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: center; align-items: center;align-content: center\"\n >\n <mat-icon class=\"{{element.icon.type?'material-icons-' + element.icon.type: null}}\">\n {{element.icon.label}}\n </mat-icon>\n <p>\n {{element.label | translate}}\n </p>\n </div>\n </button>\n\n </ng-container>\n `,\n styles: [`\n\n #ib-main-menu-expanded-header-closeButton-wrapper {\n width: 100%;\n margin: 0 auto;\n }\n\n #ib-main-menu-expanded-header-closeButton-wrapper button {\n min-width: 256px;\n max-width: 453px;\n height: 40px;\n border-radius: 20px;\n border-width: 1px;\n border-style: solid;\n transition: border-color .2s, box-shadow .2s;\n }\n\n #ib-main-menu-expanded-header-closeButton-wrapper button div{\n height: 38px;\n }\n\n #ib-main-menu-expanded-header-closeButton-wrapper button div p {\n margin: 0;\n line-height: 37px;\n }\n #ib-main-menu-expanded-header-closeButton-wrapper button div mat-icon {\n height: 36px;\n line-height: 36px;\n }\n .upRight-button {\n min-width: 32px;\n max-width:32px;\n min-height: 32px;\n max-height: 32px;\n padding: 0px;\n border-radius: 8px;\n transition: background-color .2s;\n line-height: 32px;\n\n background-color: transparent;\n border: 0px;\n margin-top: 5px;\n padding-top: 5px;\n }\n .upRight-button:hover {\n background: hsla(0,0%,45%,.7)\n }\n\n .upRight-button mat-icon{\n font-size: 24px;\n min-width: 23px;\n max-width:23px;\n min-height: 23px;\n max-height: 23px;\n margin: 0px 1px 0px 0px;\n line-height: 23px;\n }\n\n #ib-main-menu-expanded-footer-support-button {\n width: 166px;\n height: 32px;\n line-height: 32px;\n border-radius: 8px;\n border-width: 1px;\n border-style: solid;\n padding:0px;\n transition: background-color .2s;\n }\n\n #ib-main-menu-expanded-footer-support-button-wrapper {\n width: 164px;\n height: 28px;\n }\n\n #ib-main-menu-expanded-footer-support-button-wrapper p {\n font-size: 12px;\n margin: 0px;\n height: 28px;\n font-style: normal;\n font-weight: 500;\n line-height: 31px;\n }\n\n #ib-main-menu-expanded-footer-support-button-wrapper mat-icon {\n font-size: 18px;\n width: 18px;\n height: 28px;\n margin: 0px 10px 0px 0px;\n line-height: 28px;\n }\n `]\n})\nexport class IbMainMenuHeaderFooterButtonsComponent {\n @Input() type: string;\n @Input() element: IbMainMenuButton;\n\n constructor() {}\n}\n","import { Component, Input, Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { IbMainMenuDataSet } from '../../models/main-menu-data-set.model';\n\n@Component({\n selector: 'ib-main-menu-expanded',\n templateUrl: './main-menu-expanded.component.html',\n styleUrls: ['./main-menu-expanded.component.css']\n})\nexport class IbMainMenuExpandedComponent {\n @Input() navDataSet: IbMainMenuDataSet;\n @Output() actionDo: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n ) {}\n/**\n * For UpRight e bottomLeft buttons\n */\n emitAction(event, element) {\n event.stopPropagation();\n this.actionDo.emit(element);\n }\n\n calcBoxWidth(numElements) {\n const cost = Math.ceil(numElements / 5);\n let width = cost * 232;\n numElements > 5 ? width = width + 10 * cost * 0.75 : null;\n return width + 'px';\n }\n\n calcSecondLevelWidth(numElements) {\n return 100 / Math.ceil(numElements / 5) + '%';\n }\n\n}\n","<!--header---------------------------------------------------------------------->\n<div id=\"ib-main-menu-expanded-header\"\n style=\"display:flex;flex-direction:row;justify-content: space-between; align-items: center;align-content: center\">\n <div id=\"ib-main-menu-expanded-header-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: space-between; align-items: center;align-content: center\">\n\n <!-- header > title --------------------------------------->\n <div id=\"ib-main-menu-expanded-header-title-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: flex-start; align-items: center;align-content: center\">\n <p>{{navDataSet.title | translate }}</p>\n </div>\n\n <!-- header > dashboard button --------------------------->\n <ib-main-menu-header-footer-buttons\n [type]=\"'topCenter'\"\n [element]=\"navDataSet.topCenter\"\n (click)=\"emitAction($event, navDataSet.topCenter)\">\n </ib-main-menu-header-footer-buttons>\n\n <!-- header > upRight buttons ------------------------------>\n <div id=\"ib-main-menu-expanded-header-settingsLogout-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: flex-end; align-items: center;align-content: center\">\n <div id=\"ib-main-menu-expanded-header-settingsLogout-box\"\n style=\"display:flex;flex-direction:row;justify-content: space-evenly; align-items: center;align-content: center\">\n <ng-container *ngFor=\"let upRight of navDataSet.upRight\">\n <ib-main-menu-header-footer-buttons\n class=\"ib-main-menu-upRight-item\"\n [type]=\"'upRight'\"\n [element]=\"upRight\"\n (click)=\"emitAction($event,upRight)\">\n </ib-main-menu-header-footer-buttons>\n\n </ng-container>\n </div>\n </div>\n\n </div>\n</div>\n\n<!--body---------------------------------------------------------------------->\n<div id=\"ib-main-menu-expanded-body\">\n <div id=\"ib-main-menu-expanded-body-wrapper\"\n style=\"display:flex;flex-direction:row;flex-wrap:wrap;justify-content: flex-start; align-items: center;align-content: center;gap:16px\">\n <ng-container *ngFor=\"let firstLevel of navDataSet.navData\">\n\n <!-- body > box ----------------------------------------->\n <div\n routerLink=\"{{ ( firstLevel.link === undefined) ? null : firstLevel.link }}\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n style=\"display: none;\"\n ></div>\n\n <div class=\"{{(rla.isActive && firstLevel.link !== undefined)? 'ib-main-menu-expanded-body-box ib-main-menu-box-active-box': 'ib-main-menu-expanded-body-box'}}\"\n [ngStyle]=\"{'width': calcBoxWidth(firstLevel.paths.length)}\"\n (click)=\"$event.stopPropagation()\">\n\n <!-- body > box > firstLevel -------------------->\n <div class=\"ib-main-menu-expanded-body-box-firstLevel\">\n <div class=\"ib-main-menu-expanded-body-box-firstLevel-box\"\n style=\"display:flex;flex-direction:row;justify-content: start; align-items: center;align-content: center\">\n <mat-icon class=\"{{firstLevel.icon.type?'material-icons-' + firstLevel.icon.type: null}}\">{{firstLevel.icon.label}}</mat-icon>\n <p> {{firstLevel.label |translate}} </p>\n </div>\n </div>\n\n <!-- body > box > secondLevel ------------------>\n <div class=\"ib-main-menu-expanded-body-box-secondLevel\" style=\"height: 85%;\"\n style=\"display:flex;flex-direction:column;flex-wrap: wrap;justify-content: flex-start; align-items: flex-start;align-content: flex-start\">\n <ng-container *ngFor=\"let secondLevel of firstLevel.paths; let i = index\">\n <div\n routerLink=\"{{ ( secondLevel.link === undefined) ? null : secondLevel.link }}\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n style=\"display: none;\"\n >\n </div>\n <button\n mat-button\n class=\"{{(rla.isActive && secondLevel.link !== undefined)? 'active-row-ie-secondLevel' : null}}\"\n style=\"flex:1 1 18\"\n [ngStyle]=\"{'width': calcSecondLevelWidth(firstLevel.paths.length)}\"\n (click)=\"emitAction($event, secondLevel)\"\n >\n <p>\n {{secondLevel.label | translate}}\n </p>\n </button>\n </ng-container>\n </div>\n\n </div>\n </ng-container>\n </div>\n</div>\n\n<!--footer--------------------------------------------------------------------------------------------->\n<div id=\"ib-main-menu-expanded-footer\">\n <div id=\"ib-main-menu-expanded-footer-wrapper\"\n style=\"display:flex;flex-direction:row;justify-content: space-between; align-items: center;align-content: center\">\n\n <!-- footer > bottomLeft button ------------------------>\n <ib-main-menu-header-footer-buttons\n [type]=\"'bottomLeft'\"\n [element]=\"navDataSet.bottomLeft\"\n (click)=\"emitAction($event,navDataSet.bottomLeft)\">\n </ib-main-menu-header-footer-buttons>\n\n <!-- footer > bottomRight copyright ---------------------->\n <div id=\"ib-main-menu-expanded-footer-copyright-wrapper\">\n <p>{{navDataSet.bottomRight | translate}}</p>\n </div>\n\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, _closeDialogVia } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { IbMainMenuDataSet } from '../../models/main-menu-data-set.model';\n\n@Component({\n selector: 'ib-main-menu-dialog',\n template: `\n <mat-dialog-content (click)=\"this.dialogRef.close()\">\n <ib-main-menu-expanded\n [navDataSet]=\"data\"\n (actionDo)=\"actionDo($event)\"\n >\n </ib-main-menu-expanded >\n </mat-dialog-content>\n `,\n styleUrls: ['./main-menu-dialog.component.css']\n})\nexport class IbMainMenuDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<IbMainMenuDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: IbMainMenuDataSet,\n private router: Router) {}\n\n actionDo(element){\n\n this.dialogRef.close(element);\n if (element.link !== undefined) { this.router.navigate([element.link]); }\n }\n}\n","import { Component, Input, Output, EventEmitter, Renderer2 } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { IbMainMenuButton } from '../../models/main-menu-button.model';\nimport { IbMainMenuData } from '../../models/main-menu-data.model';\nimport { IbMainMenuDialogComponent } from '../main-menu-dialog/main-menu-dialog.component';\n\n\n\n@Component({\n selector: 'ib-main-menu-bar',\n templateUrl: './main-menu-bar.component.html',\n styleUrls: ['./main-menu-bar.component.css']\n})\nexport class IbMainMenuBarComponent {\n/**\n * Dichiara l'icona da utilizzare per la menu bar principale, ovvero quella che al click apre il menu in forma estesa.\n * Used to declare the icon that must be used for the main menu bar, i.e the one that on click event opens the actual menu.\n */\n @Input() barIcon: string;\n\n /**\n * Dichiara il titolo dell'applicazione che viene visualizzato in alto a sinistra.\n * Used to declare the application title displayed on the up left of the menu.\n */\n @Input() navTitle: string;\n /**\n * Dichiara i dati per il bottone del menu che viene visualizzato in alto al centro, e che viene utilizzato per il ritorno alla pagina principale (home)\n * Used to declare data for the button displayed in the top center of the menu, which is used to go to the home page.\n */\n @Input() navButtonTopCenter: IbMainMenuButton;\n /**\n * Dichiara i dati per popolare le sezioni dei menu di primo livello e di secondo livello.\n * Used to declare data to initialize the first and second level menu sections.\n */\n @Input() navData: IbMainMenuData[];\n /**\n * Dichiara i dati per i 2 bottoni del menu che vengono visualizzati in alto a destra.\n * Used to declare data for the 2 buttons displayed on the up right of the menu.\n */\n @Input() navButtonsUpRight: IbMainMenuButton[];\n /**\n * Dichiara una stringa che sarà visualizzata in basso a destra, e che viene utilizzata per indicare il copyright.\n * Used to declare a string which will be displayed on the bottom right, which can be used to declare the copyright.\n */\n @Input() navButtonBottomRight: string;\n /**\n * Dichiara i dati per il bottone del menu che viene visualizzato in basso a sinistra, e che viene utilizzato per il tasto di assistenza.\n * Used to declare data for the button displayed on the bottom left of the menu, which can be used as a 'get help' button.\n */\n @Input() navBottomLeft: IbMainMenuButton;\n /**\n * Segnala il click avvenuto su un pulsante di menu che non ha l'attributo link definito.\n * Reports any click event happened on a menu button that doesn't have the link attribute set.\n */\n @Output() action: EventEmitter<IbMainMenuButton> = new EventEmitter<IbMainMenuButton>();\n\n temporaryWrapper: HTMLElement;\n\n\n constructor(\n public dialog: MatDialog,\n private renderer: Renderer2) {\n this.temporaryWrapper = this.renderer.createElement('div');\n this.renderer.addClass(this.temporaryWrapper, 'blur-effect');\n this.renderer.appendChild(document.body, this.temporaryWrapper);\n }\n\n openDialog() {\n const dialogOpened = this.dialog.open(IbMainMenuDialogComponent, {\n maxWidth: '100vw',\n maxHeight: '100vh',\n height: '100%',\n width: '100%',\n data: {\n title: this.navTitle,\n topCenter: this.navButtonTopCenter,\n upRight: this.navButtonsUpRight,\n navData: this.navData,\n bottomLeft: this.navBottomLeft,\n bottomRight: this.navButtonBottomRight\n },\n panelClass: 'mat-dialog-container-for-ib-main-menu'\n });\n\n\n this.addBlur();\n\n dialogOpened.afterClosed()\n .subscribe(result => {\n if(result) {\n this.action.emit(result);\n }\n this.removeBlur();\n })\n }\n\n addBlur() {\n this.temporaryWrapper.style.display = 'block';\n Array.prototype.slice.call(document.body.children).map( x => {\n x.classList.value === 'cdk-overlay-container' ||\n x.classList.value === 'blur-effect' ?\n null : this.renderer.appendChild(this.temporaryWrapper,x);\n });\n }\n\n removeBlur() {\n this.temporaryWrapper.style.display = 'none';\n Array.prototype.slice.call(this.temporaryWrapper.children).map( x => {\n this.renderer.appendChild(document.body,x);\n })\n }\n}\n\n\n\n"," <div id=\"ib-main-menu-box\" >\n <button mat-button (click)=\"openDialog()\">\n <mat-icon>{{barIcon}}</mat-icon>\n </button>\n </div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IbMainMenuBarComponent } from './components/main-menu-bar/main-menu-bar.component';\nimport { IbMainMenuDialogComponent } from './components/main-menu-dialog/main-menu-dialog.component';\nimport { IbMainMenuHeaderFooterButtonsComponent } from './components/main-menu-expanded/header-footer-buttons.component';\nimport { IbMainMenuExpandedComponent } from './components/main-menu-expanded/main-menu-expanded.component';\n\n@NgModule({\n declarations: [\n IbMainMenuBarComponent,\n IbMainMenuDialogComponent,\n IbMainMenuExpandedComponent,\n IbMainMenuHeaderFooterButtonsComponent\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatDialogModule,\n MatButtonModule,\n RouterModule,\n TranslateModule.forChild({\n extend: true\n }),\n ],\n exports: [\n IbMainMenuBarComponent,\n IbMainMenuDialogComponent,\n IbMainMenuExpandedComponent,\n IbMainMenuHeaderFooterButtonsComponent\n ]\n})\nexport class IbMainMenuModule { }\n","import { Component, Input } from '@angular/core';\nimport { IbMainMenuButton } from '../../models/main-menu-button.model';\nimport { IbMainMenuDataSet } from '../../models/main-menu-data-set.model';\nimport { IbMainMenuData } from '../../models/main-menu-data.model';\n\n\n\n@Component({\n selector: 'ib-main-menu-bar',\n template: ''\n})\nexport class IbMainMenuBarStubComponent {\n\n @Input() barIcon: string;\n @Input() navData: IbMainMenuData[];\n @Input() navTitle: string;\n @Input() navButtonTopCenter: IbMainMenuButton;\n @Input() navButtonsUpRight: IbMainMenuButton[];\n @Input() navButtonBottomRight: string;\n @Input() navBottomLeft: IbMainMenuButton;\n\n dataSet: IbMainMenuDataSet;\n\n constructor() {}\n\n openDialog() {}\n\n}\n\n\n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { IbMainMenuBarStubComponent } from \"./components/main-menu-bar/main-menu-bar.stub.spec\";\n\n\n@NgModule({\n declarations: [\n IbMainMenuBarStubComponent,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n IbMainMenuBarStubComponent\n ]\n})\nexport class IbMainMenuTestModule { }\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { of } from 'rxjs';\nimport { IbFormControlBase } from '../../forms/controls/form-control-base';\nimport { IbFormAction } from '../../forms/dynamic-form/dynamic-form.component';\nimport { IbMatActionsPosition } from './material-form.component';\n\n@Component({\n selector: 'ib-material-form',\n template: ``,\n})\nexport class IbMaterialFormStubComponent {\n @Input() fields: IbFormControlBase<string>[] = [];\n @Input() actions: IbFormAction[] = [];\n @Input() actionsPosition = IbMatActionsPosition.BOTTOM;\n @Input() disabledOnInit = false;\n @Output() ibSubmit = new EventEmitter<any>();\n form: UntypedFormGroup;\n\n constructor() {\n }\n\n ngOnInit() {\n this.form = this.toFormGroup(this.fields);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const fields = changes['fields'];\n if (fields && !fields.isFirstChange()) {\n this.form = this.toFormGroup(fields.currentValue);\n }\n }\n\n afterChanges(){\n return of(this.toFormGroup(this.fields))\n }\n\n toFormGroup(fields: IbFormControlBase<any>[]) {\n const group: any = {};\n\n fields.forEach(field => {\n const elem = {\n value: field.value || '',\n disabled: field.disabled\n };\n let validators = [];\n if (field.validators && field.validators.length) {\n validators = validators.concat(field.validators);\n }\n if (field.required) {\n validators.push(Validators.required);\n }\n group[field.key] = new UntypedFormControl(elem, validators);\n\n });\n\n return new UntypedFormGroup(group);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { IbMaterialFormStubComponent } from './material-form/material-form.stub.spec';\n\n\nconst components = [\n IbMaterialFormStubComponent\n];\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n ...components\n ],\n declarations: [\n ...components\n ],\n providers: []\n})\nexport class IbMaterialFormTestModule { }\n","import { of } from \"rxjs\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class IbModalMessageServiceStub {\n show(){\n return of(true)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IbModalMessageService } from './modal-message.service';\nimport { IbModalMessageServiceStub } from './modal-message.service.stub.spec';\n\n\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n ],\n declarations: [\n ],\n providers: [\n { provide: IbModalMessageService, useClass: IbModalMessageServiceStub}\n ]\n})\nexport class IbModalTestModule { }\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\n\n@Component ({\n selector: 'ib-uploader',\n template: `\n <input (change)=\"onChooseChange()\" #uploader style=\"display:none;\"type=\"file\"/>\n <button mat-button (click)=\"onChooseClick()\" >{{textKey | translate}}</button>\n `\n})\nexport class IbUploaderComponent {\n @ViewChild('uploader') uploader !: ElementRef;\n @Input() textKey: string;\n @Output() onFileSelected: EventEmitter<any> = new EventEmitter<any>();\n\n constructor() {}\n\n onChooseClick() {\n this.uploader.nativeElement.click();\n }\n\n onChooseChange() {\n if (this.uploader.nativeElement.files && this.uploader.nativeElement.files.length > 0) {\n this.onFileSelected.emit(this.uploader.nativeElement.files[0]);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IbUploaderComponent } from './uploader.component';\n\nconst components = [\n IbUploaderComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n TranslateModule.forChild({\n extend: true\n }),\n MatButtonModule\n ],\n exports: [\n ...components\n ],\n declarations: [\n ...components\n ],\n providers: []\n})\nexport class IbUploaderModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["selectFeature","i1","i2","i3","i4","i1.IbToastNotification","i2.IbLoadingSkeletonRectComponent","i1.IbLoginService","components","INITIAL","main","HydrationActions.ibHydrate","i6","i1.IbColumn","i1.IbSortHeader","i2.IbSortHeader","i5.IbAggregateCell","observableOf","i5","i7","i9","i1.IbDataExportService","i4.IbKaiTableAction","i8","i1.IbModalMessageService","i1.IbFormControlService","i4.IbDynamicFormControlComponent","i5.IbMaterialFormControlComponent","i5.IbDynamicFormArrayComponent","i6.IbFormArrayPipe","i6.IbFormControlPipe","i4.IbMaterialFormControlComponent","i5.IbMaterialFormArrayComponent","i11.IbFilterButton","i12.IbFilterActionGroup","i7.IbFilterButton","i8.IbFilterActionGroup","debounceTime","i6.IbFilterButton","i7.IbFilterActionGroup","i9.IbFilterPipe","i8.IbFilterButton","i9.IbFilterActionGroup","i10","i4.IbToastNotification","i4.IbTableView","i5.IbDefaultTableView","i2.IbViewService","i6.IbKaiTableAction","i7.IbViewList","i5.IbMainMenuHeaderFooterButtonsComponent","i3.IbMainMenuExpandedComponent"],"mappings":"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"}
|