@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,231 @@
|
|
|
1
|
+
import { ContentChild, Directive, ElementRef, EventEmitter, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { ResizeHandleDirective } from './resize-handle.directive';
|
|
3
|
+
import { fromEvent, merge, Subscription } from 'rxjs';
|
|
4
|
+
import { filter, map, mapTo, pairwise, takeUntil, tap } from 'rxjs/operators';
|
|
5
|
+
import { RtlService } from '../../services/rtl.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 "../../services/rtl.service";
|
|
9
|
+
export class DeprecatedResizeDirective extends DeprecatedSelector {
|
|
10
|
+
}
|
|
11
|
+
DeprecatedResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedResizeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
12
|
+
DeprecatedResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedResizeDirective, isStandalone: true, selector: "[fdResize], [fd-resize]", providers: [
|
|
13
|
+
{
|
|
14
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
15
|
+
useValue: getDeprecatedModel('[fdkResize]', '[fdResize], [fd-resize]')
|
|
16
|
+
}
|
|
17
|
+
], usesInheritance: true, ngImport: i0 });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedResizeDirective, decorators: [{
|
|
19
|
+
type: Directive,
|
|
20
|
+
args: [{
|
|
21
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
22
|
+
selector: '[fdResize], [fd-resize]',
|
|
23
|
+
standalone: true,
|
|
24
|
+
providers: [
|
|
25
|
+
{
|
|
26
|
+
provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
|
|
27
|
+
useValue: getDeprecatedModel('[fdkResize]', '[fdResize], [fd-resize]')
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}]
|
|
31
|
+
}] });
|
|
32
|
+
export class ResizeDirective {
|
|
33
|
+
/** @hidden */
|
|
34
|
+
constructor(_elementRef, _rtlService) {
|
|
35
|
+
this._elementRef = _elementRef;
|
|
36
|
+
this._rtlService = _rtlService;
|
|
37
|
+
/** Element limiting resizable container growth */
|
|
38
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
39
|
+
this.resizeBoundary = 'body';
|
|
40
|
+
/** Whether resizable behaviour should be disabled */
|
|
41
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
42
|
+
this.disabled = false;
|
|
43
|
+
/** Localization of resize handle inside resizable container */
|
|
44
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
45
|
+
this.resizeHandleLocation = 'bottom-right';
|
|
46
|
+
/** Emits event when resizing has tarted */
|
|
47
|
+
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
|
48
|
+
this.onResizeStart = new EventEmitter();
|
|
49
|
+
/** Emits event when resizing has ended */
|
|
50
|
+
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
|
51
|
+
this.onResizeEnd = new EventEmitter();
|
|
52
|
+
/** @hidden */
|
|
53
|
+
this._subscriptions = new Subscription();
|
|
54
|
+
/** @hidden */
|
|
55
|
+
this._isRtl = false;
|
|
56
|
+
}
|
|
57
|
+
/** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */
|
|
58
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
59
|
+
set setResizeHandleReference(value) {
|
|
60
|
+
this.resizeHandleReference = value;
|
|
61
|
+
}
|
|
62
|
+
/** @hidden */
|
|
63
|
+
ngOnChanges(changes) {
|
|
64
|
+
if (changes['disabled']) {
|
|
65
|
+
if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {
|
|
66
|
+
this._subscriptions.unsubscribe();
|
|
67
|
+
}
|
|
68
|
+
else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {
|
|
69
|
+
this._setResizeListeners();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** @hidden */
|
|
74
|
+
ngAfterContentInit() {
|
|
75
|
+
if (this._rtlService) {
|
|
76
|
+
this._subscriptions.add(this._rtlService.rtl.subscribe((isRtl) => (this._isRtl = isRtl)));
|
|
77
|
+
}
|
|
78
|
+
if (!this.disabled) {
|
|
79
|
+
this._setResizeListeners();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** @hidden */
|
|
83
|
+
ngOnDestroy() {
|
|
84
|
+
this._subscriptions.unsubscribe();
|
|
85
|
+
}
|
|
86
|
+
/** @hidden */
|
|
87
|
+
get _direction() {
|
|
88
|
+
return this._isRtl ? -1 : 1;
|
|
89
|
+
}
|
|
90
|
+
/** @hidden Sets Resize listeners */
|
|
91
|
+
_setResizeListeners() {
|
|
92
|
+
const resize = this._getResizeFunction();
|
|
93
|
+
const moveOffset = this._getMoveOffsetFunction();
|
|
94
|
+
const resizeContainer = this._findResizeContainer();
|
|
95
|
+
if (!resizeContainer) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);
|
|
99
|
+
const mouseUpEvent$ = fromEvent(window, 'mouseup');
|
|
100
|
+
const mouseMoveEvent$ = fromEvent(resizeContainer, 'mousemove');
|
|
101
|
+
const mouseDownEvent$ = fromEvent(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');
|
|
102
|
+
const resizeActive$ = merge(mouseDownEvent$.pipe(mapTo(true)), mouseUpEvent$.pipe(mapTo(false)));
|
|
103
|
+
const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);
|
|
104
|
+
const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);
|
|
105
|
+
const resizingCursorMovement$ = mouseMoveEvent$.pipe(pairwise(), map(([event1, event2]) => moveOffset(event1, event2)), filter((move) => isBoundaryOverflow(move)));
|
|
106
|
+
const setupResizer = () => {
|
|
107
|
+
resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));
|
|
108
|
+
};
|
|
109
|
+
const setupResize$ = resizeActive$.pipe(filter((isActive) => isActive), tap(() => setupResizer()));
|
|
110
|
+
this._subscriptions.add(setupResize$.subscribe());
|
|
111
|
+
this._subscriptions.add(emitResizableEvents$.subscribe());
|
|
112
|
+
this._subscriptions.add(preventOtherPointerEvents$.subscribe());
|
|
113
|
+
}
|
|
114
|
+
/** @hidden Creates resize function*/
|
|
115
|
+
_getResizeFunction() {
|
|
116
|
+
return (move) => {
|
|
117
|
+
this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;
|
|
118
|
+
this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/** @hidden Creates move function */
|
|
122
|
+
_getMoveOffsetFunction() {
|
|
123
|
+
let verticalModifier;
|
|
124
|
+
let horizontalModifier;
|
|
125
|
+
switch (this.resizeHandleLocation) {
|
|
126
|
+
case 'top-left':
|
|
127
|
+
horizontalModifier = -1;
|
|
128
|
+
verticalModifier = -1;
|
|
129
|
+
break;
|
|
130
|
+
case 'top-right':
|
|
131
|
+
horizontalModifier = -1;
|
|
132
|
+
verticalModifier = 1;
|
|
133
|
+
break;
|
|
134
|
+
case 'bottom-left':
|
|
135
|
+
horizontalModifier = 1;
|
|
136
|
+
verticalModifier = -1;
|
|
137
|
+
break;
|
|
138
|
+
case 'bottom-right':
|
|
139
|
+
horizontalModifier = 1;
|
|
140
|
+
verticalModifier = 1;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
return (event1, event2) => {
|
|
144
|
+
const x = (event2.screenX - event1.screenX) * this._direction;
|
|
145
|
+
const y = event2.screenY - event1.screenY;
|
|
146
|
+
return {
|
|
147
|
+
x: x * verticalModifier,
|
|
148
|
+
y: y * horizontalModifier
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** @hidden Return boundary container */
|
|
153
|
+
_findResizeContainer() {
|
|
154
|
+
let resizeContainer;
|
|
155
|
+
if (typeof this.resizeBoundary === 'string') {
|
|
156
|
+
resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
resizeContainer = this.resizeBoundary;
|
|
160
|
+
}
|
|
161
|
+
if (resizeContainer) {
|
|
162
|
+
return resizeContainer;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.warn(`fdResize - Cannot find "${this.resizeBoundary}", falling back to "body"`);
|
|
166
|
+
return document.querySelector('body');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/** @hidden Check whether resizable container is overflowing boundary container */
|
|
170
|
+
_getBoundaryOverflowFunction(resizeContainer) {
|
|
171
|
+
return (move) => {
|
|
172
|
+
const containerPosition = resizeContainer.getBoundingClientRect();
|
|
173
|
+
const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();
|
|
174
|
+
switch (this.resizeHandleLocation) {
|
|
175
|
+
case 'top-left':
|
|
176
|
+
return (containerPosition.top < elementPosition.top + move.y &&
|
|
177
|
+
containerPosition.left < elementPosition.left + move.x);
|
|
178
|
+
case 'top-right':
|
|
179
|
+
return (containerPosition.top < elementPosition.top + move.y &&
|
|
180
|
+
containerPosition.right > elementPosition.right + move.x);
|
|
181
|
+
case 'bottom-left':
|
|
182
|
+
return (containerPosition.bottom > elementPosition.bottom + move.y &&
|
|
183
|
+
containerPosition.left < elementPosition.left + move.x);
|
|
184
|
+
case 'bottom-right':
|
|
185
|
+
return (containerPosition.bottom > elementPosition.bottom + move.y &&
|
|
186
|
+
containerPosition.right > elementPosition.right + move.x);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/** @hidden Create Observable notifying on resize actions */
|
|
191
|
+
_getResizeEventsNotifiers(trigger$) {
|
|
192
|
+
const emitResizableStart$ = trigger$.pipe(filter((isActive) => isActive), tap(() => this.onResizeStart.emit()));
|
|
193
|
+
const emitResizableEnd$ = trigger$.pipe(filter((isActive) => !isActive), tap(() => this.onResizeEnd.emit()));
|
|
194
|
+
return merge(emitResizableStart$, emitResizableEnd$);
|
|
195
|
+
}
|
|
196
|
+
/** @hidden Block resizable container pointer events when resizing */
|
|
197
|
+
_blockOtherPointerEvents(trigger$) {
|
|
198
|
+
return trigger$.pipe(map((isActive) => (isActive ? 'none' : 'auto')), tap((value) => (this._elementRef.nativeElement.style.pointerEvents = value)));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
ResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeDirective, deps: [{ token: i0.ElementRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
202
|
+
ResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ResizeDirective, isStandalone: true, selector: "[fdkResize], [fdResize], [fd-resize]", inputs: { resizeBoundary: ["fdkResizeBoundary", "resizeBoundary"], disabled: ["fdkResizeDisabled", "disabled"], resizeHandleLocation: ["fdkResizeHandleLocation", "resizeHandleLocation"], setResizeHandleReference: ["fdkResizeResizeHandleRef", "setResizeHandleReference"] }, outputs: { onResizeStart: "onResizeStart", onResizeEnd: "onResizeEnd" }, queries: [{ propertyName: "resizeHandleReference", first: true, predicate: ResizeHandleDirective, descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeDirective, decorators: [{
|
|
204
|
+
type: Directive,
|
|
205
|
+
args: [{
|
|
206
|
+
selector: '[fdkResize], [fdResize], [fd-resize]',
|
|
207
|
+
standalone: true
|
|
208
|
+
}]
|
|
209
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
|
|
210
|
+
type: Optional
|
|
211
|
+
}] }]; }, propDecorators: { resizeBoundary: [{
|
|
212
|
+
type: Input,
|
|
213
|
+
args: ['fdkResizeBoundary']
|
|
214
|
+
}], disabled: [{
|
|
215
|
+
type: Input,
|
|
216
|
+
args: ['fdkResizeDisabled']
|
|
217
|
+
}], resizeHandleLocation: [{
|
|
218
|
+
type: Input,
|
|
219
|
+
args: ['fdkResizeHandleLocation']
|
|
220
|
+
}], setResizeHandleReference: [{
|
|
221
|
+
type: Input,
|
|
222
|
+
args: ['fdkResizeResizeHandleRef']
|
|
223
|
+
}], onResizeStart: [{
|
|
224
|
+
type: Output
|
|
225
|
+
}], onResizeEnd: [{
|
|
226
|
+
type: Output
|
|
227
|
+
}], resizeHandleReference: [{
|
|
228
|
+
type: ContentChild,
|
|
229
|
+
args: [ResizeHandleDirective, { static: false }]
|
|
230
|
+
}] } });
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9yZXNpemUvcmVzaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7OztBQWF6QyxNQUFNLE9BQU8seUJBQTBCLFNBQVEsa0JBQWtCOztzSEFBcEQseUJBQXlCOzBHQUF6Qix5QkFBeUIsc0VBUHZCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUM7U0FDekU7S0FDSjsyRkFFUSx5QkFBeUI7a0JBWHJDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEs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QUMsbUJBQW1CO2dCQUlFLFFBQVE7c0JBQW5DLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUlRLG9CQUFvQjtzQkFBckQsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBS08sd0JBQXdCO3NCQUE5RCxLQUFLO3VCQUFDLDBCQUEwQjtnQkFNdkIsYUFBYTtzQkFBdEIsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdpRCxxQkFBcUI7c0JBQTVFLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWFwVG8sIHBhaXJ3aXNlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIERlcHJlY2F0ZWRTZWxlY3RvcixcbiAgICBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICBnZXREZXByZWNhdGVkTW9kZWxcbn0gZnJvbSAnLi4vLi4vZGVwcmVjYXRlZC1zZWxlY3Rvci5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRSZXNpemVdLCBbZmQtcmVzaXplXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgICAgICAgICB1c2VWYWx1ZTogZ2V0RGVwcmVjYXRlZE1vZGVsKCdbZmRrUmVzaXplXScsICdbZmRSZXNpemVdLCBbZmQtcmVzaXplXScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRSZXNpemVEaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuaW50ZXJmYWNlIFJlc2l6ZU1vdmUge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka1Jlc2l6ZV0sIFtmZFJlc2l6ZV0sIFtmZC1yZXNpemVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogRWxlbWVudCBsaW1pdGluZyByZXNpemFibGUgY29udGFpbmVyIGdyb3d0aCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdmZGtSZXNpemVCb3VuZGFyeScpIHJlc2l6ZUJvdW5kYXJ5OiBzdHJpbmcgfCBIVE1MRWxlbWVudCA9ICdib2R5JztcblxuICAgIC8qKiBXaGV0aGVyIHJlc2l6YWJsZSBiZWhhdmlvdXIgc2hvdWxkIGJlIGRpc2FibGVkICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2Zka1Jlc2l6ZURpc2FibGVkJykgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBMb2NhbGl6YXRpb24gb2YgcmVzaXplIGhhbmRsZSBpbnNpZGUgcmVzaXphYmxlIGNvbnRhaW5lciAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdmZGtSZXNpemVIYW5kbGVMb2NhdGlvbicpIHJlc2l6ZUhhbmRsZUxvY2F0aW9uOiAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgPVxuICAgICAgICAnYm90dG9tLXJpZ2h0JztcblxuICAgIC8qKiBSZXNpemUgaGFuZGxlIHJlZmVyZW5jZSAtIHNob3VsZCBiZSB1c2VkIGlmIFJlc2l6ZSBoYW5kbGUgaXMgbm90IGEgQ29udGVudENoaWxkIG9mIHJlc2l6YWJsZSBjb250YWluZXIgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnZmRrUmVzaXplUmVzaXplSGFuZGxlUmVmJykgc2V0IHNldFJlc2l6ZUhhbmRsZVJlZmVyZW5jZSh2YWx1ZTogUmVzaXplSGFuZGxlRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMucmVzaXplSGFuZGxlUmVmZXJlbmNlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gcmVzaXppbmcgaGFzIHRhcnRlZCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvblJlc2l6ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gcmVzaXppbmcgaGFzIGVuZGVkICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uUmVzaXplRW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIFJlc2l6ZSBoYW5kbGUgKi9cbiAgICBAQ29udGVudENoaWxkKFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIHJlc2l6ZUhhbmRsZVJlZmVyZW5jZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNSdGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddLnByZXZpb3VzVmFsdWUgPT09IGZhbHNlICYmIGNoYW5nZXNbJ2Rpc2FibGVkJ10uY3VycmVudFZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddLnByZXZpb3VzVmFsdWUgPT09IHRydWUgJiYgY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0UmVzaXplTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgoaXNSdGwpID0+ICh0aGlzLl9pc1J0bCA9IGlzUnRsKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRSZXNpemVMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9kaXJlY3Rpb24oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUnRsID8gLTEgOiAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldHMgUmVzaXplIGxpc3RlbmVycyAqL1xuICAgIHByaXZhdGUgX3NldFJlc2l6ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzaXplID0gdGhpcy5fZ2V0UmVzaXplRnVuY3Rpb24oKTtcbiAgICAgICAgY29uc3QgbW92ZU9mZnNldCA9IHRoaXMuX2dldE1vdmVPZmZzZXRGdW5jdGlvbigpO1xuICAgICAgICBjb25zdCByZXNpemVDb250YWluZXIgPSB0aGlzLl9maW5kUmVzaXplQ29udGFpbmVyKCk7XG4gICAgICAgIGlmICghcmVzaXplQ29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNCb3VuZGFyeU92ZXJmbG93ID0gdGhpcy5fZ2V0Qm91bmRhcnlPdmVyZmxvd0Z1bmN0aW9uKHJlc2l6ZUNvbnRhaW5lcik7XG5cbiAgICAgICAgY29uc3QgbW91c2VVcEV2ZW50JCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih3aW5kb3csICdtb3VzZXVwJyk7XG4gICAgICAgIGNvbnN0IG1vdXNlTW92ZUV2ZW50JCA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihyZXNpemVDb250YWluZXIsICdtb3VzZW1vdmUnKTtcbiAgICAgICAgY29uc3QgbW91c2VEb3duRXZlbnQkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMucmVzaXplSGFuZGxlUmVmZXJlbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpO1xuXG4gICAgICAgIGNvbnN0IHJlc2l6ZUFjdGl2ZSQgPSBtZXJnZShtb3VzZURvd25FdmVudCQucGlwZShtYXBUbyh0cnVlKSksIG1vdXNlVXBFdmVudCQucGlwZShtYXBUbyhmYWxzZSkpKTtcbiAgICAgICAgY29uc3QgZW1pdFJlc2l6YWJsZUV2ZW50cyQgPSB0aGlzLl9nZXRSZXNpemVFdmVudHNOb3RpZmllcnMocmVzaXplQWN0aXZlJCk7XG4gICAgICAgIGNvbnN0IHByZXZlbnRPdGhlclBvaW50ZXJFdmVudHMkID0gdGhpcy5fYmxvY2tPdGhlclBvaW50ZXJFdmVudHMocmVzaXplQWN0aXZlJCk7XG5cbiAgICAgICAgY29uc3QgcmVzaXppbmdDdXJzb3JNb3ZlbWVudCQgPSBtb3VzZU1vdmVFdmVudCQucGlwZShcbiAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICBtYXAoKFtldmVudDEsIGV2ZW50Ml06IFtNb3VzZUV2ZW50LCBNb3VzZUV2ZW50XSkgPT4gbW92ZU9mZnNldChldmVudDEsIGV2ZW50MikpLFxuICAgICAgICAgICAgZmlsdGVyKChtb3ZlKSA9PiBpc0JvdW5kYXJ5T3ZlcmZsb3cobW92ZSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc2V0dXBSZXNpemVyID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcmVzaXppbmdDdXJzb3JNb3ZlbWVudCQucGlwZSh0YWtlVW50aWwobW91c2VVcEV2ZW50JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHJlc2l6ZShldmVudCkpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZXR1cFJlc2l6ZSQgPSByZXNpemVBY3RpdmUkLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGlzQWN0aXZlKSA9PiBpc0FjdGl2ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gc2V0dXBSZXNpemVyKCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoc2V0dXBSZXNpemUkLnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoZW1pdFJlc2l6YWJsZUV2ZW50cyQuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChwcmV2ZW50T3RoZXJQb2ludGVyRXZlbnRzJC5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ3JlYXRlcyByZXNpemUgZnVuY3Rpb24qL1xuICAgIHByaXZhdGUgX2dldFJlc2l6ZUZ1bmN0aW9uKCk6IChtb3ZlOiBSZXNpemVNb3ZlKSA9PiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIChtb3ZlOiBSZXNpemVNb3ZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyBtb3ZlLnh9cHhgO1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyBtb3ZlLnl9cHhgO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENyZWF0ZXMgbW92ZSBmdW5jdGlvbiAqL1xuICAgIHByaXZhdGUgX2dldE1vdmVPZmZzZXRGdW5jdGlvbigpOiAoZXZlbnQxOiBNb3VzZUV2ZW50LCBldmVudDI6IE1vdXNlRXZlbnQpID0+IFJlc2l6ZU1vdmUge1xuICAgICAgICBsZXQgdmVydGljYWxNb2RpZmllcjogMSB8IC0xO1xuICAgICAgICBsZXQgaG9yaXpvbnRhbE1vZGlmaWVyOiAxIHwgLTE7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnJlc2l6ZUhhbmRsZUxvY2F0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AtbGVmdCc6XG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbE1vZGlmaWVyID0gLTE7XG4gICAgICAgICAgICAgICAgdmVydGljYWxNb2RpZmllciA9IC0xO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsTW9kaWZpZXIgPSAtMTtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1vZGlmaWVyID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsTW9kaWZpZXIgPSAxO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsTW9kaWZpZXIgPSAtMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6XG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbE1vZGlmaWVyID0gMTtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1vZGlmaWVyID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoZXZlbnQxOiBNb3VzZUV2ZW50LCBldmVudDI6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHggPSAoZXZlbnQyLnNjcmVlblggLSBldmVudDEuc2NyZWVuWCkgKiB0aGlzLl9kaXJlY3Rpb247XG4gICAgICAgICAgICBjb25zdCB5ID0gZXZlbnQyLnNjcmVlblkgLSBldmVudDEuc2NyZWVuWTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiB4ICogdmVydGljYWxNb2RpZmllcixcbiAgICAgICAgICAgICAgICB5OiB5ICogaG9yaXpvbnRhbE1vZGlmaWVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBib3VuZGFyeSBjb250YWluZXIgKi9cbiAgICBwcml2YXRlIF9maW5kUmVzaXplQ29udGFpbmVyKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgbGV0IHJlc2l6ZUNvbnRhaW5lcjogRWxlbWVudCB8IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNpemVCb3VuZGFyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc2l6ZUNvbnRhaW5lciA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KHRoaXMucmVzaXplQm91bmRhcnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzaXplQ29udGFpbmVyID0gdGhpcy5yZXNpemVCb3VuZGFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNpemVDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNpemVDb250YWluZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYGZkUmVzaXplIC0gQ2Fubm90IGZpbmQgXCIke3RoaXMucmVzaXplQm91bmRhcnl9XCIsIGZhbGxpbmcgYmFjayB0byBcImJvZHlcImApO1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENoZWNrIHdoZXRoZXIgcmVzaXphYmxlIGNvbnRhaW5lciBpcyBvdmVyZmxvd2luZyBib3VuZGFyeSBjb250YWluZXIgKi9cbiAgICBwcml2YXRlIF9nZXRCb3VuZGFyeU92ZXJmbG93RnVuY3Rpb24ocmVzaXplQ29udGFpbmVyOiBFbGVtZW50KTogKG1vdmU6IFJlc2l6ZU1vdmUpID0+IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKG1vdmU6IFJlc2l6ZU1vdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclBvc2l0aW9uID0gcmVzaXplQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXplSGFuZGxlTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AtbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi50b3AgPCBlbGVtZW50UG9zaXRpb24udG9wICsgbW92ZS55ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5sZWZ0IDwgZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24udG9wIDwgZWxlbWVudFBvc2l0aW9uLnRvcCArIG1vdmUueSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24ucmlnaHQgPiBlbGVtZW50UG9zaXRpb24ucmlnaHQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20tbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5ib3R0b20gPiBlbGVtZW50UG9zaXRpb24uYm90dG9tICsgbW92ZS55ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5sZWZ0IDwgZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20tcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24uYm90dG9tID4gZWxlbWVudFBvc2l0aW9uLmJvdHRvbSArIG1vdmUueSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24ucmlnaHQgPiBlbGVtZW50UG9zaXRpb24ucmlnaHQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDcmVhdGUgT2JzZXJ2YWJsZSBub3RpZnlpbmcgb24gcmVzaXplIGFjdGlvbnMgKi9cbiAgICBwcml2YXRlIF9nZXRSZXNpemVFdmVudHNOb3RpZmllcnModHJpZ2dlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCBlbWl0UmVzaXphYmxlU3RhcnQkID0gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaXNBY3RpdmUpID0+IGlzQWN0aXZlKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLm9uUmVzaXplU3RhcnQuZW1pdCgpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGVtaXRSZXNpemFibGVFbmQkID0gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaXNBY3RpdmUpID0+ICFpc0FjdGl2ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5vblJlc2l6ZUVuZC5lbWl0KCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlKGVtaXRSZXNpemFibGVTdGFydCQsIGVtaXRSZXNpemFibGVFbmQkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBCbG9jayByZXNpemFibGUgY29udGFpbmVyIHBvaW50ZXIgZXZlbnRzIHdoZW4gcmVzaXppbmcgICovXG4gICAgcHJpdmF0ZSBfYmxvY2tPdGhlclBvaW50ZXJFdmVudHModHJpZ2dlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIG1hcCgoaXNBY3RpdmUpID0+IChpc0FjdGl2ZSA/ICdub25lJyA6ICdhdXRvJykpLFxuICAgICAgICAgICAgdGFwKCh2YWx1ZSkgPT4gKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gdmFsdWUpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ResizeDirective, DeprecatedResizeDirective } from './resize.directive';
|
|
3
|
+
import { ResizeHandleDirective, DeprecatedResizeHandleDirective } from './resize-handle.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ResizeModule {
|
|
6
|
+
}
|
|
7
|
+
ResizeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
ResizeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ResizeModule, imports: [ResizeDirective, DeprecatedResizeDirective, ResizeHandleDirective, DeprecatedResizeHandleDirective], exports: [ResizeDirective, DeprecatedResizeDirective, ResizeHandleDirective, DeprecatedResizeHandleDirective] });
|
|
9
|
+
ResizeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeModule });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [ResizeDirective, DeprecatedResizeDirective, ResizeHandleDirective, DeprecatedResizeHandleDirective],
|
|
14
|
+
exports: [ResizeDirective, DeprecatedResizeDirective, ResizeHandleDirective, DeprecatedResizeHandleDirective]
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9yZXNpemUvcmVzaXplLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFNbkcsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxZQUhYLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsYUFDbEcsZUFBZSxFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFFLCtCQUErQjswR0FFbkcsWUFBWTsyRkFBWixZQUFZO2tCQUp4QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsQ0FBQztvQkFDN0csT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFFLCtCQUErQixDQUFDO2lCQUNoSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVEaXJlY3RpdmUsIERlcHJlY2F0ZWRSZXNpemVEaXJlY3RpdmUgfSBmcm9tICcuL3Jlc2l6ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzaXplSGFuZGxlRGlyZWN0aXZlLCBEZXByZWNhdGVkUmVzaXplSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1Jlc2l6ZURpcmVjdGl2ZSwgRGVwcmVjYXRlZFJlc2l6ZURpcmVjdGl2ZSwgUmVzaXplSGFuZGxlRGlyZWN0aXZlLCBEZXByZWNhdGVkUmVzaXplSGFuZGxlRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbUmVzaXplRGlyZWN0aXZlLCBEZXByZWNhdGVkUmVzaXplRGlyZWN0aXZlLCBSZXNpemVIYW5kbGVEaXJlY3RpdmUsIERlcHJlY2F0ZWRSZXNpemVIYW5kbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6ZU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './selection.service';
|
|
2
|
+
export * from './selectable-list.directive';
|
|
3
|
+
export * from './selectable-item.directive';
|
|
4
|
+
export * from './selectable-list.module';
|
|
5
|
+
export * from './selectable-list.tokens';
|
|
6
|
+
export * from './selectable-item.token';
|
|
7
|
+
export * from './select-component-root.token';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGFibGUtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RhYmxlLWxpc3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0YWJsZS1saXN0LnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGFibGUtaXRlbS50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC1jb21wb25lbnQtcm9vdC50b2tlbic7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class SelectComponentRootToken {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWNvbXBvbmVudC1yb290LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL3NlbGVjdGFibGUtbGlzdC9zZWxlY3QtY29tcG9uZW50LXJvb3QudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFnQix3QkFBd0I7Q0FNN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxUPiA9IFQgZXh0ZW5kcyBhbnlbXSA/IEFycmF5PGFueT4gOiBhbnk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZWxlY3RDb21wb25lbnRSb290VG9rZW48VCA9IGFueT4ge1xuICAgIGFic3RyYWN0IHNlbGVjdGVkPzogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD47XG4gICAgYWJzdHJhY3Qgc2VsZWN0ZWRDaGFuZ2U6IE9ic2VydmFibGU8U2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD4+O1xuICAgIGFic3RyYWN0IG11bHRpcGxlPzogQm9vbGVhbklucHV0O1xuICAgIGFic3RyYWN0IHRvZ2dsZT86IEJvb2xlYW5JbnB1dDtcbiAgICBhYnN0cmFjdCBvbkNoYW5nZTogKHZhbHVlOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxUPikgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, ElementRef, Inject, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { merge, Observable } from 'rxjs';
|
|
3
|
+
import { SelectableItemToken } from './selectable-item.token';
|
|
4
|
+
import { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';
|
|
5
|
+
import { FdkDisabledProvider } from '../disabled';
|
|
6
|
+
import { FdkReadonlyProvider } from '../readonly';
|
|
7
|
+
import { SelectionService } from './selection.service';
|
|
8
|
+
import { FdkClickedProvider } from '../clicked';
|
|
9
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../disabled";
|
|
12
|
+
import * as i2 from "../readonly";
|
|
13
|
+
import * as i3 from "./selection.service";
|
|
14
|
+
import * as i4 from "../clicked";
|
|
15
|
+
export class SelectableItemDirective {
|
|
16
|
+
/** @hidden */
|
|
17
|
+
constructor(provider, disabled$, readonly$, selectionService, _elementRef, _cd, _clicked) {
|
|
18
|
+
this.provider = provider;
|
|
19
|
+
this.disabled$ = disabled$;
|
|
20
|
+
this.readonly$ = readonly$;
|
|
21
|
+
this.selectionService = selectionService;
|
|
22
|
+
this._elementRef = _elementRef;
|
|
23
|
+
this._cd = _cd;
|
|
24
|
+
/** @hidden */
|
|
25
|
+
this._selected = false;
|
|
26
|
+
/** @hidden */
|
|
27
|
+
this._selectable = true;
|
|
28
|
+
this.clicked = this.provider?.clicked || _clicked.asObservable();
|
|
29
|
+
this._listenToDisablingEvents();
|
|
30
|
+
}
|
|
31
|
+
/** @hidden */
|
|
32
|
+
set value(val) {
|
|
33
|
+
this._value = val;
|
|
34
|
+
}
|
|
35
|
+
get value() {
|
|
36
|
+
if (this.provider && this.provider.value) {
|
|
37
|
+
return this.provider.value;
|
|
38
|
+
}
|
|
39
|
+
return this._value;
|
|
40
|
+
}
|
|
41
|
+
/** @hidden */
|
|
42
|
+
set fdkSelectableItem(value) {
|
|
43
|
+
const isSelectable = coerceBooleanProperty(value);
|
|
44
|
+
if (isSelectable !== this._selectable) {
|
|
45
|
+
this._selectable = isSelectable;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get fdkSelectableItem() {
|
|
49
|
+
let selectable = this._selectable;
|
|
50
|
+
if (typeof this.provider?.fdkSelectableItem !== 'undefined') {
|
|
51
|
+
selectable = this.provider.fdkSelectableItem;
|
|
52
|
+
}
|
|
53
|
+
return (selectable &&
|
|
54
|
+
(!this.disabled$ || !this.disabled$?.fdkDisabled) &&
|
|
55
|
+
(!this.readonly$ || !this.readonly$?.fdkReadonly));
|
|
56
|
+
}
|
|
57
|
+
/** @hidden */
|
|
58
|
+
getSelected() {
|
|
59
|
+
if (this.provider?.getSelected) {
|
|
60
|
+
return this.provider.getSelected();
|
|
61
|
+
}
|
|
62
|
+
return this._selected;
|
|
63
|
+
}
|
|
64
|
+
/** @hidden */
|
|
65
|
+
setSelected(isSelected) {
|
|
66
|
+
if (this.provider?.setSelected) {
|
|
67
|
+
this.provider.setSelected(isSelected);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this._selected = isSelected;
|
|
71
|
+
const htmlElement = this._elementRef.nativeElement;
|
|
72
|
+
const { classList } = htmlElement;
|
|
73
|
+
if (isSelected) {
|
|
74
|
+
classList.add('is-selected');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
classList.remove('is-selected');
|
|
78
|
+
}
|
|
79
|
+
htmlElement.setAttribute('aria-selected', `${isSelected}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** @hidden */
|
|
83
|
+
elementRef() {
|
|
84
|
+
return this._elementRef;
|
|
85
|
+
}
|
|
86
|
+
/** @hidden */
|
|
87
|
+
_listenToDisablingEvents() {
|
|
88
|
+
const disablingEvents$ = [];
|
|
89
|
+
if (this.disabled$) {
|
|
90
|
+
disablingEvents$.push(this.disabled$);
|
|
91
|
+
}
|
|
92
|
+
if (this.readonly$) {
|
|
93
|
+
disablingEvents$.push(this.readonly$);
|
|
94
|
+
}
|
|
95
|
+
merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());
|
|
96
|
+
}
|
|
97
|
+
/** @hidden */
|
|
98
|
+
_updateSelectionAndSelectableWatcher() {
|
|
99
|
+
if (this.disabled$?.fdkDisabled) {
|
|
100
|
+
this.selectionService.deselectItem(this);
|
|
101
|
+
}
|
|
102
|
+
this._updateSelectableWatcher();
|
|
103
|
+
}
|
|
104
|
+
/** @hidden */
|
|
105
|
+
_updateSelectableWatcher() {
|
|
106
|
+
this.selectionService.listenToItemInteractions();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
SelectableItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableItemDirective, deps: [{ token: FDK_SELECTABLE_ITEM_PROVIDER, optional: true }, { token: i1.FdkDisabledProvider }, { token: i2.FdkReadonlyProvider }, { token: i3.SelectionService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i4.FdkClickedProvider }], target: i0.ɵɵFactoryTarget.Directive });
|
|
110
|
+
SelectableItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: SelectableItemDirective, isStandalone: true, selector: "[fdkSelectableItem]", inputs: { value: "value", fdkSelectableItem: "fdkSelectableItem" }, outputs: { clicked: "clicked" }, providers: [
|
|
111
|
+
{
|
|
112
|
+
provide: SelectableItemToken,
|
|
113
|
+
useExisting: SelectableItemDirective
|
|
114
|
+
},
|
|
115
|
+
FdkReadonlyProvider,
|
|
116
|
+
FdkDisabledProvider,
|
|
117
|
+
FdkClickedProvider
|
|
118
|
+
], exportAs: ["fdkSelectableItem"], ngImport: i0 });
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableItemDirective, decorators: [{
|
|
120
|
+
type: Directive,
|
|
121
|
+
args: [{
|
|
122
|
+
selector: '[fdkSelectableItem]',
|
|
123
|
+
exportAs: 'fdkSelectableItem',
|
|
124
|
+
standalone: true,
|
|
125
|
+
providers: [
|
|
126
|
+
{
|
|
127
|
+
provide: SelectableItemToken,
|
|
128
|
+
useExisting: SelectableItemDirective
|
|
129
|
+
},
|
|
130
|
+
FdkReadonlyProvider,
|
|
131
|
+
FdkDisabledProvider,
|
|
132
|
+
FdkClickedProvider
|
|
133
|
+
]
|
|
134
|
+
}]
|
|
135
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
136
|
+
type: Optional
|
|
137
|
+
}, {
|
|
138
|
+
type: Inject,
|
|
139
|
+
args: [FDK_SELECTABLE_ITEM_PROVIDER]
|
|
140
|
+
}] }, { type: i1.FdkDisabledProvider }, { type: i2.FdkReadonlyProvider }, { type: i3.SelectionService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i4.FdkClickedProvider }]; }, propDecorators: { value: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], fdkSelectableItem: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], clicked: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}] } });
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFnQjVFLE1BQU0sT0FBTyx1QkFBdUI7SUErQ2hDLGNBQWM7SUFDZCxZQUdZLFFBQThELEVBQzlELFNBQThCLEVBQzlCLFNBQThCLEVBQzlCLGdCQUEwRCxFQUMxRCxXQUFvQyxFQUNwQyxHQUFzQixFQUM5QixRQUE0QjtRQU5wQixhQUFRLEdBQVIsUUFBUSxDQUFzRDtRQUM5RCxjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JB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QkFBQyw0QkFBNEI7eU9BN0NwQyxLQUFLO3NCQURSLEtBQUs7Z0JBYUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQXNCTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1Ub2tlbiB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLnRva2VuJztcbmltcG9ydCB7IEZES19TRUxFQ1RBQkxFX0lURU1fUFJPVklERVIgfSBmcm9tICcuL3NlbGVjdGFibGUtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHsgRmRrRGlzYWJsZWRQcm92aWRlciB9IGZyb20gJy4uL2Rpc2FibGVkJztcbmltcG9ydCB7IEZka1JlYWRvbmx5UHJvdmlkZXIgfSBmcm9tICcuLi9yZWFkb25seSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGZGtDbGlja2VkUHJvdmlkZXIgfSBmcm9tICcuLi9jbGlja2VkJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrU2VsZWN0YWJsZUl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2Zka1NlbGVjdGFibGVJdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTZWxlY3RhYmxlSXRlbVRva2VuLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlXG4gICAgICAgIH0sXG4gICAgICAgIEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIEZka0Rpc2FibGVkUHJvdmlkZXIsXG4gICAgICAgIEZka0NsaWNrZWRQcm92aWRlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmU8RWxlbWVudFR5cGUgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQsIFZhbHVlVHlwZSA9IGFueT5cbiAgICBpbXBsZW1lbnRzIFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5cbntcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbDogVmFsdWVUeXBlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogVmFsdWVUeXBlIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXIgJiYgdGhpcy5wcm92aWRlci52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRrU2VsZWN0YWJsZUl0ZW0odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAoaXNTZWxlY3RhYmxlICE9PSB0aGlzLl9zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RhYmxlID0gaXNTZWxlY3RhYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZka1NlbGVjdGFibGVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc2VsZWN0YWJsZSA9IHRoaXMuX3NlbGVjdGFibGU7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm92aWRlcj8uZmRrU2VsZWN0YWJsZUl0ZW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlID0gdGhpcy5wcm92aWRlci5mZGtTZWxlY3RhYmxlSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgc2VsZWN0YWJsZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmRpc2FibGVkJCB8fCAhdGhpcy5kaXNhYmxlZCQ/LmZka0Rpc2FibGVkKSAmJlxuICAgICAgICAgICAgKCF0aGlzLnJlYWRvbmx5JCB8fCAhdGhpcy5yZWFkb25seSQ/LmZka1JlYWRvbmx5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xpY2tlZDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlITogVmFsdWVUeXBlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSKVxuICAgICAgICBwcml2YXRlIHByb3ZpZGVyOiBQYXJ0aWFsPFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4+LFxuICAgICAgICBwcml2YXRlIGRpc2FibGVkJDogRmRrRGlzYWJsZWRQcm92aWRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSQ6IEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogU2VsZWN0aW9uU2VydmljZTxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50VHlwZT4sXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgX2NsaWNrZWQ6IEZka0NsaWNrZWRQcm92aWRlclxuICAgICkge1xuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0aGlzLnByb3ZpZGVyPy5jbGlja2VkIHx8IF9jbGlja2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Rpc2FibGluZ0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnByb3ZpZGVyPy5nZXRTZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0U2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRTZWxlY3RlZChpc1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb3ZpZGVyPy5zZXRTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5wcm92aWRlci5zZXRTZWxlY3RlZChpc1NlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gaXNTZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgeyBjbGFzc0xpc3QgfSA9IGh0bWxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjbGFzc0xpc3QucmVtb3ZlKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaHRtbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgYCR7aXNTZWxlY3RlZH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPEVsZW1lbnRUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9EaXNhYmxpbmdFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpc2FibGluZ0V2ZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5bXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCQpIHtcbiAgICAgICAgICAgIGRpc2FibGluZ0V2ZW50cyQucHVzaCh0aGlzLmRpc2FibGVkJCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkkKSB7XG4gICAgICAgICAgICBkaXNhYmxpbmdFdmVudHMkLnB1c2godGhpcy5yZWFkb25seSQpO1xuICAgICAgICB9XG4gICAgICAgIG1lcmdlKC4uLmRpc2FibGluZ0V2ZW50cyQpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVTZWxlY3Rpb25BbmRTZWxlY3RhYmxlV2F0Y2hlcigpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGlvbkFuZFNlbGVjdGFibGVXYXRjaGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCQ/LmZka0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RJdGVtKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGFibGVXYXRjaGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVTZWxlY3RhYmxlV2F0Y2hlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class SelectableItemToken {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL3NlbGVjdGFibGUtbGlzdC9zZWxlY3RhYmxlLWl0ZW0udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQixtQkFBbUI7Q0FheEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9oYXMtZWxlbWVudC1yZWYuaW50ZXJmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQsIFRWYWx1ZSA9IEVsZW1lbnRUeXBlPlxuICAgIGltcGxlbWVudHMgSGFzRWxlbWVudFJlZjxFbGVtZW50VHlwZT5cbntcbiAgICBhYnN0cmFjdCB2YWx1ZTogVFZhbHVlO1xuICAgIGFic3RyYWN0IGZka1NlbGVjdGFibGVJdGVtPzogYm9vbGVhbjtcblxuICAgIGFic3RyYWN0IGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxFbGVtZW50VHlwZT47XG5cbiAgICBhYnN0cmFjdCBzZXRTZWxlY3RlZChpc1NlbGVjdGVkOiBib29sZWFuKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGdldFNlbGVjdGVkKCk6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBjbGlja2VkOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { ContentChildren, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';
|
|
3
|
+
import { SelectionService } from './selection.service';
|
|
4
|
+
import { SelectComponentRootToken } from './select-component-root.token';
|
|
5
|
+
import { SelectableItemToken } from './selectable-item.token';
|
|
6
|
+
import { coerceBoolean } from '../../decorators/coerce-boolean';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./selection.service";
|
|
9
|
+
export class SelectableListDirective {
|
|
10
|
+
/** @hidden */
|
|
11
|
+
constructor(_selectionService) {
|
|
12
|
+
this._selectionService = _selectionService;
|
|
13
|
+
/** @hidden */
|
|
14
|
+
this.selectedChange = new EventEmitter();
|
|
15
|
+
/** @hidden */
|
|
16
|
+
this.toggle = false;
|
|
17
|
+
/** @hidden */
|
|
18
|
+
this.multiple = false;
|
|
19
|
+
this._selectionService.registerRootComponent(this);
|
|
20
|
+
}
|
|
21
|
+
/** @hidden */
|
|
22
|
+
set selected(value) {
|
|
23
|
+
this._selectionService.setValue(value);
|
|
24
|
+
}
|
|
25
|
+
/** @hidden */
|
|
26
|
+
select(item) {
|
|
27
|
+
this._selectionService.selectItem(item);
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
deselect(item) {
|
|
31
|
+
this._selectionService.deselectItem(item);
|
|
32
|
+
}
|
|
33
|
+
/** @hidden */
|
|
34
|
+
toggleSelect(item) {
|
|
35
|
+
if (item.getSelected()) {
|
|
36
|
+
this.deselect(item);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.select(item);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** @hidden */
|
|
43
|
+
onChange(value) {
|
|
44
|
+
this.selectedChange.emit(value);
|
|
45
|
+
}
|
|
46
|
+
/** @hidden */
|
|
47
|
+
ngAfterViewInit() {
|
|
48
|
+
this._selectionService.initialize(this.selectableItems);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
SelectableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableListDirective, deps: [{ token: i1.SelectionService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
+
SelectableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: SelectableListDirective, isStandalone: true, selector: "[fdkSelectableList]", inputs: { toggle: "toggle", multiple: "multiple", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, providers: [
|
|
53
|
+
{
|
|
54
|
+
provide: SelectComponentRootToken,
|
|
55
|
+
useExisting: SelectableListDirective
|
|
56
|
+
},
|
|
57
|
+
SelectionService
|
|
58
|
+
], queries: [{ propertyName: "selectableItems", predicate: SelectableItemToken }], exportAs: ["fdkSelectableList"], ngImport: i0 });
|
|
59
|
+
__decorate([
|
|
60
|
+
coerceBoolean,
|
|
61
|
+
__metadata("design:type", Object)
|
|
62
|
+
], SelectableListDirective.prototype, "toggle", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
coerceBoolean,
|
|
65
|
+
__metadata("design:type", Object)
|
|
66
|
+
], SelectableListDirective.prototype, "multiple", void 0);
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableListDirective, decorators: [{
|
|
68
|
+
type: Directive,
|
|
69
|
+
args: [{
|
|
70
|
+
selector: '[fdkSelectableList]',
|
|
71
|
+
exportAs: 'fdkSelectableList',
|
|
72
|
+
standalone: true,
|
|
73
|
+
providers: [
|
|
74
|
+
{
|
|
75
|
+
provide: SelectComponentRootToken,
|
|
76
|
+
useExisting: SelectableListDirective
|
|
77
|
+
},
|
|
78
|
+
SelectionService
|
|
79
|
+
]
|
|
80
|
+
}]
|
|
81
|
+
}], ctorParameters: function () { return [{ type: i1.SelectionService }]; }, propDecorators: { selectedChange: [{
|
|
82
|
+
type: Output
|
|
83
|
+
}], toggle: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], multiple: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], selected: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], selectableItems: [{
|
|
90
|
+
type: ContentChildren,
|
|
91
|
+
args: [SelectableItemToken]
|
|
92
|
+
}] } });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFpQixlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQTJCLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFjaEUsTUFBTSxPQUFPLHVCQUF1QjtJQTBCaEMsY0FBYztJQUNkLFlBQW9CLGlCQUF5QztRQUF6QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXdCO1FBeEI3RCxjQUFjO1FBRWQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUVoRSxjQUFjO1FBR2QsV0FBTSxHQUFpQixLQUFLLENBQUM7UUFFN0IsY0FBYztRQUdkLGFBQVEsR0FBaUIsS0FBSyxDQUFDO1FBYTNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBWkQsY0FBYztJQUNkLElBQ0ksUUFBUSxDQUFDLEtBQWlDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQVVELGNBQWM7SUFDZCxNQUFNLENBQUMsSUFBK0I7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxJQUErQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLElBQStCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxLQUFpQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1RCxDQUFDOztvSEExRFEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkxBUnJCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFdBQVcsRUFBRSx1QkFBdUI7U0FDdkM7UUFDRCxnQkFBZ0I7S0FDbkIsMERBMEJnQixtQkFBbUI7QUFoQnBDO0lBQ0MsYUFBYTs7dURBQ2U7QUFHN0I7SUFDQyxhQUFhOzt5REFDaUI7MkZBZnRCLHVCQUF1QjtrQkFabkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFdBQVcseUJBQXlCO3lCQUN2Qzt3QkFDRCxnQkFBZ0I7cUJBQ25CO2lCQUNKO3VHQU1HLGNBQWM7c0JBRGIsTUFBTTtnQkFNUCxNQUFNO3NCQUZMLEtBQUs7Z0JBT04sUUFBUTtzQkFGUCxLQUFLO2dCQU1GLFFBQVE7c0JBRFgsS0FBSztnQkFNZ0MsZUFBZTtzQkFBcEQsZUFBZTt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZSwgU2VsZWN0Q29tcG9uZW50Um9vdFRva2VuIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50LXJvb3QudG9rZW4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1Ub2tlbiB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLnRva2VuJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2NvZXJjZS1ib29sZWFuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrU2VsZWN0YWJsZUxpc3RdJyxcbiAgICBleHBvcnRBczogJ2Zka1NlbGVjdGFibGVMaXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTZWxlY3RDb21wb25lbnRSb290VG9rZW4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2VsZWN0YWJsZUxpc3REaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAgU2VsZWN0aW9uU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUxpc3REaXJlY3RpdmU8VCBleHRlbmRzIEVsZW1lbnQgPSBIVE1MRWxlbWVudCwgViA9IGFueT5cbiAgICBpbXBsZW1lbnRzIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbjxUPiwgQWZ0ZXJWaWV3SW5pdFxue1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgdG9nZ2xlOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBAY29lcmNlQm9vbGVhblxuICAgIG11bHRpcGxlOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihTZWxlY3RhYmxlSXRlbVRva2VuKSBzZWxlY3RhYmxlSXRlbXMhOiBRdWVyeUxpc3Q8U2VsZWN0YWJsZUl0ZW1Ub2tlbjxULCBWPj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlbGVjdGlvblNlcnZpY2U6IFNlbGVjdGlvblNlcnZpY2U8VCwgVj4pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5yZWdpc3RlclJvb3RDb21wb25lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3QoaXRlbTogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxULCBWPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZXNlbGVjdChpdGVtOiBTZWxlY3RhYmxlSXRlbVRva2VuPFQsIFY+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RJdGVtKGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdG9nZ2xlU2VsZWN0KGl0ZW06IFNlbGVjdGFibGVJdGVtVG9rZW48VCwgVj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0uZ2V0U2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZSh2YWx1ZTogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5pbml0aWFsaXplKHRoaXMuc2VsZWN0YWJsZUl0ZW1zKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { SelectableListDirective } from './selectable-list.directive';
|
|
3
|
+
import { SelectableItemDirective } from './selectable-item.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SelectableListModule {
|
|
6
|
+
}
|
|
7
|
+
SelectableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
SelectableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: SelectableListModule, imports: [SelectableListDirective, SelectableItemDirective], exports: [SelectableListDirective, SelectableItemDirective] });
|
|
9
|
+
SelectableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableListModule });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SelectableListModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [SelectableListDirective, SelectableItemDirective],
|
|
14
|
+
exports: [SelectableListDirective, SelectableItemDirective]
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU10RSxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsWUFIbkIsdUJBQXVCLEVBQUUsdUJBQXVCLGFBQ2hELHVCQUF1QixFQUFFLHVCQUF1QjtrSEFFakQsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDO2lCQUM5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1NlbGVjdGFibGVMaXN0RGlyZWN0aXZlLCBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW1NlbGVjdGFibGVMaXN0RGlyZWN0aXZlLCBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUxpc3RNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken('Token for providing custom behaviors to the SelectableListItem');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LnRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1saXN0LnRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUMxRCxnRUFBZ0UsQ0FDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuKFxuICAgICdUb2tlbiBmb3IgcHJvdmlkaW5nIGN1c3RvbSBiZWhhdmlvcnMgdG8gdGhlIFNlbGVjdGFibGVMaXN0SXRlbSdcbik7XG4iXX0=
|