ngx-edu-sharing-ui 0.7.0 → 9.0.0
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/assets/scss/mixins.scss +4 -1
- package/assets/scss/variables.scss +3 -0
- package/esm2022/lib/actionbar/actionbar.component.mjs +188 -0
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +134 -0
- package/esm2022/lib/directives/border-box-observer.directive.mjs +71 -0
- package/esm2022/lib/directives/check-text-overflow.directive.mjs +65 -0
- package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +14 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +79 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +49 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +105 -0
- package/esm2022/lib/directives/focus-state.directive.mjs +44 -0
- package/esm2022/lib/directives/icon.directive.mjs +139 -0
- package/esm2022/lib/dropdown/dropdown.component.mjs +70 -0
- package/esm2022/lib/edu-sharing-ui-configuration.mjs +41 -0
- package/esm2022/lib/edu-sharing-ui.module.mjs +78 -0
- package/esm2022/lib/list-items/available-widgets.mjs +27 -0
- package/esm2022/lib/list-items/format-duration.pipe.mjs +20 -0
- package/esm2022/lib/list-items/list-base/list-base.component.mjs +46 -0
- package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +29 -0
- package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +54 -0
- package/esm2022/lib/list-items/list-items.module.mjs +50 -0
- package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +41 -0
- package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +47 -0
- package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +24 -0
- package/esm2022/lib/list-items/list-text/list-text.component.mjs +106 -0
- package/esm2022/lib/list-items/list-widget.mjs +49 -0
- package/esm2022/lib/list-items/node-row/node-row.component.mjs +24 -0
- package/esm2022/lib/list-items/node-source.pipe.mjs +49 -0
- package/esm2022/lib/node-entries/combined-data-source.mjs +41 -0
- package/esm2022/lib/node-entries/custom-templates-data-source.mjs +7 -0
- package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +21 -0
- package/esm2022/lib/node-entries/entries-model.mjs +23 -0
- package/esm2022/lib/node-entries/items-cap.mjs +47 -0
- package/esm2022/lib/node-entries/list-item-label.pipe.mjs +34 -0
- package/esm2022/lib/node-entries/node-cache.mjs +65 -0
- package/esm2022/lib/node-entries/node-data-source-remote.mjs +4 -0
- package/esm2022/lib/node-entries/node-data-source.mjs +115 -0
- package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +131 -0
- package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +307 -0
- package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +45 -0
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +23 -0
- package/esm2022/lib/node-entries/node-entries-global.service.mjs +58 -0
- package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +42 -0
- package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +290 -0
- package/esm2022/lib/node-entries/node-entries-templates.service.mjs +11 -0
- package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +324 -0
- package/esm2022/lib/node-entries/node-entries.component.mjs +131 -0
- package/esm2022/lib/node-entries/node-entries.module.mjs +161 -0
- package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +102 -0
- package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +48 -0
- package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +36 -0
- package/esm2022/lib/node-entries/option-button/option-button.component.mjs +62 -0
- package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +53 -0
- package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +41 -0
- package/esm2022/lib/node-url/node-url.component.mjs +128 -0
- package/esm2022/lib/pipes/file-size.pipe.mjs +31 -0
- package/esm2022/lib/pipes/format-date.pipe.mjs +38 -0
- package/esm2022/lib/pipes/node-icon.pipe.mjs +18 -0
- package/esm2022/lib/pipes/node-image-size.pipe.mjs +24 -0
- package/esm2022/lib/pipes/node-image.pipe.mjs +55 -0
- package/esm2022/lib/pipes/node-person-name.pipe.mjs +50 -0
- package/esm2022/lib/pipes/node-title.pipe.mjs +19 -0
- package/esm2022/lib/pipes/option-tooltip.pipe.mjs +33 -0
- package/esm2022/lib/pipes/replace-chars.pipe.mjs +29 -0
- package/esm2022/lib/pipes/vcard-name.pipe.mjs +19 -0
- package/esm2022/lib/services/abstract/app.service.mjs +3 -0
- package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +10 -0
- package/esm2022/lib/services/abstract/options-helper.service.mjs +3 -0
- package/esm2022/lib/services/abstract/toast.service.mjs +3 -0
- package/esm2022/lib/services/accessibility.service.mjs +73 -0
- package/esm2022/lib/services/local-events.service.mjs +36 -0
- package/esm2022/lib/services/node-entries.service.mjs +137 -0
- package/esm2022/lib/services/node-helper.service.mjs +234 -0
- package/esm2022/lib/services/nodes-drag-drop.service.mjs +155 -0
- package/esm2022/lib/services/options-helper-data.service.mjs +134 -0
- package/esm2022/lib/services/repo-url.service.mjs +49 -0
- package/esm2022/lib/services/temporary-storage.service.mjs +48 -0
- package/esm2022/lib/services/ui.service.mjs +162 -0
- package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +50 -0
- package/esm2022/lib/spinner/spinner.component.mjs +18 -0
- package/esm2022/lib/translations/fallback-translation-handler.mjs +6 -0
- package/esm2022/lib/translations/languages.mjs +5 -0
- package/esm2022/lib/translations/translation-loader.mjs +149 -0
- package/esm2022/lib/translations/translation-source.mjs +11 -0
- package/esm2022/lib/translations/translations.module.mjs +67 -0
- package/esm2022/lib/translations/translations.service.mjs +171 -0
- package/esm2022/lib/types/accessibillity.mjs +19 -0
- package/esm2022/lib/types/api-models.mjs +2 -0
- package/esm2022/lib/types/drag-drop.mjs +2 -0
- package/esm2022/lib/types/keyboard-shortcuts.mjs +11 -0
- package/esm2022/lib/types/list-item.mjs +41 -0
- package/esm2022/lib/types/option-item.mjs +174 -0
- package/esm2022/lib/types/workflow.mjs +25 -0
- package/esm2022/lib/util/DateHelper.mjs +200 -0
- package/esm2022/lib/util/VCard.mjs +278 -0
- package/esm2022/lib/util/color-helper.mjs +124 -0
- package/esm2022/lib/util/duration-helper.mjs +102 -0
- package/esm2022/lib/util/functions.mjs +13 -0
- package/esm2022/lib/util/helper.mjs +64 -0
- package/esm2022/lib/util/isNumeric.mjs +11 -0
- package/esm2022/lib/util/rest-helper.mjs +33 -0
- package/esm2022/lib/util/ui-animation.mjs +146 -0
- package/esm2022/lib/util/ui-constants.mjs +21 -0
- package/esm2022/module.mjs +76 -0
- package/esm2022/ngx-edu-sharing-ui.mjs +5 -0
- package/fesm2022/ngx-edu-sharing-ui.mjs +6509 -0
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actionbar/actionbar.component.d.ts +74 -0
- package/lib/common/edu-sharing-ui-common.module.d.ts +32 -0
- package/lib/directives/border-box-observer.directive.d.ts +31 -0
- package/lib/directives/check-text-overflow.directive.d.ts +20 -0
- package/lib/directives/drag-nodes/drag-nodes.d.ts +16 -0
- package/lib/directives/drag-nodes/nodes-drag-source.directive.d.ts +37 -0
- package/lib/directives/drag-nodes/nodes-drag.directive.d.ts +17 -0
- package/lib/directives/drag-nodes/nodes-drop-target.directive.d.ts +22 -0
- package/lib/directives/focus-state.directive.d.ts +14 -0
- package/lib/directives/icon.directive.d.ts +46 -0
- package/lib/dropdown/dropdown.component.d.ts +40 -0
- package/lib/edu-sharing-ui-configuration.d.ts +11 -0
- package/lib/edu-sharing-ui.module.d.ts +19 -0
- package/lib/list-items/available-widgets.d.ts +13 -0
- package/lib/list-items/format-duration.pipe.d.ts +10 -0
- package/lib/list-items/list-base/list-base.component.d.ts +18 -0
- package/lib/list-items/list-collection-info/list-collection-info.component.d.ts +14 -0
- package/lib/list-items/list-counts/list-counts.component.d.ts +13 -0
- package/lib/list-items/list-items.module.d.ts +20 -0
- package/lib/list-items/list-node-license/list-node-license.component.d.ts +20 -0
- package/lib/list-items/list-node-replication-source/list-node-replication-source.component.d.ts +22 -0
- package/lib/list-items/list-node-workflow/list-node-workflow.component.d.ts +12 -0
- package/lib/list-items/list-text/list-text.component.d.ts +28 -0
- package/lib/list-items/list-widget.d.ts +32 -0
- package/lib/list-items/node-row/node-row.component.d.ts +12 -0
- package/lib/list-items/node-source.pipe.d.ts +16 -0
- package/lib/node-entries/combined-data-source.d.ts +19 -0
- package/{src/lib/node-entries/custom-templates-data-source.ts → lib/node-entries/custom-templates-data-source.d.ts} +2 -2
- package/lib/node-entries/drag-preview/drag-preview.component.d.ts +11 -0
- package/{src/lib/node-entries/entries-model.ts → lib/node-entries/entries-model.d.ts} +19 -47
- package/lib/node-entries/items-cap.d.ts +17 -0
- package/lib/node-entries/list-item-label.pipe.d.ts +14 -0
- package/lib/node-entries/node-cache.d.ts +17 -0
- package/{src/lib/node-entries/node-data-source-remote.ts → lib/node-entries/node-data-source-remote.d.ts} +2 -12
- package/lib/node-entries/node-data-source.d.ts +42 -0
- package/lib/node-entries/node-entries-card/node-entries-card.component.d.ts +45 -0
- package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +92 -0
- package/lib/node-entries/node-entries-card-small/node-entries-card-small.component.d.ts +23 -0
- package/lib/node-entries/node-entries-global-options/node-entries-global-options.component.d.ts +12 -0
- package/lib/node-entries/node-entries-global.service.d.ts +50 -0
- package/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.d.ts +17 -0
- package/lib/node-entries/node-entries-table/node-entries-table.component.d.ts +76 -0
- package/{src/lib/node-entries/node-entries-templates.service.ts → lib/node-entries/node-entries-templates.service.d.ts} +6 -9
- package/lib/node-entries/node-entries-wrapper.component.d.ts +129 -0
- package/lib/node-entries/node-entries.component.d.ts +32 -0
- package/lib/node-entries/node-entries.module.d.ts +43 -0
- package/lib/node-entries/node-rating/node-rating.component.d.ts +26 -0
- package/lib/node-entries/node-stats-badges/node-stats-badges.component.d.ts +17 -0
- package/lib/node-entries/node-type-badge/node-type-badge.component.d.ts +21 -0
- package/lib/node-entries/option-button/option-button.component.d.ts +11 -0
- package/lib/node-entries/preview-image/preview-image.component.d.ts +22 -0
- package/lib/node-entries/sort-select-panel/sort-select-panel.component.d.ts +16 -0
- package/lib/node-url/node-url.component.d.ts +51 -0
- package/lib/pipes/file-size.pipe.d.ts +10 -0
- package/lib/pipes/format-date.pipe.d.ts +21 -0
- package/lib/pipes/node-icon.pipe.d.ts +11 -0
- package/lib/pipes/node-image-size.pipe.d.ts +8 -0
- package/lib/pipes/node-image.pipe.d.ts +28 -0
- package/lib/pipes/node-person-name.pipe.d.ts +10 -0
- package/lib/pipes/node-title.pipe.d.ts +11 -0
- package/lib/pipes/option-tooltip.pipe.d.ts +12 -0
- package/lib/pipes/replace-chars.pipe.d.ts +10 -0
- package/lib/pipes/vcard-name.pipe.d.ts +10 -0
- package/{src/lib/services/abstract/app.service.ts → lib/services/abstract/app.service.d.ts} +1 -1
- package/lib/services/abstract/keyboard-shortcuts.service.d.ts +11 -0
- package/lib/services/abstract/options-helper.service.d.ts +10 -0
- package/{src/lib/services/abstract/toast.service.ts → lib/services/abstract/toast.service.d.ts} +1 -2
- package/lib/services/accessibility.service.d.ts +18 -0
- package/{src/lib/services/local-events.service.ts → lib/services/local-events.service.d.ts} +7 -10
- package/lib/services/node-entries.service.d.ts +69 -0
- package/lib/services/node-helper.service.d.ts +56 -0
- package/lib/services/nodes-drag-drop.service.d.ts +41 -0
- package/lib/services/options-helper-data.service.d.ts +75 -0
- package/lib/services/repo-url.service.d.ts +25 -0
- package/lib/services/temporary-storage.service.d.ts +35 -0
- package/lib/services/ui.service.d.ts +41 -0
- package/lib/sort-dropdown/sort-dropdown.component.d.ts +15 -0
- package/lib/spinner/spinner.component.d.ts +7 -0
- package/lib/translations/fallback-translation-handler.d.ts +4 -0
- package/lib/translations/languages.d.ts +4 -0
- package/lib/translations/translation-loader.d.ts +51 -0
- package/{src/lib/translations/translation-source.ts → lib/translations/translation-source.d.ts} +4 -4
- package/lib/translations/translations.module.d.ts +15 -0
- package/lib/translations/translations.service.d.ts +30 -0
- package/lib/types/accessibillity.d.ts +15 -0
- package/{src/lib/types/drag-drop.ts → lib/types/drag-drop.d.ts} +0 -3
- package/lib/types/keyboard-shortcuts.d.ts +10 -0
- package/lib/types/list-item.d.ts +55 -0
- package/lib/types/option-item.d.ts +236 -0
- package/lib/types/workflow.d.ts +14 -0
- package/lib/util/DateHelper.d.ts +44 -0
- package/lib/util/VCard.d.ts +66 -0
- package/lib/util/color-helper.d.ts +25 -0
- package/lib/util/duration-helper.d.ts +14 -0
- package/lib/util/functions.d.ts +4 -0
- package/lib/util/helper.d.ts +20 -0
- package/lib/util/isNumeric.d.ts +5 -0
- package/lib/util/rest-helper.d.ts +10 -0
- package/lib/util/ui-animation.d.ts +39 -0
- package/lib/util/ui-constants.d.ts +18 -0
- package/{src/module.ts → module.d.ts} +0 -4
- package/package.json +22 -8
- package/.browserslistrc +0 -16
- package/.eslintrc.json +0 -44
- package/karma.conf.js +0 -42
- package/ng-package.json +0 -10
- package/src/lib/actionbar/actionbar.component.html +0 -59
- package/src/lib/actionbar/actionbar.component.scss +0 -123
- package/src/lib/actionbar/actionbar.component.ts +0 -174
- package/src/lib/common/edu-sharing-ui-common.module.ts +0 -80
- package/src/lib/directives/border-box-observer.directive.ts +0 -75
- package/src/lib/directives/check-text-overflow.directive.ts +0 -61
- package/src/lib/directives/drag-nodes/drag-nodes.ts +0 -32
- package/src/lib/directives/drag-nodes/nodes-drag-source.directive.ts +0 -79
- package/src/lib/directives/drag-nodes/nodes-drag.directive.ts +0 -43
- package/src/lib/directives/drag-nodes/nodes-drop-target.directive.ts +0 -116
- package/src/lib/directives/focus-state.directive.ts +0 -34
- package/src/lib/directives/icon.directive.ts +0 -142
- package/src/lib/directives/nodes-drop-target-legacy.directive.ts +0 -155
- package/src/lib/dropdown/dropdown.component.html +0 -32
- package/src/lib/dropdown/dropdown.component.scss +0 -67
- package/src/lib/dropdown/dropdown.component.ts +0 -71
- package/src/lib/edu-sharing-ui-configuration.ts +0 -47
- package/src/lib/edu-sharing-ui.module.ts +0 -49
- package/src/lib/list-items/available-widgets.ts +0 -30
- package/src/lib/list-items/format-duration.pipe.ts +0 -17
- package/src/lib/list-items/list-base/list-base.component.html +0 -52
- package/src/lib/list-items/list-base/list-base.component.ts +0 -44
- package/src/lib/list-items/list-collection-info/list-collection-info.component.html +0 -48
- package/src/lib/list-items/list-collection-info/list-collection-info.component.scss +0 -8
- package/src/lib/list-items/list-collection-info/list-collection-info.component.ts +0 -24
- package/src/lib/list-items/list-counts/list-counts.component.html +0 -1
- package/src/lib/list-items/list-counts/list-counts.component.scss +0 -3
- package/src/lib/list-items/list-counts/list-counts.component.ts +0 -59
- package/src/lib/list-items/list-items.module.ts +0 -33
- package/src/lib/list-items/list-node-license/list-node-license.component.html +0 -8
- package/src/lib/list-items/list-node-license/list-node-license.component.ts +0 -47
- package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.html +0 -11
- package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.ts +0 -60
- package/src/lib/list-items/list-node-workflow/list-node-workflow.component.html +0 -3
- package/src/lib/list-items/list-node-workflow/list-node-workflow.component.ts +0 -21
- package/src/lib/list-items/list-text/list-text.component.html +0 -176
- package/src/lib/list-items/list-text/list-text.component.scss +0 -3
- package/src/lib/list-items/list-text/list-text.component.ts +0 -107
- package/src/lib/list-items/list-widget.ts +0 -52
- package/src/lib/list-items/node-row/node-row.component.html +0 -31
- package/src/lib/list-items/node-row/node-row.component.scss +0 -50
- package/src/lib/list-items/node-row/node-row.component.ts +0 -16
- package/src/lib/list-items/node-source.pipe.ts +0 -48
- package/src/lib/node-entries/combined-data-source.ts +0 -51
- package/src/lib/node-entries/drag-preview/drag-preview.component.html +0 -6
- package/src/lib/node-entries/drag-preview/drag-preview.component.scss +0 -35
- package/src/lib/node-entries/drag-preview/drag-preview.component.ts +0 -15
- package/src/lib/node-entries/items-cap.ts +0 -54
- package/src/lib/node-entries/list-item-label.pipe.ts +0 -28
- package/src/lib/node-entries/mixins.scss +0 -23
- package/src/lib/node-entries/node-cache.spec.ts +0 -199
- package/src/lib/node-entries/node-cache.ts +0 -81
- package/src/lib/node-entries/node-data-source.ts +0 -148
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.html +0 -167
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.scss +0 -28
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.ts +0 -132
- package/src/lib/node-entries/node-entries-card/node-entries-card.main.scss +0 -261
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.html +0 -205
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.scss +0 -181
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.ts +0 -361
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.html +0 -100
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.scss +0 -46
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.ts +0 -40
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.html +0 -23
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.scss +0 -58
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.ts +0 -16
- package/src/lib/node-entries/node-entries-global.service.ts +0 -79
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.html +0 -25
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.scss +0 -32
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.ts +0 -31
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.html +0 -270
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.scss +0 -169
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.ts +0 -333
- package/src/lib/node-entries/node-entries-wrapper.component.ts +0 -363
- package/src/lib/node-entries/node-entries.component.html +0 -33
- package/src/lib/node-entries/node-entries.component.scss +0 -13
- package/src/lib/node-entries/node-entries.component.ts +0 -151
- package/src/lib/node-entries/node-entries.module.ts +0 -93
- package/src/lib/node-entries/node-rating/node-rating.component.html +0 -53
- package/src/lib/node-entries/node-rating/node-rating.component.scss +0 -31
- package/src/lib/node-entries/node-rating/node-rating.component.ts +0 -105
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.html +0 -39
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.scss +0 -44
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.ts +0 -43
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.html +0 -31
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.scss +0 -5
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.ts +0 -36
- package/src/lib/node-entries/option-button/option-button.component.ts +0 -42
- package/src/lib/node-entries/preview-image/preview-image.component.html +0 -19
- package/src/lib/node-entries/preview-image/preview-image.component.scss +0 -31
- package/src/lib/node-entries/preview-image/preview-image.component.ts +0 -47
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.html +0 -27
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.scss +0 -9
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.ts +0 -26
- package/src/lib/node-url/node-url.component.html +0 -66
- package/src/lib/node-url/node-url.component.scss +0 -32
- package/src/lib/node-url/node-url.component.ts +0 -136
- package/src/lib/pipes/file-size.pipe.ts +0 -24
- package/src/lib/pipes/format-date.pipe.ts +0 -39
- package/src/lib/pipes/node-icon.pipe.ts +0 -11
- package/src/lib/pipes/node-image-size.pipe.ts +0 -18
- package/src/lib/pipes/node-image.pipe.ts +0 -71
- package/src/lib/pipes/node-person-name.pipe.ts +0 -41
- package/src/lib/pipes/node-title.pipe.ts +0 -12
- package/src/lib/pipes/option-tooltip.pipe.ts +0 -32
- package/src/lib/pipes/replace-chars.pipe.ts +0 -21
- package/src/lib/pipes/vcard-name.pipe.ts +0 -11
- package/src/lib/services/abstract/keyboard-shortcuts.service.ts +0 -10
- package/src/lib/services/abstract/options-helper.service.ts +0 -29
- package/src/lib/services/accessibility.service.ts +0 -101
- package/src/lib/services/node-entries.service.ts +0 -172
- package/src/lib/services/node-helper.service.ts +0 -239
- package/src/lib/services/nodes-drag-drop.service.ts +0 -165
- package/src/lib/services/options-helper-data.service.ts +0 -186
- package/src/lib/services/repo-url.service.ts +0 -46
- package/src/lib/services/temporary-storage.service.ts +0 -58
- package/src/lib/services/ui.service.ts +0 -182
- package/src/lib/sort-dropdown/sort-dropdown.component.html +0 -22
- package/src/lib/sort-dropdown/sort-dropdown.component.scss +0 -47
- package/src/lib/sort-dropdown/sort-dropdown.component.ts +0 -42
- package/src/lib/spinner/spinner.component.html +0 -14
- package/src/lib/spinner/spinner.component.scss +0 -141
- package/src/lib/spinner/spinner.component.ts +0 -12
- package/src/lib/translations/README.md +0 -44
- package/src/lib/translations/fallback-translation-handler.ts +0 -7
- package/src/lib/translations/languages.ts +0 -6
- package/src/lib/translations/translation-loader.spec.ts +0 -352
- package/src/lib/translations/translation-loader.ts +0 -189
- package/src/lib/translations/translations.module.ts +0 -49
- package/src/lib/translations/translations.service.spec.ts +0 -152
- package/src/lib/translations/translations.service.ts +0 -188
- package/src/lib/types/accessibillity.ts +0 -15
- package/src/lib/types/keyboard-shortcuts.ts +0 -29
- package/src/lib/types/list-item.ts +0 -67
- package/src/lib/types/option-item.ts +0 -247
- package/src/lib/types/workflow.ts +0 -35
- package/src/lib/util/DateHelper.spec.ts +0 -112
- package/src/lib/util/DateHelper.ts +0 -197
- package/src/lib/util/VCard.ts +0 -277
- package/src/lib/util/color-helper.ts +0 -125
- package/src/lib/util/duration-helper.spec.ts +0 -35
- package/src/lib/util/duration-helper.ts +0 -98
- package/src/lib/util/functions.ts +0 -15
- package/src/lib/util/helper.ts +0 -60
- package/src/lib/util/isNumeric.ts +0 -13
- package/src/lib/util/rest-helper.ts +0 -28
- package/src/lib/util/ui-animation.ts +0 -154
- package/src/lib/util/ui-constants.ts +0 -20
- package/src/test.ts +0 -28
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- /package/{src/lib/types/api-models.ts → lib/types/api-models.d.ts} +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
|
|
2
|
+
import { clearDraggedNodes, dragNodesTransferType, saveDraggedNodes } from './drag-nodes';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Handle dragging and dropping of node elements.
|
|
6
|
+
*
|
|
7
|
+
* Use in combination with `NodesDropTargetDirective`.
|
|
8
|
+
*
|
|
9
|
+
* When nodes that set this directive are dragged, we save information about
|
|
10
|
+
* these nodes that can be used by `NodesDropTargetDirective`.
|
|
11
|
+
*/
|
|
12
|
+
export class NodesDragSourceDirective {
|
|
13
|
+
constructor(elementRef) {
|
|
14
|
+
this.elementRef = elementRef;
|
|
15
|
+
/**
|
|
16
|
+
* Triggered when processing the dragstart event.
|
|
17
|
+
*
|
|
18
|
+
* Changes to `nodes` performed by event handlers of `nodesDragStart` will
|
|
19
|
+
* be taken into account for the drag operation.
|
|
20
|
+
*/
|
|
21
|
+
this.nodesDragStart = new EventEmitter(false);
|
|
22
|
+
/**
|
|
23
|
+
* Triggered when processing the dragend event.
|
|
24
|
+
*/
|
|
25
|
+
this.nodesDragEnd = new EventEmitter();
|
|
26
|
+
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
// Set the `draggable` attribute when this directive is active.
|
|
29
|
+
if (changes.nodes) {
|
|
30
|
+
if (!!changes.nodes.currentValue !== !!changes.nodes.previousValue) {
|
|
31
|
+
this.elementRef.nativeElement.setAttribute('draggable', (!!this.nodes).toString());
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
onDragStart(event) {
|
|
36
|
+
if (!this.nodes) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.nodesDragStart.emit(event);
|
|
40
|
+
// Use the transfer-data type to identify a node-drag operation.
|
|
41
|
+
event.dataTransfer.setData(dragNodesTransferType, '');
|
|
42
|
+
// Chrome doesn't provide drag transfer data to dragover event listeners
|
|
43
|
+
// for security reasons, so we provide the data via localStorage.
|
|
44
|
+
//
|
|
45
|
+
// Wait for updates by event handlers of `nodesDragStart` to propagate.
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
saveDraggedNodes(this.nodes);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
onDragEnd(event) {
|
|
51
|
+
if (!this.nodes) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.nodesDragEnd.emit(event);
|
|
55
|
+
clearDraggedNodes();
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragSourceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDragSourceDirective, selector: "[esNodesDragSource]", inputs: { nodes: ["esNodesDragSource", "nodes"] }, outputs: { nodesDragStart: "nodesDragStart", nodesDragEnd: "nodesDragEnd" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragSourceDirective, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[esNodesDragSource]',
|
|
64
|
+
}]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { nodes: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['esNodesDragSource']
|
|
68
|
+
}], nodesDragStart: [{
|
|
69
|
+
type: Output
|
|
70
|
+
}], nodesDragEnd: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}], onDragStart: [{
|
|
73
|
+
type: HostListener,
|
|
74
|
+
args: ['dragstart', ['$event']]
|
|
75
|
+
}], onDragEnd: [{
|
|
76
|
+
type: HostListener,
|
|
77
|
+
args: ['dragend', ['$event']]
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJhZy1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUlULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUY7Ozs7Ozs7R0FPRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFvQmpDLFlBQW9CLFVBQStCO1FBQS9CLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBWm5EOzs7OztXQUtHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksQ0FBWSxLQUFLLENBQUMsQ0FBQztRQUM5RDs7V0FFRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUVELENBQUM7SUFFdkQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLCtEQUErRDtRQUMvRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDdEY7U0FDSjtJQUNMLENBQUM7SUFFc0MsV0FBVyxDQUFDLEtBQWdCO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsZ0VBQWdFO1FBQ2hFLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELHdFQUF3RTtRQUN4RSxpRUFBaUU7UUFDakUsRUFBRTtRQUNGLHVFQUF1RTtRQUN2RSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVvQyxTQUFTLENBQUMsS0FBZ0I7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBckRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2xDO2lHQU8rQixLQUFLO3NCQUFoQyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFRaEIsY0FBYztzQkFBdkIsTUFBTTtnQkFJRyxZQUFZO3NCQUFyQixNQUFNO2dCQWFnQyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQkEsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IGNsZWFyRHJhZ2dlZE5vZGVzLCBkcmFnTm9kZXNUcmFuc2ZlclR5cGUsIHNhdmVEcmFnZ2VkTm9kZXMgfSBmcm9tICcuL2RyYWctbm9kZXMnO1xuXG4vKipcbiAqIEhhbmRsZSBkcmFnZ2luZyBhbmQgZHJvcHBpbmcgb2Ygbm9kZSBlbGVtZW50cy5cbiAqXG4gKiBVc2UgaW4gY29tYmluYXRpb24gd2l0aCBgTm9kZXNEcm9wVGFyZ2V0RGlyZWN0aXZlYC5cbiAqXG4gKiBXaGVuIG5vZGVzIHRoYXQgc2V0IHRoaXMgZGlyZWN0aXZlIGFyZSBkcmFnZ2VkLCB3ZSBzYXZlIGluZm9ybWF0aW9uIGFib3V0XG4gKiB0aGVzZSBub2RlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGBOb2Rlc0Ryb3BUYXJnZXREaXJlY3RpdmVgLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc05vZGVzRHJhZ1NvdXJjZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOb2Rlc0RyYWdTb3VyY2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBub2RlcyB0byBiZSBkcmFnZ2VkLlxuICAgICAqXG4gICAgICogV2hlbiBub3Qgc2V0LCB0aGlzIGRpcmVjdGl2ZSBpcyBlZmZlY3RpdmVseSBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2VzTm9kZXNEcmFnU291cmNlJykgbm9kZXM/OiBOb2RlW107XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBkcmFnc3RhcnQgZXZlbnQuXG4gICAgICpcbiAgICAgKiBDaGFuZ2VzIHRvIGBub2Rlc2AgcGVyZm9ybWVkIGJ5IGV2ZW50IGhhbmRsZXJzIG9mIGBub2Rlc0RyYWdTdGFydGAgd2lsbFxuICAgICAqIGJlIHRha2VuIGludG8gYWNjb3VudCBmb3IgdGhlIGRyYWcgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBub2Rlc0RyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PihmYWxzZSk7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIHdoZW4gcHJvY2Vzc2luZyB0aGUgZHJhZ2VuZCBldmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgbm9kZXNEcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8RWxlbWVudD4pIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIC8vIFNldCB0aGUgYGRyYWdnYWJsZWAgYXR0cmlidXRlIHdoZW4gdGhpcyBkaXJlY3RpdmUgaXMgYWN0aXZlLlxuICAgICAgICBpZiAoY2hhbmdlcy5ub2Rlcykge1xuICAgICAgICAgICAgaWYgKCEhY2hhbmdlcy5ub2Rlcy5jdXJyZW50VmFsdWUgIT09ICEhY2hhbmdlcy5ub2Rlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcmFnZ2FibGUnLCAoISF0aGlzLm5vZGVzKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2Rlc0RyYWdTdGFydC5lbWl0KGV2ZW50KTtcbiAgICAgICAgLy8gVXNlIHRoZSB0cmFuc2Zlci1kYXRhIHR5cGUgdG8gaWRlbnRpZnkgYSBub2RlLWRyYWcgb3BlcmF0aW9uLlxuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShkcmFnTm9kZXNUcmFuc2ZlclR5cGUsICcnKTtcbiAgICAgICAgLy8gQ2hyb21lIGRvZXNuJ3QgcHJvdmlkZSBkcmFnIHRyYW5zZmVyIGRhdGEgdG8gZHJhZ292ZXIgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAgIC8vIGZvciBzZWN1cml0eSByZWFzb25zLCBzbyB3ZSBwcm92aWRlIHRoZSBkYXRhIHZpYSBsb2NhbFN0b3JhZ2UuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdhaXQgZm9yIHVwZGF0ZXMgYnkgZXZlbnQgaGFuZGxlcnMgb2YgYG5vZGVzRHJhZ1N0YXJ0YCB0byBwcm9wYWdhdGUuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2F2ZURyYWdnZWROb2Rlcyh0aGlzLm5vZGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcsIFsnJGV2ZW50J10pIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5ub2Rlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZXNEcmFnRW5kLmVtaXQoZXZlbnQpO1xuICAgICAgICBjbGVhckRyYWdnZWROb2RlcygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/cdk/drag-drop";
|
|
4
|
+
import * as i2 from "../../services/nodes-drag-drop.service";
|
|
5
|
+
/**
|
|
6
|
+
* A draggable node.
|
|
7
|
+
*
|
|
8
|
+
* Use in combination with `cdkDrag`, setting `cdkDragData` to the array of nodes to be dragged.
|
|
9
|
+
*/
|
|
10
|
+
export class NodesDragDirective {
|
|
11
|
+
constructor(cdkDrag, nodesDragDrop) {
|
|
12
|
+
this.cdkDrag = cdkDrag;
|
|
13
|
+
this.nodesDragDrop = nodesDragDrop;
|
|
14
|
+
this.cdkDrag.started.subscribe((event) => {
|
|
15
|
+
this.nodesDragDrop.draggedNodes = event.source.data;
|
|
16
|
+
// Position the preview element (the one being dragged around) next to the cursor to
|
|
17
|
+
// avoid covering possible drop targets with the preview.
|
|
18
|
+
event.source._dragRef['_pickupPositionInElement'] = { x: 0, y: 0 };
|
|
19
|
+
});
|
|
20
|
+
this.cdkDrag.released.subscribe(() => {
|
|
21
|
+
if (this.nodesDragDrop.canDrop?.accept) {
|
|
22
|
+
this.inhibitPreviewAnimation();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
this.cdkDrag.dropped.subscribe(() => {
|
|
26
|
+
this.nodesDragDrop.onDropped(this.cdkDrag.data);
|
|
27
|
+
this.nodesDragDrop.draggedNodes = null;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
inhibitPreviewAnimation() {
|
|
31
|
+
const style = document.createElement('style');
|
|
32
|
+
document.body.appendChild(style);
|
|
33
|
+
style.innerHTML = `.cdk-drag-preview { transition: none !important; }`;
|
|
34
|
+
// Don't need to go outside ng zone because `cdkDrag.released` already runs outside the
|
|
35
|
+
// zone.
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
document.body.removeChild(style);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragDirective, deps: [{ token: i1.CdkDrag }, { token: i2.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
41
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDragDirective, selector: "[esNodesDrag]", ngImport: i0 }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDragDirective, decorators: [{
|
|
44
|
+
type: Directive,
|
|
45
|
+
args: [{
|
|
46
|
+
selector: '[esNodesDrag]',
|
|
47
|
+
}]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.CdkDrag }, { type: i2.NodesDragDropService }]; } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJhZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvZHJhZy1ub2Rlcy9ub2Rlcy1kcmFnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTFDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLE9BQXdCLEVBQVUsYUFBbUM7UUFBckUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDckYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDcEQsb0ZBQW9GO1lBQ3BGLHlEQUF5RDtZQUN6RCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNsQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsU0FBUyxHQUFHLG9EQUFvRCxDQUFDO1FBQ3ZFLHVGQUF1RjtRQUN2RixRQUFRO1FBQ1IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E1QlEsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQgeyBOb2Rlc0RyYWdEcm9wU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGVzLWRyYWctZHJvcC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGRyYWdnYWJsZSBub2RlLlxuICpcbiAqIFVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIGBjZGtEcmFnYCwgc2V0dGluZyBgY2RrRHJhZ0RhdGFgIHRvIHRoZSBhcnJheSBvZiBub2RlcyB0byBiZSBkcmFnZ2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tlc05vZGVzRHJhZ10nLFxufSlcbmV4cG9ydCBjbGFzcyBOb2Rlc0RyYWdEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RrRHJhZzogQ2RrRHJhZzxOb2RlW10+LCBwcml2YXRlIG5vZGVzRHJhZ0Ryb3A6IE5vZGVzRHJhZ0Ryb3BTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuY2RrRHJhZy5zdGFydGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5kcmFnZ2VkTm9kZXMgPSBldmVudC5zb3VyY2UuZGF0YTtcbiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHRoZSBwcmV2aWV3IGVsZW1lbnQgKHRoZSBvbmUgYmVpbmcgZHJhZ2dlZCBhcm91bmQpIG5leHQgdG8gdGhlIGN1cnNvciB0b1xuICAgICAgICAgICAgLy8gYXZvaWQgY292ZXJpbmcgcG9zc2libGUgZHJvcCB0YXJnZXRzIHdpdGggdGhlIHByZXZpZXcuXG4gICAgICAgICAgICBldmVudC5zb3VyY2UuX2RyYWdSZWZbJ19waWNrdXBQb3NpdGlvbkluRWxlbWVudCddID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNka0RyYWcucmVsZWFzZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGVzRHJhZ0Ryb3AuY2FuRHJvcD8uYWNjZXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmhpYml0UHJldmlld0FuaW1hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZGtEcmFnLmRyb3BwZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5vbkRyb3BwZWQodGhpcy5jZGtEcmFnLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5ub2Rlc0RyYWdEcm9wLmRyYWdnZWROb2RlcyA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5oaWJpdFByZXZpZXdBbmltYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICAgIHN0eWxlLmlubmVySFRNTCA9IGAuY2RrLWRyYWctcHJldmlldyB7IHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsgfWA7XG4gICAgICAgIC8vIERvbid0IG5lZWQgdG8gZ28gb3V0c2lkZSBuZyB6b25lIGJlY2F1c2UgYGNka0RyYWcucmVsZWFzZWRgIGFscmVhZHkgcnVucyBvdXRzaWRlIHRoZVxuICAgICAgICAvLyB6b25lLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc3R5bGUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/nodes-drag-drop.service";
|
|
6
|
+
const ACTIVE_DROP_TARGET_ACCEPT_CLASS = 'es-nodes-active-drop-target-accept';
|
|
7
|
+
const ACTIVE_DROP_TARGET_DENY_CLASS = 'es-nodes-active-drop-target-deny';
|
|
8
|
+
export class NodesDropTargetDirective {
|
|
9
|
+
get active() {
|
|
10
|
+
return this.activeDropTargetSubject.value;
|
|
11
|
+
}
|
|
12
|
+
constructor(ngZone, elementRef, nodesDragDrop) {
|
|
13
|
+
this.ngZone = ngZone;
|
|
14
|
+
this.elementRef = elementRef;
|
|
15
|
+
this.nodesDragDrop = nodesDragDrop;
|
|
16
|
+
this.nodeDropped = new EventEmitter();
|
|
17
|
+
this.activeDropTargetSubject = new BehaviorSubject(null);
|
|
18
|
+
this.destroyed = new Subject();
|
|
19
|
+
this.registerMouseEnterLeave();
|
|
20
|
+
this.registerActiveDropTarget();
|
|
21
|
+
}
|
|
22
|
+
ngOnDestroy() {
|
|
23
|
+
this.destroyed.next();
|
|
24
|
+
this.destroyed.complete();
|
|
25
|
+
}
|
|
26
|
+
_setActiveDropTarget(value) {
|
|
27
|
+
this.activeDropTargetSubject.next(value);
|
|
28
|
+
}
|
|
29
|
+
registerMouseEnterLeave() {
|
|
30
|
+
this.ngZone.runOutsideAngular(() => {
|
|
31
|
+
this.elementRef.nativeElement.addEventListener('mouseenter', () => this.nodesDragDrop.onMouseEnter(this));
|
|
32
|
+
this.elementRef.nativeElement.addEventListener('mouseleave', () => this.nodesDragDrop.onMouseLeave(this));
|
|
33
|
+
// Firefox does not fire a mouseleave event when the element is removed from the DOM
|
|
34
|
+
// while being hovered. When an element is dragged, it will be replaced with a
|
|
35
|
+
// placeholder. If the element was also a drop target, we would think that we are still
|
|
36
|
+
// hovering the element.
|
|
37
|
+
observeRemovedFromParent(this.elementRef.nativeElement)
|
|
38
|
+
.pipe(takeUntil(this.destroyed))
|
|
39
|
+
.subscribe(() => this.nodesDragDrop.onMouseLeave(this));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
registerActiveDropTarget() {
|
|
43
|
+
this.activeDropTargetSubject
|
|
44
|
+
.pipe(takeUntil(this.destroyed))
|
|
45
|
+
.subscribe((dropTargetState) => {
|
|
46
|
+
const canDrop = dropTargetState?.canDrop;
|
|
47
|
+
const classList = this.elementRef.nativeElement.classList;
|
|
48
|
+
classList.remove(ACTIVE_DROP_TARGET_ACCEPT_CLASS, ACTIVE_DROP_TARGET_DENY_CLASS);
|
|
49
|
+
if (canDrop?.accept) {
|
|
50
|
+
classList.add(ACTIVE_DROP_TARGET_ACCEPT_CLASS);
|
|
51
|
+
}
|
|
52
|
+
else if (canDrop?.denyExplicit) {
|
|
53
|
+
classList.add(ACTIVE_DROP_TARGET_DENY_CLASS);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDropTargetDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: { target: ["esNodesDropTarget", "target"], canDropNodes: "canDropNodes" }, outputs: { nodeDropped: "nodeDropped" }, exportAs: ["esNodesDropTarget"], ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodesDropTargetDirective, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[esNodesDropTarget]',
|
|
64
|
+
exportAs: 'esNodesDropTarget',
|
|
65
|
+
}]
|
|
66
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.NodesDragDropService }]; }, propDecorators: { target: [{
|
|
67
|
+
type: Input,
|
|
68
|
+
args: ['esNodesDropTarget']
|
|
69
|
+
}], canDropNodes: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], nodeDropped: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}] } });
|
|
74
|
+
function observeRemovedFromParent(element) {
|
|
75
|
+
return new Observable((subscriber) => {
|
|
76
|
+
const observer = new MutationObserver((event) => {
|
|
77
|
+
for (const mutation of event) {
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
if ([...mutation.removedNodes].includes(element)) {
|
|
80
|
+
subscriber.next();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Wait for `element` to be attached to the DOM.
|
|
85
|
+
let timeout = setTimeout(() => {
|
|
86
|
+
timeout = null;
|
|
87
|
+
observer.observe(element.parentNode, { childList: true, subtree: false });
|
|
88
|
+
});
|
|
89
|
+
return () => {
|
|
90
|
+
// In case the element was destroyed before we attached the mutation observer, we cancel
|
|
91
|
+
// the observable returned by this function and don't attach the mutation observer.
|
|
92
|
+
if (timeout !== null) {
|
|
93
|
+
// TODO: Investigate elements that trigger the following warning.
|
|
94
|
+
//
|
|
95
|
+
// console.warn(
|
|
96
|
+
// 'Possible performance leak: the element got destroyed before it could be added to the DOM.',
|
|
97
|
+
// element,
|
|
98
|
+
// );
|
|
99
|
+
clearTimeout(timeout);
|
|
100
|
+
}
|
|
101
|
+
observer.disconnect();
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctbm9kZXMvbm9kZXMtZHJvcC10YXJnZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTNDLE1BQU0sK0JBQStCLEdBQUcsb0NBQW9DLENBQUM7QUFDN0UsTUFBTSw2QkFBNkIsR0FBRyxrQ0FBa0MsQ0FBQztBQU16RSxNQUFNLE9BQU8sd0JBQXdCO0lBS2pDLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBS0QsWUFDWSxNQUFjLEVBQ2QsVUFBbUMsRUFDbkMsYUFBbUM7UUFGbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQVpyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFNaEQsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXlCLElBQUksQ0FBQyxDQUFDO1FBQzVFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJ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USxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxFQUFFO1lBQ1Isd0ZBQXdGO1lBQ3hGLG1GQUFtRjtZQUNuRixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLGlFQUFpRTtnQkFDakUsRUFBRTtnQkFDRixnQkFBZ0I7Z0JBQ2hCLG1HQUFtRztnQkFDbkcsZUFBZTtnQkFDZixLQUFLO2dCQUNMLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QjtZQUNELFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhbkRyb3AsIERyYWdEYXRhLCBEcm9wVGFyZ2V0U3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcy9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTm9kZXNEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2Rlcy1kcmFnLWRyb3Auc2VydmljZSc7XG5cbmNvbnN0IEFDVElWRV9EUk9QX1RBUkdFVF9BQ0NFUFRfQ0xBU1MgPSAnZXMtbm9kZXMtYWN0aXZlLWRyb3AtdGFyZ2V0LWFjY2VwdCc7XG5jb25zdCBBQ1RJVkVfRFJPUF9UQVJHRVRfREVOWV9DTEFTUyA9ICdlcy1ub2Rlcy1hY3RpdmUtZHJvcC10YXJnZXQtZGVueSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2VzTm9kZXNEcm9wVGFyZ2V0XScsXG4gICAgZXhwb3J0QXM6ICdlc05vZGVzRHJvcFRhcmdldCcsXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVzRHJvcFRhcmdldERpcmVjdGl2ZTxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZXNOb2Rlc0Ryb3BUYXJnZXQnKSB0YXJnZXQ6IFQ7XG4gICAgQElucHV0KCkgY2FuRHJvcE5vZGVzOiAoZHJhZ0RhdGE6IERyYWdEYXRhPFQ+KSA9PiBDYW5Ecm9wO1xuICAgIEBPdXRwdXQoKSBub2RlRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0RhdGE8VD4+KCk7XG5cbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFjdGl2ZURyb3BUYXJnZXRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcm9wVGFyZ2V0U3RhdGUgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBub2Rlc0RyYWdEcm9wOiBOb2Rlc0RyYWdEcm9wU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWdpc3Rlck1vdXNlRW50ZXJMZWF2ZSgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQWN0aXZlRHJvcFRhcmdldCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgX3NldEFjdGl2ZURyb3BUYXJnZXQodmFsdWU6IERyb3BUYXJnZXRTdGF0ZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyTW91c2VFbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzRHJhZ0Ryb3Aub25Nb3VzZUVudGVyKHRoaXMpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMubm9kZXNEcmFnRHJvcC5vbk1vdXNlTGVhdmUodGhpcyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBmaXJlIGEgbW91c2VsZWF2ZSBldmVudCB3aGVuIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4gICAgICAgICAgICAvLyB3aGlsZSBiZWluZyBob3ZlcmVkLiBXaGVuIGFuIGVsZW1lbnQgaXMgZHJhZ2dlZCwgaXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGFcbiAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVyLiBJZiB0aGUgZWxlbWVudCB3YXMgYWxzbyBhIGRyb3AgdGFyZ2V0LCB3ZSB3b3VsZCB0aGluayB0aGF0IHdlIGFyZSBzdGlsbFxuICAgICAgICAgICAgLy8gaG92ZXJpbmcgdGhlIGVsZW1lbnQuXG4gICAgICAgICAgICBvYnNlcnZlUmVtb3ZlZEZyb21QYXJlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubm9kZXNEcmFnRHJvcC5vbk1vdXNlTGVhdmUodGhpcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyQWN0aXZlRHJvcFRhcmdldCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEcm9wVGFyZ2V0U3ViamVjdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRyb3BUYXJnZXRTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbkRyb3AgPSBkcm9wVGFyZ2V0U3RhdGU/LmNhbkRyb3A7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICAgICAgICAgIGNsYXNzTGlzdC5yZW1vdmUoQUNUSVZFX0RST1BfVEFSR0VUX0FDQ0VQVF9DTEFTUywgQUNUSVZFX0RST1BfVEFSR0VUX0RFTllfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmIChjYW5Ecm9wPy5hY2NlcHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0LmFkZChBQ1RJVkVfRFJPUF9UQVJHRVRfQUNDRVBUX0NMQVNTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbkRyb3A/LmRlbnlFeHBsaWNpdCkge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3QuYWRkKEFDVElWRV9EUk9QX1RBUkdFVF9ERU5ZX0NMQVNTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG9ic2VydmVSZW1vdmVkRnJvbVBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBldmVudCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBpZiAoWy4uLm11dGF0aW9uLnJlbW92ZWROb2Rlc10uaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gV2FpdCBmb3IgYGVsZW1lbnRgIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgIGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudC5wYXJlbnROb2RlLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW4gY2FzZSB0aGUgZWxlbWVudCB3YXMgZGVzdHJveWVkIGJlZm9yZSB3ZSBhdHRhY2hlZCB0aGUgbXV0YXRpb24gb2JzZXJ2ZXIsIHdlIGNhbmNlbFxuICAgICAgICAgICAgLy8gdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBhbmQgZG9uJ3QgYXR0YWNoIHRoZSBtdXRhdGlvbiBvYnNlcnZlci5cbiAgICAgICAgICAgIGlmICh0aW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgZWxlbWVudHMgdGhhdCB0cmlnZ2VyIHRoZSBmb2xsb3dpbmcgd2FybmluZy5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAvLyAgICAgJ1Bvc3NpYmxlIHBlcmZvcm1hbmNlIGxlYWs6IHRoZSBlbGVtZW50IGdvdCBkZXN0cm95ZWQgYmVmb3JlIGl0IGNvdWxkIGJlIGFkZGVkIHRvIHRoZSBET00uJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Directive, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FocusStateDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
/** Either the element or one of its descendants has focus. */
|
|
6
|
+
this.hasFocus = false;
|
|
7
|
+
/** The element is being hovered with the cursor. */
|
|
8
|
+
this.hovering = false;
|
|
9
|
+
}
|
|
10
|
+
onFocusIn() {
|
|
11
|
+
this.hasFocus = true;
|
|
12
|
+
}
|
|
13
|
+
onFocusOut() {
|
|
14
|
+
this.hasFocus = false;
|
|
15
|
+
}
|
|
16
|
+
onMouseOver() {
|
|
17
|
+
this.hovering = true;
|
|
18
|
+
}
|
|
19
|
+
onMouseOut() {
|
|
20
|
+
this.hovering = false;
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: FocusStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: FocusStateDirective, selector: "[esFocusState]", host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()", "mouseenter": "onMouseOver()", "mouseleave": "onMouseOut()" } }, exportAs: ["esFocusState"], ngImport: i0 }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: FocusStateDirective, decorators: [{
|
|
26
|
+
type: Directive,
|
|
27
|
+
args: [{
|
|
28
|
+
selector: '[esFocusState]',
|
|
29
|
+
exportAs: 'esFocusState',
|
|
30
|
+
}]
|
|
31
|
+
}], ctorParameters: function () { return []; }, propDecorators: { onFocusIn: [{
|
|
32
|
+
type: HostListener,
|
|
33
|
+
args: ['focusin']
|
|
34
|
+
}], onFocusOut: [{
|
|
35
|
+
type: HostListener,
|
|
36
|
+
args: ['focusout']
|
|
37
|
+
}], onMouseOver: [{
|
|
38
|
+
type: HostListener,
|
|
39
|
+
args: ['mouseenter']
|
|
40
|
+
}], onMouseOut: [{
|
|
41
|
+
type: HostListener,
|
|
42
|
+
args: ['mouseleave']
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLG1CQUFtQjtJQU01QjtRQUxBLDhEQUE4RDtRQUM5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9EQUFvRDtRQUNwRCxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBRUYsQ0FBQztJQUdoQixTQUFTO1FBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBR0QsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs4R0ExQlEsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzBFQVVHLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTO2dCQU12QixVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVTtnQkFNeEIsV0FBVztzQkFEVixZQUFZO3VCQUFDLFlBQVk7Z0JBTTFCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXNGb2N1c1N0YXRlXScsXG4gICAgZXhwb3J0QXM6ICdlc0ZvY3VzU3RhdGUnLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1N0YXRlRGlyZWN0aXZlIHtcbiAgICAvKiogRWl0aGVyIHRoZSBlbGVtZW50IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHMgaGFzIGZvY3VzLiAqL1xuICAgIGhhc0ZvY3VzID0gZmFsc2U7XG4gICAgLyoqIFRoZSBlbGVtZW50IGlzIGJlaW5nIGhvdmVyZWQgd2l0aCB0aGUgY3Vyc29yLiAqL1xuICAgIGhvdmVyaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJylcbiAgICBvbkZvY3VzSW4oKSB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBvbkZvY3VzT3V0KCkge1xuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgb25Nb3VzZU92ZXIoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIG9uTW91c2VPdXQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Created by Torsten on 13.01.2017.
|
|
3
|
+
*/
|
|
4
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
+
import { Directive, Input, Optional } from '@angular/core';
|
|
6
|
+
import { take } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngx-translate/core";
|
|
9
|
+
import * as i2 from "ngx-edu-sharing-api";
|
|
10
|
+
/**
|
|
11
|
+
* Replaces the element's content with an icon.
|
|
12
|
+
*
|
|
13
|
+
* Example: `<i esIcon="save"></i>`
|
|
14
|
+
*
|
|
15
|
+
* Optionally, a translated `aria-label` can be attached by setting `aria` to a truthy value: `<i
|
|
16
|
+
* esIcon="save" aria="true"></i>`. Otherwise, `aria-hidden` will be set.
|
|
17
|
+
*
|
|
18
|
+
* For backwards compatibility, the directive is also activated on elements that set
|
|
19
|
+
* `class="material-icons"`. This is mainly to set the `aria-hidden` attribute. Occurrences should
|
|
20
|
+
* be updated to the syntax above.
|
|
21
|
+
*/
|
|
22
|
+
export class IconDirective {
|
|
23
|
+
/**
|
|
24
|
+
* An alt text to show to screen readers.
|
|
25
|
+
*
|
|
26
|
+
* If omitted, the icon will be invisible to screen readers.
|
|
27
|
+
*
|
|
28
|
+
* @see https://material.angular.io/components/icon/overview#indicator-icons
|
|
29
|
+
*/
|
|
30
|
+
set altText(altText) {
|
|
31
|
+
this.setAltText(altText);
|
|
32
|
+
}
|
|
33
|
+
/** If true, an alt text (see above) will be set based on the icon. */
|
|
34
|
+
set aria(aria) {
|
|
35
|
+
aria = coerceBooleanProperty(aria);
|
|
36
|
+
if (aria !== this._aria) {
|
|
37
|
+
this._aria = aria;
|
|
38
|
+
if (this.isReady) {
|
|
39
|
+
this.updateAria();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
set esIcon(id) {
|
|
44
|
+
this.setIcon(id);
|
|
45
|
+
}
|
|
46
|
+
constructor(element, translate, config) {
|
|
47
|
+
this.element = element;
|
|
48
|
+
this.translate = translate;
|
|
49
|
+
this.config = config;
|
|
50
|
+
this.isReady = false;
|
|
51
|
+
}
|
|
52
|
+
async ngOnInit() {
|
|
53
|
+
this.isReady = true;
|
|
54
|
+
this.element.nativeElement.setAttribute('aria-hidden', 'true');
|
|
55
|
+
this.updateAria();
|
|
56
|
+
// FIXME: This might resolve after `setIcon` was called and mappings might be ignored.
|
|
57
|
+
await this.config.observeConfig().pipe(take(1)).toPromise();
|
|
58
|
+
this.iconsConfig = this.config.instant('icons', null);
|
|
59
|
+
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
if (this.altTextSpan) {
|
|
62
|
+
this.altTextSpan.remove();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
setIcon(id) {
|
|
66
|
+
if (this._id) {
|
|
67
|
+
this.element.nativeElement.classList.remove('edu-icons', 'custom-icons', 'material-icons');
|
|
68
|
+
}
|
|
69
|
+
let customClass = null;
|
|
70
|
+
const mapping = this.iconsConfig?.filter((i) => i.original === id);
|
|
71
|
+
if (mapping?.length === 1) {
|
|
72
|
+
id = mapping[0].replace || '';
|
|
73
|
+
customClass = mapping[0].cssClass;
|
|
74
|
+
}
|
|
75
|
+
this._id = id;
|
|
76
|
+
if (this._aria) {
|
|
77
|
+
this.updateAria();
|
|
78
|
+
}
|
|
79
|
+
let cssClass;
|
|
80
|
+
if (id?.startsWith('edu-') && !customClass) {
|
|
81
|
+
cssClass = 'edu-icons';
|
|
82
|
+
id = id.substr(4);
|
|
83
|
+
}
|
|
84
|
+
else if (id?.startsWith('custom-') || customClass) {
|
|
85
|
+
cssClass = 'custom-icons';
|
|
86
|
+
id = id.substr(7);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
cssClass = 'material-icons';
|
|
90
|
+
}
|
|
91
|
+
this.element.nativeElement.classList.add(cssClass);
|
|
92
|
+
if (customClass) {
|
|
93
|
+
this.element.nativeElement.classList.add(customClass);
|
|
94
|
+
}
|
|
95
|
+
this.element.nativeElement.innerText = id;
|
|
96
|
+
}
|
|
97
|
+
updateAria() {
|
|
98
|
+
if (this._aria !== undefined) {
|
|
99
|
+
if (this._aria && this._id) {
|
|
100
|
+
this.translate.get('ICON_LABELS.' + this._id).subscribe((lang) => {
|
|
101
|
+
this.setAltText(lang);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.setAltText(null);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setAltText(altText) {
|
|
110
|
+
if (altText && !this.altTextSpan) {
|
|
111
|
+
this.insertAltTextSpan();
|
|
112
|
+
}
|
|
113
|
+
if (this.altTextSpan) {
|
|
114
|
+
this.altTextSpan.innerText = altText;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
insertAltTextSpan() {
|
|
118
|
+
this.altTextSpan = document.createElement('span');
|
|
119
|
+
this.altTextSpan.classList.add('cdk-visually-hidden');
|
|
120
|
+
this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
|
|
121
|
+
}
|
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }, { token: i2.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
123
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.6", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon" }, ngImport: i0 }); }
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: IconDirective, decorators: [{
|
|
126
|
+
type: Directive,
|
|
127
|
+
args: [{
|
|
128
|
+
selector: 'i[esIcon], i.material-icons',
|
|
129
|
+
}]
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TranslateService }, { type: i2.ConfigService, decorators: [{
|
|
131
|
+
type: Optional
|
|
132
|
+
}] }]; }, propDecorators: { altText: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], aria: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], esIcon: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBT3RCOzs7Ozs7T0FNRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQWEsSUFBSSxDQUFDLElBQWE7UUFDM0IsSUFBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFDWSxPQUFnQyxFQUNoQyxTQUEyQixFQUNmLE1BQXFCO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FB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QUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pCO1NBQ0o7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQWU7UUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkYsQ0FBQzs4R0FuSFEsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7aUJBQzFDOzswQkFxQ1EsUUFBUTs0Q0F0QkEsT0FBTztzQkFBbkIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgVG9yc3RlbiBvbiAxMy4wMS4yMDE3LlxuICovXG5cbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGVsZW1lbnQncyBjb250ZW50IHdpdGggYW4gaWNvbi5cbiAqXG4gKiBFeGFtcGxlOiBgPGkgZXNJY29uPVwic2F2ZVwiPjwvaT5gXG4gKlxuICogT3B0aW9uYWxseSwgYSB0cmFuc2xhdGVkIGBhcmlhLWxhYmVsYCBjYW4gYmUgYXR0YWNoZWQgYnkgc2V0dGluZyBgYXJpYWAgdG8gYSB0cnV0aHkgdmFsdWU6IGA8aVxuICogZXNJY29uPVwic2F2ZVwiIGFyaWE9XCJ0cnVlXCI+PC9pPmAuIE90aGVyd2lzZSwgYGFyaWEtaGlkZGVuYCB3aWxsIGJlIHNldC5cbiAqXG4gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBhY3RpdmF0ZWQgb24gZWxlbWVudHMgdGhhdCBzZXRcbiAqIGBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJgLiBUaGlzIGlzIG1haW5seSB0byBzZXQgdGhlIGBhcmlhLWhpZGRlbmAgYXR0cmlidXRlLiBPY2N1cnJlbmNlcyBzaG91bGRcbiAqIGJlIHVwZGF0ZWQgdG8gdGhlIHN5bnRheCBhYm92ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpW2VzSWNvbl0sIGkubWF0ZXJpYWwtaWNvbnMnLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYXJpYTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGljb25zQ29uZmlnOiBBcnJheTx7IG9yaWdpbmFsOiBzdHJpbmc7IHJlcGxhY2U/OiBzdHJpbmc7IGNzc0NsYXNzPzogc3RyaW5nIH0+O1xuICAgIHByaXZhdGUgYWx0VGV4dFNwYW46IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaXNSZWFkeSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0IHRleHQgdG8gc2hvdyB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIElmIG9taXR0ZWQsIHRoZSBpY29uIHdpbGwgYmUgaW52aXNpYmxlIHRvIHNjcmVlbiByZWFkZXJzLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY29tcG9uZW50cy9pY29uL292ZXJ2aWV3I2luZGljYXRvci1pY29uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBhbHRUZXh0KGFsdFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldEFsdFRleHQoYWx0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRydWUsIGFuIGFsdCB0ZXh0IChzZWUgYWJvdmUpIHdpbGwgYmUgc2V0IGJhc2VkIG9uIHRoZSBpY29uLiAqL1xuICAgIEBJbnB1dCgpIHNldCBhcmlhKGFyaWE6IGJvb2xlYW4pIHtcbiAgICAgICAgYXJpYSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShhcmlhKTtcbiAgICAgICAgaWYgKGFyaWEgIT09IHRoaXMuX2FyaWEpIHtcbiAgICAgICAgICAgIHRoaXMuX2FyaWEgPSBhcmlhO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVzSWNvbihpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0SWNvbihpZCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuXG4gICAgICAgIC8vIEZJWE1FOiBUaGlzIG1pZ2h0IHJlc29sdmUgYWZ0ZXIgYHNldEljb25gIHdhcyBjYWxsZWQgYW5kIG1hcHBpbmdzIG1pZ2h0IGJlIGlnbm9yZWQuXG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlnLm9ic2VydmVDb25maWcoKS5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLmljb25zQ29uZmlnID0gdGhpcy5jb25maWcuaW5zdGFudCgnaWNvbnMnLCBudWxsKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEljb24oaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgICAgJ2VkdS1pY29ucycsXG4gICAgICAgICAgICAgICAgJ2N1c3RvbS1pY29ucycsXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGN1c3RvbUNsYXNzOiBzdHJpbmcgPSBudWxsO1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5pY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHIoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoYWx0VGV4dCAmJiAhdGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRBbHRUZXh0U3BhbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsdFRleHRTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmlubmVyVGV4dCA9IGFsdFRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydEFsdFRleHRTcGFuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHRoaXMuYWx0VGV4dFNwYW4pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { Helper } from '../util/helper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/ui.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/material/menu";
|
|
7
|
+
import * as i4 from "@angular/material/tooltip";
|
|
8
|
+
import * as i5 from "../directives/icon.directive";
|
|
9
|
+
import * as i6 from "@ngx-translate/core";
|
|
10
|
+
import * as i7 from "../pipes/replace-chars.pipe";
|
|
11
|
+
import * as i8 from "../pipes/option-tooltip.pipe";
|
|
12
|
+
/**
|
|
13
|
+
* The dropdown is one base component of the action bar (showing more actions),
|
|
14
|
+
* but can also be used standalone.
|
|
15
|
+
*/
|
|
16
|
+
export class DropdownComponent {
|
|
17
|
+
set options(options) {
|
|
18
|
+
this._options = this.ui.filterValidOptions(Helper.deepCopyArray(options));
|
|
19
|
+
}
|
|
20
|
+
constructor(ui) {
|
|
21
|
+
this.ui = ui;
|
|
22
|
+
this.position = 'left';
|
|
23
|
+
/**
|
|
24
|
+
* Should disabled ("greyed out") options be shown or hidden?
|
|
25
|
+
*/
|
|
26
|
+
this.showDisabled = true;
|
|
27
|
+
}
|
|
28
|
+
click(option) {
|
|
29
|
+
if (!option.isEnabled) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
setTimeout(() => option.callback(this.callbackObject));
|
|
33
|
+
}
|
|
34
|
+
isNewGroup(i) {
|
|
35
|
+
if (i > 0) {
|
|
36
|
+
return this._options[i].group !== this._options[i - 1].group;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/** Whether there are any enabled options so we can open the menu. */
|
|
41
|
+
canShowDropdown() {
|
|
42
|
+
// We can only open the dropdown menu, when there is at least one enabled option. Even when
|
|
43
|
+
// there are options with `showDisabled: true`, showing a menu with no selectable option
|
|
44
|
+
// causes a11y issues.
|
|
45
|
+
return this._options?.some((o) => o.isEnabled);
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: DropdownComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObject: "callbackObject", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:rgba(0,0,0,.8)}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.ReplaceCharsPipe, name: "replaceChars" }, { kind: "pipe", type: i8.OptionTooltipPipe, name: "optionTooltip" }] }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:rgba(0,0,0,.8)}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"] }]
|
|
53
|
+
}], ctorParameters: function () { return [{ type: i1.UIService }]; }, propDecorators: { menu: [{
|
|
54
|
+
type: ViewChild,
|
|
55
|
+
args: ['dropdown', { static: true }]
|
|
56
|
+
}], menuTrigger: [{
|
|
57
|
+
type: ViewChild,
|
|
58
|
+
args: ['menuTrigger']
|
|
59
|
+
}], position: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], options: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], callbackObject: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], showDisabled: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], menuClass: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHeEM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQixJQUFhLE9BQU8sQ0FBQyxPQUFxQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUF3QkQsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUE1QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBYTdDOztXQUVHO1FBQ00saUJBQVksR0FBRyxJQUFJLENBQUM7SUFZTyxDQUFDO0lBRXJDLEtBQUssQ0FBQyxNQUFrQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDaEU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGVBQWU7UUFDWCwyRkFBMkY7UUFDM0Ysd0ZBQXdGO1FBQ3hGLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0F0RFEsaUJBQWlCO2tHQUFqQixpQkFBaUIsOFlDZjlCLG95Q0FnQ0E7OzJGRGpCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksYUFBYTtnR0FLa0IsSUFBSTtzQkFBNUMsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNiLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixRQUFRO3NCQUFoQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVDb250ZW50LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL29wdGlvbi1pdGVtJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL3V0aWwvaGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBkcm9wZG93biBpcyBvbmUgYmFzZSBjb21wb25lbnQgb2YgdGhlIGFjdGlvbiBiYXIgKHNob3dpbmcgbW9yZSBhY3Rpb25zKSxcbiAqIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIHN0YW5kYWxvbmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXMtZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydkcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51OiBNYXRNZW51O1xuICAgIEBWaWV3Q2hpbGQoJ21lbnVUcmlnZ2VyJykgbWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gICAgQElucHV0KCkgcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMudWkuZmlsdGVyVmFsaWRPcHRpb25zKEhlbHBlci5kZWVwQ29weUFycmF5KG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb2JqZWN0IHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHZpYSB0aGUgb3B0aW9uJ3MgY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBDYW4gYmUgbnVsbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNhbGxiYWNrT2JqZWN0OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTaG91bGQgZGlzYWJsZWQgKFwiZ3JleWVkIG91dFwiKSBvcHRpb25zIGJlIHNob3duIG9yIGhpZGRlbj9cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93RGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWRkaXRpb25hbCBjbGFzcyB0byBhZGQgdG8gdGhlIGBtYXQtbWVudWAgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIG5lZWRlZCB0byBjdXN0b21pemUgdGhlIG1lbnUgc3R5bGluZyBzaW5jZSB0aGUgbWVudSBjb250ZW50cyBhcmVcbiAgICAgKiB0YWtlbiBvdXQgb2YgdGhlIGhvc3QgY29udGFpbmVyIGJ5IGFuZ3VsYXIuXG4gICAgICovXG4gICAgQElucHV0KCkgbWVudUNsYXNzOiBzdHJpbmc7XG5cbiAgICBfb3B0aW9uczogT3B0aW9uSXRlbVtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1aTogVUlTZXJ2aWNlKSB7fVxuXG4gICAgY2xpY2sob3B0aW9uOiBPcHRpb25JdGVtKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmlzRW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gb3B0aW9uLmNhbGxiYWNrKHRoaXMuY2FsbGJhY2tPYmplY3QpKTtcbiAgICB9XG5cbiAgICBpc05ld0dyb3VwKGk6IG51bWJlcikge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zW2ldLmdyb3VwICE9PSB0aGlzLl9vcHRpb25zW2kgLSAxXS5ncm91cDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIGFueSBlbmFibGVkIG9wdGlvbnMgc28gd2UgY2FuIG9wZW4gdGhlIG1lbnUuICovXG4gICAgY2FuU2hvd0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBXZSBjYW4gb25seSBvcGVuIHRoZSBkcm9wZG93biBtZW51LCB3aGVuIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBlbmFibGVkIG9wdGlvbi4gRXZlbiB3aGVuXG4gICAgICAgIC8vIHRoZXJlIGFyZSBvcHRpb25zIHdpdGggYHNob3dEaXNhYmxlZDogdHJ1ZWAsIHNob3dpbmcgYSBtZW51IHdpdGggbm8gc2VsZWN0YWJsZSBvcHRpb25cbiAgICAgICAgLy8gY2F1c2VzIGExMXkgaXNzdWVzLlxuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucz8uc29tZSgobykgPT4gby5pc0VuYWJsZWQpO1xuICAgIH1cbn1cbiIsIjxtYXQtbWVudVxuICAjZHJvcGRvd249XCJtYXRNZW51XCJcbiAgY2xhc3M9XCJtYXQtZHJvcGRvd24tbWVudVwiXG4gIFtjbGFzc109XCJtZW51Q2xhc3NcIlxuICBiYWNrZHJvcENsYXNzPVwibWF0LWRyb3Bkb3duLW1lbnVcIlxuICBbeFBvc2l0aW9uXT1cInBvc2l0aW9uID09PSAncmlnaHQnID8gJ2FmdGVyJyA6ICdiZWZvcmUnXCJcbj5cbiAgPCEtLSBNYXRNZW51IGhhcyByb2xlPVwibWVudVwiLCBzbyB0aGUgb25seSBtZWFuaW5nZnVsIHJvbGUgb2YgZGVzY2VuZGFudHMgaXMgXCJtZW51aXRlbVwiIC0tPlxuICA8dWwgcm9sZT1cIm5vbmVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgX29wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxsaSAqbmdJZj1cIm9wdGlvbi5pc0VuYWJsZWQgfHwgc2hvd0Rpc2FibGVkXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW0gY29sbGVjdGlvbi1pdGVtLXt7XG4gICAgICAgICAgICBvcHRpb24ubmFtZSB8IHJlcGxhY2VDaGFycyA6IHsgc2VhcmNoOiAnLicsIHJlcGxhY2U6ICctJyB9XG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIH19XCJcbiAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXM9XCJvZmZcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtbWVudS1pdGVtLXNlcGFyYXRlXT1cIm9wdGlvbi5pc1NlcGFyYXRlIHx8IGlzTmV3R3JvdXAoaSlcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtbWVudS1pdGVtLXNlbGVjdGVkXT1cIm9wdGlvbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJjbGljayhvcHRpb24pXCJcbiAgICAgICAgICBhdHRyLmRhdGEtdGVzdD1cIm1lbnUtaXRlbS17eyBvcHRpb24ubmFtZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCI+PC9pPiB7eyBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L21hdC1tZW51PlxuPGRpdiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJkaXNwbGF5LW5vbmVcIj48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export const EDU_SHARING_UI_CONFIG = new InjectionToken('EDU_SHARING_API_CONFIG');
|
|
4
|
+
export class EduSharingUiConfiguration {
|
|
5
|
+
static create(params = {}) {
|
|
6
|
+
return { ...new EduSharingUiConfiguration(), ...params };
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, providedIn: 'root' }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EduSharingUiConfiguration, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root',
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
export function getConfigProvider(params) {
|
|
18
|
+
return [
|
|
19
|
+
// Provide the params given to `forRoot()`. These can be overridden by the application by
|
|
20
|
+
// providing `EDU_SHARING_API_CONFIG` itself.
|
|
21
|
+
{
|
|
22
|
+
provide: EDU_SHARING_UI_CONFIG,
|
|
23
|
+
useValue: params,
|
|
24
|
+
},
|
|
25
|
+
// Inject `configuration` as both, `ApiConfiguration` and `EduSharingApiConfiguration`, to pass
|
|
26
|
+
// `rootUrl` on to `ApiModule` while also adding our custom configuration.
|
|
27
|
+
{
|
|
28
|
+
provide: EduSharingUiConfiguration,
|
|
29
|
+
deps: [EDU_SHARING_UI_CONFIG],
|
|
30
|
+
// deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
|
|
31
|
+
useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
provide: EduSharingUiConfiguration,
|
|
35
|
+
deps: [EDU_SHARING_UI_CONFIG],
|
|
36
|
+
// deps: [[new Optional(), EDU_SHARING_API_CONFIG]],
|
|
37
|
+
useFactory: (configParams) => EduSharingUiConfiguration.create(configParams),
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvZWR1LXNoYXJpbmctdWktY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7QUFLckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ25ELHdCQUF3QixDQUMzQixDQUFDO0FBS0YsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQTBDLEVBQUU7UUFDdEQsT0FBTyxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDN0QsQ0FBQzs4R0FKUSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzsyRkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQVVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUF3QztJQUN0RSxPQUFPO1FBQ0gseUZBQXlGO1FBQ3pGLDZDQUE2QztRQUM3QztZQUNJLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLE1BQU07U0FDbkI7UUFDRCwrRkFBK0Y7UUFDL0YsMEVBQTBFO1FBQzFFO1lBQ0ksT0FBTyxFQUFFLHlCQUF5QjtZQUNsQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUM3QixvREFBb0Q7WUFDcEQsVUFBVSxFQUFFLENBQUMsWUFBNkMsRUFBRSxFQUFFLENBQzFELHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDckQ7UUFDRDtZQUNJLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDN0Isb0RBQW9EO1lBQ3BELFVBQVUsRUFBRSxDQUFDLFlBQTZDLEVBQUUsRUFBRSxDQUMxRCx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3JEO0tBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlTZXR0aW5ncyB9IGZyb20gJy4vdHlwZXMvYWNjZXNzaWJpbGxpdHknO1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dCB9IGZyb20gJy4vdHlwZXMva2V5Ym9hcmQtc2hvcnRjdXRzJztcblxuZXhwb3J0IGNvbnN0IEVEVV9TSEFSSU5HX1VJX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zPihcbiAgICAnRURVX1NIQVJJTkdfQVBJX0NPTkZJRycsXG4pO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uIHtcbiAgICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHN0YXRpYyBjcmVhdGUocGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zID0ge30pOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHsgLi4ubmV3IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24oKSwgLi4ucGFyYW1zIH07XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zID0gUGFydGlhbDxFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1Byb3ZpZGVyKHBhcmFtcz86IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb25QYXJhbXMpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgICAvLyBQcm92aWRlIHRoZSBwYXJhbXMgZ2l2ZW4gdG8gYGZvclJvb3QoKWAuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvbiBieVxuICAgICAgICAvLyBwcm92aWRpbmcgYEVEVV9TSEFSSU5HX0FQSV9DT05GSUdgIGl0c2VsZi5cbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRURVX1NIQVJJTkdfVUlfQ09ORklHLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSW5qZWN0IGBjb25maWd1cmF0aW9uYCBhcyBib3RoLCBgQXBpQ29uZmlndXJhdGlvbmAgYW5kIGBFZHVTaGFyaW5nQXBpQ29uZmlndXJhdGlvbmAsIHRvIHBhc3NcbiAgICAgICAgLy8gYHJvb3RVcmxgIG9uIHRvIGBBcGlNb2R1bGVgIHdoaWxlIGFsc28gYWRkaW5nIG91ciBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGRlcHM6IFtFRFVfU0hBUklOR19VSV9DT05GSUddLFxuICAgICAgICAgICAgLy8gZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgRURVX1NIQVJJTkdfQVBJX0NPTkZJR11dLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGNvbmZpZ1BhcmFtczogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvblBhcmFtcykgPT5cbiAgICAgICAgICAgICAgICBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLmNyZWF0ZShjb25maWdQYXJhbXMpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgZGVwczogW0VEVV9TSEFSSU5HX1VJX0NPTkZJR10sXG4gICAgICAgICAgICAvLyBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBFRFVfU0hBUklOR19BUElfQ09ORklHXV0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoY29uZmlnUGFyYW1zOiBFZHVTaGFyaW5nVWlDb25maWd1cmF0aW9uUGFyYW1zKSA9PlxuICAgICAgICAgICAgICAgIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24uY3JlYXRlKGNvbmZpZ1BhcmFtcyksXG4gICAgICAgIH0sXG4gICAgXTtcbn1cbiJdfQ==
|