{"version":3,"file":"sinequa-components-feedback.mjs","sources":["../../../projects/components/feedback/feedback.service.ts","../../../projects/components/feedback/bootstrap/feedback-menu/feedback-menu.ts","../../../projects/components/feedback/bootstrap/feedback-menu/feedback-menu.html","../../../projects/components/feedback/bootstrap/feedback.module.ts","../../../projects/components/feedback/messages/en.ts","../../../projects/components/feedback/messages/fr.ts","../../../projects/components/feedback/messages/de.ts","../../../projects/components/feedback/messages/index.ts","../../../projects/components/feedback/sinequa-components-feedback.ts"],"sourcesContent":["import {Injectable} from \"@angular/core\";\nimport {AuditWebService, AuditEvent} from \"@sinequa/core/web-services\";\nimport {AppService} from \"@sinequa/core/app-utils\";\nimport {NotificationsService} from \"@sinequa/core/notification\";\nimport {ModalService, ModalResult} from \"@sinequa/core/modal\";\nimport {Utils} from \"@sinequa/core/base\";\nimport {Action} from \"@sinequa/components/action\";\n\nexport const AuditFeedbackType = \"UserFeedback_UserFeedback\";\n\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class FeedbackService {\n\n    constructor(\n        public auditService: AuditWebService,\n        public modalService: ModalService,\n        public appService: AppService,\n        public notificationsService: NotificationsService\n        ) {\n    }\n\n    private sanitizeInput(value: string): string {\n        return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    }\n\n    public sendUserFeedback(type: string, message: string, thankUser: boolean){\n        const event : AuditEvent = {\n            type: AuditFeedbackType,\n            detail: {\n                app: this.appService.appName,\n                message: type,\n                detail: this.sanitizeInput(message)\n            }\n        };\n        Utils.subscribe(this.auditService.notify([event]),\n            (result) => {\n                if(thankUser)\n                    this.notificationsService.success(\"msg#feedback.thankyou\");\n        });\n    }\n\n    public buildFeedbackAction() : Action[] {\n        return [new Action({\n            text: \"msg#feedback.text\",\n            title: \"msg#feedback.title\",\n            icon: \"fas fa-comment\",\n            headerGroup: true,\n            children: [\n                this.createAction(\"content\", \"msg#feedback.content.text\", \"msg#feedback.content.title\", \"far fa-file-alt fa-fw\"),\n                this.createAction(\"ui\", \"msg#feedback.ui.text\", \"msg#feedback.ui.title\", \"fas fa-desktop fa-fw\"),\n                this.createAction(\"lang\", \"msg#feedback.lang.text\", \"msg#feedback.lang.title\", \"far fa-comments fa-fw\"),\n                this.createAction(\"other\", \"msg#feedback.other.text\", \"msg#feedback.other.title\", \"far fa-lightbulb fa-fw\"),\n            ]\n        })];\n    }\n\n    public createAction(type:string, text:string, title:string, icon:string) : Action {\n        return new Action({\n            text: text,\n            title: title,\n            icon: icon,\n            action: () => this.openFeedbackModal(type, title)\n        });\n    }\n\n    public openFeedbackModal(type: string, title: string){\n        const model = {title: 'msg#feedback.title', message: title, output: '', buttons: [], rowCount: 5};\n        this.modalService.prompt(model)\n            .then((result) => {\n                if (result === ModalResult.OK && model.output.trim() !== \"\") {\n                    this.sendUserFeedback(type, model.output, true);\n                }\n            });\n    }\n}","import {Component, OnInit, Input, ChangeDetectionStrategy} from \"@angular/core\";\nimport {Action, ActionButtonsOptions} from \"@sinequa/components/action\";\nimport {FeedbackService} from \"../../feedback.service\";\n\n@Component({\n    selector: \"sq-feedback-menu\",\n    templateUrl: \"./feedback-menu.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class BsFeedbackMenu implements OnInit {\n\n    @Input() size: string;\n    @Input() style: string;\n    @Input() rightAligned: boolean;\n\n    items: Action[];\n    options: ActionButtonsOptions;\n\n    constructor(\n        public feedbackService: FeedbackService) {\n    }\n\n    ngOnInit() {\n        this.items = this.feedbackService.buildFeedbackAction();\n        this.options = {\n            items: this.items,\n            autoAdjust: true,\n            rightAligned: this.rightAligned,\n            size: this.size,\n            style: this.style\n        };\n    }\n\n\n}","<div [sq-action-buttons]=\"options\"></div>","import {NgModule} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\n\nimport {IntlModule} from \"@sinequa/core/intl\";\nimport {ValidationModule} from \"@sinequa/core/validation\";\nimport {BsActionModule} from \"@sinequa/components/action\";\nimport {BsModalModule} from \"@sinequa/components/modal\";\n\nimport {BsFeedbackMenu} from \"./feedback-menu/feedback-menu\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        IntlModule,\n        BsActionModule,\n        ValidationModule,\n        BsModalModule\n    ],\n    declarations: [\n        BsFeedbackMenu\n    ],\n    exports: [\n        BsFeedbackMenu\n    ]\n})\nexport class BsFeedbackModule {\n}\n","export default {\n    \"feedback\":{\n        \"text\" : \"\",\n        \"title\" : \"Send feedback to the Sinequa admin\",\n        \"content\" : {\n            \"text\" : \"Content\",\n            \"title\" : \"Propose to add new content or improve the current content\"\n        },\n        \"ui\" : {\n            \"text\" : \"User Interface\",\n            \"title\" : \"Propose improvements to the User Interface\"\n        },\n        \"lang\" : {\n            \"text\" : \"Language\",\n            \"title\" : \"Propose language processing improvements, like new words, synonyms to add to the dictionaries (this affects directly the relevance of the search engine)\"\n        },\n        \"other\" : {\n            \"text\" : \"Other\",\n            \"title\" : \"Submit feature requests, and other improvement ideas\"\n        },\n        \"thankyou\": \"Thank you for your feedback!\",\n        \"quality\" : {\n            \"label\" : \"Quality of the document:\"\n        },\n        \"relevance\" : {\n            \"label\" : \"Relevance of the document:\"\n        },\n        \"labels\" : {\n            \"public\" : {\n                \"label\" : \"Tags:\"\n            },\n            \"private\" : {\n                \"label\" : \"Private tags:\"\n            }\n        }\n    }\n};\n","export default {\n    \"feedback\":{\n        \"text\" : \"\",\n        \"title\" : \"Envoyer un feedback à l'admin Sinequa\",\n        \"content\" : {\n            \"text\" : \"Contenu\",\n            \"title\" : \"Proposer d'ajouter du contenu ou d'améliorer le contenu actuel\"\n        },\n        \"ui\" : {\n            \"text\" : \"Interface Utilisateur\",\n            \"title\" : \"Proposer des améliorations d'interfaces utilisateur\"\n        },\n        \"lang\" : {\n            \"text\" : \"Langage\",\n            \"title\" : \"Proposer des améliorations linguistiques, comme des nouveaux mots et synonymes à ajouter aux dictionaires (cela affecte directement la pertinence du moteur de recherche)\"\n        },\n        \"other\" : {\n            \"text\" : \"Autre\",\n            \"title\" : \"Proposer des fonctionnalités supplémentaires et autres idées d'améliorations\"\n        },\n        \"thankyou\": \"Merci pour votre commentaire !\",\n        \"quality\" : {\n            \"label\" : \"Qualité du document:\"\n        },\n        \"relevance\" : {\n            \"label\" : \"Pertinence du document:\"\n        },\n        \"labels\" : {\n            \"public\" : {\n                \"label\" : \"Tags:\"\n            },\n            \"private\" : {\n                \"label\" : \"Tags privés:\"\n            }\n        }\n    },\n};\n","export default {\n    \"feedback\":{\n        \"text\" : \"\",\n        \"title\": \"Sende Rückmeldung an den Sinequa-Admin\",\n        \"content\": {\n          \"text\": \"Inhalt\",\n          \"title\": \"Vorschlag zum Hinzufügen neuer Inhalte oder zur Verbesserung vorhandener Inhalte\"\n        },\n        \"ui\": {\n          \"text\": \"Benutzeroberfläche\",\n          \"title\": \"Schlage Verbesserungen für die Benutzeroberfläche vor\"\n        },\n        \"lang\": {\n          \"text\": \"Sprache\",\n          \"title\": \"Schlage Verbesserungen für die Sprachverarbeitung vor wie neue Worte oder Synonyme, die zu den Wörterbüchern hinzugefügt werden sollen (dies hat direkte Auswirkungen auf die Relevanzberechnung der Suchmaschine)\"\n        },\n        \"other\": {\n          \"text\": \"Andere\",\n          \"title\": \"Reichen Sie einen Vorschlag für eine zusätzliche Funktion oder andere Verbesserungvorschläge ein\"\n        },\n        \"thankyou\": \"Vielen Dank für Ihre Rückmeldung!\",\n        \"quality\": {\n          \"label\": \"Qualität des Dokuments:\"\n        },\n        \"relevance\": {\n          \"label\": \"Relevanz des Dokuments:\"\n        },\n        \"labels\" : {\n            \"public\": {\n              \"label\": \"Etiketten:\"\n            },\n            \"private\": {\n              \"label\": \"Private Etiketten:\"\n            }\n        }\n    }\n};\n","import {Utils} from \"@sinequa/core/base\";\nimport {enModal, frModal, deModal} from \"@sinequa/components/modal\";\nimport _enFeedback from \"./en\";\nimport _frFeedback from \"./fr\";\nimport _deFeedback from \"./de\";\n\nconst enFeedback = Utils.merge({}, _enFeedback, enModal);\nconst frFeedback = Utils.merge({}, _frFeedback, frModal);\nconst deFeedback = Utils.merge({}, _deFeedback, deModal);\n\nexport { enFeedback, frFeedback, deFeedback };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FeedbackService","i2"],"mappings":"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"}