@postnord/pn-marketweb-components 4.0.1 → 4.0.2
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/dist/cjs/index-b02670c2.js +4 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pn-chat-message_2.cjs.entry.js +2 -1
- package/dist/cjs/pn-chat-message_2.cjs.entry.js.map +1 -1
- package/dist/cjs/pn-chat.cjs.entry.js +1 -1
- package/dist/cjs/{pn-chat.service-eaf6ed50.js → pn-chat.service-5a8d89b9.js} +2 -4
- package/dist/cjs/pn-chat.service-5a8d89b9.js.map +1 -0
- package/dist/cjs/pn-market-web-components.cjs.js +1 -1
- package/dist/cjs/pn-marketweb-table.cjs.entry.js +37 -29
- package/dist/cjs/pn-marketweb-table.cjs.entry.js.map +1 -1
- package/dist/cjs/pn-usp-promoter.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +1 -3
- package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +2 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js +23 -163
- package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat.service.js +1 -3
- package/dist/collection/components/widgets/pn-chat/pn-chat.service.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js +4 -4
- package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.css +10 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +2 -2
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js +37 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/translations.js +33 -25
- package/dist/collection/components/widgets/pn-marketweb-table/translations.js.map +1 -1
- package/dist/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
- package/dist/collection/globals/types.js.map +1 -1
- package/dist/components/pn-chat-message2.js +2 -1
- package/dist/components/pn-chat-message2.js.map +1 -1
- package/dist/components/pn-chat.service.js +1 -3
- package/dist/components/pn-chat.service.js.map +1 -1
- package/dist/components/pn-marketweb-search.js +126 -1
- package/dist/components/pn-marketweb-search.js.map +1 -1
- package/dist/components/pn-marketweb-table.js +36 -28
- package/dist/components/pn-marketweb-table.js.map +1 -1
- package/dist/components/pn-usp-promoter.js +1 -1
- package/dist/esm/index-c311acd6.js +4 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pn-chat-message_2.entry.js +2 -1
- package/dist/esm/pn-chat-message_2.entry.js.map +1 -1
- package/dist/esm/pn-chat.entry.js +1 -1
- package/dist/esm/{pn-chat.service-f4037d6f.js → pn-chat.service-0def5c4e.js} +2 -4
- package/dist/esm/pn-chat.service-0def5c4e.js.map +1 -0
- package/dist/esm/pn-market-web-components.js +1 -1
- package/dist/esm/pn-marketweb-table.entry.js +37 -29
- package/dist/esm/pn-marketweb-table.entry.js.map +1 -1
- package/dist/esm/pn-usp-promoter.entry.js +1 -1
- package/dist/package.json +1 -1
- package/dist/pn-market-web-components/p-3a936c5d.entry.js +2 -0
- package/dist/pn-market-web-components/p-3a936c5d.entry.js.map +1 -0
- package/dist/pn-market-web-components/p-6bec8d72.js +2 -0
- package/dist/pn-market-web-components/p-6bec8d72.js.map +1 -0
- package/dist/pn-market-web-components/p-923aa6d2.entry.js +2 -0
- package/dist/pn-market-web-components/p-923aa6d2.entry.js.map +1 -0
- package/dist/pn-market-web-components/{p-cc7c596e.entry.js → p-a298a263.entry.js} +2 -2
- package/dist/pn-market-web-components/{p-f21311ad.entry.js → p-da56370b.entry.js} +2 -2
- package/dist/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/dist/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
- package/dist/types/components/widgets/pn-chat/pn-chat-message/pn-chat-message.d.ts +1 -0
- package/dist/types/components/widgets/pn-chat/pn-chat-stories-constants.d.ts +6 -127
- package/dist/types/components/widgets/pn-marketweb-table/translations.d.ts +8 -0
- package/dist/types/components.d.ts +0 -100
- package/dist/types/globals/types.d.ts +2 -0
- package/dist/vscode-data.json +0 -142
- package/package.json +1 -1
- package/dist/cjs/pn-chat.service-eaf6ed50.js.map +0 -1
- package/dist/cjs/pn-search.cjs.entry.js +0 -54
- package/dist/cjs/pn-search.cjs.entry.js.map +0 -1
- package/dist/cjs/pn-usp-simple.cjs.entry.js +0 -56
- package/dist/cjs/pn-usp-simple.cjs.entry.js.map +0 -1
- package/dist/collection/components/widgets/pn-search/pn-search.css +0 -140
- package/dist/collection/components/widgets/pn-search/pn-search.js +0 -368
- package/dist/collection/components/widgets/pn-search/pn-search.js.map +0 -1
- package/dist/collection/components/widgets/pn-search/pn-search.stories.js +0 -54
- package/dist/collection/components/widgets/pn-search/pn-search.stories.js.map +0 -1
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.css +0 -116
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js +0 -269
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js.map +0 -1
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js +0 -63
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js.map +0 -1
- package/dist/components/pn-marketweb-search2.js +0 -130
- package/dist/components/pn-marketweb-search2.js.map +0 -1
- package/dist/components/pn-search.d.ts +0 -11
- package/dist/components/pn-search.js +0 -91
- package/dist/components/pn-search.js.map +0 -1
- package/dist/components/pn-usp-simple.d.ts +0 -11
- package/dist/components/pn-usp-simple.js +0 -82
- package/dist/components/pn-usp-simple.js.map +0 -1
- package/dist/esm/pn-chat.service-f4037d6f.js.map +0 -1
- package/dist/esm/pn-search.entry.js +0 -50
- package/dist/esm/pn-search.entry.js.map +0 -1
- package/dist/esm/pn-usp-simple.entry.js +0 -52
- package/dist/esm/pn-usp-simple.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-04107723.entry.js +0 -2
- package/dist/pn-market-web-components/p-04107723.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-10776075.entry.js +0 -2
- package/dist/pn-market-web-components/p-10776075.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-2fd60147.entry.js +0 -2
- package/dist/pn-market-web-components/p-2fd60147.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-a079c496.js +0 -2
- package/dist/pn-market-web-components/p-a079c496.js.map +0 -1
- package/dist/pn-market-web-components/p-e733f44f.entry.js +0 -2
- package/dist/pn-market-web-components/p-e733f44f.entry.js.map +0 -1
- package/dist/types/components/widgets/pn-search/pn-search.d.ts +0 -29
- package/dist/types/components/widgets/pn-search/pn-search.stories.d.ts +0 -7
- package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.d.ts +0 -19
- package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.stories.d.ts +0 -7
- /package/dist/pn-market-web-components/{p-cc7c596e.entry.js.map → p-a298a263.entry.js.map} +0 -0
- /package/dist/pn-market-web-components/{p-f21311ad.entry.js.map → p-da56370b.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"pn-chat-message2.js","mappings":";;AAAA,MAAM,IAAI,GAAG,w0BAAw0B,CAAC;AAC/0B,MAAM,GAAG,GAAG,IAAI;;ACDvB,MAAM,gBAAgB,GAAG,i8FAAi8F,CAAC;AAC39F,4BAAe,gBAAgB;;MCQlB,aAAa;;;;;;;;
|
|
1
|
+
{"file":"pn-chat-message2.js","mappings":";;AAAA,MAAM,IAAI,GAAG,w0BAAw0B,CAAC;AAC/0B,MAAM,GAAG,GAAG,IAAI;;ACDvB,MAAM,gBAAgB,GAAG,i8FAAi8F,CAAC;AAC39F,4BAAe,gBAAgB;;MCQlB,aAAa;;;;;;;;IAKhB,SAAS,GAAW,uwDAAuwD,CAAC;IAC5xD,OAAO,GAAG,SAAS,CAAC;IAE5B,OAAO;QACL,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,SAAS,CAAC;YACxB,KAAK,MAAM;gBACT,OAAO,GAAG,CAAC;SACd;QAED,OAAO,IAAI,CAAC;KACb;IAED,eAAe;QACb,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,gBAAgB;gBACnB,OAAO,gBAAgB,CAAC;YAC1B,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,gBAAgB,CAAC;YAC1B;gBACE,OAAO,SAAS,CAAC;SACpB;KACF;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACzD,QACE,EAAC,IAAI,qDAAC,KAAK,EAAG,IAAI,CAAC,eAAe,EAAE,IAClC,4DAAK,KAAK,EAAE,qBAAqB,aAAa,EAAE,IAC7C,IAAI,CAAC,OAAO,EAAE,KACb,6DAAM,KAAK,EAAC,UAAU,IACpB,gEAAS,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,iBAAc,MAAM,EAAC,IAAI,EAAC,cAAc,GAAW,CAChG,CACR,EACD,6DAAM,KAAK,EAAE,WAAW,YAAY,EAAE,IACpC,8DAAa,CACR,CACH,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["node_modules/pn-design-assets/pn-assets/icons/faq.js","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.scss?tag=pn-chat-message","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10c-.97 0-1.908-.138-2.797-.397-1.242-.36-2.352-.61-3.409-.464l-2.095.29A1 1 0 0 1 2.572 20.3l.289-2.095c.146-1.057-.103-2.167-.464-3.41A10 10 0 0 1 2 12m10-8a8 8 0 0 0-7.683 10.239c.364 1.252.734 2.724.525 4.24l-.108.788.787-.11c1.516-.208 2.988.162 4.24.526.71.206 1.46.317 2.239.317a8 8 0 1 0 0-16m-.034 4.5c-.445 0-.84.285-.981.707l-.037.11a1 1 0 0 1-1.897-.633l.037-.11A3.03 3.03 0 0 1 11.966 6.5h.18C13.734 6.5 15 7.807 15 9.371a2.83 2.83 0 0 1-1.553 2.523.81.81 0 0 0-.447.724V13a1 1 0 1 1-2 0v-.382c0-1.064.6-2.037 1.553-2.512A.83.83 0 0 0 13 9.37a.87.87 0 0 0-.854-.871zm.034 6a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3\" clip-rule=\"evenodd\"/></svg>';\nexport const faq = icon;\n","@import '../../../../globals/main.scss';\n$userChatMessageBackgroundColor: $blue50;\n$userChatMessageTextColor: $gray900;\n$privateChatMessageLinkColor: $blue25;\n$businessChatMessageLinkColor: $coral50;\n\n$message-padding: 1rem 1.6rem;\n\npn-chat-message {\n display: flex;\n text-align: left;\n\n &.user,\n &.buttonresponse {\n justify-content: flex-end;\n }\n\n &.system-message {\n text-align: center;\n justify-content: center;\n }\n\n .message-container {\n border-radius: 0.8rem;\n display: flex;\n gap: 1rem;\n max-width: 75%;\n overflow-x: hidden;\n\n .category {\n width: 2.6rem;\n }\n\n &.bot,\n &.agent {\n .message {\n background-color: $gray50;\n }\n }\n\n &.link {\n flex-basis: 100%;\n\n .message {\n $box-shadow-offset-x: 0px 0.6px 1.8px 0px;\n $box-shadow-offset-y: 0px 3.2px 7.2px 0px;\n\n background-color: $privateChatMessageLinkColor;\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.10), $box-shadow-offset-y rgba(0, 0, 0, 0.13);\n transition: box-shadow ease-in-out 0.5s;\n\n &:hover {\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.2), $box-shadow-offset-y rgba(0, 0, 0, 0.23);\n }\n\n padding: 0;\n\n a {\n color: $black;\n display: flex;\n justify-content: space-between;\n padding: $message-padding;\n text-decoration: none;\n }\n }\n }\n\n &.link .business.message {\n background-color: $businessChatMessageLinkColor;\n }\n\n &.button {\n flex-basis: 100%;\n text-align: center;\n max-width: unset;\n\n .message {\n padding: 0;\n }\n }\n\n &.card {\n border: solid 1px $gray200;\n border-radius: 1.6rem;\n flex-basis: 100%;\n max-width: 100%;\n\n .message {\n display: flex;\n flex-direction: column;\n gap: 0.8rem;\n padding: 1.6rem;\n }\n\n .card-heading {\n font-size: 1.6rem;\n line-height: 2.4rem;\n font-weight: 700;\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n\n .read-more {\n align-self: flex-start;\n margin-top: auto;\n }\n }\n\n &.user,\n &.buttonresponse {\n .message {\n background-color: $userChatMessageBackgroundColor;\n color: $userChatMessageTextColor;\n border-radius: 0.8rem 0.8rem 0 0.8rem;\n }\n }\n\n .message {\n border-radius: 0 0.8rem 0.8rem 0.8rem;\n display: inline-block;\n flex: 1 1 auto;\n font-size: 1.4rem;\n line-height: 2rem;\n padding: $message-padding;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: normal;\n word-break: break-word;\n\n @media (max-width: 767px) {\n font-size: 1.6rem;\n }\n }\n\n &.agent {\n .category .pn-icon {\n background-color: $blue400;\n color: $white;\n text-align: center;\n border-radius: 50%;\n display: inline-block;\n width: 2.5rem;\n height: 2.5rem;\n font-weight: 500;\n font-size: 1.2rem;\n line-height: 2.6rem;\n }\n }\n }\n\n &[data-card] {\n height: 100%;\n }\n}","import { Component, Host, Prop, h } from '@stencil/core';\nimport { faq, user } from 'pn-design-assets/pn-assets/icons.js';\n\nimport { AgentMessage, CustomerSegment, MessageCategory } from '../types';\n\n@Component({\n tag: 'pn-chat-message',\n styleUrl: 'pn-chat-message.scss',\n})\nexport class PnChatMessage {\n @Prop() category!: MessageCategory;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() agentName: string;\n\n private robotIcon: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> <svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewBox=\"0 0 20 20\"> <!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) --> <defs> <style> .st0 { fill: none; } .st1 { fill: #8eddf9; } .st2 { fill: #f3f2f2; } .st3 { fill: #0d234b; } .st4 { fill: #f06365; } .st5 { clip-path: url(#clippath); } .st6 { fill: #005d92; } </style> <clipPath id=\"clippath\"> <rect class=\"st0\" width=\"20\" height=\"20\"/> </clipPath> </defs> <g class=\"st5\"> <g> <path class=\"st2\" d=\"M10,20c5.5,0,10-4.5,10-10S15.5,0,10,0,0,4.5,0,10s4.5,10,10,10Z\"/> <path class=\"st3\" d=\"M10.5,4h-.5v2.8h.5v-2.8Z\"/> <path class=\"st3\" d=\"M10.2,4.3c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st3\" d=\"M9,5h2.4c1,0,1.8.8,1.8,1.8h-6c0-1,.8-1.8,1.8-1.8Z\"/> <path class=\"st4\" d=\"M17,10.3v-.8c0-1.9-1.5-3.5-3.5-3.5h-7.1c-1.9,0-3.5,1.6-3.5,3.5v.8h14.1Z\"/> <path d=\"M13.9,16.1l-3.7.4v-.4s3.6-.4,3.6-.4c.8,0,1.6-.4,2.1-1s.7-2.9.7-3.7h.4c0,.9-.2,3.3-.8,3.9-.6.7-1.4,1.1-2.3,1.2Z\"/> <path class=\"st4\" d=\"M16.3,12.1v-3.6h.2c1,0,1.8.8,1.8,1.8s-.8,1.8-1.8,1.8h-.2Z\"/> <path class=\"st4\" d=\"M3.7,8.5v3.6h-.2c-1,0-1.8-.8-1.8-1.8s.8-1.8,1.8-1.8h.2Z\"/> <path class=\"st3\" d=\"M13.1,6.6h-6.2c-1.8,0-3.3,1.5-3.3,3.3v2.1c0,1.8,1.5,3.3,3.3,3.3h6.2c1.8,0,3.3-1.5,3.3-3.3v-2.1c0-1.8-1.5-3.3-3.3-3.3Z\"/> <path class=\"st6\" d=\"M12.8,7.8h-5.6c-1.4,0-2.5,1.1-2.5,2.5v1.4c0,1.4,1.1,2.4,2.5,2.4h5.6c1.4,0,2.4-1.1,2.4-2.4v-1.4c0-1.4-1.1-2.5-2.4-2.5Z\"/> <path class=\"st1\" d=\"M12.3,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st1\" d=\"M7.7,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path d=\"M11,15.8h-1.5c-.3,0-.5.2-.5.5h0c0,.3.2.5.5.5h1.5c.3,0,.5-.2.5-.5h0c0-.3-.2-.5-.5-.5Z\"/> </g> </g> </svg>';\n private blue700 = 'blue700';\n\n getIcon() {\n let icon = null;\n \n switch (this.category) {\n case 'Bot':\n return this.robotIcon;\n case 'Agent':\n return this.agentName;\n case 'Link':\n return faq;\n }\n\n return icon;\n }\n\n getMessageClass(): string {\n switch (this.category) {\n case 'ButtonResponse':\n return 'buttonresponse';\n case 'User':\n return 'user';\n case 'System':\n return 'system-message';\n default: \n return undefined;\n }\n }\n\n render() {\n const segmentClass = this.customerSegment?.toLowerCase() || '';\n const categoryClass = this.category?.toLowerCase() || '';\n return (\n <Host class={ this.getMessageClass() }>\n <div class={`message-container ${categoryClass}`}>\n {this.getIcon() && (\n <span class=\"category\">\n <pn-icon icon={this.getIcon()} color={this.blue700} aria-hidden=\"true\" role=\"presentation\"></pn-icon>\n </span>\n )}\n <span class={`message ${segmentClass}`}>\n <slot></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -49,14 +49,12 @@ class PnChatService {
|
|
|
49
49
|
async sendMessage(content, itemId, chatId, lastMessageId, messageType) {
|
|
50
50
|
let newLatestMessageId;
|
|
51
51
|
switch (messageType) {
|
|
52
|
-
case 'Text':
|
|
53
|
-
newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);
|
|
54
|
-
break;
|
|
55
52
|
case 'Choice':
|
|
56
53
|
newLatestMessageId = await this.sendChoiceMessage(content, itemId, chatId, lastMessageId);
|
|
57
54
|
break;
|
|
58
55
|
default:
|
|
59
56
|
newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);
|
|
57
|
+
break;
|
|
60
58
|
}
|
|
61
59
|
if (!newLatestMessageId) {
|
|
62
60
|
return lastMessageId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"pn-chat.service.js","mappings":"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","names":[],"sources":["src/components/widgets/pn-chat/pn-chat.service.ts"],"sourcesContent":["import { FetchHelper } from '@/globals/FetchHelper';\nimport { ChatMessage, ChatMessages, MessageType } from './types';\nimport { ChatParameters, ChatStartParameters, ChatMessageParameters, ChatUpdateParameters, ChatLastMessageParameters } from './pn-chat.models';\n\nexport class PnChatService {\n private readonly _endpoint;\n private readonly _market;\n private readonly _language;\n private readonly _currentUrl;\n private fetchHelper = new FetchHelper('PnChatService');\n private readonly _startChatPath = `/api/sfchat/start-chat`;\n private readonly _fetchChatMessagesPath = `/api/sfchat/get-conversation-entries`;\n private readonly _sendTextPath = `/api/sfchat/send-text-message`;\n private readonly _sendChoicePath = `/api/sfchat/send-choice-message`;\n private readonly _updateLastMessagePath = `/api/sfchat/update-last-message-id`;\n private readonly _hasNewMessagesPath = `/api/sfchat/has-new-messages`;\n\n constructor(endpoint: string, market: string, language: string) {\n this._endpoint = this.formatEndpoint(endpoint);\n this._market = market;\n this._language = language;\n this._currentUrl = window.location.href;\n }\n\n async startChat(chatId: string, itemId: string): Promise<string> {\n let model: ChatStartParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._startChatPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false\n )) as string;\n\n return this.handleResponse<string>(data, chatId);\n }\n\n async fetchMessages(chatId: string, prevMessageData: ChatMessages) : Promise<ChatMessages> {\n if (!chatId) {\n return prevMessageData;\n }\n\n let model: ChatParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId\n };\n\n const fetchUrl = this._endpoint + this._fetchChatMessagesPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n if (!data) {\n return prevMessageData;\n }\n \n return this.handleResponse<ChatMessages>(data, prevMessageData);\n }\n\n async sendMessage(content : string, itemId : string, chatId: string, lastMessageId: string, messageType: MessageType) : Promise<string> {\n let newLatestMessageId;\n\n switch (messageType) {\n case 'Text':\n newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);\n break;\n case 'Choice':\n newLatestMessageId = await this.sendChoiceMessage(content, itemId, chatId, lastMessageId);\n break;\n default:\n newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);\n }\n\n if (!newLatestMessageId) {\n return lastMessageId;\n }\n\n if (newLatestMessageId.includes(\",\")) {\n newLatestMessageId = newLatestMessageId.substring(newLatestMessageId.lastIndexOf(\",\") + 1);\n }\n\n return newLatestMessageId;\n }\n\n async updateLastMessageId(chatId: string, lastMessageId: string) {\n let model: ChatLastMessageParameters = {\n chatIdString: chatId,\n latestMessageIdString: lastMessageId\n };\n\n const fetchUrl = this._endpoint + this._updateLastMessagePath;\n await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n );\n }\n\n async hasNewMessages(itemId : string) : Promise<boolean> {\n let model: ChatStartParameters = {\n language: this._language,\n market: this._market,\n itemId: itemId,\n chatIdString: \"\",\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._hasNewMessagesPath;\n let data = await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n ) as string;\n\n if (!data) {\n return false;\n }\n\n return JSON.parse(data) as boolean;\n }\n\n private async sendTextMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendTextPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private async sendChoiceMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendChoicePath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private formatEndpoint(endpoint: string) : string {\n return endpoint.lastIndexOf('/') === endpoint.length - 1 ? endpoint.substring(0, endpoint.length - 1) : endpoint;\n }\n\n private handleResponse<T>(data : any, defaultReturn : any, checkForArray: boolean = false) {\n if (!data) {\n return defaultReturn;\n }\n\n let parsedData = JSON.parse(data) as T;\n if (!parsedData || checkForArray && !Array.isArray(parsedData)) {\n return defaultReturn;\n }\n\n return parsedData;\n }\n \n private getRequestInit(model: any, method: string = 'POST', mode: RequestMode = 'cors', contentTypes: string = 'application/json'): RequestInit {\n return {\n mode: mode,\n method: method,\n headers: \n {\n 'Content-Type': contentTypes,\n 'CustomValidateAntiForgeryToken': \"01001101010001010100111101010111\"\n },\n body: JSON.stringify(model)\n };\n }\n\n GetLastMessageId(messages : ChatMessage[], lastMessageId : string) {\n return messages?.at(-1)?.messageId ?? lastMessageId;\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"pn-chat.service.js","mappings":"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","names":[],"sources":["src/components/widgets/pn-chat/pn-chat.service.ts"],"sourcesContent":["import { FetchHelper } from '@/globals/FetchHelper';\nimport { ChatMessage, ChatMessages, MessageType } from './types';\nimport { ChatParameters, ChatStartParameters, ChatMessageParameters, ChatUpdateParameters, ChatLastMessageParameters } from './pn-chat.models';\n\nexport class PnChatService {\n private readonly _endpoint;\n private readonly _market;\n private readonly _language;\n private readonly _currentUrl;\n private fetchHelper = new FetchHelper('PnChatService');\n private readonly _startChatPath = `/api/sfchat/start-chat`;\n private readonly _fetchChatMessagesPath = `/api/sfchat/get-conversation-entries`;\n private readonly _sendTextPath = `/api/sfchat/send-text-message`;\n private readonly _sendChoicePath = `/api/sfchat/send-choice-message`;\n private readonly _updateLastMessagePath = `/api/sfchat/update-last-message-id`;\n private readonly _hasNewMessagesPath = `/api/sfchat/has-new-messages`;\n\n constructor(endpoint: string, market: string, language: string) {\n this._endpoint = this.formatEndpoint(endpoint);\n this._market = market;\n this._language = language;\n this._currentUrl = window.location.href;\n }\n\n async startChat(chatId: string, itemId: string): Promise<string> {\n let model: ChatStartParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._startChatPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false\n )) as string;\n\n return this.handleResponse<string>(data, chatId);\n }\n\n async fetchMessages(chatId: string, prevMessageData: ChatMessages) : Promise<ChatMessages> {\n if (!chatId) {\n return prevMessageData;\n }\n\n let model: ChatParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId\n };\n\n const fetchUrl = this._endpoint + this._fetchChatMessagesPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n if (!data) {\n return prevMessageData;\n }\n \n return this.handleResponse<ChatMessages>(data, prevMessageData);\n }\n\n async sendMessage(content : string, itemId : string, chatId: string, lastMessageId: string, messageType: MessageType) : Promise<string> {\n let newLatestMessageId;\n\n switch (messageType) {\n case 'Choice':\n newLatestMessageId = await this.sendChoiceMessage(content, itemId, chatId, lastMessageId);\n break;\n default:\n newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);\n break;\n }\n\n if (!newLatestMessageId) {\n return lastMessageId;\n }\n\n if (newLatestMessageId.includes(\",\")) {\n newLatestMessageId = newLatestMessageId.substring(newLatestMessageId.lastIndexOf(\",\") + 1);\n }\n\n return newLatestMessageId;\n }\n\n async updateLastMessageId(chatId: string, lastMessageId: string) {\n let model: ChatLastMessageParameters = {\n chatIdString: chatId,\n latestMessageIdString: lastMessageId\n };\n\n const fetchUrl = this._endpoint + this._updateLastMessagePath;\n await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n );\n }\n\n async hasNewMessages(itemId : string) : Promise<boolean> {\n let model: ChatStartParameters = {\n language: this._language,\n market: this._market,\n itemId: itemId,\n chatIdString: \"\",\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._hasNewMessagesPath;\n let data = await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n ) as string;\n\n if (!data) {\n return false;\n }\n\n return JSON.parse(data) as boolean;\n }\n\n private async sendTextMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendTextPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private async sendChoiceMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendChoicePath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private formatEndpoint(endpoint: string) : string {\n return endpoint.lastIndexOf('/') === endpoint.length - 1 ? endpoint.substring(0, endpoint.length - 1) : endpoint;\n }\n\n private handleResponse<T>(data : any, defaultReturn : any, checkForArray: boolean = false) {\n if (!data) {\n return defaultReturn;\n }\n\n let parsedData = JSON.parse(data) as T;\n if (!parsedData || checkForArray && !Array.isArray(parsedData)) {\n return defaultReturn;\n }\n\n return parsedData;\n }\n \n private getRequestInit(model: any, method: string = 'POST', mode: RequestMode = 'cors', contentTypes: string = 'application/json'): RequestInit {\n return {\n mode: mode,\n method: method,\n headers: \n {\n 'Content-Type': contentTypes,\n 'CustomValidateAntiForgeryToken': \"01001101010001010100111101010111\"\n },\n body: JSON.stringify(model)\n };\n }\n\n GetLastMessageId(messages : ChatMessage[], lastMessageId : string) {\n return messages?.at(-1)?.messageId ?? lastMessageId;\n }\n}\n"],"version":3}
|
|
@@ -1,4 +1,129 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { c as close_small } from './close_small.js';
|
|
3
|
+
import { s as search } from './search.js';
|
|
4
|
+
|
|
5
|
+
const pnMarketwebSearchCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}:host{display:inline-flex}:host>pn-button{margin-left:0.35em}:host>pn-button button .pn-button-bg{transition:width 0.2s cubic-bezier(0.7, 0, 0.3, 1) 0.2s, background 0.1s, box-shadow 0.1s, left 0.2s, transform 0.2s}:host>pn-button[data-loading=true] .pn-button-bg{left:0;transform:translateX(0);transition:width 0.2s cubic-bezier(0.7, 0, 0.3, 1) 0.2s, background 0.1s, box-shadow 0.1s}:host>pn-button[data-loading=true] pn-spinner{left:0.75em}:host input{padding:0.75em;min-height:3em;font-size:1em;height:100%;font-weight:500;-webkit-font-smoothing:antialiased;outline:none;border-radius:3em;border:0.1rem solid #5e554a;transition:box-shadow 0.15s, border 0.15s;color:#000000;width:100%}:host input::-webkit-search-cancel-button{display:none}:host input::placeholder{color:#969087;font-weight:normal}:host input:focus{border:0.1rem solid #005d92;box-shadow:0 0 0 0.2rem #fff, 0 0 0 0.4rem #005d92}:host input:hover{border:0.1rem solid #00a0d6}:host input:disabled{background:#f3f2f2;border:none}:host>.input-container{width:100%;position:relative}:host>.input-container .button-container{position:absolute;top:0;right:0;background:transparent;width:3em;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}:host[list] :host>.input-container .button-container{display:none}:host>.input-container button{position:absolute;left:50%;top:50%;transform:translate(100%, -50%);background:#ffffff;border:none;color:#005d92;padding:0.3rem;margin:0;font-size:0.875em;border-radius:50%;outline:none;transition:border 0.1s, background 0.2s, box-shadow 0.1s, transform cubic-bezier(0.7, 0, 0.3, 1) 0.2s, opacity 0.2s;border:0.1rem solid transparent;-webkit-tap-highlight-color:transparent}:host>.input-container button.clear,:host>.input-container button.search{cursor:pointer}:host>.input-container button:focus{box-shadow:0 0 0 0.2rem #fff, 0 0 0 0.4rem #005d92}:host>.input-container button:hover,:host>.input-container button:focus{background:#e0f8ff}:host>.input-container button:active{background:#005d92}:host>.input-container button:active pn-icon svg,:host>.input-container button:active pn-icon svg path{fill:white}:host .searching button.search{transform:translate(150%, -50%)}:host .searching button.clear{transform:translate(-50%, -50%)}:host .button-none input,:host .button-icon-inline input{padding-right:3.3em}:host .button-none pn-spinner,:host .button-icon-inline pn-spinner{position:absolute;left:50%;top:50%;transform:translate(100%, -50%);transition:transform cubic-bezier(0.7, 0, 0.3, 1) 0.2s}:host .button-none button.search,:host .button-icon-inline button.search{transform:translate(-50%, -50%)}:host .button-none.loading button,:host .button-icon-inline.loading button{transform:translate(100%, -50%)}:host .button-none.loading pn-spinner,:host .button-icon-inline.loading pn-spinner{transform:translate(-50%, -50%)}:host .button-none.searching button.search{transform:translate(100%, -50%)}:host .button-icon>pn-button[data-loading=true] .pn-button-bg{left:50%;transform:translateX(-50%)}";
|
|
6
|
+
const PnMarketwebSearchStyle0 = pnMarketwebSearchCss;
|
|
7
|
+
|
|
8
|
+
const PnMarketwebSearch$1 = /*@__PURE__*/ proxyCustomElement(class PnMarketwebSearch extends HTMLElement {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
this.__registerHost();
|
|
12
|
+
this.__attachShadow();
|
|
13
|
+
this.search = createEvent(this, "search", 7);
|
|
14
|
+
this.update = createEvent(this, "update", 7);
|
|
15
|
+
this.disabled = false;
|
|
16
|
+
this.placeholder = null;
|
|
17
|
+
this.inputid = null;
|
|
18
|
+
this.name = null;
|
|
19
|
+
this.autocomplete = null;
|
|
20
|
+
this.list = null;
|
|
21
|
+
this.value = null;
|
|
22
|
+
this.label = null;
|
|
23
|
+
this.loading = false;
|
|
24
|
+
this.button = '';
|
|
25
|
+
this.light = false;
|
|
26
|
+
this.suggestionObserver = null;
|
|
27
|
+
this.hasClonedInput = false;
|
|
28
|
+
this.listSuggestion = [];
|
|
29
|
+
}
|
|
30
|
+
get hostElement() { return this; }
|
|
31
|
+
/** This is emitted on search submission both with keyboard and mouse */
|
|
32
|
+
search;
|
|
33
|
+
/** custom event that handles both clearing and input to have the option of just binding listeners to one event instead of two. */
|
|
34
|
+
update;
|
|
35
|
+
inputHandler() {
|
|
36
|
+
this.update.emit(this.value);
|
|
37
|
+
}
|
|
38
|
+
emitSearch(e) {
|
|
39
|
+
if (e.type === 'click' || (e.type === 'keydown' && e.key === 'Enter')) {
|
|
40
|
+
// We prevent the native search event since it's not supported in IE and FF, then we emit our own instead
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
this.search.emit(this.value);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
setVal(e) {
|
|
46
|
+
this.value = e.target.value;
|
|
47
|
+
}
|
|
48
|
+
clearInput(e) {
|
|
49
|
+
this.value = '';
|
|
50
|
+
this.update.emit(this.value);
|
|
51
|
+
const closestInputField = e.target.closest("div.input-container")?.querySelector("input[type=search]");
|
|
52
|
+
closestInputField?.focus();
|
|
53
|
+
}
|
|
54
|
+
getClassNames() {
|
|
55
|
+
let classNames = '';
|
|
56
|
+
const buttonTypes = ['none', 'icon', 'icon-inline'];
|
|
57
|
+
if (this.value)
|
|
58
|
+
classNames += 'searching ';
|
|
59
|
+
if (this.loading)
|
|
60
|
+
classNames += 'loading ';
|
|
61
|
+
if (buttonTypes.includes(this.button))
|
|
62
|
+
classNames += `button-${this.button} `;
|
|
63
|
+
return classNames;
|
|
64
|
+
}
|
|
65
|
+
componentWillRender() {
|
|
66
|
+
this.cloneListContent();
|
|
67
|
+
this.autocompleteEventBinding();
|
|
68
|
+
}
|
|
69
|
+
onSuggestionUpdate() {
|
|
70
|
+
this.cloneListContent();
|
|
71
|
+
}
|
|
72
|
+
autocompleteEventBinding() {
|
|
73
|
+
if (this.suggestionObserver !== null || !this.list || !this.hostElement || !document.getElementById(this.list)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const targetNode = document.getElementById(this.list);
|
|
77
|
+
this.suggestionObserver = new MutationObserver(this.onSuggestionUpdate.bind(this));
|
|
78
|
+
this.suggestionObserver.observe(targetNode, { attributes: true, childList: true, subtree: true });
|
|
79
|
+
}
|
|
80
|
+
cloneListContent() {
|
|
81
|
+
if (!this.list || !this.hostElement || !document.getElementById(this.list)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const options = [...document.getElementById(this.list).querySelectorAll('option')];
|
|
85
|
+
this.listSuggestion = options.map((item) => {
|
|
86
|
+
if (item.hasAttribute('value')) {
|
|
87
|
+
return item.getAttribute('value');
|
|
88
|
+
}
|
|
89
|
+
return item.innerText;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
render() {
|
|
93
|
+
return (h(Host, { key: 'bd91a32439d948f4362fd667a2a897e00b480a5b' }, h("div", { key: 'dd45a9899d15079c13c060e4cfd75c60730ac922', class: `input-container ${this.getClassNames()}`, "data-haslist": (this.list !== null) + '' }, h("input", { key: '0e283a03de256f134b2d8936fdf2a4d2dd206f2c', type: "search", value: this.value, id: this.inputid, name: this.name, placeholder: this.placeholder, disabled: this.disabled, autocomplete: this.autocomplete, list: this.list, onKeyDown: e => this.emitSearch(e), onInput: e => this.setVal(e) }), h("div", { key: '1eff04ef905ee36aa2e7d7976e522a8bc114681b', class: "button-container" }, (this.button === 'none' || this.button === 'icon-inline') && (h("button", { key: '46f1d1b36518d0b7cc5430efa9167b626d7c80eb', class: "search", tabindex: this.button === 'icon-inline' ? '0' : '-1', onClick: e => this.emitSearch(e), "aria-label": "search", title: "search" }, h("pn-icon", { key: 'ba9cb2a21f9561d79ab779058acaf83f0be7da7a', icon: search, color: "blue700" }))), this.button !== 'icon-inline' && (h("button", { key: '5b537c0cb6227ad2f3fb1d7227c698436510a5b9', class: "clear", "aria-label": "clear", title: "clear search field", tabindex: this.value && (!this.loading || this.button !== 'none') ? '0' : '-1', onClick: (e) => this.clearInput(e) }, h("pn-icon", { key: '70873e93689282f189e65b68a9fa980ad6f9158b', icon: close_small, color: "blue700" }))), this.button === 'none' || (this.button === 'icon-inline' && h("pn-spinner", { key: '6fe9c471b0b67f785e3e5a98ab79c93dacd32d80' })))), this.button !== 'none' && this.button !== 'icon-inline' && (h("pn-button", { key: 'a3671a3fbca963021a75540284144d1cea41c8ab', onClick: e => this.emitSearch(e), loading: this.loading, icon: search, appearance: this.light ? 'light' : 'dark', tooltip: this.button === 'icon' ? this.label : null }, this.label)), this.list && (h("datalist", { key: '7e0bfeda8401c388ebeb3e0e185b52e09636ac8d', id: this.list }, this.listSuggestion.map(item => {
|
|
94
|
+
return h("option", null, item);
|
|
95
|
+
})))));
|
|
96
|
+
}
|
|
97
|
+
static get style() { return PnMarketwebSearchStyle0; }
|
|
98
|
+
}, [1, "pn-marketweb-search", {
|
|
99
|
+
"disabled": [4],
|
|
100
|
+
"placeholder": [1],
|
|
101
|
+
"inputid": [1],
|
|
102
|
+
"name": [1],
|
|
103
|
+
"autocomplete": [1],
|
|
104
|
+
"list": [1],
|
|
105
|
+
"value": [1],
|
|
106
|
+
"label": [1],
|
|
107
|
+
"loading": [4],
|
|
108
|
+
"button": [1],
|
|
109
|
+
"light": [4],
|
|
110
|
+
"suggestionObserver": [32],
|
|
111
|
+
"hasClonedInput": [32],
|
|
112
|
+
"listSuggestion": [32]
|
|
113
|
+
}, [[0, "input", "inputHandler"]]]);
|
|
114
|
+
function defineCustomElement$1() {
|
|
115
|
+
if (typeof customElements === "undefined") {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const components = ["pn-marketweb-search"];
|
|
119
|
+
components.forEach(tagName => { switch (tagName) {
|
|
120
|
+
case "pn-marketweb-search":
|
|
121
|
+
if (!customElements.get(tagName)) {
|
|
122
|
+
customElements.define(tagName, PnMarketwebSearch$1);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
} });
|
|
126
|
+
}
|
|
2
127
|
|
|
3
128
|
const PnMarketwebSearch = PnMarketwebSearch$1;
|
|
4
129
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"pn-marketweb-search.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
1
|
+
{"file":"pn-marketweb-search.js","mappings":"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","names":["PnMarketwebSearch"],"sources":["src/components/input/pn-marketweb-search/pn-marketweb-search.scss?tag=pn-marketweb-search&encapsulation=shadow","src/components/input/pn-marketweb-search/pn-marketweb-search.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n:host {\n display: inline-flex;\n}\n\n:host > pn-button {\n margin-left: 0.35em;\n button {\n // justify-content: flex-start;\n\n .pn-button-bg {\n transition:\n width 0.2s cubic-bezier(0.7, 0, 0.3, 1) 0.2s,\n background 0.1s,\n box-shadow 0.1s,\n left 0.2s,\n transform 0.2s;\n }\n }\n\n &[data-loading='true'] {\n .pn-button-bg {\n left: 0;\n transform: translateX(0);\n transition:\n width 0.2s cubic-bezier(0.7, 0, 0.3, 1) 0.2s,\n background 0.1s,\n box-shadow 0.1s;\n }\n\n pn-spinner {\n left: 0.75em;\n }\n }\n}\n\n:host input {\n padding: 0.75em;\n min-height: 3em;\n font-size: 1em;\n height: 100%;\n font-weight: 500;\n -webkit-font-smoothing: antialiased;\n outline: none;\n border-radius: 3em;\n border: 0.1rem solid $gray700;\n transition:\n box-shadow 0.15s,\n border 0.15s;\n color: $black;\n width: 100%;\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n\n &::placeholder {\n color: $gray400;\n font-weight: normal;\n }\n\n &:focus {\n border: 0.1rem solid $blue700;\n box-shadow:\n 0 0 0 0.2rem #fff,\n 0 0 0 0.4rem $blue700;\n }\n\n &:hover {\n border: 0.1rem solid $blue400;\n }\n\n &:disabled {\n background: $gray50;\n border: none;\n }\n}\n\n:host > .input-container {\n width: 100%;\n position: relative;\n\n .button-container {\n :host[list] & {\n display: none;\n }\n position: absolute;\n top: 0;\n right: 0;\n background: transparent;\n width: 3em;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n button {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(100%, -50%);\n background: $white;\n border: none;\n color: $blue700;\n padding: 0.3rem;\n margin: 0;\n font-size: 0.875em;\n border-radius: 50%;\n outline: none;\n transition:\n border 0.1s,\n background 0.2s,\n box-shadow 0.1s,\n transform cubic-bezier(0.7, 0, 0.3, 1) 0.2s,\n opacity 0.2s;\n border: 0.1rem solid transparent;\n -webkit-tap-highlight-color: transparent;\n\n &.clear,\n &.search {\n cursor: pointer;\n }\n\n &:focus {\n box-shadow:\n 0 0 0 0.2rem #fff,\n 0 0 0 0.4rem $blue700;\n }\n\n &:hover,\n &:focus {\n background: $blue50;\n }\n\n &:active {\n background: $blue700;\n\n pn-icon svg,\n pn-icon svg path {\n fill: white;\n }\n }\n }\n}\n\n:host .searching {\n button.search {\n transform: translate(150%, -50%);\n }\n\n button.clear {\n transform: translate(-50%, -50%);\n }\n}\n\n/*---------------------------------------Button Variants-------------------------------------------*/\n:host .button-none,\n:host .button-icon-inline {\n input {\n padding-right: 3.3em;\n }\n\n pn-spinner {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(100%, -50%);\n transition: transform cubic-bezier(0.7, 0, 0.3, 1) 0.2s;\n }\n\n button.search {\n transform: translate(-50%, -50%);\n }\n\n &.loading {\n button {\n transform: translate(100%, -50%);\n }\n\n pn-spinner {\n transform: translate(-50%, -50%);\n }\n }\n}\n\n:host .button-none.searching button.search {\n transform: translate(100%, -50%);\n}\n\n:host .button-icon > pn-button {\n &[data-loading='true'] {\n .pn-button-bg {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n}\n/*---------------------------------------/Button Variants-------------------------------------------*/\n","import { Component, Prop, h, Host, Event, EventEmitter, Element, Listen, State } from '@stencil/core';\nimport { close_small, search } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-marketweb-search',\n styleUrl: 'pn-marketweb-search.scss',\n shadow: true,\n})\nexport class PnMarketwebSearch {\n @Prop() disabled: boolean = false;\n @Prop() placeholder: string = null;\n @Prop() inputid: string = null;\n @Prop() name: string = null;\n @Prop() autocomplete: string = null;\n @Prop() list: string = null;\n @Prop() value: string = null;\n /** Label for the button */\n @Prop() label: string = null;\n /** Loading animation */\n @Prop() loading: boolean = false;\n /** Button type, options are 'none' for no button, 'icon' for a labelless button with just a search icon and 'icon-inline' for a search button inside of the search field (this last option disables the clear field button) */\n @Prop() button: string = '';\n /** Light instead of dark search button */\n @Prop() light: boolean = false;\n\n @Element() hostElement: HTMLElement;\n\n /** This is emitted on search submission both with keyboard and mouse */\n @Event() search: EventEmitter;\n /** custom event that handles both clearing and input to have the option of just binding listeners to one event instead of two. */\n @Event() update: EventEmitter;\n\n @Listen('input')\n inputHandler() {\n this.update.emit(this.value);\n }\n\n emitSearch(e) {\n if (e.type === 'click' || (e.type === 'keydown' && e.key === 'Enter')) {\n // We prevent the native search event since it's not supported in IE and FF, then we emit our own instead\n e.preventDefault();\n this.search.emit(this.value);\n }\n }\n\n setVal(e) {\n this.value = e.target.value;\n }\n\n clearInput(e) {\n this.value = '';\n this.update.emit(this.value);\n const closestInputField = e.target.closest(\"div.input-container\")?.querySelector(\"input[type=search]\");\n closestInputField?.focus();\n }\n\n getClassNames() {\n let classNames = '';\n\n const buttonTypes = ['none', 'icon', 'icon-inline'];\n if (this.value) classNames += 'searching ';\n if (this.loading) classNames += 'loading ';\n if (buttonTypes.includes(this.button)) classNames += `button-${this.button} `;\n\n return classNames;\n }\n @State() suggestionObserver: MutationObserver = null;\n @State() hasClonedInput: boolean = false;\n @State() listSuggestion: string[] = [];\n componentWillRender() {\n this.cloneListContent();\n this.autocompleteEventBinding();\n }\n\n onSuggestionUpdate() {\n this.cloneListContent();\n }\n\n autocompleteEventBinding() {\n if (this.suggestionObserver !== null || !this.list || !this.hostElement || !document.getElementById(this.list)) {\n return;\n }\n const targetNode = document.getElementById(this.list);\n this.suggestionObserver = new MutationObserver(this.onSuggestionUpdate.bind(this));\n this.suggestionObserver.observe(targetNode, { attributes: true, childList: true, subtree: true });\n }\n\n cloneListContent() {\n if (!this.list || !this.hostElement || !document.getElementById(this.list)) {\n return;\n }\n const options = [...document.getElementById(this.list).querySelectorAll('option')];\n this.listSuggestion = options.map((item: HTMLOptionElement) => {\n if (item.hasAttribute('value')) {\n return item.getAttribute('value');\n }\n return item.innerText;\n });\n }\n\n render() {\n return (\n <Host>\n <div class={`input-container ${this.getClassNames()}`} data-haslist={(this.list !== null) + ''}>\n <input\n type=\"search\"\n value={this.value}\n id={this.inputid}\n name={this.name}\n placeholder={this.placeholder}\n disabled={this.disabled}\n autocomplete={this.autocomplete}\n list={this.list}\n onKeyDown={e => this.emitSearch(e)}\n onInput={e => this.setVal(e)}\n />\n\n <div class=\"button-container\">\n {(this.button === 'none' || this.button === 'icon-inline') && (\n <button class=\"search\" tabindex={this.button === 'icon-inline' ? '0' : '-1'} onClick={e => this.emitSearch(e)} aria-label=\"search\" title=\"search\">\n <pn-icon icon={search} color=\"blue700\"></pn-icon>\n </button>\n )}\n {this.button !== 'icon-inline' && (\n <button\n class=\"clear\"\n aria-label=\"clear\"\n title=\"clear search field\"\n tabindex={this.value && (!this.loading || this.button !== 'none') ? '0' : '-1'}\n onClick={(e) => this.clearInput(e)}\n >\n <pn-icon icon={close_small} color=\"blue700\"></pn-icon>\n </button>\n )}\n\n {this.button === 'none' || (this.button === 'icon-inline' && <pn-spinner></pn-spinner>)}\n </div>\n </div>\n\n {this.button !== 'none' && this.button !== 'icon-inline' && (\n <pn-button\n onClick={e => this.emitSearch(e)}\n loading={this.loading}\n icon={search}\n appearance={this.light ? 'light' : 'dark'}\n tooltip={this.button === 'icon' ? this.label : null}\n >\n {this.label}\n </pn-button>\n )}\n {this.list && (\n <datalist id={this.list}>\n {this.listSuggestion.map(item => {\n return <option>{item}</option>;\n })}\n </datalist>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -116,45 +116,53 @@ const translations = {
|
|
|
116
116
|
showMoreLabel: 'Näytä lisää',
|
|
117
117
|
},
|
|
118
118
|
'de': {
|
|
119
|
-
newMessage: '
|
|
120
|
-
toggleButtonOn: '
|
|
121
|
-
toggleButtonOff: '
|
|
119
|
+
newMessage: 'Neue Nachricht',
|
|
120
|
+
toggleButtonOn: 'Details anzeigen',
|
|
121
|
+
toggleButtonOff: 'Details ausblenden',
|
|
122
|
+
showMoreLabel: 'Mehr anzeigen',
|
|
122
123
|
},
|
|
123
124
|
'zh': {
|
|
124
|
-
newMessage: '
|
|
125
|
-
toggleButtonOn: '
|
|
126
|
-
toggleButtonOff: '
|
|
125
|
+
newMessage: '新消息',
|
|
126
|
+
toggleButtonOn: '显示详情',
|
|
127
|
+
toggleButtonOff: '隐藏详情',
|
|
128
|
+
showMoreLabel: '显示更多',
|
|
127
129
|
},
|
|
128
130
|
'it': {
|
|
129
|
-
newMessage: '
|
|
130
|
-
toggleButtonOn: '
|
|
131
|
-
toggleButtonOff: '
|
|
131
|
+
newMessage: 'Nuovo messaggio',
|
|
132
|
+
toggleButtonOn: 'Mostra dettagli',
|
|
133
|
+
toggleButtonOff: 'Nascondi dettagli',
|
|
134
|
+
showMoreLabel: 'Mostra di più',
|
|
132
135
|
},
|
|
133
136
|
'nl': {
|
|
134
|
-
newMessage: '
|
|
135
|
-
toggleButtonOn: '
|
|
136
|
-
toggleButtonOff: '
|
|
137
|
+
newMessage: 'Nieuw bericht',
|
|
138
|
+
toggleButtonOn: 'Toon details',
|
|
139
|
+
toggleButtonOff: 'Verberg details',
|
|
140
|
+
showMoreLabel: 'Meer tonen',
|
|
137
141
|
},
|
|
138
142
|
'tr': {
|
|
139
|
-
newMessage: '
|
|
140
|
-
toggleButtonOn: '
|
|
141
|
-
toggleButtonOff: '
|
|
143
|
+
newMessage: 'Yeni mesaj',
|
|
144
|
+
toggleButtonOn: 'Detayları göster',
|
|
145
|
+
toggleButtonOff: 'Detayları gizle',
|
|
146
|
+
showMoreLabel: 'Daha fazla göster',
|
|
142
147
|
},
|
|
143
148
|
'pt': {
|
|
144
|
-
newMessage: '
|
|
145
|
-
toggleButtonOn: '
|
|
146
|
-
toggleButtonOff: '
|
|
149
|
+
newMessage: 'Nova mensagem',
|
|
150
|
+
toggleButtonOn: 'Mostrar detalhes',
|
|
151
|
+
toggleButtonOff: 'Ocultar detalhes',
|
|
152
|
+
showMoreLabel: 'Mostrar mais',
|
|
147
153
|
},
|
|
148
154
|
'pl': {
|
|
149
|
-
newMessage: '
|
|
150
|
-
toggleButtonOn: '
|
|
151
|
-
toggleButtonOff: '
|
|
155
|
+
newMessage: 'Nowa wiadomość',
|
|
156
|
+
toggleButtonOn: 'Pokaż szczegóły',
|
|
157
|
+
toggleButtonOff: 'Ukryj szczegóły',
|
|
158
|
+
showMoreLabel: 'Pokaż więcej',
|
|
152
159
|
},
|
|
153
160
|
'pt-BR': {
|
|
154
|
-
newMessage: '
|
|
155
|
-
toggleButtonOn: '
|
|
156
|
-
toggleButtonOff: '
|
|
157
|
-
|
|
161
|
+
newMessage: 'Nova mensagem',
|
|
162
|
+
toggleButtonOn: 'Mostrar detalhes',
|
|
163
|
+
toggleButtonOff: 'Ocultar detalhes',
|
|
164
|
+
showMoreLabel: 'Mostrar mais',
|
|
165
|
+
}
|
|
158
166
|
};
|
|
159
167
|
|
|
160
168
|
class MarketwebTableService {
|
|
@@ -194,7 +202,7 @@ class MarketwebTableService {
|
|
|
194
202
|
}
|
|
195
203
|
}
|
|
196
204
|
|
|
197
|
-
const pnMarketwebTableCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}:host{display:block}.pn-marketweb-table .container{max-width:1200px;margin:0 auto;padding:1rem}.pn-marketweb-table .heading-section{display:flex;justify-content:space-between;gap:2rem;margin-bottom:2rem}@media (max-width: 768px){.pn-marketweb-table .heading-section{flex-direction:column}}.pn-marketweb-table .heading-section .heading-wrapper{display:flex;flex-direction:column}.pn-marketweb-table .heading-section .preamble-section{width:80%}.pn-marketweb-table .heading-section .main-heading{margin-bottom:1rem}.pn-marketweb-table .heading-section .summary{display:flex;height:7rem;justify-content:flex-end;gap:clamp(1rem, 4vw, 2rem)}@media (max-width: 768px){.pn-marketweb-table .heading-section .summary{justify-content:center}}.pn-marketweb-table .heading-section .sub-heading-section{background-color:#effbff;border-radius:1.6rem;display:flex;align-items:center;gap:clamp(0.6rem, 4vw, 1rem);padding:0.6rem 1.2rem;width:13.5rem}.pn-marketweb-table .heading-section .sub-heading-section .icon-container{background-color:#e0f8ff;border-radius:50%;padding:4px}.pn-marketweb-table .heading-section .sub-heading{font-size:clamp(1rem, 3vw, 1.4rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .heading-section .sub-heading strong{color:#005d92;font-weight:700}.pn-marketweb-table .pn-marketweb-table__table{width:100%;border-collapse:collapse;margin-bottom:3.2rem}.pn-marketweb-table .pn-marketweb-table__table tr{border-bottom:1px solid #e9e6e5;position:relative;border-left:4px solid #ffffff;transition:all 0.7s ease}.pn-marketweb-table .pn-marketweb-table__table tr:last-child{border-bottom:none}.pn-marketweb-table .pn-marketweb-table__table tr:hover{border-left:4px solid #8eddf9;background:#effbff}.pn-marketweb-table .pn-marketweb-table__table tr.row-new-message,.pn-marketweb-table .pn-marketweb-table__table tr.row-new-messag:hover{border-left:4px solid #0aa85c;background:linear-gradient(90deg, rgb(220, 246, 231) 0%, rgb(237, 251, 243) 30%, rgb(255, 255, 255) 70%)}.pn-marketweb-table .pn-marketweb-table__table td{padding:1.6rem 1rem}.pn-marketweb-table .image-container{min-height:5.8rem}.pn-marketweb-table .cell-heading{color:#5e554a;font-size:clamp(0.875rem, 4vw, 1.2rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .cell-value{color:#2d2013;display:inline-block;font-size:clamp(1rem, 4vw, 1.5rem);font-weight:400;line-height:clamp(1.4rem, 4vw, 1.8rem);margin:0;padding:0.5rem 0}.pn-marketweb-table .row-image{border-radius:0.5rem}.pn-marketweb-table .actions{align-content:center}.pn-marketweb-table .actions .button-wrapper{display:flex;flex-direction:row;justify-content:flex-end;gap:1.6rem}.pn-marketweb-table .actions .button-wrapper .pn-button-text{white-space:nowrap}@media screen and (max-width: 768px){.pn-marketweb-table .actions .button-wrapper{justify-content:space-between}}@media screen and (max-width:
|
|
205
|
+
const pnMarketwebTableCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}:host{display:block}.pn-marketweb-table .container{max-width:1200px;margin:0 auto;padding:1rem}.pn-marketweb-table .heading-section{display:flex;justify-content:space-between;gap:2rem;margin-bottom:2rem}@media (max-width: 768px){.pn-marketweb-table .heading-section{flex-direction:column}}.pn-marketweb-table .heading-section .heading-wrapper{display:flex;flex-direction:column}.pn-marketweb-table .heading-section .preamble-section{width:80%}.pn-marketweb-table .heading-section .main-heading{margin-bottom:1rem}.pn-marketweb-table .heading-section .summary{display:flex;height:7rem;justify-content:flex-end;gap:clamp(1rem, 4vw, 2rem)}@media (max-width: 768px){.pn-marketweb-table .heading-section .summary{justify-content:center}}.pn-marketweb-table .heading-section .sub-heading-section{background-color:#effbff;border-radius:1.6rem;display:flex;align-items:center;gap:clamp(0.6rem, 4vw, 1rem);padding:0.6rem 1.2rem;width:13.5rem}.pn-marketweb-table .heading-section .sub-heading-section .icon-container{background-color:#e0f8ff;border-radius:50%;padding:4px}.pn-marketweb-table .heading-section .sub-heading{font-size:clamp(1rem, 3vw, 1.4rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .heading-section .sub-heading strong{color:#005d92;font-weight:700}.pn-marketweb-table .pn-marketweb-table__table{width:100%;border-collapse:collapse;margin-bottom:3.2rem;border:none}.pn-marketweb-table .pn-marketweb-table__table tr{border-bottom:1px solid #e9e6e5;position:relative;border-left:4px solid #ffffff;transition:all 0.7s ease}.pn-marketweb-table .pn-marketweb-table__table tr:last-child{border-bottom:none}.pn-marketweb-table .pn-marketweb-table__table tr:hover{border-left:4px solid #8eddf9;background:#effbff}.pn-marketweb-table .pn-marketweb-table__table tr.row-new-message,.pn-marketweb-table .pn-marketweb-table__table tr.row-new-messag:hover{border-left:4px solid #0aa85c;background:linear-gradient(90deg, rgb(220, 246, 231) 0%, rgb(237, 251, 243) 30%, rgb(255, 255, 255) 70%)}.pn-marketweb-table .pn-marketweb-table__table td{padding:1.6rem 1rem}.pn-marketweb-table .image-container{min-height:5.8rem}.pn-marketweb-table .cell-heading{color:#5e554a;font-size:clamp(0.875rem, 4vw, 1.2rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .cell-value{color:#2d2013;display:inline-block;font-size:clamp(1rem, 4vw, 1.5rem);font-weight:400;line-height:clamp(1.4rem, 4vw, 1.8rem);margin:0;padding:0.5rem 0}.pn-marketweb-table .row-image{border-radius:0.5rem}.pn-marketweb-table .actions{align-content:center;width:20%}.pn-marketweb-table .actions .button-wrapper{display:flex;flex-direction:row;justify-content:flex-end;gap:1.6rem}.pn-marketweb-table .actions .button-wrapper pn-button{min-width:50%}.pn-marketweb-table .actions .button-wrapper pn-button.toggle-widget{min-width:30%}.pn-marketweb-table .actions .button-wrapper .pn-button-text{white-space:nowrap}@media screen and (max-width: 768px){.pn-marketweb-table .actions .button-wrapper{justify-content:space-between;flex-direction:column}}@media screen and (max-width: 768px){.pn-marketweb-table tr{display:flex;flex-wrap:wrap}.pn-marketweb-table td:not(.cell-content){width:100%}.pn-marketweb-table td.cell-image{text-align:center}.pn-marketweb-table td.cell-content{flex:1 0 40%}.pn-marketweb-table td.cell-content::before{content:attr(data-label);display:block;font-weight:bold;margin-bottom:0.5em}.pn-marketweb-table td.actions .button-wrapper{gap:2rem}}@media (min-width: 768px){.pn-marketweb-table .row-image{max-width:80px}}.pn-marketweb-table .toggle-detail{display:none;color:#005d92;cursor:pointer;border:none;border-radius:3em;outline:none;position:relative;font-size:0.875em;min-width:5.5em;font-weight:500;background-color:transparent;justify-content:center;align-items:center;transition:color 0.3s;-webkit-tap-highlight-color:transparent;text-decoration:none;padding:0.375em 1em;min-height:2em;line-height:1.65em;white-space:nowrap}.pn-marketweb-table .toggle-detail:hover{background-color:#e0f8ff;opacity:1}.pn-marketweb-table .shipment-id-active .button-wrapper{display:flex}.pn-marketweb-table tr td.cell-content:first-child .cell-value{font-weight:500}.pn-marketweb-table .pn-widget-wrapper{display:flex;justify-content:center}.pn-marketweb-table .shipment-id-active,.pn-marketweb-table .widget-row{background-color:#effbff}.pn-marketweb-table .pn-market-table__show-more-wrapper{display:flex;justify-content:center;width:100%}.row-new-message .button-wrapper:after{content:attr(data-label);background:#0aa85c;border-radius:0 0.4rem 0.4rem 0;color:#ffffff;display:block;position:absolute;left:0;top:0;font-size:1.4rem;padding:0 0.4rem}@media (min-width: 768px){.row-new-message .button-wrapper:after{background:#005e41;border-radius:0.4rem;left:auto;right:1.6rem;font-size:1.1rem;top:0.3rem}}";
|
|
198
206
|
const PnMarketwebTableStyle0 = pnMarketwebTableCss;
|
|
199
207
|
|
|
200
208
|
const PnMarketWebTable = /*@__PURE__*/ proxyCustomElement(class PnMarketWebTable extends HTMLElement {
|
|
@@ -401,7 +409,7 @@ const PnMarketWebTable = /*@__PURE__*/ proxyCustomElement(class PnMarketWebTable
|
|
|
401
409
|
renderActionButtons(row) {
|
|
402
410
|
if (!row.actionButtons)
|
|
403
411
|
return null;
|
|
404
|
-
return (h("td", { class: "actions", role: "cell" }, h("div", { class: "button-wrapper", role: "group", "aria-label": this.tableRowCtaActionLabel, "data-label": this.i18n.newMessage }, row.actionButtons.map(btn => (h("pn-button", { appearance: btn.appearance, class: btn.class, variant: btn.variant, small: btn.small, loading: btn.loading, icon: btn.icon, leftIcon: btn.leftIcon, tooltip: btn.tooltip, href: btn.href, rel: btn.rel, download: btn.download, form: btn.form, buttonId: btn.buttonId, "data-chat": btn.customAttribute }, btn.content))))));
|
|
412
|
+
return (h("td", { class: "actions", role: "cell" }, h("div", { class: "button-wrapper", role: "group", "aria-label": this.tableRowCtaActionLabel, "data-label": this.i18n.newMessage }, row.actionButtons.map(btn => (h("pn-button", { appearance: btn.appearance, class: btn.class, variant: btn.variant, small: btn.small, loading: btn.loading, icon: btn.icon, leftIcon: btn.leftIcon, tooltip: btn.tooltip, href: btn.href, rel: btn.rel, download: btn.download, form: btn.form, buttonId: btn.buttonId, "icon-only": btn.iconOnly, arialabel: btn.content, "data-chat": btn.customAttribute }, btn.content))))));
|
|
405
413
|
}
|
|
406
414
|
async OpenChatEvent(aTags) {
|
|
407
415
|
aTags.forEach((aTag) => {
|
|
@@ -443,7 +451,7 @@ const PnMarketWebTable = /*@__PURE__*/ proxyCustomElement(class PnMarketWebTable
|
|
|
443
451
|
render() {
|
|
444
452
|
const tableId = `table-${Math.random().toString(36)}`;
|
|
445
453
|
const headingId = `${tableId}-main-heading`;
|
|
446
|
-
return (h(Host, { key: '
|
|
454
|
+
return (h(Host, { key: '98283a658faabafcb813eeb447c4bc406f05f18c', language: this.language }, h("div", { key: 'baea729e089500c3c99757e4e614f9f710000603', class: 'pn-marketweb-table' }, h("div", { key: 'ef40e29179a3d9f380360ed54099e5724d4368df', role: 'region', "aria-labelledby": this.mainHeading ? headingId : undefined }, h("div", { key: '61c96ab70681a3ec976c94f385c9d4136d73cb8e', class: 'heading-section' }, h("div", { key: '4ed87bda71059736a9d0dbe8a55d89a34a81a89c', class: 'heading-wrapper' }, this.mainHeading && (h(HeadingTag, { key: '0ef856c0259011be63c5b6a169bd69285ee09c13', level: this.mainHeadingLevel, cssClass: 'main-heading', id: headingId }, this.mainHeading)), this.preamble && (h("div", { key: '9eb7c8d520843e331a2ec77bc434a135d82c4699', class: "preamble-section" }, this.preamble)))), this._rows.length > 0 && (h("table", { key: '6346e44c176d834b2fe66dea162c5976fae61441', class: 'pn-marketweb-table__table', "aria-labelledby": this.mainHeading ? `${tableId}-main-heading` : undefined }, this._headers && (h("thead", { key: '92d29b69db5ca91664df5dd9ee3fb7b9c3fc97bb', class: this.showHeadersInCells ? 'sr-only' : undefined }, h("tr", { key: 'fa3d3ec4062835a13f6292a70e37559e7ba90fb7' }, this._rows.some((row) => row.imageUrl) && this.imageColAriaHeader && (h("th", { key: '5d2e43ee1cd03b1a722ee5ae9594226500c0fbe3', scope: 'col', class: 'sr-only' }, this.imageColAriaHeader)), this._headers.map((header) => (h("th", { key: header.key, scope: 'col', class: 'sr-only-mobile' }, header.label))), this._rows.some((row) => row.link1 || row.link2) && this.ctaColAriaHeader && (h("th", { key: '07356d07d91450352ea9a425286e1f9876e2e578', scope: 'col', class: 'sr-only' }, this.ctaColAriaHeader))))), h("tbody", { key: '3b0357be0ffccef7e768d055379f75a8fdd1b6e7', class: "pn-marketweb-table__table-body" }, this._rows.slice(0, this.shipmentCount).map((row, rowIndex) => (h("tr", { key: rowIndex, class: `cell-row ${row.hasNewMessages ? "row-new-message" : ''}` }, row.imageUrl && (h("td", { class: 'cell-image' }, h("div", { class: 'image-container' }, h("img", { src: row.imageUrl, alt: '', class: 'row-image' })))), this._headers.map((header) => (h("td", { key: `${rowIndex}-${header.key}`, class: 'cell-content' }, this.renderCell(header, row)))), this.renderActionButtons(row))))))), this.shipmentCount > this._rows.length && (h("div", { key: 'ff1ab5516f505a6315a45e60275e0ca1167840f1', class: "pn-market-table__show-more-wrapper" }, h("pn-button", { key: 'c34362a272f682e5e7a2f9bb6498d1713afcf6fa', variant: "outlined", appearance: "light", label: this.i18n?.showMoreLabel || 'Show More', onClick: () => this.handleShowMore() })))))));
|
|
447
455
|
}
|
|
448
456
|
static get watchers() { return {
|
|
449
457
|
"language": ["onLanguageChange"]
|