@fundamental-ngx/cdk 0.38.3-rc.4
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 +89 -0
- package/data-source/README.md +7 -0
- package/data-source/base/abstract-data-provider.class.d.ts +43 -0
- package/data-source/base/base-data-source.class.d.ts +57 -0
- package/data-source/data-source.directive.d.ts +47 -0
- package/data-source/data-source.module.d.ts +7 -0
- package/data-source/helpers/apply-datasource-directive.d.ts +6 -0
- package/data-source/helpers/common.d.ts +7 -0
- package/data-source/helpers/is-datasource.d.ts +5 -0
- package/data-source/index.d.ts +8 -0
- package/data-source/models/data-source-provider.d.ts +23 -0
- package/data-source/models/data-source.d.ts +16 -0
- package/data-source/models/index.d.ts +3 -0
- package/data-source/models/matching-strategy.d.ts +10 -0
- package/data-source/tokens.d.ts +6 -0
- package/esm2020/data-source/base/abstract-data-provider.class.mjs +126 -0
- package/esm2020/data-source/base/base-data-source.class.mjs +99 -0
- package/esm2020/data-source/data-source.directive.mjs +96 -0
- package/esm2020/data-source/data-source.module.mjs +16 -0
- package/esm2020/data-source/fundamental-ngx-cdk-data-source.mjs +5 -0
- package/esm2020/data-source/helpers/apply-datasource-directive.mjs +7 -0
- package/esm2020/data-source/helpers/common.mjs +17 -0
- package/esm2020/data-source/helpers/is-datasource.mjs +7 -0
- package/esm2020/data-source/index.mjs +9 -0
- package/esm2020/data-source/models/data-source-provider.mjs +2 -0
- package/esm2020/data-source/models/data-source.mjs +2 -0
- package/esm2020/data-source/models/index.mjs +4 -0
- package/esm2020/data-source/models/matching-strategy.mjs +7 -0
- package/esm2020/data-source/tokens.mjs +6 -0
- package/esm2020/forms/cva/cva-control.class.mjs +43 -0
- package/esm2020/forms/cva/cva.directive.mjs +309 -0
- package/esm2020/forms/forms.module.mjs +16 -0
- package/esm2020/forms/fundamental-ngx-cdk-forms.mjs +5 -0
- package/esm2020/forms/helpers/state.mjs +6 -0
- package/esm2020/forms/index.mjs +13 -0
- package/esm2020/forms/models/cva.mjs +2 -0
- package/esm2020/forms/models/form-error.mjs +2 -0
- package/esm2020/forms/models/form-field-control.mjs +2 -0
- package/esm2020/forms/models/form-field.mjs +9 -0
- package/esm2020/forms/models/form-state.mjs +2 -0
- package/esm2020/forms/models/select-item.mjs +14 -0
- package/esm2020/forms/tokens/form-field-control.token.mjs +3 -0
- package/esm2020/forms/tokens/form-field.token.mjs +3 -0
- package/esm2020/fundamental-ngx-cdk.mjs +5 -0
- package/esm2020/fundamental-ngx.module.mjs +19 -0
- package/esm2020/public_api.mjs +5 -0
- package/esm2020/utils/abstract-fd-ngx-class.mjs +56 -0
- package/esm2020/utils/coercion/array.mjs +7 -0
- package/esm2020/utils/consts/error-messages.mjs +6 -0
- package/esm2020/utils/consts/index.mjs +5 -0
- package/esm2020/utils/consts/overflow-priority-score.mjs +8 -0
- package/esm2020/utils/consts/unicode-letters.regex.mjs +11 -0
- package/esm2020/utils/consts/unicode-numbers.regex.mjs +8 -0
- package/esm2020/utils/datatypes/color-accent.datatype.mjs +2 -0
- package/esm2020/utils/datatypes/hash.datatype.mjs +2 -0
- package/esm2020/utils/datatypes/index.mjs +4 -0
- package/esm2020/utils/datatypes/size.datatype.mjs +2 -0
- package/esm2020/utils/decorators/apply-css-class.decorator.mjs +60 -0
- package/esm2020/utils/decorators/apply-css-style.decorator.mjs +28 -0
- package/esm2020/utils/decorators/coerce-boolean.mjs +7 -0
- package/esm2020/utils/decorators/coerce-css-pixel.mjs +4 -0
- package/esm2020/utils/decorators/index.mjs +6 -0
- package/esm2020/utils/decorators/setter-alternator.mjs +18 -0
- package/esm2020/utils/deprecated-selector.class.mjs +20 -0
- package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +136 -0
- package/esm2020/utils/directives/auto-complete/auto-complete.module.mjs +17 -0
- package/esm2020/utils/directives/clicked/clicked-behavior.module.mjs +45 -0
- package/esm2020/utils/directives/clicked/clicked-event.plugin.mjs +74 -0
- package/esm2020/utils/directives/clicked/clicked.directive.mjs +52 -0
- package/esm2020/utils/directives/clicked/fdk-clicked-provider.service.mjs +49 -0
- package/esm2020/utils/directives/clicked/index.mjs +4 -0
- package/esm2020/utils/directives/disabled/default-disabled-view-modifier.mjs +12 -0
- package/esm2020/utils/directives/disabled/disabled-behavior.directive.mjs +102 -0
- package/esm2020/utils/directives/disabled/disabled-behavior.interface.mjs +2 -0
- package/esm2020/utils/directives/disabled/disabled-behavior.module.mjs +16 -0
- package/esm2020/utils/directives/disabled/disabled-view-modifier.interface.mjs +2 -0
- package/esm2020/utils/directives/disabled/disabled.observer.mjs +35 -0
- package/esm2020/utils/directives/disabled/fdk-disabled-provider.service.mjs +101 -0
- package/esm2020/utils/directives/disabled/fdk-disabled.token.mjs +3 -0
- package/esm2020/utils/directives/disabled/index.mjs +9 -0
- package/esm2020/utils/directives/disabled/set-disabled-state.mjs +16 -0
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +33 -0
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +98 -0
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +113 -0
- package/esm2020/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +3 -0
- package/esm2020/utils/directives/focus-key-manager/index.mjs +5 -0
- package/esm2020/utils/directives/focusable-item/default-focusable-item-view-modifier.mjs +14 -0
- package/esm2020/utils/directives/focusable-item/fdk-focusable-item-provider.service.mjs +97 -0
- package/esm2020/utils/directives/focusable-item/focusable-item-view-modifier.interface.mjs +2 -0
- package/esm2020/utils/directives/focusable-item/focusable-item.directive.mjs +106 -0
- package/esm2020/utils/directives/focusable-item/focusable-item.module.mjs +16 -0
- package/esm2020/utils/directives/focusable-item/focusable.observer.mjs +47 -0
- package/esm2020/utils/directives/focusable-item/focusable.tokens.mjs +3 -0
- package/esm2020/utils/directives/focusable-item/index.mjs +9 -0
- package/esm2020/utils/directives/focusable-item/is-element-focusable-by-default.mjs +32 -0
- package/esm2020/utils/directives/focusable-item/set-focusable.mjs +12 -0
- package/esm2020/utils/directives/focusable-list/focusable-list.directive.mjs +79 -0
- package/esm2020/utils/directives/focusable-list/focusable-list.module.mjs +17 -0
- package/esm2020/utils/directives/focusable-list/focusable-list.service.mjs +54 -0
- package/esm2020/utils/directives/focusable-list/index.mjs +4 -0
- package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +79 -0
- package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +16 -0
- package/esm2020/utils/directives/ignore-click-on-selection/tokens.mjs +3 -0
- package/esm2020/utils/directives/index.mjs +31 -0
- package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +117 -0
- package/esm2020/utils/directives/initial-focus/initial-focus.module.mjs +16 -0
- package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +263 -0
- package/esm2020/utils/directives/line-clamp/line-clamp.module.mjs +32 -0
- package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +218 -0
- package/esm2020/utils/directives/only-digits/only-digits.module.mjs +16 -0
- package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +42 -0
- package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +140 -0
- package/esm2020/utils/directives/overflow-list/overflow-list.module.mjs +33 -0
- package/esm2020/utils/directives/readonly/default-readonly-view-modifier.mjs +12 -0
- package/esm2020/utils/directives/readonly/fdk-readonly-provider.service.mjs +102 -0
- package/esm2020/utils/directives/readonly/fdk-readonly.token.mjs +3 -0
- package/esm2020/utils/directives/readonly/index.mjs +10 -0
- package/esm2020/utils/directives/readonly/readonly-behavior.directive.mjs +97 -0
- package/esm2020/utils/directives/readonly/readonly-behavior.interface.mjs +2 -0
- package/esm2020/utils/directives/readonly/readonly-behavior.module.mjs +16 -0
- package/esm2020/utils/directives/readonly/readonly-view-modifier.interface.mjs +2 -0
- package/esm2020/utils/directives/readonly/readonly.observer.mjs +33 -0
- package/esm2020/utils/directives/readonly/set-readonly-state.mjs +14 -0
- package/esm2020/utils/directives/repeat/repeat.directive.mjs +65 -0
- package/esm2020/utils/directives/repeat/repeat.module.mjs +16 -0
- package/esm2020/utils/directives/resize/resize-handle.directive.mjs +42 -0
- package/esm2020/utils/directives/resize/resize.directive.mjs +231 -0
- package/esm2020/utils/directives/resize/resize.module.mjs +17 -0
- package/esm2020/utils/directives/selectable-list/index.mjs +8 -0
- package/esm2020/utils/directives/selectable-list/select-component-root.token.mjs +3 -0
- package/esm2020/utils/directives/selectable-list/selectable-item.directive.mjs +147 -0
- package/esm2020/utils/directives/selectable-list/selectable-item.token.mjs +3 -0
- package/esm2020/utils/directives/selectable-list/selectable-list.directive.mjs +93 -0
- package/esm2020/utils/directives/selectable-list/selectable-list.module.mjs +17 -0
- package/esm2020/utils/directives/selectable-list/selectable-list.tokens.mjs +3 -0
- package/esm2020/utils/directives/selectable-list/selection.service.mjs +135 -0
- package/esm2020/utils/directives/template/template.directive.mjs +49 -0
- package/esm2020/utils/directives/template/template.module.mjs +16 -0
- package/esm2020/utils/directives/truncate/truncate.directive.mjs +96 -0
- package/esm2020/utils/directives/truncate/truncate.module.mjs +16 -0
- package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +255 -0
- package/esm2020/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +88 -0
- package/esm2020/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +83 -0
- package/esm2020/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +220 -0
- package/esm2020/utils/drag-and-drop/dnd.interfaces.mjs +2 -0
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +22 -0
- package/esm2020/utils/drag-and-drop/index.mjs +8 -0
- package/esm2020/utils/drag-and-drop/tokens.mjs +4 -0
- package/esm2020/utils/dynamic-component/dynamic-component-config.mjs +2 -0
- package/esm2020/utils/dynamic-component/dynamic-component-container.mjs +21 -0
- package/esm2020/utils/dynamic-component/dynamic-component-injector.mjs +20 -0
- package/esm2020/utils/dynamic-component/dynamic-component.service.mjs +90 -0
- package/esm2020/utils/dynamic-component/index.mjs +5 -0
- package/esm2020/utils/functions/consumer-provider-factory.mjs +12 -0
- package/esm2020/utils/functions/element-size.mjs +23 -0
- package/esm2020/utils/functions/get-document-font-size.mjs +5 -0
- package/esm2020/utils/functions/index.mjs +13 -0
- package/esm2020/utils/functions/intersection-observable.mjs +26 -0
- package/esm2020/utils/functions/is-compact-density.mjs +11 -0
- package/esm2020/utils/functions/key-util.mjs +77 -0
- package/esm2020/utils/functions/module-deprecations-provider.mjs +18 -0
- package/esm2020/utils/functions/parser-file-size.mjs +37 -0
- package/esm2020/utils/functions/random-color-accent.mjs +5 -0
- package/esm2020/utils/functions/resize-observable.mjs +33 -0
- package/esm2020/utils/functions/scroll.mjs +19 -0
- package/esm2020/utils/functions/uuidv4-generator.mjs +12 -0
- package/esm2020/utils/fundamental-ngx-cdk-utils.mjs +5 -0
- package/esm2020/utils/helpers/get-native-element.mjs +18 -0
- package/esm2020/utils/helpers/index.mjs +3 -0
- package/esm2020/utils/helpers/range-selector.mjs +117 -0
- package/esm2020/utils/index.mjs +19 -0
- package/esm2020/utils/interfaces/content-density.mjs +2 -0
- package/esm2020/utils/interfaces/css-class-builder.interface.mjs +2 -0
- package/esm2020/utils/interfaces/css-style-builder.interface.mjs +2 -0
- package/esm2020/utils/interfaces/has-element-ref.interface.mjs +2 -0
- package/esm2020/utils/interfaces/index.mjs +8 -0
- package/esm2020/utils/interfaces/keyboard-support-item.interface.mjs +2 -0
- package/esm2020/utils/interfaces/module-deprecation.interface.mjs +2 -0
- package/esm2020/utils/interfaces/require.interface.mjs +2 -0
- package/esm2020/utils/list-item/list-item-utils.mjs +3 -0
- package/esm2020/utils/models/nullable.mjs +2 -0
- package/esm2020/utils/pipes/displayFn.pipe.mjs +17 -0
- package/esm2020/utils/pipes/filter-strings.pipe.mjs +30 -0
- package/esm2020/utils/pipes/index.mjs +10 -0
- package/esm2020/utils/pipes/is-compact.pipe.mjs +16 -0
- package/esm2020/utils/pipes/pipe.module.mjs +55 -0
- package/esm2020/utils/pipes/safe.pipe.mjs +36 -0
- package/esm2020/utils/pipes/search-highlight.pipe.mjs +31 -0
- package/esm2020/utils/pipes/truncate.pipe.mjs +17 -0
- package/esm2020/utils/pipes/two-digits.pipe.mjs +22 -0
- package/esm2020/utils/pipes/value-by-path.pipe.mjs +16 -0
- package/esm2020/utils/services/content-density.service.mjs +34 -0
- package/esm2020/utils/services/destroyed.service.mjs +20 -0
- package/esm2020/utils/services/focus-trap.service.mjs +92 -0
- package/esm2020/utils/services/index.mjs +11 -0
- package/esm2020/utils/services/keyboard-support/keyboard-support.service.mjs +73 -0
- package/esm2020/utils/services/local-storage.service.mjs +38 -0
- package/esm2020/utils/services/observers/attribute.observer.mjs +81 -0
- package/esm2020/utils/services/resize-observer.service.mjs +94 -0
- package/esm2020/utils/services/rtl.service.mjs +29 -0
- package/esm2020/utils/services/tabbable-element.service.mjs +43 -0
- package/esm2020/utils/services/themes.service.mjs +133 -0
- package/esm2020/utils/tokens/module-deprecations.token.mjs +3 -0
- package/esm2020/utils/typecheck.mjs +75 -0
- package/esm2020/utils/utils.module.mjs +136 -0
- package/fesm2015/fundamental-ngx-cdk-data-source.mjs +378 -0
- package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +1 -0
- package/fesm2015/fundamental-ngx-cdk-forms.mjs +404 -0
- package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +1 -0
- package/fesm2015/fundamental-ngx-cdk-utils.mjs +5767 -0
- package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +1 -0
- package/fesm2015/fundamental-ngx-cdk.mjs +30 -0
- package/fesm2015/fundamental-ngx-cdk.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cdk-data-source.mjs +374 -0
- package/fesm2020/fundamental-ngx-cdk-data-source.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cdk-forms.mjs +399 -0
- package/fesm2020/fundamental-ngx-cdk-forms.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cdk-utils.mjs +5724 -0
- package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cdk.mjs +30 -0
- package/fesm2020/fundamental-ngx-cdk.mjs.map +1 -0
- package/forms/README.md +7 -0
- package/forms/cva/cva-control.class.d.ts +26 -0
- package/forms/cva/cva.directive.d.ts +178 -0
- package/forms/forms.module.d.ts +7 -0
- package/forms/helpers/state.d.ts +3 -0
- package/forms/index.d.ts +12 -0
- package/forms/models/cva.d.ts +4 -0
- package/forms/models/form-error.d.ts +31 -0
- package/forms/models/form-field-control.d.ts +61 -0
- package/forms/models/form-field.d.ts +30 -0
- package/forms/models/form-state.d.ts +1 -0
- package/forms/models/select-item.d.ts +47 -0
- package/forms/tokens/form-field-control.token.d.ts +3 -0
- package/forms/tokens/form-field.token.d.ts +3 -0
- package/fundamental-ngx-cdk-v0.38.3-rc.4.tgz +0 -0
- package/fundamental-ngx.module.d.ts +9 -0
- package/index.d.ts +5 -0
- package/package.json +80 -0
- package/public_api.d.ts +4 -0
- package/utils/README.md +7 -0
- package/utils/abstract-fd-ngx-class.d.ts +27 -0
- package/utils/coercion/array.d.ts +2 -0
- package/utils/consts/error-messages.d.ts +3 -0
- package/utils/consts/index.d.ts +4 -0
- package/utils/consts/overflow-priority-score.d.ts +2 -0
- package/utils/consts/unicode-letters.regex.d.ts +7 -0
- package/utils/consts/unicode-numbers.regex.d.ts +6 -0
- package/utils/datatypes/color-accent.datatype.d.ts +1 -0
- package/utils/datatypes/hash.datatype.d.ts +3 -0
- package/utils/datatypes/index.d.ts +3 -0
- package/utils/datatypes/size.datatype.d.ts +1 -0
- package/utils/decorators/apply-css-class.decorator.d.ts +10 -0
- package/utils/decorators/apply-css-style.decorator.d.ts +10 -0
- package/utils/decorators/coerce-boolean.d.ts +4 -0
- package/utils/decorators/coerce-css-pixel.d.ts +1 -0
- package/utils/decorators/index.d.ts +5 -0
- package/utils/decorators/setter-alternator.d.ts +4 -0
- package/utils/deprecated-selector.class.d.ts +14 -0
- package/utils/directives/auto-complete/auto-complete.directive.d.ts +58 -0
- package/utils/directives/auto-complete/auto-complete.module.d.ts +7 -0
- package/utils/directives/clicked/clicked-behavior.module.d.ts +12 -0
- package/utils/directives/clicked/clicked-event.plugin.d.ts +22 -0
- package/utils/directives/clicked/clicked.directive.d.ts +21 -0
- package/utils/directives/clicked/fdk-clicked-provider.service.d.ts +24 -0
- package/utils/directives/clicked/index.d.ts +3 -0
- package/utils/directives/disabled/default-disabled-view-modifier.d.ts +9 -0
- package/utils/directives/disabled/disabled-behavior.directive.d.ts +35 -0
- package/utils/directives/disabled/disabled-behavior.interface.d.ts +7 -0
- package/utils/directives/disabled/disabled-behavior.module.d.ts +7 -0
- package/utils/directives/disabled/disabled-view-modifier.interface.d.ts +3 -0
- package/utils/directives/disabled/disabled.observer.d.ts +18 -0
- package/utils/directives/disabled/fdk-disabled-provider.service.d.ts +35 -0
- package/utils/directives/disabled/fdk-disabled.token.d.ts +3 -0
- package/utils/directives/disabled/index.d.ts +8 -0
- package/utils/directives/disabled/set-disabled-state.d.ts +4 -0
- package/utils/directives/focus-key-manager/focus-key-manager-helpers.module.d.ts +8 -0
- package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +37 -0
- package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +42 -0
- package/utils/directives/focus-key-manager/focus-key-manager.tokens.d.ts +3 -0
- package/utils/directives/focus-key-manager/index.d.ts +4 -0
- package/utils/directives/focusable-item/default-focusable-item-view-modifier.d.ts +11 -0
- package/utils/directives/focusable-item/fdk-focusable-item-provider.service.d.ts +43 -0
- package/utils/directives/focusable-item/focusable-item-view-modifier.interface.d.ts +3 -0
- package/utils/directives/focusable-item/focusable-item.directive.d.ts +37 -0
- package/utils/directives/focusable-item/focusable-item.module.d.ts +7 -0
- package/utils/directives/focusable-item/focusable.observer.d.ts +18 -0
- package/utils/directives/focusable-item/focusable.tokens.d.ts +2 -0
- package/utils/directives/focusable-item/index.d.ts +8 -0
- package/utils/directives/focusable-item/is-element-focusable-by-default.d.ts +4 -0
- package/utils/directives/focusable-item/set-focusable.d.ts +4 -0
- package/utils/directives/focusable-list/focusable-list.directive.d.ts +25 -0
- package/utils/directives/focusable-list/focusable-list.module.d.ts +8 -0
- package/utils/directives/focusable-list/focusable-list.service.d.ts +35 -0
- package/utils/directives/focusable-list/index.d.ts +3 -0
- package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +22 -0
- package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.d.ts +7 -0
- package/utils/directives/ignore-click-on-selection/tokens.d.ts +2 -0
- package/utils/directives/index.d.ts +30 -0
- package/utils/directives/initial-focus/initial-focus.directive.d.ts +43 -0
- package/utils/directives/initial-focus/initial-focus.module.d.ts +7 -0
- package/utils/directives/line-clamp/line-clamp.directive.d.ts +101 -0
- package/utils/directives/line-clamp/line-clamp.module.d.ts +7 -0
- package/utils/directives/only-digits/only-digits.directive.d.ts +44 -0
- package/utils/directives/only-digits/only-digits.module.d.ts +7 -0
- package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +14 -0
- package/utils/directives/overflow-list/overflow-list.directive.d.ts +62 -0
- package/utils/directives/overflow-list/overflow-list.module.d.ts +8 -0
- package/utils/directives/readonly/default-readonly-view-modifier.d.ts +9 -0
- package/utils/directives/readonly/fdk-readonly-provider.service.d.ts +35 -0
- package/utils/directives/readonly/fdk-readonly.token.d.ts +2 -0
- package/utils/directives/readonly/index.d.ts +9 -0
- package/utils/directives/readonly/readonly-behavior.directive.d.ts +32 -0
- package/utils/directives/readonly/readonly-behavior.interface.d.ts +7 -0
- package/utils/directives/readonly/readonly-behavior.module.d.ts +7 -0
- package/utils/directives/readonly/readonly-view-modifier.interface.d.ts +3 -0
- package/utils/directives/readonly/readonly.observer.d.ts +18 -0
- package/utils/directives/readonly/set-readonly-state.d.ts +4 -0
- package/utils/directives/repeat/repeat.directive.d.ts +28 -0
- package/utils/directives/repeat/repeat.module.d.ts +7 -0
- package/utils/directives/resize/resize-handle.directive.d.ts +14 -0
- package/utils/directives/resize/resize.directive.d.ts +57 -0
- package/utils/directives/resize/resize.module.d.ts +8 -0
- package/utils/directives/selectable-list/index.d.ts +7 -0
- package/utils/directives/selectable-list/select-component-root.token.d.ts +10 -0
- package/utils/directives/selectable-list/selectable-item.directive.d.ts +47 -0
- package/utils/directives/selectable-list/selectable-item.token.d.ts +11 -0
- package/utils/directives/selectable-list/selectable-list.directive.d.ts +33 -0
- package/utils/directives/selectable-list/selectable-list.module.d.ts +8 -0
- package/utils/directives/selectable-list/selectable-list.tokens.d.ts +2 -0
- package/utils/directives/selectable-list/selection.service.d.ts +65 -0
- package/utils/directives/template/template.directive.d.ts +18 -0
- package/utils/directives/template/template.module.d.ts +7 -0
- package/utils/directives/truncate/truncate.directive.d.ts +51 -0
- package/utils/directives/truncate/truncate.module.d.ts +7 -0
- package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +86 -0
- package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +32 -0
- package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +61 -0
- package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +65 -0
- package/utils/drag-and-drop/dnd.interfaces.d.ts +33 -0
- package/utils/drag-and-drop/drag-and-drop.module.d.ts +12 -0
- package/utils/drag-and-drop/index.d.ts +7 -0
- package/utils/drag-and-drop/tokens.d.ts +3 -0
- package/utils/dynamic-component/dynamic-component-config.d.ts +6 -0
- package/utils/dynamic-component/dynamic-component-container.d.ts +19 -0
- package/utils/dynamic-component/dynamic-component-injector.d.ts +13 -0
- package/utils/dynamic-component/dynamic-component.service.d.ts +46 -0
- package/utils/dynamic-component/index.d.ts +4 -0
- package/utils/functions/consumer-provider-factory.d.ts +5 -0
- package/utils/functions/element-size.d.ts +12 -0
- package/utils/functions/get-document-font-size.d.ts +2 -0
- package/utils/functions/index.d.ts +12 -0
- package/utils/functions/intersection-observable.d.ts +8 -0
- package/utils/functions/is-compact-density.d.ts +7 -0
- package/utils/functions/key-util.d.ts +16 -0
- package/utils/functions/module-deprecations-provider.d.ts +5 -0
- package/utils/functions/parser-file-size.d.ts +2 -0
- package/utils/functions/random-color-accent.d.ts +3 -0
- package/utils/functions/resize-observable.d.ts +8 -0
- package/utils/functions/scroll.d.ts +7 -0
- package/utils/functions/uuidv4-generator.d.ts +2 -0
- package/utils/helpers/get-native-element.d.ts +13 -0
- package/utils/helpers/index.d.ts +2 -0
- package/utils/helpers/range-selector.d.ts +84 -0
- package/utils/index.d.ts +18 -0
- package/utils/interfaces/content-density.d.ts +1 -0
- package/utils/interfaces/css-class-builder.interface.d.ts +6 -0
- package/utils/interfaces/css-style-builder.interface.d.ts +5 -0
- package/utils/interfaces/has-element-ref.interface.d.ts +5 -0
- package/utils/interfaces/index.d.ts +7 -0
- package/utils/interfaces/keyboard-support-item.interface.d.ts +6 -0
- package/utils/interfaces/module-deprecation.interface.d.ts +8 -0
- package/utils/interfaces/require.interface.d.ts +6 -0
- package/utils/list-item/list-item-utils.d.ts +7 -0
- package/utils/models/nullable.d.ts +6 -0
- package/utils/pipes/displayFn.pipe.d.ts +8 -0
- package/utils/pipes/filter-strings.pipe.d.ts +16 -0
- package/utils/pipes/index.d.ts +9 -0
- package/utils/pipes/is-compact.pipe.d.ts +9 -0
- package/utils/pipes/pipe.module.d.ts +14 -0
- package/utils/pipes/safe.pipe.d.ts +12 -0
- package/utils/pipes/search-highlight.pipe.d.ts +8 -0
- package/utils/pipes/truncate.pipe.d.ts +8 -0
- package/utils/pipes/two-digits.pipe.d.ts +8 -0
- package/utils/pipes/value-by-path.pipe.d.ts +8 -0
- package/utils/services/content-density.service.d.ts +19 -0
- package/utils/services/destroyed.service.d.ts +11 -0
- package/utils/services/focus-trap.service.d.ts +43 -0
- package/utils/services/index.d.ts +10 -0
- package/utils/services/keyboard-support/keyboard-support.service.d.ts +34 -0
- package/utils/services/local-storage.service.d.ts +13 -0
- package/utils/services/observers/attribute.observer.d.ts +26 -0
- package/utils/services/resize-observer.service.d.ts +34 -0
- package/utils/services/rtl.service.d.ts +12 -0
- package/utils/services/tabbable-element.service.d.ts +12 -0
- package/utils/services/themes.service.d.ts +43 -0
- package/utils/tokens/module-deprecations.token.d.ts +3 -0
- package/utils/typecheck.d.ts +47 -0
- package/utils/utils.module.d.ts +23 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ElementRef, Inject, Injectable, NgZone, Optional, Self, SkipSelf } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, filter, firstValueFrom, ReplaySubject, Subject } from 'rxjs';
|
|
3
|
+
import { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable.tokens';
|
|
4
|
+
import { FocusableItemDirective } from './focusable-item.directive';
|
|
5
|
+
import { FocusableObserver } from './focusable.observer';
|
|
6
|
+
import { DefaultFocusableItemViewModifier } from './default-focusable-item-view-modifier';
|
|
7
|
+
import { map, startWith, takeUntil, tap } from 'rxjs/operators';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./focusable.observer";
|
|
10
|
+
import * as i2 from "./focusable-item.directive";
|
|
11
|
+
export class FdkFocusableItemProvider extends ReplaySubject {
|
|
12
|
+
/** @hidden */
|
|
13
|
+
constructor(ngZone, elementRef, focusableObserver, selfFocusable$, parentFocusable$) {
|
|
14
|
+
super(1);
|
|
15
|
+
this.ngZone = ngZone;
|
|
16
|
+
this.elementRef = elementRef;
|
|
17
|
+
this.focusableObserver = focusableObserver;
|
|
18
|
+
this.selfFocusable$ = selfFocusable$;
|
|
19
|
+
this.parentFocusable$ = parentFocusable$;
|
|
20
|
+
/** @hidden */
|
|
21
|
+
this.focusable = true;
|
|
22
|
+
/** @hidden */
|
|
23
|
+
this._viewModifiers$ = new BehaviorSubject(this._getInitialViewModifiers());
|
|
24
|
+
/** @hidden */
|
|
25
|
+
this._focusableChange$ = this._getFocusableChange$();
|
|
26
|
+
/** @hidden */
|
|
27
|
+
this._destroy$ = new Subject();
|
|
28
|
+
combineLatest([this._focusableChange$, this._viewModifiers$])
|
|
29
|
+
.pipe(tap(([isFocusable]) => this.setFocusable(isFocusable)), takeUntil(this._destroy$))
|
|
30
|
+
.subscribe();
|
|
31
|
+
this._focusableChange$
|
|
32
|
+
.pipe(tap((isFocusable) => (this.focusable = isFocusable)), tap((isFocusable) => this.next(isFocusable)), takeUntil(this._destroy$))
|
|
33
|
+
.subscribe();
|
|
34
|
+
}
|
|
35
|
+
/** @hidden */
|
|
36
|
+
ngOnDestroy() {
|
|
37
|
+
this._destroy$.next();
|
|
38
|
+
this._destroy$.complete();
|
|
39
|
+
this.complete();
|
|
40
|
+
if (this._focusableObserver$) {
|
|
41
|
+
this.focusableObserver.unobserve(this.elementRef);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Adds view modifier
|
|
46
|
+
* @param modifier
|
|
47
|
+
*/
|
|
48
|
+
addViewModifier(modifier) {
|
|
49
|
+
const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];
|
|
50
|
+
this._viewModifiers$.next(viewModifiers);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sets focusable state of the element.
|
|
54
|
+
* @param isReadonly
|
|
55
|
+
*/
|
|
56
|
+
setFocusable(isReadonly) {
|
|
57
|
+
firstValueFrom(this.ngZone.onStable).then(() => {
|
|
58
|
+
this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setFocusable(isReadonly));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/** @hidden */
|
|
62
|
+
_getInitialViewModifiers() {
|
|
63
|
+
return !this.selfFocusable$ ? [new DefaultFocusableItemViewModifier(this.elementRef)] : [this.selfFocusable$];
|
|
64
|
+
}
|
|
65
|
+
/** @hidden */
|
|
66
|
+
_getFocusableChange$() {
|
|
67
|
+
if (!this.selfFocusable$) {
|
|
68
|
+
this._focusableObserver$ = this.focusableObserver.observe(this.elementRef);
|
|
69
|
+
}
|
|
70
|
+
const self$ = (this.selfFocusable$ || this._focusableObserver$).pipe(startWith(this.focusable));
|
|
71
|
+
const disablingEvents = [self$];
|
|
72
|
+
if (this.parentFocusable$) {
|
|
73
|
+
disablingEvents.push(this.parentFocusable$);
|
|
74
|
+
}
|
|
75
|
+
return combineLatest(disablingEvents).pipe(map((focusableStates) => focusableStates.some(Boolean)), filter((isFocusable) => isFocusable !== this.focusable));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
FdkFocusableItemProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FdkFocusableItemProvider, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.FocusableObserver }, { token: FDK_FOCUSABLE_ITEM_DIRECTIVE, optional: true, self: true }, { token: FDK_FOCUSABLE_ITEM_DIRECTIVE, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
FdkFocusableItemProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FdkFocusableItemProvider });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FdkFocusableItemProvider, decorators: [{
|
|
81
|
+
type: Injectable
|
|
82
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.FocusableObserver }, { type: i2.FocusableItemDirective, decorators: [{
|
|
83
|
+
type: Optional
|
|
84
|
+
}, {
|
|
85
|
+
type: Self
|
|
86
|
+
}, {
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [FDK_FOCUSABLE_ITEM_DIRECTIVE]
|
|
89
|
+
}] }, { type: i2.FocusableItemDirective, decorators: [{
|
|
90
|
+
type: Optional
|
|
91
|
+
}, {
|
|
92
|
+
type: SkipSelf
|
|
93
|
+
}, {
|
|
94
|
+
type: Inject,
|
|
95
|
+
args: [FDK_FOCUSABLE_ITEM_DIRECTIVE]
|
|
96
|
+
}] }]; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLWZvY3VzYWJsZS1pdGVtLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWl0ZW0vZmRrLWZvY3VzYWJsZS1pdGVtLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR2hFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxhQUFzQjtJQWdCaEUsY0FBYztJQUNkLFlBQ1ksTUFBYyxFQUNkLFVBQW1DLEVBQ25DLGlCQUFvQyxFQUNzQixjQUF1QyxFQUNuQyxnQkFBeUM7UUFFL0csS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBTkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDc0IsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFyQm5ILGNBQWM7UUFDZCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGNBQWM7UUFDRyxvQkFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FFbEcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUNuQyxjQUFjO1FBQ0csc0JBQWlCLEdBQXdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBS3RGLGNBQWM7UUFDRyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVc3QyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3hELElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3RELFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzVCO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQjthQUNqQixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFDcEQsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQzVDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzVCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsUUFBbUM7UUFDL0MsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxVQUFtQjtRQUM1QixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTix3QkFBd0I7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVELGNBQWM7SUFDTixvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsTUFBTSxlQUFlLEdBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsZUFBMEIsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNsRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFELENBQUM7SUFDTixDQUFDOztxSEF4RlEsd0JBQXdCLG1HQXFCRCw0QkFBNEIseUNBQ3hCLDRCQUE0Qjt5SEF0QnZELHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOzswQkFzQkYsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUN2RCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBTZWxmLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtVmlld01vZGlmaWVyIH0gZnJvbSAnLi9mb2N1c2FibGUtaXRlbS12aWV3LW1vZGlmaWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUudG9rZW5zJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPYnNlcnZlciB9IGZyb20gJy4vZm9jdXNhYmxlLm9ic2VydmVyJztcbmltcG9ydCB7IERlZmF1bHRGb2N1c2FibGVJdGVtVmlld01vZGlmaWVyIH0gZnJvbSAnLi9kZWZhdWx0LWZvY3VzYWJsZS1pdGVtLXZpZXctbW9kaWZpZXInO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmRrRm9jdXNhYmxlSXRlbVByb3ZpZGVyIGV4dGVuZHMgUmVwbGF5U3ViamVjdDxib29sZWFuPiBpbXBsZW1lbnRzIEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXIsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1c2FibGUgPSB0cnVlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld01vZGlmaWVycyQ6IEJlaGF2aW9yU3ViamVjdDxGb2N1c2FibGVJdGVtVmlld01vZGlmaWVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAgICAgRm9jdXNhYmxlSXRlbVZpZXdNb2RpZmllcltdXG4gICAgPih0aGlzLl9nZXRJbml0aWFsVmlld01vZGlmaWVycygpKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzYWJsZUNoYW5nZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9nZXRGb2N1c2FibGVDaGFuZ2UkKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzYWJsZU9ic2VydmVyJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgZm9jdXNhYmxlT2JzZXJ2ZXI6IEZvY3VzYWJsZU9ic2VydmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSkgcHJpdmF0ZSBzZWxmRm9jdXNhYmxlJD86IEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBJbmplY3QoRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSkgcHJpdmF0ZSBwYXJlbnRGb2N1c2FibGUkPzogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZVxuICAgICkge1xuICAgICAgICBzdXBlcigxKTtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fZm9jdXNhYmxlQ2hhbmdlJCwgdGhpcy5fdmlld01vZGlmaWVycyRdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChbaXNGb2N1c2FibGVdKSA9PiB0aGlzLnNldEZvY3VzYWJsZShpc0ZvY3VzYWJsZSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChpc0ZvY3VzYWJsZSkgPT4gKHRoaXMuZm9jdXNhYmxlID0gaXNGb2N1c2FibGUpKSxcbiAgICAgICAgICAgICAgICB0YXAoKGlzRm9jdXNhYmxlKSA9PiB0aGlzLm5leHQoaXNGb2N1c2FibGUpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLl9mb2N1c2FibGVPYnNlcnZlciQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHZpZXcgbW9kaWZpZXJcbiAgICAgKiBAcGFyYW0gbW9kaWZpZXJcbiAgICAgKi9cbiAgICBhZGRWaWV3TW9kaWZpZXIobW9kaWZpZXI6IEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld01vZGlmaWVycyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLl92aWV3TW9kaWZpZXJzJC52YWx1ZSwgbW9kaWZpZXJdKS52YWx1ZXMoKV07XG4gICAgICAgIHRoaXMuX3ZpZXdNb2RpZmllcnMkLm5leHQodmlld01vZGlmaWVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBmb2N1c2FibGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIGlzUmVhZG9ubHlcbiAgICAgKi9cbiAgICBzZXRGb2N1c2FibGUoaXNSZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLm5nWm9uZS5vblN0YWJsZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aWV3TW9kaWZpZXJzJC52YWx1ZS5mb3JFYWNoKCh2aWV3TW9kaWZpZXIpID0+IHZpZXdNb2RpZmllci5zZXRGb2N1c2FibGUoaXNSZWFkb25seSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEluaXRpYWxWaWV3TW9kaWZpZXJzKCk6IEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXJbXSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5zZWxmRm9jdXNhYmxlJCA/IFtuZXcgRGVmYXVsdEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXIodGhpcy5lbGVtZW50UmVmKV0gOiBbdGhpcy5zZWxmRm9jdXNhYmxlJF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRGb2N1c2FibGVDaGFuZ2UkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZkZvY3VzYWJsZSQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzYWJsZU9ic2VydmVyJCA9IHRoaXMuZm9jdXNhYmxlT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGYkID0gKHRoaXMuc2VsZkZvY3VzYWJsZSQgfHwgdGhpcy5fZm9jdXNhYmxlT2JzZXJ2ZXIkKS5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvY3VzYWJsZSkpO1xuICAgICAgICBjb25zdCBkaXNhYmxpbmdFdmVudHM6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IFtzZWxmJF07XG4gICAgICAgIGlmICh0aGlzLnBhcmVudEZvY3VzYWJsZSQpIHtcbiAgICAgICAgICAgIGRpc2FibGluZ0V2ZW50cy5wdXNoKHRoaXMucGFyZW50Rm9jdXNhYmxlJCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoZGlzYWJsaW5nRXZlbnRzKS5waXBlKFxuICAgICAgICAgICAgbWFwKChmb2N1c2FibGVTdGF0ZXM6IGJvb2xlYW5bXSkgPT4gZm9jdXNhYmxlU3RhdGVzLnNvbWUoQm9vbGVhbikpLFxuICAgICAgICAgICAgZmlsdGVyKChpc0ZvY3VzYWJsZSkgPT4gaXNGb2N1c2FibGUgIT09IHRoaXMuZm9jdXNhYmxlKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0tdmlldy1tb2RpZmllci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWl0ZW0vZm9jdXNhYmxlLWl0ZW0tdmlldy1tb2RpZmllci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRm9jdXNhYmxlSXRlbVZpZXdNb2RpZmllciB7XG4gICAgc2V0Rm9jdXNhYmxlOiAoaXNGb2N1c2FibGU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { BehaviorSubject, filter, first, ReplaySubject } from 'rxjs';
|
|
4
|
+
import { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable.tokens';
|
|
5
|
+
import { setFocusable } from './set-focusable';
|
|
6
|
+
import { FocusableObserver } from './focusable.observer';
|
|
7
|
+
import { takeUntil, tap } from 'rxjs/operators';
|
|
8
|
+
import { DestroyedService } from '../../services/destroyed.service';
|
|
9
|
+
import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "./focusable.observer";
|
|
12
|
+
import * as i2 from "../../services/destroyed.service";
|
|
13
|
+
export class DeprecatedFocusableItemDirective extends DeprecatedSelector {
|
|
14
|
+
}
|
|
15
|
+
DeprecatedFocusableItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedFocusableItemDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
DeprecatedFocusableItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedFocusableItemDirective, isStandalone: true, selector: "[fnFocusableItem]", providers: [
|
|
17
|
+
{
|
|
18
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
19
|
+
useValue: getDeprecatedModel('[fdkFocusableItem]', '[fnFocusableItem]')
|
|
20
|
+
}
|
|
21
|
+
], usesInheritance: true, ngImport: i0 });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedFocusableItemDirective, decorators: [{
|
|
23
|
+
type: Directive,
|
|
24
|
+
args: [{
|
|
25
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
26
|
+
selector: '[fnFocusableItem]',
|
|
27
|
+
standalone: true,
|
|
28
|
+
providers: [
|
|
29
|
+
{
|
|
30
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
31
|
+
useValue: getDeprecatedModel('[fdkFocusableItem]', '[fnFocusableItem]')
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
export class FocusableItemDirective extends ReplaySubject {
|
|
37
|
+
/** @hidden */
|
|
38
|
+
constructor(_elementRef, _focusableObserver, _destroy$) {
|
|
39
|
+
super(1);
|
|
40
|
+
this._elementRef = _elementRef;
|
|
41
|
+
this._focusableObserver = _focusableObserver;
|
|
42
|
+
this._destroy$ = _destroy$;
|
|
43
|
+
/** @hidden */
|
|
44
|
+
this._focusable = true;
|
|
45
|
+
/** @hidden */
|
|
46
|
+
this._viewInit$ = new BehaviorSubject(false);
|
|
47
|
+
/** Sets focusable state of the element. */
|
|
48
|
+
this.setFocusable = (isFocusable) => {
|
|
49
|
+
setFocusable(this, isFocusable);
|
|
50
|
+
};
|
|
51
|
+
this._focusableObserver
|
|
52
|
+
.observe(this._elementRef)
|
|
53
|
+
.pipe(tap((isFocusable) => {
|
|
54
|
+
if (isFocusable !== this._focusable) {
|
|
55
|
+
this.setFocusable(isFocusable);
|
|
56
|
+
this._focusable = isFocusable;
|
|
57
|
+
this.next(isFocusable);
|
|
58
|
+
}
|
|
59
|
+
}), takeUntil(this._destroy$))
|
|
60
|
+
.subscribe();
|
|
61
|
+
}
|
|
62
|
+
/** Whether the item is focusable. */
|
|
63
|
+
set fdkFocusableItem(val) {
|
|
64
|
+
this._viewInit$.pipe(filter(Boolean), first()).subscribe(() => this.setFocusable(coerceBooleanProperty(val)));
|
|
65
|
+
}
|
|
66
|
+
get fdkFocusableItem() {
|
|
67
|
+
return this._focusable;
|
|
68
|
+
}
|
|
69
|
+
/** @hidden */
|
|
70
|
+
ngAfterViewInit() {
|
|
71
|
+
this._viewInit$.next(true);
|
|
72
|
+
}
|
|
73
|
+
/** Element reference. */
|
|
74
|
+
elementRef() {
|
|
75
|
+
return this._elementRef;
|
|
76
|
+
}
|
|
77
|
+
/** @hidden */
|
|
78
|
+
ngOnDestroy() {
|
|
79
|
+
this.complete();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
FocusableItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.FocusableObserver }, { token: i2.DestroyedService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
|
+
FocusableItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: FocusableItemDirective, isStandalone: true, selector: "[fdkFocusableItem]", inputs: { fdkFocusableItem: "fdkFocusableItem" }, providers: [
|
|
84
|
+
{
|
|
85
|
+
provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,
|
|
86
|
+
useExisting: FocusableItemDirective
|
|
87
|
+
},
|
|
88
|
+
DestroyedService
|
|
89
|
+
], usesInheritance: true, ngImport: i0 });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemDirective, decorators: [{
|
|
91
|
+
type: Directive,
|
|
92
|
+
args: [{
|
|
93
|
+
selector: '[fdkFocusableItem]',
|
|
94
|
+
standalone: true,
|
|
95
|
+
providers: [
|
|
96
|
+
{
|
|
97
|
+
provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,
|
|
98
|
+
useExisting: FocusableItemDirective
|
|
99
|
+
},
|
|
100
|
+
DestroyedService
|
|
101
|
+
]
|
|
102
|
+
}]
|
|
103
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FocusableObserver }, { type: i2.DestroyedService }]; }, propDecorators: { fdkFocusableItem: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}] } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGtCQUFrQixFQUNyQixNQUFNLGlDQUFpQyxDQUFDOzs7O0FBYXpDLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxrQkFBa0I7OzZIQUEzRCxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyxnRUFQOUI7UUFDUDtZQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDO1NBQzFFO0tBQ0o7MkZBRVEsZ0NBQWdDO2tCQVg1QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUM7eUJBQzFFO3FCQUNKO2lCQUNKOztBQWNELE1BQU0sT0FBTyxzQkFDVCxTQUFRLGFBQXNCO0lBa0I5QixjQUFjO0lBQ2QsWUFDWSxXQUFvQyxFQUNwQyxrQkFBcUMsRUFDckMsU0FBMkI7UUFFbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSkQsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFUdkMsY0FBYztRQUNOLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDMUIsY0FBYztRQUNHLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQTZCekQsMkNBQTJDO1FBQzNDLGlCQUFZLEdBQUcsQ0FBQyxXQUFvQixFQUFRLEVBQUU7WUFDMUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUM7UUF2QkUsSUFBSSxDQUFDLGtCQUFrQjthQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN6QixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEIsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM1QjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFuQ0QscUNBQXFDO0lBQ3JDLElBQ0ksZ0JBQWdCLENBQUMsR0FBaUI7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQTZCRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFPRCx5QkFBeUI7SUFDekIsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7bUhBM0RRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG1IQVJwQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxXQUFXLEVBQUUsc0JBQXNCO1NBQ3RDO1FBQ0QsZ0JBQWdCO0tBQ25COzJGQUVRLHNCQUFzQjtrQkFYbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcsd0JBQXdCO3lCQUN0Qzt3QkFDRCxnQkFBZ0I7cUJBQ25CO2lCQUNKO2dLQU9PLGdCQUFnQjtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZpcnN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUudG9rZW5zJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXIgfSBmcm9tICcuL2ZvY3VzYWJsZS1pdGVtLXZpZXctbW9kaWZpZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IHNldEZvY3VzYWJsZSB9IGZyb20gJy4vc2V0LWZvY3VzYWJsZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPYnNlcnZlciB9IGZyb20gJy4vZm9jdXNhYmxlLm9ic2VydmVyJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rlc3Ryb3llZC5zZXJ2aWNlJztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZuRm9jdXNhYmxlSXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0ZvY3VzYWJsZUl0ZW1dJywgJ1tmbkZvY3VzYWJsZUl0ZW1dJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRm9jdXNhYmxlSXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVJdGVtRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+XG4gICAgaW1wbGVtZW50cyBIYXNFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEZvY3VzYWJsZUl0ZW1WaWV3TW9kaWZpZXJcbntcbiAgICAvKiogV2hldGhlciB0aGUgaXRlbSBpcyBmb2N1c2FibGUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRrRm9jdXNhYmxlSXRlbSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl92aWV3SW5pdCQucGlwZShmaWx0ZXIoQm9vbGVhbiksIGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEZvY3VzYWJsZShjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSkpO1xuICAgIH1cblxuICAgIGdldCBmZGtGb2N1c2FibGVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNhYmxlID0gdHJ1ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdJbml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX2ZvY3VzYWJsZU9ic2VydmVyOiBGb2N1c2FibGVPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSBfZGVzdHJveSQ6IERlc3Ryb3llZFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoMSk7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZU9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChpc0ZvY3VzYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGb2N1c2FibGUgIT09IHRoaXMuX2ZvY3VzYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1c2FibGUoaXNGb2N1c2FibGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNhYmxlID0gaXNGb2N1c2FibGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQoaXNGb2N1c2FibGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3SW5pdCQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBmb2N1c2FibGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQuICovXG4gICAgc2V0Rm9jdXNhYmxlID0gKGlzRm9jdXNhYmxlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHNldEZvY3VzYWJsZSh0aGlzLCBpc0ZvY3VzYWJsZSk7XG4gICAgfTtcblxuICAgIC8qKiBFbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FocusableItemDirective, DeprecatedFocusableItemDirective } from './focusable-item.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class FocusableItemModule {
|
|
5
|
+
}
|
|
6
|
+
FocusableItemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
FocusableItemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemModule, imports: [FocusableItemDirective, DeprecatedFocusableItemDirective], exports: [FocusableItemDirective, DeprecatedFocusableItemDirective] });
|
|
8
|
+
FocusableItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemModule });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableItemModule, decorators: [{
|
|
10
|
+
type: NgModule,
|
|
11
|
+
args: [{
|
|
12
|
+
imports: [FocusableItemDirective, DeprecatedFocusableItemDirective],
|
|
13
|
+
exports: [FocusableItemDirective, DeprecatedFocusableItemDirective]
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU10RyxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsWUFIbEIsc0JBQXNCLEVBQUUsZ0NBQWdDLGFBQ3hELHNCQUFzQixFQUFFLGdDQUFnQztpSEFFekQsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsZ0NBQWdDLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLGdDQUFnQyxDQUFDO2lCQUN0RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtRGlyZWN0aXZlLCBEZXByZWNhdGVkRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgRGVwcmVjYXRlZEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtGb2N1c2FibGVJdGVtRGlyZWN0aXZlLCBEZXByZWNhdGVkRm9jdXNhYmxlSXRlbURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNhYmxlSXRlbU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
3
|
+
import { isElementFocusableByDefault } from './is-element-focusable-by-default';
|
|
4
|
+
import { getNativeElement } from '../../helpers/get-native-element';
|
|
5
|
+
import { AttributeObserver } from '../../services/observers/attribute.observer';
|
|
6
|
+
import { ReadonlyObserver } from '../readonly/readonly.observer';
|
|
7
|
+
import { DisabledObserver } from '../disabled/disabled.observer';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../services/observers/attribute.observer";
|
|
10
|
+
export class FocusableObserver {
|
|
11
|
+
/** @hidden */
|
|
12
|
+
constructor(_attributeObserver) {
|
|
13
|
+
this._attributeObserver = _attributeObserver;
|
|
14
|
+
}
|
|
15
|
+
/** @Hidden */
|
|
16
|
+
static isFocusable(element) {
|
|
17
|
+
if (ReadonlyObserver.isReadonly(element)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (DisabledObserver.isDisabled(element)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);
|
|
24
|
+
if (isNaN(tabIndex)) {
|
|
25
|
+
return isElementFocusableByDefault(element);
|
|
26
|
+
}
|
|
27
|
+
return tabIndex > -1;
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
observe(element) {
|
|
31
|
+
const nativeElement = getNativeElement(element);
|
|
32
|
+
return this._attributeObserver.observe(nativeElement).pipe(map(() => FocusableObserver.isFocusable(nativeElement)), distinctUntilChanged());
|
|
33
|
+
}
|
|
34
|
+
/** @hidden */
|
|
35
|
+
unobserve(element) {
|
|
36
|
+
this._attributeObserver.unobserve(element);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
FocusableObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableObserver, deps: [{ token: i1.AttributeObserver }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
FocusableObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableObserver, providedIn: 'root' });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableObserver, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{
|
|
44
|
+
providedIn: 'root'
|
|
45
|
+
}]
|
|
46
|
+
}], ctorParameters: function () { return [{ type: i1.AttributeObserver }]; } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLm9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS5vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBS2pFLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsY0FBYztJQUNkLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQUcsQ0FBQztJQUU3RCxjQUFjO0lBQ2QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUMvQixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN0QyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0M7UUFDRCxPQUFPLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU8sQ0FBQyxPQUErRDtRQUNuRSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3ZELG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxPQUErRDtRQUNyRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzhHQS9CUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VsZW1lbnRGb2N1c2FibGVCeURlZmF1bHQgfSBmcm9tICcuL2lzLWVsZW1lbnQtZm9jdXNhYmxlLWJ5LWRlZmF1bHQnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXR0cmlidXRlT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYnNlcnZlcnMvYXR0cmlidXRlLm9ic2VydmVyJztcbmltcG9ydCB7IFJlYWRvbmx5T2JzZXJ2ZXIgfSBmcm9tICcuLi9yZWFkb25seS9yZWFkb25seS5vYnNlcnZlcic7XG5pbXBvcnQgeyBEaXNhYmxlZE9ic2VydmVyIH0gZnJvbSAnLi4vZGlzYWJsZWQvZGlzYWJsZWQub2JzZXJ2ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzYWJsZU9ic2VydmVyIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2F0dHJpYnV0ZU9ic2VydmVyOiBBdHRyaWJ1dGVPYnNlcnZlcikge31cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgc3RhdGljIGlzRm9jdXNhYmxlKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKFJlYWRvbmx5T2JzZXJ2ZXIuaXNSZWFkb25seShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChEaXNhYmxlZE9ic2VydmVyLmlzRGlzYWJsZWQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWJJbmRleCA9IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpICsgJycsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKHRhYkluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzRWxlbWVudEZvY3VzYWJsZUJ5RGVmYXVsdChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFiSW5kZXggPiAtMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9ic2VydmUoZWxlbWVudDogSGFzRWxlbWVudFJlZjxFbGVtZW50PiB8IEVsZW1lbnQgfCBFbGVtZW50UmVmPEVsZW1lbnQ+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBnZXROYXRpdmVFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZShuYXRpdmVFbGVtZW50KS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IEZvY3VzYWJsZU9ic2VydmVyLmlzRm9jdXNhYmxlKG5hdGl2ZUVsZW1lbnQpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVub2JzZXJ2ZShlbGVtZW50OiBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+IHwgRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLnRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUudG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFID0gbmV3IEluamVjdGlvblRva2VuKCdGb2N1c2FibGUgZGlyZWN0aXZlIHRva2VuJyk7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './focusable-item.module';
|
|
2
|
+
export * from './focusable-item.directive';
|
|
3
|
+
export * from './focusable.tokens';
|
|
4
|
+
export * from './set-focusable';
|
|
5
|
+
export * from './focusable-item-view-modifier.interface';
|
|
6
|
+
export * from './focusable.observer';
|
|
7
|
+
export * from './default-focusable-item-view-modifier';
|
|
8
|
+
export * from './fdk-focusable-item-provider.service';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWl0ZW0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtaXRlbS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUudG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vc2V0LWZvY3VzYWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1pdGVtLXZpZXctbW9kaWZpZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXNhYmxlLm9ic2VydmVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1mb2N1c2FibGUtaXRlbS12aWV3LW1vZGlmaWVyJztcbmV4cG9ydCAqIGZyb20gJy4vZmRrLWZvY3VzYWJsZS1pdGVtLXByb3ZpZGVyLnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
+
import { getNativeElement } from '../../helpers/get-native-element';
|
|
3
|
+
const focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);
|
|
4
|
+
const focusableTagOptions = [
|
|
5
|
+
{
|
|
6
|
+
tag: 'div',
|
|
7
|
+
attributes: [
|
|
8
|
+
{
|
|
9
|
+
name: 'contenteditable',
|
|
10
|
+
valueMatcher: (value) => coerceBooleanProperty(value)
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
];
|
|
15
|
+
/** @hidden */
|
|
16
|
+
export function isElementFocusableByDefault(el) {
|
|
17
|
+
const element = getNativeElement(el);
|
|
18
|
+
const tagName = element.tagName.toLowerCase();
|
|
19
|
+
if (focusableTagnamesByDefault.has(tagName)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return focusableTagOptions.some((tagOptions) => {
|
|
23
|
+
if (tagOptions.tag === tagName) {
|
|
24
|
+
return tagOptions.attributes.some((attribute) => {
|
|
25
|
+
const attrVal = element.getAttribute(attribute.name);
|
|
26
|
+
return attrVal && attribute.valueMatcher(attrVal);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZWxlbWVudC1mb2N1c2FibGUtYnktZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9pcy1lbGVtZW50LWZvY3VzYWJsZS1ieS1kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFeEcsTUFBTSxtQkFBbUIsR0FBRztJQUN4QjtRQUNJLEdBQUcsRUFBRSxLQUFLO1FBQ1YsVUFBVSxFQUFFO1lBQ1I7Z0JBQ0ksSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsWUFBWSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7YUFDaEU7U0FDSjtLQUNKO0NBQ0osQ0FBQztBQUVGLGNBQWM7QUFDZCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsRUFBMEQ7SUFDbEcsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QyxJQUFJLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QyxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQzVCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDNUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELE9BQU8sT0FBTyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXROYXRpdmVFbGVtZW50IH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtbmF0aXZlLWVsZW1lbnQnO1xuXG5jb25zdCBmb2N1c2FibGVUYWduYW1lc0J5RGVmYXVsdCA9IG5ldyBTZXQoWydzZWxlY3QnLCAndGV4dGFyZWEnLCAnaW5wdXQnLCAnYnV0dG9uJywgJ2F1ZGlvJywgJ3ZpZGVvJ10pO1xuXG5jb25zdCBmb2N1c2FibGVUYWdPcHRpb25zID0gW1xuICAgIHtcbiAgICAgICAgdGFnOiAnZGl2JyxcbiAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjb250ZW50ZWRpdGFibGUnLFxuICAgICAgICAgICAgICAgIHZhbHVlTWF0Y2hlcjogKHZhbHVlOiBzdHJpbmcpID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH1cbl07XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50Rm9jdXNhYmxlQnlEZWZhdWx0KGVsOiBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+IHwgRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4pOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0TmF0aXZlRWxlbWVudChlbCk7XG4gICAgY29uc3QgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChmb2N1c2FibGVUYWduYW1lc0J5RGVmYXVsdC5oYXModGFnTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvY3VzYWJsZVRhZ09wdGlvbnMuc29tZSgodGFnT3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAodGFnT3B0aW9ucy50YWcgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWdPcHRpb25zLmF0dHJpYnV0ZXMuc29tZSgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0clZhbCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0clZhbCAmJiBhdHRyaWJ1dGUudmFsdWVNYXRjaGVyKGF0dHJWYWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getNativeElement } from '../../helpers/get-native-element';
|
|
2
|
+
/** @Hidden */
|
|
3
|
+
export function setFocusable(element, isFocusable) {
|
|
4
|
+
const htmlElement = getNativeElement(element);
|
|
5
|
+
if (isFocusable) {
|
|
6
|
+
htmlElement.setAttribute('tabindex', '0');
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
htmlElement.setAttribute('tabindex', '-1');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWZvY3VzYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9zZXQtZm9jdXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3BFLGNBQWM7QUFDZCxNQUFNLFVBQVUsWUFBWSxDQUN4QixPQUErRCxFQUMvRCxXQUFvQjtJQUVwQixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxJQUFJLFdBQVcsRUFBRTtRQUNiLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzdDO1NBQU07UUFDSCxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM5QztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXROYXRpdmVFbGVtZW50IH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtbmF0aXZlLWVsZW1lbnQnO1xuaW1wb3J0IHsgSGFzRWxlbWVudFJlZiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5cbi8qKiBASGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Rm9jdXNhYmxlKFxuICAgIGVsZW1lbnQ6IEhhc0VsZW1lbnRSZWY8RWxlbWVudD4gfCBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICBpc0ZvY3VzYWJsZTogYm9vbGVhblxuKTogdm9pZCB7XG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBnZXROYXRpdmVFbGVtZW50KGVsZW1lbnQpO1xuICAgIGlmIChpc0ZvY3VzYWJsZSkge1xuICAgICAgICBodG1sRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBodG1sRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ContentChildren, Directive, Input, QueryList } from '@angular/core';
|
|
2
|
+
import { map, startWith, takeUntil, tap } from 'rxjs/operators';
|
|
3
|
+
import { FocusableListService } from './focusable-list.service';
|
|
4
|
+
import { FocusableItemDirective } from '../focusable-item/focusable-item.directive';
|
|
5
|
+
import { DestroyedService } from '../../services/destroyed.service';
|
|
6
|
+
import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./focusable-list.service";
|
|
9
|
+
import * as i2 from "../../services/destroyed.service";
|
|
10
|
+
export class DeprecatedFocusableListDirective extends DeprecatedSelector {
|
|
11
|
+
}
|
|
12
|
+
DeprecatedFocusableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedFocusableListDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
DeprecatedFocusableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedFocusableListDirective, isStandalone: true, selector: "[fnFocusableList]", providers: [
|
|
14
|
+
{
|
|
15
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
16
|
+
useValue: getDeprecatedModel('[fdkFocusableList]', '[fnFocusableList]')
|
|
17
|
+
}
|
|
18
|
+
], usesInheritance: true, ngImport: i0 });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedFocusableListDirective, decorators: [{
|
|
20
|
+
type: Directive,
|
|
21
|
+
args: [{
|
|
22
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
23
|
+
selector: '[fnFocusableList]',
|
|
24
|
+
standalone: true,
|
|
25
|
+
providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
28
|
+
useValue: getDeprecatedModel('[fdkFocusableList]', '[fnFocusableList]')
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
export class FocusableListDirective {
|
|
34
|
+
/** @hidden */
|
|
35
|
+
constructor(_focusableListService, _destroy$) {
|
|
36
|
+
this._focusableListService = _focusableListService;
|
|
37
|
+
this._destroy$ = _destroy$;
|
|
38
|
+
/** Direction of navigation. */
|
|
39
|
+
this.navigationDirection = 'vertical';
|
|
40
|
+
/** Direction of the content. */
|
|
41
|
+
this.contentDirection = 'ltr';
|
|
42
|
+
}
|
|
43
|
+
/** @hidden */
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this._focusableItems.changes
|
|
46
|
+
.pipe(startWith(this._focusableItems), map((queryList) => queryList.toArray()), tap((items) => {
|
|
47
|
+
const focusableItems = items.map((item, index) => ({
|
|
48
|
+
index,
|
|
49
|
+
focusable: () => item.fdkFocusableItem,
|
|
50
|
+
elementRef: () => item.elementRef(),
|
|
51
|
+
focus: () => item.elementRef().nativeElement.focus()
|
|
52
|
+
}));
|
|
53
|
+
this._focusableListService.initialize(focusableItems, {
|
|
54
|
+
direction: this.navigationDirection,
|
|
55
|
+
contentDirection: this.contentDirection
|
|
56
|
+
});
|
|
57
|
+
}), takeUntil(this._destroy$))
|
|
58
|
+
.subscribe();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
FocusableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListDirective, deps: [{ token: i1.FocusableListService }, { token: i2.DestroyedService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
+
FocusableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: FocusableListDirective, isStandalone: true, selector: "[fdkFocusableList]", inputs: { navigationDirection: "navigationDirection", contentDirection: "contentDirection" }, providers: [FocusableListService, DestroyedService], queries: [{ propertyName: "_focusableItems", predicate: FocusableItemDirective }], exportAs: ["fdkFocusableList"], ngImport: i0 });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListDirective, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
selector: '[fdkFocusableList]',
|
|
67
|
+
exportAs: 'fdkFocusableList',
|
|
68
|
+
standalone: true,
|
|
69
|
+
providers: [FocusableListService, DestroyedService]
|
|
70
|
+
}]
|
|
71
|
+
}], ctorParameters: function () { return [{ type: i1.FocusableListService }, { type: i2.DestroyedService }]; }, propDecorators: { navigationDirection: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], contentDirection: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], _focusableItems: [{
|
|
76
|
+
type: ContentChildren,
|
|
77
|
+
args: [FocusableItemDirective]
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGtCQUFrQixFQUNyQixNQUFNLGlDQUFpQyxDQUFDOzs7O0FBYXpDLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxrQkFBa0I7OzZIQUEzRCxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyxnRUFQOUI7UUFDUDtZQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDO1NBQzFFO0tBQ0o7MkZBRVEsZ0NBQWdDO2tCQVg1QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUM7eUJBQzFFO3FCQUNKO2lCQUNKOztBQVNELE1BQU0sT0FBTyxzQkFBc0I7SUFZL0IsY0FBYztJQUNkLFlBQW9CLHFCQUEyQyxFQUFVLFNBQTJCO1FBQWhGLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVpwRywrQkFBK0I7UUFFL0Isd0JBQW1CLEdBQThCLFVBQVUsQ0FBQztRQUU1RCxnQ0FBZ0M7UUFFaEMscUJBQWdCLEdBQXlCLEtBQUssQ0FBQztJQU13RCxDQUFDO0lBRXhHLGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPO2FBQ3ZCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUMvQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUN2QyxHQUFHLENBQUMsQ0FBQyxLQUErQixFQUFRLEVBQUU7WUFDMUMsTUFBTSxjQUFjLEdBQW9CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxLQUFLO2dCQUNMLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUN0QyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO2FBQ3ZELENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7Z0JBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUNuQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2FBQzFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzVCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7bUhBcENRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLCtKQUZwQixDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLDBEQVlsQyxzQkFBc0I7MkZBVjlCLHNCQUFzQjtrQkFObEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3REOzBJQUlHLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJMkMsZUFBZTtzQkFBL0QsZUFBZTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbSwgRm9jdXNhYmxlTGlzdFNlcnZpY2UgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzdHJveWVkLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZuRm9jdXNhYmxlTGlzdF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0ZvY3VzYWJsZUxpc3RdJywgJ1tmbkZvY3VzYWJsZUxpc3RdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRm9jdXNhYmxlTGlzdF0nLFxuICAgIGV4cG9ydEFzOiAnZmRrRm9jdXNhYmxlTGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtGb2N1c2FibGVMaXN0U2VydmljZSwgRGVzdHJveWVkU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBEaXJlY3Rpb24gb2YgbmF2aWdhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25EaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAndmVydGljYWwnO1xuXG4gICAgLyoqIERpcmVjdGlvbiBvZiB0aGUgY29udGVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcgfCBudWxsID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSkgcHJpdmF0ZSBfZm9jdXNhYmxlSXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9jdXNhYmxlTGlzdFNlcnZpY2U6IEZvY3VzYWJsZUxpc3RTZXJ2aWNlLCBwcml2YXRlIF9kZXN0cm95JDogRGVzdHJveWVkU2VydmljZSkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5fZm9jdXNhYmxlSXRlbXMpLFxuICAgICAgICAgICAgICAgIG1hcCgocXVlcnlMaXN0KSA9PiBxdWVyeUxpc3QudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICB0YXAoKGl0ZW1zOiBGb2N1c2FibGVJdGVtRGlyZWN0aXZlW10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9jdXNhYmxlSXRlbXM6IEZvY3VzYWJsZUl0ZW1bXSA9IGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogKCkgPT4gaXRlbS5mZGtGb2N1c2FibGVJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlZjogKCkgPT4gaXRlbS5lbGVtZW50UmVmKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1czogKCkgPT4gaXRlbS5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNhYmxlTGlzdFNlcnZpY2UuaW5pdGlhbGl6ZShmb2N1c2FibGVJdGVtcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50RGlyZWN0aW9uOiB0aGlzLmNvbnRlbnREaXJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FocusableListDirective, DeprecatedFocusableListDirective } from './focusable-list.directive';
|
|
3
|
+
import { FocusableItemModule } from '../focusable-item';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class FocusableListModule {
|
|
6
|
+
}
|
|
7
|
+
FocusableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
FocusableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableListDirective, DeprecatedFocusableListDirective], exports: [FocusableListDirective, FocusableItemModule, DeprecatedFocusableListDirective] });
|
|
9
|
+
FocusableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableItemModule] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [FocusableItemModule, FocusableListDirective, DeprecatedFocusableListDirective],
|
|
14
|
+
exports: [FocusableListDirective, FocusableItemModule, DeprecatedFocusableListDirective]
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2ZvY3VzYWJsZS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU14RCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsWUFIbEIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsZ0NBQWdDLGFBQzdFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLGdDQUFnQztpSEFFOUUsbUJBQW1CLFlBSGxCLG1CQUFtQixFQUNLLG1CQUFtQjsyRkFFNUMsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGdDQUFnQyxDQUFDO29CQUN4RixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxnQ0FBZ0MsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgRGVwcmVjYXRlZEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtTW9kdWxlIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtGb2N1c2FibGVJdGVtTW9kdWxlLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBEZXByZWNhdGVkRm9jdXNhYmxlTGlzdERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0ZvY3VzYWJsZUxpc3REaXJlY3RpdmUsIEZvY3VzYWJsZUl0ZW1Nb2R1bGUsIERlcHJlY2F0ZWRGb2N1c2FibGVMaXN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injectable, Renderer2 } from '@angular/core';
|
|
2
|
+
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
3
|
+
import { finalize, fromEvent, merge, Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil, tap } from 'rxjs/operators';
|
|
5
|
+
import { getNativeElement } from '../../helpers/get-native-element';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class FocusableListService {
|
|
8
|
+
/** @hidden */
|
|
9
|
+
constructor(_renderer) {
|
|
10
|
+
this._renderer = _renderer;
|
|
11
|
+
/** @hidden */
|
|
12
|
+
this._refresh$ = new Subject();
|
|
13
|
+
/** @hidden */
|
|
14
|
+
this._destroy$ = new Subject();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initializes the focusable list service with items and configuration.
|
|
18
|
+
* @param items Focusable list items.
|
|
19
|
+
* @param config Initialization configuration.
|
|
20
|
+
*/
|
|
21
|
+
initialize(items, config = {}) {
|
|
22
|
+
this._refresh$.next();
|
|
23
|
+
let keyManager = new FocusKeyManager(items);
|
|
24
|
+
if (config.wrap !== false) {
|
|
25
|
+
keyManager = keyManager.withWrap();
|
|
26
|
+
}
|
|
27
|
+
if (config.direction === 'horizontal') {
|
|
28
|
+
keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced
|
|
29
|
+
}
|
|
30
|
+
keyManager.skipPredicate((item) => {
|
|
31
|
+
const focusable = typeof item.focusable === 'boolean' ? item.focusable : item.focusable();
|
|
32
|
+
return !focusable;
|
|
33
|
+
});
|
|
34
|
+
this.keyManager = keyManager;
|
|
35
|
+
const events$ = items.map((item) => fromEvent(getNativeElement(item), 'keydown'));
|
|
36
|
+
const focusListenerDestroyers = items.map((item) => this._renderer.listen(getNativeElement(item), 'focus', () => this.keyManager?.setActiveItem(item.index)));
|
|
37
|
+
merge(...events$)
|
|
38
|
+
.pipe(tap((keydownEvent) => this.keyManager?.onKeydown(keydownEvent)), takeUntil(merge(this._refresh$, this._destroy$)), finalize(() => {
|
|
39
|
+
focusListenerDestroyers.forEach((d) => d());
|
|
40
|
+
}))
|
|
41
|
+
.subscribe();
|
|
42
|
+
}
|
|
43
|
+
/** @hidden */
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this._destroy$.next();
|
|
46
|
+
this._destroy$.complete();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
FocusableListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
FocusableListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListService });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusableListService, decorators: [{
|
|
52
|
+
type: Injectable
|
|
53
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQVlwRSxNQUFNLE9BQU8sb0JBQW9CO0lBUzdCLGNBQWM7SUFDZCxZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBUHhDLGNBQWM7UUFDRyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCxjQUFjO1FBQ0csY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFHTixDQUFDO0lBRTVDOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBc0IsRUFBRSxTQUE4QixFQUFFO1FBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQU0sS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN2QixVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFlBQVksRUFBRTtZQUNuQyxVQUFVLEdBQUcsVUFBVSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtTQUM3RztRQUNELFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QixNQUFNLFNBQVMsR0FBRyxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUYsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBZ0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzNHLENBQUM7UUFDRixLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDWixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsWUFBMkIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsRUFDOUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNoRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7O2lIQWxEUSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgZmluYWxpemUsIGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgRm9jdXNhYmxlTGlzdENvbmZpZyB7XG4gICAgd3JhcD86IGJvb2xlYW47XG4gICAgZGlyZWN0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgICBjb250ZW50RGlyZWN0aW9uPzogJ2x0cicgfCAncnRsJyB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZUl0ZW0gPSBGb2N1c2FibGVPcHRpb24gJiBIYXNFbGVtZW50UmVmICYgeyBmb2N1c2FibGU6ICgoKSA9PiBib29sZWFuKSB8IGJvb2xlYW47IGluZGV4OiBudW1iZXIgfTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvY3VzYWJsZUxpc3RTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUga2V5TWFuYWdlcj86IEZvY3VzS2V5TWFuYWdlcjxGb2N1c2FibGVJdGVtPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIGZvY3VzYWJsZSBsaXN0IHNlcnZpY2Ugd2l0aCBpdGVtcyBhbmQgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gaXRlbXMgRm9jdXNhYmxlIGxpc3QgaXRlbXMuXG4gICAgICogQHBhcmFtIGNvbmZpZyBJbml0aWFsaXphdGlvbiBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGluaXRpYWxpemUoaXRlbXM6IEZvY3VzYWJsZUl0ZW1bXSwgY29uZmlnOiBGb2N1c2FibGVMaXN0Q29uZmlnID0ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICAgICAgICBsZXQga2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXI8YW55PihpdGVtcyk7XG4gICAgICAgIGlmIChjb25maWcud3JhcCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhXcmFwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAga2V5TWFuYWdlciA9IGtleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihjb25maWcuY29udGVudERpcmVjdGlvbiB8fCAnbHRyJyk7IC8vIHNob3VsZCBiZSByZXBsYWNlZFxuICAgICAgICB9XG4gICAgICAgIGtleU1hbmFnZXIuc2tpcFByZWRpY2F0ZSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNhYmxlID0gdHlwZW9mIGl0ZW0uZm9jdXNhYmxlID09PSAnYm9vbGVhbicgPyBpdGVtLmZvY3VzYWJsZSA6IGl0ZW0uZm9jdXNhYmxlKCk7XG4gICAgICAgICAgICByZXR1cm4gIWZvY3VzYWJsZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlciA9IGtleU1hbmFnZXI7XG4gICAgICAgIGNvbnN0IGV2ZW50cyQgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihnZXROYXRpdmVFbGVtZW50KGl0ZW0pLCAna2V5ZG93bicpKTtcbiAgICAgICAgY29uc3QgZm9jdXNMaXN0ZW5lckRlc3Ryb3llcnMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5saXN0ZW4oZ2V0TmF0aXZlRWxlbWVudChpdGVtKSwgJ2ZvY3VzJywgKCkgPT4gdGhpcy5rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKGl0ZW0uaW5kZXgpKVxuICAgICAgICApO1xuICAgICAgICBtZXJnZSguLi5ldmVudHMkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChrZXlkb3duRXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMua2V5TWFuYWdlcj8ub25LZXlkb3duKGtleWRvd25FdmVudCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLl9yZWZyZXNoJCwgdGhpcy5fZGVzdHJveSQpKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzTGlzdGVuZXJEZXN0cm95ZXJzLmZvckVhY2goKGQpID0+IGQoKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './focusable-list.service';
|
|
2
|
+
export * from './focusable-list.module';
|
|
3
|
+
export * from './focusable-list.directive';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtbGlzdC5kaXJlY3RpdmUnO1xuIl19
|