@energycap/components 0.31.5 → 0.32.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/energycap-components.min.css +2 -2
- package/energycap-email.min.css +1 -1
- package/esm2020/energycap-components.mjs +5 -0
- package/esm2020/lib/components.module.mjs +386 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
- package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
- package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
- package/esm2020/lib/controls/form-control-base.mjs +143 -0
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
- package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
- package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
- package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
- package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
- package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
- package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
- package/esm2020/lib/controls/select/select.component.mjs +87 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
- package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
- package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
- package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
- package/esm2020/lib/core/error.service.mjs +57 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
- package/esm2020/lib/core/telemetry.service.mjs +38 -0
- package/esm2020/lib/core/validation-message.service.mjs +181 -0
- package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
- package/esm2020/lib/core/window.service.mjs +182 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
- package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
- package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
- package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
- package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
- package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
- package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/esm2020/lib/display/splash/splash.service.mjs +35 -0
- package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
- package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
- package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +244 -0
- package/esm2020/lib/display/tags/tag.mjs +15 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
- package/esm2020/lib/display/toast/toast.service.mjs +35 -0
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
- package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
- package/esm2020/lib/display/tree/tree.component.mjs +125 -0
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
- package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
- package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
- package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
- package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
- package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
- package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
- package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
- package/esm2020/lib/shared/user-preference.service.mjs +17 -0
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
- package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/energycap-components.mjs +10090 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/fesm2020/energycap-components.mjs +9999 -0
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components.module.d.ts +72 -0
- package/lib/controls/banner/banner.component.d.ts +3 -0
- package/lib/controls/button/button.component.d.ts +3 -0
- package/lib/controls/button/copy-button.directive.d.ts +3 -0
- package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
- package/lib/controls/combobox/combobox.component.d.ts +5 -2
- package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
- package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
- package/lib/controls/form-control/form-control.component.d.ts +3 -0
- package/lib/controls/form-control-base.d.ts +3 -0
- package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
- package/lib/controls/form-group/form-group.component.d.ts +6 -3
- package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
- package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
- package/lib/controls/link-button/link-button.component.d.ts +3 -0
- package/lib/controls/menu/menu.component.d.ts +3 -0
- package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
- package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
- package/lib/controls/popover/popover.component.d.ts +3 -0
- package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
- package/lib/controls/select/select.component.d.ts +3 -0
- package/lib/controls/tabs/tabs.component.d.ts +3 -0
- package/lib/controls/textbox/textbox.component.d.ts +3 -0
- package/lib/core/cache.service.d.ts +3 -0
- package/lib/core/error.service.d.ts +3 -0
- package/lib/core/scroll.service.d.ts +3 -0
- package/lib/core/telemetry-tracker.service.d.ts +3 -0
- package/lib/core/telemetry.service.d.ts +3 -0
- package/lib/core/validation-message.service.d.ts +3 -0
- package/lib/core/window.service.d.ts +3 -0
- package/lib/display/app-bar/app-bar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.service.d.ts +3 -0
- package/lib/display/confirm/confirm.component.d.ts +5 -2
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
- package/lib/display/dialog/dialog.component.d.ts +3 -0
- package/lib/display/dialog/dialog.service.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
- package/lib/display/item-display/item-display.component.d.ts +3 -0
- package/lib/display/json-display/json-display.component.d.ts +5 -2
- package/lib/display/resizable/resizable-base.d.ts +3 -0
- package/lib/display/resizable/resizable.component.d.ts +3 -0
- package/lib/display/spinner/spinner.component.d.ts +3 -0
- package/lib/display/splash/splash.component.d.ts +3 -0
- package/lib/display/splash/splash.service.d.ts +3 -0
- package/lib/display/table/resizable-column.component.d.ts +3 -0
- package/lib/display/table/resizable-table.directive.d.ts +3 -0
- package/lib/display/table/searchable-table.component.d.ts +6 -3
- package/lib/display/table/table-detail-row.component.d.ts +3 -0
- package/lib/display/table/table-locked-column.component.d.ts +3 -0
- package/lib/display/table/table-master-header-row.component.d.ts +3 -0
- package/lib/display/table/table-master-row.component.d.ts +3 -0
- package/lib/display/table/table-pagination.component.d.ts +3 -0
- package/lib/display/table/table-selectable-row.component.d.ts +5 -2
- package/lib/display/table/table.component.d.ts +3 -0
- package/lib/display/tags/tags.component.d.ts +3 -0
- package/lib/display/toast/toast/toast.component.d.ts +3 -0
- package/lib/display/toast/toast.service.d.ts +3 -0
- package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.service.d.ts +3 -0
- package/lib/display/tree/tree.component.d.ts +3 -0
- package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
- package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
- package/lib/shared/form-group.helper.d.ts +5 -2
- package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
- package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
- package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
- package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
- package/lib/shared/user-preference.service.d.ts +3 -0
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
- package/package.json +27 -15
- package/src/styles/_functions.scss +6 -4
- package/src/styles/_icons.scss +1 -1
- package/src/styles/mixins/_control-base.scss +2 -2
- package/src/styles/mixins/_form-control-base.scss +3 -1
- package/src/styles/mixins/_spinner-base.scss +3 -1
- package/bundles/energycap-components.umd.js +0 -10646
- package/bundles/energycap-components.umd.js.map +0 -1
- package/bundles/energycap-components.umd.min.js +0 -17
- package/bundles/energycap-components.umd.min.js.map +0 -1
- package/energycap-components.d.ts +0 -7
- package/energycap-components.metadata.json +0 -1
- package/esm2015/energycap-components.js +0 -8
- package/esm2015/lib/components.module.js +0 -238
- package/esm2015/lib/controls/banner/banner.component.js +0 -94
- package/esm2015/lib/controls/button/button.component.js +0 -89
- package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
- package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
- package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
- package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
- package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
- package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
- package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
- package/esm2015/lib/controls/form-control-base.js +0 -140
- package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
- package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
- package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
- package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
- package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
- package/esm2015/lib/controls/menu/menu.component.js +0 -424
- package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
- package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
- package/esm2015/lib/controls/popover/popover.component.js +0 -85
- package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
- package/esm2015/lib/controls/select/select.component.js +0 -89
- package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
- package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
- package/esm2015/lib/core/error.service.js +0 -56
- package/esm2015/lib/core/scroll.service.js +0 -88
- package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
- package/esm2015/lib/core/telemetry.service.js +0 -40
- package/esm2015/lib/core/validation-message.service.js +0 -185
- package/esm2015/lib/core/window.service.js +0 -191
- package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
- package/esm2015/lib/display/avatar/avatar.component.js +0 -73
- package/esm2015/lib/display/confirm/confirm.component.js +0 -127
- package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
- package/esm2015/lib/display/dialog/dialog.component.js +0 -229
- package/esm2015/lib/display/dialog/dialog.service.js +0 -69
- package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
- package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
- package/esm2015/lib/display/item-display/item-display.component.js +0 -57
- package/esm2015/lib/display/json-display/json-display.component.js +0 -44
- package/esm2015/lib/display/resizable/resizable-base.js +0 -119
- package/esm2015/lib/display/resizable/resizable.component.js +0 -57
- package/esm2015/lib/display/spinner/spinner.component.js +0 -12
- package/esm2015/lib/display/splash/splash.component.js +0 -45
- package/esm2015/lib/display/splash/splash.service.js +0 -34
- package/esm2015/lib/display/table/resizable-column.component.js +0 -23
- package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
- package/esm2015/lib/display/table/searchable-table.component.js +0 -303
- package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
- package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
- package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
- package/esm2015/lib/display/table/table-master-row.component.js +0 -141
- package/esm2015/lib/display/table/table-pagination.component.js +0 -146
- package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
- package/esm2015/lib/display/table/table.component.js +0 -210
- package/esm2015/lib/display/tags/tag.js +0 -15
- package/esm2015/lib/display/tags/tags.component.js +0 -73
- package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
- package/esm2015/lib/display/toast/toast.service.js +0 -34
- package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
- package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
- package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
- package/esm2015/lib/display/tree/tree.component.js +0 -100
- package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
- package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
- package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
- package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
- package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
- package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
- package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
- package/esm2015/lib/shared/form-group.helper.js +0 -65
- package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
- package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
- package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
- package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
- package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
- package/esm2015/lib/shared/user-preference.service.js +0 -15
- package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
- package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
- package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
- package/fesm2015/energycap-components.js +0 -9638
- package/fesm2015/energycap-components.js.map +0 -1
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { WindowService } from '../../../core/window.service';
|
|
5
|
-
/**
|
|
6
|
-
* Conditionally include content in the DOM based on the width of the viewport. Use to programmatically implement reponsive layouts and prevent duplicate markup and listeners.
|
|
7
|
-
* In most scenarios CSS media queries is sufficient to hide/show elements responsively. However, in some cases media queries would result in duplicate markup and listeners
|
|
8
|
-
* that could cause undesired side effects and it is preferred to us programmatic elements to achieve the layout.
|
|
9
|
-
*/
|
|
10
|
-
export class IfViewportWidthDirective {
|
|
11
|
-
constructor(viewContainer, templateRef, windowService) {
|
|
12
|
-
this.viewContainer = viewContainer;
|
|
13
|
-
this.templateRef = templateRef;
|
|
14
|
-
this.windowService = windowService;
|
|
15
|
-
/**
|
|
16
|
-
* Used to unsubscribe when the directive is removed from the DOM
|
|
17
|
-
*/
|
|
18
|
-
this.destroyed = new Subject();
|
|
19
|
-
/**
|
|
20
|
-
* Internally tracks whether the directive and its content is included in the DOM
|
|
21
|
-
*/
|
|
22
|
-
this.isVisible = false;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
// Window may not available if this code is not being run on a browser platform.
|
|
26
|
-
// If there is no window or innerWidth abort initialization
|
|
27
|
-
if (this.windowService.innerWidth === undefined) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
// Check for required values. If none are set, log error and abort initialization
|
|
31
|
-
if (!this.width) {
|
|
32
|
-
console.error(`A min or max width was not provided. Provide a value for 'min' or 'max' by assigning a single value or object to the directive. E.g. *ecIfViewportWidth="800" (assigned to min) or *ecIfViewportWidth="{min: 800, max: 1280}"`);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
else if (typeof this.width === 'number') {
|
|
36
|
-
this.minWidth = this.width;
|
|
37
|
-
}
|
|
38
|
-
else if (this.width !== undefined) {
|
|
39
|
-
this.minWidth = this.width.min;
|
|
40
|
-
this.maxWidth = this.width.max;
|
|
41
|
-
}
|
|
42
|
-
if (this.windowService.resized) {
|
|
43
|
-
this.windowService.resized.pipe(debounceTime(100), takeUntil(this.destroyed)).subscribe(() => {
|
|
44
|
-
this.updateVisibility();
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
this.updateVisibility();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the current viewport width and determin if the directive's content should be
|
|
51
|
-
* included in the DOM based on the min and max width settings
|
|
52
|
-
*/
|
|
53
|
-
updateVisibility() {
|
|
54
|
-
const viewportWidth = this.windowService.innerWidth;
|
|
55
|
-
if (this.minWidth !== undefined && this.maxWidth !== undefined) {
|
|
56
|
-
if (viewportWidth >= this.minWidth && viewportWidth <= this.maxWidth) {
|
|
57
|
-
this.show();
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
this.hide();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else if (this.minWidth !== undefined) {
|
|
64
|
-
if (viewportWidth >= this.minWidth) {
|
|
65
|
-
this.show();
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this.hide();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else if (this.maxWidth !== undefined) {
|
|
72
|
-
if (viewportWidth <= this.maxWidth) {
|
|
73
|
-
this.show();
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.hide();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Add the directive's content to the DOM
|
|
82
|
-
*/
|
|
83
|
-
show() {
|
|
84
|
-
if (!this.isVisible) {
|
|
85
|
-
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
86
|
-
this.isVisible = true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Remove the directive's content from the DOM
|
|
91
|
-
*/
|
|
92
|
-
hide() {
|
|
93
|
-
if (this.isVisible) {
|
|
94
|
-
this.viewContainer.clear();
|
|
95
|
-
this.isVisible = false;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
IfViewportWidthDirective.decorators = [
|
|
100
|
-
{ type: Directive, args: [{
|
|
101
|
-
selector: '[ecIfViewportWidth]'
|
|
102
|
-
},] }
|
|
103
|
-
];
|
|
104
|
-
IfViewportWidthDirective.ctorParameters = () => [
|
|
105
|
-
{ type: ViewContainerRef },
|
|
106
|
-
{ type: TemplateRef },
|
|
107
|
-
{ type: WindowService }
|
|
108
|
-
];
|
|
109
|
-
IfViewportWidthDirective.propDecorators = {
|
|
110
|
-
width: [{ type: Input, args: ['ecIfViewportWidth',] }]
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtdmlld3BvcnQtd2lkdGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2lmLXZpZXdwb3J0LXdpZHRoL2lmLXZpZXdwb3J0LXdpZHRoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQWtDbkMsWUFDVSxhQUErQixFQUMvQixXQUE2QixFQUM3QixhQUE0QjtRQUY1QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBYnRDOztXQUVHO1FBQ0ssY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpEOztXQUVHO1FBQ0ssY0FBUyxHQUFZLEtBQUssQ0FBQztJQU0vQixDQUFDO0lBRUUsUUFBUTtRQUNiLGlGQUFpRjtRQUNqRiwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTztTQUNSO1FBRUQsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK05BQStOLENBQUMsQ0FBQztZQUMvTyxPQUFPO1NBQ1I7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzVCO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBRSxHQUFHLEVBQUU7Z0JBQzVGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVyxDQUFDO1FBRXJELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDOUQsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7U0FDRjtJQUVILENBQUM7SUFFRDs7T0FFRztJQUNLLElBQUk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLElBQUk7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNILENBQUM7OztZQXBIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjthQUNoQzs7O1lBWmtDLGdCQUFnQjtZQUFFLFdBQVc7WUFHdkQsYUFBYTs7O29CQXNCbkIsS0FBSyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvd2luZG93LnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIENvbmRpdGlvbmFsbHkgaW5jbHVkZSBjb250ZW50IGluIHRoZSBET00gYmFzZWQgb24gdGhlIHdpZHRoIG9mIHRoZSB2aWV3cG9ydC4gVXNlIHRvIHByb2dyYW1tYXRpY2FsbHkgaW1wbGVtZW50IHJlcG9uc2l2ZSBsYXlvdXRzIGFuZCBwcmV2ZW50IGR1cGxpY2F0ZSBtYXJrdXAgYW5kIGxpc3RlbmVycy5cclxuICogSW4gbW9zdCBzY2VuYXJpb3MgQ1NTIG1lZGlhIHF1ZXJpZXMgaXMgc3VmZmljaWVudCB0byBoaWRlL3Nob3cgZWxlbWVudHMgcmVzcG9uc2l2ZWx5LiBIb3dldmVyLCBpbiBzb21lIGNhc2VzIG1lZGlhIHF1ZXJpZXMgd291bGQgcmVzdWx0IGluIGR1cGxpY2F0ZSBtYXJrdXAgYW5kIGxpc3RlbmVyc1xyXG4gKiB0aGF0IGNvdWxkIGNhdXNlIHVuZGVzaXJlZCBzaWRlIGVmZmVjdHMgYW5kIGl0IGlzIHByZWZlcnJlZCB0byB1cyBwcm9ncmFtbWF0aWMgZWxlbWVudHMgdG8gYWNoaWV2ZSB0aGUgbGF5b3V0LlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZWNJZlZpZXdwb3J0V2lkdGhdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSWZWaWV3cG9ydFdpZHRoRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWluIGFuZCwgb3B0aW9uYWxseSwgbWF4IHdpZHRoIGluIHBpeGVscyB0aGF0IHRoZSB2aWV3cG9ydCBtdXN0IGJlIGluIG9yZGVyIHRvIGluY2x1ZGUgdGhlIGRpcmVjdGl2ZSBhbmQgaXRzIGNvbnRlbnQgaW4gdGhlIERPTS5cclxuICAgKiBBIHNpbmdsZSBudW1iZXIgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtaW4gd2lkdGgsIGJ1dCBhbiBvYmplY3Qgd2l0aCBtaW4gYW5kIG1heCBtdXN0IGJlIHVzZWQgdG8gc2V0IGEgbWluIGFuZCBtYXggd2lkdGggb3IganVzdCBhIG1heCB3aWR0aC5cclxuICAgKiBcclxuICAgKiBgYGBodG1sXHJcbiAgICogPGRpdiAqZWNJZlZpZXdwb3J0V2lkdGg9XCI1MDBcIj5Db250ZW50IHRvIHJlbmRlciBpZiB2aWV3cG9ydCB3aWR0aCBpcyA+PSA1MDBweDwvZGl2PlxyXG4gICAqIDxkaXYgKmVjSWZWaWV3cG9ydFdpZHRoPVwie21heDogODAwfVwiPkNvbnRlbnQgdG8gcmVuZGVyIGlmIHRoZSB2aWV3cG9ydCB3aWR0aCBpcyA8PSA4MDBweDwvZGl2PlxyXG4gICAqIDxkaXYgKmVjSWZWaWV3cG9ydFdpZHRoPVwie21pbjogNTAwLCBtYXg6IDgwMH1cIj5Db250ZW50IHRvIHJlbmRlciBpZiB0aGUgdmlld3BvcnQgd2lkdGggaXMgYmV0d2VlbiA1MDBweCBhbmQgODAwcHg8L2Rpdj5cclxuICAgKiBgYGBcclxuICAgKi9cclxuICBASW5wdXQoJ2VjSWZWaWV3cG9ydFdpZHRoJykgcHVibGljIHdpZHRoITogbnVtYmVyIHwge21pbj86IG51bWJlcjsgbWF4PzogbnVtYmVyfTtcclxuXHJcbiAgLyoqIFxyXG4gICAqIElmIGRlZmluZWQsIHRoZSB3aWR0aCBpbiBwaXhlbHMgdGhhdCB0aGUgdmlld3BvcnQgbXVzdCBiZSB0byBpbmNsdWRlIHRoZSBkaXJlY3RpdmUgYW5kIGl0cyBjb250ZW50IGluIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIG1pbldpZHRoPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJZiBkZWZpbmVkLCB0aGUgd2lkdGggaW4gcGl4ZWxzIHRoYXQgdGhlIHZpZXdwb3J0IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gdG8gaW5jbHVkZSB0aGUgZGlyZWN0aXZlIGFuZCBpdHMgY29udGVuIGluIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIG1heFdpZHRoPzogbnVtYmVyO1xyXG5cclxuICAvKiogXHJcbiAgICogVXNlZCB0byB1bnN1YnNjcmliZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVybmFsbHkgdHJhY2tzIHdoZXRoZXIgdGhlIGRpcmVjdGl2ZSBhbmQgaXRzIGNvbnRlbnQgaXMgaW5jbHVkZWQgaW4gdGhlIERPTVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBcclxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIFxyXG4gICAgcHJpdmF0ZSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gV2luZG93IG1heSBub3QgYXZhaWxhYmxlIGlmIHRoaXMgY29kZSBpcyBub3QgYmVpbmcgcnVuIG9uIGEgYnJvd3NlciBwbGF0Zm9ybS4gXHJcbiAgICAvLyBJZiB0aGVyZSBpcyBubyB3aW5kb3cgb3IgaW5uZXJXaWR0aCBhYm9ydCBpbml0aWFsaXphdGlvblxyXG4gICAgaWYgKHRoaXMud2luZG93U2VydmljZS5pbm5lcldpZHRoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGZvciByZXF1aXJlZCB2YWx1ZXMuIElmIG5vbmUgYXJlIHNldCwgbG9nIGVycm9yIGFuZCBhYm9ydCBpbml0aWFsaXphdGlvblxyXG4gICAgaWYgKCF0aGlzLndpZHRoKSAge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBBIG1pbiBvciBtYXggd2lkdGggd2FzIG5vdCBwcm92aWRlZC4gUHJvdmlkZSBhIHZhbHVlIGZvciAnbWluJyBvciAnbWF4JyBieSBhc3NpZ25pbmcgYSBzaW5nbGUgdmFsdWUgb3Igb2JqZWN0IHRvIHRoZSBkaXJlY3RpdmUuIEUuZy4gKmVjSWZWaWV3cG9ydFdpZHRoPVwiODAwXCIgKGFzc2lnbmVkIHRvIG1pbikgb3IgKmVjSWZWaWV3cG9ydFdpZHRoPVwie21pbjogODAwLCBtYXg6IDEyODB9XCJgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy53aWR0aCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5taW5XaWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMud2lkdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm1pbldpZHRoID0gdGhpcy53aWR0aC5taW47XHJcbiAgICAgIHRoaXMubWF4V2lkdGggPSB0aGlzLndpZHRoLm1heDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53aW5kb3dTZXJ2aWNlLnJlc2l6ZWQpIHtcclxuICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlc2l6ZWQucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCB2aWV3cG9ydCB3aWR0aCBhbmQgZGV0ZXJtaW4gaWYgdGhlIGRpcmVjdGl2ZSdzIGNvbnRlbnQgc2hvdWxkIGJlXHJcbiAgICogaW5jbHVkZWQgaW4gdGhlIERPTSBiYXNlZCBvbiB0aGUgbWluIGFuZCBtYXggd2lkdGggc2V0dGluZ3NcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVZpc2liaWxpdHkoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gdGhpcy53aW5kb3dTZXJ2aWNlLmlubmVyV2lkdGghO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5taW5XaWR0aCAhPT0gdW5kZWZpbmVkICYmIHRoaXMubWF4V2lkdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodmlld3BvcnRXaWR0aCA+PSB0aGlzLm1pbldpZHRoICYmIHZpZXdwb3J0V2lkdGggPD0gdGhpcy5tYXhXaWR0aCkge1xyXG4gICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubWluV2lkdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodmlld3BvcnRXaWR0aCA+PSB0aGlzLm1pbldpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXhXaWR0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh2aWV3cG9ydFdpZHRoIDw9IHRoaXMubWF4V2lkdGgpIHtcclxuICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgICBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0aGUgZGlyZWN0aXZlJ3MgY29udGVudCB0byB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaG93KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIGRpcmVjdGl2ZSdzIGNvbnRlbnQgZnJvbSB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoaWRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, TemplateRef, ViewContainerRef, Renderer2, Inject, EventEmitter } from '@angular/core';
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { fromEvent } from "rxjs";
|
|
4
|
-
import Popper from 'popper.js';
|
|
5
|
-
/**
|
|
6
|
-
* Primitive directive that popups a container using PopperJS
|
|
7
|
-
*
|
|
8
|
-
* @export
|
|
9
|
-
*/
|
|
10
|
-
export class PopupContainerDirective {
|
|
11
|
-
/**
|
|
12
|
-
* Creates an instance of PopupContainerDirective.
|
|
13
|
-
* @param templateRef Reference to the popup template
|
|
14
|
-
* @param viewContainer Reference to the view container
|
|
15
|
-
* @param document Reference to Document
|
|
16
|
-
* @memberof PopupContainerDirective
|
|
17
|
-
*/
|
|
18
|
-
constructor(templateRef, viewContainer, document, renderer) {
|
|
19
|
-
this.templateRef = templateRef;
|
|
20
|
-
this.viewContainer = viewContainer;
|
|
21
|
-
this.document = document;
|
|
22
|
-
this.renderer = renderer;
|
|
23
|
-
/**
|
|
24
|
-
* Emit the {@link PopupStatus} when it changes
|
|
25
|
-
*/
|
|
26
|
-
this.popperStatusChange = new EventEmitter();
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Angular onInit lifecycle hook
|
|
30
|
-
* @see https://angular.io/guide/lifecycle-hooks
|
|
31
|
-
*/
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Angular onDestroy lifecycle hook. Close and delete references. Unsubscribe observables
|
|
37
|
-
* @see https://angular.io/guide/lifecycle-hooks
|
|
38
|
-
*/
|
|
39
|
-
ngOnDestroy() {
|
|
40
|
-
this.hide();
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Displays the templateRef as a popup
|
|
44
|
-
*
|
|
45
|
-
* @memberof PopupContainerDirective
|
|
46
|
-
*/
|
|
47
|
-
show() {
|
|
48
|
-
if (PopupContainerDirective.GlobalPopupRef) {
|
|
49
|
-
if (PopupContainerDirective.GlobalPopupRef != this) {
|
|
50
|
-
PopupContainerDirective.GlobalPopupRef.hide();
|
|
51
|
-
PopupContainerDirective.GlobalPopupRef = undefined;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (!this.globalCloseSubscription) {
|
|
55
|
-
this.globalCloseSubscription = fromEvent(this.document.body, "click").subscribe((event) => {
|
|
56
|
-
this.hide();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
if (!this.popperRef) {
|
|
60
|
-
// Add the popper template as an embedded view since PopperJS
|
|
61
|
-
// manipulates DOM elements.
|
|
62
|
-
this.popupViewRef = this.viewContainer.createEmbeddedView(this.popup);
|
|
63
|
-
// Since popper needs real DOM elements, grab the first non-comment
|
|
64
|
-
// DOM element to use as our anchor.
|
|
65
|
-
let anchorElement = this.popupViewRef.rootNodes.find(elem => { return elem.nodeName !== "#text"; });
|
|
66
|
-
// Use the parents elements as our DOM elements to Popper
|
|
67
|
-
this.popperRef = new Popper(this.templateViewRef.rootNodes[0], anchorElement, this.popperOptions);
|
|
68
|
-
PopupContainerDirective.GlobalPopupRef = this;
|
|
69
|
-
this.popperStatusChange.emit('visible');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Hides the templateRef
|
|
74
|
-
*
|
|
75
|
-
* @memberof PopupContainerDirective
|
|
76
|
-
*/
|
|
77
|
-
hide() {
|
|
78
|
-
if (this.globalCloseSubscription) {
|
|
79
|
-
this.globalCloseSubscription.unsubscribe();
|
|
80
|
-
this.globalCloseSubscription = undefined;
|
|
81
|
-
}
|
|
82
|
-
if (this.popperRef && this.popupViewRef) {
|
|
83
|
-
this.popupViewRef.destroy();
|
|
84
|
-
this.popperRef.destroy();
|
|
85
|
-
this.popperRef = undefined;
|
|
86
|
-
this.popperStatusChange.emit('hidden');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Updates the popup container position
|
|
91
|
-
*/
|
|
92
|
-
update() {
|
|
93
|
-
if (this.popperRef) {
|
|
94
|
-
this.popperRef.update();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
fixPosition(minWidthNone, appendToBody = false) {
|
|
98
|
-
if (this.popperRef && this.popperRef['reference'] && this.popperRef['popper']) {
|
|
99
|
-
let popupEl = this.popperRef['popper'];
|
|
100
|
-
// Reset width style previously assigned because the content may have
|
|
101
|
-
// changed and the auto width would be different
|
|
102
|
-
this.renderer.removeStyle(popupEl, 'width');
|
|
103
|
-
this.renderer.setStyle(popupEl, 'position', 'fixed');
|
|
104
|
-
if (appendToBody) {
|
|
105
|
-
const bodyEl = this.document.querySelector('body');
|
|
106
|
-
const popupParent = this.renderer.parentNode(popupEl);
|
|
107
|
-
if (popupParent !== bodyEl) {
|
|
108
|
-
this.renderer.appendChild(bodyEl, popupEl);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
let toggleEl = this.popperRef['reference'];
|
|
112
|
-
let width = popupEl.offsetWidth;
|
|
113
|
-
let boundaries = popupEl.getBoundingClientRect();
|
|
114
|
-
let left = boundaries.left;
|
|
115
|
-
let coords = toggleEl.getBoundingClientRect();
|
|
116
|
-
// Set the top of our menu to the bottom of the toggle element
|
|
117
|
-
let top = coords.bottom;
|
|
118
|
-
if (this.popperOptions && this.popperOptions.placement) {
|
|
119
|
-
if (this.popperOptions.placement === 'bottom-start' || this.popperOptions.placement === 'top-start') {
|
|
120
|
-
left = coords.left;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
left = coords.right - ((minWidthNone || width > coords.width) ? width : coords.width);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// if it won't fit (with 10px space before hitting the window edge), flip it
|
|
127
|
-
if (boundaries.height + top + 10 > window.innerHeight) {
|
|
128
|
-
top = coords.top - boundaries.height;
|
|
129
|
-
}
|
|
130
|
-
this.renderer.setStyle(popupEl, 'transform', 'none');
|
|
131
|
-
this.renderer.setStyle(popupEl, 'left', left + 'px');
|
|
132
|
-
this.renderer.setStyle(popupEl, 'top', top + 'px');
|
|
133
|
-
this.renderer.setStyle(popupEl, 'width', width + 'px');
|
|
134
|
-
if (!minWidthNone) {
|
|
135
|
-
this.renderer.setStyle(popupEl, 'min-width', coords.width + 'px');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Global reference to the currently displayed popup; only
|
|
142
|
-
* one popup directive can be in `show` state at a given time.
|
|
143
|
-
*
|
|
144
|
-
* @memberof PopupContainerDirective
|
|
145
|
-
*/
|
|
146
|
-
PopupContainerDirective.GlobalPopupRef = undefined;
|
|
147
|
-
PopupContainerDirective.decorators = [
|
|
148
|
-
{ type: Directive, args: [{ selector: '[ecPopup]' },] }
|
|
149
|
-
];
|
|
150
|
-
PopupContainerDirective.ctorParameters = () => [
|
|
151
|
-
{ type: TemplateRef },
|
|
152
|
-
{ type: ViewContainerRef },
|
|
153
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
154
|
-
{ type: Renderer2 }
|
|
155
|
-
];
|
|
156
|
-
PopupContainerDirective.propDecorators = {
|
|
157
|
-
popup: [{ type: Input, args: ['ecPopup',] }],
|
|
158
|
-
popperOptions: [{ type: Input, args: ['options',] }]
|
|
159
|
-
};
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9wb3B1cC9wb3B1cC1jb250YWluZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBc0MsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQTtBQUs5Qjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQXFEaEM7Ozs7OztPQU1HO0lBQ0gsWUFDWSxXQUE2QixFQUM3QixhQUErQixFQUNiLFFBQWEsRUFDL0IsUUFBbUI7UUFIbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNiLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQXFCL0I7O1dBRUc7UUFDSSx1QkFBa0IsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQXZCcEYsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFHRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFTRDs7OztPQUlHO0lBQ0ksSUFBSTtR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VUFBVSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ25ELEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7YUFDeEM7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRXZELElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQ3JFO1NBQ0o7SUFDTCxDQUFDOztBQWpORDs7Ozs7R0FLRztBQUNXLHNDQUFjLEdBQTZCLFNBQVMsQ0FBQzs7WUFUdEUsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTs7O1lBYlQsV0FBVztZQUFFLGdCQUFnQjs0Q0E2RS9DLE1BQU0sU0FBQyxRQUFRO1lBN0VzRSxTQUFTOzs7b0JBNEJsRyxLQUFLLFNBQUMsU0FBUzs0QkFPZixLQUFLLFNBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBPbkluaXQsIEVtYmVkZGVkVmlld1JlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIsIEluamVjdCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgUG9wcGVyIGZyb20gJ3BvcHBlci5qcydcclxuXHJcbmV4cG9ydCB0eXBlIFBvcHVwUGxhY2VtZW50ID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAndG9wLXN0YXJ0JyB8ICd0b3AtZW5kJyB8ICdib3R0b20tc3RhcnQnIHwgJ2JvdHRvbS1lbmQnO1xyXG5leHBvcnQgdHlwZSBQb3B1cFN0YXR1cyA9ICd2aXNpYmxlJyB8ICdoaWRkZW4nO1xyXG5cclxuLyoqXHJcbiAqIFByaW1pdGl2ZSBkaXJlY3RpdmUgdGhhdCBwb3B1cHMgYSBjb250YWluZXIgdXNpbmcgUG9wcGVySlNcclxuICpcclxuICogQGV4cG9ydFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2VjUG9wdXBdJyB9KVxyXG5leHBvcnQgY2xhc3MgUG9wdXBDb250YWluZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqICBHbG9iYWwgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHBvcHVwOyBvbmx5XHJcbiAgICAgKiAgb25lIHBvcHVwIGRpcmVjdGl2ZSBjYW4gYmUgaW4gYHNob3dgIHN0YXRlIGF0IGEgZ2l2ZW4gdGltZS5cclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHbG9iYWxQb3B1cFJlZj86IFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGVSZWYgb2YgY29udGFpbmVyIHRvIHBvcHVwXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ2VjUG9wdXAnKSBwdWJsaWMgcG9wdXAhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9wcGVyIG9wdGlvbnNcclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCdvcHRpb25zJykgcHVibGljIHBvcHBlck9wdGlvbnM/OiBQb3BwZXIuUG9wcGVyT3B0aW9ucztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIFZpZXcgUmVmZXJlbmNlXHJcbiAgICAgKlxyXG4gICAgICogQG1lbWJlcm9mIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdGVtcGxhdGVWaWV3UmVmITogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3B1cCBWaWV3IFJlZmVyZW5jZSAoY29udGFpbmVyKVxyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHBvcHVwVmlld1JlZj86IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9wcGVyIFJlZmVyZW5jZVxyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHBvcHBlclJlZj86IFBvcHBlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENsb3NlLXRvLWNsaWNrIFN1YnNjcmlwdGlvbi4gVGhpcyBhbGxvd3MgdXMgdG8gY2xvc2UgdGhlIG1lbnUgd2hlbiB5b3UgY2xpY2sgb24gdGhlIGJvZHkuXHJcbiAgICAgKiBXZSBhdHRhY2ggaXQgd2hlbiB0aGUgbWVudSBpcyBvcGVuIGFuZCBkZXRhY2ggaXQgb24gY2xvc2UsIHRvIGxpbWl0IHRoZSBsaWZldGltZSBvZiB0aGUgY2xpY2sgaGFuZGxlclxyXG4gICAgICogd2hpY2ggaGVscHMgd2l0aCBwZXJmb3JtYW5jZSBvbiBhIHBhZ2Ugd2l0aCBtYW55IHBvcHVwIGNvbnRhaW5lcnNcclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxDbG9zZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmUuXHJcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGVSZWYgUmVmZXJlbmNlIHRvIHRoZSBwb3B1cCB0ZW1wbGF0ZVxyXG4gICAgICogQHBhcmFtIHZpZXdDb250YWluZXIgUmVmZXJlbmNlIHRvIHRoZSB2aWV3IGNvbnRhaW5lclxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50IFJlZmVyZW5jZSB0byBEb2N1bWVudFxyXG4gICAgICogQG1lbWJlcm9mIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXHJcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICAgICkge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgb25Jbml0IGxpZmVjeWNsZSBob29rXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9saWZlY3ljbGUtaG9va3NcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWNsZSBob29rLiBDbG9zZSBhbmQgZGVsZXRlIHJlZmVyZW5jZXMuIFVuc3Vic2NyaWJlIG9ic2VydmFibGVzXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9saWZlY3ljbGUtaG9va3NcclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW1pdCB0aGUge0BsaW5rIFBvcHVwU3RhdHVzfSB3aGVuIGl0IGNoYW5nZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBvcHBlclN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPFBvcHVwU3RhdHVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9wdXBTdGF0dXM+KCk7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGlzcGxheXMgdGhlIHRlbXBsYXRlUmVmIGFzIGEgcG9wdXBcclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3coKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLkdsb2JhbFBvcHVwUmVmKSB7XHJcbiAgICAgICAgICAgIGlmIChQb3B1cENvbnRhaW5lckRpcmVjdGl2ZS5HbG9iYWxQb3B1cFJlZiAhPSB0aGlzKSB7XHJcbiAgICAgICAgICAgICAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZS5HbG9iYWxQb3B1cFJlZi5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZS5HbG9iYWxQb3B1cFJlZiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoIXRoaXMuZ2xvYmFsQ2xvc2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5nbG9iYWxDbG9zZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLmRvY3VtZW50LmJvZHksIFwiY2xpY2tcIikuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnBvcHBlclJlZikge1xyXG4gICAgICAgICAgICAvLyBBZGQgdGhlIHBvcHBlciB0ZW1wbGF0ZSBhcyBhbiBlbWJlZGRlZCB2aWV3IHNpbmNlIFBvcHBlckpTXHJcbiAgICAgICAgICAgIC8vIG1hbmlwdWxhdGVzIERPTSBlbGVtZW50cy5cclxuICAgICAgICAgICAgdGhpcy5wb3B1cFZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucG9wdXApO1xyXG5cclxuICAgICAgICAgICAgLy8gU2luY2UgcG9wcGVyIG5lZWRzIHJlYWwgRE9NIGVsZW1lbnRzLCBncmFiIHRoZSBmaXJzdCBub24tY29tbWVudFxyXG4gICAgICAgICAgICAvLyBET00gZWxlbWVudCB0byB1c2UgYXMgb3VyIGFuY2hvci5cclxuICAgICAgICAgICAgbGV0IGFuY2hvckVsZW1lbnQgPSAodGhpcy5wb3B1cFZpZXdSZWYucm9vdE5vZGVzIGFzIGFueVtdKS5maW5kKGVsZW0gPT4geyByZXR1cm4gZWxlbS5ub2RlTmFtZSAhPT0gXCIjdGV4dFwiIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgcGFyZW50cyBlbGVtZW50cyBhcyBvdXIgRE9NIGVsZW1lbnRzIHRvIFBvcHBlclxyXG4gICAgICAgICAgICB0aGlzLnBvcHBlclJlZiA9IG5ldyBQb3BwZXIoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZi5yb290Tm9kZXNbMF0sXHJcbiAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BwZXJPcHRpb25zKTtcclxuXHJcblxyXG4gICAgICAgICAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZS5HbG9iYWxQb3B1cFJlZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvcHBlclN0YXR1c0NoYW5nZS5lbWl0KCd2aXNpYmxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhpZGVzIHRoZSB0ZW1wbGF0ZVJlZlxyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5nbG9iYWxDbG9zZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmdsb2JhbENsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsQ2xvc2VTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3BwZXJSZWYgJiYgdGhpcy5wb3B1cFZpZXdSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3B1cFZpZXdSZWYuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHBlclJlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wcGVyUmVmID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnBvcHBlclN0YXR1c0NoYW5nZS5lbWl0KCdoaWRkZW4nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBwb3B1cCBjb250YWluZXIgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wb3BwZXJSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BwZXJSZWYudXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmaXhQb3NpdGlvbihtaW5XaWR0aE5vbmU/OmJvb2xlYW4sIGFwcGVuZFRvQm9keT1mYWxzZSApOnZvaWQge1xyXG4gICAgICAgIGlmKHRoaXMucG9wcGVyUmVmICYmIHRoaXMucG9wcGVyUmVmWydyZWZlcmVuY2UnXSAmJiB0aGlzLnBvcHBlclJlZlsncG9wcGVyJ10pIHtcclxuICAgICAgICAgICAgbGV0IHBvcHVwRWwgPSB0aGlzLnBvcHBlclJlZlsncG9wcGVyJ107XHJcblxyXG4gICAgICAgICAgICAvLyBSZXNldCB3aWR0aCBzdHlsZSBwcmV2aW91c2x5IGFzc2lnbmVkIGJlY2F1c2UgdGhlIGNvbnRlbnQgbWF5IGhhdmVcclxuICAgICAgICAgICAgLy8gY2hhbmdlZCBhbmQgdGhlIGF1dG8gd2lkdGggd291bGQgYmUgZGlmZmVyZW50XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUocG9wdXBFbCwgJ3dpZHRoJyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcHVwRWwsICdwb3NpdGlvbicsICdmaXhlZCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFwcGVuZFRvQm9keSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keUVsID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwb3B1cFBhcmVudCA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZShwb3B1cEVsKTtcclxuICAgICAgICAgICAgICAgIGlmIChwb3B1cFBhcmVudCAhPT0gYm9keUVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChib2R5RWwsIHBvcHVwRWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgdG9nZ2xlRWwgPSB0aGlzLnBvcHBlclJlZlsncmVmZXJlbmNlJ107XHJcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IHBvcHVwRWwub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICAgIGxldCBib3VuZGFyaWVzID0gcG9wdXBFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgbGV0IGxlZnQ6bnVtYmVyID0gYm91bmRhcmllcy5sZWZ0O1xyXG4gICAgICAgICAgICBsZXQgY29vcmRzID0gdG9nZ2xlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHRvcCBvZiBvdXIgbWVudSB0byB0aGUgYm90dG9tIG9mIHRoZSB0b2dnbGUgZWxlbWVudFxyXG4gICAgICAgICAgICBsZXQgdG9wOm51bWJlciA9IGNvb3Jkcy5ib3R0b207XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3BwZXJPcHRpb25zICYmIHRoaXMucG9wcGVyT3B0aW9ucy5wbGFjZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvcHBlck9wdGlvbnMucGxhY2VtZW50ID09PSAnYm90dG9tLXN0YXJ0JyB8fCB0aGlzLnBvcHBlck9wdGlvbnMucGxhY2VtZW50ID09PSAndG9wLXN0YXJ0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjb29yZHMubGVmdDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGNvb3Jkcy5yaWdodCAtICgobWluV2lkdGhOb25lIHx8IHdpZHRoID4gY29vcmRzLndpZHRoKSA/IHdpZHRoIDogY29vcmRzLndpZHRoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaWYgaXQgd29uJ3QgZml0ICh3aXRoIDEwcHggc3BhY2UgYmVmb3JlIGhpdHRpbmcgdGhlIHdpbmRvdyBlZGdlKSwgZmxpcCBpdFxyXG4gICAgICAgICAgICBpZiAoYm91bmRhcmllcy5oZWlnaHQgKyB0b3AgKyAxMCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgdG9wID0gY29vcmRzLnRvcCAtIGJvdW5kYXJpZXMuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcHVwRWwsICd0cmFuc2Zvcm0nLCAnbm9uZScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcHVwRWwsICdsZWZ0JywgbGVmdCArICdweCcpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcHVwRWwsICd0b3AnLCB0b3AgKyAncHgnKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwb3B1cEVsLCAnd2lkdGgnLCB3aWR0aCArICdweCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFtaW5XaWR0aE5vbmUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wdXBFbCwgJ21pbi13aWR0aCcsIGNvb3Jkcy53aWR0aCArICdweCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { DateTimeHelper } from '../../../core/date-time-helper';
|
|
3
|
-
import { UserPreferenceService } from '../../user-preference.service';
|
|
4
|
-
import moment from 'moment';
|
|
5
|
-
/**
|
|
6
|
-
* Format a date to the user's preference for display
|
|
7
|
-
*/
|
|
8
|
-
export class DateDisplayPipe {
|
|
9
|
-
constructor(userPreferenceService) {
|
|
10
|
-
this.userPreferenceService = userPreferenceService;
|
|
11
|
-
this.lastFormatString = 'MM/DD/YYYY';
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Format a date for display, accounting for user's display preferences.
|
|
15
|
-
*
|
|
16
|
-
* If {@see date} is null or undefined, or the end of time, returns empty string
|
|
17
|
-
*/
|
|
18
|
-
transform(date, showEndOfTime, showTime, showSeconds) {
|
|
19
|
-
let display = '';
|
|
20
|
-
let formatString = '';
|
|
21
|
-
if (date && moment(date).isValid() && (showEndOfTime || !DateTimeHelper.isEndOfTime(date))) {
|
|
22
|
-
// use user-preferred formats
|
|
23
|
-
this.userPreferenceService.getPreferences().subscribe(result => {
|
|
24
|
-
//if preferences exist then format date to users preference
|
|
25
|
-
//otherwise use the last user preference
|
|
26
|
-
if (result.preference) {
|
|
27
|
-
formatString = result.preference.dateFormat;
|
|
28
|
-
if (showTime) {
|
|
29
|
-
let timeFormat = result.preference.timeFormat;
|
|
30
|
-
if (!showSeconds) {
|
|
31
|
-
timeFormat = timeFormat.replace(':ss', '');
|
|
32
|
-
}
|
|
33
|
-
formatString += ` ${timeFormat}`;
|
|
34
|
-
}
|
|
35
|
-
this.lastFormatString = formatString;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
display = moment(date).format(this.lastFormatString);
|
|
39
|
-
}
|
|
40
|
-
return display;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
DateDisplayPipe.decorators = [
|
|
44
|
-
{ type: Pipe, args: [{ name: 'dateDisplay' },] }
|
|
45
|
-
];
|
|
46
|
-
DateDisplayPipe.ctorParameters = () => [
|
|
47
|
-
{ type: UserPreferenceService }
|
|
48
|
-
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvZGF0ZS1kaXNwbGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUk1Qjs7R0FFRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBRXhELHFCQUFnQixHQUFXLFlBQVksQ0FBQztJQUZvQixDQUFDO0lBSXJFOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsSUFBa0IsRUFBRSxhQUF1QixFQUFFLFFBQWtCLEVBQUUsV0FBcUI7UUFDOUYsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLElBQUksWUFBWSxHQUFXLEVBQUUsQ0FBQztRQUU5QixJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFFMUYsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBRTdELDREQUE0RDtnQkFDNUQsd0NBQXdDO2dCQUN4QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7b0JBQ3JCLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVyxDQUFDLFVBQVcsQ0FBQztvQkFDOUMsSUFBSSxRQUFRLEVBQUU7d0JBQ1osSUFBSSxVQUFVLEdBQVcsTUFBTSxDQUFDLFVBQVcsQ0FBQyxVQUFXLENBQUM7d0JBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ2hCLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDNUM7d0JBQ0QsWUFBWSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7cUJBQ2xDO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7aUJBQ3RDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN0RDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OztZQXRDRixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFDOzs7WUFSbEIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlVGltZUhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZGF0ZS10aW1lLWhlbHBlcic7XHJcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGF0ZURpc3BsYXkgPSBEYXRlIHwgbW9tZW50Lk1vbWVudCB8IHN0cmluZyB8IG51bGw7XHJcblxyXG4vKipcclxuICogRm9ybWF0IGEgZGF0ZSB0byB0aGUgdXNlcidzIHByZWZlcmVuY2UgZm9yIGRpc3BsYXlcclxuICovXHJcbkBQaXBlKHtuYW1lOiAnZGF0ZURpc3BsYXknfSlcclxuZXhwb3J0IGNsYXNzIERhdGVEaXNwbGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVzZXJQcmVmZXJlbmNlU2VydmljZTogVXNlclByZWZlcmVuY2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBsYXN0Rm9ybWF0U3RyaW5nOiBzdHJpbmcgPSAnTU0vREQvWVlZWSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBhIGRhdGUgZm9yIGRpc3BsYXksIGFjY291bnRpbmcgZm9yIHVzZXIncyBkaXNwbGF5IHByZWZlcmVuY2VzLlxyXG4gICAqIFxyXG4gICAqIElmIHtAc2VlIGRhdGV9IGlzIG51bGwgb3IgdW5kZWZpbmVkLCBvciB0aGUgZW5kIG9mIHRpbWUsIHJldHVybnMgZW1wdHkgc3RyaW5nXHJcbiAgICovXHJcbiAgdHJhbnNmb3JtKGRhdGU/OiBEYXRlRGlzcGxheSwgc2hvd0VuZE9mVGltZT86IGJvb2xlYW4sIHNob3dUaW1lPzogYm9vbGVhbiwgc2hvd1NlY29uZHM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBkaXNwbGF5OiBzdHJpbmcgPSAnJztcclxuICAgIGxldCBmb3JtYXRTdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gICAgXHJcbiAgICBpZiAoZGF0ZSAmJiBtb21lbnQoZGF0ZSkuaXNWYWxpZCgpICYmIChzaG93RW5kT2ZUaW1lIHx8ICFEYXRlVGltZUhlbHBlci5pc0VuZE9mVGltZShkYXRlKSkpIHtcclxuXHJcbiAgICAgIC8vIHVzZSB1c2VyLXByZWZlcnJlZCBmb3JtYXRzXHJcbiAgICAgIHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmdldFByZWZlcmVuY2VzKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcblxyXG4gICAgICAgIC8vaWYgcHJlZmVyZW5jZXMgZXhpc3QgdGhlbiBmb3JtYXQgZGF0ZSB0byB1c2VycyBwcmVmZXJlbmNlIFxyXG4gICAgICAgIC8vb3RoZXJ3aXNlIHVzZSB0aGUgbGFzdCB1c2VyIHByZWZlcmVuY2VcclxuICAgICAgICBpZiAocmVzdWx0LnByZWZlcmVuY2UpIHtcclxuICAgICAgICAgIGZvcm1hdFN0cmluZyA9IHJlc3VsdC5wcmVmZXJlbmNlIS5kYXRlRm9ybWF0ITtcclxuICAgICAgICAgIGlmIChzaG93VGltZSkge1xyXG4gICAgICAgICAgICBsZXQgdGltZUZvcm1hdDogc3RyaW5nID0gcmVzdWx0LnByZWZlcmVuY2UhLnRpbWVGb3JtYXQhO1xyXG4gICAgICAgICAgICBpZiAoIXNob3dTZWNvbmRzKSB7XHJcbiAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IHRpbWVGb3JtYXQucmVwbGFjZSgnOnNzJywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvcm1hdFN0cmluZyArPSBgICR7dGltZUZvcm1hdH1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sYXN0Rm9ybWF0U3RyaW5nID0gZm9ybWF0U3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGRpc3BsYXkgPSBtb21lbnQoZGF0ZSkuZm9ybWF0KHRoaXMubGFzdEZvcm1hdFN0cmluZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzcGxheTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
export class HighlightTextPipe {
|
|
3
|
-
transform(value, searchText) {
|
|
4
|
-
let transformedValue = '';
|
|
5
|
-
if (value && searchText) {
|
|
6
|
-
const regex = new RegExp(this.escapeRegex(searchText), 'gi');
|
|
7
|
-
transformedValue = value.replace(regex, this.strongWrap);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
transformedValue = value;
|
|
11
|
-
}
|
|
12
|
-
return transformedValue;
|
|
13
|
-
}
|
|
14
|
-
strongWrap(match) {
|
|
15
|
-
return `<strong class="text-highlight">${match}</strong>`;
|
|
16
|
-
}
|
|
17
|
-
escapeRegex(value) {
|
|
18
|
-
return value.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
HighlightTextPipe.decorators = [
|
|
22
|
-
{ type: Pipe, args: [{
|
|
23
|
-
name: 'highlightText'
|
|
24
|
-
},] }
|
|
25
|
-
];
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXRleHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlzcGxheS9waXBlcy9oaWdobGlnaHQtdGV4dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBS3BELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsU0FBUyxDQUFDLEtBQWEsRUFBRSxVQUFrQjtRQUN6QyxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RCxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUQ7YUFBTTtZQUNMLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUMxQjtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLE9BQU8sa0NBQWtDLEtBQUssV0FBVyxDQUFDO0lBQzVELENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7O1lBdkJGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsZUFBZTthQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnaGlnaGxpZ2h0VGV4dCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodFRleHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRyYW5zZm9ybWVkVmFsdWUgPSAnJztcclxuICAgIGlmICh2YWx1ZSAmJiBzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4KHNlYXJjaFRleHQpLCAnZ2knKTtcclxuICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHRoaXMuc3Ryb25nV3JhcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0cm9uZ1dyYXAobWF0Y2g6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGA8c3Ryb25nIGNsYXNzPVwidGV4dC1oaWdobGlnaHRcIj4ke21hdGNofTwvc3Ryb25nPmA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVzY2FwZVJlZ2V4KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import moment from 'moment';
|
|
4
|
-
import { DateDisplayPipe } from './date-display.pipe';
|
|
5
|
-
import { TimeDisplayPipe } from './time-display.pipe';
|
|
6
|
-
export class RelativeDatePipe {
|
|
7
|
-
constructor(dateDisplayPipe, timeDisplayPipe, translateService) {
|
|
8
|
-
this.dateDisplayPipe = dateDisplayPipe;
|
|
9
|
-
this.timeDisplayPipe = timeDisplayPipe;
|
|
10
|
-
this.translateService = translateService;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* If dateOnly is true, returns timeSelected formatted according to the user's date preference.
|
|
14
|
-
* If timeOnly is true, returns timeSelected formatted according to the user's time preference.
|
|
15
|
-
* If any of todayLabel, yesterdayLabel is supplied, use the supplied label.
|
|
16
|
-
* If dateOnly and timeOnly are both false, returns timeSelected formatted according to the user's date plus time preference.
|
|
17
|
-
*/
|
|
18
|
-
transform(timeSelected, options) {
|
|
19
|
-
const selected = moment(timeSelected);
|
|
20
|
-
const today = moment();
|
|
21
|
-
const yesterday = moment().subtract(1, 'day');
|
|
22
|
-
const timeDisplay = (options === null || options === void 0 ? void 0 : options.dateOnly) ? `` : ` ${this.timeDisplayPipe.transform(timeSelected)}`;
|
|
23
|
-
let displayValue = null;
|
|
24
|
-
if (selected.isSame(today, 'day') && !(options === null || options === void 0 ? void 0 : options.showTimeForToday)) {
|
|
25
|
-
displayValue = this.translateService.instant((options === null || options === void 0 ? void 0 : options.todayLabel) ? options === null || options === void 0 ? void 0 : options.todayLabel : 'today');
|
|
26
|
-
}
|
|
27
|
-
else if (selected.isSame(today, 'day') && (options === null || options === void 0 ? void 0 : options.showTimeForToday) && !timeDisplay) {
|
|
28
|
-
displayValue = this.timeDisplayPipe.transform(timeSelected);
|
|
29
|
-
}
|
|
30
|
-
else if (selected.isSame(yesterday, 'day')) {
|
|
31
|
-
displayValue = this.translateService.instant((options === null || options === void 0 ? void 0 : options.yesterdayLabel) ? options === null || options === void 0 ? void 0 : options.yesterdayLabel : 'yesterday');
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
displayValue = this.dateDisplayPipe.transform(timeSelected);
|
|
35
|
-
}
|
|
36
|
-
return `${displayValue}${timeDisplay}`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
RelativeDatePipe.decorators = [
|
|
40
|
-
{ type: Pipe, args: [{
|
|
41
|
-
name: 'relativeDate'
|
|
42
|
-
},] }
|
|
43
|
-
];
|
|
44
|
-
RelativeDatePipe.ctorParameters = () => [
|
|
45
|
-
{ type: DateDisplayPipe },
|
|
46
|
-
{ type: TimeDisplayPipe },
|
|
47
|
-
{ type: TranslateService }
|
|
48
|
-
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3JlbGF0aXZlLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVl0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsZ0JBQWtDO1FBRmxDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN4QyxDQUFDO0lBRUw7Ozs7O09BS0c7SUFDSCxTQUFTLENBQ1AsWUFBb0IsRUFDcEIsT0FBNkI7UUFFN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxnQkFBZ0IsQ0FBQSxFQUFFO1lBQy9ELFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsRUFBQyxDQUFDLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkc7YUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxnQkFBZ0IsQ0FBQSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JGLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDNUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxFQUFDLENBQUMsQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvRzthQUFNO1lBQ0wsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxHQUFHLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQTtJQUN4QyxDQUFDOzs7WUFyQ0YsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxjQUFjO2FBQ3JCOzs7WUFaUSxlQUFlO1lBQ2YsZUFBZTtZQUhmLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVEaXNwbGF5UGlwZSB9IGZyb20gJy4vZGF0ZS1kaXNwbGF5LnBpcGUnO1xyXG5pbXBvcnQgeyBUaW1lRGlzcGxheVBpcGUgfSBmcm9tICcuL3RpbWUtZGlzcGxheS5waXBlJztcclxuXHJcbmV4cG9ydCB0eXBlIFJlbGF0aXZlRGF0ZU9wdGlvbnMgPSB7XHJcbiAgZGF0ZU9ubHk/OiBib29sZWFuLCBcclxuICBzaG93VGltZUZvclRvZGF5PyA6IGJvb2xlYW4sXHJcbiAgdG9kYXlMYWJlbD86IHN0cmluZywgXHJcbiAgeWVzdGVyZGF5TGFiZWw/OiBzdHJpbmcsIFxyXG59XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3JlbGF0aXZlRGF0ZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlRGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGVEaXNwbGF5UGlwZTogRGF0ZURpc3BsYXlQaXBlLCBcclxuICAgIHByaXZhdGUgdGltZURpc3BsYXlQaXBlOiBUaW1lRGlzcGxheVBpcGUsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiBkYXRlT25seSBpcyB0cnVlLCByZXR1cm5zIHRpbWVTZWxlY3RlZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3MgZGF0ZSBwcmVmZXJlbmNlLlxyXG4gICAqIElmIHRpbWVPbmx5IGlzIHRydWUsIHJldHVybnMgdGltZVNlbGVjdGVkIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB0aW1lIHByZWZlcmVuY2UuXHJcbiAgICogSWYgYW55IG9mIHRvZGF5TGFiZWwsIHllc3RlcmRheUxhYmVsIGlzIHN1cHBsaWVkLCB1c2UgdGhlIHN1cHBsaWVkIGxhYmVsLlxyXG4gICAqIElmIGRhdGVPbmx5IGFuZCB0aW1lT25seSBhcmUgYm90aCBmYWxzZSwgcmV0dXJucyB0aW1lU2VsZWN0ZWQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgdXNlcidzIGRhdGUgcGx1cyB0aW1lIHByZWZlcmVuY2UuXHJcbiAgICovXHJcbiAgdHJhbnNmb3JtKFxyXG4gICAgdGltZVNlbGVjdGVkOiBzdHJpbmcsIFxyXG4gICAgb3B0aW9ucz86IFJlbGF0aXZlRGF0ZU9wdGlvbnNcclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBtb21lbnQodGltZVNlbGVjdGVkKTtcclxuICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KCk7XHJcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5Jyk7XHJcbiAgICBjb25zdCB0aW1lRGlzcGxheSA9IG9wdGlvbnM/LmRhdGVPbmx5ID8gYGAgOiBgICR7dGhpcy50aW1lRGlzcGxheVBpcGUudHJhbnNmb3JtKHRpbWVTZWxlY3RlZCl9YDtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBudWxsO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZC5pc1NhbWUodG9kYXksICdkYXknKSAmJiAhb3B0aW9ucz8uc2hvd1RpbWVGb3JUb2RheSkge1xyXG4gICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChvcHRpb25zPy50b2RheUxhYmVsID8gb3B0aW9ucz8udG9kYXlMYWJlbCA6ICd0b2RheScpO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZC5pc1NhbWUodG9kYXksICdkYXknKSAmJiBvcHRpb25zPy5zaG93VGltZUZvclRvZGF5ICYmICF0aW1lRGlzcGxheSkge1xyXG4gICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLnRpbWVEaXNwbGF5UGlwZS50cmFuc2Zvcm0odGltZVNlbGVjdGVkKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQuaXNTYW1lKHllc3RlcmRheSwgJ2RheScpKSB7XHJcbiAgICAgIGRpc3BsYXlWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG9wdGlvbnM/Lnllc3RlcmRheUxhYmVsID8gb3B0aW9ucz8ueWVzdGVyZGF5TGFiZWwgOiAneWVzdGVyZGF5Jyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLmRhdGVEaXNwbGF5UGlwZS50cmFuc2Zvcm0odGltZVNlbGVjdGVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtkaXNwbGF5VmFsdWV9JHt0aW1lRGlzcGxheX1gXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
export class RowCountPipe {
|
|
4
|
-
constructor(translateService) {
|
|
5
|
-
this.translateService = translateService;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Get the formatted row count for the results.
|
|
9
|
-
*
|
|
10
|
-
* Provide maxItemCount if the normal row count is needed.
|
|
11
|
-
* Provide pagingInfo if the paged row count is needed.
|
|
12
|
-
*/
|
|
13
|
-
//Note that totalPagedItemCount is not necessarily equal to pagingInfo.pageSize since the last page could have less than pageSize rows.
|
|
14
|
-
transform(results, objectType, maxItemCount, pagingInfo) {
|
|
15
|
-
let translated = this.translateService.instant(objectType || 'results');
|
|
16
|
-
if (maxItemCount !== undefined) {
|
|
17
|
-
return this.getResultsCount(results, translated, maxItemCount);
|
|
18
|
-
}
|
|
19
|
-
else if (pagingInfo) {
|
|
20
|
-
return this.getPagedResultsCount(results, translated, pagingInfo);
|
|
21
|
-
}
|
|
22
|
-
return '';
|
|
23
|
-
}
|
|
24
|
-
getResultsCount(results, objectType, maxItemCount) {
|
|
25
|
-
// If the filtered results count of rows is greater than the maximum number
|
|
26
|
-
// of results we want to show, we have already pared the results down,
|
|
27
|
-
// so tell user we are displaying the first `maxItemCount` results out of the total
|
|
28
|
-
// count of filtered results.
|
|
29
|
-
if (results.totalItems > maxItemCount) {
|
|
30
|
-
return `${maxItemCount} ${this.translateService.instant('of')} ${results.totalItems}`;
|
|
31
|
-
}
|
|
32
|
-
return `${results.totalItems} ${objectType}`;
|
|
33
|
-
}
|
|
34
|
-
getPagedResultsCount(results, objectType, pagingInfo) {
|
|
35
|
-
let prefix = `${pagingInfo.skip + 1}` + (results.totalItems > 1 ? `-${pagingInfo.skip + results.totalItems} ` : ' ');
|
|
36
|
-
return prefix + `${this.translateService.instant('of')} ${results.totalItemsBeforePaging} ${objectType}`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
RowCountPipe.decorators = [
|
|
40
|
-
{ type: Pipe, args: [{
|
|
41
|
-
name: 'rowCount'
|
|
42
|
-
},] }
|
|
43
|
-
];
|
|
44
|
-
RowCountPipe.ctorParameters = () => [
|
|
45
|
-
{ type: TranslateService }
|
|
46
|
-
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcm93LWNvdW50LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXdkQsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTFEOzs7OztPQUtHO0lBQ0gsdUlBQXVJO0lBQ3ZJLFNBQVMsQ0FBQyxPQUFxQixFQUFFLFVBQWtCLEVBQUUsWUFBcUIsRUFBRSxVQUF1QjtRQUNqRyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUN4RSxJQUFHLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDaEU7YUFBTSxJQUFHLFVBQVUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBR08sZUFBZSxDQUFDLE9BQXFCLEVBQUUsVUFBa0IsRUFBRSxZQUFvQjtRQUNyRiwyRUFBMkU7UUFDM0Usc0VBQXNFO1FBQ3RFLG1GQUFtRjtRQUNuRiw2QkFBNkI7UUFDN0IsSUFBSSxPQUFPLENBQUMsVUFBVSxHQUFHLFlBQVksRUFBRTtZQUNyQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3ZGO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQXFCLEVBQUUsVUFBa0IsRUFBRSxVQUFzQjtRQUM1RixJQUFJLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckgsT0FBTyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUMzRyxDQUFDOzs7WUF2Q0YsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ2pCOzs7WUFWUSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbyB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdGFibGUvdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgUm93Q291bnRJbmZvID0geyBcclxuICB0b3RhbEl0ZW1zOiBudW1iZXIsXHJcbiAgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlcixcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdyb3dDb3VudCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvd0NvdW50UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZm9ybWF0dGVkIHJvdyBjb3VudCBmb3IgdGhlIHJlc3VsdHMuXHJcbiAgICogXHJcbiAgICogUHJvdmlkZSBtYXhJdGVtQ291bnQgaWYgdGhlIG5vcm1hbCByb3cgY291bnQgaXMgbmVlZGVkLlxyXG4gICAqIFByb3ZpZGUgcGFnaW5nSW5mbyBpZiB0aGUgcGFnZWQgcm93IGNvdW50IGlzIG5lZWRlZC5cclxuICAgKi9cclxuICAvL05vdGUgdGhhdCB0b3RhbFBhZ2VkSXRlbUNvdW50IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBwYWdpbmdJbmZvLnBhZ2VTaXplIHNpbmNlIHRoZSBsYXN0IHBhZ2UgY291bGQgaGF2ZSBsZXNzIHRoYW4gcGFnZVNpemUgcm93cy5cclxuICB0cmFuc2Zvcm0ocmVzdWx0czogUm93Q291bnRJbmZvLCBvYmplY3RUeXBlOiBzdHJpbmcsIG1heEl0ZW1Db3VudD86IG51bWJlciwgcGFnaW5nSW5mbz86IFBhZ2luZ0luZm8pOiBzdHJpbmcge1xyXG4gICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChvYmplY3RUeXBlIHx8ICdyZXN1bHRzJyk7XHJcbiAgICBpZihtYXhJdGVtQ291bnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXN1bHRzQ291bnQocmVzdWx0cywgdHJhbnNsYXRlZCwgbWF4SXRlbUNvdW50KTtcclxuICAgIH0gZWxzZSBpZihwYWdpbmdJbmZvKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFBhZ2VkUmVzdWx0c0NvdW50KHJlc3VsdHMsIHRyYW5zbGF0ZWQsIHBhZ2luZ0luZm8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2V0UmVzdWx0c0NvdW50KHJlc3VsdHM6IFJvd0NvdW50SW5mbywgb2JqZWN0VHlwZTogc3RyaW5nLCBtYXhJdGVtQ291bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAvLyBJZiB0aGUgZmlsdGVyZWQgcmVzdWx0cyBjb3VudCBvZiByb3dzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSBudW1iZXJcclxuICAgIC8vIG9mIHJlc3VsdHMgd2Ugd2FudCB0byBzaG93LCB3ZSBoYXZlIGFscmVhZHkgcGFyZWQgdGhlIHJlc3VsdHMgZG93bixcclxuICAgIC8vIHNvIHRlbGwgdXNlciB3ZSBhcmUgZGlzcGxheWluZyB0aGUgZmlyc3QgYG1heEl0ZW1Db3VudGAgcmVzdWx0cyBvdXQgb2YgdGhlIHRvdGFsXHJcbiAgICAvLyBjb3VudCBvZiBmaWx0ZXJlZCByZXN1bHRzLlxyXG4gICAgaWYgKHJlc3VsdHMudG90YWxJdGVtcyA+IG1heEl0ZW1Db3VudCkge1xyXG4gICAgICByZXR1cm4gYCR7bWF4SXRlbUNvdW50fSAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvZicpfSAke3Jlc3VsdHMudG90YWxJdGVtc31gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3Jlc3VsdHMudG90YWxJdGVtc30gJHtvYmplY3RUeXBlfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2VkUmVzdWx0c0NvdW50KHJlc3VsdHM6IFJvd0NvdW50SW5mbywgb2JqZWN0VHlwZTogc3RyaW5nLCBwYWdpbmdJbmZvOiBQYWdpbmdJbmZvKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSBgJHtwYWdpbmdJbmZvLnNraXAgKyAxfWAgKyAocmVzdWx0cy50b3RhbEl0ZW1zID4gMSA/IGAtJHtwYWdpbmdJbmZvLnNraXAgKyByZXN1bHRzLnRvdGFsSXRlbXN9IGAgOiAnICcpO1xyXG4gICAgcmV0dXJuIHByZWZpeCArIGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvZicpfSAke3Jlc3VsdHMudG90YWxJdGVtc0JlZm9yZVBhZ2luZ30gJHtvYmplY3RUeXBlfWA7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { UserPreferenceService } from '../../user-preference.service';
|
|
3
|
-
import moment from 'moment';
|
|
4
|
-
/**
|
|
5
|
-
* Format a time to the user's preference for display
|
|
6
|
-
*/
|
|
7
|
-
export class TimeDisplayPipe {
|
|
8
|
-
constructor(userPreferenceService) {
|
|
9
|
-
this.userPreferenceService = userPreferenceService;
|
|
10
|
-
this.lastFormatString = 'HH:mm:ss';
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Format a time for display, accounting for user's display preferences.
|
|
14
|
-
*/
|
|
15
|
-
transform(time, showSeconds) {
|
|
16
|
-
let display = '';
|
|
17
|
-
let formatString = '';
|
|
18
|
-
// use user-preferred formats
|
|
19
|
-
this.userPreferenceService.getPreferences().subscribe(result => {
|
|
20
|
-
//if preferences exist then format time to users preference
|
|
21
|
-
//otherwise use the last user preference
|
|
22
|
-
if (result.preference) {
|
|
23
|
-
formatString = result.preference.timeFormat;
|
|
24
|
-
if (!showSeconds) {
|
|
25
|
-
formatString = formatString.replace(':ss', '');
|
|
26
|
-
}
|
|
27
|
-
this.lastFormatString = formatString;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
display = moment(time).format(this.lastFormatString);
|
|
31
|
-
return display;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
TimeDisplayPipe.decorators = [
|
|
35
|
-
{ type: Pipe, args: [{ name: 'timeDisplay' },] }
|
|
36
|
-
];
|
|
37
|
-
TimeDisplayPipe.ctorParameters = () => [
|
|
38
|
-
{ type: UserPreferenceService }
|
|
39
|
-
];
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvdGltZS1kaXNwbGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFFeEQscUJBQWdCLEdBQVcsVUFBVSxDQUFDO0lBRnNCLENBQUM7SUFJckU7O09BRUc7SUFDSCxTQUFTLENBQUMsSUFBa0IsRUFBRSxXQUFxQjtRQUNqRCxJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7UUFDekIsSUFBSSxZQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTlCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzdELDREQUE0RDtZQUM1RCx3Q0FBd0M7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUNyQixZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVcsQ0FBQyxVQUFXLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2hCLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDaEQ7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQzthQUN0QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7O1lBNUJGLElBQUksU0FBQyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUM7OztZQVBsQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBEYXRlRGlzcGxheSB9IGZyb20gJy4vZGF0ZS1kaXNwbGF5LnBpcGUnO1xyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCBhIHRpbWUgdG8gdGhlIHVzZXIncyBwcmVmZXJlbmNlIGZvciBkaXNwbGF5XHJcbiAqL1xyXG5AUGlwZSh7bmFtZTogJ3RpbWVEaXNwbGF5J30pXHJcbmV4cG9ydCBjbGFzcyBUaW1lRGlzcGxheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlU2VydmljZSkgeyB9XHJcblxyXG4gIHByaXZhdGUgbGFzdEZvcm1hdFN0cmluZzogc3RyaW5nID0gJ0hIOm1tOnNzJztcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IGEgdGltZSBmb3IgZGlzcGxheSwgYWNjb3VudGluZyBmb3IgdXNlcidzIGRpc3BsYXkgcHJlZmVyZW5jZXMuXHJcbiAgICovXHJcbiAgdHJhbnNmb3JtKHRpbWU/OiBEYXRlRGlzcGxheSwgc2hvd1NlY29uZHM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBkaXNwbGF5OiBzdHJpbmcgPSAnJztcclxuICAgIGxldCBmb3JtYXRTdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gICAgXHJcbiAgICAvLyB1c2UgdXNlci1wcmVmZXJyZWQgZm9ybWF0c1xyXG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuZ2V0UHJlZmVyZW5jZXMoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy9pZiBwcmVmZXJlbmNlcyBleGlzdCB0aGVuIGZvcm1hdCB0aW1lIHRvIHVzZXJzIHByZWZlcmVuY2UgXHJcbiAgICAgIC8vb3RoZXJ3aXNlIHVzZSB0aGUgbGFzdCB1c2VyIHByZWZlcmVuY2VcclxuICAgICAgaWYgKHJlc3VsdC5wcmVmZXJlbmNlKSB7XHJcbiAgICAgICAgZm9ybWF0U3RyaW5nID0gcmVzdWx0LnByZWZlcmVuY2UhLnRpbWVGb3JtYXQhO1xyXG4gICAgICAgIGlmICghc2hvd1NlY29uZHMpIHtcclxuICAgICAgICAgIGZvcm1hdFN0cmluZyA9IGZvcm1hdFN0cmluZy5yZXBsYWNlKCc6c3MnLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdEZvcm1hdFN0cmluZyA9IGZvcm1hdFN0cmluZztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBkaXNwbGF5ID0gbW9tZW50KHRpbWUpLmZvcm1hdCh0aGlzLmxhc3RGb3JtYXRTdHJpbmcpO1xyXG4gICAgcmV0dXJuIGRpc3BsYXk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|