@datarailsshared/datarailsshared 1.4.203-rocket → 1.4.215
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/_datarailsshared.styles.css +4 -4
- package/assets/styles/_styles.scss +2 -2
- package/assets/styles/colors.scss +4 -1
- package/bundles/datarailsshared-datarailsshared.umd.js +8108 -0
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -0
- package/datarailsshared-datarailsshared-1.4.215.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +34 -0
- package/datarailsshared-datarailsshared.metadata.json +1 -0
- package/esm2015/datarailsshared-datarailsshared.js +35 -0
- package/esm2015/lib/date-tags/date-tag.component.js +73 -0
- package/esm2015/lib/date-tags/date-tag.module.js +36 -0
- package/esm2015/lib/date-tags/day-tag/day-tag.component.js +77 -0
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +153 -0
- package/esm2015/lib/date-tags/month-tag/month-tag.component.js +80 -0
- package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +105 -0
- package/esm2015/lib/date-tags/week-tag/week-tag.component.js +84 -0
- package/esm2015/lib/date-tags/year-tag/year-tag.component.js +78 -0
- package/esm2015/lib/dr-accordion/accordion-item-body.component.js +55 -0
- package/esm2015/lib/dr-accordion/accordion-item-header.component.js +77 -0
- package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -0
- package/esm2015/lib/dr-accordion/accordion.component.js +43 -0
- package/esm2015/lib/dr-accordion/accordion.module.js +23 -0
- package/esm2015/lib/dr-alert/dr-alert.component.js +35 -0
- package/esm2015/lib/dr-alert/dr-alert.module.js +18 -0
- package/esm2015/lib/dr-alert/enums/dr-alert-theme.enum.js +10 -0
- package/esm2015/lib/dr-avatar/dr-avatar.component.js +44 -0
- package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -0
- package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +16 -0
- package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +25 -0
- package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +20 -0
- package/esm2015/lib/dr-chat/chat.component.js +119 -0
- package/esm2015/lib/dr-chat/chat.module.js +41 -0
- package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +155 -0
- package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +71 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +49 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +23 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +47 -0
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +18 -0
- package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +87 -0
- package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +15 -0
- package/esm2015/lib/dr-details-list/dr-details-list.component.js +65 -0
- package/esm2015/lib/dr-details-list/dr-details-list.module.js +16 -0
- package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +70 -0
- package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +92 -0
- package/esm2015/lib/dr-dialog/dialog.module.js +34 -0
- package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +25 -0
- package/esm2015/lib/dr-dialog/services/dialog.service.js +78 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +104 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +114 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +104 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -0
- package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -0
- package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +103 -0
- package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +19 -0
- package/esm2015/lib/dr-error/dr-error.component.js +54 -0
- package/esm2015/lib/dr-error/dr-error.module.js +22 -0
- package/esm2015/lib/dr-inputs/button/button.component.js +39 -0
- package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +65 -0
- package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +47 -0
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +216 -0
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +181 -0
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +183 -0
- package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +12 -0
- package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +194 -0
- package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +194 -0
- package/esm2015/lib/dr-inputs/dr-inputs.module.js +66 -0
- package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +29 -0
- package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +121 -0
- package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +74 -0
- package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +68 -0
- package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +63 -0
- package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +73 -0
- package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +157 -0
- package/esm2015/lib/dr-layout/dr-layout-body.component.js +13 -0
- package/esm2015/lib/dr-layout/dr-layout-header.component.js +17 -0
- package/esm2015/lib/dr-layout/dr-layout.component.js +14 -0
- package/esm2015/lib/dr-layout/dr-layout.module.js +20 -0
- package/esm2015/lib/dr-popover/dr-popover.component.js +106 -0
- package/esm2015/lib/dr-popover/dr-popover.directive.js +84 -0
- package/esm2015/lib/dr-popover/dr-popover.module.js +23 -0
- package/esm2015/lib/dr-popover/dr-popover.service.js +106 -0
- package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +102 -0
- package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +74 -0
- package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +73 -0
- package/esm2015/lib/dr-scenario/dr-scenario.module.js +28 -0
- package/esm2015/lib/dr-scenario/services/scenario.service.js +167 -0
- package/esm2015/lib/dr-spinner/dr-spinner.component.js +18 -0
- package/esm2015/lib/dr-spinner/dr-spinner.directive.js +56 -0
- package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -0
- package/esm2015/lib/dr-tabs/dr-tab.component.js +26 -0
- package/esm2015/lib/dr-tabs/dr-tabs.component.js +35 -0
- package/esm2015/lib/dr-tabs/dr-tabs.module.js +32 -0
- package/esm2015/lib/dr-tags/dr-tag.component.js +177 -0
- package/esm2015/lib/dr-tags/dr-tag.module.js +24 -0
- package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +19 -0
- package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +18 -0
- package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +20 -0
- package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +34 -0
- package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +40 -0
- package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +147 -0
- package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +35 -0
- package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +210 -0
- package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +58 -0
- package/esm2015/lib/dr-treeview/dr-tree-view.module.js +38 -0
- package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +97 -0
- package/esm2015/lib/dr-treeview/models/treeview-config.js +22 -0
- package/esm2015/lib/dr-treeview/models/treeview-i18n.js +42 -0
- package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +17 -0
- package/esm2015/lib/list-tags/list-tag.component.js +37 -0
- package/esm2015/lib/list-tags/list-tag.module.js +23 -0
- package/esm2015/lib/models/chat.js +36 -0
- package/{esm2022/lib/models/datePicker.mjs → esm2015/lib/models/datePicker.js} +1 -1
- package/esm2015/lib/models/popover.js +27 -0
- package/esm2015/lib/stepper/stepper.component.js +55 -0
- package/esm2015/lib/stepper/stepper.module.js +17 -0
- package/esm2015/lib/utils/dr-shared-utils.js +47 -0
- package/esm2015/public-api.js +96 -0
- package/fesm2015/datarailsshared-datarailsshared.js +6938 -0
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -0
- package/lib/date-tags/date-tag.component.d.ts +16 -4
- package/lib/date-tags/date-tag.module.d.ts +2 -19
- package/lib/date-tags/day-tag/day-tag.component.d.ts +1 -4
- package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +2 -5
- package/lib/date-tags/month-tag/month-tag.component.d.ts +1 -4
- package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +1 -4
- package/lib/date-tags/week-tag/week-tag.component.d.ts +1 -4
- package/lib/date-tags/year-tag/year-tag.component.d.ts +1 -4
- package/lib/dr-accordion/accordion-item-body.component.d.ts +0 -3
- package/lib/dr-accordion/accordion-item-header.component.d.ts +0 -3
- package/lib/dr-accordion/accordion-item.component.d.ts +0 -3
- package/lib/dr-accordion/accordion.component.d.ts +0 -3
- package/lib/dr-accordion/accordion.module.d.ts +0 -9
- package/lib/dr-alert/dr-alert.component.d.ts +8 -0
- package/lib/dr-alert/dr-alert.module.d.ts +2 -0
- package/lib/dr-alert/enums/dr-alert-theme.enum.d.ts +7 -0
- package/lib/dr-avatar/dr-avatar.component.d.ts +0 -3
- package/lib/dr-avatar/dr-avatar.module.d.ts +0 -9
- package/lib/dr-avatar/dr-avatar.pipe.d.ts +0 -3
- package/lib/dr-badge-status/dr-badge-status.component.d.ts +0 -3
- package/lib/dr-badge-status/dr-badge-status.module.d.ts +0 -7
- package/lib/dr-chat/chat.component.d.ts +0 -3
- package/lib/dr-chat/chat.module.d.ts +0 -17
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +0 -3
- package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +0 -3
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +0 -3
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +0 -3
- package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +0 -3
- package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +0 -3
- package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +0 -3
- package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +0 -3
- package/lib/dr-details-list/dr-details-list.component.d.ts +0 -3
- package/lib/dr-details-list/dr-details-list.module.d.ts +0 -6
- package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +1 -4
- package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +2 -5
- package/lib/dr-dialog/dialog.module.d.ts +0 -12
- package/lib/dr-dialog/interfaces/dialog-data.d.ts +7 -7
- package/lib/dr-dialog/services/dialog.service.d.ts +1 -4
- package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +0 -3
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -3
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +0 -3
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +0 -3
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +0 -10
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +0 -3
- package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +0 -3
- package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -8
- package/lib/dr-error/dr-error.component.d.ts +3 -7
- package/lib/dr-error/dr-error.module.d.ts +0 -8
- package/lib/dr-inputs/button/button.component.d.ts +1 -4
- package/lib/dr-inputs/checkbox/checkbox.component.d.ts +0 -3
- package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +0 -3
- package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +0 -3
- package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +0 -3
- package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +8 -4
- package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +2 -4
- package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +0 -3
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +0 -3
- package/lib/dr-inputs/dr-inputs.module.d.ts +0 -25
- package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +0 -3
- package/lib/dr-inputs/dr-select/dr-select.component.d.ts +1 -3
- package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +0 -3
- package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +0 -3
- package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +0 -3
- package/lib/dr-inputs/radio-button/radio-button.component.d.ts +0 -3
- package/lib/dr-inputs/radio-button/radio-group.component.d.ts +0 -3
- package/lib/dr-layout/dr-layout-body.component.d.ts +0 -3
- package/lib/dr-layout/dr-layout-header.component.d.ts +0 -3
- package/lib/dr-layout/dr-layout.component.d.ts +0 -3
- package/lib/dr-layout/dr-layout.module.d.ts +0 -8
- package/lib/dr-popover/dr-popover.component.d.ts +4 -8
- package/lib/dr-popover/dr-popover.directive.d.ts +0 -3
- package/lib/dr-popover/dr-popover.module.d.ts +0 -7
- package/lib/dr-popover/dr-popover.service.d.ts +0 -3
- package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +0 -3
- package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -3
- package/lib/dr-scenario/dr-scenario.module.d.ts +0 -10
- package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
- package/lib/dr-scenario/services/scenario.service.d.ts +0 -3
- package/lib/dr-spinner/dr-spinner.component.d.ts +0 -3
- package/lib/dr-spinner/dr-spinner.directive.d.ts +0 -3
- package/lib/dr-spinner/dr-spinner.module.d.ts +0 -7
- package/lib/dr-tabs/dr-tab.component.d.ts +0 -3
- package/lib/dr-tabs/dr-tabs.component.d.ts +0 -3
- package/lib/dr-tabs/dr-tabs.module.d.ts +0 -11
- package/lib/dr-tags/dr-tag.component.d.ts +0 -3
- package/lib/dr-tags/dr-tag.module.d.ts +0 -9
- package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +0 -3
- package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +0 -3
- package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +0 -3
- package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +0 -3
- package/lib/dr-tooltip/dr-tooltip.component.d.ts +1 -4
- package/lib/dr-tooltip/dr-tooltip.directive.d.ts +0 -3
- package/lib/dr-tooltip/dr-tooltip.module.d.ts +0 -11
- package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +1 -1
- package/lib/dr-treeview/components/treeview/treeview.component.d.ts +0 -3
- package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +0 -3
- package/lib/dr-treeview/dr-tree-view.module.d.ts +0 -9
- package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +0 -9
- package/lib/dr-treeview/models/treeview-config.d.ts +0 -3
- package/lib/dr-treeview/models/treeview-i18n.d.ts +0 -5
- package/lib/dr-treeview/pipes/treeview.pipe.d.ts +0 -3
- package/lib/list-tags/list-tag.component.d.ts +0 -3
- package/lib/list-tags/list-tag.module.d.ts +0 -8
- package/lib/models/chat.d.ts +2 -2
- package/lib/models/datePicker.d.ts +3 -10
- package/lib/models/dropdown.d.ts +1 -1
- package/lib/models/popover.d.ts +1 -1
- package/lib/models/serverTags.d.ts +4 -4
- package/lib/stepper/interfaces/stepper.d.ts +1 -1
- package/lib/stepper/stepper.component.d.ts +0 -3
- package/lib/stepper/stepper.module.d.ts +0 -7
- package/package.json +15 -27
- package/public-api.d.ts +3 -27
- package/datarailsshared-datarailsshared-1.4.203-rocket.tgz +0 -0
- package/esm2022/datarailsshared-datarailsshared.mjs +0 -5
- package/esm2022/lib/date-tags/any-tag.component.mjs +0 -44
- package/esm2022/lib/date-tags/date-tag.component.mjs +0 -47
- package/esm2022/lib/date-tags/date-tag.module.mjs +0 -66
- package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -82
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -159
- package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -87
- package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -106
- package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -89
- package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -83
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +0 -92
- package/esm2022/lib/directives/click-outside/click-outside.module.mjs +0 -18
- package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +0 -58
- package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +0 -108
- package/esm2022/lib/dr-accordion/accordion-item.component.mjs +0 -138
- package/esm2022/lib/dr-accordion/accordion.component.mjs +0 -42
- package/esm2022/lib/dr-accordion/accordion.module.mjs +0 -34
- package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +0 -48
- package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +0 -37
- package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +0 -20
- package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +0 -27
- package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +0 -27
- package/esm2022/lib/dr-chat/chat.component.mjs +0 -138
- package/esm2022/lib/dr-chat/chat.module.mjs +0 -68
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +0 -168
- package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +0 -89
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +0 -47
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +0 -26
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +0 -49
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +0 -17
- package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +0 -88
- package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +0 -13
- package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +0 -79
- package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +0 -21
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +0 -76
- package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +0 -97
- package/esm2022/lib/dr-dialog/dialog.module.mjs +0 -51
- package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +0 -25
- package/esm2022/lib/dr-dialog/services/dialog.service.mjs +0 -77
- package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +0 -16
- package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +0 -104
- package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +0 -116
- package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +0 -117
- package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +0 -49
- package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +0 -25
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -112
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -28
- package/esm2022/lib/dr-error/dr-error.component.mjs +0 -67
- package/esm2022/lib/dr-error/dr-error.module.mjs +0 -31
- package/esm2022/lib/dr-inputs/button/button.component.mjs +0 -66
- package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +0 -65
- package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +0 -64
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +0 -226
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +0 -190
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +0 -186
- package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +0 -16
- package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +0 -195
- package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +0 -218
- package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +0 -108
- package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +0 -31
- package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +0 -159
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +0 -79
- package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +0 -72
- package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +0 -66
- package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +0 -78
- package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +0 -173
- package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +0 -16
- package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +0 -24
- package/esm2022/lib/dr-layout/dr-layout.component.mjs +0 -13
- package/esm2022/lib/dr-layout/dr-layout.module.mjs +0 -29
- package/esm2022/lib/dr-popover/dr-popover.component.mjs +0 -126
- package/esm2022/lib/dr-popover/dr-popover.directive.mjs +0 -110
- package/esm2022/lib/dr-popover/dr-popover.module.mjs +0 -30
- package/esm2022/lib/dr-popover/dr-popover.service.mjs +0 -107
- package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -105
- package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -83
- package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -81
- package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -41
- package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -165
- package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +0 -17
- package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +0 -59
- package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +0 -23
- package/esm2022/lib/dr-tabs/dr-tab.component.mjs +0 -37
- package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +0 -47
- package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +0 -49
- package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -188
- package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -35
- package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +0 -18
- package/esm2022/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.mjs +0 -16
- package/esm2022/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.mjs +0 -18
- package/esm2022/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.mjs +0 -19
- package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +0 -48
- package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +0 -156
- package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +0 -48
- package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +0 -215
- package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +0 -60
- package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +0 -48
- package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +0 -106
- package/esm2022/lib/dr-treeview/models/treeview-config.mjs +0 -25
- package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +0 -47
- package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +0 -21
- package/esm2022/lib/list-tags/list-tag.component.mjs +0 -42
- package/esm2022/lib/list-tags/list-tag.module.mjs +0 -34
- package/esm2022/lib/models/chat.mjs +0 -36
- package/esm2022/lib/models/popover.mjs +0 -27
- package/esm2022/lib/stepper/stepper.component.mjs +0 -63
- package/esm2022/lib/stepper/stepper.module.mjs +0 -24
- package/esm2022/lib/utils/dr-shared-utils.mjs +0 -47
- package/esm2022/public-api.mjs +0 -120
- package/fesm2022/datarailsshared-datarailsshared.mjs +0 -7551
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/date-tags/any-tag.component.d.ts +0 -20
- package/lib/directives/click-outside/click-outside.directive.d.ts +0 -23
- package/lib/directives/click-outside/click-outside.module.d.ts +0 -8
- /package/{esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs → esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js} +0 -0
- /package/{esm2022/lib/dr-popover/dr-popover-ref.mjs → esm2015/lib/dr-popover/dr-popover-ref.js} +0 -0
- /package/{esm2022/lib/dr-scenario/interfaces/scenario.mjs → esm2015/lib/dr-scenario/interfaces/scenario.js} +0 -0
- /package/{esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs → esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js} +0 -0
- /package/{esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs → esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js} +0 -0
- /package/{esm2022/lib/dr-treeview/helpers/treeview-helper.mjs → esm2015/lib/dr-treeview/helpers/treeview-helper.js} +0 -0
- /package/{esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-header-template-context.js} +0 -0
- /package/{esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-item-template-context.js} +0 -0
- /package/{esm2022/lib/dr-treeview/models/treeview-item.mjs → esm2015/lib/dr-treeview/models/treeview-item.js} +0 -0
- /package/{esm2022/lib/models/badgeStatus.mjs → esm2015/lib/models/badgeStatus.js} +0 -0
- /package/{esm2022/lib/models/constants.mjs → esm2015/lib/models/constants.js} +0 -0
- /package/{esm2022/lib/models/dropdown.mjs → esm2015/lib/models/dropdown.js} +0 -0
- /package/{esm2022/lib/models/serverTags.mjs → esm2015/lib/models/serverTags.js} +0 -0
- /package/{esm2022/lib/models/spinnerOptions.mjs → esm2015/lib/models/spinnerOptions.js} +0 -0
- /package/{esm2022/lib/models/validationError.mjs → esm2015/lib/models/validationError.js} +0 -0
- /package/{esm2022/lib/stepper/interfaces/stepper.mjs → esm2015/lib/stepper/interfaces/stepper.js} +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
export class TooltipNoBodyComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
}
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
TooltipNoBodyComponent.decorators = [
|
|
9
|
+
{ type: Component, args: [{
|
|
10
|
+
selector: 'dr-tooltip-no-body',
|
|
11
|
+
template: "<div class=\"tooltip-bold\" [ngClass]=\"{'tooltip-bold--icon': context?.icon}\">\n <div class=\"tooltip-bold__title\">\n <i *ngIf=\"context?.icon\" [class]=\"context?.icon\" [style.color]=\"context?.iconColor || 'black'\"></i>\n {{ context.title }}\n </div>\n <div class=\"tooltip-bold-text\">\n {{ context.text }}\n </div>\n</div>",
|
|
12
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13
|
+
styles: [".tooltip-bold{position:relative;box-shadow:0 4px 8px 1px #00000040;border:1px solid #c3c4ce;border-radius:8px;font-size:14px;line-height:22px;padding:10px 12px;background-color:#fff}.tooltip-bold--icon{padding-left:44px}.tooltip-bold__title{font-weight:bold}.tooltip-bold__title>i{position:absolute;width:16px;height:16px;left:10px}\n"]
|
|
14
|
+
},] }
|
|
15
|
+
];
|
|
16
|
+
TooltipNoBodyComponent.ctorParameters = () => [];
|
|
17
|
+
TooltipNoBodyComponent.propDecorators = {
|
|
18
|
+
context: [{ type: Input }]
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1uby1ib2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXRvb2x0aXAvY29tcG9uZW50cy90b29sdGlwLW5vLWJvZHkvdG9vbHRpcC1uby1ib2R5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQVFsRixNQUFNLE9BQU8sc0JBQXNCO0lBSS9CO0lBQ0EsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDOzs7WUFkSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsd1hBQStDO2dCQUUvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7Ozs7c0JBR0ksS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci10b29sdGlwLW5vLWJvZHknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLW5vLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2x0aXAtbm8tYm9keS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBOb0JvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgY29udGV4dDogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
export class TooltipProcessDefaultComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
TooltipProcessDefaultComponent.decorators = [
|
|
7
|
+
{ type: Component, args: [{
|
|
8
|
+
selector: 'dr-tooltip-process-default',
|
|
9
|
+
template: `
|
|
10
|
+
<div class="container" [innerHTML]="text"></div>
|
|
11
|
+
`,
|
|
12
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13
|
+
styles: [`
|
|
14
|
+
.container {
|
|
15
|
+
width: auto;
|
|
16
|
+
max-width: 388px;
|
|
17
|
+
text-align: start;
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
line-height: 22px;
|
|
20
|
+
padding: 10px 12px;
|
|
21
|
+
color: #151B3F;
|
|
22
|
+
background-color: #FFF;
|
|
23
|
+
border-radius: 8px;
|
|
24
|
+
box-shadow: 0px 4px 8px 1px rgba(0, 0, 0, 0.25);
|
|
25
|
+
border: 1px solid #C3C4CE;
|
|
26
|
+
}
|
|
27
|
+
`]
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
TooltipProcessDefaultComponent.ctorParameters = () => [];
|
|
31
|
+
TooltipProcessDefaultComponent.propDecorators = {
|
|
32
|
+
text: [{ type: Input }]
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wcm9jZXNzLWRlZmF1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdG9vbHRpcC9jb21wb25lbnRzL3Rvb2x0aXAtcHJvY2Vzcy1kZWZhdWx0L3Rvb2x0aXAtcHJvY2Vzcy1kZWZhdWx0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXdCMUUsTUFBTSxPQUFPLDhCQUE4QjtJQUl2QztJQUNBLENBQUM7OztZQTNCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsUUFBUSxFQUFFOztLQUVUO2dCQWdCRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTt5QkFmdEM7Ozs7Ozs7Ozs7Ozs7O0tBY1I7YUFFSjs7OzttQkFHSSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci10b29sdGlwLXByb2Nlc3MtZGVmYXVsdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtpbm5lckhUTUxdPVwidGV4dFwiPjwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAzODhweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgICAgICAgICBjb2xvcjogIzE1MUIzRjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggNHB4IDhweCAxcHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDM0M0Q0U7XG4gICAgICAgIH1cbiAgICBgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcFByb2Nlc3NEZWZhdWx0Q29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Component, HostListener, Input, TemplateRef } from '@angular/core';
|
|
2
|
+
import { trigger } from '@angular/animations';
|
|
3
|
+
import { POPUP_ANIMATION } from '../models/constants';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
export class TooltipComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isContentTemplate = false;
|
|
8
|
+
this.isMouseOn$ = new BehaviorSubject(false);
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
this.isContentTemplate = this.content instanceof TemplateRef;
|
|
12
|
+
}
|
|
13
|
+
setMouseOn() {
|
|
14
|
+
this.isMouseOn$.next(true);
|
|
15
|
+
}
|
|
16
|
+
unsetMouseOn() {
|
|
17
|
+
this.isMouseOn$.next(false);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
TooltipComponent.decorators = [
|
|
21
|
+
{ type: Component, args: [{
|
|
22
|
+
selector: 'dr-tooltip',
|
|
23
|
+
template: "<div [class]=\"position + ' ' + class\" [ngClass]=\"{'dr-tooltip': !options?.withoutContainerStyles}\">\n <div *ngIf=\"!options?.withoutArrow\" class=\"dr-tooltip-arrow\"></div>\n <ng-container *ngIf=\"isContentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"content; context: contentContext\"></ng-container>\n </ng-container>\n <ng-template #defaultContent>\n <div class=\"default-content\">{{ content }}</div>\n </ng-template>\n</div>\n",
|
|
24
|
+
animations: [
|
|
25
|
+
trigger('tooltip', POPUP_ANIMATION),
|
|
26
|
+
],
|
|
27
|
+
styles: [":host{display:block}.top,.top-left,.top-right.dr-tooltip{transform:translateY(-8px)}.bottom,.bottom-left,.bottom-right.dr-tooltip{transform:translateY(8px)}.left,.left-top,.left-bottom.dr-tooltip{transform:translate(-8px)}.right,.right-top,.right-bottom.dr-tooltip{transform:translate(8px)}.dr-tooltip{background:#fff;border:1px solid #cfd7dd;box-sizing:border-box;border-radius:8px;font-size:12px;color:#545a6b;max-width:80vw!important;box-shadow:0 2px 4px #9199b4}.dr-tooltip .default-content{padding:.5rem;font-size:12px;line-height:22px;white-space:pre;text-overflow:ellipsis;overflow:hidden}.dr-tooltip-arrow{border-width:8px}.dr-tooltip-arrow,.dr-tooltip-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.dr-tooltip-arrow:after{content:\"\";border-width:8px}.top .dr-tooltip-arrow,.top-left .dr-tooltip-arrow,.top-right .dr-tooltip-arrow{bottom:-16px;border-top-color:#cfd7dd!important}.top .dr-tooltip-arrow:after,.top-left .dr-tooltip-arrow:after,.top-right .dr-tooltip-arrow:after{bottom:-6px;left:-8px;border-top-color:#fff}.bottom .dr-tooltip-arrow,.bottom-left .dr-tooltip-arrow,.bottom-right .dr-tooltip-arrow{top:-7px;border-top:none;border-bottom-color:#cfd7dd!important}.bottom .dr-tooltip-arrow:after,.bottom-left .dr-tooltip-arrow:after,.bottom-right .dr-tooltip-arrow:after{border-top:none;top:1px;left:-8px;border-bottom-color:#fff}.left .dr-tooltip-arrow,.left-top .dr-tooltip-arrow,.left-bottom .dr-tooltip-arrow{right:-16px;border-left-color:#cfd7dd!important}.left .dr-tooltip-arrow:after,.left-top .dr-tooltip-arrow:after,.left-bottom .dr-tooltip-arrow:after{bottom:-8px;left:-9px;border-left-color:#fff}.right .dr-tooltip-arrow,.right-top .dr-tooltip-arrow,.right-bottom .dr-tooltip-arrow{left:-16px;border-right-color:#cfd7dd!important}.right .dr-tooltip-arrow:after,.right-top .dr-tooltip-arrow:after,.right-bottom .dr-tooltip-arrow:after{bottom:-8px;left:-7px;border-right-color:#fff}.top .dr-tooltip-arrow,.bottom .dr-tooltip-arrow{left:calc(50% - 8px)}.bottom-left .dr-tooltip-arrow,.top-left .dr-tooltip-arrow{left:8px}.bottom-right .dr-tooltip-arrow,.top-right .dr-tooltip-arrow{right:8px}.left .dr-tooltip-arrow,.right .dr-tooltip-arrow{top:calc(50% - 8px)}.left-top .dr-tooltip-arrow,.dr-tooltip-arrow .right-top{top:8px}.right-bottom .dr-tooltip-arrow,.left-bottom .dr-tooltip-arrow{bottom:8px}\n"]
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
TooltipComponent.ctorParameters = () => [];
|
|
31
|
+
TooltipComponent.propDecorators = {
|
|
32
|
+
content: [{ type: Input }],
|
|
33
|
+
contentContext: [{ type: Input }],
|
|
34
|
+
position: [{ type: Input }],
|
|
35
|
+
options: [{ type: Input }],
|
|
36
|
+
class: [{ type: Input }],
|
|
37
|
+
setMouseOn: [{ type: HostListener, args: ['mouseenter',] }],
|
|
38
|
+
unsetMouseOn: [{ type: HostListener, args: ['mouseleave',] }]
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItdG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10b29sdGlwL2RyLXRvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFXekI7UUFKQSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFbkIsZUFBVSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUdsRixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxZQUFZLFdBQVcsQ0FBQztJQUNqRSxDQUFDO0lBR0QsVUFBVTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7O1lBbENKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIscWZBQTBDO2dCQUUxQyxVQUFVLEVBQUU7b0JBQ1IsT0FBTyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7aUJBQ3RDOzthQUNKOzs7O3NCQUdJLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLO3NCQUNMLEtBQUs7b0JBQ0wsS0FBSzt5QkFZTCxZQUFZLFNBQUMsWUFBWTsyQkFLekIsWUFBWSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFBPUFVQX0FOSU1BVElPTiB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgVG9vbHRpcE9wdGlvbnMgPSB7XG4gICAgd2l0aG91dENvbnRhaW5lclN0eWxlcz86IGJvb2xlYW47XG4gICAgd2l0aG91dEFycm93PzogYm9vbGVhbjtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItdG9vbHRpcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLXRvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLXRvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3Rvb2x0aXAnLCBQT1BVUF9BTklNQVRJT04pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgY29udGVudDtcbiAgICBASW5wdXQoKSBjb250ZW50Q29udGV4dDtcbiAgICBASW5wdXQoKSBwb3NpdGlvbjtcbiAgICBASW5wdXQoKSBvcHRpb25zOiBUb29sdGlwT3B0aW9ucztcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nO1xuICAgIGlzQ29udGVudFRlbXBsYXRlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNNb3VzZU9uJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0NvbnRlbnRUZW1wbGF0ZSA9IHRoaXMuY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHNldE1vdXNlT24oKSB7XG4gICAgICAgIHRoaXMuaXNNb3VzZU9uJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIHVuc2V0TW91c2VPbigpIHtcbiAgICAgICAgdGhpcy5pc01vdXNlT24kLm5leHQoZmFsc2UpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
|
|
3
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
4
|
+
import { TooltipComponent } from './dr-tooltip.component';
|
|
5
|
+
import { POPUP_POSITIONS } from '../models/constants';
|
|
6
|
+
import { skip } from 'rxjs/operators';
|
|
7
|
+
const getOverlayPosition = (position) => (Object.assign({}, POPUP_POSITIONS[position]));
|
|
8
|
+
const ɵ0 = getOverlayPosition;
|
|
9
|
+
export class DrTooltipDirective {
|
|
10
|
+
constructor(overlay, overlayPositionBuilder, elementRef) {
|
|
11
|
+
this.overlay = overlay;
|
|
12
|
+
this.overlayPositionBuilder = overlayPositionBuilder;
|
|
13
|
+
this.elementRef = elementRef;
|
|
14
|
+
this.contentContext = {};
|
|
15
|
+
this._position = 'top';
|
|
16
|
+
this.class = '';
|
|
17
|
+
// is used for preserve tooltip from being hidden for N milliseconds
|
|
18
|
+
this.drTooltipMousleaveTimeout = 0;
|
|
19
|
+
this.overlayPosition = getOverlayPosition(this.position);
|
|
20
|
+
}
|
|
21
|
+
get position() {
|
|
22
|
+
return this._position;
|
|
23
|
+
}
|
|
24
|
+
set position(value) {
|
|
25
|
+
this._position = value;
|
|
26
|
+
this.overlayPosition = getOverlayPosition(value);
|
|
27
|
+
}
|
|
28
|
+
set drTooltipOptions(options) {
|
|
29
|
+
if (options === null || options === void 0 ? void 0 : options.indent) {
|
|
30
|
+
const position = getOverlayPosition(this.position);
|
|
31
|
+
if (position === null || position === void 0 ? void 0 : position.offsetY) {
|
|
32
|
+
position.offsetY = position.offsetY < 0 ? -options.indent : options.indent;
|
|
33
|
+
}
|
|
34
|
+
if (position === null || position === void 0 ? void 0 : position.offsetX) {
|
|
35
|
+
position.offsetX = position.offsetX < 0 ? -options.indent : options.indent;
|
|
36
|
+
}
|
|
37
|
+
this.overlayPosition = position;
|
|
38
|
+
}
|
|
39
|
+
this.options = options;
|
|
40
|
+
}
|
|
41
|
+
set showTooltip(value) {
|
|
42
|
+
this.manualHandling = true;
|
|
43
|
+
if (value) {
|
|
44
|
+
this.renderTooltip();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.destroyTooltip();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
if (!this.overlayRef)
|
|
52
|
+
return null;
|
|
53
|
+
if (this.overlayRef.hasAttached()) {
|
|
54
|
+
this.hide();
|
|
55
|
+
}
|
|
56
|
+
// TODO: Temporary solution. line 162 doesn't stop function execution
|
|
57
|
+
if (this.overlayRef) {
|
|
58
|
+
this.overlayRef.dispose();
|
|
59
|
+
}
|
|
60
|
+
if (this.tooltipMouseOnSubscription) {
|
|
61
|
+
this.tooltipMouseOnSubscription.unsubscribe();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
show() {
|
|
65
|
+
if (this.manualHandling || this.overlayRef)
|
|
66
|
+
return;
|
|
67
|
+
this.renderTooltip();
|
|
68
|
+
}
|
|
69
|
+
hide() {
|
|
70
|
+
var _a;
|
|
71
|
+
if (this.manualHandling || !this.tooltipRef || ((_a = this.tooltipRef) === null || _a === void 0 ? void 0 : _a.instance.isMouseOn$.getValue()))
|
|
72
|
+
return;
|
|
73
|
+
// if this timeout value is set - then preserve
|
|
74
|
+
// tooltip from being hidden N milliseconds and not hiding it
|
|
75
|
+
// in case mouse is pointed on tooltip
|
|
76
|
+
if (this.drTooltipMousleaveTimeout) {
|
|
77
|
+
if (this.mouseleaveTimer) {
|
|
78
|
+
clearTimeout(this.mouseleaveTimer);
|
|
79
|
+
}
|
|
80
|
+
this.mouseleaveTimer = setTimeout(() => {
|
|
81
|
+
var _a;
|
|
82
|
+
if (this.tooltipRef && !((_a = this.tooltipRef) === null || _a === void 0 ? void 0 : _a.instance.isMouseOn$.getValue())) {
|
|
83
|
+
this.destroyTooltip();
|
|
84
|
+
}
|
|
85
|
+
}, this.drTooltipMousleaveTimeout);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.destroyTooltip();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
createOverlay() {
|
|
92
|
+
const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([this.overlayPosition]);
|
|
93
|
+
this.overlayRef = this.overlay.create({ positionStrategy });
|
|
94
|
+
}
|
|
95
|
+
renderTooltip() {
|
|
96
|
+
var _a;
|
|
97
|
+
if (!this.content)
|
|
98
|
+
return;
|
|
99
|
+
this.createOverlay();
|
|
100
|
+
if (!((_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.hasAttached())) {
|
|
101
|
+
this.tooltipRef = this.overlayRef.attach(new ComponentPortal(TooltipComponent));
|
|
102
|
+
this.tooltipRef.instance.content = this.content;
|
|
103
|
+
this.tooltipRef.instance.contentContext = this.contentContext;
|
|
104
|
+
this.tooltipRef.instance.position = this.position;
|
|
105
|
+
this.tooltipRef.instance.options = this.options;
|
|
106
|
+
this.tooltipRef.instance.class = this.class + ' ' + this.position;
|
|
107
|
+
this.tooltipMouseOnSubscription = this.tooltipRef.instance.isMouseOn$.pipe(skip(1)).subscribe((isMouseOn) => {
|
|
108
|
+
if (!isMouseOn) {
|
|
109
|
+
this.destroyTooltip();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
destroyTooltip() {
|
|
115
|
+
if (this.overlayRef) {
|
|
116
|
+
this.overlayRef.dispose();
|
|
117
|
+
}
|
|
118
|
+
this.overlayRef = null;
|
|
119
|
+
this.tooltipRef = null;
|
|
120
|
+
if (this.tooltipMouseOnSubscription) {
|
|
121
|
+
this.tooltipMouseOnSubscription.unsubscribe();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
DrTooltipDirective.decorators = [
|
|
126
|
+
{ type: Directive, args: [{
|
|
127
|
+
selector: '[drTooltip]'
|
|
128
|
+
},] }
|
|
129
|
+
];
|
|
130
|
+
DrTooltipDirective.ctorParameters = () => [
|
|
131
|
+
{ type: Overlay },
|
|
132
|
+
{ type: OverlayPositionBuilder },
|
|
133
|
+
{ type: ElementRef }
|
|
134
|
+
];
|
|
135
|
+
DrTooltipDirective.propDecorators = {
|
|
136
|
+
content: [{ type: Input, args: ['drTooltip',] }],
|
|
137
|
+
contentContext: [{ type: Input, args: ['drTooltipContext',] }],
|
|
138
|
+
position: [{ type: Input, args: ['drTooltipPosition',] }],
|
|
139
|
+
class: [{ type: Input, args: ['drTooltipClass',] }],
|
|
140
|
+
drTooltipMousleaveTimeout: [{ type: Input }],
|
|
141
|
+
drTooltipOptions: [{ type: Input }],
|
|
142
|
+
showTooltip: [{ type: Input, args: ['drTooltipShow',] }],
|
|
143
|
+
show: [{ type: HostListener, args: ['mouseenter',] }],
|
|
144
|
+
hide: [{ type: HostListener, args: ['mouseleave',] }]
|
|
145
|
+
};
|
|
146
|
+
export { ɵ0 };
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10b29sdGlwL2RyLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxtQkFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUcsQ0FBQzs7QUFLNUUsTUFBTSxPQUFPLGtCQUFrQjtJQXVEM0IsWUFBb0IsT0FBZ0IsRUFDaEIsc0JBQThDLEVBQzlDLFVBQXNCO1FBRnRCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBcEQxQyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNaLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVMUIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLG9FQUFvRTtRQUMzRCw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFrQy9CLG9CQUFlLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBSzVELENB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LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2RyLXRvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFBPUFVQX1BPU0lUSU9OUyB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBnZXRPdmVybGF5UG9zaXRpb24gPSAocG9zaXRpb24pID0+ICh7IC4uLlBPUFVQX1BPU0lUSU9OU1twb3NpdGlvbl0gfSk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyVG9vbHRpcF0nXG59KVxuZXhwb3J0IGNsYXNzIERyVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoJ2RyVG9vbHRpcCcpXG4gICAgY29udGVudDogYW55O1xuICAgIEBJbnB1dCgnZHJUb29sdGlwQ29udGV4dCcpXG4gICAgY29udGVudENvbnRleHQgPSB7fTtcbiAgICBwcml2YXRlIF9wb3NpdGlvbiA9ICd0b3AnO1xuICAgIEBJbnB1dCgnZHJUb29sdGlwUG9zaXRpb24nKVxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICB9XG4gICAgcHVibGljIHNldCBwb3NpdGlvbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLm92ZXJsYXlQb3NpdGlvbiA9IGdldE92ZXJsYXlQb3NpdGlvbih2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgnZHJUb29sdGlwQ2xhc3MnKVxuICAgIGNsYXNzID0gJyc7XG5cbiAgICAvLyBpcyB1c2VkIGZvciBwcmVzZXJ2ZSB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIGZvciBOIG1pbGxpc2Vjb25kc1xuICAgIEBJbnB1dCgpIGRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZHJUb29sdGlwT3B0aW9ucyhvcHRpb25zOiBhbnkpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmluZGVudCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBnZXRPdmVybGF5UG9zaXRpb24odGhpcy5wb3NpdGlvbik7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24/Lm9mZnNldFkpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRZID0gcG9zaXRpb24ub2Zmc2V0WSA8IDAgPyAtb3B0aW9ucy5pbmRlbnQgOiBvcHRpb25zLmluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb3NpdGlvbj8ub2Zmc2V0WCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBwb3NpdGlvbi5vZmZzZXRYIDwgMCA/IC1vcHRpb25zLmluZGVudCA6IG9wdGlvbnMuaW5kZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIEBJbnB1dCgnZHJUb29sdGlwU2hvdycpXG4gICAgc2V0IHNob3dUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubWFudWFsSGFuZGxpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICAgIHByaXZhdGUgdG9vbHRpcFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSBvcHRpb25zO1xuICAgIHByaXZhdGUgbWFudWFsSGFuZGxpbmc6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSB0b29sdGlwTW91c2VPblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgbW91c2VsZWF2ZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbiA9IGdldE92ZXJsYXlQb3NpdGlvbih0aGlzLnBvc2l0aW9uKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IFRlbXBvcmFyeSBzb2x1dGlvbi4gbGluZSAxNjIgZG9lc24ndCBzdG9wIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8IHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucmVuZGVyVG9vbHRpcCgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hbnVhbEhhbmRsaW5nIHx8ICF0aGlzLnRvb2x0aXBSZWYgfHwgdGhpcy50b29sdGlwUmVmPy5pbnN0YW5jZS5pc01vdXNlT24kLmdldFZhbHVlKCkpIHJldHVybjtcblxuICAgICAgICAvLyBpZiB0aGlzIHRpbWVvdXQgdmFsdWUgaXMgc2V0IC0gdGhlbiBwcmVzZXJ2ZVxuICAgICAgICAvLyB0b29sdGlwIGZyb20gYmVpbmcgaGlkZGVuIE4gbWlsbGlzZWNvbmRzIGFuZCBub3QgaGlkaW5nIGl0XG4gICAgICAgIC8vIGluIGNhc2UgbW91c2UgaXMgcG9pbnRlZCBvbiB0b29sdGlwXG4gICAgICAgIGlmICh0aGlzLmRyVG9vbHRpcE1vdXNsZWF2ZVRpbWVvdXQpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VsZWF2ZVRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VsZWF2ZVRpbWVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tb3VzZWxlYXZlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sdGlwUmVmICYmICF0aGlzLnRvb2x0aXBSZWY/Lmluc3RhbmNlLmlzTW91c2VPbiQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5kclRvb2x0aXBNb3VzbGVhdmVUaW1lb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlci5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZikud2l0aFBvc2l0aW9ucyhbdGhpcy5vdmVybGF5UG9zaXRpb25dKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZW50KSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbHRpcENvbXBvbmVudCkpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuY29udGVudENvbnRleHQgPSB0aGlzLmNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFJlZi5pbnN0YW5jZS5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLmluc3RhbmNlLmNsYXNzID0gdGhpcy5jbGFzcyArICcgJyArIHRoaXMucG9zaXRpb247XG5cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1vdXNlT25TdWJzY3JpcHRpb24gPSB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UuaXNNb3VzZU9uJC5waXBlKHNraXAoMSkpLnN1YnNjcmliZSgoaXNNb3VzZU9uOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc01vdXNlT24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95VG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLnRvb2x0aXBSZWYgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBNb3VzZU9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBNb3VzZU9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { DrTooltipDirective } from './dr-tooltip.directive';
|
|
3
|
+
import { TooltipComponent } from './dr-tooltip.component';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { TooltipInfoComponent } from './components/tooltip-info/tooltip-info.component';
|
|
6
|
+
import { TooltipInfoSimpleComponent } from './components/tooltip-info-simple/tooltip-info-simple.component';
|
|
7
|
+
import { TooltipNoBodyComponent } from './components/tooltip-no-body/tooltip-no-body.component';
|
|
8
|
+
import { TooltipProcessDefaultComponent } from './components/tooltip-process-default/tooltip-process-default.component';
|
|
9
|
+
const TOOLTIP_COMPONENTS = [
|
|
10
|
+
TooltipInfoComponent,
|
|
11
|
+
TooltipInfoSimpleComponent,
|
|
12
|
+
TooltipNoBodyComponent,
|
|
13
|
+
TooltipProcessDefaultComponent
|
|
14
|
+
];
|
|
15
|
+
export class DrTooltipModule {
|
|
16
|
+
}
|
|
17
|
+
DrTooltipModule.decorators = [
|
|
18
|
+
{ type: NgModule, args: [{
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule
|
|
21
|
+
],
|
|
22
|
+
exports: [
|
|
23
|
+
TooltipComponent,
|
|
24
|
+
DrTooltipDirective,
|
|
25
|
+
...TOOLTIP_COMPONENTS
|
|
26
|
+
],
|
|
27
|
+
providers: [],
|
|
28
|
+
declarations: [
|
|
29
|
+
TooltipComponent,
|
|
30
|
+
DrTooltipDirective,
|
|
31
|
+
...TOOLTIP_COMPONENTS
|
|
32
|
+
],
|
|
33
|
+
},] }
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItdG9vbHRpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10b29sdGlwL2RyLXRvb2x0aXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBRXhILE1BQU0sa0JBQWtCLEdBQUc7SUFDdkIsb0JBQW9CO0lBQ3BCLDBCQUEwQjtJQUMxQixzQkFBc0I7SUFDdEIsOEJBQThCO0NBQ2pDLENBQUM7QUFtQkYsTUFBTSxPQUFPLGVBQWU7OztZQWpCM0IsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxZQUFZO2lCQUNmO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxnQkFBZ0I7b0JBQ2hCLGtCQUFrQjtvQkFDbEIsR0FBRyxrQkFBa0I7aUJBQ3hCO2dCQUNELFNBQVMsRUFBRSxFQUFFO2dCQUNiLFlBQVksRUFBRTtvQkFDVixnQkFBZ0I7b0JBQ2hCLGtCQUFrQjtvQkFDbEIsR0FBRyxrQkFBa0I7aUJBQ3hCO2FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9kci10b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9kci10b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVG9vbHRpcEluZm9Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbHRpcC1pbmZvL3Rvb2x0aXAtaW5mby5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcEluZm9TaW1wbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbHRpcC1pbmZvLXNpbXBsZS90b29sdGlwLWluZm8tc2ltcGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwTm9Cb2R5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rvb2x0aXAtbm8tYm9keS90b29sdGlwLW5vLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBQcm9jZXNzRGVmYXVsdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sdGlwLXByb2Nlc3MtZGVmYXVsdC90b29sdGlwLXByb2Nlc3MtZGVmYXVsdC5jb21wb25lbnQnO1xuXG5jb25zdCBUT09MVElQX0NPTVBPTkVOVFMgPSBbXG4gICAgVG9vbHRpcEluZm9Db21wb25lbnQsXG4gICAgVG9vbHRpcEluZm9TaW1wbGVDb21wb25lbnQsXG4gICAgVG9vbHRpcE5vQm9keUNvbXBvbmVudCxcbiAgICBUb29sdGlwUHJvY2Vzc0RlZmF1bHRDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgRHJUb29sdGlwRGlyZWN0aXZlLFxuICAgICAgICAuLi5UT09MVElQX0NPTVBPTkVOVFNcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW10sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgICAgIERyVG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgLi4uVE9PTFRJUF9DT01QT05FTlRTXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBEclRvb2x0aXBNb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { isNil, includes } from 'lodash';
|
|
3
|
+
import { TreeviewI18n } from '../../models/treeview-i18n';
|
|
4
|
+
import { TreeviewItem } from '../../models/treeview-item';
|
|
5
|
+
import { TreeviewConfig } from '../../models/treeview-config';
|
|
6
|
+
import { TreeviewHelper } from '../../helpers/treeview-helper';
|
|
7
|
+
import { TreeviewEventParser } from '../../helpers/treeview-event-parser';
|
|
8
|
+
class FilterTreeviewItem extends TreeviewItem {
|
|
9
|
+
constructor(item) {
|
|
10
|
+
super({
|
|
11
|
+
text: item.text,
|
|
12
|
+
value: item.value,
|
|
13
|
+
disabled: item.disabled,
|
|
14
|
+
checked: item.checked,
|
|
15
|
+
collapsed: item.collapsed,
|
|
16
|
+
children: item.children
|
|
17
|
+
});
|
|
18
|
+
this.refItem = item;
|
|
19
|
+
}
|
|
20
|
+
updateRefChecked() {
|
|
21
|
+
this.children.forEach(child => {
|
|
22
|
+
if (child instanceof FilterTreeviewItem) {
|
|
23
|
+
child.updateRefChecked();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
let refChecked = this.checked;
|
|
27
|
+
if (refChecked) {
|
|
28
|
+
for (const refChild of this.refItem.children) {
|
|
29
|
+
if (!refChild.checked) {
|
|
30
|
+
refChecked = false;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
this.refItem.checked = refChecked;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class TreeviewComponent {
|
|
39
|
+
constructor(i18n, defaultConfig, eventParser) {
|
|
40
|
+
this.i18n = i18n;
|
|
41
|
+
this.defaultConfig = defaultConfig;
|
|
42
|
+
this.eventParser = eventParser;
|
|
43
|
+
this.selectedChange = new EventEmitter();
|
|
44
|
+
this.filterChange = new EventEmitter();
|
|
45
|
+
this.filterText = '';
|
|
46
|
+
this.config = this.defaultConfig;
|
|
47
|
+
this.allItem = new TreeviewItem({ text: 'All', value: undefined });
|
|
48
|
+
}
|
|
49
|
+
get hasFilterItems() {
|
|
50
|
+
return !isNil(this.filterItems) && this.filterItems.length > 0;
|
|
51
|
+
}
|
|
52
|
+
get maxHeight() {
|
|
53
|
+
return `${this.config.maxHeight}`;
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.createHeaderTemplateContext();
|
|
57
|
+
this.generateSelection();
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
const itemsSimpleChange = changes.items;
|
|
61
|
+
if (!isNil(itemsSimpleChange) && !isNil(this.items)) {
|
|
62
|
+
this.updateFilterItems();
|
|
63
|
+
this.updateCollapsedOfAll();
|
|
64
|
+
this.raiseSelectedChange();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
onAllCollapseExpand() {
|
|
68
|
+
this.allItem.collapsed = !this.allItem.collapsed;
|
|
69
|
+
this.filterItems.forEach(item => item.setCollapsedRecursive(this.allItem.collapsed));
|
|
70
|
+
}
|
|
71
|
+
onFilterTextChange(text) {
|
|
72
|
+
this.filterText = text;
|
|
73
|
+
this.filterChange.emit(text);
|
|
74
|
+
this.updateFilterItems();
|
|
75
|
+
}
|
|
76
|
+
onAllCheckedChange() {
|
|
77
|
+
const checked = this.allItem.checked;
|
|
78
|
+
this.filterItems.forEach(item => {
|
|
79
|
+
item.setCheckedRecursive(checked);
|
|
80
|
+
if (item instanceof FilterTreeviewItem) {
|
|
81
|
+
item.updateRefChecked();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
this.raiseSelectedChange();
|
|
85
|
+
}
|
|
86
|
+
onItemCheckedChange(item, checked) {
|
|
87
|
+
if (item instanceof FilterTreeviewItem) {
|
|
88
|
+
item.updateRefChecked();
|
|
89
|
+
}
|
|
90
|
+
this.updateCheckedOfAll();
|
|
91
|
+
this.raiseSelectedChange();
|
|
92
|
+
}
|
|
93
|
+
raiseSelectedChange() {
|
|
94
|
+
this.generateSelection();
|
|
95
|
+
const values = this.eventParser.getSelectedChange(this);
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
this.selectedChange.emit(values);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
createHeaderTemplateContext() {
|
|
101
|
+
this.headerTemplateContext = {
|
|
102
|
+
config: this.config,
|
|
103
|
+
item: this.allItem,
|
|
104
|
+
onCheckedChange: () => this.onAllCheckedChange(),
|
|
105
|
+
onCollapseExpand: () => this.onAllCollapseExpand(),
|
|
106
|
+
onFilterTextChange: (text) => this.onFilterTextChange(text)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
generateSelection() {
|
|
110
|
+
let checkedItems = [];
|
|
111
|
+
let uncheckedItems = [];
|
|
112
|
+
if (!isNil(this.items)) {
|
|
113
|
+
const selection = TreeviewHelper.concatSelection(this.items, checkedItems, uncheckedItems);
|
|
114
|
+
checkedItems = selection.checked;
|
|
115
|
+
uncheckedItems = selection.unchecked;
|
|
116
|
+
}
|
|
117
|
+
this.selection = {
|
|
118
|
+
checkedItems,
|
|
119
|
+
uncheckedItems
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
updateFilterItems() {
|
|
123
|
+
if (this.filterText !== '') {
|
|
124
|
+
const filterItems = [];
|
|
125
|
+
const filterText = this.filterText.toLowerCase();
|
|
126
|
+
this.items.forEach(item => {
|
|
127
|
+
const newItem = this.filterItem(item, filterText);
|
|
128
|
+
if (!isNil(newItem)) {
|
|
129
|
+
filterItems.push(newItem);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
this.filterItems = filterItems;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.filterItems = this.items;
|
|
136
|
+
}
|
|
137
|
+
this.updateCheckedOfAll();
|
|
138
|
+
}
|
|
139
|
+
filterItem(item, filterText) {
|
|
140
|
+
const isMatch = includes(item.text.toLowerCase(), filterText);
|
|
141
|
+
if (isMatch) {
|
|
142
|
+
return item;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
if (!isNil(item.children)) {
|
|
146
|
+
const children = [];
|
|
147
|
+
item.children.forEach(child => {
|
|
148
|
+
const newChild = this.filterItem(child, filterText);
|
|
149
|
+
if (!isNil(newChild)) {
|
|
150
|
+
children.push(newChild);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (children.length > 0) {
|
|
154
|
+
const newItem = new FilterTreeviewItem(item);
|
|
155
|
+
newItem.collapsed = false;
|
|
156
|
+
newItem.children = children;
|
|
157
|
+
return newItem;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
updateCheckedOfAll() {
|
|
164
|
+
let itemChecked = null;
|
|
165
|
+
for (const filterItem of this.filterItems) {
|
|
166
|
+
if (itemChecked === null) {
|
|
167
|
+
itemChecked = filterItem.checked;
|
|
168
|
+
}
|
|
169
|
+
else if (itemChecked !== filterItem.checked) {
|
|
170
|
+
itemChecked = undefined;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (itemChecked === null) {
|
|
175
|
+
itemChecked = false;
|
|
176
|
+
}
|
|
177
|
+
this.allItem.checked = itemChecked;
|
|
178
|
+
}
|
|
179
|
+
updateCollapsedOfAll() {
|
|
180
|
+
let hasItemExpanded = false;
|
|
181
|
+
for (const filterItem of this.filterItems) {
|
|
182
|
+
if (!filterItem.collapsed) {
|
|
183
|
+
hasItemExpanded = true;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
this.allItem.collapsed = !hasItemExpanded;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
TreeviewComponent.decorators = [
|
|
191
|
+
{ type: Component, args: [{
|
|
192
|
+
selector: 'ngx-treeview',
|
|
193
|
+
template: "<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n",
|
|
194
|
+
styles: [":host .treeview-header .row-filter{margin-bottom:.5rem}:host .treeview-header .row-all .bi{cursor:pointer}:host .treeview-container .row-item{margin-bottom:.3rem;flex-wrap:nowrap}:host .treeview-container .row-item .bi{cursor:pointer;margin-right:.3rem}.treeview-container{overflow-y:auto;padding-right:.3rem}.treeview-text{padding:.3rem 0;white-space:nowrap}\n"]
|
|
195
|
+
},] }
|
|
196
|
+
];
|
|
197
|
+
TreeviewComponent.ctorParameters = () => [
|
|
198
|
+
{ type: TreeviewI18n },
|
|
199
|
+
{ type: TreeviewConfig },
|
|
200
|
+
{ type: TreeviewEventParser }
|
|
201
|
+
];
|
|
202
|
+
TreeviewComponent.propDecorators = {
|
|
203
|
+
headerTemplate: [{ type: Input }],
|
|
204
|
+
itemTemplate: [{ type: Input }],
|
|
205
|
+
items: [{ type: Input }],
|
|
206
|
+
config: [{ type: Input }],
|
|
207
|
+
selectedChange: [{ type: Output }],
|
|
208
|
+
filterChange: [{ type: Output }]
|
|
209
|
+
};
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdHJlZXZpZXcvY29tcG9uZW50cy90cmVldmlldy90cmVldmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUQsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUUxRSxNQUFNLGtCQUFtQixTQUFRLFlBQVk7SUFFM0MsWUFBWSxJQUFrQjtRQUM1QixLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxL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LE1BQU07YUFDUDtTQUNGO1FBRUQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQ3hCLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDNUIsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO2dCQUN6QixlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixNQUFNO2FBQ1A7U0FDRjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQzVDLENBQUM7OztZQXpMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLDJtS0FBd0M7O2FBRXpDOzs7WUE5Q1EsWUFBWTtZQUVaLGNBQWM7WUFJZCxtQkFBbUI7Ozs2QkEwQ3pCLEtBQUs7MkJBQ0wsS0FBSztvQkFDTCxLQUFLO3FCQUNMLEtBQUs7NkJBQ0wsTUFBTTsyQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgVGVtcGxhdGVSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwsIGluY2x1ZGVzIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRyZWV2aWV3STE4biB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1pMThuJztcbmltcG9ydCB7IFRyZWV2aWV3SXRlbSwgVHJlZXZpZXdTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaXRlbSc7XG5pbXBvcnQgeyBUcmVldmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1jb25maWcnO1xuaW1wb3J0IHsgVHJlZXZpZXdIZWFkZXJUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaGVhZGVyLXRlbXBsYXRlLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJlZXZpZXdJdGVtVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0tdGVtcGxhdGUtY29udGV4dCc7XG5pbXBvcnQgeyBUcmVldmlld0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdHJlZXZpZXctaGVscGVyJztcbmltcG9ydCB7IFRyZWV2aWV3RXZlbnRQYXJzZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3RyZWV2aWV3LWV2ZW50LXBhcnNlcic7XG5cbmNsYXNzIEZpbHRlclRyZWV2aWV3SXRlbSBleHRlbmRzIFRyZWV2aWV3SXRlbSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmSXRlbTogVHJlZXZpZXdJdGVtO1xuICBjb25zdHJ1Y3RvcihpdGVtOiBUcmVldmlld0l0ZW0pIHtcbiAgICBzdXBlcih7XG4gICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkLFxuICAgICAgY2hlY2tlZDogaXRlbS5jaGVja2VkLFxuICAgICAgY29sbGFwc2VkOiBpdGVtLmNvbGxhcHNlZCxcbiAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuXG4gICAgfSk7XG4gICAgdGhpcy5yZWZJdGVtID0gaXRlbTtcbiAgfVxuXG4gIHVwZGF0ZVJlZkNoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEZpbHRlclRyZWV2aWV3SXRlbSkge1xuICAgICAgICBjaGlsZC51cGRhdGVSZWZDaGVja2VkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgcmVmQ2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICBpZiAocmVmQ2hlY2tlZCkge1xuICAgICAgZm9yIChjb25zdCByZWZDaGlsZCBvZiB0aGlzLnJlZkl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKCFyZWZDaGlsZC5jaGVja2VkKSB7XG4gICAgICAgICAgcmVmQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmSXRlbS5jaGVja2VkID0gcmVmQ2hlY2tlZDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdHJlZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVldmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRyZWV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHJlZXZpZXdIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFRyZWV2aWV3SXRlbVRlbXBsYXRlQ29udGV4dD47XG4gIEBJbnB1dCgpIGl0ZW1zOiBUcmVldmlld0l0ZW1bXTtcbiAgQElucHV0KCkgY29uZmlnOiBUcmVldmlld0NvbmZpZztcbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBoZWFkZXJUZW1wbGF0ZUNvbnRleHQ6IFRyZWV2aWV3SGVhZGVyVGVtcGxhdGVDb250ZXh0O1xuICBhbGxJdGVtOiBUcmVldmlld0l0ZW07XG4gIGZpbHRlclRleHQgPSAnJztcbiAgZmlsdGVySXRlbXM6IFRyZWV2aWV3SXRlbVtdO1xuICBzZWxlY3Rpb246IFRyZWV2aWV3U2VsZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpMThuOiBUcmVldmlld0kxOG4sXG4gICAgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnOiBUcmVldmlld0NvbmZpZyxcbiAgICBwcml2YXRlIGV2ZW50UGFyc2VyOiBUcmVldmlld0V2ZW50UGFyc2VyXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xuICAgIHRoaXMuYWxsSXRlbSA9IG5ldyBUcmVldmlld0l0ZW0oeyB0ZXh0OiAnQWxsJywgdmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgfVxuXG4gIGdldCBoYXNGaWx0ZXJJdGVtcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmlsKHRoaXMuZmlsdGVySXRlbXMpICYmIHRoaXMuZmlsdGVySXRlbXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBtYXhIZWlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcubWF4SGVpZ2h0fWA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUhlYWRlclRlbXBsYXRlQ29udGV4dCgpO1xuICAgIHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtc1NpbXBsZUNoYW5nZSA9IGNoYW5nZXMuaXRlbXM7XG4gICAgaWYgKCFpc05pbChpdGVtc1NpbXBsZUNoYW5nZSkgJiYgIWlzTmlsKHRoaXMuaXRlbXMpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlckl0ZW1zKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZE9mQWxsKCk7XG4gICAgICB0aGlzLnJhaXNlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBvbkFsbENvbGxhcHNlRXhwYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuYWxsSXRlbS5jb2xsYXBzZWQgPSAhdGhpcy5hbGxJdGVtLmNvbGxhcHNlZDtcbiAgICB0aGlzLmZpbHRlckl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNldENvbGxhcHNlZFJlY3Vyc2l2ZSh0aGlzLmFsbEl0ZW0uY29sbGFwc2VkKSk7XG4gIH1cblxuICBvbkZpbHRlclRleHRDaGFuZ2UodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRleHQpO1xuICAgIHRoaXMudXBkYXRlRmlsdGVySXRlbXMoKTtcbiAgfVxuXG4gIG9uQWxsQ2hlY2tlZENoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjaGVja2VkID0gdGhpcy5hbGxJdGVtLmNoZWNrZWQ7XG4gICAgdGhpcy5maWx0ZXJJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zZXRDaGVja2VkUmVjdXJzaXZlKGNoZWNrZWQpO1xuICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJUcmVldmlld0l0ZW0pIHtcbiAgICAgICAgaXRlbS51cGRhdGVSZWZDaGVja2VkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJhaXNlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uSXRlbUNoZWNrZWRDaGFuZ2UoaXRlbTogVHJlZXZpZXdJdGVtLCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJUcmVldmlld0l0ZW0pIHtcbiAgICAgIGl0ZW0udXBkYXRlUmVmQ2hlY2tlZCgpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ2hlY2tlZE9mQWxsKCk7XG4gICAgdGhpcy5yYWlzZVNlbGVjdGVkQ2hhbmdlKCk7XG4gIH1cblxuICByYWlzZVNlbGVjdGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb24oKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmV2ZW50UGFyc2VyLmdldFNlbGVjdGVkQ2hhbmdlKHRoaXMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHZhbHVlcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUhlYWRlclRlbXBsYXRlQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlclRlbXBsYXRlQ29udGV4dCA9IHtcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBpdGVtOiB0aGlzLmFsbEl0ZW0sXG4gICAgICBvbkNoZWNrZWRDaGFuZ2U6ICgpID0+IHRoaXMub25BbGxDaGVja2VkQ2hhbmdlKCksXG4gICAgICBvbkNvbGxhcHNlRXhwYW5kOiAoKSA9PiB0aGlzLm9uQWxsQ29sbGFwc2VFeHBhbmQoKSxcbiAgICAgIG9uRmlsdGVyVGV4dENoYW5nZTogKHRleHQpID0+IHRoaXMub25GaWx0ZXJUZXh0Q2hhbmdlKHRleHQpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGNoZWNrZWRJdGVtczogVHJlZXZpZXdJdGVtW10gPSBbXTtcbiAgICBsZXQgdW5jaGVja2VkSXRlbXM6IFRyZWV2aWV3SXRlbVtdID0gW107XG4gICAgaWYgKCFpc05pbCh0aGlzLml0ZW1zKSkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gVHJlZXZpZXdIZWxwZXIuY29uY2F0U2VsZWN0aW9uKHRoaXMuaXRlbXMsIGNoZWNrZWRJdGVtcywgdW5jaGVja2VkSXRlbXMpO1xuICAgICAgY2hlY2tlZEl0ZW1zID0gc2VsZWN0aW9uLmNoZWNrZWQ7XG4gICAgICB1bmNoZWNrZWRJdGVtcyA9IHNlbGVjdGlvbi51bmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb24gPSB7XG4gICAgICBjaGVja2VkSXRlbXMsXG4gICAgICB1bmNoZWNrZWRJdGVtc1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbHRlckl0ZW1zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlclRleHQgIT09ICcnKSB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtczogVHJlZXZpZXdJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IGZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IHRoaXMuZmlsdGVySXRlbShpdGVtLCBmaWx0ZXJUZXh0KTtcbiAgICAgICAgaWYgKCFpc05pbChuZXdJdGVtKSkge1xuICAgICAgICAgIGZpbHRlckl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWx0ZXJJdGVtcyA9IGZpbHRlckl0ZW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlckl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUNoZWNrZWRPZkFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJJdGVtKGl0ZW06IFRyZWV2aWV3SXRlbSwgZmlsdGVyVGV4dDogc3RyaW5nKTogVHJlZXZpZXdJdGVtIHtcbiAgICBjb25zdCBpc01hdGNoID0gaW5jbHVkZXMoaXRlbS50ZXh0LnRvTG93ZXJDYXNlKCksIGZpbHRlclRleHQpO1xuICAgIGlmIChpc01hdGNoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpc05pbChpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbjogVHJlZXZpZXdJdGVtW10gPSBbXTtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDaGlsZCA9IHRoaXMuZmlsdGVySXRlbShjaGlsZCwgZmlsdGVyVGV4dCk7XG4gICAgICAgICAgaWYgKCFpc05pbChuZXdDaGlsZCkpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gobmV3Q2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbSA9IG5ldyBGaWx0ZXJUcmVldmlld0l0ZW0oaXRlbSk7XG4gICAgICAgICAgbmV3SXRlbS5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgICBuZXdJdGVtLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgcmV0dXJuIG5ld0l0ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGVja2VkT2ZBbGwoKTogdm9pZCB7XG4gICAgbGV0IGl0ZW1DaGVja2VkOiBib29sZWFuID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IGZpbHRlckl0ZW0gb2YgdGhpcy5maWx0ZXJJdGVtcykge1xuICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgIGl0ZW1DaGVja2VkID0gZmlsdGVySXRlbS5jaGVja2VkO1xuICAgICAgfSBlbHNlIGlmIChpdGVtQ2hlY2tlZCAhPT0gZmlsdGVySXRlbS5jaGVja2VkKSB7XG4gICAgICAgIGl0ZW1DaGVja2VkID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXRlbUNoZWNrZWQgPT09IG51bGwpIHtcbiAgICAgIGl0ZW1DaGVja2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5hbGxJdGVtLmNoZWNrZWQgPSBpdGVtQ2hlY2tlZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sbGFwc2VkT2ZBbGwoKTogdm9pZCB7XG4gICAgbGV0IGhhc0l0ZW1FeHBhbmRlZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgZmlsdGVySXRlbSBvZiB0aGlzLmZpbHRlckl0ZW1zKSB7XG4gICAgICBpZiAoIWZpbHRlckl0ZW0uY29sbGFwc2VkKSB7XG4gICAgICAgIGhhc0l0ZW1FeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYWxsSXRlbS5jb2xsYXBzZWQgPSAhaGFzSXRlbUV4cGFuZGVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { isNil } from 'lodash';
|
|
3
|
+
import { TreeviewConfig } from '../../models/treeview-config';
|
|
4
|
+
export class TreeviewItemComponent {
|
|
5
|
+
constructor(defaultConfig) {
|
|
6
|
+
this.defaultConfig = defaultConfig;
|
|
7
|
+
this.checkedChange = new EventEmitter();
|
|
8
|
+
this.onCollapseExpand = () => {
|
|
9
|
+
this.item.collapsed = !this.item.collapsed;
|
|
10
|
+
};
|
|
11
|
+
this.onCheckedChange = () => {
|
|
12
|
+
const checked = this.item.checked;
|
|
13
|
+
if (!isNil(this.item.children) && !this.config.decoupleChildFromParent) {
|
|
14
|
+
this.item.children.forEach(child => child.setCheckedRecursive(checked));
|
|
15
|
+
}
|
|
16
|
+
this.checkedChange.emit(checked);
|
|
17
|
+
};
|
|
18
|
+
this.config = this.defaultConfig;
|
|
19
|
+
}
|
|
20
|
+
onChildCheckedChange(child, checked) {
|
|
21
|
+
if (!this.config.decoupleChildFromParent) {
|
|
22
|
+
let itemChecked = null;
|
|
23
|
+
for (const childItem of this.item.children) {
|
|
24
|
+
if (itemChecked === null) {
|
|
25
|
+
itemChecked = childItem.checked;
|
|
26
|
+
}
|
|
27
|
+
else if (itemChecked !== childItem.checked) {
|
|
28
|
+
itemChecked = undefined;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (itemChecked === null) {
|
|
33
|
+
itemChecked = false;
|
|
34
|
+
}
|
|
35
|
+
if (this.item.checked !== itemChecked) {
|
|
36
|
+
this.item.checked = itemChecked;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.checkedChange.emit(checked);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
TreeviewItemComponent.decorators = [
|
|
43
|
+
{ type: Component, args: [{
|
|
44
|
+
selector: 'ngx-treeview-item',
|
|
45
|
+
template: "<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n",
|
|
46
|
+
styles: [":host{display:block}:host .treeview-item{white-space:nowrap}:host .treeview-item .treeview-item{margin-left:2rem}\n"]
|
|
47
|
+
},] }
|
|
48
|
+
];
|
|
49
|
+
TreeviewItemComponent.ctorParameters = () => [
|
|
50
|
+
{ type: TreeviewConfig }
|
|
51
|
+
];
|
|
52
|
+
TreeviewItemComponent.propDecorators = {
|
|
53
|
+
config: [{ type: Input }],
|
|
54
|
+
template: [{ type: Input }],
|
|
55
|
+
item: [{ type: Input }],
|
|
56
|
+
checkedChange: [{ type: Output }]
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10cmVldmlldy9jb21wb25lbnRzL3RyZWV2aWV3LWl0ZW0vdHJlZXZpZXctaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVE5RCxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLFlBQ1UsYUFBNkI7UUFBN0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBSDdCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVF0RCxxQkFBZ0IsR0FBRyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QyxDQUFDLENBQUE7UUFFRCxvQkFBZSxHQUFHLEdBQUcsRUFBRTtZQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFO2dCQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUN6RTtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQTtRQWJDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNuQyxDQUFDO0lBY0Qsb0JBQW9CLENBQUMsS0FBbUIsRUFBRSxPQUFnQjtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRTtZQUN4QyxJQUFJLFdBQVcsR0FBWSxJQUFJLENBQUM7WUFDaEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDMUMsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO29CQUN4QixXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztpQkFDakM7cUJBQU0sSUFBSSxXQUFXLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRTtvQkFDNUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztvQkFDeEIsTUFBTTtpQkFDUDthQUNGO1lBRUQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO2dCQUN4QixXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQ3JCO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQzthQUNqQztTQUVGO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7O1lBcERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qiw2ZkFBNkM7O2FBRTlDOzs7WUFQUSxjQUFjOzs7cUJBU3BCLEtBQUs7dUJBQ0wsS0FBSzttQkFDTCxLQUFLOzRCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRyZWV2aWV3SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1pdGVtJztcbmltcG9ydCB7IFRyZWV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWNvbmZpZyc7XG5pbXBvcnQgeyBUcmVldmlld0l0ZW1UZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaXRlbS10ZW1wbGF0ZS1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXRyZWV2aWV3LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZXZpZXctaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWV2aWV3LWl0ZW0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVldmlld0l0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKSBjb25maWc6IFRyZWV2aWV3Q29uZmlnO1xuICBASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHJlZXZpZXdJdGVtVGVtcGxhdGVDb250ZXh0PjtcbiAgQElucHV0KCkgaXRlbTogVHJlZXZpZXdJdGVtO1xuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFRyZWV2aWV3Q29uZmlnXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xuICB9XG5cbiAgb25Db2xsYXBzZUV4cGFuZCA9ICgpID0+IHtcbiAgICB0aGlzLml0ZW0uY29sbGFwc2VkID0gIXRoaXMuaXRlbS5jb2xsYXBzZWQ7XG4gIH1cblxuICBvbkNoZWNrZWRDaGFuZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgY2hlY2tlZCA9IHRoaXMuaXRlbS5jaGVja2VkO1xuICAgIGlmICghaXNOaWwodGhpcy5pdGVtLmNoaWxkcmVuKSAmJiAhdGhpcy5jb25maWcuZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQpIHtcbiAgICAgIHRoaXMuaXRlbS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnNldENoZWNrZWRSZWN1cnNpdmUoY2hlY2tlZCkpO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgfVxuXG4gIG9uQ2hpbGRDaGVja2VkQ2hhbmdlKGNoaWxkOiBUcmVldmlld0l0ZW0sIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlY291cGxlQ2hpbGRGcm9tUGFyZW50KSB7XG4gICAgICBsZXQgaXRlbUNoZWNrZWQ6IGJvb2xlYW4gPSBudWxsO1xuICAgICAgZm9yIChjb25zdCBjaGlsZEl0ZW0gb2YgdGhpcy5pdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChpdGVtQ2hlY2tlZCA9PT0gbnVsbCkge1xuICAgICAgICAgIGl0ZW1DaGVja2VkID0gY2hpbGRJdGVtLmNoZWNrZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbUNoZWNrZWQgIT09IGNoaWxkSXRlbS5jaGVja2VkKSB7XG4gICAgICAgICAgaXRlbUNoZWNrZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgIGl0ZW1DaGVja2VkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW0uY2hlY2tlZCAhPT0gaXRlbUNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5pdGVtLmNoZWNrZWQgPSBpdGVtQ2hlY2tlZDtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGNoZWNrZWQpO1xuICB9XG59XG4iXX0=
|