@yuuvis/client-framework 2.20.1 → 3.0.0-beta.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/index.d.ts +230 -9
- package/app-bar/index.d.ts +50 -1
- package/autocomplete/index.d.ts +89 -3
- package/breadcrumb/index.d.ts +112 -2
- package/clipboard/index.d.ts +19 -1
- package/common/index.d.ts +536 -7
- package/datepicker/index.d.ts +380 -6
- package/fesm2022/yuuvis-client-framework-actions.mjs +31 -32
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-app-bar.mjs +14 -17
- package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs +23 -23
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs +7 -8
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-clipboard.mjs +8 -10
- package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +191 -234
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-datepicker.mjs +110 -145
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +283 -250
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-icons.mjs +18 -19
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-list.mjs +59 -57
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-master-details.mjs +23 -18
- package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +7 -9
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +32 -32
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +129 -120
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +67 -59
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +58 -60
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +64 -47
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +206 -183
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +42 -42
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +28 -29
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs +10 -10
- package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +16 -16
- package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-pagination.mjs +7 -8
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-popout.mjs +55 -57
- package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-query-list.mjs +29 -29
- package/fesm2022/yuuvis-client-framework-query-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-renderer.mjs +71 -68
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +20 -25
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-simple-search.mjs +31 -33
- package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sort.mjs +57 -37
- package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-split-view.mjs +39 -38
- package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +119 -121
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-token-search.mjs +22 -22
- package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tree.mjs +32 -44
- package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs +22 -26
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +80 -77
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework.mjs +23 -23
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
- package/forms/index.d.ts +633 -13
- package/icons/index.d.ts +79 -4
- package/index.d.ts +909 -6
- package/list/index.d.ts +380 -4
- package/master-details/index.d.ts +69 -3
- package/metadata-form/index.d.ts +189 -6
- package/metadata-form-defaults/index.d.ts +14 -2
- package/object-details/index.d.ts +321 -9
- package/object-flavor/index.d.ts +86 -6
- package/object-form/index.d.ts +288 -4
- package/object-preview/index.d.ts +82 -2
- package/object-relationship/index.d.ts +120 -5
- package/object-summary/index.d.ts +105 -4
- package/object-versions/index.d.ts +43 -2
- package/overflow-hidden/index.d.ts +28 -2
- package/overflow-menu/index.d.ts +52 -3
- package/package.json +12 -12
- package/pagination/index.d.ts +31 -2
- package/popout/index.d.ts +106 -5
- package/query-list/index.d.ts +497 -2
- package/renderer/index.d.ts +117 -10
- package/sequence-list/index.d.ts +60 -2
- package/simple-search/index.d.ts +57 -1
- package/sort/index.d.ts +36 -2
- package/split-view/index.d.ts +197 -4
- package/tile-list/index.d.ts +789 -10
- package/token-search/index.d.ts +72 -3
- package/tree/index.d.ts +68 -2
- package/upload-progress/index.d.ts +44 -2
- package/widget-grid/index.d.ts +299 -7
- package/actions/lib/actions/copy-action/copy-action.d.ts +0 -17
- package/actions/lib/actions/cut-action/cut-action.d.ts +0 -17
- package/actions/lib/actions/delete-action/delete/delete.component.d.ts +0 -22
- package/actions/lib/actions/delete-action/delete-action.d.ts +0 -18
- package/actions/lib/actions/download-action/download-action.d.ts +0 -17
- package/actions/lib/actions.icon.d.ts +0 -7
- package/actions/lib/actions.interface.d.ts +0 -86
- package/actions/lib/actions.module.d.ts +0 -11
- package/actions/lib/actions.service.d.ts +0 -58
- package/actions/lib/components/contextmenu/contextmenu.component.d.ts +0 -16
- package/actions/lib/components/contextmenu/contextmenu.model.d.ts +0 -9
- package/actions/lib/components/contextmenu/contextmenuTrigger.directive.d.ts +0 -12
- package/app-bar/lib/app-bar.component.d.ts +0 -47
- package/autocomplete/lib/autocomplete.component.d.ts +0 -74
- package/autocomplete/lib/autocomplete.interface.d.ts +0 -4
- package/autocomplete/lib/autocomplete.module.d.ts +0 -7
- package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +0 -94
- package/breadcrumb/lib/models/breadcrumb-item.model.d.ts +0 -14
- package/breadcrumb/lib/models/index.d.ts +0 -1
- package/clipboard/lib/clipboard.component.d.ts +0 -16
- package/common/lib/common.module.d.ts +0 -21
- package/common/lib/common.utils.d.ts +0 -2
- package/common/lib/components/busy-overlay/busy-overlay.component.d.ts +0 -9
- package/common/lib/components/busy-overlay/busy-overlay.interface.d.ts +0 -4
- package/common/lib/components/confirm/confirm.component.d.ts +0 -8
- package/common/lib/components/confirm/confirm.interface.d.ts +0 -9
- package/common/lib/components/confirm/confirm.service.d.ts +0 -9
- package/common/lib/components/dialog/dialog.component.d.ts +0 -10
- package/common/lib/components/dialog/dialog.options.d.ts +0 -7
- package/common/lib/components/halo-focus/halo-focus.component.d.ts +0 -5
- package/common/lib/components/index.d.ts +0 -8
- package/common/lib/components/retention-badge/retention-badge.component.d.ts +0 -9
- package/common/lib/components/scroll-buttons/scroll-buttons.component.d.ts +0 -25
- package/common/lib/directives/autofocus-child.directive.d.ts +0 -13
- package/common/lib/directives/autofocus-delayed.directive.d.ts +0 -18
- package/common/lib/directives/busy-overlay.directive.d.ts +0 -68
- package/common/lib/directives/click-double.directive.d.ts +0 -17
- package/common/lib/directives/container-size.directive.d.ts +0 -30
- package/common/lib/directives/drag-scroll.directive.d.ts +0 -20
- package/common/lib/directives/drag-select.directive.d.ts +0 -21
- package/common/lib/directives/file-drop-zone/file-drop-zone.directive.d.ts +0 -17
- package/common/lib/directives/file-drop-zone/file-drop-zone.interface.d.ts +0 -5
- package/common/lib/directives/focus-within.directive.d.ts +0 -36
- package/common/lib/directives/index.d.ts +0 -13
- package/common/lib/directives/light-dismiss.directive.d.ts +0 -19
- package/common/lib/directives/longpress.directive.d.ts +0 -13
- package/common/lib/directives/noop-value-accessor.directive.d.ts +0 -10
- package/common/lib/directives/scroll-buttons.directive.d.ts +0 -20
- package/common/lib/mat-form-field.abstract.d.ts +0 -41
- package/common/lib/services/file-drop/file-drop.service.d.ts +0 -7
- package/common/lib/services/form-translate/form-translate.service.d.ts +0 -15
- package/common/lib/services/index.d.ts +0 -4
- package/common/lib/services/layout-settings/layout-settings.interface.d.ts +0 -1
- package/common/lib/services/layout-settings/layout-settings.service.d.ts +0 -40
- package/common/lib/services/theme/index.d.ts +0 -3
- package/common/lib/services/theme/theme.models.d.ts +0 -16
- package/common/lib/services/theme/theme.provider.d.ts +0 -4
- package/common/lib/services/theme/theme.service.d.ts +0 -16
- package/datepicker/lib/calendar/calendar.component.d.ts +0 -70
- package/datepicker/lib/date-input/date-input-element/date-input-element.component.d.ts +0 -44
- package/datepicker/lib/date-input/date-input-hour-element/date-input-hour-element.component.d.ts +0 -11
- package/datepicker/lib/date-input/date-input.component.d.ts +0 -60
- package/datepicker/lib/datepicker-calendar/datepicker-calendar-trigger.component.d.ts +0 -7
- package/datepicker/lib/datepicker-calendar/datepicker-calendar.component.d.ts +0 -12
- package/datepicker/lib/datepicker.component.d.ts +0 -80
- package/datepicker/lib/datepicker.interface.d.ts +0 -34
- package/datepicker/lib/datepicker.module.d.ts +0 -9
- package/datepicker/lib/datepicker.service.d.ts +0 -46
- package/datepicker/lib/datepicker.utils.d.ts +0 -23
- package/datepicker/lib/time-input/time-input.component.d.ts +0 -32
- package/datepicker/lib/time-input/time-input.interface.d.ts +0 -6
- package/forms/lib/elements/catalog/catalog.component.d.ts +0 -34
- package/forms/lib/elements/data-grid/data-grid/data-grid.component.d.ts +0 -46
- package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +0 -22
- package/forms/lib/elements/data-grid/model/data-grid.interface.d.ts +0 -20
- package/forms/lib/elements/datetime/datetime.component.d.ts +0 -41
- package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +0 -38
- package/forms/lib/elements/i18n-catalog/i18n-catalog.component.d.ts +0 -43
- package/forms/lib/elements/index.d.ts +0 -12
- package/forms/lib/elements/number/number.component.d.ts +0 -69
- package/forms/lib/elements/number-range/number-range.component.d.ts +0 -73
- package/forms/lib/elements/organization/organization.component.d.ts +0 -66
- package/forms/lib/elements/organization-set/organization-set.component.d.ts +0 -61
- package/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.d.ts +0 -13
- package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +0 -38
- package/forms/lib/elements/range-select-date/range-select-date.interface.d.ts +0 -5
- package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +0 -33
- package/forms/lib/elements/range-select-filesize/range-select-filesize.interface.d.ts +0 -5
- package/forms/lib/elements/string/string.component.d.ts +0 -100
- package/forms/lib/forms.module.d.ts +0 -17
- package/forms/lib/forms.utils.d.ts +0 -4
- package/icons/lib/icon.component.d.ts +0 -24
- package/icons/lib/icon.service.d.ts +0 -39
- package/icons/lib/icons.d.ts +0 -1
- package/icons/lib/object-type-icon/object-type-icon.component.d.ts +0 -11
- package/lib/config/halo-focus-defaults/halo-excluded-elements.const.d.ts +0 -26
- package/lib/config/halo-focus-defaults/halo-focus-navigation-keys.const.d.ts +0 -25
- package/lib/config/halo-focus-defaults/halo-focus-offset.const.d.ts +0 -25
- package/lib/config/halo-focus-defaults/halo-focus-styles.const.d.ts +0 -26
- package/lib/config/halo-focus-defaults/index.d.ts +0 -4
- package/lib/config/index.d.ts +0 -2
- package/lib/config/session/index.d.ts +0 -3
- package/lib/config/session/session-activity-window-before-end.const.d.ts +0 -43
- package/lib/config/session/session-default-duration.const.d.ts +0 -47
- package/lib/config/session/session-popup-before-end.const.d.ts +0 -47
- package/lib/enums/channel-message.enum.d.ts +0 -4
- package/lib/enums/index.d.ts +0 -1
- package/lib/models/halo-focus-config/halo-focus-config.model.d.ts +0 -48
- package/lib/models/halo-focus-config/index.d.ts +0 -1
- package/lib/models/index.d.ts +0 -3
- package/lib/models/session/channel-payload.model.d.ts +0 -5
- package/lib/models/session/index.d.ts +0 -1
- package/lib/models/snack-bar/index.d.ts +0 -3
- package/lib/models/snack-bar/snack-bar-data.model.d.ts +0 -6
- package/lib/models/snack-bar/snack-bar-level.model.d.ts +0 -1
- package/lib/models/snack-bar/snack-bar-options.model.d.ts +0 -9
- package/lib/providers/halo-focus/index.d.ts +0 -1
- package/lib/providers/halo-focus/provide-halo-focus.d.ts +0 -62
- package/lib/providers/index.d.ts +0 -2
- package/lib/providers/session/index.d.ts +0 -1
- package/lib/providers/session/provide-session.provider.d.ts +0 -43
- package/lib/services/halo-focus/halo-focus.service.d.ts +0 -95
- package/lib/services/halo-utility/halo-utility.service.d.ts +0 -245
- package/lib/services/index.d.ts +0 -4
- package/lib/services/session/session.service.d.ts +0 -113
- package/lib/services/snack-bar/snack-bar.service.d.ts +0 -22
- package/lib/yuuvis-client-framework.module.d.ts +0 -7
- package/list/lib/list-item.directive.d.ts +0 -40
- package/list/lib/list-tile/list-tile.component.d.ts +0 -14
- package/list/lib/list.component.d.ts +0 -320
- package/list/lib/list.module.d.ts +0 -9
- package/master-details/lib/master-details.component.d.ts +0 -52
- package/master-details/lib/master-details.interface.d.ts +0 -7
- package/master-details/lib/master-details.module.d.ts +0 -7
- package/metadata-form/lib/metadata-form-element-registry.service.d.ts +0 -60
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +0 -25
- package/metadata-form/lib/metadata-form-field/metadata-form-field.interface.d.ts +0 -19
- package/metadata-form/lib/object-metadata-element-error.directive.d.ts +0 -17
- package/metadata-form/lib/object-metadata-element-label.directive.d.ts +0 -29
- package/metadata-form/lib/object-metadata-element-template.directive.d.ts +0 -45
- package/metadata-form-defaults/lib/metadata-default-templates/metadata-default-templates.component.d.ts +0 -5
- package/metadata-form-defaults/lib/metadata-form-defaults.module.d.ts +0 -7
- package/object-details/lib/object-audit/object-audit.component.d.ts +0 -49
- package/object-details/lib/object-details-header/object-details-header.component.d.ts +0 -43
- package/object-details/lib/object-details-shell/object-details-shell.component.d.ts +0 -34
- package/object-details/lib/object-details-shell/object-details-shell.service.d.ts +0 -14
- package/object-details/lib/object-details.component.d.ts +0 -47
- package/object-details/lib/object-details.module.d.ts +0 -12
- package/object-details/lib/object-metadata/form-section-group.pipe.d.ts +0 -8
- package/object-details/lib/object-metadata/object-metadata-section/object-metadata-section.component.d.ts +0 -19
- package/object-details/lib/object-metadata/object-metadata-section/object-metadata-section.interface.d.ts +0 -9
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +0 -75
- package/object-details/lib/object-metadata/object-metadata.interface.d.ts +0 -26
- package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +0 -11
- package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +0 -13
- package/object-flavor/lib/default-apply-flavor/default-apply-flavor.component.d.ts +0 -19
- package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +0 -13
- package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +0 -23
- package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +0 -10
- package/object-form/lib/form-scripting.api.interface.d.ts +0 -131
- package/object-form/lib/form-scripting.service.d.ts +0 -30
- package/object-form/lib/object-form-element/object-form-element.component.d.ts +0 -23
- package/object-form/lib/object-form-extension.interface.d.ts +0 -22
- package/object-form/lib/object-form-group/object-form-group.component.d.ts +0 -20
- package/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.d.ts +0 -10
- package/object-form/lib/object-form-script/object-form-script.service.d.ts +0 -45
- package/object-form/lib/object-form-script/object-form-scripting-scope.d.ts +0 -50
- package/object-form/lib/object-form.component.d.ts +0 -61
- package/object-form/lib/object-form.interface.d.ts +0 -69
- package/object-form/lib/object-form.module.d.ts +0 -7
- package/object-form/lib/object-form.service.d.ts +0 -41
- package/object-form/lib/object-form.utils.d.ts +0 -20
- package/object-form/lib/object-form.validation.d.ts +0 -21
- package/object-preview/lib/components/index.d.ts +0 -2
- package/object-preview/lib/components/object-email-preview/object-email-preview.component.d.ts +0 -16
- package/object-preview/lib/components/object-preview/object-preview.component.d.ts +0 -24
- package/object-preview/lib/services/object-preview.service.d.ts +0 -40
- package/object-relationship/lib/actions/add-relationship/add-relationship.component.d.ts +0 -37
- package/object-relationship/lib/actions/relationship-target-search/relationship-target-search.component.d.ts +0 -36
- package/object-relationship/lib/node-summary/node-summary.component.d.ts +0 -26
- package/object-relationship/lib/object-relationship-graph/object-relationship-graph.component.d.ts +0 -30
- package/object-relationship/lib/object-relationship-list/object-relationship-list-item/object-relationship-list-item.component.d.ts +0 -14
- package/object-relationship/lib/object-relationship-list/object-relationship-list.component.d.ts +0 -13
- package/object-relationship/lib/object-relationship.component.d.ts +0 -28
- package/object-relationship/lib/object-relationship.const.d.ts +0 -10
- package/object-relationship/lib/object-relationship.interface.d.ts +0 -38
- package/object-relationship/lib/object-relationship.module.d.ts +0 -7
- package/object-relationship/lib/object-relationship.service.d.ts +0 -26
- package/object-summary/lib/multi-object-summary/multi-object-summary.component.d.ts +0 -7
- package/object-summary/lib/object-summary/object-summary.component.d.ts +0 -64
- package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +0 -28
- package/object-summary/lib/object-summary.module.d.ts +0 -9
- package/object-versions/lib/object-versions.component.d.ts +0 -34
- package/object-versions/lib/object-versions.module.d.ts +0 -7
- package/overflow-hidden/lib/overflow-hidden.component.d.ts +0 -19
- package/overflow-hidden/lib/overflow-hidden.module.d.ts +0 -7
- package/overflow-menu/lib/overflow-menu.component.d.ts +0 -33
- package/overflow-menu/lib/overflow-menu.interface.d.ts +0 -10
- package/overflow-menu/lib/overflow-menu.module.d.ts +0 -7
- package/pagination/lib/pagination.component.d.ts +0 -21
- package/pagination/lib/pagination.interface.d.ts +0 -5
- package/popout/lib/fullscreen.directive.d.ts +0 -4
- package/popout/lib/popout-trigger/popout-trigger.component.d.ts +0 -13
- package/popout/lib/popout.component.d.ts +0 -59
- package/popout/lib/popout.interface.d.ts +0 -24
- package/popout/lib/popout.module.d.ts +0 -9
- package/query-list/lib/query-list.component.d.ts +0 -488
- package/query-list/lib/query-list.module.d.ts +0 -7
- package/renderer/lib/property-renderer/abstract.renderer.d.ts +0 -14
- package/renderer/lib/property-renderer/boolean.renderer.component.d.ts +0 -6
- package/renderer/lib/property-renderer/datetime.renderer.d.ts +0 -6
- package/renderer/lib/property-renderer/decimal.renderer.component.d.ts +0 -6
- package/renderer/lib/property-renderer/filesize.renderer.component.d.ts +0 -7
- package/renderer/lib/property-renderer/icon.renderer.component.d.ts +0 -8
- package/renderer/lib/property-renderer/index.d.ts +0 -11
- package/renderer/lib/property-renderer/integer.renderer.component.d.ts +0 -6
- package/renderer/lib/property-renderer/organization.renderer.d.ts +0 -13
- package/renderer/lib/property-renderer/string.renderer.component.d.ts +0 -6
- package/renderer/lib/property-renderer/table.renderer.component.d.ts +0 -17
- package/renderer/lib/property-renderer/unknown.renderer.d.ts +0 -6
- package/renderer/lib/renderer.directive.d.ts +0 -13
- package/renderer/lib/services/renderer/renderer.interface.d.ts +0 -4
- package/renderer/lib/services/renderer/renderer.service.d.ts +0 -35
- package/sequence-list/lib/sequence-list.component.d.ts +0 -40
- package/sequence-list/lib/sequence-list.interface.d.ts +0 -17
- package/simple-search/lib/models/index.d.ts +0 -1
- package/simple-search/lib/models/object-type-aggregation.model.d.ts +0 -14
- package/simple-search/lib/simple-search/simple-search.component.d.ts +0 -40
- package/sort/lib/sort/models/index.d.ts +0 -1
- package/sort/lib/sort/models/sort.interface.d.ts +0 -7
- package/sort/lib/sort/sort.component.d.ts +0 -25
- package/split-view/lib/split-area-cover.directive.d.ts +0 -15
- package/split-view/lib/split-area.directive.d.ts +0 -21
- package/split-view/lib/split-view.component.d.ts +0 -159
- package/split-view/lib/split-view.interface.d.ts +0 -11
- package/split-view/lib/split-view.module.d.ts +0 -8
- package/tile-list/lib/tile-actions-menu/tile-actions-menu.component.d.ts +0 -11
- package/tile-list/lib/tile-config/action-select/action-select.component.d.ts +0 -13
- package/tile-list/lib/tile-config/icon-select/icon-select.component.d.ts +0 -11
- package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +0 -26
- package/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.d.ts +0 -20
- package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +0 -17
- package/tile-list/lib/tile-config/tile-config.component.d.ts +0 -48
- package/tile-list/lib/tile-extension/directive/tile-extension.directive.d.ts +0 -11
- package/tile-list/lib/tile-extension/extensions/email.extension.d.ts +0 -10
- package/tile-list/lib/tile-extension/tile-extension.service.d.ts +0 -16
- package/tile-list/lib/tile-list/tile-list.component.d.ts +0 -637
- package/tile-list/lib/tile-list/tile-list.interface.d.ts +0 -18
- package/token-search/lib/token-search.component.d.ts +0 -35
- package/token-search/lib/token-search.interface.d.ts +0 -27
- package/token-search/lib/token-search.module.d.ts +0 -7
- package/tree/lib/tree-node/tree-node.component.d.ts +0 -21
- package/tree/lib/tree.component.d.ts +0 -53
- package/tree/lib/tree.interface.d.ts +0 -11
- package/tree/lib/tree.service.d.ts +0 -35
- package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +0 -12
- package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +0 -33
- package/upload-progress/lib/upload-progress/upload-progress.module.d.ts +0 -7
- package/widget-grid/lib/widget-grid-event.service.d.ts +0 -10
- package/widget-grid/lib/widget-grid-registry.service.d.ts +0 -81
- package/widget-grid/lib/widget-grid-workspaces/widget-grid-workspaces.component.d.ts +0 -53
- package/widget-grid/lib/widget-grid-workspaces/widget-grid-workspaces.interface.d.ts +0 -17
- package/widget-grid/lib/widget-grid-workspaces/workspace-edit/workspace-edit.component.d.ts +0 -10
- package/widget-grid/lib/widget-grid.component.d.ts +0 -52
- package/widget-grid/lib/widget-grid.interface.d.ts +0 -51
- package/widget-grid/lib/widget-grid.module.d.ts +0 -8
- package/widget-grid/lib/widget-grid.service.d.ts +0 -45
- package/widget-grid/lib/widget-grid.utils.d.ts +0 -18
- package/widget-grid/lib/widget-picker/widget-picker.component.d.ts +0 -38
- package/widget-grid/lib/widgets/noop/noop.component.d.ts +0 -7
package/index.d.ts
CHANGED
|
@@ -1,6 +1,909 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition, MatSnackBarRef } from '@angular/material/snack-bar';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
4
|
+
import * as i1 from '@angular/common';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* List of element selectors that should be excluded from halo focus
|
|
8
|
+
* when they are inside a Material form field component (mat-form-field).
|
|
9
|
+
*
|
|
10
|
+
* These elements typically have their own built-in focus indicators provided
|
|
11
|
+
* by Angular Material, making the halo focus redundant or visually conflicting.
|
|
12
|
+
*
|
|
13
|
+
* **Included Selectors:**
|
|
14
|
+
* - `input` - Text inputs, number inputs, etc. inside mat-form-field
|
|
15
|
+
* - `textarea` - Multi-line text inputs inside mat-form-field
|
|
16
|
+
* - `mat-select` - Material select dropdowns inside mat-form-field
|
|
17
|
+
*
|
|
18
|
+
* **Why Exclude These:**
|
|
19
|
+
* Angular Material form fields provide their own focus styling with floating labels,
|
|
20
|
+
* underlines, and color changes. Adding a halo around these elements would:
|
|
21
|
+
* - Create visual clutter and redundancy
|
|
22
|
+
* - Potentially conflict with Material's focus styling
|
|
23
|
+
* - Reduce the clarity of Material Design's established patterns
|
|
24
|
+
*
|
|
25
|
+
* **Note:** These elements will still receive halo focus if they appear OUTSIDE
|
|
26
|
+
* of mat-form-field containers. The exclusion only applies when they're wrapped
|
|
27
|
+
* in a mat-form-field.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link HaloUtilityService.shouldSkipElementInMatFormField} for implementation
|
|
30
|
+
*/
|
|
31
|
+
declare const haloExcludedElementsInMatFormField: string[];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* List of keyboard navigation keys that trigger halo position updates.
|
|
35
|
+
*
|
|
36
|
+
* When any of these keys are pressed while an element is focused, the halo service
|
|
37
|
+
* schedules an immediate position update to ensure the halo follows the focused element
|
|
38
|
+
* if it moves within the page (e.g., scrolling a list, moving through a table).
|
|
39
|
+
*
|
|
40
|
+
* **Included Keys:**
|
|
41
|
+
* - `ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown` - Directional navigation
|
|
42
|
+
* - `Home`, `End` - Jump to start/end of content
|
|
43
|
+
* - `PageUp`, `PageDown` - Page-level scrolling
|
|
44
|
+
*
|
|
45
|
+
* **Why This Matters:**
|
|
46
|
+
* Arrow keys and navigation keys can cause the focused element to scroll or move within
|
|
47
|
+
* its container (e.g., scrolling a select dropdown, moving focus in a grid). By tracking
|
|
48
|
+
* these keys, the halo can immediately update its position to follow the element, preventing
|
|
49
|
+
* visual misalignment.
|
|
50
|
+
*
|
|
51
|
+
* **Performance Note:**
|
|
52
|
+
* Updates are scheduled using requestAnimationFrame, so even rapid key presses won't
|
|
53
|
+
* cause performance issues.
|
|
54
|
+
*
|
|
55
|
+
* @see {@link HaloFocusService} for the implementation of keydown handling
|
|
56
|
+
*/
|
|
57
|
+
declare const haloFocusNavigationKeys: string[];
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Default offset (in pixels) between the halo border and the focused element's edges.
|
|
61
|
+
*
|
|
62
|
+
* This value determines how far the halo appears from the focused element:
|
|
63
|
+
* - **Positive value** (default: 3): Halo appears outside the element
|
|
64
|
+
* - **Zero (0)**: Halo aligns exactly with element edges (neutral offset)
|
|
65
|
+
* - **Negative value**: Halo appears inside the element (inset)
|
|
66
|
+
*
|
|
67
|
+
* **Override Methods:**
|
|
68
|
+
* - **Per-element**: Use `halo-offset="value"` attribute
|
|
69
|
+
* - **Per-container**: Use `halo-container-offset="value"` or preset attributes
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```html
|
|
73
|
+
* <!-- Uses default 3px offset (outside) -->
|
|
74
|
+
* <button>Default</button>
|
|
75
|
+
*
|
|
76
|
+
* <!-- Custom 5px offset -->
|
|
77
|
+
* <input halo-offset="5" />
|
|
78
|
+
*
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @default 3
|
|
82
|
+
*/
|
|
83
|
+
declare const defaultHaloFocusOffset = 3;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Default CSS styles for the halo focus element.
|
|
87
|
+
*
|
|
88
|
+
* These styles define the visual appearance and behavior of the halo border that
|
|
89
|
+
* highlights keyboard-focused elements. The halo is a fixed-position overlay that
|
|
90
|
+
* follows the focused element across the page.
|
|
91
|
+
*
|
|
92
|
+
* **Style Properties:**
|
|
93
|
+
* - `position: 'fixed'` - Keeps halo in viewport regardless of scroll position
|
|
94
|
+
* - `pointerEvents: 'none'` - Allows click-through; halo doesn't block interactions
|
|
95
|
+
* - `zIndex: '9999'` - Ensures halo appears above most other elements
|
|
96
|
+
* - `border` - Primary border using CSS variable `--ymt-primary` (2px solid)
|
|
97
|
+
* - `boxShadow` - Soft shadow with 20% opacity for subtle depth effect
|
|
98
|
+
* - `borderRadius` - Default 8px rounded corners for modern appearance
|
|
99
|
+
* - `opacity: '0'` - Initially hidden; visibility controlled by service
|
|
100
|
+
* - `transform: 'translateZ(0)'` - Creates GPU layer for smoother animations
|
|
101
|
+
*
|
|
102
|
+
* **CSS Variable Dependencies:**
|
|
103
|
+
* - `--ymt-primary` - Primary theme color for border and shadow
|
|
104
|
+
*
|
|
105
|
+
* **Note:** These are base styles that can be overridden globally via HaloFocusConfig
|
|
106
|
+
* or per-element using halo-* attributes.
|
|
107
|
+
*
|
|
108
|
+
* @see {@link HaloFocusConfig} for global style customization
|
|
109
|
+
*/
|
|
110
|
+
declare const haloFocusStyles: Partial<CSSStyleDeclaration>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Default session duration (in milliseconds) when no explicit duration is provided.
|
|
114
|
+
*
|
|
115
|
+
* This value is used as the fallback session lifetime when:
|
|
116
|
+
* - `provideSession()` is called without a duration parameter
|
|
117
|
+
* - Before `startSession(duration)` is called with a backend-provided value
|
|
118
|
+
*
|
|
119
|
+
* **Timeline:**
|
|
120
|
+
* ```
|
|
121
|
+
* [Session Start] ──────────────────────────────► [Session Expires]
|
|
122
|
+
* ← sessionDefaultDuration →
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* **Override Methods:**
|
|
126
|
+
* - **At startup (known duration)**: `provideSession(customDuration)`
|
|
127
|
+
* - **After login (dynamic duration)**: `sessionService.startSession(backendDuration)`
|
|
128
|
+
*
|
|
129
|
+
* **Usage Scenarios:**
|
|
130
|
+
*
|
|
131
|
+
* Scenario 1 - Fixed duration:
|
|
132
|
+
* ```ts
|
|
133
|
+
* // app.config.ts
|
|
134
|
+
* providers: [
|
|
135
|
+
* provideSession(45 * 60 * 1000) // Override to 45 minutes
|
|
136
|
+
* ]
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* Scenario 2 - Backend-provided duration:
|
|
140
|
+
* ```ts
|
|
141
|
+
* // app.config.ts
|
|
142
|
+
* providers: [
|
|
143
|
+
* provideSession() // Uses default 30 minutes initially
|
|
144
|
+
* ]
|
|
145
|
+
*
|
|
146
|
+
* // auth.service.ts (after login)
|
|
147
|
+
* login().subscribe(response => {
|
|
148
|
+
* sessionService.startSession(response.sessionExpiresIn); // Update to backend value
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* **Related Constants:**
|
|
153
|
+
* - {@link sessionActivityWindowBeforeEnd} - When to start tracking user activity
|
|
154
|
+
* - {@link sessionPopupBeforeEnd} - When to show the expiry warning popup
|
|
155
|
+
*
|
|
156
|
+
* @default 30 minutes (1800000 milliseconds)
|
|
157
|
+
*/
|
|
158
|
+
declare const sessionDefaultDuration: number;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Time window (in milliseconds) before session expiry when user activity triggers auto-extension.
|
|
162
|
+
*
|
|
163
|
+
* During this window, the service tracks user interactions (mouse, keyboard, scroll) and HTTP activity.
|
|
164
|
+
* If any activity is detected, the session is automatically extended, preventing the expiry warning popup.
|
|
165
|
+
*
|
|
166
|
+
* **Session Timeline:**
|
|
167
|
+
* ```
|
|
168
|
+
* [Session Start] ──────────────────────────────► [Session Expires]
|
|
169
|
+
* ▲ ▲
|
|
170
|
+
* │ └─ sessionPopupBeforeEnd (1 min)
|
|
171
|
+
* └─ Activity window starts (2 min)
|
|
172
|
+
*
|
|
173
|
+
* ┌─────────────────────────────────────────────┐
|
|
174
|
+
* │ Activity Window (2 minutes) │
|
|
175
|
+
* │ • Tracks: mousemove, keydown, click, scroll │
|
|
176
|
+
* │ • Tracks: HTTP requests (debounced) │
|
|
177
|
+
* │ • If activity detected → auto-extend │
|
|
178
|
+
* │ • If no activity → show warning popup │
|
|
179
|
+
* └─────────────────────────────────────────────┘
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* **Why This Matters:**
|
|
183
|
+
* - Prevents unnecessary interruptions for active users
|
|
184
|
+
* - Reduces server-side session renewal traffic by batching extensions
|
|
185
|
+
* - Provides a grace period before showing the expiry warning
|
|
186
|
+
*
|
|
187
|
+
* **Tracked Activities:**
|
|
188
|
+
* - **User interactions**: `mousemove`, `keydown`, `click`, `scroll` on `window`
|
|
189
|
+
* - **HTTP traffic**: Any request via `BackendService.httpCommunicationOccurred$` (debounced 500ms)
|
|
190
|
+
*
|
|
191
|
+
* **Interaction with Other Constants:**
|
|
192
|
+
* - Must be **greater than** {@link sessionPopupBeforeEnd} to allow the activity window before the popup
|
|
193
|
+
* - Typical relationship: `activityWindow > popupWarning` (e.g., 2 min > 1 min)
|
|
194
|
+
*
|
|
195
|
+
* **Performance Note:**
|
|
196
|
+
* Activity tracking is only active during this window, not throughout the entire session,
|
|
197
|
+
* minimizing performance impact of event listeners.
|
|
198
|
+
*
|
|
199
|
+
* @default 2 minutes (120000 milliseconds)
|
|
200
|
+
* @see {@link SessionService.setupUserActivityTracking} for implementation details
|
|
201
|
+
*/
|
|
202
|
+
declare const sessionActivityWindowBeforeEnd: number;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Time (in milliseconds) before session expiry when the warning popup is displayed.
|
|
206
|
+
*
|
|
207
|
+
* When this threshold is reached without detected user activity during the activity window,
|
|
208
|
+
* a snackbar notification appears, warning the user that their session will expire soon
|
|
209
|
+
* and providing an "Extend session" action button.
|
|
210
|
+
*
|
|
211
|
+
* **Session Timeline:**
|
|
212
|
+
* ```
|
|
213
|
+
* [Session Start] ──────────────────────────────► [Session Expires]
|
|
214
|
+
* ▲ ▲
|
|
215
|
+
* │ └─ Popup appears (1 min before expiry)
|
|
216
|
+
* └─ Activity window starts (2 min before expiry)
|
|
217
|
+
*
|
|
218
|
+
* User has no activity during the 2-minute window:
|
|
219
|
+
* ├─ 2 min before: Activity tracking starts
|
|
220
|
+
* ├─ 1 min before: ⚠️ Popup shows "Session expires in one minute"
|
|
221
|
+
* └─ 0 min: Auto-logout if no action taken
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* **Popup Behavior:**
|
|
225
|
+
* - Displays a warning message: "Session expires in one minute"
|
|
226
|
+
* - Provides an action button: "Extend session"
|
|
227
|
+
* - Clicking "Extend session" → extends session by the full session duration
|
|
228
|
+
* - Ignoring the popup → automatic logout when timer reaches zero
|
|
229
|
+
* - Only one popup is shown at a time (subsequent extensions dismiss the existing popup)
|
|
230
|
+
*
|
|
231
|
+
* **Cross-Tab Synchronization:**
|
|
232
|
+
* If the user extends the session in one browser tab, all other tabs:
|
|
233
|
+
* - Automatically dismiss their popups (if shown)
|
|
234
|
+
* - Reset their timers to the new expiry time
|
|
235
|
+
* - Avoid showing redundant warnings
|
|
236
|
+
*
|
|
237
|
+
* **Interaction with Other Constants:**
|
|
238
|
+
* - Must be **less than** {@link sessionActivityWindowBeforeEnd}
|
|
239
|
+
* - Typical relationship: `activityWindow > popupWarning` (e.g., 2 min > 1 min)
|
|
240
|
+
* - The gap between them determines how long the activity window runs before the popup
|
|
241
|
+
*
|
|
242
|
+
* **UX Considerations:**
|
|
243
|
+
* - **1 minute** gives users enough time to react without being too intrusive
|
|
244
|
+
* - Too short (e.g., 10 seconds): Users may not have time to respond
|
|
245
|
+
* - Too long (e.g., 5 minutes): Users may be unnecessarily interrupted if they return
|
|
246
|
+
*
|
|
247
|
+
* @default 1 minute (60000 milliseconds)
|
|
248
|
+
* @see {@link SessionService.showPopup} for popup implementation
|
|
249
|
+
*/
|
|
250
|
+
declare const sessionPopupBeforeEnd: number;
|
|
251
|
+
|
|
252
|
+
declare enum ChannelMessage {
|
|
253
|
+
SessionExtended = "SessionExtended",
|
|
254
|
+
SessionLogout = "SessionLogout"
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Configuration options for the Halo Focus service.
|
|
259
|
+
*
|
|
260
|
+
* These settings define the default visual appearance of the focus halo.
|
|
261
|
+
* Individual elements can override these defaults using halo-* attributes,
|
|
262
|
+
* and containers can set defaults for their children using halo-container-* attributes.
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* const config: HaloFocusConfig = {
|
|
266
|
+
* innerColor: '#007bff',
|
|
267
|
+
* outerColor: 'rgba(0, 123, 255, 0.25)'
|
|
268
|
+
* };
|
|
269
|
+
*/
|
|
270
|
+
interface HaloFocusConfig {
|
|
271
|
+
/**
|
|
272
|
+
* Inner color for the halo element.
|
|
273
|
+
*
|
|
274
|
+
* Accepts any valid CSS color value:
|
|
275
|
+
* - Named colors: 'blue', 'red'
|
|
276
|
+
* - Hex: '#007bff', '#f00'
|
|
277
|
+
* - RGB: 'rgb(0, 123, 255)'
|
|
278
|
+
* - RGBA: 'rgba(0, 123, 255, 0.5)'
|
|
279
|
+
* - CSS variables: 'var(--primary-color)'
|
|
280
|
+
* - Modern CSS: 'rgba(from var(--color) r g b / 0.5)'
|
|
281
|
+
*
|
|
282
|
+
* @default 'var(--ymt-primary)'
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* innerColor: '#007bff'
|
|
286
|
+
* innerColor: 'var(--accent-color)'
|
|
287
|
+
*/
|
|
288
|
+
innerColor?: string;
|
|
289
|
+
/**
|
|
290
|
+
* Outer color that appears around the halo element.
|
|
291
|
+
*
|
|
292
|
+
* Creates a subtle glow effect around the focused element.
|
|
293
|
+
* The outer color is 4px wide and surrounds the inner color.
|
|
294
|
+
*
|
|
295
|
+
* Accepts any valid CSS color value with alpha transparency recommended.
|
|
296
|
+
*
|
|
297
|
+
* @default 'rgba(from var(--ymt-primary) r g b / 0.2)'
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* outerColor: 'rgba(0, 123, 255, 0.25)'
|
|
301
|
+
* outerColor: 'rgba(from var(--accent) r g b / 0.3)'
|
|
302
|
+
*/
|
|
303
|
+
outerColor?: string;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
type ChannelPayload = {
|
|
307
|
+
type: ChannelMessage;
|
|
308
|
+
expiresAt?: number;
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
type SnackBarLevel = 'info' | 'success' | 'warning' | 'danger';
|
|
312
|
+
|
|
313
|
+
interface SnackBarData {
|
|
314
|
+
level: SnackBarLevel;
|
|
315
|
+
message: string;
|
|
316
|
+
action?: string;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
interface SnackBarOptions {
|
|
320
|
+
duration?: number;
|
|
321
|
+
horizontalPosition?: MatSnackBarHorizontalPosition;
|
|
322
|
+
verticalPosition?: MatSnackBarVerticalPosition;
|
|
323
|
+
action?: string;
|
|
324
|
+
level?: SnackBarLevel;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Provides and initializes the Halo Focus feature for the Angular application.
|
|
329
|
+
*
|
|
330
|
+
* This function sets up a global visual accessibility enhancement that creates a
|
|
331
|
+
* "halo" border around keyboard-focused elements, making navigation more visible
|
|
332
|
+
* and improving the user experience for keyboard users.
|
|
333
|
+
*
|
|
334
|
+
* **What It Does:**
|
|
335
|
+
* - Registers HaloFocusService and HaloUtility as application-wide providers
|
|
336
|
+
* - Automatically initializes the service during app startup via APP_INITIALIZER
|
|
337
|
+
* - Runs initialization outside Angular zone for optimal performance
|
|
338
|
+
* - Creates a persistent halo element that tracks focus throughout the application
|
|
339
|
+
*
|
|
340
|
+
* **Key Features:**
|
|
341
|
+
* - Keyboard-only focus indication (respects CSS :focus-visible)
|
|
342
|
+
* - Performance-optimized with requestAnimationFrame and zone-free execution
|
|
343
|
+
* - Fully customizable via global config or per-element attributes
|
|
344
|
+
* - Supports container-level defaults for consistent styling
|
|
345
|
+
* - Automatic visibility detection and responsive to DOM changes
|
|
346
|
+
*
|
|
347
|
+
* **Configuration Options:**
|
|
348
|
+
* @param config - Optional global configuration object
|
|
349
|
+
* @param config.innerColor - Inner color of the halo (default: 'var(--ymt-primary)')
|
|
350
|
+
* @param config.outerColor - Outer color around the halo (default: 'rgba(from var(--ymt-primary) r g b / 0.2)')
|
|
351
|
+
*
|
|
352
|
+
* @returns EnvironmentProviders for the Halo Focus feature
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* // Basic usage in app.config.ts
|
|
356
|
+
* export const appConfig: ApplicationConfig = {
|
|
357
|
+
* providers: [
|
|
358
|
+
* provideHaloFocus()
|
|
359
|
+
* ]
|
|
360
|
+
* };
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* // With custom configuration
|
|
364
|
+
* export const appConfig: ApplicationConfig = {
|
|
365
|
+
* providers: [
|
|
366
|
+
* provideHaloFocus({
|
|
367
|
+
* innerColor: '#007bff',
|
|
368
|
+
* outerColor: 'rgba(0, 123, 255, 0.25)'
|
|
369
|
+
* })
|
|
370
|
+
* ]
|
|
371
|
+
* };
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* // Using element-level attributes in your template
|
|
375
|
+
* <button halo-color="red">Custom Red Halo</button>
|
|
376
|
+
* <input halo-offset="5" />
|
|
377
|
+
* <select halo-skip>No Halo</select>
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* // Using container-level attributes
|
|
381
|
+
* <form halo-container halo-container-color="blue" halo-container-offset="5">
|
|
382
|
+
* <input /> <!-- Will use blue color and 5px offset -->
|
|
383
|
+
* <button halo-color="red">Submit</button> <!-- Overrides with red -->
|
|
384
|
+
* </form>
|
|
385
|
+
*/
|
|
386
|
+
declare function provideHaloFocus(config?: HaloFocusConfig): EnvironmentProviders;
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Provides and initializes the SessionService at application startup.
|
|
390
|
+
*
|
|
391
|
+
* What it does
|
|
392
|
+
* - Registers SessionService as a singleton to manage session expiry across the app
|
|
393
|
+
* - Runs `session.init()` via APP_INITIALIZER when the app boots
|
|
394
|
+
* - Initializes cross-tab BroadcastChannel sync, HTTP debounce hooks, and user-activity listeners
|
|
395
|
+
* - Automatically tracks HTTP activity and user interactions to extend sessions
|
|
396
|
+
*
|
|
397
|
+
* Usage scenarios
|
|
398
|
+
*
|
|
399
|
+
* Scenario 1: Known session duration at startup
|
|
400
|
+
* When the session duration is predetermined and constant, provide it here.
|
|
401
|
+
* ```ts
|
|
402
|
+
* // app.config.ts
|
|
403
|
+
* export const appConfig: ApplicationConfig = {
|
|
404
|
+
* providers: [
|
|
405
|
+
* provideSession(30 * 60 * 1000), // 30 minutes
|
|
406
|
+
* ]
|
|
407
|
+
* };
|
|
408
|
+
* ```
|
|
409
|
+
*
|
|
410
|
+
* Scenario 2: Dynamic session duration from backend
|
|
411
|
+
* When the session duration is determined after login (e.g., from backend response),
|
|
412
|
+
* omit the parameter here and call `startSession()` after receiving the duration.
|
|
413
|
+
* ```ts
|
|
414
|
+
* // app.config.ts
|
|
415
|
+
* export const appConfig: ApplicationConfig = {
|
|
416
|
+
* providers: [
|
|
417
|
+
* provideSession(), // Defaults to 30 minutes until startSession() is called
|
|
418
|
+
* ]
|
|
419
|
+
* };
|
|
420
|
+
*
|
|
421
|
+
* // After login in AuthService:
|
|
422
|
+
* login().subscribe(response => {
|
|
423
|
+
* sessionService.startSession(response.sessionExpiresIn); // Set actual duration
|
|
424
|
+
* });
|
|
425
|
+
* ```
|
|
426
|
+
*
|
|
427
|
+
* @param sessionDuration Optional session duration in milliseconds. If omitted, defaults to 30 minutes (1800000ms).
|
|
428
|
+
*/
|
|
429
|
+
declare function provideSession(sessionDuration?: number): EnvironmentProviders;
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Service that creates and manages a visual "halo" border around keyboard-focused elements
|
|
433
|
+
* to enhance navigation visibility and improve accessibility.
|
|
434
|
+
*
|
|
435
|
+
* This service operates globally across the application, automatically tracking focus events
|
|
436
|
+
* and dynamically positioning a halo element around the currently focused element. The halo
|
|
437
|
+
* responds to window scrolls, resizes, and DOM mutations to maintain accurate positioning.
|
|
438
|
+
*
|
|
439
|
+
* **Key Features:**
|
|
440
|
+
* - Keyboard-only focus indication (respects :focus-visible)
|
|
441
|
+
* - Performance-optimized with requestAnimationFrame and runs outside Angular zone
|
|
442
|
+
* - Element-level and container-level customization support
|
|
443
|
+
* - Automatic visibility detection (handles clipping, hidden elements, etc.)
|
|
444
|
+
* - Responsive to dynamic DOM changes via ResizeObserver and MutationObserver
|
|
445
|
+
* - Smart exclusion for Angular Material form fields (prevents redundant styling)
|
|
446
|
+
*
|
|
447
|
+
* **Usage:**
|
|
448
|
+
* 1. Add `provideHaloFocus()` to your providers array in app.config.ts
|
|
449
|
+
* 2. The service initializes automatically and appends a halo element to the DOM
|
|
450
|
+
* 3. Optionally customize appearance globally or per-element using attributes
|
|
451
|
+
*
|
|
452
|
+
* **Element-Level Attributes:**
|
|
453
|
+
* - `halo-skip` - Excludes element from halo highlighting
|
|
454
|
+
* - `halo-color="color"` - Custom halo color (e.g., "blue", "#00ff00", "rgb(255,0,0)")
|
|
455
|
+
* - `halo-offset="value"` - Custom numeric offset in pixels (default: 3)
|
|
456
|
+
*
|
|
457
|
+
* **Container-Level Attributes:**
|
|
458
|
+
* Define default halo styles for all focused children. Child elements can override
|
|
459
|
+
* container settings with their own halo-* attributes.
|
|
460
|
+
*
|
|
461
|
+
* - `halo-container` - Marks element as a halo container (required for other attributes)
|
|
462
|
+
* - `halo-container-skip` - Excludes all focused children from halo highlighting
|
|
463
|
+
* - `halo-container-color="color"` - Default halo color for focused children
|
|
464
|
+
* - `halo-container-offset="value"` - Default offset for focused children
|
|
465
|
+
*
|
|
466
|
+
* **Material Form Field Integration:**
|
|
467
|
+
* Elements inside Angular Material form fields (mat-form-field) are automatically excluded
|
|
468
|
+
* from halo focus to prevent visual conflicts with Material's built-in focus styling.
|
|
469
|
+
* Excluded elements: input, mat-select (configurable via haloExcludedElementsInMatFormField)
|
|
470
|
+
*
|
|
471
|
+
* @example
|
|
472
|
+
* ```html
|
|
473
|
+
* <!-- Element-level customization -->
|
|
474
|
+
* <button halo-color="red">Custom Red Halo</button>
|
|
475
|
+
* <input halo-offset="5" />
|
|
476
|
+
* <select halo-skip>No Halo</select>
|
|
477
|
+
*
|
|
478
|
+
* <!-- Container-level defaults -->
|
|
479
|
+
* <form halo-container halo-container-color="blue" halo-container-offset="5">
|
|
480
|
+
* <input /> <!-- Inherits blue color and 5px offset -->
|
|
481
|
+
* <button halo-color="red">Submit</button> <!-- Overrides with red, keeps 5px offset -->
|
|
482
|
+
* </form>
|
|
483
|
+
* ```
|
|
484
|
+
*
|
|
485
|
+
* **Performance Notes:**
|
|
486
|
+
* - Service runs outside Angular's zone to prevent unnecessary change detection
|
|
487
|
+
* - Uses requestAnimationFrame for smooth rendering
|
|
488
|
+
* - Only shows halo for keyboard interactions (respects :focus-visible)
|
|
489
|
+
*
|
|
490
|
+
* @see {@link provideHaloFocus} for initialization and configuration
|
|
491
|
+
* @see {@link HaloFocusConfig} for global configuration options
|
|
492
|
+
*/
|
|
493
|
+
declare class HaloFocusService {
|
|
494
|
+
#private;
|
|
495
|
+
/**
|
|
496
|
+
* Initializes the Halo Focus service and sets up the global halo tracking system.
|
|
497
|
+
*
|
|
498
|
+
* This method performs the following initialization steps:
|
|
499
|
+
* 1. Applies optional configuration for halo appearance (inner and outer colors)
|
|
500
|
+
* 2. Creates and appends the halo DIV element to the document body
|
|
501
|
+
* 3. Attaches global event listeners for focus, blur, keyboard, mouse, scroll, and resize events
|
|
502
|
+
* 4. Sets up ResizeObserver and MutationObserver for tracking dynamic DOM changes
|
|
503
|
+
*
|
|
504
|
+
* **Lifecycle:**
|
|
505
|
+
* - Called automatically by `provideHaloFocus()` during app initialization
|
|
506
|
+
* - Runs outside Angular's zone to prevent triggering change detection
|
|
507
|
+
* - Initializes only once per application lifecycle
|
|
508
|
+
*
|
|
509
|
+
* **Performance:**
|
|
510
|
+
* - Uses passive event listeners where applicable
|
|
511
|
+
* - Leverages requestAnimationFrame for efficient rendering
|
|
512
|
+
* - Observers are conditionally created only if browser supports them
|
|
513
|
+
*
|
|
514
|
+
* @param config - Optional configuration object for customizing halo appearance
|
|
515
|
+
* @param config.innerColor - Custom inner color (overrides default primary color)
|
|
516
|
+
* @param config.outerColor - Custom outer color (overrides default shadow)
|
|
517
|
+
*
|
|
518
|
+
* @internal This method should not be called manually; use `provideHaloFocus()` instead
|
|
519
|
+
*/
|
|
520
|
+
init(config?: HaloFocusConfig): void;
|
|
521
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HaloFocusService, never>;
|
|
522
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<HaloFocusService>;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Utility service providing helper methods for the Halo Focus feature.
|
|
527
|
+
*
|
|
528
|
+
* This service contains pure utility functions for:
|
|
529
|
+
* - Element validation (focusability, visibility, focus-visible state)
|
|
530
|
+
* - Material form field detection and exclusion logic
|
|
531
|
+
* - Style calculations (colors, offsets, positioning)
|
|
532
|
+
* - DOM traversal (finding halo containers, checking parent visibility)
|
|
533
|
+
* - Halo element manipulation (size, color, position)
|
|
534
|
+
*
|
|
535
|
+
* **Scope & Performance:**
|
|
536
|
+
* This service is intentionally NOT provided in root (`providedIn: 'root'` is omitted).
|
|
537
|
+
* Instead, it's provided locally via `provideHaloFocus()`, ensuring it's only instantiated
|
|
538
|
+
* when the Halo Focus feature is actually used. This optimization prevents unnecessary
|
|
539
|
+
* service creation in applications that don't use halo focus.
|
|
540
|
+
*
|
|
541
|
+
* **Note:** This service is used exclusively by `HaloFocusService` and should not be
|
|
542
|
+
* injected or used elsewhere in the application.
|
|
543
|
+
*
|
|
544
|
+
* @internal
|
|
545
|
+
*/
|
|
546
|
+
declare class HaloUtilityService {
|
|
547
|
+
/**
|
|
548
|
+
* Checks if an element is focusable (can receive keyboard focus).
|
|
549
|
+
*
|
|
550
|
+
* An element is considered focusable if:
|
|
551
|
+
* - It has a non-negative tabIndex (>= 0), OR
|
|
552
|
+
* - It's a natively focusable element (A, BUTTON, INPUT, SELECT, TEXTAREA), OR
|
|
553
|
+
* - It has contentEditable enabled
|
|
554
|
+
*
|
|
555
|
+
* @param element - Element to check
|
|
556
|
+
* @returns true if element can receive focus, false otherwise
|
|
557
|
+
*/
|
|
558
|
+
isFocusable(element: Element | null): element is HTMLElement;
|
|
559
|
+
/**
|
|
560
|
+
* Checks if an element is inside a Material form field (mat-form-field).
|
|
561
|
+
*
|
|
562
|
+
* Traverses up the DOM tree from the element to check if any parent
|
|
563
|
+
* has the `mat-form-field` tag name. This is used to determine if
|
|
564
|
+
* certain elements should skip halo focus because they're already
|
|
565
|
+
* styled by Angular Material.
|
|
566
|
+
*
|
|
567
|
+
* **Search Scope:**
|
|
568
|
+
* - Starts from element itself
|
|
569
|
+
* - Stops at document.body
|
|
570
|
+
* - Returns true on first mat-form-field match
|
|
571
|
+
*
|
|
572
|
+
* @param element - The element to check
|
|
573
|
+
* @returns true if element is inside a mat-form-field, false otherwise
|
|
574
|
+
*/
|
|
575
|
+
isElementInsideMatFormField(element: HTMLElement): boolean;
|
|
576
|
+
/**
|
|
577
|
+
* Determines if an element should be excluded from halo focus when inside mat-form-field.
|
|
578
|
+
*
|
|
579
|
+
* Checks two conditions:
|
|
580
|
+
* 1. Element tag name matches one of the excluded selectors (input, mat-select, etc.)
|
|
581
|
+
* 2. Element is inside a mat-form-field component
|
|
582
|
+
*
|
|
583
|
+
* If both conditions are true, the element should skip halo focus because
|
|
584
|
+
* Angular Material already provides adequate focus styling.
|
|
585
|
+
*
|
|
586
|
+
* **Excluded Elements (configurable via haloExcludedElementsInMatFormField):**
|
|
587
|
+
* - `input` elements inside mat-form-field
|
|
588
|
+
* - `textarea` elements inside mat-form-field
|
|
589
|
+
* - `mat-select` elements inside mat-form-field
|
|
590
|
+
*
|
|
591
|
+
* **Note:** Elements outside mat-form-field will NOT be skipped, even if
|
|
592
|
+
* their tag matches the exclusion list.
|
|
593
|
+
*
|
|
594
|
+
* @param element - The focused element to check
|
|
595
|
+
* @returns true if element should be skipped (no halo), false if halo should be shown
|
|
596
|
+
*/
|
|
597
|
+
shouldSkipElementInMatFormField(element: HTMLElement): boolean;
|
|
598
|
+
/**
|
|
599
|
+
* Determines if an element should display the halo based on :focus-visible state.
|
|
600
|
+
*
|
|
601
|
+
* This method respects the CSS :focus-visible pseudo-class, which indicates that
|
|
602
|
+
* focus was triggered by keyboard navigation (not mouse clicks). The halo only appears
|
|
603
|
+
* when both conditions are met:
|
|
604
|
+
* 1. Element matches :focus-visible (browser determines this)
|
|
605
|
+
* 2. Last user interaction was via keyboard (tracked by service)
|
|
606
|
+
*
|
|
607
|
+
* **Fallback:** If browser doesn't support :focus-visible, falls back to checking
|
|
608
|
+
* lastInteractionWasKeyboard only.
|
|
609
|
+
*
|
|
610
|
+
* @param element - The currently focused element
|
|
611
|
+
* @param lastInteractionWasKeyboard - Whether the last interaction was a keyboard event
|
|
612
|
+
* @returns true if halo should be visible, false otherwise
|
|
613
|
+
*/
|
|
614
|
+
matchesFocusVisible(element: HTMLElement, lastInteractionWasKeyboard: boolean): boolean;
|
|
615
|
+
/**
|
|
616
|
+
* Checks if an element is actually visible on the page.
|
|
617
|
+
*
|
|
618
|
+
* Performs comprehensive visibility checks including:
|
|
619
|
+
* - Element has non-zero dimensions (width and height > 0)
|
|
620
|
+
* - Element is not hidden via CSS (display: none, visibility: hidden, opacity: 0)
|
|
621
|
+
* - Element is not clipped by parent containers with overflow: hidden/clip
|
|
622
|
+
* - All parent elements in the hierarchy are visible
|
|
623
|
+
*
|
|
624
|
+
* This prevents the halo from appearing around technically focused but visually
|
|
625
|
+
* hidden elements (e.g., elements in collapsed sections, off-screen elements).
|
|
626
|
+
*
|
|
627
|
+
* @param element - Element to check for visibility
|
|
628
|
+
* @returns true if element is visible to the user, false otherwise
|
|
629
|
+
*/
|
|
630
|
+
isElementVisible(element: HTMLElement): boolean;
|
|
631
|
+
/**
|
|
632
|
+
* Calculates the visible portion of an element considering overflow clipping from parent containers.
|
|
633
|
+
*
|
|
634
|
+
* Traverses up the DOM tree checking for parents with overflow clipping (hidden/clip/auto/scroll).
|
|
635
|
+
* For each clipping parent, calculates the intersection between the element's current visible area
|
|
636
|
+
* and the parent's boundaries, progressively clipping the visible rectangle.
|
|
637
|
+
*
|
|
638
|
+
* This is essential for showing halo focus only around the visible portion of elements that are
|
|
639
|
+
* partially scrolled out of view.
|
|
640
|
+
*
|
|
641
|
+
* @param element - The element to calculate visible rectangle for
|
|
642
|
+
* @returns The visible rectangle, or null if element is completely hidden
|
|
643
|
+
*/
|
|
644
|
+
getVisibleRect(element: HTMLElement): DOMRect | null;
|
|
645
|
+
/**
|
|
646
|
+
* Recursively checks if all parent elements are visible and not clipping the target element.
|
|
647
|
+
*
|
|
648
|
+
* Traverses up the DOM tree from the element to document.body, checking each parent for:
|
|
649
|
+
* - Hidden state (display: none, visibility: hidden, opacity: 0)
|
|
650
|
+
* - Overflow clipping (overflow: hidden/clip) that completely hides the element
|
|
651
|
+
*
|
|
652
|
+
* If any parent has overflow clipping, calculates the visible intersection area.
|
|
653
|
+
* Returns false if element is completely clipped (no visible area).
|
|
654
|
+
*
|
|
655
|
+
* @param element - The element whose parents should be checked
|
|
656
|
+
* @param rect - The bounding rectangle of the element
|
|
657
|
+
* @returns true if element has visible area within all parent containers, false otherwise
|
|
658
|
+
*/
|
|
659
|
+
isParentVisible(element: HTMLElement, rect: DOMRect): boolean;
|
|
660
|
+
/**
|
|
661
|
+
* Generates the complete CSS styles for the halo element, merging defaults with custom config.
|
|
662
|
+
*
|
|
663
|
+
* Takes the base styles from `haloFocusStyles` constant and overrides specific properties
|
|
664
|
+
* if custom configuration is provided. This allows global style customization while
|
|
665
|
+
* maintaining all required base styles.
|
|
666
|
+
*
|
|
667
|
+
* **Configurable Properties:**
|
|
668
|
+
* - Inner color (via config.innerColor)
|
|
669
|
+
* - Outer color (via config.outerColor)
|
|
670
|
+
*
|
|
671
|
+
* **Non-configurable Properties:**
|
|
672
|
+
* - position, pointerEvents, zIndex, opacity, transform (always use defaults)
|
|
673
|
+
*
|
|
674
|
+
* @param config - Optional global configuration object
|
|
675
|
+
* @returns Complete CSS style declaration object for the halo element
|
|
676
|
+
*/
|
|
677
|
+
getHaloFocusStyles(config?: HaloFocusConfig): Partial<CSSStyleDeclaration>;
|
|
678
|
+
/**
|
|
679
|
+
* Finds the nearest parent element marked as a halo container.
|
|
680
|
+
*
|
|
681
|
+
* Traverses up the DOM tree looking for an element with the `halo-container` attribute.
|
|
682
|
+
* Container elements can define default halo styles (color, offset) that apply to all
|
|
683
|
+
* their focused children, unless overridden by child-specific halo-* attributes.
|
|
684
|
+
*
|
|
685
|
+
* **Search Scope:**
|
|
686
|
+
* - Starts from element's immediate parent
|
|
687
|
+
* - Stops at document.body (does not check body itself)
|
|
688
|
+
* - Returns first matching ancestor
|
|
689
|
+
*
|
|
690
|
+
* @param element - The focused element to search from
|
|
691
|
+
* @returns The nearest halo container element, or null if none found
|
|
692
|
+
*/
|
|
693
|
+
getHaloContainer(element: HTMLElement): HTMLElement | null;
|
|
694
|
+
/**
|
|
695
|
+
* Converts any CSS color format to rgba with specified alpha transparency.
|
|
696
|
+
*
|
|
697
|
+
* Handles multiple color formats:
|
|
698
|
+
* - **rgba**: Replaces existing alpha value
|
|
699
|
+
* - **rgb**: Converts to rgba by appending alpha
|
|
700
|
+
* - **Hex** (#RRGGBB): Converts to rgba format
|
|
701
|
+
* - **Named colors**: Uses modern CSS `color-mix` function with alpha
|
|
702
|
+
*
|
|
703
|
+
* Used internally to create outer colors with reduced opacity from inner colors.
|
|
704
|
+
*
|
|
705
|
+
* @param color - CSS color in any valid format (rgba, rgb, hex, named)
|
|
706
|
+
* @param alpha - Alpha transparency value (0-1)
|
|
707
|
+
* @returns Color in rgba format with specified alpha
|
|
708
|
+
*/
|
|
709
|
+
getColorWithAlpha(color: string, alpha: number): string;
|
|
710
|
+
/**
|
|
711
|
+
* Calculates the offset (distance) between the halo border and element edges.
|
|
712
|
+
*
|
|
713
|
+
* Determines offset using the following priority order:
|
|
714
|
+
* 1. **Element's own attributes** (highest priority):
|
|
715
|
+
* - `halo-offset="value"` - Custom numeric value
|
|
716
|
+
* 2. **Parent container attributes** (if element has no offset):
|
|
717
|
+
* - `halo-container-offset="value"`
|
|
718
|
+
* 3. **Default offset** (if nothing specified): 3px
|
|
719
|
+
*
|
|
720
|
+
* @param element - The focused element to calculate offset for
|
|
721
|
+
* @returns Offset value in pixels
|
|
722
|
+
*/
|
|
723
|
+
getTargetOffset(element: HTMLElement | null): number;
|
|
724
|
+
/**
|
|
725
|
+
* Applies custom color styling to the halo element based on element or container attributes.
|
|
726
|
+
*
|
|
727
|
+
* Color resolution priority:
|
|
728
|
+
* 1. **Element's own color**: `halo-color="color"` attribute (highest priority)
|
|
729
|
+
* 2. **Container's color**: `halo-container-color="color"` from nearest halo container
|
|
730
|
+
* 3. **Default color**: From global config or base styles (if no custom color found)
|
|
731
|
+
*
|
|
732
|
+
* When custom color is found:
|
|
733
|
+
* - Sets inner color (2px solid border) with the custom color
|
|
734
|
+
* - Sets outer color (shadow) to match, with 20% alpha transparency for subtle depth
|
|
735
|
+
*
|
|
736
|
+
* When no custom color:
|
|
737
|
+
* - Resets to default styles from config or haloFocusStyles constant
|
|
738
|
+
*
|
|
739
|
+
* @param element - The focused element (checked for halo-color attribute)
|
|
740
|
+
* @param haloElement - The halo DIV element to apply styles to
|
|
741
|
+
* @param config - Optional global config for default colors
|
|
742
|
+
*/
|
|
743
|
+
setCustomColor(element: HTMLElement, haloElement: HTMLDivElement, config?: HaloFocusConfig): void;
|
|
744
|
+
/**
|
|
745
|
+
* Positions and sizes the halo element to surround the focused element.
|
|
746
|
+
*
|
|
747
|
+
* Calculates halo dimensions and position based on:
|
|
748
|
+
* - Element's visible bounding rectangle (considering overflow clipping)
|
|
749
|
+
* - Calculated offset from getTargetOffset() (custom or default)
|
|
750
|
+
* - Element's border-radius for matching rounded corners
|
|
751
|
+
*
|
|
752
|
+
* **Calculation Details:**
|
|
753
|
+
* - Uses getVisibleRect to get only the visible portion of the element
|
|
754
|
+
* - Position: Visible rect's top/left minus offset (for outside positioning)
|
|
755
|
+
* - Size: Visible rect's width/height plus 2× offset (to extend on all sides)
|
|
756
|
+
* - Border radius: Inherited from focused element's computed style
|
|
757
|
+
*
|
|
758
|
+
* Uses Math.floor for position and Math.ceil for dimensions to prevent
|
|
759
|
+
* subpixel rendering issues and ensure full element coverage.
|
|
760
|
+
*
|
|
761
|
+
* @param currentElement - The currently focused element to surround
|
|
762
|
+
* @param haloElement - The halo DIV element to position and size
|
|
763
|
+
*/
|
|
764
|
+
setHaloElementSize(currentElement: HTMLElement, haloElement: HTMLDivElement): void;
|
|
765
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HaloUtilityService, never>;
|
|
766
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<HaloUtilityService>;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/**
|
|
770
|
+
* Manages client-side session expiry: persists expiration, tracks user and HTTP activity,
|
|
771
|
+
* shows a pre-expiry popup with an extend CTA, and syncs state across tabs via BroadcastChannel.
|
|
772
|
+
*
|
|
773
|
+
* Key behaviors
|
|
774
|
+
* - Persists `expiresAt` in AppCacheService so multiple tabs share the same deadline
|
|
775
|
+
* - Automatically listens to BackendService HTTP activity (debounced) to extend sessions
|
|
776
|
+
* - Extends backend session by calling `/api-web/api/idm/whoami` endpoint` (skipped when triggered by HTTP activity)
|
|
777
|
+
* - User activity (mouse, keyboard, scroll) inside a defined window will auto-extend the session
|
|
778
|
+
* - Displays a snack popup shortly before expiry; user can extend from the popup
|
|
779
|
+
* - Broadcasts `SessionExtended` / `SessionLogout` to keep tabs in sync
|
|
780
|
+
*
|
|
781
|
+
* Setup options
|
|
782
|
+
*
|
|
783
|
+
* Option 1: Known session duration at startup
|
|
784
|
+
* Use when the session duration is known in advance and remains constant.
|
|
785
|
+
* ```ts
|
|
786
|
+
* // app.config.ts
|
|
787
|
+
* export const appConfig: ApplicationConfig = {
|
|
788
|
+
* providers: [
|
|
789
|
+
* provideSession(30 * 60 * 1000), // 30 minutes - set at app startup
|
|
790
|
+
* ]
|
|
791
|
+
* };
|
|
792
|
+
* ```
|
|
793
|
+
*
|
|
794
|
+
* Option 2: Dynamic session duration from backend
|
|
795
|
+
* Use when the session duration is determined after login (e.g., from backend response).
|
|
796
|
+
* ```ts
|
|
797
|
+
* // app.config.ts
|
|
798
|
+
* export const appConfig: ApplicationConfig = {
|
|
799
|
+
* providers: [
|
|
800
|
+
* provideSession(), // Initialize without duration (defaults to 30 minutes)
|
|
801
|
+
* ]
|
|
802
|
+
* };
|
|
803
|
+
*
|
|
804
|
+
* // After login in AuthService:
|
|
805
|
+
* login().subscribe(response => {
|
|
806
|
+
* const sessionDuration = response.sessionExpiresIn; // from backend
|
|
807
|
+
* sessionService.startSession(sessionDuration);
|
|
808
|
+
* });
|
|
809
|
+
* ```
|
|
810
|
+
* Note: If no duration is provided to provideSession(), a default of 30 minutes is used until startSession() is called.
|
|
811
|
+
*
|
|
812
|
+
* Lifecycle notes
|
|
813
|
+
* - HTTP activity is automatically tracked via BackendService.httpCommunicationOccurred$
|
|
814
|
+
* - Backend session is extended via whoami endpoint, except when triggered by HTTP activity or cross-tab sync
|
|
815
|
+
* - Internal flag prevents recursive whoami calls when the endpoint itself triggers httpCommunicationOccurred$
|
|
816
|
+
* - Warning and logout timers are reset on every extend
|
|
817
|
+
* - All timers and the popup are cleared on logout
|
|
818
|
+
* - Broadcast messages are listened for and mirrored across tabs
|
|
819
|
+
* - For UI activity, this service listens to DOM events (mousemove, keydown, click, scroll)
|
|
820
|
+
*/
|
|
821
|
+
declare class SessionService {
|
|
822
|
+
#private;
|
|
823
|
+
private translate;
|
|
824
|
+
/**
|
|
825
|
+
* Initializes cross-tab listeners and activity hooks.
|
|
826
|
+
*
|
|
827
|
+
* IMPORTANT: This is automatically called by `provideSession()` via APP_INITIALIZER.
|
|
828
|
+
* You should NOT call this manually - just add `provideSession()` to your app providers.
|
|
829
|
+
*
|
|
830
|
+
* What it does:
|
|
831
|
+
* - Initializes session with provided or default duration value
|
|
832
|
+
* - Wires BroadcastChannel subscriptions for cross-tab sync
|
|
833
|
+
* - Subscribes to BackendService.httpCommunicationOccurred$ for automatic HTTP activity tracking
|
|
834
|
+
* - Attaches DOM event listeners (mousemove, keydown, click, scroll) for the activity window
|
|
835
|
+
*/
|
|
836
|
+
init(sessionDuration?: number): void;
|
|
837
|
+
/**
|
|
838
|
+
* Sets the session duration and starts the session lifecycle.
|
|
839
|
+
*
|
|
840
|
+
* Use this method when you need to set or update the session duration dynamically,
|
|
841
|
+
* typically after receiving authentication/session information from the backend.
|
|
842
|
+
*
|
|
843
|
+
* This is the correct approach when:
|
|
844
|
+
* - Session duration is not known at application startup
|
|
845
|
+
* - Duration comes from a backend API response after login
|
|
846
|
+
* - You need to manually override the duration set via provideSession()
|
|
847
|
+
*
|
|
848
|
+
* Example:
|
|
849
|
+
* ```ts
|
|
850
|
+
* // After login in AuthService
|
|
851
|
+
* login().subscribe(response => {
|
|
852
|
+
* this.sessionService.startSession(response.sessionExpiresIn);
|
|
853
|
+
* });
|
|
854
|
+
* ```
|
|
855
|
+
*
|
|
856
|
+
* @param duration Total session length in milliseconds
|
|
857
|
+
*/
|
|
858
|
+
startSession(duration: number): void;
|
|
859
|
+
/**
|
|
860
|
+
* Extends the session expiry, resets all timers, and optionally broadcasts to other tabs.
|
|
861
|
+
*
|
|
862
|
+
* @param broadcast When true (default), posts a BroadcastChannel message so other tabs sync
|
|
863
|
+
* @param expiresAt Optional custom expiry timestamp; if not provided, calculates based on session duration
|
|
864
|
+
* @param skipBackendCall When true, skips the whoami backend call (used when already triggered by HTTP activity)
|
|
865
|
+
*/
|
|
866
|
+
extendSession(broadcast?: boolean, expiresAt?: number, skipBackendCall?: boolean): void;
|
|
867
|
+
private listenToChannel;
|
|
868
|
+
private scheduleActivityWindow;
|
|
869
|
+
private showPopup;
|
|
870
|
+
private scheduleLogout;
|
|
871
|
+
private performLogout;
|
|
872
|
+
private setupHttpDebounce;
|
|
873
|
+
private setupUserActivityTracking;
|
|
874
|
+
private resetAllTimers;
|
|
875
|
+
private getExpiresAt;
|
|
876
|
+
private setExpiresAt;
|
|
877
|
+
private clearTimers;
|
|
878
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|
|
879
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
declare class SnackBarService {
|
|
883
|
+
#private;
|
|
884
|
+
info(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
885
|
+
success(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
886
|
+
warning(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
887
|
+
danger(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
888
|
+
snack(message: string, options: SnackBarOptions): MatSnackBarRef<SnackBarComponent>;
|
|
889
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SnackBarService, never>;
|
|
890
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SnackBarService>;
|
|
891
|
+
}
|
|
892
|
+
declare class SnackBarComponent {
|
|
893
|
+
#private;
|
|
894
|
+
level: i0.WritableSignal<SnackBarLevel>;
|
|
895
|
+
message: i0.WritableSignal<string>;
|
|
896
|
+
action: i0.WritableSignal<string | undefined>;
|
|
897
|
+
dismiss(withAction?: boolean): void;
|
|
898
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SnackBarComponent, never>;
|
|
899
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SnackBarComponent, "yuv-snack-bar-component", never, {}, {}, never, never, true, never>;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
declare class YuuvisClientFrameworkModule {
|
|
903
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<YuuvisClientFrameworkModule, never>;
|
|
904
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<YuuvisClientFrameworkModule, never, [typeof i1.CommonModule], never>;
|
|
905
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<YuuvisClientFrameworkModule>;
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
export { ChannelMessage, HaloFocusService, HaloUtilityService, SessionService, SnackBarComponent, SnackBarService, YuuvisClientFrameworkModule, defaultHaloFocusOffset, haloExcludedElementsInMatFormField, haloFocusNavigationKeys, haloFocusStyles, provideHaloFocus, provideSession, sessionActivityWindowBeforeEnd, sessionDefaultDuration, sessionPopupBeforeEnd };
|
|
909
|
+
export type { ChannelPayload, HaloFocusConfig, SnackBarData, SnackBarLevel, SnackBarOptions };
|