@ecodev/natural 41.3.0 → 42.2.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/ecodev-natural.d.ts +1 -9
- package/esm2020/ecodev-natural.mjs +5 -0
- package/esm2020/lib/classes/abstract-controller.mjs +30 -0
- package/esm2020/lib/classes/abstract-detail.mjs +152 -0
- package/esm2020/lib/classes/abstract-editable-list.mjs +96 -0
- package/esm2020/lib/classes/abstract-list.mjs +406 -0
- package/esm2020/lib/classes/abstract-navigable-list.mjs +126 -0
- package/{esm2015/lib/classes/apollo-utils.js → esm2020/lib/classes/apollo-utils.mjs} +0 -0
- package/esm2020/lib/classes/data-source.mjs +76 -0
- package/{esm2015/lib/classes/query-variable-manager-utils.js → esm2020/lib/classes/query-variable-manager-utils.mjs} +0 -0
- package/esm2020/lib/classes/query-variable-manager.mjs +172 -0
- package/{esm2015/lib/classes/rxjs.js → esm2020/lib/classes/rxjs.mjs} +0 -0
- package/{esm2015/lib/classes/tld.js → esm2020/lib/classes/tld.mjs} +0 -0
- package/{esm2015/lib/classes/utility.js → esm2020/lib/classes/utility.mjs} +0 -0
- package/esm2020/lib/classes/validators.mjs +179 -0
- package/esm2020/lib/directives/http-prefix.directive.mjs +50 -0
- package/esm2020/lib/modules/alert/alert.module.mjs +20 -0
- package/esm2020/lib/modules/alert/alert.service.mjs +55 -0
- package/esm2020/lib/modules/alert/confirm.component.mjs +20 -0
- package/{esm2015/lib/modules/alert/public-api.js → esm2020/lib/modules/alert/public-api.mjs} +0 -0
- package/esm2020/lib/modules/avatar/avatar.module.mjs +19 -0
- package/esm2020/lib/modules/avatar/component/avatar.component.mjs +190 -0
- package/{esm2015/lib/modules/avatar/public-api.js → esm2020/lib/modules/avatar/public-api.mjs} +0 -0
- package/esm2020/lib/modules/avatar/service/avatar.service.mjs +66 -0
- package/esm2020/lib/modules/avatar/sources/gravatar.mjs +29 -0
- package/{esm2015/lib/modules/avatar/sources/image.js → esm2020/lib/modules/avatar/sources/image.mjs} +0 -0
- package/{esm2015/lib/modules/avatar/sources/initials.js → esm2020/lib/modules/avatar/sources/initials.mjs} +0 -0
- package/{esm2015/lib/modules/avatar/sources/source.js → esm2020/lib/modules/avatar/sources/source.mjs} +1 -1
- package/esm2020/lib/modules/columns-picker/columns-picker-column.directive.mjs +43 -0
- package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +84 -0
- package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +47 -0
- package/{esm2015/lib/modules/columns-picker/public-api.js → esm2020/lib/modules/columns-picker/public-api.mjs} +0 -0
- package/esm2020/lib/modules/common/common-module.mjs +50 -0
- package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +79 -0
- package/esm2020/lib/modules/common/directives/src-density.directive.mjs +62 -0
- package/esm2020/lib/modules/common/pipes/capitalize.pipe.mjs +18 -0
- package/esm2020/lib/modules/common/pipes/ellipsis.pipe.mjs +14 -0
- package/esm2020/lib/modules/common/pipes/enum.pipe.mjs +25 -0
- package/esm2020/lib/modules/common/pipes/swiss-date.pipe.mjs +20 -0
- package/esm2020/lib/modules/common/public-api.mjs +13 -0
- package/esm2020/lib/modules/common/services/memory-storage.mjs +112 -0
- package/esm2020/lib/modules/common/services/seo.service.mjs +114 -0
- package/esm2020/lib/modules/detail-header/detail-header.component.mjs +76 -0
- package/esm2020/lib/modules/detail-header/detail-header.module.mjs +21 -0
- package/{esm2015/lib/modules/detail-header/public-api.js → esm2020/lib/modules/detail-header/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +69 -0
- package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +19 -0
- package/{esm2015/lib/modules/dialog-trigger/public-api.js → esm2020/lib/modules/dialog-trigger/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +98 -0
- package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +92 -0
- package/{esm2015/lib/modules/dropdown-components/public-api.js → esm2020/lib/modules/dropdown-components/public-api.mjs} +0 -0
- package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +133 -0
- package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +137 -0
- package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +69 -0
- package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +38 -0
- package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +104 -0
- package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +169 -0
- package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +57 -0
- package/{esm2015/lib/modules/dropdown-components/types.js → esm2020/lib/modules/dropdown-components/types.mjs} +0 -0
- package/{esm2015/lib/modules/dropdown-components/utils.js → esm2020/lib/modules/dropdown-components/utils.mjs} +0 -0
- package/esm2020/lib/modules/file/abstract-file.mjs +231 -0
- package/esm2020/lib/modules/file/component/file.component.mjs +143 -0
- package/esm2020/lib/modules/file/file-drop.directive.mjs +110 -0
- package/esm2020/lib/modules/file/file-select.directive.mjs +28 -0
- package/esm2020/lib/modules/file/file.module.mjs +24 -0
- package/esm2020/lib/modules/file/file.service.mjs +48 -0
- package/{esm2015/lib/modules/file/public-api.js → esm2020/lib/modules/file/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/file/types.js → esm2020/lib/modules/file/types.mjs} +0 -0
- package/{esm2015/lib/modules/file/utils.js → esm2020/lib/modules/file/utils.mjs} +3 -4
- package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +27 -0
- package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +21 -0
- package/{esm2015/lib/modules/fixed-button/public-api.js → esm2020/lib/modules/fixed-button/public-api.mjs} +0 -0
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +36 -0
- package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +20 -0
- package/{esm2015/lib/modules/fixed-button-detail/public-api.js → esm2020/lib/modules/fixed-button-detail/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/flat-node.js → esm2020/lib/modules/hierarchic-selector/classes/flat-node.mjs} +1 -1
- package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.js → esm2020/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs} +0 -0
- package/{esm2015/lib/modules/hierarchic-selector/classes/model-node.js → esm2020/lib/modules/hierarchic-selector/classes/model-node.mjs} +1 -1
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +364 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +258 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +31 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +23 -0
- package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +81 -0
- package/{esm2015/lib/modules/hierarchic-selector/public-api.js → esm2020/lib/modules/hierarchic-selector/public-api.mjs} +0 -0
- package/esm2020/lib/modules/icon/icon.component.mjs +92 -0
- package/esm2020/lib/modules/icon/icon.module.mjs +30 -0
- package/{esm2015/lib/modules/icon/public-api.js → esm2020/lib/modules/icon/public-api.mjs} +0 -0
- package/esm2020/lib/modules/matomo/matomo-module.module.mjs +12 -0
- package/esm2020/lib/modules/matomo/matomo.service.mjs +105 -0
- package/{esm2015/lib/modules/matomo/public-api.js → esm2020/lib/modules/matomo/public-api.mjs} +0 -0
- package/esm2020/lib/modules/panels/abstract-panel.mjs +56 -0
- package/{esm2015/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.js → esm2020/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs} +0 -0
- package/esm2020/lib/modules/panels/panels.component.mjs +26 -0
- package/esm2020/lib/modules/panels/panels.module.mjs +33 -0
- package/esm2020/lib/modules/panels/panels.service.mjs +325 -0
- package/{esm2015/lib/modules/panels/panels.urlmatcher.js → esm2020/lib/modules/panels/panels.urlmatcher.mjs} +0 -0
- package/{esm2015/lib/modules/panels/public-api.js → esm2020/lib/modules/panels/public-api.mjs} +0 -0
- package/{esm2015/lib/modules/panels/types.js → esm2020/lib/modules/panels/types.mjs} +0 -0
- package/{esm2015/lib/modules/relations/public-api.js → esm2020/lib/modules/relations/public-api.mjs} +0 -0
- package/esm2020/lib/modules/relations/relations.component.mjs +198 -0
- package/esm2020/lib/modules/relations/relations.module.mjs +58 -0
- package/{esm2015/lib/modules/search/classes/graphql-doctrine.js → esm2020/lib/modules/search/classes/graphql-doctrine.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/graphql-doctrine.types.js → esm2020/lib/modules/search/classes/graphql-doctrine.types.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/transformers.js → esm2020/lib/modules/search/classes/transformers.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/url.js → esm2020/lib/modules/search/classes/url.mjs} +0 -0
- package/{esm2015/lib/modules/search/classes/utils.js → esm2020/lib/modules/search/classes/utils.mjs} +0 -0
- package/{esm2015/lib/modules/search/dropdown-container/dropdown-container-animations.js → esm2020/lib/modules/search/dropdown-container/dropdown-container-animations.mjs} +0 -0
- package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +88 -0
- package/{esm2015/lib/modules/search/dropdown-container/dropdown-ref.js → esm2020/lib/modules/search/dropdown-container/dropdown-ref.mjs} +1 -1
- package/esm2020/lib/modules/search/dropdown-container/dropdown.service.mjs +93 -0
- package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +50 -0
- package/esm2020/lib/modules/search/group/group.component.mjs +45 -0
- package/esm2020/lib/modules/search/input/input.component.mjs +328 -0
- package/{esm2015/lib/modules/search/public-api.js → esm2020/lib/modules/search/public-api.mjs} +0 -0
- package/esm2020/lib/modules/search/search/search.component.mjs +78 -0
- package/esm2020/lib/modules/search/search.module.mjs +84 -0
- package/{esm2015/lib/modules/search/types/dropdown-component.js → esm2020/lib/modules/search/types/dropdown-component.mjs} +0 -0
- package/{esm2015/lib/modules/search/types/facet.js → esm2020/lib/modules/search/types/facet.mjs} +0 -0
- package/{esm2015/lib/modules/search/types/values.js → esm2020/lib/modules/search/types/values.mjs} +0 -0
- package/esm2020/lib/modules/select/abstract-select.component.mjs +186 -0
- package/{esm2015/lib/modules/select/public-api.js → esm2020/lib/modules/select/public-api.mjs} +0 -0
- package/esm2020/lib/modules/select/select/select.component.mjs +207 -0
- package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +47 -0
- package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +127 -0
- package/esm2020/lib/modules/select/select.module.mjs +68 -0
- package/{esm2015/lib/modules/sidenav/public-api.js → esm2020/lib/modules/sidenav/public-api.mjs} +0 -0
- package/esm2020/lib/modules/sidenav/sidenav/sidenav.component.mjs +15 -0
- package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
- package/esm2020/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +12 -0
- package/esm2020/lib/modules/sidenav/sidenav-stack.service.mjs +52 -0
- package/esm2020/lib/modules/sidenav/sidenav.module.mjs +25 -0
- package/esm2020/lib/modules/sidenav/sidenav.service.mjs +195 -0
- package/{esm2015/lib/modules/stamp/public-api.js → esm2020/lib/modules/stamp/public-api.mjs} +0 -0
- package/esm2020/lib/modules/stamp/stamp-module.module.mjs +18 -0
- package/esm2020/lib/modules/stamp/stamp.component.mjs +14 -0
- package/{esm2015/lib/modules/table-button/public-api.js → esm2020/lib/modules/table-button/public-api.mjs} +0 -0
- package/esm2020/lib/modules/table-button/table-button.component.mjs +48 -0
- package/esm2020/lib/modules/table-button/table-button.module.mjs +21 -0
- package/esm2020/lib/services/abstract-model.service.mjs +509 -0
- package/esm2020/lib/services/enum.service.mjs +67 -0
- package/esm2020/lib/services/link-mutation.service.mjs +153 -0
- package/esm2020/lib/services/persistence.service.mjs +113 -0
- package/esm2020/lib/services/swiss-parsing-date-adapter.service.mjs +55 -0
- package/{esm2015/lib/types/types.js → esm2020/lib/types/types.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{ecodev-natural.js → ecodev-natural.mjs} +2808 -2392
- package/fesm2015/ecodev-natural.mjs.map +1 -0
- package/fesm2020/ecodev-natural.mjs +10495 -0
- package/fesm2020/ecodev-natural.mjs.map +1 -0
- package/lib/classes/abstract-controller.d.ts +3 -0
- package/lib/classes/abstract-detail.d.ts +3 -0
- package/lib/classes/abstract-editable-list.d.ts +3 -0
- package/lib/classes/abstract-list.d.ts +3 -0
- package/lib/classes/abstract-navigable-list.d.ts +3 -0
- package/lib/classes/query-variable-manager.d.ts +19 -8
- package/lib/directives/http-prefix.directive.d.ts +3 -0
- package/lib/modules/alert/alert.module.d.ts +9 -0
- package/lib/modules/alert/alert.service.d.ts +3 -0
- package/lib/modules/alert/confirm.component.d.ts +3 -0
- package/lib/modules/avatar/avatar.module.d.ts +6 -0
- package/lib/modules/avatar/component/avatar.component.d.ts +4 -0
- package/lib/modules/avatar/service/avatar.service.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker-column.directive.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker.component.d.ts +3 -0
- package/lib/modules/columns-picker/columns-picker.module.d.ts +13 -0
- package/lib/modules/common/common-module.d.ts +15 -0
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +3 -0
- package/lib/modules/common/directives/src-density.directive.d.ts +3 -0
- package/lib/modules/common/pipes/capitalize.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/ellipsis.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/enum.pipe.d.ts +3 -0
- package/lib/modules/common/pipes/swiss-date.pipe.d.ts +3 -0
- package/lib/modules/common/public-api.d.ts +0 -1
- package/lib/modules/common/services/memory-storage.d.ts +3 -0
- package/lib/modules/common/services/seo.service.d.ts +3 -0
- package/lib/modules/detail-header/detail-header.component.d.ts +3 -0
- package/lib/modules/detail-header/detail-header.module.d.ts +9 -0
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -0
- package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +7 -0
- package/lib/modules/dropdown-components/abstract-association-select-component.directive.d.ts +3 -0
- package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +22 -0
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +3 -0
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +3 -0
- package/lib/modules/file/abstract-file.d.ts +3 -0
- package/lib/modules/file/component/file.component.d.ts +3 -0
- package/lib/modules/file/file-drop.directive.d.ts +3 -0
- package/lib/modules/file/file-select.directive.d.ts +3 -0
- package/lib/modules/file/file.module.d.ts +11 -0
- package/lib/modules/file/file.service.d.ts +3 -0
- package/lib/modules/fixed-button/fixed-button.component.d.ts +3 -0
- package/lib/modules/fixed-button/fixed-button.module.d.ts +9 -0
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +3 -0
- package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +8 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +3 -0
- package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +21 -0
- package/lib/modules/icon/icon.component.d.ts +3 -0
- package/lib/modules/icon/icon.module.d.ts +7 -0
- package/lib/modules/matomo/matomo-module.module.d.ts +4 -0
- package/lib/modules/matomo/matomo.service.d.ts +3 -0
- package/lib/modules/panels/abstract-panel.d.ts +3 -0
- package/lib/modules/panels/panels.component.d.ts +3 -0
- package/lib/modules/panels/panels.module.d.ts +8 -0
- package/lib/modules/panels/panels.service.d.ts +3 -0
- package/lib/modules/relations/relations.component.d.ts +3 -0
- package/lib/modules/relations/relations.module.d.ts +15 -0
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -0
- package/lib/modules/search/dropdown-container/dropdown-ref.d.ts +1 -1
- package/lib/modules/search/dropdown-container/dropdown.service.d.ts +3 -0
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +3 -0
- package/lib/modules/search/group/group.component.d.ts +3 -0
- package/lib/modules/search/input/input.component.d.ts +3 -0
- package/lib/modules/search/search/search.component.d.ts +3 -0
- package/lib/modules/search/search.module.d.ts +19 -0
- package/lib/modules/select/abstract-select.component.d.ts +4 -1
- package/lib/modules/select/select/select.component.d.ts +3 -0
- package/lib/modules/select/select-enum/select-enum.component.d.ts +9 -2
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +3 -0
- package/lib/modules/select/select.module.d.ts +19 -0
- package/lib/modules/sidenav/sidenav/sidenav.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-content/sidenav-content.component.d.ts +3 -0
- package/lib/modules/sidenav/sidenav-stack.service.d.ts +4 -1
- package/lib/modules/sidenav/sidenav.module.d.ts +11 -0
- package/lib/modules/sidenav/sidenav.service.d.ts +3 -0
- package/lib/modules/stamp/stamp-module.module.d.ts +6 -0
- package/lib/modules/stamp/stamp.component.d.ts +3 -0
- package/lib/modules/table-button/table-button.component.d.ts +3 -0
- package/lib/modules/table-button/table-button.module.d.ts +9 -0
- package/lib/services/enum.service.d.ts +3 -0
- package/lib/services/link-mutation.service.d.ts +3 -0
- package/lib/services/persistence.service.d.ts +3 -0
- package/lib/services/swiss-parsing-date-adapter.service.d.ts +4 -1
- package/package.json +25 -12
- package/src/lib/modules/alert/_alert.theme.scss +1 -1
- package/src/lib/modules/file/component/_file.theme.scss +1 -1
- package/src/lib/modules/icon/_icon.theme.scss +1 -1
- package/src/lib/modules/search/dropdown-container/_dropdown-container.theme.scss +1 -1
- package/src/lib/modules/table-button/_table-button.theme.scss +1 -1
- package/src/lib/styles/_table.scss +1 -1
- package/theming/_natural.theme.scss +1 -1
- package/bundles/ecodev-natural.umd.js +0 -11318
- package/bundles/ecodev-natural.umd.js.map +0 -1
- package/ecodev-natural.metadata.json +0 -1
- package/esm2015/ecodev-natural.js +0 -14
- package/esm2015/lib/classes/abstract-controller.js +0 -29
- package/esm2015/lib/classes/abstract-detail.js +0 -157
- package/esm2015/lib/classes/abstract-editable-list.js +0 -97
- package/esm2015/lib/classes/abstract-list.js +0 -409
- package/esm2015/lib/classes/abstract-navigable-list.js +0 -126
- package/esm2015/lib/classes/data-source.js +0 -76
- package/esm2015/lib/classes/query-variable-manager.js +0 -161
- package/esm2015/lib/classes/validators.js +0 -176
- package/esm2015/lib/directives/http-prefix.directive.js +0 -46
- package/esm2015/lib/modules/alert/alert.module.js +0 -15
- package/esm2015/lib/modules/alert/alert.service.js +0 -59
- package/esm2015/lib/modules/alert/confirm.component.js +0 -17
- package/esm2015/lib/modules/avatar/avatar.module.js +0 -14
- package/esm2015/lib/modules/avatar/component/avatar.component.js +0 -158
- package/esm2015/lib/modules/avatar/service/avatar.service.js +0 -65
- package/esm2015/lib/modules/avatar/sources/gravatar.js +0 -29
- package/esm2015/lib/modules/columns-picker/columns-picker-column.directive.js +0 -41
- package/esm2015/lib/modules/columns-picker/columns-picker.component.js +0 -82
- package/esm2015/lib/modules/columns-picker/columns-picker.module.js +0 -28
- package/esm2015/lib/modules/common/common-module.js +0 -35
- package/esm2015/lib/modules/common/directives/linkable-tab.directive.js +0 -82
- package/esm2015/lib/modules/common/directives/reactive-asterisk.directive.js +0 -31
- package/esm2015/lib/modules/common/directives/src-density.directive.js +0 -63
- package/esm2015/lib/modules/common/pipes/capitalize.pipe.js +0 -14
- package/esm2015/lib/modules/common/pipes/ellipsis.pipe.js +0 -10
- package/esm2015/lib/modules/common/pipes/enum.pipe.js +0 -24
- package/esm2015/lib/modules/common/pipes/swiss-date.pipe.js +0 -16
- package/esm2015/lib/modules/common/public-api.js +0 -14
- package/esm2015/lib/modules/common/services/memory-storage.js +0 -110
- package/esm2015/lib/modules/common/services/seo.service.js +0 -120
- package/esm2015/lib/modules/detail-header/detail-header.component.js +0 -63
- package/esm2015/lib/modules/detail-header/detail-header.module.js +0 -16
- package/esm2015/lib/modules/dialog-trigger/dialog-trigger.component.js +0 -68
- package/esm2015/lib/modules/dialog-trigger/dialog-trigger.module.js +0 -14
- package/esm2015/lib/modules/dropdown-components/abstract-association-select-component.directive.js +0 -96
- package/esm2015/lib/modules/dropdown-components/natural-dropdown-components.module.js +0 -51
- package/esm2015/lib/modules/dropdown-components/type-date/type-date.component.js +0 -123
- package/esm2015/lib/modules/dropdown-components/type-date-range/type-date-range.component.js +0 -128
- package/esm2015/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.js +0 -63
- package/esm2015/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.js +0 -31
- package/esm2015/lib/modules/dropdown-components/type-number/type-number.component.js +0 -99
- package/esm2015/lib/modules/dropdown-components/type-select/type-select.component.js +0 -161
- package/esm2015/lib/modules/dropdown-components/type-text/type-text.component.js +0 -53
- package/esm2015/lib/modules/file/abstract-file.js +0 -223
- package/esm2015/lib/modules/file/component/file.component.js +0 -133
- package/esm2015/lib/modules/file/file-drop.directive.js +0 -99
- package/esm2015/lib/modules/file/file-select.directive.js +0 -25
- package/esm2015/lib/modules/file/file.module.js +0 -19
- package/esm2015/lib/modules/file/file.service.js +0 -47
- package/esm2015/lib/modules/fixed-button/fixed-button.component.js +0 -23
- package/esm2015/lib/modules/fixed-button/fixed-button.module.js +0 -16
- package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.component.js +0 -31
- package/esm2015/lib/modules/fixed-button-detail/fixed-button-detail.module.js +0 -15
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.js +0 -351
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.js +0 -258
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.js +0 -28
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.js +0 -23
- package/esm2015/lib/modules/hierarchic-selector/hierarchic-selector.module.js +0 -46
- package/esm2015/lib/modules/icon/icon.component.js +0 -78
- package/esm2015/lib/modules/icon/icon.module.js +0 -25
- package/esm2015/lib/modules/matomo/matomo-module.module.js +0 -7
- package/esm2015/lib/modules/matomo/matomo.service.js +0 -106
- package/esm2015/lib/modules/panels/abstract-panel.js +0 -50
- package/esm2015/lib/modules/panels/panels.component.js +0 -26
- package/esm2015/lib/modules/panels/panels.module.js +0 -28
- package/esm2015/lib/modules/panels/panels.service.js +0 -331
- package/esm2015/lib/modules/relations/relations.component.js +0 -181
- package/esm2015/lib/modules/relations/relations.module.js +0 -33
- package/esm2015/lib/modules/search/dropdown-container/dropdown-container.component.js +0 -87
- package/esm2015/lib/modules/search/dropdown-container/dropdown.service.js +0 -95
- package/esm2015/lib/modules/search/facet-selector/facet-selector.component.js +0 -47
- package/esm2015/lib/modules/search/group/group.component.js +0 -39
- package/esm2015/lib/modules/search/input/input.component.js +0 -316
- package/esm2015/lib/modules/search/search/search.component.js +0 -71
- package/esm2015/lib/modules/search/search.module.js +0 -52
- package/esm2015/lib/modules/select/abstract-select.component.js +0 -176
- package/esm2015/lib/modules/select/select/select.component.js +0 -190
- package/esm2015/lib/modules/select/select-enum/select-enum.component.js +0 -34
- package/esm2015/lib/modules/select/select-hierarchic/select-hierarchic.component.js +0 -120
- package/esm2015/lib/modules/select/select.module.js +0 -39
- package/esm2015/lib/modules/sidenav/sidenav/sidenav.component.js +0 -12
- package/esm2015/lib/modules/sidenav/sidenav-container/sidenav-container.component.js +0 -79
- package/esm2015/lib/modules/sidenav/sidenav-content/sidenav-content.component.js +0 -13
- package/esm2015/lib/modules/sidenav/sidenav-stack.service.js +0 -50
- package/esm2015/lib/modules/sidenav/sidenav.module.js +0 -20
- package/esm2015/lib/modules/sidenav/sidenav.service.js +0 -199
- package/esm2015/lib/modules/stamp/stamp-module.module.js +0 -13
- package/esm2015/lib/modules/stamp/stamp.component.js +0 -13
- package/esm2015/lib/modules/table-button/table-button.component.js +0 -38
- package/esm2015/lib/modules/table-button/table-button.module.js +0 -16
- package/esm2015/lib/services/abstract-model.service.js +0 -509
- package/esm2015/lib/services/enum.service.js +0 -68
- package/esm2015/lib/services/link-mutation.service.js +0 -155
- package/esm2015/lib/services/persistence.service.js +0 -114
- package/esm2015/lib/services/swiss-parsing-date-adapter.service.js +0 -55
- package/fesm2015/ecodev-natural.js.map +0 -1
- package/lib/modules/common/directives/reactive-asterisk.directive.d.ts +0 -10
package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { intersection } from 'lodash-es';
|
|
3
|
+
import { BehaviorSubject, forkJoin } from 'rxjs';
|
|
4
|
+
import { finalize, map } from 'rxjs/operators';
|
|
5
|
+
import { NaturalQueryVariablesManager } from '../../../classes/query-variable-manager';
|
|
6
|
+
import { HierarchicModelNode } from '../classes/model-node';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class NaturalHierarchicSelectorService {
|
|
9
|
+
constructor(injector) {
|
|
10
|
+
this.injector = injector;
|
|
11
|
+
/**
|
|
12
|
+
* Stores the global result of the tree
|
|
13
|
+
* This observable contains Node.
|
|
14
|
+
* When it's updated, the TreeController and TreeFlattener process the new array to generate the flat tree.
|
|
15
|
+
*/
|
|
16
|
+
this.dataChange = new BehaviorSubject([]);
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for relations and selection constraints
|
|
19
|
+
*
|
|
20
|
+
* The list should be sorted in the order of the hierarchic (list first parent rules, then child rules)
|
|
21
|
+
*/
|
|
22
|
+
this.configuration = [];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Init component by saving the complete configuration, and then retrieving root elements.
|
|
26
|
+
* Updates **another** observable (this.dataChange) when data is retrieved.
|
|
27
|
+
*/
|
|
28
|
+
init(config, contextFilter = null, searchVariables = null) {
|
|
29
|
+
this.validateConfiguration(config);
|
|
30
|
+
this.configuration = this.injectServicesInConfiguration(config);
|
|
31
|
+
return this.getList(null, contextFilter, searchVariables).pipe(map(data => this.dataChange.next(data)));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get list of children, considering given FlatNode id as a parent.
|
|
35
|
+
* Mark loading status individually on nodes.
|
|
36
|
+
*/
|
|
37
|
+
loadChildren(flatNode, contextFilter = null) {
|
|
38
|
+
// Dont refetch children. Improve performances
|
|
39
|
+
// Prevents interferences between HierarchicModelNode structure and angular components navigation.
|
|
40
|
+
// Prevents a bug where grand children were lost if closing root
|
|
41
|
+
if (flatNode.node.children.length) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
flatNode.loading = true;
|
|
45
|
+
this.getList(flatNode, contextFilter)
|
|
46
|
+
.pipe(finalize(() => (flatNode.loading = false)))
|
|
47
|
+
.subscribe(items => {
|
|
48
|
+
flatNode.node.childrenChange.next(items);
|
|
49
|
+
this.dataChange.next(this.dataChange.value);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
search(searchVariables, contextFilter = null) {
|
|
53
|
+
this.getList(null, contextFilter, searchVariables).subscribe(items => {
|
|
54
|
+
this.dataChange.next(items);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retrieve elements from the server
|
|
59
|
+
* Get root elements if node is null, or child elements if node is given
|
|
60
|
+
*/
|
|
61
|
+
getList(node = null, contextFilters = null, searchVariables = null) {
|
|
62
|
+
const configurations = this.getContextualizedConfigs(node, contextFilters, searchVariables);
|
|
63
|
+
const observables = configurations.map(c => c.configuration.injectedService.getAll(c.variablesManager));
|
|
64
|
+
// Fire queries, and merge results, transforming apollo items into Node Object.
|
|
65
|
+
return forkJoin(observables).pipe(map(results => {
|
|
66
|
+
const listing = [];
|
|
67
|
+
// For each result of an observable
|
|
68
|
+
for (let i = 0; i < results.length; i++) {
|
|
69
|
+
// For each item of the result, convert into Node object
|
|
70
|
+
for (const item of results[i].items) {
|
|
71
|
+
listing.push(this.getOrCreateModelNode(item, configurations[i].configuration));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return listing;
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
countItems(node, contextFilters = null) {
|
|
78
|
+
const configurations = this.getContextualizedConfigs(node, contextFilters, null);
|
|
79
|
+
const observables = configurations.map(c => c.configuration.injectedService.count(c.variablesManager));
|
|
80
|
+
forkJoin(observables).subscribe(results => {
|
|
81
|
+
const totalItems = results.reduce((total, length) => total + length, 0);
|
|
82
|
+
node.expandable = totalItems > 0;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
getContextualizedConfigs(node = null, contextFilters = null, searchVariables = null) {
|
|
86
|
+
const configsAndServices = [];
|
|
87
|
+
// Considering the whole configuration may cause queries with no/wrong results we have imperatively to avoid !
|
|
88
|
+
// e.g there are cross dependencies between equipments and taxonomies filters. Both have "parents" and "taxonomies" filters...
|
|
89
|
+
// When clicking on a equipment, the configuration of taxonomies with match "parents" filter, but use the id of the equipment
|
|
90
|
+
// To fix this, we should only consider configuration after the one given by the node passed as argument.
|
|
91
|
+
// That would mean : no child can affect parent.
|
|
92
|
+
// That would mean : sorting in the configuration have semantic/hierarchy implications
|
|
93
|
+
const configs = node ? this.getNextConfigs(node.node.config) : this.configuration;
|
|
94
|
+
const pagination = { pageIndex: 0, pageSize: 999 };
|
|
95
|
+
for (const config of configs) {
|
|
96
|
+
const item = {};
|
|
97
|
+
const contextFilter = this.getFilterByService(config, contextFilters);
|
|
98
|
+
const filter = this.getServiceFilter(node, config, contextFilter, !!searchVariables);
|
|
99
|
+
if (!filter || !config.injectedService) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const variablesManager = new NaturalQueryVariablesManager();
|
|
103
|
+
variablesManager.set('variables', { filter: filter, pagination: pagination });
|
|
104
|
+
variablesManager.set('config-filter', { filter: config.filter });
|
|
105
|
+
if (searchVariables) {
|
|
106
|
+
variablesManager.set('natural-search', searchVariables);
|
|
107
|
+
}
|
|
108
|
+
// Cast NaturalHierarchicServiceConfiguration because the undefined
|
|
109
|
+
// injectedServices are filtered earlier and we can validate value
|
|
110
|
+
item.configuration = config;
|
|
111
|
+
item.variablesManager = variablesManager;
|
|
112
|
+
configsAndServices.push(item);
|
|
113
|
+
}
|
|
114
|
+
return configsAndServices;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check configuration to return a boolean that allows or denies the selection for the given element
|
|
118
|
+
*/
|
|
119
|
+
isSelectable(node) {
|
|
120
|
+
return !!node.node.config.selectableAtKey;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Return models matching given FlatNodes
|
|
124
|
+
* Returns a Literal of models grouped by their configuration attribute "selectableAtKey"
|
|
125
|
+
*/
|
|
126
|
+
toOrganizedSelection(nodes) {
|
|
127
|
+
const selection = this.configuration.reduce((group, config) => {
|
|
128
|
+
if (config.selectableAtKey) {
|
|
129
|
+
group[config.selectableAtKey] = [];
|
|
130
|
+
}
|
|
131
|
+
return group;
|
|
132
|
+
}, {});
|
|
133
|
+
for (const node of nodes) {
|
|
134
|
+
if (node.config.selectableAtKey) {
|
|
135
|
+
selection[node.config.selectableAtKey].push(node.model);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return selection;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Transforms an OrganizedModelSelection into a list of ModelNodes
|
|
142
|
+
*/
|
|
143
|
+
fromOrganizedSelection(organizedModelSelection) {
|
|
144
|
+
if (!organizedModelSelection) {
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
const result = [];
|
|
148
|
+
for (const selectableAtKey of Object.keys(organizedModelSelection)) {
|
|
149
|
+
const config = this.getConfigurationBySelectableKey(selectableAtKey);
|
|
150
|
+
if (config) {
|
|
151
|
+
for (const model of organizedModelSelection[selectableAtKey]) {
|
|
152
|
+
result.push(new HierarchicModelNode(model, config));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
injectServicesInConfiguration(configurations) {
|
|
159
|
+
for (const config of configurations) {
|
|
160
|
+
if (!config.injectedService) {
|
|
161
|
+
config.injectedService = this.injector.get(config.service);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return configurations;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Checks that each configuration.selectableAtKey attribute is unique
|
|
168
|
+
*/
|
|
169
|
+
validateConfiguration(configurations) {
|
|
170
|
+
const selectableAtKeyAttributes = [];
|
|
171
|
+
for (const config of configurations) {
|
|
172
|
+
if (config.selectableAtKey) {
|
|
173
|
+
const keyIndex = selectableAtKeyAttributes.indexOf(config.selectableAtKey);
|
|
174
|
+
if (keyIndex === -1 && config.selectableAtKey) {
|
|
175
|
+
selectableAtKeyAttributes.push(config.selectableAtKey);
|
|
176
|
+
}
|
|
177
|
+
// TODO : remove ?
|
|
178
|
+
// This behavior maybe dangerous in case we re-open hierarchical selector with the last returned config having non-unique
|
|
179
|
+
// keys
|
|
180
|
+
if (keyIndex < -1) {
|
|
181
|
+
console.warn('Invalid hierarchic configuration : selectableAtKey attribute should be unique');
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Return configurations setup in the list after the given one
|
|
188
|
+
*/
|
|
189
|
+
getNextConfigs(config) {
|
|
190
|
+
const configIndex = this.configuration.findIndex(c => c === config);
|
|
191
|
+
return this.configuration.slice(configIndex);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Builds queryVariables filter for children query
|
|
195
|
+
*/
|
|
196
|
+
getServiceFilter(flatNode, config, contextFilter = null, allDeeps = false) {
|
|
197
|
+
const fieldCondition = {};
|
|
198
|
+
// if no parent, filter empty elements
|
|
199
|
+
if (!flatNode) {
|
|
200
|
+
if (!config.parentsRelationNames) {
|
|
201
|
+
return contextFilter ? contextFilter : {};
|
|
202
|
+
}
|
|
203
|
+
if (!allDeeps) {
|
|
204
|
+
config.parentsRelationNames.forEach(f => {
|
|
205
|
+
fieldCondition[f] = { empty: {} };
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
if (!flatNode.node.config.childrenRelationNames || !config.parentsRelationNames) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
const matchingFilters = intersection(flatNode.node.config.childrenRelationNames, config.parentsRelationNames);
|
|
214
|
+
if (!matchingFilters.length) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
fieldCondition[matchingFilters[0]] = { have: { values: [flatNode.node.model.id] } };
|
|
218
|
+
}
|
|
219
|
+
const filters = { groups: [{ conditions: [fieldCondition] }] };
|
|
220
|
+
// todo : is it right ? shouldn't it be managed with QueryVariablesManager's channels ? ?
|
|
221
|
+
if (contextFilter) {
|
|
222
|
+
filters.groups.push(...contextFilter.groups);
|
|
223
|
+
}
|
|
224
|
+
return filters;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Return a context filter applicable to the service for given config
|
|
228
|
+
*
|
|
229
|
+
* @param config Applicable config
|
|
230
|
+
* @param contextFilters List of context filters
|
|
231
|
+
*/
|
|
232
|
+
getFilterByService(config, contextFilters) {
|
|
233
|
+
if (!contextFilters || !config) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
const filter = contextFilters.find(f => f.service === config.service);
|
|
237
|
+
return filter ? filter.filter : null;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Search in configurations.selectableAtKey attribute to find given key and return the configuration
|
|
241
|
+
*/
|
|
242
|
+
getConfigurationBySelectableKey(key) {
|
|
243
|
+
if (!this.configuration) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
return this.configuration.find(conf => conf.selectableAtKey === key) || null;
|
|
247
|
+
}
|
|
248
|
+
getOrCreateModelNode(item, configuration) {
|
|
249
|
+
const node = this.dataChange.value.find(n => n.model.id === item.id && n.model.__typename === item.__typename);
|
|
250
|
+
return node || new HierarchicModelNode(item, configuration);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
NaturalHierarchicSelectorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
254
|
+
NaturalHierarchicSelectorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorService });
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorService, decorators: [{
|
|
256
|
+
type: Injectable
|
|
257
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsNEJBQTRCLEVBQWlCLE1BQU0seUNBQXlDLENBQUM7QUFVckcsT0FBTyxFQUFrQixtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQWEzRSxNQUFNLE9BQU8sZ0NBQWdDO0lBZXpDLFlBQW9DLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFkdEQ7Ozs7V0FJRztRQUNJLGVBQVUsR0FBMkMsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBRTNHOzs7O1dBSUc7UUFDSyxrQkFBYSxHQUFxQyxFQUFFLENBQUM7SUFFSixDQUFDO0lBRTFEOzs7T0FHRztJQUNJLElBQUksQ0FDUCxNQUF3QyxFQUN4QyxnQkFBdUQsSUFBSSxFQUMzRCxrQkFBeUMsSUFBSTtRQUU3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUks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QUFDLE1BQU0sRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssK0JBQStCLENBQ25DLEdBQXNEO1FBRXRELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDakYsQ0FBQztJQUVPLG9CQUFvQixDQUN4QixJQUFxQixFQUNyQixhQUE2QztRQUU3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRyxPQUFPLElBQUksSUFBSSxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNoRSxDQUFDOzs2SEFqVVEsZ0NBQWdDO2lJQUFoQyxnQ0FBZ0M7MkZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpbnRlcnNlY3Rpb259IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge2ZpbmFsaXplLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlciwgUXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0hpZXJhcmNoaWNGbGF0Tm9kZX0gZnJvbSAnLi4vY2xhc3Nlcy9mbGF0LW5vZGUnO1xuaW1wb3J0IHtcbiAgICBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb24sXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNTZXJ2aWNlQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi4vY2xhc3Nlcy9oaWVyYXJjaGljLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgICBIaWVyYXJjaGljRmlsdGVyQ29uZmlndXJhdGlvbixcbiAgICBIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4uL2NsYXNzZXMvaGllcmFyY2hpYy1maWx0ZXJzLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtIaWVyYXJjaGljTW9kZWwsIEhpZXJhcmNoaWNNb2RlbE5vZGV9IGZyb20gJy4uL2NsYXNzZXMvbW9kZWwtbm9kZSc7XG5pbXBvcnQge0xpdGVyYWx9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55W107XG59XG5cbmludGVyZmFjZSBDb250ZXh0dWFsaXplZENvbmZpZyB7XG4gICAgY29uZmlndXJhdGlvbjogTmF0dXJhbEhpZXJhcmNoaWNTZXJ2aWNlQ29uZmlndXJhdGlvbjtcbiAgICB2YXJpYWJsZXNNYW5hZ2VyOiBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvclNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIFN0b3JlcyB0aGUgZ2xvYmFsIHJlc3VsdCBvZiB0aGUgdHJlZVxuICAgICAqIFRoaXMgb2JzZXJ2YWJsZSBjb250YWlucyBOb2RlLlxuICAgICAqIFdoZW4gaXQncyB1cGRhdGVkLCB0aGUgVHJlZUNvbnRyb2xsZXIgYW5kIFRyZWVGbGF0dGVuZXIgcHJvY2VzcyB0aGUgbmV3IGFycmF5IHRvIGdlbmVyYXRlIHRoZSBmbGF0IHRyZWUuXG4gICAgICovXG4gICAgcHVibGljIGRhdGFDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxIaWVyYXJjaGljTW9kZWxOb2RlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIaWVyYXJjaGljTW9kZWxOb2RlW10+KFtdKTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIHJlbGF0aW9ucyBhbmQgc2VsZWN0aW9uIGNvbnN0cmFpbnRzXG4gICAgICpcbiAgICAgKiBUaGUgbGlzdCBzaG91bGQgYmUgc29ydGVkIGluIHRoZSBvcmRlciBvZiB0aGUgaGllcmFyY2hpYyAobGlzdCBmaXJzdCBwYXJlbnQgcnVsZXMsIHRoZW4gY2hpbGQgcnVsZXMpXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gICAgLyoqXG4gICAgICogSW5pdCBjb21wb25lbnQgYnkgc2F2aW5nIHRoZSBjb21wbGV0ZSBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiByZXRyaWV2aW5nIHJvb3QgZWxlbWVudHMuXG4gICAgICogVXBkYXRlcyAqKmFub3RoZXIqKiBvYnNlcnZhYmxlICh0aGlzLmRhdGFDaGFuZ2UpIHdoZW4gZGF0YSBpcyByZXRyaWV2ZWQuXG4gICAgICovXG4gICAgcHVibGljIGluaXQoXG4gICAgICAgIGNvbmZpZzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uW10sXG4gICAgICAgIGNvbnRleHRGaWx0ZXI6IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsLFxuICAgICAgICBzZWFyY2hWYXJpYWJsZXM6IFF1ZXJ5VmFyaWFibGVzIHwgbnVsbCA9IG51bGwsXG4gICAgKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZyk7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuaW5qZWN0U2VydmljZXNJbkNvbmZpZ3VyYXRpb24oY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdChudWxsLCBjb250ZXh0RmlsdGVyLCBzZWFyY2hWYXJpYWJsZXMpLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbGlzdCBvZiBjaGlsZHJlbiwgY29uc2lkZXJpbmcgZ2l2ZW4gRmxhdE5vZGUgaWQgYXMgYSBwYXJlbnQuXG4gICAgICogTWFyayBsb2FkaW5nIHN0YXR1cyBpbmRpdmlkdWFsbHkgb24gbm9kZXMuXG4gICAgICovXG4gICAgcHVibGljIGxvYWRDaGlsZHJlbihcbiAgICAgICAgZmxhdE5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSxcbiAgICAgICAgY29udGV4dEZpbHRlcjogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uIHwgbnVsbCA9IG51bGwsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIERvbnQgcmVmZXRjaCBjaGlsZHJlbi4gSW1wcm92ZSBwZXJmb3JtYW5jZXNcbiAgICAgICAgLy8gUHJldmVudHMgaW50ZXJmZXJlbmNlcyBiZXR3ZWVuIEhpZXJhcmNoaWNNb2RlbE5vZGUgc3RydWN0dXJlIGFuZCBhbmd1bGFyIGNvbXBvbmVudHMgbmF2aWdhdGlvbi5cbiAgICAgICAgLy8gUHJldmVudHMgYSBidWcgd2hlcmUgZ3JhbmQgY2hpbGRyZW4gd2VyZSBsb3N0IGlmIGNsb3Npbmcgcm9vdFxuICAgICAgICBpZiAoZmxhdE5vZGUubm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZsYXROb2RlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmdldExpc3QoZmxhdE5vZGUsIGNvbnRleHRGaWx0ZXIpXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAoZmxhdE5vZGUubG9hZGluZyA9IGZhbHNlKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICBmbGF0Tm9kZS5ub2RlLmNoaWxkcmVuQ2hhbmdlLm5leHQoaXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YUNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoKHNlYXJjaFZhcmlhYmxlczogUXVlcnlWYXJpYWJsZXMsIGNvbnRleHRGaWx0ZXI6IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0TGlzdChudWxsLCBjb250ZXh0RmlsdGVyLCBzZWFyY2hWYXJpYWJsZXMpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dChpdGVtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIGVsZW1lbnRzIGZyb20gdGhlIHNlcnZlclxuICAgICAqIEdldCByb290IGVsZW1lbnRzIGlmIG5vZGUgaXMgbnVsbCwgb3IgY2hpbGQgZWxlbWVudHMgaWYgbm9kZSBpcyBnaXZlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMaXN0KFxuICAgICAgICBub2RlOiBIaWVyYXJjaGljRmxhdE5vZGUgfCBudWxsID0gbnVsbCxcbiAgICAgICAgY29udGV4dEZpbHRlcnM6IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsLFxuICAgICAgICBzZWFyY2hWYXJpYWJsZXM6IFF1ZXJ5VmFyaWFibGVzIHwgbnVsbCA9IG51bGwsXG4gICAgKTogT2JzZXJ2YWJsZTxIaWVyYXJjaGljTW9kZWxOb2RlW10+IHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbnMgPSB0aGlzLmdldENvbnRleHR1YWxpemVkQ29uZmlncyhub2RlLCBjb250ZXh0RmlsdGVycywgc2VhcmNoVmFyaWFibGVzKTtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBjb25maWd1cmF0aW9ucy5tYXAoYyA9PiBjLmNvbmZpZ3VyYXRpb24uaW5qZWN0ZWRTZXJ2aWNlLmdldEFsbChjLnZhcmlhYmxlc01hbmFnZXIpKTtcblxuICAgICAgICAvLyBGaXJlIHF1ZXJpZXMsIGFuZCBtZXJnZSByZXN1bHRzLCB0cmFuc2Zvcm1pbmcgYXBvbGxvIGl0ZW1zIGludG8gTm9kZSBPYmplY3QuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0aW5nOiBIaWVyYXJjaGljTW9kZWxOb2RlW10gPSBbXTtcblxuICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIHJlc3VsdCBvZiBhbiBvYnNlcnZhYmxlXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIGl0ZW0gb2YgdGhlIHJlc3VsdCwgY29udmVydCBpbnRvIE5vZGUgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiByZXN1bHRzW2ldLml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0aW5nLnB1c2godGhpcy5nZXRPckNyZWF0ZU1vZGVsTm9kZShpdGVtLCBjb25maWd1cmF0aW9uc1tpXS5jb25maWd1cmF0aW9uKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdGluZztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3VudEl0ZW1zKG5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSwgY29udGV4dEZpbHRlcnM6IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25zID0gdGhpcy5nZXRDb250ZXh0dWFsaXplZENvbmZpZ3Mobm9kZSwgY29udGV4dEZpbHRlcnMsIG51bGwpO1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IGNvbmZpZ3VyYXRpb25zLm1hcChjID0+IGMuY29uZmlndXJhdGlvbi5pbmplY3RlZFNlcnZpY2UuY291bnQoYy52YXJpYWJsZXNNYW5hZ2VyKSk7XG5cbiAgICAgICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsSXRlbXMgPSByZXN1bHRzLnJlZHVjZSgodG90YWwsIGxlbmd0aCkgPT4gdG90YWwgKyBsZW5ndGgsIDApO1xuICAgICAgICAgICAgbm9kZS5leHBhbmRhYmxlID0gdG90YWxJdGVtcyA+IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb250ZXh0dWFsaXplZENvbmZpZ3MoXG4gICAgICAgIG5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSB8IG51bGwgPSBudWxsLFxuICAgICAgICBjb250ZXh0RmlsdGVyczogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uIHwgbnVsbCA9IG51bGwsXG4gICAgICAgIHNlYXJjaFZhcmlhYmxlczogUXVlcnlWYXJpYWJsZXMgfCBudWxsID0gbnVsbCxcbiAgICApOiBDb250ZXh0dWFsaXplZENvbmZpZ1tdIHtcbiAgICAgICAgY29uc3QgY29uZmlnc0FuZFNlcnZpY2VzOiBDb250ZXh0dWFsaXplZENvbmZpZ1tdID0gW107XG5cbiAgICAgICAgLy8gQ29uc2lkZXJpbmcgdGhlIHdob2xlIGNvbmZpZ3VyYXRpb24gbWF5IGNhdXNlIHF1ZXJpZXMgd2l0aCBuby93cm9uZyByZXN1bHRzIHdlIGhhdmUgaW1wZXJhdGl2ZWx5IHRvIGF2b2lkICFcbiAgICAgICAgLy8gZS5nIHRoZXJlIGFyZSBjcm9zcyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBlcXVpcG1lbnRzIGFuZCB0YXhvbm9taWVzIGZpbHRlcnMuIEJvdGggaGF2ZSBcInBhcmVudHNcIiBhbmQgXCJ0YXhvbm9taWVzXCIgZmlsdGVycy4uLlxuICAgICAgICAvLyBXaGVuIGNsaWNraW5nIG9uIGEgZXF1aXBtZW50LCB0aGUgY29uZmlndXJhdGlvbiBvZiB0YXhvbm9taWVzIHdpdGggbWF0Y2ggXCJwYXJlbnRzXCIgZmlsdGVyLCBidXQgdXNlIHRoZSBpZCBvZiB0aGUgZXF1aXBtZW50XG4gICAgICAgIC8vIFRvIGZpeCB0aGlzLCB3ZSBzaG91bGQgb25seSBjb25zaWRlciBjb25maWd1cmF0aW9uIGFmdGVyIHRoZSBvbmUgZ2l2ZW4gYnkgdGhlIG5vZGUgcGFzc2VkIGFzIGFyZ3VtZW50LlxuICAgICAgICAvLyBUaGF0IHdvdWxkIG1lYW4gOiBubyBjaGlsZCBjYW4gYWZmZWN0IHBhcmVudC5cbiAgICAgICAgLy8gVGhhdCB3b3VsZCBtZWFuIDogc29ydGluZyBpbiB0aGUgY29uZmlndXJhdGlvbiBoYXZlIHNlbWFudGljL2hpZXJhcmNoeSBpbXBsaWNhdGlvbnNcbiAgICAgICAgY29uc3QgY29uZmlncyA9IG5vZGUgPyB0aGlzLmdldE5leHRDb25maWdzKG5vZGUubm9kZS5jb25maWcpIDogdGhpcy5jb25maWd1cmF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB7cGFnZUluZGV4OiAwLCBwYWdlU2l6ZTogOTk5fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBDb250ZXh0dWFsaXplZENvbmZpZyA9IHt9IGFzIENvbnRleHR1YWxpemVkQ29uZmlnO1xuICAgICAgICAgICAgY29uc3QgY29udGV4dEZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyQnlTZXJ2aWNlKGNvbmZpZywgY29udGV4dEZpbHRlcnMpO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRTZXJ2aWNlRmlsdGVyKG5vZGUsIGNvbmZpZywgY29udGV4dEZpbHRlciwgISFzZWFyY2hWYXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBpZiAoIWZpbHRlciB8fCAhY29uZmlnLmluamVjdGVkU2VydmljZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZXNNYW5hZ2VyID0gbmV3IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXIoKTtcblxuICAgICAgICAgICAgdmFyaWFibGVzTWFuYWdlci5zZXQoJ3ZhcmlhYmxlcycsIHtmaWx0ZXI6IGZpbHRlciwgcGFnaW5hdGlvbjogcGFnaW5hdGlvbn0pO1xuICAgICAgICAgICAgdmFyaWFibGVzTWFuYWdlci5zZXQoJ2NvbmZpZy1maWx0ZXInLCB7ZmlsdGVyOiBjb25maWcuZmlsdGVyfSk7XG5cbiAgICAgICAgICAgIGlmIChzZWFyY2hWYXJpYWJsZXMpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXNNYW5hZ2VyLnNldCgnbmF0dXJhbC1zZWFyY2gnLCBzZWFyY2hWYXJpYWJsZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDYXN0IE5hdHVyYWxIaWVyYXJjaGljU2VydmljZUNvbmZpZ3VyYXRpb24gYmVjYXVzZSB0aGUgdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBpbmplY3RlZFNlcnZpY2VzIGFyZSBmaWx0ZXJlZCBlYXJsaWVyIGFuZCB3ZSBjYW4gdmFsaWRhdGUgdmFsdWVcbiAgICAgICAgICAgIGl0ZW0uY29uZmlndXJhdGlvbiA9IGNvbmZpZyBhcyBOYXR1cmFsSGllcmFyY2hpY1NlcnZpY2VDb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgaXRlbS52YXJpYWJsZXNNYW5hZ2VyID0gdmFyaWFibGVzTWFuYWdlcjtcbiAgICAgICAgICAgIGNvbmZpZ3NBbmRTZXJ2aWNlcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZ3NBbmRTZXJ2aWNlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBjb25maWd1cmF0aW9uIHRvIHJldHVybiBhIGJvb2xlYW4gdGhhdCBhbGxvd3Mgb3IgZGVuaWVzIHRoZSBzZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBlbGVtZW50XG4gICAgICovXG4gICAgcHVibGljIGlzU2VsZWN0YWJsZShub2RlOiBIaWVyYXJjaGljRmxhdE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhbm9kZS5ub2RlLmNvbmZpZy5zZWxlY3RhYmxlQXRLZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIG1vZGVscyBtYXRjaGluZyBnaXZlbiBGbGF0Tm9kZXNcbiAgICAgKiBSZXR1cm5zIGEgTGl0ZXJhbCBvZiBtb2RlbHMgZ3JvdXBlZCBieSB0aGVpciBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZSBcInNlbGVjdGFibGVBdEtleVwiXG4gICAgICovXG4gICAgcHVibGljIHRvT3JnYW5pemVkU2VsZWN0aW9uKG5vZGVzOiBIaWVyYXJjaGljTW9kZWxOb2RlW10pOiBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvbi5yZWR1Y2UoKGdyb3VwLCBjb25maWcpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWcuc2VsZWN0YWJsZUF0S2V5KSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBbY29uZmlnLnNlbGVjdGFibGVBdEtleV0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfSwge30gYXMgTGl0ZXJhbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5jb25maWcuc2VsZWN0YWJsZUF0S2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uW25vZGUuY29uZmlnLnNlbGVjdGFibGVBdEtleV0ucHVzaChub2RlLm1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyBhbiBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbiBpbnRvIGEgbGlzdCBvZiBNb2RlbE5vZGVzXG4gICAgICovXG4gICAgcHVibGljIGZyb21Pcmdhbml6ZWRTZWxlY3Rpb24ob3JnYW5pemVkTW9kZWxTZWxlY3Rpb246IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uKTogSGllcmFyY2hpY01vZGVsTm9kZVtdIHtcbiAgICAgICAgaWYgKCFvcmdhbml6ZWRNb2RlbFNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBIaWVyYXJjaGljTW9kZWxOb2RlW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzZWxlY3RhYmxlQXRLZXkgb2YgT2JqZWN0LmtleXMob3JnYW5pemVkTW9kZWxTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldENvbmZpZ3VyYXRpb25CeVNlbGVjdGFibGVLZXkoc2VsZWN0YWJsZUF0S2V5KTtcbiAgICAgICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uW3NlbGVjdGFibGVBdEtleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEhpZXJhcmNoaWNNb2RlbE5vZGUobW9kZWwsIGNvbmZpZykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5qZWN0U2VydmljZXNJbkNvbmZpZ3VyYXRpb24oXG4gICAgICAgIGNvbmZpZ3VyYXRpb25zOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSxcbiAgICApOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSB7XG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoIWNvbmZpZy5pbmplY3RlZFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuaW5qZWN0ZWRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoY29uZmlnLnNlcnZpY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB0aGF0IGVhY2ggY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlQXRLZXkgYXR0cmlidXRlIGlzIHVuaXF1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25zOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RhYmxlQXRLZXlBdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWd1cmF0aW9ucykge1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5zZWxlY3RhYmxlQXRLZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlJbmRleCA9IHNlbGVjdGFibGVBdEtleUF0dHJpYnV0ZXMuaW5kZXhPZihjb25maWcuc2VsZWN0YWJsZUF0S2V5KTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PT0gLTEgJiYgY29uZmlnLnNlbGVjdGFibGVBdEtleSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlQXRLZXlBdHRyaWJ1dGVzLnB1c2goY29uZmlnLnNlbGVjdGFibGVBdEtleSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IHJlbW92ZSA/XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBtYXliZSBkYW5nZXJvdXMgaW4gY2FzZSB3ZSByZS1vcGVuIGhpZXJhcmNoaWNhbCBzZWxlY3RvciB3aXRoIHRoZSBsYXN0IHJldHVybmVkIGNvbmZpZyBoYXZpbmcgbm9uLXVuaXF1ZVxuICAgICAgICAgICAgICAgIC8vIGtleXNcbiAgICAgICAgICAgICAgICBpZiAoa2V5SW5kZXggPCAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgaGllcmFyY2hpYyBjb25maWd1cmF0aW9uIDogc2VsZWN0YWJsZUF0S2V5IGF0dHJpYnV0ZSBzaG91bGQgYmUgdW5pcXVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGNvbmZpZ3VyYXRpb25zIHNldHVwIGluIHRoZSBsaXN0IGFmdGVyIHRoZSBnaXZlbiBvbmVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE5leHRDb25maWdzKGNvbmZpZzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uKTogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uW10ge1xuICAgICAgICBjb25zdCBjb25maWdJbmRleCA9IHRoaXMuY29uZmlndXJhdGlvbi5maW5kSW5kZXgoYyA9PiBjID09PSBjb25maWcpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLnNsaWNlKGNvbmZpZ0luZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgcXVlcnlWYXJpYWJsZXMgZmlsdGVyIGZvciBjaGlsZHJlbiBxdWVyeVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2VydmljZUZpbHRlcihcbiAgICAgICAgZmxhdE5vZGU6IEhpZXJhcmNoaWNGbGF0Tm9kZSB8IG51bGwsXG4gICAgICAgIGNvbmZpZzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgICAgICBjb250ZXh0RmlsdGVyOiBIaWVyYXJjaGljRmlsdGVyQ29uZmlndXJhdGlvblsnZmlsdGVyJ10gfCBudWxsID0gbnVsbCxcbiAgICAgICAgYWxsRGVlcHMgPSBmYWxzZSxcbiAgICApOiBIaWVyYXJjaGljRmlsdGVyQ29uZmlndXJhdGlvblsnZmlsdGVyJ10gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZmllbGRDb25kaXRpb246IExpdGVyYWwgPSB7fTtcblxuICAgICAgICAvLyBpZiBubyBwYXJlbnQsIGZpbHRlciBlbXB0eSBlbGVtZW50c1xuICAgICAgICBpZiAoIWZsYXROb2RlKSB7XG4gICAgICAgICAgICBpZiAoIWNvbmZpZy5wYXJlbnRzUmVsYXRpb25OYW1lcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0RmlsdGVyID8gY29udGV4dEZpbHRlciA6IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWFsbERlZXBzKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnBhcmVudHNSZWxhdGlvbk5hbWVzLmZvckVhY2goZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ29uZGl0aW9uW2ZdID0ge2VtcHR5OiB7fX07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWZsYXROb2RlLm5vZGUuY29uZmlnLmNoaWxkcmVuUmVsYXRpb25OYW1lcyB8fCAhY29uZmlnLnBhcmVudHNSZWxhdGlvbk5hbWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nRmlsdGVycyA9IGludGVyc2VjdGlvbihcbiAgICAgICAgICAgICAgICBmbGF0Tm9kZS5ub2RlLmNvbmZpZy5jaGlsZHJlblJlbGF0aW9uTmFtZXMsXG4gICAgICAgICAgICAgICAgY29uZmlnLnBhcmVudHNSZWxhdGlvbk5hbWVzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2hpbmdGaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRDb25kaXRpb25bbWF0Y2hpbmdGaWx0ZXJzWzBdXSA9IHtoYXZlOiB7dmFsdWVzOiBbZmxhdE5vZGUubm9kZS5tb2RlbC5pZF19fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB7Z3JvdXBzOiBbe2NvbmRpdGlvbnM6IFtmaWVsZENvbmRpdGlvbl19XX07XG5cbiAgICAgICAgLy8gdG9kbyA6IGlzIGl0IHJpZ2h0ID8gc2hvdWxkbid0IGl0IGJlIG1hbmFnZWQgd2l0aCBRdWVyeVZhcmlhYmxlc01hbmFnZXIncyBjaGFubmVscyA/ID9cbiAgICAgICAgaWYgKGNvbnRleHRGaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMuZ3JvdXBzLnB1c2goLi4uY29udGV4dEZpbHRlci5ncm91cHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgY29udGV4dCBmaWx0ZXIgYXBwbGljYWJsZSB0byB0aGUgc2VydmljZSBmb3IgZ2l2ZW4gY29uZmlnXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uZmlnIEFwcGxpY2FibGUgY29uZmlnXG4gICAgICogQHBhcmFtIGNvbnRleHRGaWx0ZXJzIExpc3Qgb2YgY29udGV4dCBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJCeVNlcnZpY2UoXG4gICAgICAgIGNvbmZpZzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgICAgICBjb250ZXh0RmlsdGVyczogSGllcmFyY2hpY0ZpbHRlckNvbmZpZ3VyYXRpb25bXSB8IG51bGwsXG4gICAgKTogSGllcmFyY2hpY0ZpbHRlckNvbmZpZ3VyYXRpb25bJ2ZpbHRlciddIHwgbnVsbCB7XG4gICAgICAgIGlmICghY29udGV4dEZpbHRlcnMgfHwgIWNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBjb250ZXh0RmlsdGVycy5maW5kKGYgPT4gZi5zZXJ2aWNlID09PSBjb25maWcuc2VydmljZSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXIgPyBmaWx0ZXIuZmlsdGVyIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggaW4gY29uZmlndXJhdGlvbnMuc2VsZWN0YWJsZUF0S2V5IGF0dHJpYnV0ZSB0byBmaW5kIGdpdmVuIGtleSBhbmQgcmV0dXJuIHRoZSBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDb25maWd1cmF0aW9uQnlTZWxlY3RhYmxlS2V5KFxuICAgICAgICBrZXk6IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvblsnc2VsZWN0YWJsZUF0S2V5J10sXG4gICAgKTogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uZmluZChjb25mID0+IGNvbmYuc2VsZWN0YWJsZUF0S2V5ID09PSBrZXkpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPckNyZWF0ZU1vZGVsTm9kZShcbiAgICAgICAgaXRlbTogSGllcmFyY2hpY01vZGVsLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb24sXG4gICAgKTogSGllcmFyY2hpY01vZGVsTm9kZSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRhdGFDaGFuZ2UudmFsdWUuZmluZChuID0+IG4ubW9kZWwuaWQgPT09IGl0ZW0uaWQgJiYgbi5tb2RlbC5fX3R5cGVuYW1lID09PSBpdGVtLl9fdHlwZW5hbWUpO1xuICAgICAgICByZXR1cm4gbm9kZSB8fCBuZXcgSGllcmFyY2hpY01vZGVsTm9kZShpdGVtLCBjb25maWd1cmF0aW9uKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { clone, defaults } from 'lodash-es';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "../hierarchic-selector/hierarchic-selector.component";
|
|
7
|
+
import * as i3 from "@angular/material/button";
|
|
8
|
+
export class NaturalHierarchicSelectorDialogComponent {
|
|
9
|
+
constructor(data, dialogRef) {
|
|
10
|
+
this.dialogRef = dialogRef;
|
|
11
|
+
this.config = defaults(data, { multiple: true, allowUnselect: true });
|
|
12
|
+
this.searchSelectionsOutput = this.config.searchSelections;
|
|
13
|
+
}
|
|
14
|
+
close(selected) {
|
|
15
|
+
const result = {
|
|
16
|
+
hierarchicSelection: clone(selected),
|
|
17
|
+
searchSelections: clone(this.searchSelectionsOutput),
|
|
18
|
+
};
|
|
19
|
+
this.dialogRef.close(result);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
NaturalHierarchicSelectorDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
NaturalHierarchicSelectorDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalHierarchicSelectorDialogComponent, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n (selectionChange)=\"config.hierarchicSelection = $event\"\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowUnselect]=\"config.allowUnselect ?? true\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (searchSelectionChange)=\"searchSelectionsOutput = $event\"\n ></natural-hierarchic-selector>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button [mat-dialog-close] mat-button i18n>Annuler</button>\n <button (click)=\"close(config.hierarchicSelection)\" color=\"primary\" mat-raised-button\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n", styles: [":host mat-dialog-actions{display:flex;flex-direction:row;justify-content:flex-end}\n"], components: [{ type: i2.NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: ["displayWith", "config", "multiple", "selected", "allowUnselect", "filters", "searchFacets", "searchSelections"], outputs: ["searchSelectionChange", "selectionChange"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n (selectionChange)=\"config.hierarchicSelection = $event\"\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowUnselect]=\"config.allowUnselect ?? true\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (searchSelectionChange)=\"searchSelectionsOutput = $event\"\n ></natural-hierarchic-selector>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button [mat-dialog-close] mat-button i18n>Annuler</button>\n <button (click)=\"close(config.hierarchicSelection)\" color=\"primary\" mat-raised-button\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n", styles: [":host mat-dialog-actions{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28
|
+
type: Inject,
|
|
29
|
+
args: [MAT_DIALOG_DATA]
|
|
30
|
+
}] }, { type: i1.MatDialogRef }]; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFxRDFDLE1BQU0sT0FBTyx3Q0FBd0M7SUFXakQsWUFDNkIsSUFBNEIsRUFDN0MsU0FBeUY7UUFBekYsY0FBUyxHQUFULFNBQVMsQ0FBZ0Y7UUFFakcsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQTZDO1FBQ3RELE1BQU0sTUFBTSxHQUEyQjtZQUNuQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7U0FDdkQsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O3FJQTFCUSx3Q0FBd0Msa0JBWXJDLGVBQWU7eUhBWmxCLHdDQUF3QyxvREN2RHJELHU2QkFzQkE7MkZEaUNhLHdDQUF3QztrQkFKcEQsU0FBUzs7OzBCQWdCRCxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge2Nsb25lLCBkZWZhdWx0c30gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7TmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vLi4vc2VhcmNoL3R5cGVzL2ZhY2V0JztcbmltcG9ydCB7TmF0dXJhbFNlYXJjaFNlbGVjdGlvbnN9IGZyb20gJy4uLy4uL3NlYXJjaC90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NsYXNzZXMvaGllcmFyY2hpYy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7SGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9jbGFzc2VzL2hpZXJhcmNoaWMtZmlsdGVycy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7T3JnYW5pemVkTW9kZWxTZWxlY3Rpb259IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBIaWVyYXJjaGljRGlhbG9nUmVzdWx0IHtcbiAgICBoaWVyYXJjaGljU2VsZWN0aW9uPzogT3JnYW5pemVkTW9kZWxTZWxlY3Rpb247XG4gICAgc2VhcmNoU2VsZWN0aW9ucz86IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIaWVyYXJjaGljRGlhbG9nQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIHRvIHNldHVwIHJ1bGVzIG9mIGhpZXJhcmNoeVxuICAgICAqL1xuICAgIGhpZXJhcmNoaWNDb25maWc6IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbltdO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgaXRlbXMgd2hlbiBIaWVyYXJjaGljQ29tcG9uZW50IGluaXRpYWxpemVzXG4gICAgICovXG4gICAgaGllcmFyY2hpY1NlbGVjdGlvbj86IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyB0byBhcHBseSBvbiBxdWVyaWVzICh3aGVuIG9wZW5pbmcgbmV3IGxldmVsIG9mIGhpZXJhcmNoeSlcbiAgICAgKi9cbiAgICBoaWVyYXJjaGljRmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBsZSBzZWxlY3Rpb24gaWYgdHJ1ZSBvciBzaW5nbGUgc2VsZWN0aW9uIGlmIGZhbHNlXG4gICAgICovXG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQWxsb3cgdG8gdmFsaWRhdGUgc2VsZWN0aW9uIHdpdGggbm8gaXRlbXMgY2hlY2tlZFxuICAgICAqL1xuICAgIGFsbG93VW5zZWxlY3Q/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRmFjZXRzIGZvciBuYXR1cmFsLXNlYXJjaCBpbiBIaWVyYXJjaGljQ29tcG9uZW50XG4gICAgICovXG4gICAgc2VhcmNoRmFjZXRzPzogTmF0dXJhbFNlYXJjaEZhY2V0cztcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGlvbnMgb2YgbmF0dXJhbCBzZWFyY2ggdG8gaW5pdGlhbGl6ZSBvbiBIaWVyYXJjaGljQ29tcG9uZW50IGluaXRpYWxpc2F0aW9uXG4gICAgICovXG4gICAgc2VhcmNoU2VsZWN0aW9ucz86IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zIHwgbnVsbDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBTZXQgb2YgaGllcmFyY2hpYyBjb25maWd1cmF0aW9ucyB0byBwYXNzIGFzIGF0dHJpYnV0ZSB0byBIaWVyYXJjaGljQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGNvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZztcblxuICAgIC8qKlxuICAgICAqIE5hdHVyYWwgc2VhcmNoIHNlbGVjdGlvbnMgYWZ0ZXIgaW5pdGlhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoU2VsZWN0aW9uc091dHB1dDogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nQ29tcG9uZW50LCBIaWVyYXJjaGljRGlhbG9nUmVzdWx0PixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBkZWZhdWx0cyhkYXRhLCB7bXVsdGlwbGU6IHRydWUsIGFsbG93VW5zZWxlY3Q6IHRydWV9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hTZWxlY3Rpb25zT3V0cHV0ID0gdGhpcy5jb25maWcuc2VhcmNoU2VsZWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2Uoc2VsZWN0ZWQ6IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogSGllcmFyY2hpY0RpYWxvZ1Jlc3VsdCA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNTZWxlY3Rpb246IGNsb25lKHNlbGVjdGVkKSxcbiAgICAgICAgICAgIHNlYXJjaFNlbGVjdGlvbnM6IGNsb25lKHRoaXMuc2VhcmNoU2VsZWN0aW9uc091dHB1dCksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICB9XG59XG4iLCI8aDIgaTE4biBtYXQtZGlhbG9nLXRpdGxlPlPDqWxlY3Rpb248L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxuYXR1cmFsLWhpZXJhcmNoaWMtc2VsZWN0b3JcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjb25maWcuaGllcmFyY2hpY1NlbGVjdGlvbiA9ICRldmVudFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJjb25maWcuaGllcmFyY2hpY1NlbGVjdGlvbiA/PyB7fVwiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnLmhpZXJhcmNoaWNDb25maWdcIlxuICAgICAgICBbZmlsdGVyc109XCJjb25maWcuaGllcmFyY2hpY0ZpbHRlcnNcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiY29uZmlnLm11bHRpcGxlID8/IGZhbHNlXCJcbiAgICAgICAgW2FsbG93VW5zZWxlY3RdPVwiY29uZmlnLmFsbG93VW5zZWxlY3QgPz8gdHJ1ZVwiXG4gICAgICAgIFtzZWFyY2hGYWNldHNdPVwiY29uZmlnLnNlYXJjaEZhY2V0cyA/PyBbXVwiXG4gICAgICAgIFtzZWFyY2hTZWxlY3Rpb25zXT1cImNvbmZpZy5zZWFyY2hTZWxlY3Rpb25zID8/IFtdXCJcbiAgICAgICAgKHNlYXJjaFNlbGVjdGlvbkNoYW5nZSk9XCJzZWFyY2hTZWxlY3Rpb25zT3V0cHV0ID0gJGV2ZW50XCJcbiAgICA+PC9uYXR1cmFsLWhpZXJhcmNoaWMtc2VsZWN0b3I+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXSBtYXQtYnV0dG9uIGkxOG4+QW5udWxlcjwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlKGNvbmZpZy5oaWVyYXJjaGljU2VsZWN0aW9uKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgID48c3BhbiBpMThuPlZhbGlkZXI8L3NwYW4+XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { defaults } from 'lodash-es';
|
|
3
|
+
import { NaturalHierarchicSelectorDialogComponent, } from './hierarchic-selector-dialog.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
export class NaturalHierarchicSelectorDialogService {
|
|
7
|
+
constructor(dialog) {
|
|
8
|
+
this.dialog = dialog;
|
|
9
|
+
}
|
|
10
|
+
open(hierarchicConfig, dialogConfig) {
|
|
11
|
+
const defaultDialogConfig = {
|
|
12
|
+
width: '700px',
|
|
13
|
+
data: hierarchicConfig,
|
|
14
|
+
};
|
|
15
|
+
return this.dialog.open(NaturalHierarchicSelectorDialogComponent, defaults(dialogConfig, defaultDialogConfig));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
NaturalHierarchicSelectorDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
+
NaturalHierarchicSelectorDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogService });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorDialogService, decorators: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUdILHdDQUF3QyxHQUMzQyxNQUFNLHdDQUF3QyxDQUFDOzs7QUFHaEQsTUFBTSxPQUFPLHNDQUFzQztJQUMvQyxZQUFvQyxNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUcsQ0FBQztJQUVsRCxJQUFJLENBQ1AsZ0JBQXdDLEVBQ3hDLFlBQThCO1FBRTlCLE1BQU0sbUJBQW1CLEdBQUc7WUFDeEIsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3pCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUlyQix3Q0FBd0MsRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDOzttSUFqQlEsc0NBQXNDO3VJQUF0QyxzQ0FBc0M7MkZBQXRDLHNDQUFzQztrQkFEbEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge2RlZmF1bHRzfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgICBIaWVyYXJjaGljRGlhbG9nQ29uZmlnLFxuICAgIEhpZXJhcmNoaWNEaWFsb2dSZXN1bHQsXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcbn0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2Uge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gICAgcHVibGljIG9wZW4oXG4gICAgICAgIGhpZXJhcmNoaWNDb25maWc6IEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgICAgIGRpYWxvZ0NvbmZpZz86IE1hdERpYWxvZ0NvbmZpZyxcbiAgICApOiBNYXREaWFsb2dSZWY8TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCwgSGllcmFyY2hpY0RpYWxvZ1Jlc3VsdD4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgd2lkdGg6ICc3MDBweCcsXG4gICAgICAgICAgICBkYXRhOiBoaWVyYXJjaGljQ29uZmlnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZy5vcGVuPFxuICAgICAgICAgICAgTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgICAgICAgICBIaWVyYXJjaGljRGlhbG9nUmVzdWx0XG4gICAgICAgID4oTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCwgZGVmYXVsdHMoZGlhbG9nQ29uZmlnLCBkZWZhdWx0RGlhbG9nQ29uZmlnKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { CdkTreeModule } from '@angular/cdk/tree';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
8
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
9
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
+
import { MatInputModule } from '@angular/material/input';
|
|
12
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
13
|
+
import { MatTreeModule } from '@angular/material/tree';
|
|
14
|
+
import { NaturalIconModule } from '../icon/icon.module';
|
|
15
|
+
import { NaturalSearchModule } from '../search/search.module';
|
|
16
|
+
import { NaturalHierarchicSelectorDialogComponent } from './hierarchic-selector-dialog/hierarchic-selector-dialog.component';
|
|
17
|
+
import { NaturalHierarchicSelectorComponent } from './hierarchic-selector/hierarchic-selector.component';
|
|
18
|
+
import { NaturalHierarchicSelectorDialogService } from './hierarchic-selector-dialog/hierarchic-selector-dialog.service';
|
|
19
|
+
import { NaturalCommonModule } from '../common/common-module';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
export class NaturalHierarchicSelectorModule {
|
|
22
|
+
}
|
|
23
|
+
NaturalHierarchicSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
24
|
+
NaturalHierarchicSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorModule, declarations: [NaturalHierarchicSelectorComponent, NaturalHierarchicSelectorDialogComponent], imports: [CommonModule,
|
|
25
|
+
FormsModule,
|
|
26
|
+
CdkTreeModule,
|
|
27
|
+
MatCheckboxModule,
|
|
28
|
+
MatFormFieldModule,
|
|
29
|
+
MatButtonModule,
|
|
30
|
+
MatTreeModule,
|
|
31
|
+
MatIconModule,
|
|
32
|
+
MatInputModule,
|
|
33
|
+
MatProgressSpinnerModule,
|
|
34
|
+
MatDialogModule,
|
|
35
|
+
NaturalIconModule,
|
|
36
|
+
MatChipsModule,
|
|
37
|
+
NaturalSearchModule,
|
|
38
|
+
NaturalCommonModule], exports: [NaturalHierarchicSelectorComponent] });
|
|
39
|
+
NaturalHierarchicSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorModule, providers: [NaturalHierarchicSelectorDialogService], imports: [[
|
|
40
|
+
CommonModule,
|
|
41
|
+
FormsModule,
|
|
42
|
+
CdkTreeModule,
|
|
43
|
+
MatCheckboxModule,
|
|
44
|
+
MatFormFieldModule,
|
|
45
|
+
MatButtonModule,
|
|
46
|
+
MatTreeModule,
|
|
47
|
+
MatIconModule,
|
|
48
|
+
MatInputModule,
|
|
49
|
+
MatProgressSpinnerModule,
|
|
50
|
+
MatDialogModule,
|
|
51
|
+
NaturalIconModule,
|
|
52
|
+
MatChipsModule,
|
|
53
|
+
NaturalSearchModule,
|
|
54
|
+
NaturalCommonModule,
|
|
55
|
+
]] });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalHierarchicSelectorModule, decorators: [{
|
|
57
|
+
type: NgModule,
|
|
58
|
+
args: [{
|
|
59
|
+
declarations: [NaturalHierarchicSelectorComponent, NaturalHierarchicSelectorDialogComponent],
|
|
60
|
+
imports: [
|
|
61
|
+
CommonModule,
|
|
62
|
+
FormsModule,
|
|
63
|
+
CdkTreeModule,
|
|
64
|
+
MatCheckboxModule,
|
|
65
|
+
MatFormFieldModule,
|
|
66
|
+
MatButtonModule,
|
|
67
|
+
MatTreeModule,
|
|
68
|
+
MatIconModule,
|
|
69
|
+
MatInputModule,
|
|
70
|
+
MatProgressSpinnerModule,
|
|
71
|
+
MatDialogModule,
|
|
72
|
+
NaturalIconModule,
|
|
73
|
+
MatChipsModule,
|
|
74
|
+
NaturalSearchModule,
|
|
75
|
+
NaturalCommonModule,
|
|
76
|
+
],
|
|
77
|
+
providers: [NaturalHierarchicSelectorDialogService],
|
|
78
|
+
exports: [NaturalHierarchicSelectorComponent],
|
|
79
|
+
}]
|
|
80
|
+
}] });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDM0gsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDdkcsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDdkgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7O0FBd0I1RCxNQUFNLE9BQU8sK0JBQStCOzs0SEFBL0IsK0JBQStCOzZIQUEvQiwrQkFBK0IsaUJBckJ6QixrQ0FBa0MsRUFBRSx3Q0FBd0MsYUFFdkYsWUFBWTtRQUNaLFdBQVc7UUFDWCxhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjO1FBQ2Qsd0JBQXdCO1FBQ3hCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQixtQkFBbUIsYUFHYixrQ0FBa0M7NkhBRW5DLCtCQUErQixhQUg3QixDQUFDLHNDQUFzQyxDQUFDLFlBakIxQztZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGFBQWE7WUFDYixhQUFhO1lBQ2IsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsbUJBQW1CO1NBQ3RCOzJGQUlRLCtCQUErQjtrQkF0QjNDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsa0NBQWtDLEVBQUUsd0NBQXdDLENBQUM7b0JBQzVGLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCx3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQztvQkFDbkQsT0FBTyxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDZGtUcmVlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdENoZWNrYm94TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQge01hdENoaXBzTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQge01hdERpYWxvZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQge01hdFRyZWVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHtOYXR1cmFsSWNvbk1vZHVsZX0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hNb2R1bGV9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yQ29tcG9uZW50fSBmcm9tICcuL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZX0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbENvbW1vbk1vZHVsZX0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi1tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JDb21wb25lbnQsIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2RrVHJlZU1vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUcmVlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxJY29uTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgTmF0dXJhbFNlYXJjaE1vZHVsZSxcbiAgICAgICAgTmF0dXJhbENvbW1vbk1vZHVsZSxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JNb2R1bGUge31cbiJdfQ==
|
|
File without changes
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Component, HostBinding, Inject, InjectionToken, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/icon";
|
|
4
|
+
import * as i2 from "@angular/platform-browser";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
export const IconsConfigService = new InjectionToken('NaturalIconsConfig');
|
|
7
|
+
const naturalRegistered = Symbol('Natural icon registered');
|
|
8
|
+
export class NaturalIconComponent {
|
|
9
|
+
constructor(matIconRegistry, domSanitizer, config) {
|
|
10
|
+
this.matIconRegistry = matIconRegistry;
|
|
11
|
+
this.domSanitizer = domSanitizer;
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.fgColor = 'inherit';
|
|
14
|
+
this.isMaterialIcon = true;
|
|
15
|
+
this.isIcon = true;
|
|
16
|
+
this.width = 24;
|
|
17
|
+
this.height = 24;
|
|
18
|
+
this.fontSize = 24;
|
|
19
|
+
this.labelColor = 'accent';
|
|
20
|
+
this.labelPosition = 'top-right';
|
|
21
|
+
this.registerIcons(config);
|
|
22
|
+
}
|
|
23
|
+
set name(value) {
|
|
24
|
+
const newIcon = { name: value };
|
|
25
|
+
if (this.config[value]) {
|
|
26
|
+
this.icon = Object.assign(newIcon, this.config[value]);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
newIcon.font = value;
|
|
30
|
+
this.icon = newIcon;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
set size(val) {
|
|
34
|
+
val = val == null ? 24 : val;
|
|
35
|
+
this.height = val;
|
|
36
|
+
this.width = val;
|
|
37
|
+
this.fontSize = val;
|
|
38
|
+
}
|
|
39
|
+
registerIcons(config) {
|
|
40
|
+
// Ensure that this specific instance of registry has our our icons
|
|
41
|
+
// exactly once, not less and not more
|
|
42
|
+
const registry = this.matIconRegistry;
|
|
43
|
+
if (registry[naturalRegistered]) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
registry[naturalRegistered] = true;
|
|
47
|
+
for (const key of Object.keys(config)) {
|
|
48
|
+
const svg = config[key].svg;
|
|
49
|
+
if (svg) {
|
|
50
|
+
this.matIconRegistry.addSvgIcon(key, this.domSanitizer.bypassSecurityTrustResourceUrl(svg));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
NaturalIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalIconComponent, deps: [{ token: i1.MatIconRegistry }, { token: i2.DomSanitizer }, { token: IconsConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
NaturalIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NaturalIconComponent, selector: "natural-icon", inputs: { label: "label", labelColor: "labelColor", labelPosition: "labelPosition", name: "name", size: "size" }, host: { properties: { "style.color": "this.fgColor", "class.material-icons": "this.isMaterialIcon", "class.mat-icon": "this.isIcon", "style.min-width.px": "this.width", "style.min-height.px": "this.height", "style.font-size.px": "this.fontSize" } }, ngImport: i0, template: "<mat-icon *ngIf=\"icon?.font\" [class]=\"icon?.class\" data-nosnippet>{{ icon?.font }}</mat-icon>\n<mat-icon *ngIf=\"icon?.svg\" [class]=\"icon?.class\" [svgIcon]=\"icon.name\" class=\"svg-icon\"></mat-icon>\n\n<div *ngIf=\"label\" [ngClass]=\"labelColor + ' ' + labelPosition\" class=\"label\">{{ label }}</div>\n", styles: [":host{position:relative}:host mat-icon{background-repeat:inherit;display:inherit;fill:inherit;height:inherit;width:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;line-height:inherit;text-transform:inherit;letter-spacing:inherit;word-wrap:inherit;white-space:inherit;direction:inherit;-webkit-font-smoothing:inherit;text-rendering:inherit;-moz-osx-font-smoothing:inherit;font-feature-settings:inherit;min-height:inherit;min-width:inherit;vertical-align:unset}:host .label{position:absolute;padding:2px;border-radius:100%;font-family:Quicksand sans-serif;font-size:14px;line-height:1em;height:14px;min-width:14px;text-align:center}:host .label.top-left{top:0;left:0;transform:translate(-50%)}:host .label.top-right{top:0;right:0;transform:translate(50%)}:host .label.bottom-left{bottom:0;left:0;transform:translate(-50%)}:host .label.bottom-right{bottom:0;right:0;transform:translate(50%)}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalIconComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'natural-icon', template: "<mat-icon *ngIf=\"icon?.font\" [class]=\"icon?.class\" data-nosnippet>{{ icon?.font }}</mat-icon>\n<mat-icon *ngIf=\"icon?.svg\" [class]=\"icon?.class\" [svgIcon]=\"icon.name\" class=\"svg-icon\"></mat-icon>\n\n<div *ngIf=\"label\" [ngClass]=\"labelColor + ' ' + labelPosition\" class=\"label\">{{ label }}</div>\n", styles: [":host{position:relative}:host mat-icon{background-repeat:inherit;display:inherit;fill:inherit;height:inherit;width:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;line-height:inherit;text-transform:inherit;letter-spacing:inherit;word-wrap:inherit;white-space:inherit;direction:inherit;-webkit-font-smoothing:inherit;text-rendering:inherit;-moz-osx-font-smoothing:inherit;font-feature-settings:inherit;min-height:inherit;min-width:inherit;vertical-align:unset}:host .label{position:absolute;padding:2px;border-radius:100%;font-family:Quicksand sans-serif;font-size:14px;line-height:1em;height:14px;min-width:14px;text-align:center}:host .label.top-left{top:0;left:0;transform:translate(-50%)}:host .label.top-right{top:0;right:0;transform:translate(50%)}:host .label.bottom-left{bottom:0;left:0;transform:translate(-50%)}:host .label.bottom-right{bottom:0;right:0;transform:translate(50%)}\n"] }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.MatIconRegistry }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{
|
|
61
|
+
type: Inject,
|
|
62
|
+
args: [IconsConfigService]
|
|
63
|
+
}] }]; }, propDecorators: { fgColor: [{
|
|
64
|
+
type: HostBinding,
|
|
65
|
+
args: ['style.color']
|
|
66
|
+
}], isMaterialIcon: [{
|
|
67
|
+
type: HostBinding,
|
|
68
|
+
args: ['class.material-icons']
|
|
69
|
+
}], isIcon: [{
|
|
70
|
+
type: HostBinding,
|
|
71
|
+
args: ['class.mat-icon']
|
|
72
|
+
}], width: [{
|
|
73
|
+
type: HostBinding,
|
|
74
|
+
args: ['style.min-width.px']
|
|
75
|
+
}], height: [{
|
|
76
|
+
type: HostBinding,
|
|
77
|
+
args: ['style.min-height.px']
|
|
78
|
+
}], fontSize: [{
|
|
79
|
+
type: HostBinding,
|
|
80
|
+
args: ['style.font-size.px']
|
|
81
|
+
}], label: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], labelColor: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], labelPosition: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], name: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], size: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}] } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9pY29uL2ljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvaWNvbi9pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQXFCcEYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixDQUFDLENBQUM7QUFFL0YsTUFBTSxpQkFBaUIsR0FBa0IsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFPM0UsTUFBTSxPQUFPLG9CQUFvQjtJQWM3QixZQUNxQixlQUFnQyxFQUNoQyxZQUEwQixFQUNFLE1BQTBCO1FBRnRELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNFLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBaEJ4QyxZQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ1gsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUd4QyxlQUFVLEdBQWtDLFFBQVEsQ0FBQztRQUNyRCxrQkFBYSxHQUE4RCxXQUFXLENBQUM7UUFTbkcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBb0IsSUFBSSxDQUFDLEtBQWE7UUFDbEMsTUFBTSxPQUFPLEdBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0gsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRUQsSUFBb0IsSUFBSSxDQUFDLEdBQVc7UUFDaEMsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBMEI7UUFDNUMsbUVBQW1FO1FBQ25FLHNDQUFzQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBc0IsQ0FBQztRQUM3QyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzdCLE9BQU87U0FDVjtRQUNELFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVuQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM1QixJQUFJLEdBQUcsRUFBRTtnQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQy9GO1NBQ0o7SUFDTCxDQUFDOztpSEF0RFEsb0JBQW9CLDZFQWlCakIsa0JBQWtCO3FHQWpCckIsb0JBQW9CLGdhQzlCakMsNFRBSUE7MkZEMEJhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxjQUFjOzswQkFxQm5CLE1BQU07MkJBQUMsa0JBQWtCOzRDQWhCSyxPQUFPO3NCQUF6QyxXQUFXO3VCQUFDLGFBQWE7Z0JBQ2tCLGNBQWM7c0JBQXpELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNHLE1BQU07c0JBQTNDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNhLEtBQUs7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNVLE1BQU07c0JBQWhELFdBQVc7dUJBQUMscUJBQXFCO2dCQUNRLFFBQVE7c0JBQWpELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUVqQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFZYyxJQUFJO3NCQUF2QixLQUFLO2dCQVVjLElBQUk7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0SWNvblJlZ2lzdHJ5fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW50ZXJmYWNlIE5hdHVyYWxJY29uVHlwZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN2Zz86IHN0cmluZztcbiAgICBmb250Pzogc3RyaW5nO1xuICAgIGNsYXNzPzogJ25lZ2F0aXZlJyB8ICduZXV0cmFsJyB8ICdwb3NpdGl2ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbEljb25Db25maWcge1xuICAgIHN2Zz86IHN0cmluZztcbiAgICBmb250Pzogc3RyaW5nO1xuICAgIGNsYXNzPzogJ25lZ2F0aXZlJyB8ICduZXV0cmFsJyB8ICdwb3NpdGl2ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0dXJhbEljb25zQ29uZmlnIHtcbiAgICBba2V5OiBzdHJpbmddOiBOYXR1cmFsSWNvbkNvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IEljb25zQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsSWNvbnNDb25maWc+KCdOYXR1cmFsSWNvbnNDb25maWcnKTtcblxuY29uc3QgbmF0dXJhbFJlZ2lzdGVyZWQ6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2woJ05hdHVyYWwgaWNvbiByZWdpc3RlcmVkJyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1pY29uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSWNvbkNvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jb2xvcicpIHB1YmxpYyBmZ0NvbG9yID0gJ2luaGVyaXQnO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWF0ZXJpYWwtaWNvbnMnKSBwdWJsaWMgaXNNYXRlcmlhbEljb24gPSB0cnVlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWljb24nKSBwdWJsaWMgaXNJY29uID0gdHJ1ZTtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi13aWR0aC5weCcpIHB1YmxpYyB3aWR0aCA9IDI0O1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLWhlaWdodC5weCcpIHB1YmxpYyBoZWlnaHQgPSAyNDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZvbnQtc2l6ZS5weCcpIHB1YmxpYyBmb250U2l6ZSA9IDI0O1xuXG4gICAgQElucHV0KCkgcHVibGljIGxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbENvbG9yOiAncHJpbWFyeScgfCAnd2FybicgfCAnYWNjZW50JyA9ICdhY2NlbnQnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgPSAndG9wLXJpZ2h0JztcblxuICAgIHB1YmxpYyBpY29uITogTmF0dXJhbEljb25UeXBlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdEljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBASW5qZWN0KEljb25zQ29uZmlnU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IE5hdHVyYWxJY29uc0NvbmZpZyxcbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckljb25zKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbmV3SWNvbjogTmF0dXJhbEljb25UeXBlID0ge25hbWU6IHZhbHVlfTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnW3ZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5pY29uID0gT2JqZWN0LmFzc2lnbihuZXdJY29uLCB0aGlzLmNvbmZpZ1t2YWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3SWNvbi5mb250ID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmljb24gPSBuZXdJY29uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBzaXplKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHZhbCA9IHZhbCA9PSBudWxsID8gMjQgOiB2YWw7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gdmFsO1xuICAgICAgICB0aGlzLndpZHRoID0gdmFsO1xuICAgICAgICB0aGlzLmZvbnRTaXplID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJJY29ucyhjb25maWc6IE5hdHVyYWxJY29uc0NvbmZpZyk6IHZvaWQge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIHNwZWNpZmljIGluc3RhbmNlIG9mIHJlZ2lzdHJ5IGhhcyBvdXIgb3VyIGljb25zXG4gICAgICAgIC8vIGV4YWN0bHkgb25jZSwgbm90IGxlc3MgYW5kIG5vdCBtb3JlXG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5tYXRJY29uUmVnaXN0cnkgYXMgYW55O1xuICAgICAgICBpZiAocmVnaXN0cnlbbmF0dXJhbFJlZ2lzdGVyZWRdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVnaXN0cnlbbmF0dXJhbFJlZ2lzdGVyZWRdID0gdHJ1ZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICAgICAgICBjb25zdCBzdmcgPSBjb25maWdba2V5XS5zdmc7XG4gICAgICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbihrZXksIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChzdmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtaWNvbiAqbmdJZj1cImljb24/LmZvbnRcIiBbY2xhc3NdPVwiaWNvbj8uY2xhc3NcIiBkYXRhLW5vc25pcHBldD57eyBpY29uPy5mb250IH19PC9tYXQtaWNvbj5cbjxtYXQtaWNvbiAqbmdJZj1cImljb24/LnN2Z1wiIFtjbGFzc109XCJpY29uPy5jbGFzc1wiIFtzdmdJY29uXT1cImljb24ubmFtZVwiIGNsYXNzPVwic3ZnLWljb25cIj48L21hdC1pY29uPlxuXG48ZGl2ICpuZ0lmPVwibGFiZWxcIiBbbmdDbGFzc109XCJsYWJlbENvbG9yICsgJyAnICsgbGFiZWxQb3NpdGlvblwiIGNsYXNzPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvZGl2PlxuIl19
|