@agorapulse/ui-components 14.0.5 → 14.0.6
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/{src/lib/add-comment → add-comment}/add-comment.component.d.ts +1 -1
- package/add-comment/index.d.ts +5 -0
- package/add-comment/public_api.d.ts +1 -0
- package/agorapulse-ui-components-14.0.6.tgz +0 -0
- package/{src/lib/avatar → avatar}/avatar.component.d.ts +1 -1
- package/avatar/index.d.ts +5 -0
- package/avatar/public_api.d.ts +1 -0
- package/{src/lib/confirm-modal → confirm-modal}/confirm-modal-texts.model.d.ts +0 -0
- package/{src/lib/confirm-modal → confirm-modal}/confirm-modal.component.d.ts +2 -2
- package/confirm-modal/index.d.ts +5 -0
- package/confirm-modal/public_api.d.ts +2 -0
- package/{src/lib/datepicker → datepicker}/datepicker.component.d.ts +2 -2
- package/datepicker/index.d.ts +5 -0
- package/datepicker/public_api.d.ts +1 -0
- package/{src/lib/directives → directives}/autosize-textarea.directive.d.ts +1 -1
- package/{src/lib/directives → directives}/default-image.directive.d.ts +1 -1
- package/{src/lib/directives → directives}/ellipsis.directive.d.ts +1 -1
- package/{src/lib/directives → directives}/equal-validator.directive.d.ts +1 -1
- package/{src/lib/directives → directives}/frozen-gif.directive.d.ts +1 -1
- package/directives/index.d.ts +5 -0
- package/{src/lib/directives → directives}/multi-style-text.directive.d.ts +1 -1
- package/directives/public_api.d.ts +7 -0
- package/{src/lib/directives → directives}/truncate-tooltip.directive.d.ts +2 -3
- package/{src/lib/dots-stepper → dots-stepper}/dots-stepper.component.d.ts +1 -1
- package/dots-stepper/index.d.ts +5 -0
- package/dots-stepper/public_api.d.ts +1 -0
- package/esm2020/add-comment/add-comment.component.mjs +70 -0
- package/esm2020/add-comment/agorapulse-ui-components-add-comment.mjs +5 -0
- package/esm2020/add-comment/public_api.mjs +2 -0
- package/esm2020/avatar/agorapulse-ui-components-avatar.mjs +5 -0
- package/esm2020/avatar/avatar.component.mjs +138 -0
- package/esm2020/avatar/public_api.mjs +2 -0
- package/esm2020/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +5 -0
- package/esm2020/confirm-modal/confirm-modal-texts.model.mjs +2 -0
- package/esm2020/confirm-modal/confirm-modal.component.mjs +61 -0
- package/esm2020/confirm-modal/public_api.mjs +3 -0
- package/esm2020/datepicker/agorapulse-ui-components-datepicker.mjs +5 -0
- package/esm2020/datepicker/datepicker.component.mjs +225 -0
- package/esm2020/datepicker/public_api.mjs +2 -0
- package/esm2020/directives/agorapulse-ui-components-directives.mjs +5 -0
- package/esm2020/directives/autosize-textarea.directive.mjs +44 -0
- package/esm2020/directives/default-image.directive.mjs +32 -0
- package/esm2020/directives/ellipsis.directive.mjs +86 -0
- package/esm2020/directives/equal-validator.directive.mjs +66 -0
- package/esm2020/directives/frozen-gif.directive.mjs +116 -0
- package/esm2020/directives/multi-style-text.directive.mjs +136 -0
- package/esm2020/directives/public_api.mjs +8 -0
- package/esm2020/directives/truncate-tooltip.directive.mjs +33 -0
- package/esm2020/dots-stepper/agorapulse-ui-components-dots-stepper.mjs +5 -0
- package/esm2020/dots-stepper/dots-stepper.component.mjs +43 -0
- package/esm2020/dots-stepper/public_api.mjs +2 -0
- package/esm2020/index.mjs +27 -33
- package/esm2020/infobox/agorapulse-ui-components-infobox.mjs +5 -0
- package/esm2020/infobox/infobox.component.mjs +30 -0
- package/esm2020/infobox/public_api.mjs +2 -0
- package/esm2020/labels/agorapulse-ui-components-labels.mjs +5 -0
- package/esm2020/labels/label-list.component.mjs +101 -0
- package/esm2020/labels/label.component.mjs +56 -0
- package/esm2020/labels/public_api.mjs +3 -0
- package/esm2020/labels-selector/agorapulse-ui-components-labels-selector.mjs +5 -0
- package/esm2020/labels-selector/labels-selector.component.mjs +95 -0
- package/esm2020/labels-selector/public_api.mjs +2 -0
- package/esm2020/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +5 -0
- package/esm2020/media-display-overlay/media-display-overlay-dialog.component.mjs +88 -0
- package/esm2020/media-display-overlay/public_api.mjs +2 -0
- package/esm2020/modal/agorapulse-ui-components-modal.mjs +5 -0
- package/esm2020/modal/modal.component.mjs +99 -0
- package/esm2020/modal/public_api.mjs +2 -0
- package/esm2020/notification/agorapulse-ui-components-notification.mjs +5 -0
- package/esm2020/notification/notification.component.mjs +17 -0
- package/esm2020/notification/public_api.mjs +2 -0
- package/esm2020/paginator/agorapulse-ui-components-paginator.mjs +5 -0
- package/esm2020/paginator/paginator-button/paginator-button.component.mjs +24 -0
- package/esm2020/paginator/paginator.component.mjs +56 -0
- package/esm2020/paginator/public_api.mjs +3 -0
- package/esm2020/password-input/agorapulse-ui-components-password-input.mjs +5 -0
- package/esm2020/password-input/password-input.component.mjs +70 -0
- package/esm2020/password-input/public_api.mjs +2 -0
- package/esm2020/popmenu/agorapulse-ui-components-popmenu.mjs +5 -0
- package/esm2020/popmenu/options.mjs +17 -0
- package/esm2020/popmenu/popmenu-options.interface.mjs +2 -0
- package/esm2020/popmenu/popmenu-options.service.mjs +7 -0
- package/esm2020/popmenu/popmenu.component.mjs +368 -0
- package/esm2020/popmenu/popmenu.directive.mjs +241 -0
- package/esm2020/popmenu/popmenu.module.mjs +35 -0
- package/esm2020/{src/lib/popmenu/index.mjs → popmenu/public_api.mjs} +1 -1
- package/esm2020/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +5 -0
- package/esm2020/slide-toggle/public_api.mjs +2 -0
- package/esm2020/slide-toggle/slide-toggle.component.mjs +65 -0
- package/esm2020/snackbar/agorapulse-ui-components-snackbar.mjs +5 -0
- package/esm2020/snackbar/public_api.mjs +2 -0
- package/esm2020/snackbar/snackbar.component.mjs +22 -0
- package/esm2020/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +5 -0
- package/esm2020/snackbars-thread/component/snackbars-thread.component.mjs +71 -0
- package/esm2020/snackbars-thread/model/snackbars-thread.model.mjs +41 -0
- package/esm2020/snackbars-thread/public_api.mjs +4 -0
- package/esm2020/snackbars-thread/service/snackbars-thread.service.mjs +41 -0
- package/esm2020/snackbars-thread/utils/const/snackbars-thread.const.mjs +13 -0
- package/esm2020/src/lib/agorapulse-ui-components.module.mjs +60 -87
- package/esm2020/stepper/agorapulse-ui-components-stepper.mjs +5 -0
- package/esm2020/stepper/public_api.mjs +3 -0
- package/esm2020/stepper/step.model.mjs +2 -0
- package/esm2020/stepper/stepper.component.mjs +37 -0
- package/esm2020/text-measurement/agorapulse-ui-components-text-measurement.mjs +5 -0
- package/esm2020/text-measurement/public_api.mjs +2 -0
- package/esm2020/text-measurement/text-measurement.service.mjs +28 -0
- package/esm2020/tooltip-neo/agorapulse-ui-components-tooltip-neo.mjs +5 -0
- package/esm2020/tooltip-neo/public_api.mjs +4 -0
- package/esm2020/tooltip-neo/tooltip-neo.component.mjs +44 -0
- package/esm2020/tooltip-neo/tooltip-neo.const.mjs +67 -0
- package/esm2020/tooltip-neo/tooltip-neo.directive.mjs +156 -0
- package/esm2020/tooltip-neo/tooltip-neo.model.mjs +2 -0
- package/esm2020/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.service.mjs +1 -1
- package/fesm2015/agorapulse-ui-components-add-comment.mjs +77 -0
- package/fesm2015/agorapulse-ui-components-add-comment.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-avatar.mjs +146 -0
- package/fesm2015/agorapulse-ui-components-avatar.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-confirm-modal.mjs +68 -0
- package/fesm2015/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-datepicker.mjs +235 -0
- package/fesm2015/agorapulse-ui-components-datepicker.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-directives.mjs +509 -0
- package/fesm2015/agorapulse-ui-components-directives.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-dots-stepper.mjs +50 -0
- package/fesm2015/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-infobox.mjs +37 -0
- package/fesm2015/agorapulse-ui-components-infobox.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-labels-selector.mjs +103 -0
- package/fesm2015/agorapulse-ui-components-labels-selector.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-labels.mjs +160 -0
- package/fesm2015/agorapulse-ui-components-labels.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs +97 -0
- package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-modal.mjs +106 -0
- package/fesm2015/agorapulse-ui-components-modal.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-notification.mjs +24 -0
- package/fesm2015/agorapulse-ui-components-notification.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-paginator.mjs +82 -0
- package/fesm2015/agorapulse-ui-components-paginator.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-password-input.mjs +77 -0
- package/fesm2015/agorapulse-ui-components-password-input.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-popmenu.mjs +666 -0
- package/fesm2015/agorapulse-ui-components-popmenu.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-slide-toggle.mjs +72 -0
- package/fesm2015/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-snackbar.mjs +31 -0
- package/fesm2015/agorapulse-ui-components-snackbar.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs +169 -0
- package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-stepper.mjs +45 -0
- package/fesm2015/agorapulse-ui-components-stepper.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-text-measurement.mjs +35 -0
- package/fesm2015/agorapulse-ui-components-text-measurement.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components-tooltip-neo.mjs +283 -0
- package/fesm2015/agorapulse-ui-components-tooltip-neo.mjs.map +1 -0
- package/fesm2015/agorapulse-ui-components.mjs +82 -2824
- package/fesm2015/agorapulse-ui-components.mjs.map +1 -1
- package/fesm2020/agorapulse-ui-components-add-comment.mjs +77 -0
- package/fesm2020/agorapulse-ui-components-add-comment.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-avatar.mjs +145 -0
- package/fesm2020/agorapulse-ui-components-avatar.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-confirm-modal.mjs +68 -0
- package/fesm2020/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-datepicker.mjs +232 -0
- package/fesm2020/agorapulse-ui-components-datepicker.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-directives.mjs +507 -0
- package/fesm2020/agorapulse-ui-components-directives.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-dots-stepper.mjs +50 -0
- package/fesm2020/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-infobox.mjs +37 -0
- package/fesm2020/agorapulse-ui-components-infobox.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-labels-selector.mjs +102 -0
- package/fesm2020/agorapulse-ui-components-labels-selector.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-labels.mjs +160 -0
- package/fesm2020/agorapulse-ui-components-labels.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs +95 -0
- package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-modal.mjs +106 -0
- package/fesm2020/agorapulse-ui-components-modal.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-notification.mjs +24 -0
- package/fesm2020/agorapulse-ui-components-notification.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-paginator.mjs +82 -0
- package/fesm2020/agorapulse-ui-components-paginator.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-password-input.mjs +77 -0
- package/fesm2020/agorapulse-ui-components-password-input.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-popmenu.mjs +664 -0
- package/fesm2020/agorapulse-ui-components-popmenu.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-slide-toggle.mjs +72 -0
- package/fesm2020/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-snackbar.mjs +29 -0
- package/fesm2020/agorapulse-ui-components-snackbar.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs +169 -0
- package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-stepper.mjs +44 -0
- package/fesm2020/agorapulse-ui-components-stepper.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-text-measurement.mjs +35 -0
- package/fesm2020/agorapulse-ui-components-text-measurement.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components-tooltip-neo.mjs +282 -0
- package/fesm2020/agorapulse-ui-components-tooltip-neo.mjs.map +1 -0
- package/fesm2020/agorapulse-ui-components.mjs +79 -2807
- package/fesm2020/agorapulse-ui-components.mjs.map +1 -1
- package/index.d.ts +28 -34
- package/infobox/index.d.ts +5 -0
- package/{src/lib/infobox → infobox}/infobox.component.d.ts +1 -1
- package/infobox/public_api.d.ts +1 -0
- package/labels/index.d.ts +5 -0
- package/{src/lib/labels → labels}/label-list.component.d.ts +2 -2
- package/{src/lib/labels → labels}/label.component.d.ts +2 -2
- package/labels/public_api.d.ts +2 -0
- package/labels-selector/index.d.ts +5 -0
- package/{src/lib/labels-selector → labels-selector}/labels-selector.component.d.ts +2 -2
- package/labels-selector/public_api.d.ts +1 -0
- package/media-display-overlay/index.d.ts +5 -0
- package/{src/lib/media-display-overlay → media-display-overlay}/media-display-overlay-dialog.component.d.ts +1 -1
- package/media-display-overlay/public_api.d.ts +1 -0
- package/modal/index.d.ts +5 -0
- package/{src/lib/modal → modal}/modal.component.d.ts +3 -4
- package/modal/public_api.d.ts +1 -0
- package/notification/index.d.ts +5 -0
- package/{src/lib/notification → notification}/notification.component.d.ts +1 -1
- package/notification/public_api.d.ts +1 -0
- package/package.json +169 -1
- package/paginator/index.d.ts +5 -0
- package/{src/lib/paginator → paginator}/paginator-button/paginator-button.component.d.ts +1 -1
- package/{src/lib/paginator → paginator}/paginator.component.d.ts +1 -1
- package/paginator/public_api.d.ts +2 -0
- package/password-input/index.d.ts +5 -0
- package/{src/lib/password-input → password-input}/password-input.component.d.ts +1 -1
- package/password-input/public_api.d.ts +1 -0
- package/popmenu/index.d.ts +5 -0
- package/{src/lib/popmenu → popmenu}/options.d.ts +0 -0
- package/{src/lib/popmenu → popmenu}/popmenu-options.interface.d.ts +0 -0
- package/{src/lib/popmenu → popmenu}/popmenu-options.service.d.ts +0 -0
- package/{src/lib/popmenu → popmenu}/popmenu.component.d.ts +1 -1
- package/{src/lib/popmenu → popmenu}/popmenu.directive.d.ts +1 -1
- package/{src/lib/popmenu → popmenu}/popmenu.module.d.ts +1 -4
- package/{src/lib/popmenu/index.d.ts → popmenu/public_api.d.ts} +0 -0
- package/slide-toggle/index.d.ts +5 -0
- package/slide-toggle/public_api.d.ts +1 -0
- package/{src/lib/slide-toggle → slide-toggle}/slide-toggle.component.d.ts +1 -1
- package/snackbar/index.d.ts +5 -0
- package/snackbar/public_api.d.ts +1 -0
- package/{src/lib/snackbar → snackbar}/snackbar.component.d.ts +1 -1
- package/{src/lib/snackbars-thread → snackbars-thread}/component/snackbars-thread.component.d.ts +1 -1
- package/snackbars-thread/index.d.ts +5 -0
- package/{src/lib/snackbars-thread → snackbars-thread}/model/snackbars-thread.model.d.ts +1 -1
- package/snackbars-thread/public_api.d.ts +3 -0
- package/{src/lib/snackbars-thread → snackbars-thread}/service/snackbars-thread.service.d.ts +0 -0
- package/{src/lib/snackbars-thread → snackbars-thread}/utils/const/snackbars-thread.const.d.ts +0 -0
- package/src/lib/agorapulse-ui-components.module.d.ts +24 -38
- package/stepper/index.d.ts +5 -0
- package/stepper/public_api.d.ts +2 -0
- package/{src/lib/stepper → stepper}/step.model.d.ts +0 -0
- package/{src/lib/stepper → stepper}/stepper.component.d.ts +1 -1
- package/text-measurement/index.d.ts +5 -0
- package/text-measurement/public_api.d.ts +1 -0
- package/{src/lib/text-measurement → text-measurement}/text-measurement.service.d.ts +0 -0
- package/tooltip-neo/index.d.ts +5 -0
- package/tooltip-neo/public_api.d.ts +3 -0
- package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.component.d.ts +1 -1
- package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.const.d.ts +0 -0
- package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.directive.d.ts +2 -2
- package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.model.d.ts +0 -0
- package/{src/lib/tooltip-neo → tooltip-neo}/tooltip-neo.service.d.ts +0 -0
- package/agorapulse-ui-components-14.0.5.tgz +0 -0
- package/esm2020/src/lib/add-comment/add-comment.component.mjs +0 -64
- package/esm2020/src/lib/avatar/avatar.component.mjs +0 -137
- package/esm2020/src/lib/confirm-modal/confirm-modal-texts.model.mjs +0 -2
- package/esm2020/src/lib/confirm-modal/confirm-modal.component.mjs +0 -61
- package/esm2020/src/lib/datepicker/datepicker.component.mjs +0 -219
- package/esm2020/src/lib/directives/autosize-textarea.directive.mjs +0 -43
- package/esm2020/src/lib/directives/default-image.directive.mjs +0 -31
- package/esm2020/src/lib/directives/ellipsis.directive.mjs +0 -85
- package/esm2020/src/lib/directives/equal-validator.directive.mjs +0 -65
- package/esm2020/src/lib/directives/frozen-gif.directive.mjs +0 -115
- package/esm2020/src/lib/directives/multi-style-text.directive.mjs +0 -135
- package/esm2020/src/lib/directives/truncate-tooltip.directive.mjs +0 -33
- package/esm2020/src/lib/dots-stepper/dots-stepper.component.mjs +0 -43
- package/esm2020/src/lib/infobox/infobox.component.mjs +0 -24
- package/esm2020/src/lib/labels/label-list.component.mjs +0 -98
- package/esm2020/src/lib/labels/label.component.mjs +0 -53
- package/esm2020/src/lib/labels-selector/labels-selector.component.mjs +0 -92
- package/esm2020/src/lib/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -87
- package/esm2020/src/lib/modal/modal.component.mjs +0 -96
- package/esm2020/src/lib/notification/notification.component.mjs +0 -17
- package/esm2020/src/lib/paginator/paginator-button/paginator-button.component.mjs +0 -23
- package/esm2020/src/lib/paginator/paginator.component.mjs +0 -54
- package/esm2020/src/lib/password-input/password-input.component.mjs +0 -69
- package/esm2020/src/lib/popmenu/options.mjs +0 -17
- package/esm2020/src/lib/popmenu/popmenu-options.interface.mjs +0 -2
- package/esm2020/src/lib/popmenu/popmenu-options.service.mjs +0 -7
- package/esm2020/src/lib/popmenu/popmenu.component.mjs +0 -357
- package/esm2020/src/lib/popmenu/popmenu.directive.mjs +0 -240
- package/esm2020/src/lib/popmenu/popmenu.module.mjs +0 -47
- package/esm2020/src/lib/slide-toggle/slide-toggle.component.mjs +0 -67
- package/esm2020/src/lib/snackbar/snackbar.component.mjs +0 -21
- package/esm2020/src/lib/snackbars-thread/component/snackbars-thread.component.mjs +0 -70
- package/esm2020/src/lib/snackbars-thread/model/snackbars-thread.model.mjs +0 -41
- package/esm2020/src/lib/snackbars-thread/service/snackbars-thread.service.mjs +0 -41
- package/esm2020/src/lib/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
- package/esm2020/src/lib/stepper/step.model.mjs +0 -2
- package/esm2020/src/lib/stepper/stepper.component.mjs +0 -36
- package/esm2020/src/lib/text-measurement/text-measurement.service.mjs +0 -28
- package/esm2020/src/lib/tooltip-neo/tooltip-neo.component.mjs +0 -44
- package/esm2020/src/lib/tooltip-neo/tooltip-neo.const.mjs +0 -67
- package/esm2020/src/lib/tooltip-neo/tooltip-neo.directive.mjs +0 -137
- package/esm2020/src/lib/tooltip-neo/tooltip-neo.model.mjs +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-datepicker.mjs","sources":["../../../libs/ui-components/datepicker/src/datepicker.component.ts","../../../libs/ui-components/datepicker/src/datepicker.component.html","../../../libs/ui-components/datepicker/src/agorapulse-ui-components-datepicker.ts"],"sourcesContent":["import {AgorapulseUiSymbolModule} from '@agorapulse/ui-symbol';\nimport {NgIf} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport moment, {Moment} from 'moment';\nimport {DaterangepickerComponent, NgxDaterangepickerMd} from 'ngx-daterangepicker-material';\n\nexport enum DatepickerMode {\n Single = 'Single',\n Multiple = 'Multiple',\n Range = 'Range',\n}\n\nexport interface Period {\n startDate: Moment;\n endDate: Moment;\n}\n\nexport interface I18nDatePicker {\n ranges: {\n yesterday: string;\n lastWeek: string;\n last30Days: string;\n lastMonth: string;\n thisMonth: string;\n }\n}\n\nenum SideEnum {\n left = \"left\",\n right = \"right\"\n}\n\n// TODO fix css for range mode (more lateral padding)\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-datepicker',\n templateUrl: './datepicker.component.html',\n standalone: true,\n imports: [AgorapulseUiSymbolModule, NgIf, NgxDaterangepickerMd],\n styleUrls: ['./datepicker.component.scss'],\n})\nexport class DatepickerComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('datepickerRef') datepickerRef: DaterangepickerComponent;\n\n @Input() firstDayOfWeek: string;\n @Input() i18n: I18nDatePicker = {\n ranges: {\n yesterday: 'Yesterday',\n lastWeek: 'Last Week',\n last30Days: 'Last 30 days',\n lastMonth: 'Previous month',\n thisMonth: 'This Month',\n },\n };\n @Input() locale;\n @Input() maxDate: Moment;\n @Input() minDate: Moment;\n @Input() mode: DatepickerMode;\n @Input() selectedDate: Moment;\n @Input() selectedDates: Moment[] = [];\n @Input() selectedPeriod: Period = {startDate: null, endDate: null};\n @Input() showRanges: boolean;\n\n @Output() dateSelected = new EventEmitter<any>();\n @Output() periodSelected = new EventEmitter<Period>();\n\n DatepickerMode = DatepickerMode;\n doubleCalendarWidth = 528; // 231px calendar table * 2 = 462 (+ 16px x-padding * 4 = 64)\n localeConfig: {\n customRangeLabel: string;\n daysOfWeek: string[];\n monthNames: string[];\n firstDay: number;\n };\n ranges: {[period: string]: [Moment, Moment]} = {};\n rangePickerWidth = 150;\n width: number;\n pageSet = false;\n\n constructor(public changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.initRanges();\n this.initDatePickerLocale();\n }\n\n ngOnChanges(changes) {\n this.setWidth();\n if (this.datepickerRef) {\n setTimeout(() => {\n this.datepickerRef.updateCalendars();\n this.changeDetectorRef.detectChanges();\n }, 100);\n }\n if (changes.selectedPeriod?.currentValue && this.datepickerRef) {\n if (this.selectedPeriod.startDate === null && this.selectedPeriod.endDate === null) {\n this.datepickerRef.clear();\n } else {\n this.datepickerRef.setStartDate(this.selectedPeriod.startDate);\n this.datepickerRef.setEndDate(this.selectedPeriod.endDate);\n }\n }\n if (changes.mode?.currentValue === DatepickerMode.Single && this.datepickerRef) {\n this.setCalendarCurrentPage();\n }\n }\n ngAfterViewInit(): void {\n if (this.datepickerRef) {\n setTimeout(() => {\n this.datepickerRef.updateCalendars();\n this.setCalendarCurrentPage();\n }, 100);\n }\n }\n\n initDatePickerLocale() {\n if (this.locale) {\n moment.locale(this.locale);\n }\n let firstDayOfWeekIndex: number;\n if (this.firstDayOfWeek === 'sunday') {\n firstDayOfWeekIndex = 0;\n } else if (this.firstDayOfWeek === 'monday') {\n firstDayOfWeekIndex = 1;\n } else {\n firstDayOfWeekIndex = moment.localeData().firstDayOfWeek();\n }\n this.localeConfig = {\n customRangeLabel: 'custom',\n daysOfWeek: moment.weekdaysMin(),\n monthNames: moment.months(),\n firstDay: firstDayOfWeekIndex,\n };\n }\n\n initRanges() {\n this.ranges[this.i18n.ranges.yesterday] = [moment().subtract(1, 'days'), moment().subtract(1, 'days')];\n this.ranges[this.i18n.ranges.lastWeek] = [moment().subtract(7, 'days'), moment().subtract(1, 'days')];\n this.ranges[this.i18n.ranges.last30Days] = [moment().subtract(30, 'days'), moment().subtract(1, 'days')];\n this.ranges[this.i18n.ranges.lastMonth] = [\n moment().subtract(1, 'month').startOf('month'),\n moment().subtract(1, 'month').endOf('month'),\n ];\n this.ranges[this.i18n.ranges.thisMonth] = [moment().startOf('month'), moment().endOf('month')];\n }\n\n isCustomDate = (date: any) => {\n const classes: string[] = [];\n if (this.mode === DatepickerMode.Multiple) {\n classes.push(this.isSelected(date) ? 'active' : 'force-inactive');\n } else if (this.mode === DatepickerMode.Single) {\n classes.push(this.selectedDate && this.selectedDate.isSame(date, 'day') ? 'active' : 'force-inactive');\n } else if (this.mode === DatepickerMode.Range) {\n classes.push('range-picker-mode');\n // Workaround to fix the auto-active today date when no date is selected\n if (moment().isSame(date, 'day') && !this.selectedPeriod?.startDate && !this.selectedPeriod?.endDate) {\n classes.push('force-inactive');\n }\n }\n return classes;\n };\n\n private isSelected(date: any) {\n return this.selectedDates && this.selectedDates.some(selectedDate => selectedDate.isSame(date, 'day'));\n }\n\n onStartDateChanged(event: any) {\n const date = event.startDate;\n if (this.mode !== DatepickerMode.Range) {\n this.selectedDate = date;\n this.datepickerRef.setEndDate(date);\n if (this.pageSet) {\n this.pageSet = false;\n } else {\n this.dateSelected.emit(date.clone());\n if (this.mode === DatepickerMode.Multiple) {\n this.selectedDates.push(date);\n }\n }\n if (this.datepickerRef) {\n this.datepickerRef.updateCalendars();\n }\n }\n }\n\n onDatesUpdated(event: any) {\n if (this.mode === DatepickerMode.Range) {\n this.periodSelected.emit({\n startDate: event.startDate?.clone(),\n endDate: event.endDate?.clone(),\n });\n }\n if (this.datepickerRef) {\n this.datepickerRef.updateCalendars();\n }\n }\n\n onNextMonth() {\n this.datepickerRef.leftCalendar.month = this.datepickerRef.leftCalendar.month.add(1, 'months').clone();\n this.datepickerRef.rightCalendar.month = this.datepickerRef.rightCalendar.month.add(1, 'months').clone();\n this.datepickerRef.clickNext(SideEnum.left);\n this.datepickerRef.clickNext(SideEnum.right);\n }\n\n onPreviousMonth() {\n this.datepickerRef.leftCalendar.month = this.datepickerRef.leftCalendar.month.subtract(1, 'months').clone();\n this.datepickerRef.rightCalendar.month = this.datepickerRef.rightCalendar.month.subtract(1, 'months').clone();\n this.datepickerRef.clickPrev(SideEnum.left);\n this.datepickerRef.clickPrev(SideEnum.right);\n }\n\n /**\n * Ugly hack used here to open the calendar on the right day if they are selected dates\n * * https://github.com/fetrarij/ngx-daterangepicker-material/issues/139\n */\n setCalendarCurrentPage(): void {\n const selectedFirstDate = this.selectedDates.length > 0 ? this.selectedDates[0] : this.selectedDate;\n if (selectedFirstDate && selectedFirstDate.isValid() && this.mode !== DatepickerMode.Range) {\n const endDate = selectedFirstDate.clone();\n endDate.add(1, 'month');\n this.pageSet = true;\n this.datepickerRef.setStartDate(selectedFirstDate);\n this.datepickerRef.setEndDate(endDate);\n this.datepickerRef.updateView();\n }\n this.changeDetectorRef.detectChanges();\n }\n\n setWidth() {\n this.width =\n this.showRanges && this.mode === DatepickerMode.Range\n ? this.doubleCalendarWidth + this.rangePickerWidth\n : this.doubleCalendarWidth;\n }\n}\n","<div class=\"custom-calendar\" [style.width]=\"width + 'px'\">\n <div class=\"custom-header\">\n <div class=\"month-header\"\n *ngIf=\"this.datepickerRef.leftCalendar.month\">\n <div class=\"month-arrow-button\" (click)=\"onPreviousMonth()\">\n <ap-symbol\n [symbolId]=\"'arrow-left-1'\"\n [color]=\"'#858FA1'\"\n [size]=\"'14'\"></ap-symbol>\n </div>\n <div class=\"month-label\">\n {{ this.datepickerRef.leftCalendar.month.locale(locale).format('MMMM YYYY') }}\n </div>\n </div>\n <div class=\"month-header\"\n *ngIf=\"this.datepickerRef.rightCalendar.month\">\n <div class=\"month-label\">\n {{ this.datepickerRef.rightCalendar.month.locale(locale).format('MMMM YYYY') }}\n </div>\n <div class=\"month-arrow-button\" (click)=\"onNextMonth()\">\n <ap-symbol\n [symbolId]=\"'arrow-right-1'\"\n [color]=\"'#858FA1'\"\n [size]=\"'14'\"></ap-symbol>\n </div>\n </div>\n <div class=\"header-filler\" *ngIf=\"showRanges && mode === DatepickerMode.Range\">\n </div>\n </div>\n <ngx-daterangepicker-material\n #datepickerRef\n [class.hide-ranges]=\"!showRanges\"\n [alwaysShowCalendars]=\"true\"\n [autoApply]=\"true\"\n [customRangeDirection]=\"true\"\n [isCustomDate]=\"$any(isCustomDate)\"\n [locale]=\"localeConfig\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [ranges]=\"showRanges && mode === DatepickerMode.Range ? ranges : null\"\n (datesUpdated)=\"onDatesUpdated($event)\"\n (startDateChanged)=\"onStartDateChanged($event)\">\n </ngx-daterangepicker-material>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, HostListener, Input, EventEmitter, Output, forwardRef, Attribute } from '@angular/core';
|
|
3
|
+
import { NG_VALIDATORS } from '@angular/forms';
|
|
4
|
+
import { fromEvent } from 'rxjs';
|
|
5
|
+
import * as i1 from '@agorapulse/ui-components/tooltip-neo';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* expand textarea to fit content. Doesn't shrink.
|
|
9
|
+
*/
|
|
10
|
+
class AutosizeTextareaDirective {
|
|
11
|
+
constructor(element) {
|
|
12
|
+
this.element = element;
|
|
13
|
+
}
|
|
14
|
+
onInput() {
|
|
15
|
+
this.resize();
|
|
16
|
+
}
|
|
17
|
+
ngAfterContentChecked() {
|
|
18
|
+
this.resize();
|
|
19
|
+
}
|
|
20
|
+
resize() {
|
|
21
|
+
const style = this.element.nativeElement.style;
|
|
22
|
+
const scrollHeight = this.element.nativeElement.scrollHeight;
|
|
23
|
+
const actualHeight = this.element.nativeElement.offsetHeight;
|
|
24
|
+
if (AutosizeTextareaDirective.maxHeight < scrollHeight) {
|
|
25
|
+
// we arrived at the max
|
|
26
|
+
style.overflow = 'auto';
|
|
27
|
+
style.height = `${AutosizeTextareaDirective.maxHeight}px`;
|
|
28
|
+
}
|
|
29
|
+
else if (actualHeight < scrollHeight) {
|
|
30
|
+
style.overflow = 'hidden';
|
|
31
|
+
style.height = `${scrollHeight}px`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
AutosizeTextareaDirective.maxHeight = 200;
|
|
36
|
+
AutosizeTextareaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AutosizeTextareaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
37
|
+
AutosizeTextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: AutosizeTextareaDirective, isStandalone: true, selector: "textarea[apAutosize]", host: { listeners: { "input": "onInput()" } }, ngImport: i0 });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AutosizeTextareaDirective, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: 'textarea[apAutosize]',
|
|
42
|
+
standalone: true
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onInput: [{
|
|
45
|
+
type: HostListener,
|
|
46
|
+
args: ['input']
|
|
47
|
+
}] } });
|
|
48
|
+
|
|
49
|
+
class DefaultImageDirective {
|
|
50
|
+
updateUrl() {
|
|
51
|
+
if (this.default) {
|
|
52
|
+
this.src = this.default;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.src = 'assets/lib-ui-components/img/default-avatar.png';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
DefaultImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DefaultImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
60
|
+
DefaultImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: DefaultImageDirective, isStandalone: true, selector: "img[default]", inputs: { src: "src", default: "default" }, host: { listeners: { "error": "updateUrl()" }, properties: { "src": "src" } }, ngImport: i0 });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DefaultImageDirective, decorators: [{
|
|
62
|
+
type: Directive,
|
|
63
|
+
args: [{
|
|
64
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
65
|
+
selector: 'img[default]',
|
|
66
|
+
standalone: true,
|
|
67
|
+
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
|
|
68
|
+
host: {
|
|
69
|
+
'(error)': 'updateUrl()',
|
|
70
|
+
'[src]': 'src'
|
|
71
|
+
}
|
|
72
|
+
}]
|
|
73
|
+
}], propDecorators: { src: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], default: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}] } });
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Removes excess text from element until it fits in elements
|
|
81
|
+
* and appends a ellipsis symbol to end of text. This requires that
|
|
82
|
+
* the elements height be fixed
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```html
|
|
86
|
+
* <p apEllipsis>Ullamco esse laborum</p>
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
*/
|
|
90
|
+
class EllipsisDirective {
|
|
91
|
+
constructor(el) {
|
|
92
|
+
this.el = el;
|
|
93
|
+
this.apEllipsisClip = false;
|
|
94
|
+
this.apEllipsisChar = '...';
|
|
95
|
+
this.apEllipsisClickable = false;
|
|
96
|
+
this.apEllipsisRemovedElementsCount = new EventEmitter();
|
|
97
|
+
this.apEllipsisRemovedText = new EventEmitter();
|
|
98
|
+
}
|
|
99
|
+
get hasOverflow() {
|
|
100
|
+
const el = this.el.nativeElement;
|
|
101
|
+
return (el.scrollHeight > el.offsetHeight) || (el.scrollWidth > el.offsetWidth);
|
|
102
|
+
}
|
|
103
|
+
ngAfterContentChecked() {
|
|
104
|
+
this.clipText();
|
|
105
|
+
}
|
|
106
|
+
clipText() {
|
|
107
|
+
const el = this.el.nativeElement;
|
|
108
|
+
let text = el.innerText;
|
|
109
|
+
let removedText = '';
|
|
110
|
+
if (this.apEllipsisIndex > -1) {
|
|
111
|
+
removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;
|
|
112
|
+
text = text.substring(0, this.apEllipsisIndex);
|
|
113
|
+
el.innerText = `${text}${this.apEllipsisChar}`;
|
|
114
|
+
if (this.apEllipsisClickable) {
|
|
115
|
+
el.addEventListener('click', () => {
|
|
116
|
+
el.innerText = `${text}${removedText}`;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
while (this.hasOverflow && text.length > 0) {
|
|
122
|
+
removedText = text[text.length - 1] + removedText;
|
|
123
|
+
text = text.substring(0, text.length - 1);
|
|
124
|
+
el.innerText = `${text}${this.apEllipsisChar}`;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (this.apEllipsisSeparator) {
|
|
128
|
+
const removedElementsCount = removedText.split(this.apEllipsisSeparator)
|
|
129
|
+
.filter(element => !!element && element.length > 0).length;
|
|
130
|
+
if (removedElementsCount > 0) {
|
|
131
|
+
this.apEllipsisRemovedElementsCount.emit(removedElementsCount);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (removedText && removedText.length > 0) {
|
|
135
|
+
this.apEllipsisRemovedText.emit(removedText);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
EllipsisDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EllipsisDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
140
|
+
EllipsisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: EllipsisDirective, isStandalone: true, selector: "[apEllipsis]", inputs: { apEllipsisSeparator: "apEllipsisSeparator", apEllipsisClip: "apEllipsisClip", apEllipsisIndex: "apEllipsisIndex", apEllipsisChar: "apEllipsisChar", apEllipsisClickable: "apEllipsisClickable" }, outputs: { apEllipsisRemovedElementsCount: "apEllipsisRemovedElementsCount", apEllipsisRemovedText: "apEllipsisRemovedText" }, ngImport: i0 });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EllipsisDirective, decorators: [{
|
|
142
|
+
type: Directive,
|
|
143
|
+
args: [{
|
|
144
|
+
selector: '[apEllipsis]',
|
|
145
|
+
standalone: true,
|
|
146
|
+
}]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { apEllipsisSeparator: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], apEllipsisClip: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], apEllipsisIndex: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], apEllipsisChar: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], apEllipsisClickable: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], apEllipsisRemovedElementsCount: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], apEllipsisRemovedText: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}] } });
|
|
162
|
+
|
|
163
|
+
// Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2
|
|
164
|
+
class EqualValidatorDirective {
|
|
165
|
+
constructor(validateEqual, validateEqualReference) {
|
|
166
|
+
this.validateEqual = validateEqual;
|
|
167
|
+
this.validateEqualReference = validateEqualReference;
|
|
168
|
+
}
|
|
169
|
+
validate(self) {
|
|
170
|
+
const other = self.root.get(this.validateEqual);
|
|
171
|
+
if (other) {
|
|
172
|
+
if (this.isReference()) {
|
|
173
|
+
if (self.value === other.value) {
|
|
174
|
+
delete other.errors['validateEqual'];
|
|
175
|
+
if (!Object.keys(other.errors).length) {
|
|
176
|
+
other.setErrors(null);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
other.setErrors({ validateEqual: false });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (self.value !== other.value) {
|
|
184
|
+
return { validateEqual: false };
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
isReference() {
|
|
190
|
+
if (!this.validateEqualReference) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
return this.validateEqualReference === 'true';
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
EqualValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EqualValidatorDirective, deps: [{ token: 'validateEqual', attribute: true }, { token: 'validateEqualReference', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
197
|
+
EqualValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: EqualValidatorDirective, isStandalone: true, selector: "[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]", providers: [
|
|
198
|
+
{
|
|
199
|
+
provide: NG_VALIDATORS,
|
|
200
|
+
useExisting: forwardRef(() => EqualValidatorDirective),
|
|
201
|
+
multi: true
|
|
202
|
+
}
|
|
203
|
+
], ngImport: i0 });
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: EqualValidatorDirective, decorators: [{
|
|
205
|
+
type: Directive,
|
|
206
|
+
args: [{
|
|
207
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
208
|
+
selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',
|
|
209
|
+
providers: [
|
|
210
|
+
{
|
|
211
|
+
provide: NG_VALIDATORS,
|
|
212
|
+
useExisting: forwardRef(() => EqualValidatorDirective),
|
|
213
|
+
multi: true
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
standalone: true,
|
|
217
|
+
}]
|
|
218
|
+
}], ctorParameters: function () {
|
|
219
|
+
return [{ type: undefined, decorators: [{
|
|
220
|
+
type: Attribute,
|
|
221
|
+
args: ['validateEqual']
|
|
222
|
+
}] }, { type: undefined, decorators: [{
|
|
223
|
+
type: Attribute,
|
|
224
|
+
args: ['validateEqualReference']
|
|
225
|
+
}] }];
|
|
226
|
+
} });
|
|
227
|
+
|
|
228
|
+
class GifService {
|
|
229
|
+
static isGif(src) {
|
|
230
|
+
return src && src.split('?')[0].endsWith('.gif');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* If the image is a GIF then replace the img element by a canvas containing a frozen gif.
|
|
235
|
+
* Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the
|
|
236
|
+
* new canvas element will have the same condition.
|
|
237
|
+
* Note 2: the image must not have the properties "display" and "visibility" in its style. Since they are used to frozen
|
|
238
|
+
* the GIF. You need to apply this properties on the parent element.
|
|
239
|
+
* Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched
|
|
240
|
+
* with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.
|
|
241
|
+
*/
|
|
242
|
+
class FrozenGifDirective {
|
|
243
|
+
constructor(elementRef) {
|
|
244
|
+
this.elementRef = elementRef;
|
|
245
|
+
this.apFrozen = true;
|
|
246
|
+
// Add all the events that need to be propagated.
|
|
247
|
+
this.apGifEvents = ['click'];
|
|
248
|
+
const element = this.elementRef.nativeElement;
|
|
249
|
+
if (!(element instanceof HTMLImageElement)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
this.element = element;
|
|
253
|
+
}
|
|
254
|
+
ngOnChanges(changes) {
|
|
255
|
+
let freeze = false;
|
|
256
|
+
if (changes.src) {
|
|
257
|
+
freeze = true;
|
|
258
|
+
}
|
|
259
|
+
if (changes.frozen) {
|
|
260
|
+
if (changes.frozen.currentValue) {
|
|
261
|
+
freeze = true;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this.unfreeze();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (freeze) {
|
|
268
|
+
this.freeze();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
freeze() {
|
|
272
|
+
if (!GifService.isGif(this.src) || !this.apFrozen) {
|
|
273
|
+
this.unfreeze();
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
// hack to avoid displaying the GIF before replacing it by the canvas
|
|
277
|
+
this.element.style.visibility = 'hidden';
|
|
278
|
+
this.element.addEventListener('load', () => this.addCanvas());
|
|
279
|
+
}
|
|
280
|
+
addCanvas() {
|
|
281
|
+
if (this.canvas) {
|
|
282
|
+
this.canvas.remove();
|
|
283
|
+
}
|
|
284
|
+
this.canvas = document.createElement('canvas');
|
|
285
|
+
this.canvas.width = this.element.width;
|
|
286
|
+
this.canvas.height = this.element.height;
|
|
287
|
+
this.canvas.getContext('2d').drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);
|
|
288
|
+
for (let i = 0; i < this.element.attributes.length; i++) {
|
|
289
|
+
const attr = this.element.attributes[i];
|
|
290
|
+
if (attr.name === 'id') { // avoid two elements with the same id
|
|
291
|
+
this.canvas.setAttribute('id', attr.value + '_frozenGif');
|
|
292
|
+
}
|
|
293
|
+
else if (attr.name === 'style' && attr.value.includes('visibility: hidden;') || attr.value.includes('display: none;')) {
|
|
294
|
+
// remove the added 'visibility: hidden' and 'display: none'
|
|
295
|
+
const styleValue = attr.value;
|
|
296
|
+
this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));
|
|
297
|
+
}
|
|
298
|
+
else if (attr.name !== '"') { // test for invalid attributes
|
|
299
|
+
this.canvas.setAttribute(attr.name, attr.value);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
this.addEvents();
|
|
303
|
+
this.element.parentNode.insertBefore(this.canvas, this.element);
|
|
304
|
+
this.element.style.display = 'none';
|
|
305
|
+
}
|
|
306
|
+
addEvents() {
|
|
307
|
+
this.apGifEvents.forEach((eventName) => {
|
|
308
|
+
this.canvas.addEventListener(eventName, (ev) => this.element.dispatchEvent(
|
|
309
|
+
// wm: find a way to dispatch the right event type
|
|
310
|
+
new Event(ev.type, ev)));
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
unfreeze() {
|
|
314
|
+
if (this.canvas) {
|
|
315
|
+
this.canvas.remove();
|
|
316
|
+
this.canvas = null;
|
|
317
|
+
}
|
|
318
|
+
this.element.style.visibility = 'inherit';
|
|
319
|
+
this.element.style.display = 'inherit';
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
FrozenGifDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FrozenGifDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
323
|
+
FrozenGifDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: FrozenGifDirective, isStandalone: true, selector: "img[apFrozenGif]", inputs: { src: "src", apFrozen: "apFrozen", apGifEvents: "apGifEvents" }, host: { properties: { "src": "src" } }, usesOnChanges: true, ngImport: i0 });
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FrozenGifDirective, decorators: [{
|
|
325
|
+
type: Directive,
|
|
326
|
+
args: [{
|
|
327
|
+
selector: 'img[apFrozenGif]',
|
|
328
|
+
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
|
|
329
|
+
host: {
|
|
330
|
+
'[src]': 'src'
|
|
331
|
+
},
|
|
332
|
+
standalone: true,
|
|
333
|
+
}]
|
|
334
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { src: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], apFrozen: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], apGifEvents: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}] } });
|
|
341
|
+
|
|
342
|
+
const PART_START = '<ng-container data-mst="';
|
|
343
|
+
const PARSE_MIDDLE = '">';
|
|
344
|
+
const PARSE_END = '</ng-container>';
|
|
345
|
+
const DATA_SEPARATOR = ',';
|
|
346
|
+
const OPTIONAL_EVENTS_SEPARATOR = ';';
|
|
347
|
+
/**
|
|
348
|
+
* This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.
|
|
349
|
+
* The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES">TEXT</ng-container>.
|
|
350
|
+
* Example: 'Lorem <ng-container data-mst="my-style">ipsum</ng-container> dolor sit amet'.
|
|
351
|
+
*/
|
|
352
|
+
class MultiStyleTextDirective {
|
|
353
|
+
constructor(elRef, renderer) {
|
|
354
|
+
this.elRef = elRef;
|
|
355
|
+
this.renderer = renderer;
|
|
356
|
+
this.childrenCreated = [];
|
|
357
|
+
this.partEvent = new EventEmitter();
|
|
358
|
+
}
|
|
359
|
+
set multiStyleText(fullText) {
|
|
360
|
+
// First remove previously added children (on update).
|
|
361
|
+
for (const child of this.childrenCreated) {
|
|
362
|
+
this.renderer.removeChild(this.elRef.nativeElement, child);
|
|
363
|
+
}
|
|
364
|
+
if (fullText && fullText.length > 0) {
|
|
365
|
+
MultiStyleTextDirective.parse(fullText).forEach((part) => {
|
|
366
|
+
if (part.clazz || part.clickName) {
|
|
367
|
+
// Parsed item with styling classes and/or event listening.
|
|
368
|
+
const span = this.renderer.createElement('span');
|
|
369
|
+
const text = this.renderer.createText(part.content);
|
|
370
|
+
this.renderer.appendChild(span, text);
|
|
371
|
+
if (part.clazz) {
|
|
372
|
+
part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));
|
|
373
|
+
}
|
|
374
|
+
if (part.clickName) {
|
|
375
|
+
this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));
|
|
376
|
+
}
|
|
377
|
+
this.renderer.appendChild(this.elRef.nativeElement, span);
|
|
378
|
+
this.childrenCreated.push(span);
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
// Specific of part without styling classes (could be used to get event listening only)
|
|
382
|
+
const text = this.renderer.createText(part.content);
|
|
383
|
+
this.renderer.appendChild(this.elRef.nativeElement, text);
|
|
384
|
+
this.childrenCreated.push(text);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
static parse(toParse) {
|
|
390
|
+
const parts = [];
|
|
391
|
+
let startIndex = toParse.indexOf(PART_START);
|
|
392
|
+
while (startIndex >= 0) {
|
|
393
|
+
if (startIndex > 0) {
|
|
394
|
+
// Optional text before first parsed part.
|
|
395
|
+
parts.push({ content: toParse.substring(0, startIndex) });
|
|
396
|
+
}
|
|
397
|
+
const elem = this.cutFirstGroup(toParse.substring(startIndex));
|
|
398
|
+
if (elem === 'invalid') {
|
|
399
|
+
return [];
|
|
400
|
+
}
|
|
401
|
+
else if (elem) {
|
|
402
|
+
parts.push({
|
|
403
|
+
content: elem.content,
|
|
404
|
+
clazz: elem.classes,
|
|
405
|
+
clickName: elem.clickName
|
|
406
|
+
});
|
|
407
|
+
toParse = elem.rest;
|
|
408
|
+
startIndex = toParse.indexOf(PART_START);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
parts.push({ content: toParse });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
// Very end
|
|
415
|
+
if (toParse.length > 0) {
|
|
416
|
+
parts.push({ content: toParse });
|
|
417
|
+
}
|
|
418
|
+
return parts;
|
|
419
|
+
}
|
|
420
|
+
static cutFirstGroup(toCut) {
|
|
421
|
+
if (!toCut.startsWith(PART_START)) {
|
|
422
|
+
// String doesn't start with expected parser start.
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
const afterParserStart = toCut.substring(PART_START.length);
|
|
426
|
+
let index = afterParserStart.indexOf(PARSE_MIDDLE);
|
|
427
|
+
if (index <= 0) {
|
|
428
|
+
console.error('Not able to parse invalid string: ' + toCut);
|
|
429
|
+
return 'invalid';
|
|
430
|
+
}
|
|
431
|
+
const data = afterParserStart.substring(0, index);
|
|
432
|
+
let classes;
|
|
433
|
+
let clickName;
|
|
434
|
+
const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);
|
|
435
|
+
if (eventsPartSeparatorIndex > 0) {
|
|
436
|
+
// Case the data contains events part with dedicated separator
|
|
437
|
+
classes = data.substring(0, eventsPartSeparatorIndex);
|
|
438
|
+
clickName = data.substring(eventsPartSeparatorIndex + 1);
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
// Otherwise, only design classes are provided
|
|
442
|
+
classes = data;
|
|
443
|
+
clickName = undefined;
|
|
444
|
+
}
|
|
445
|
+
let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);
|
|
446
|
+
index = rest.indexOf(PARSE_END);
|
|
447
|
+
if (index <= 0) {
|
|
448
|
+
console.error('Not able to parse invalid string: ' + toCut);
|
|
449
|
+
return 'invalid';
|
|
450
|
+
}
|
|
451
|
+
const content = rest.substring(0, index);
|
|
452
|
+
rest = rest.substring(index + PARSE_END.length);
|
|
453
|
+
return {
|
|
454
|
+
content,
|
|
455
|
+
classes: classes.split(DATA_SEPARATOR),
|
|
456
|
+
clickName,
|
|
457
|
+
rest
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
MultiStyleTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MultiStyleTextDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
462
|
+
MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MultiStyleTextDirective, isStandalone: true, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, outputs: { partEvent: "partEvent" }, ngImport: i0 });
|
|
463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MultiStyleTextDirective, decorators: [{
|
|
464
|
+
type: Directive,
|
|
465
|
+
args: [{
|
|
466
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
467
|
+
selector: '[multiStyleText]',
|
|
468
|
+
standalone: true,
|
|
469
|
+
}]
|
|
470
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { multiStyleText: [{
|
|
471
|
+
type: Input
|
|
472
|
+
}], partEvent: [{
|
|
473
|
+
type: Output
|
|
474
|
+
}] } });
|
|
475
|
+
|
|
476
|
+
// Angular
|
|
477
|
+
class TruncateTooltipDirective {
|
|
478
|
+
constructor(tooltipNeo, elementRef) {
|
|
479
|
+
this.tooltipNeo = tooltipNeo;
|
|
480
|
+
this.elementRef = elementRef;
|
|
481
|
+
}
|
|
482
|
+
updateTruncateState() {
|
|
483
|
+
const element = this.elementRef.nativeElement;
|
|
484
|
+
const truncated = element.scrollWidth > element.clientWidth;
|
|
485
|
+
this.tooltipNeo.apTooltipNeo = truncated ? this.truncateTooltip : '';
|
|
486
|
+
}
|
|
487
|
+
ngOnInit() {
|
|
488
|
+
this.elementRefMouseOver$ = fromEvent(this.elementRef.nativeElement, 'mouseover')
|
|
489
|
+
.subscribe(() => this.updateTruncateState());
|
|
490
|
+
}
|
|
491
|
+
ngOnDestroy() {
|
|
492
|
+
this.elementRefMouseOver$.unsubscribe();
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
TruncateTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TruncateTooltipDirective, deps: [{ token: i1.TooltipNeoDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
496
|
+
TruncateTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TruncateTooltipDirective, isStandalone: true, selector: "[apTooltipNeo][truncateTooltip]", inputs: { truncateTooltip: "truncateTooltip" }, ngImport: i0 });
|
|
497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TruncateTooltipDirective, decorators: [{
|
|
498
|
+
type: Directive,
|
|
499
|
+
args: [{ selector: '[apTooltipNeo][truncateTooltip]', standalone: true, }]
|
|
500
|
+
}], ctorParameters: function () { return [{ type: i1.TooltipNeoDirective }, { type: i0.ElementRef }]; }, propDecorators: { truncateTooltip: [{
|
|
501
|
+
type: Input
|
|
502
|
+
}] } });
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Generated bundle index. Do not edit.
|
|
506
|
+
*/
|
|
507
|
+
|
|
508
|
+
export { AutosizeTextareaDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective, TruncateTooltipDirective };
|
|
509
|
+
//# sourceMappingURL=agorapulse-ui-components-directives.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-directives.mjs","sources":["../../../libs/ui-components/directives/src/autosize-textarea.directive.ts","../../../libs/ui-components/directives/src/default-image.directive.ts","../../../libs/ui-components/directives/src/ellipsis.directive.ts","../../../libs/ui-components/directives/src/equal-validator.directive.ts","../../../libs/ui-components/directives/src/frozen-gif.directive.ts","../../../libs/ui-components/directives/src/multi-style-text.directive.ts","../../../libs/ui-components/directives/src/truncate-tooltip.directive.ts","../../../libs/ui-components/directives/src/agorapulse-ui-components-directives.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'textarea[apAutosize]',\n standalone: true\n})\n/**\n * expand textarea to fit content. Doesn't shrink.\n */\nexport class AutosizeTextareaDirective implements AfterContentChecked {\n\n static maxHeight: number = 200;\n\n constructor(public element: ElementRef) {}\n\n @HostListener('input')\n public onInput() {\n this.resize();\n }\n\n public ngAfterContentChecked() {\n this.resize();\n }\n\n public resize() {\n const style = this.element.nativeElement.style;\n const scrollHeight = this.element.nativeElement.scrollHeight;\n const actualHeight = this.element.nativeElement.offsetHeight;\n if (AutosizeTextareaDirective.maxHeight < scrollHeight) {\n // we arrived at the max\n style.overflow = 'auto';\n style.height = `${AutosizeTextareaDirective.maxHeight}px`;\n } else if (actualHeight < scrollHeight) {\n style.overflow = 'hidden';\n style.height = `${scrollHeight}px`;\n }\n }\n\n}\n","import {Directive, Input} from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'img[default]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(error)': 'updateUrl()',\n '[src]': 'src'\n }\n})\nexport class DefaultImageDirective {\n @Input() src: string;\n @Input() default: string;\n\n updateUrl() {\n if (this.default) {\n this.src = this.default;\n } else {\n this.src = 'assets/lib-ui-components/img/default-avatar.png';\n }\n }\n}\n","import {AfterContentChecked, Directive, ElementRef, EventEmitter, Input, Output,} from '@angular/core';\n\n/**\n * Removes excess text from element until it fits in elements\n * and appends a ellipsis symbol to end of text. This requires that\n * the elements height be fixed\n *\n * @example\n * ```html\n * <p apEllipsis>Ullamco esse laborum</p>\n * ```\n *\n */\n@Directive({\n selector: '[apEllipsis]',\n standalone: true,\n})\nexport class EllipsisDirective implements AfterContentChecked {\n\n @Input() apEllipsisSeparator: string;\n @Input() apEllipsisClip: boolean = false;\n @Input() apEllipsisIndex: number;\n @Input() apEllipsisChar: string = '...';\n @Input() apEllipsisClickable: boolean = false;\n\n @Output() apEllipsisRemovedElementsCount = new EventEmitter<number>();\n @Output() apEllipsisRemovedText = new EventEmitter<string>();\n\n private get hasOverflow(): boolean {\n const el: HTMLElement = this.el.nativeElement;\n return (el.scrollHeight > el.offsetHeight) || (el.scrollWidth > el.offsetWidth);\n }\n\n constructor(private el: ElementRef) { }\n\n ngAfterContentChecked() {\n this.clipText();\n }\n\n private clipText(): void {\n const el: HTMLElement = this.el.nativeElement;\n let text = el.innerText;\n let removedText = '';\n if (this.apEllipsisIndex > -1) {\n removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;\n text = text.substring(0, this.apEllipsisIndex);\n el.innerText = `${text}${this.apEllipsisChar}`;\n\n if (this.apEllipsisClickable) {\n el.addEventListener('click', () => {\n el.innerText = `${text}${removedText}`;\n });\n }\n } else {\n while (this.hasOverflow && text.length > 0) {\n removedText = text[text.length - 1] + removedText;\n text = text.substring(0, text.length - 1);\n el.innerText = `${text}${this.apEllipsisChar}`;\n }\n }\n\n if (this.apEllipsisSeparator) {\n const removedElementsCount = removedText.split(this.apEllipsisSeparator)\n .filter(element => !!element && element.length > 0).length;\n if (removedElementsCount > 0) {\n this.apEllipsisRemovedElementsCount.emit(removedElementsCount);\n }\n }\n if (removedText && removedText.length > 0) {\n this.apEllipsisRemovedText.emit(removedText);\n }\n }\n}\n","// Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2\nimport { Directive, forwardRef, Attribute } from '@angular/core';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EqualValidatorDirective),\n multi: true\n }\n ],\n standalone: true,\n})\nexport class EqualValidatorDirective implements Validator {\n\n constructor(@Attribute('validateEqual') public validateEqual: string,\n @Attribute('validateEqualReference') public validateEqualReference: string) {}\n\n validate(self: AbstractControl): { [key: string]: any } {\n const other = self.root.get(this.validateEqual);\n if (other) {\n if (this.isReference()) {\n if (self.value === other.value) {\n delete other.errors['validateEqual'];\n if (!Object.keys(other.errors).length) {\n other.setErrors(null);\n }\n } else {\n other.setErrors({ validateEqual: false });\n }\n } else if (self.value !== other.value) {\n return { validateEqual: false };\n }\n }\n return null;\n }\n\n private isReference(): boolean {\n if (!this.validateEqualReference) {\n return false;\n }\n return this.validateEqualReference === 'true';\n }\n\n}\n","import {Directive, ElementRef, HostBinding, Input, OnChanges} from '@angular/core';\n\nexport class GifService {\n static isGif(src: string) {\n return src && src.split('?')[0].endsWith('.gif');\n }\n}\n\n/**\n * If the image is a GIF then replace the img element by a canvas containing a frozen gif.\n * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the\n * new canvas element will have the same condition.\n * Note 2: the image must not have the properties \"display\" and \"visibility\" in its style. Since they are used to frozen\n * the GIF. You need to apply this properties on the parent element.\n * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched\n * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.\n */\n\n@Directive({\n selector: 'img[apFrozenGif]',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[src]': 'src'\n },\n standalone: true,\n})\nexport class FrozenGifDirective implements OnChanges {\n @Input() src: string;\n @Input() apFrozen = true;\n // Add all the events that need to be propagated.\n @Input() apGifEvents: string[] = ['click'];\n\n private readonly element: HTMLImageElement;\n private canvas: HTMLCanvasElement;\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n if (!(element instanceof HTMLImageElement)) {\n return;\n }\n\n this.element = element;\n }\n\n ngOnChanges(changes: any): void {\n let freeze = false;\n if (changes.src) {\n freeze = true;\n }\n if (changes.frozen) {\n if (changes.frozen.currentValue) {\n freeze = true;\n } else {\n this.unfreeze();\n }\n }\n\n if (freeze) {\n this.freeze();\n }\n\n }\n\n private freeze() {\n if (!GifService.isGif(this.src) || !this.apFrozen) {\n this.unfreeze();\n return;\n }\n\n // hack to avoid displaying the GIF before replacing it by the canvas\n this.element.style.visibility = 'hidden';\n this.element.addEventListener('load', () => this.addCanvas());\n }\n\n private addCanvas() {\n if (this.canvas) {\n this.canvas.remove();\n }\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = this.element.width;\n this.canvas.height = this.element.height;\n this.canvas.getContext('2d').drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n for (let i = 0; i < this.element.attributes.length; i++) {\n const attr = this.element.attributes[i];\n if (attr.name === 'id') { // avoid two elements with the same id\n this.canvas.setAttribute('id', attr.value + '_frozenGif');\n } else if (attr.name === 'style' && attr.value.includes('visibility: hidden;') || attr.value.includes('display: none;')) {\n // remove the added 'visibility: hidden' and 'display: none'\n const styleValue = attr.value;\n this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));\n } else if (attr.name !== '\"') { // test for invalid attributes\n this.canvas.setAttribute(attr.name, attr.value);\n }\n }\n\n this.addEvents();\n\n this.element.parentNode.insertBefore(this.canvas, this.element);\n this.element.style.display = 'none';\n }\n\n private addEvents() {\n this.apGifEvents.forEach((eventName: string) => {\n this.canvas.addEventListener(eventName, (ev: Event) => this.element.dispatchEvent(\n // wm: find a way to dispatch the right event type\n new Event(ev.type, ev)\n ));\n });\n }\n\n private unfreeze() {\n if (this.canvas) {\n this.canvas.remove();\n this.canvas = null;\n }\n this.element.style.visibility = 'inherit';\n this.element.style.display = 'inherit';\n }\n}\n","import {Directive, Input, Renderer2, ElementRef, Output, EventEmitter} from '@angular/core';\n\nconst PART_START = '<ng-container data-mst=\"';\nconst PARSE_MIDDLE = '\">';\nconst PARSE_END = '</ng-container>';\nconst DATA_SEPARATOR = ',';\nconst OPTIONAL_EVENTS_SEPARATOR = ';';\n\ninterface Part {\n content: string;\n clazz?: string[]; // Not defined on sterile text\n clickName?: string; // Not defined on sterile text\n}\n\n/**\n * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.\n * The specific tags must this schema: <ng-container data-mst=\"STYLING-CLASSES\">TEXT</ng-container>.\n * Example: 'Lorem <ng-container data-mst=\"my-style\">ipsum</ng-container> dolor sit amet'.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[multiStyleText]',\n standalone: true,\n})\nexport class MultiStyleTextDirective {\n\n private childrenCreated: any[] = [];\n\n @Input() set multiStyleText(fullText: string) {\n // First remove previously added children (on update).\n for (const child of this.childrenCreated) {\n this.renderer.removeChild(this.elRef.nativeElement, child);\n }\n\n if (fullText && fullText.length > 0) {\n MultiStyleTextDirective.parse(fullText).forEach((part: Part) => {\n if (part.clazz || part.clickName) {\n // Parsed item with styling classes and/or event listening.\n const span = this.renderer.createElement('span');\n const text = this.renderer.createText(part.content);\n this.renderer.appendChild(span, text);\n if (part.clazz) {\n part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));\n }\n if (part.clickName) {\n this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));\n }\n this.renderer.appendChild(this.elRef.nativeElement, span);\n this.childrenCreated.push(span);\n } else {\n // Specific of part without styling classes (could be used to get event listening only)\n const text = this.renderer.createText(part.content);\n this.renderer.appendChild(this.elRef.nativeElement, text);\n this.childrenCreated.push(text);\n }\n });\n }\n }\n\n @Output() partEvent = new EventEmitter<string>();\n\n public constructor(\n private elRef: ElementRef,\n private renderer: Renderer2\n ) {\n }\n\n private static parse(toParse: string): Part[] {\n const parts: Part[] = [];\n let startIndex = toParse.indexOf(PART_START);\n while (startIndex >= 0) {\n if (startIndex > 0) {\n // Optional text before first parsed part.\n parts.push({content: toParse.substring(0, startIndex)});\n }\n const elem = this.cutFirstGroup(toParse.substring(startIndex));\n if (elem === 'invalid') {\n return [];\n } else if (elem) {\n parts.push({\n content: elem.content,\n clazz: elem.classes,\n clickName: elem.clickName\n });\n toParse = elem.rest;\n startIndex = toParse.indexOf(PART_START);\n } else {\n parts.push({content: toParse});\n }\n }\n // Very end\n if (toParse.length > 0) {\n parts.push({content: toParse});\n }\n return parts;\n }\n\n private static cutFirstGroup(toCut: string): {content: string, classes: string[], clickName: string, rest: string} | 'invalid' | null {\n if (!toCut.startsWith(PART_START)) {\n // String doesn't start with expected parser start.\n return null;\n }\n\n const afterParserStart = toCut.substring(PART_START.length);\n let index = afterParserStart.indexOf(PARSE_MIDDLE);\n if (index <= 0) {\n console.error('Not able to parse invalid string: ' + toCut);\n return 'invalid';\n }\n const data = afterParserStart.substring(0, index);\n let classes;\n let clickName;\n const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);\n if (eventsPartSeparatorIndex > 0) {\n // Case the data contains events part with dedicated separator\n classes = data.substring(0, eventsPartSeparatorIndex);\n clickName = data.substring(eventsPartSeparatorIndex + 1);\n } else {\n // Otherwise, only design classes are provided\n classes = data;\n clickName = undefined;\n }\n let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);\n index = rest.indexOf(PARSE_END);\n if (index <= 0) {\n console.error('Not able to parse invalid string: ' + toCut);\n return 'invalid';\n }\n const content = rest.substring(0, index);\n rest = rest.substring(index + PARSE_END.length);\n\n return {\n content,\n classes: classes.split(DATA_SEPARATOR),\n clickName,\n rest\n };\n }\n}\n","// Agorapulse\nimport {TooltipNeoDirective, TooltipNeoParams} from '@agorapulse/ui-components/tooltip-neo';\n// Angular\nimport {Directive, ElementRef, Input, OnDestroy, OnInit} from '@angular/core';\n// Third-parties\nimport {fromEvent, Subscription} from \"rxjs\";\n\n@Directive({selector: '[apTooltipNeo][truncateTooltip]', standalone: true,})\nexport class TruncateTooltipDirective implements OnInit, OnDestroy {\n\n @Input() truncateTooltip: string | TooltipNeoParams;\n\n private elementRefMouseOver$: Subscription;\n\n constructor(\n private tooltipNeo: TooltipNeoDirective,\n private elementRef: ElementRef<HTMLElement>\n ) {\n }\n\n private updateTruncateState(): void {\n const element = this.elementRef.nativeElement;\n const truncated = element.scrollWidth > element.clientWidth;\n this.tooltipNeo.apTooltipNeo = truncated ? this.truncateTooltip : '';\n }\n\n ngOnInit(): void {\n this.elementRefMouseOver$ = fromEvent(this.elementRef.nativeElement, 'mouseover')\n .subscribe(() => this.updateTruncateState());\n }\n\n ngOnDestroy(): void {\n this.elementRefMouseOver$.unsubscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|