@postnord/pn-marketweb-components 4.0.1 → 4.0.3

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.
Files changed (111) hide show
  1. package/dist/cjs/index-b02670c2.js +4 -12
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/pn-chat-message_2.cjs.entry.js +2 -1
  4. package/dist/cjs/pn-chat-message_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/pn-chat.cjs.entry.js +1 -1
  6. package/dist/cjs/{pn-chat.service-eaf6ed50.js → pn-chat.service-5a8d89b9.js} +2 -4
  7. package/dist/cjs/pn-chat.service-5a8d89b9.js.map +1 -0
  8. package/dist/cjs/pn-market-web-components.cjs.js +1 -1
  9. package/dist/cjs/pn-marketweb-table.cjs.entry.js +37 -29
  10. package/dist/cjs/pn-marketweb-table.cjs.entry.js.map +1 -1
  11. package/dist/cjs/pn-usp-promoter.cjs.entry.js +1 -1
  12. package/dist/collection/collection-manifest.json +1 -3
  13. package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +2 -1
  14. package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js.map +1 -1
  15. package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js +23 -163
  16. package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js.map +1 -1
  17. package/dist/collection/components/widgets/pn-chat/pn-chat.service.js +1 -3
  18. package/dist/collection/components/widgets/pn-chat/pn-chat.service.js.map +1 -1
  19. package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js +4 -4
  20. package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js.map +1 -1
  21. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.css +10 -1
  22. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +2 -2
  23. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js.map +1 -1
  24. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js +37 -1
  25. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js.map +1 -1
  26. package/dist/collection/components/widgets/pn-marketweb-table/translations.js +33 -25
  27. package/dist/collection/components/widgets/pn-marketweb-table/translations.js.map +1 -1
  28. package/dist/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
  29. package/dist/collection/globals/types.js.map +1 -1
  30. package/dist/components/pn-chat-message2.js +2 -1
  31. package/dist/components/pn-chat-message2.js.map +1 -1
  32. package/dist/components/pn-chat.service.js +1 -3
  33. package/dist/components/pn-chat.service.js.map +1 -1
  34. package/dist/components/pn-marketweb-search.js +126 -1
  35. package/dist/components/pn-marketweb-search.js.map +1 -1
  36. package/dist/components/pn-marketweb-table.js +36 -28
  37. package/dist/components/pn-marketweb-table.js.map +1 -1
  38. package/dist/components/pn-usp-promoter.js +1 -1
  39. package/dist/esm/index-c311acd6.js +4 -12
  40. package/dist/esm/loader.js +1 -1
  41. package/dist/esm/pn-chat-message_2.entry.js +2 -1
  42. package/dist/esm/pn-chat-message_2.entry.js.map +1 -1
  43. package/dist/esm/pn-chat.entry.js +1 -1
  44. package/dist/esm/{pn-chat.service-f4037d6f.js → pn-chat.service-0def5c4e.js} +2 -4
  45. package/dist/esm/pn-chat.service-0def5c4e.js.map +1 -0
  46. package/dist/esm/pn-market-web-components.js +1 -1
  47. package/dist/esm/pn-marketweb-table.entry.js +37 -29
  48. package/dist/esm/pn-marketweb-table.entry.js.map +1 -1
  49. package/dist/esm/pn-usp-promoter.entry.js +1 -1
  50. package/dist/package.json +1 -1
  51. package/dist/pn-market-web-components/p-3a936c5d.entry.js +2 -0
  52. package/dist/pn-market-web-components/p-3a936c5d.entry.js.map +1 -0
  53. package/dist/pn-market-web-components/p-6bec8d72.js +2 -0
  54. package/dist/pn-market-web-components/p-6bec8d72.js.map +1 -0
  55. package/dist/pn-market-web-components/p-923aa6d2.entry.js +2 -0
  56. package/dist/pn-market-web-components/p-923aa6d2.entry.js.map +1 -0
  57. package/dist/pn-market-web-components/{p-cc7c596e.entry.js → p-a298a263.entry.js} +2 -2
  58. package/dist/pn-market-web-components/{p-f21311ad.entry.js → p-da56370b.entry.js} +2 -2
  59. package/dist/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  60. package/dist/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
  61. package/dist/types/components/widgets/pn-chat/pn-chat-message/pn-chat-message.d.ts +1 -0
  62. package/dist/types/components/widgets/pn-chat/pn-chat-stories-constants.d.ts +6 -127
  63. package/dist/types/components/widgets/pn-marketweb-table/translations.d.ts +8 -0
  64. package/dist/types/components.d.ts +0 -100
  65. package/dist/types/globals/types.d.ts +2 -0
  66. package/dist/vscode-data.json +0 -142
  67. package/package.json +1 -1
  68. package/dist/cjs/pn-chat.service-eaf6ed50.js.map +0 -1
  69. package/dist/cjs/pn-search.cjs.entry.js +0 -54
  70. package/dist/cjs/pn-search.cjs.entry.js.map +0 -1
  71. package/dist/cjs/pn-usp-simple.cjs.entry.js +0 -56
  72. package/dist/cjs/pn-usp-simple.cjs.entry.js.map +0 -1
  73. package/dist/collection/components/widgets/pn-search/pn-search.css +0 -140
  74. package/dist/collection/components/widgets/pn-search/pn-search.js +0 -368
  75. package/dist/collection/components/widgets/pn-search/pn-search.js.map +0 -1
  76. package/dist/collection/components/widgets/pn-search/pn-search.stories.js +0 -54
  77. package/dist/collection/components/widgets/pn-search/pn-search.stories.js.map +0 -1
  78. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.css +0 -116
  79. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js +0 -269
  80. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js.map +0 -1
  81. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js +0 -63
  82. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js.map +0 -1
  83. package/dist/components/pn-marketweb-search2.js +0 -130
  84. package/dist/components/pn-marketweb-search2.js.map +0 -1
  85. package/dist/components/pn-search.d.ts +0 -11
  86. package/dist/components/pn-search.js +0 -91
  87. package/dist/components/pn-search.js.map +0 -1
  88. package/dist/components/pn-usp-simple.d.ts +0 -11
  89. package/dist/components/pn-usp-simple.js +0 -82
  90. package/dist/components/pn-usp-simple.js.map +0 -1
  91. package/dist/esm/pn-chat.service-f4037d6f.js.map +0 -1
  92. package/dist/esm/pn-search.entry.js +0 -50
  93. package/dist/esm/pn-search.entry.js.map +0 -1
  94. package/dist/esm/pn-usp-simple.entry.js +0 -52
  95. package/dist/esm/pn-usp-simple.entry.js.map +0 -1
  96. package/dist/pn-market-web-components/p-04107723.entry.js +0 -2
  97. package/dist/pn-market-web-components/p-04107723.entry.js.map +0 -1
  98. package/dist/pn-market-web-components/p-10776075.entry.js +0 -2
  99. package/dist/pn-market-web-components/p-10776075.entry.js.map +0 -1
  100. package/dist/pn-market-web-components/p-2fd60147.entry.js +0 -2
  101. package/dist/pn-market-web-components/p-2fd60147.entry.js.map +0 -1
  102. package/dist/pn-market-web-components/p-a079c496.js +0 -2
  103. package/dist/pn-market-web-components/p-a079c496.js.map +0 -1
  104. package/dist/pn-market-web-components/p-e733f44f.entry.js +0 -2
  105. package/dist/pn-market-web-components/p-e733f44f.entry.js.map +0 -1
  106. package/dist/types/components/widgets/pn-search/pn-search.d.ts +0 -29
  107. package/dist/types/components/widgets/pn-search/pn-search.stories.d.ts +0 -7
  108. package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.d.ts +0 -19
  109. package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.stories.d.ts +0 -7
  110. /package/dist/pn-market-web-components/{p-cc7c596e.entry.js.map → p-a298a263.entry.js.map} +0 -0
  111. /package/dist/pn-market-web-components/{p-f21311ad.entry.js.map → p-da56370b.entry.js.map} +0 -0
@@ -1,130 +0,0 @@
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 = /*@__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() {
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);
123
- }
124
- break;
125
- } });
126
- }
127
-
128
- export { PnMarketwebSearch as P, defineCustomElement as d };
129
-
130
- //# sourceMappingURL=pn-marketweb-search2.js.map
@@ -1 +0,0 @@
1
- {"file":"pn-marketweb-search2.js","mappings":"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","names":[],"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}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/components";
2
-
3
- interface PnSearch extends Components.PnSearch, HTMLElement {}
4
- export const PnSearch: {
5
- prototype: PnSearch;
6
- new (): PnSearch;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;
@@ -1,91 +0,0 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
- import { d as defineCustomElement$2 } from './pn-marketweb-search2.js';
3
-
4
- const pnSearchCss = "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}}.pn-search{background-color:transparent;display:flex;flex-direction:column;align-items:center}.pn-search .graphics-container{padding-bottom:1rem}.pn-search .graphics{border-radius:50%;height:clamp(12rem, 14vw, 16rem);width:clamp(12rem, 14vw, 16rem);aspect-ratio:1/1;object-fit:cover}.pn-search .illustration{--pn-width:12rem;--pn-height:12rem}.pn-search .search-container{margin:clamp(1rem, 3vh, 1.5rem) 0}.pn-search .search-container ::placeholder{color:#5e554a}.pn-search .main{text-align:center;width:100%}.pn-search .heading{color:#000000;font-size:clamp(2rem, 4vw, 3.2rem);line-height:1;margin:0}.pn-search .search-container{display:flex;width:100%}.pn-search .search-container .search-component input,.pn-search .search-container .search-component button{font-size:1.6rem}.pn-search .cta{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-top:2rem;gap:1.2rem;width:100%}.pn-search .btn-mw[data-secondary]{color:#005d92;font-weight:500;text-decoration:underline}@media (min-width: 768px){.pn-search{flex-direction:row;align-items:flex-start}.pn-search .graphics-container{padding-right:clamp(2rem, 3vw, 4rem);padding-bottom:0}.pn-search .illustration{--pn-width:15rem;--pn-height:15rem}.pn-search .main{text-align:left}.pn-search pn-marketweb-search{width:40rem}.pn-search .cta{gap:1.6rem}.pn-search .btn-mw[data-primary]{width:auto;margin-bottom:0}.pn-search .btn-mw[data-secondary]{margin-top:0}}@media (min-width: 1200px){.pn-search{padding:2.4rem}.pn-search .search-container{max-width:400px}.pn-search .illustration{--pn-width:16rem;--pn-height:16rem}}@media (min-width: 1600px){.pn-search{max-width:1400px;margin:0 auto;padding:3.2rem}.pn-search .search-container{max-width:500px}}";
5
- const PnSearchStyle0 = pnSearchCss;
6
-
7
- const PNSearch = /*@__PURE__*/ proxyCustomElement(class PNSearch extends HTMLElement {
8
- constructor() {
9
- super();
10
- this.__registerHost();
11
- this.pnSearch = createEvent(this, "pnSearch", 7);
12
- this.componentAriaLabel = undefined;
13
- this.heading = undefined;
14
- this.pnIllustrationSvg = undefined;
15
- this.imageUrl = undefined;
16
- this.imageAltText = undefined;
17
- this.searchPlaceholder = undefined;
18
- this.searchButtonText = undefined;
19
- this.searchButtonLabel = undefined;
20
- this.searchUrl = undefined;
21
- this.primaryButtonText = undefined;
22
- this.primaryButtonUrl = undefined;
23
- this.primaryButtonIconSvg = undefined;
24
- this.secondaryButtonText = undefined;
25
- this.secondaryButtonUrl = undefined;
26
- this.searchDescriptionAria = undefined;
27
- this.ctaActionsLabel = undefined;
28
- this.searchType = undefined;
29
- }
30
- get hostElement() { return this; }
31
- pnSearch;
32
- doSearch = (e) => {
33
- if (!this.searchUrl) {
34
- console.warn('Search URL is not defined');
35
- return;
36
- }
37
- const searchDetail = {
38
- query: e.detail,
39
- timestamp: Date.now(),
40
- };
41
- this.pnSearch.emit(searchDetail);
42
- };
43
- render() {
44
- const hasButtons = this.primaryButtonUrl || this.secondaryButtonUrl;
45
- return (h(Host, { key: 'fd8fdc6f6bc5d4743ff328d914a6b2b55d840503' }, h("div", { key: 'fb4be66b1a38fde9e5b0b0e3fc4abbdf0f1b2f38', class: "pn-search", role: "search", "aria-label": this.componentAriaLabel }, h("div", { key: 'b07dbfb4dcdf54e88ac790d4da6aa97a00356d04', class: "graphics-container", "aria-hidden": !this.imageAltText }, !this.pnIllustrationSvg && this.imageUrl && h("img", { key: '50ad3338cf3912ff74a50a6b72102e6d5e61f4f6', class: "graphics", src: this.imageUrl, alt: this.imageAltText || '', loading: "lazy" }), this.pnIllustrationSvg && h("pn-illustration", { key: '3956261bb79fbac47239f2091e3d50344e94d555', class: "illustration", illustration: this.pnIllustrationSvg, role: "presentation" })), h("div", { key: '17c6d2c2d1cd812f583f072b17adc3747562ae85', class: "main" }, h("h2", { key: '9214e9895160ee1d316f1ee09f4ddacb7c81f452', class: "heading", id: "search-section-heading" }, this.heading), h("div", { key: '1db65a02236162c22210981d11d3567e6cc27f58', class: "search-container", "aria-labelledby": "search-section-heading" }, h("pn-marketweb-search", { key: 'a560d93bb4747643a5c81610c2e55d0af0825559', class: "search-component", label: this.searchButtonLabel, name: "search", inputid: "search-field", autocomplete: "off", placeholder: this.searchPlaceholder, button: this.searchButtonText, disabled: false, loading: false, light: false, list: null, onSearch: this.doSearch, "data-search-url": this.searchUrl, "aria-describedby": "search-description" }), this.searchDescriptionAria && (h("div", { key: '3d59bd65947e1ecbdcfb75667135dc40e2482955', id: "search-description", class: "sr-only" }, this.searchDescriptionAria))), hasButtons && (h("div", { key: '1d9a2bd31084ae806879e6bc9e820591e3bd4b29', class: "cta", role: "group", "aria-label": this.ctaActionsLabel }, this.primaryButtonUrl && (h("pn-button", { key: '5ddda20fd6846f75e301272e52fc3c200e2c71bb', appearance: "light", variant: "outlined", small: true, icon: this.primaryButtonIconSvg, "left-icon": Boolean(this.primaryButtonIconSvg), class: "btn-mw", href: this.primaryButtonUrl, "data-primary": true }, this.primaryButtonText)), this.secondaryButtonUrl && (h("a", { key: 'a82cf19405f6144f9b5fd789ffa1242128a4c8f1', href: this.secondaryButtonUrl, class: "btn-mw", "data-secondary": true, role: "button" }, this.secondaryButtonText))))))));
46
- }
47
- static get style() { return PnSearchStyle0; }
48
- }, [0, "pn-search", {
49
- "componentAriaLabel": [1, "component-aria-label"],
50
- "heading": [1],
51
- "pnIllustrationSvg": [1, "pn-illustration-svg"],
52
- "imageUrl": [1, "image-url"],
53
- "imageAltText": [1, "image-alt-text"],
54
- "searchPlaceholder": [1, "search-placeholder"],
55
- "searchButtonText": [1, "search-button-text"],
56
- "searchButtonLabel": [1, "search-button-label"],
57
- "searchUrl": [1, "search-url"],
58
- "primaryButtonText": [1, "primary-button-text"],
59
- "primaryButtonUrl": [1, "primary-button-url"],
60
- "primaryButtonIconSvg": [1, "primary-button-icon-svg"],
61
- "secondaryButtonText": [1, "secondary-button-text"],
62
- "secondaryButtonUrl": [1, "secondary-button-url"],
63
- "searchDescriptionAria": [1, "search-description-aria"],
64
- "ctaActionsLabel": [1, "cta-actions-label"],
65
- "searchType": [1, "search-type"]
66
- }]);
67
- function defineCustomElement$1() {
68
- if (typeof customElements === "undefined") {
69
- return;
70
- }
71
- const components = ["pn-search", "pn-marketweb-search"];
72
- components.forEach(tagName => { switch (tagName) {
73
- case "pn-search":
74
- if (!customElements.get(tagName)) {
75
- customElements.define(tagName, PNSearch);
76
- }
77
- break;
78
- case "pn-marketweb-search":
79
- if (!customElements.get(tagName)) {
80
- defineCustomElement$2();
81
- }
82
- break;
83
- } });
84
- }
85
-
86
- const PnSearch = PNSearch;
87
- const defineCustomElement = defineCustomElement$1;
88
-
89
- export { PnSearch, defineCustomElement };
90
-
91
- //# sourceMappingURL=pn-search.js.map
@@ -1 +0,0 @@
1
- {"file":"pn-search.js","mappings":";;;AAAA,MAAM,WAAW,GAAG,wlEAAwlE,CAAC;AAC7mE,uBAAe,WAAW;;MCUb,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;IAqBV,QAAQ,CAAmC;IAE5C,QAAQ,GAAG,CAAC,CAAc;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;SACR;QAED,MAAM,YAAY,GAAsB;YACtC,KAAK,EAAE,CAAC,CAAC,MAAM;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAClC,CAAC;IAEF,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAEpE,QACE,EAAC,IAAI,uDACH,4DAAK,KAAK,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,gBAAa,IAAI,CAAC,kBAAkB,IACtE,4DAAK,KAAK,EAAC,oBAAoB,iBAAc,CAAC,IAAI,CAAC,YAAY,IAC5D,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,4DAAK,KAAK,EAAC,UAAU,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAC,MAAM,GAAG,EACrI,IAAI,CAAC,iBAAiB,IAAI,wEAAiB,KAAK,EAAC,cAAc,EAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAC,cAAc,GAAG,CACzH,EAEN,4DAAK,KAAK,EAAC,MAAM,IACf,2DAAI,KAAK,EAAC,SAAS,EAAC,EAAE,EAAC,wBAAwB,IAC5C,IAAI,CAAC,OAAO,CACV,EAEL,4DAAK,KAAK,EAAC,kBAAkB,qBAAiB,wBAAwB,IACpE,4EACE,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAC7B,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,cAAc,EACtB,YAAY,EAAC,KAAK,EAClB,WAAW,EAAE,IAAI,CAAC,iBAAiB,EACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAC7B,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,qBACN,IAAI,CAAC,SAAS,sBACd,oBAAoB,GACrC,EACD,IAAI,CAAC,qBAAqB,KACzB,4DAAK,EAAE,EAAC,oBAAoB,EAAC,KAAK,EAAC,SAAS,IACzC,IAAI,CAAC,qBAAqB,CACvB,CACP,CACG,EAEL,UAAU,KACT,4DAAK,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,gBAAa,IAAI,CAAC,eAAe,IAC3D,IAAI,CAAC,gBAAgB,KACpB,kEACE,UAAU,EAAC,OAAO,EAClB,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,IAAI,CAAC,oBAAoB,eACpB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAC7C,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,IAAI,CAAC,gBAAgB,0BAG1B,IAAI,CAAC,iBAAiB,CACb,CACb,EACA,IAAI,CAAC,kBAAkB,KACtB,0DAAG,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAC,QAAQ,0BAAgB,IAAI,EAAC,QAAQ,IAC1E,IAAI,CAAC,mBAAmB,CACvB,CACL,CACG,CACP,CACG,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/widgets/pn-search/pn-search.scss?tag=pn-search","src/components/widgets/pn-search/pn-search.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n.pn-search {\n background-color: transparent;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .graphics-container {\n padding-bottom: 1rem;\n }\n\n .graphics {\n border-radius: 50%;\n height: clamp(12rem, 14vw, 16rem);\n width: clamp(12rem, 14vw, 16rem);\n aspect-ratio: 1 / 1;\n object-fit: cover;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidth};\n --pn-height: #{$illustrationWidth};\n }\n\n .search-container {\n margin: clamp(1rem, 3vh, 1.5rem) 0;\n\n ::placeholder {\n color: $gray700;\n }\n }\n\n .main {\n text-align: center;\n width: 100%;\n }\n\n .heading {\n color: $black;\n font-size: clamp(2rem, 4vw, 3.2rem);\n line-height: 1;\n margin: 0;\n }\n\n .search-container {\n display: flex;\n width: 100%;\n\n .search-component {\n input,\n button {\n font-size: 1.6rem;\n }\n }\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n margin-top: 2rem;\n gap: 1.2rem;\n width: 100%;\n }\n\n .btn-mw[data-secondary] {\n color: $blue700;\n font-weight: 500;\n text-decoration: underline;\n }\n}\n\n@media (min-width: 768px) {\n .pn-search {\n flex-direction: row;\n align-items: flex-start;\n\n .graphics-container {\n padding-right: clamp(2rem, 3vw, 4rem);\n padding-bottom: 0;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthMd};\n --pn-height: #{$illustrationWidthMd};\n }\n\n .main {\n text-align: left;\n }\n\n pn-marketweb-search {\n width: 40rem;\n }\n\n .cta {\n gap: 1.6rem;\n }\n\n .btn-mw[data-primary] {\n width: auto;\n margin-bottom: 0;\n }\n\n .btn-mw[data-secondary] {\n margin-top: 0;\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-search {\n padding: 2.4rem;\n\n .search-container {\n max-width: 400px;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthLg};\n --pn-height: #{$illustrationWidthLg};\n }\n }\n}\n\n@media (min-width: 1600px) {\n .pn-search {\n max-width: 1400px;\n margin: 0 auto;\n padding: 3.2rem;\n\n .search-container {\n max-width: 500px;\n }\n }\n}\n","import { Component, Host, Element, Prop, h, Event, EventEmitter } from '@stencil/core';\n\ninterface SearchEventDetail {\n query: string;\n timestamp: number;\n}\n\n@Component({\n tag: 'pn-search',\n styleUrl: 'pn-search.scss',\n})\nexport class PNSearch {\n @Element() hostElement!: HTMLElement;\n\n @Prop() componentAriaLabel!: string;\n @Prop() heading!: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n @Prop() searchPlaceholder?: string;\n @Prop() searchButtonText?: string;\n @Prop() searchButtonLabel?: string;\n @Prop() searchUrl?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() searchDescriptionAria?: string;\n @Prop() ctaActionsLabel?: string;\n @Prop() searchType: 'shipments' | 'episearch';\n\n @Event() pnSearch!: EventEmitter<SearchEventDetail>;\n\n private doSearch = (e: CustomEvent): void => {\n if (!this.searchUrl) {\n console.warn('Search URL is not defined');\n return;\n }\n\n const searchDetail: SearchEventDetail = {\n query: e.detail,\n timestamp: Date.now(),\n };\n\n this.pnSearch.emit(searchDetail);\n };\n\n render() {\n const hasButtons = this.primaryButtonUrl || this.secondaryButtonUrl;\n\n return (\n <Host>\n <div class=\"pn-search\" role=\"search\" aria-label={this.componentAriaLabel}>\n <div class=\"graphics-container\" aria-hidden={!this.imageAltText}>\n {!this.pnIllustrationSvg && this.imageUrl && <img class=\"graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {this.pnIllustrationSvg && <pn-illustration class=\"illustration\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n\n <div class=\"main\">\n <h2 class=\"heading\" id=\"search-section-heading\">\n {this.heading}\n </h2>\n\n <div class=\"search-container\" aria-labelledby=\"search-section-heading\">\n <pn-marketweb-search\n class=\"search-component\"\n label={this.searchButtonLabel}\n name=\"search\"\n inputid=\"search-field\"\n autocomplete=\"off\"\n placeholder={this.searchPlaceholder}\n button={this.searchButtonText}\n disabled={false}\n loading={false}\n light={false}\n list={null}\n onSearch={this.doSearch}\n data-search-url={this.searchUrl}\n aria-describedby=\"search-description\"\n />\n {this.searchDescriptionAria && (\n <div id=\"search-description\" class=\"sr-only\">\n {this.searchDescriptionAria}\n </div>\n )}\n </div>\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaActionsLabel}>\n {this.primaryButtonUrl && (\n <pn-button\n appearance=\"light\"\n variant=\"outlined\"\n small={true}\n icon={this.primaryButtonIconSvg}\n left-icon={Boolean(this.primaryButtonIconSvg)}\n class=\"btn-mw\"\n href={this.primaryButtonUrl}\n data-primary\n >\n {this.primaryButtonText}\n </pn-button>\n )}\n {this.secondaryButtonUrl && (\n <a href={this.secondaryButtonUrl} class=\"btn-mw\" data-secondary role=\"button\">\n {this.secondaryButtonText}\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/components";
2
-
3
- interface PnUspSimple extends Components.PnUspSimple, HTMLElement {}
4
- export const PnUspSimple: {
5
- prototype: PnUspSimple;
6
- new (): PnUspSimple;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;
@@ -1,82 +0,0 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { H as HeadingTag } from './HeadingTag.js';
3
-
4
- const pnUspSimpleCss = "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}}:root{--usp-preamble-margin:clamp(1.5rem, 3vw, 1.8rem)}.pn-usp-simple{background:linear-gradient(90deg, #ffffff 0%, #effbff 17.44%);color:#2d2013;display:flex;flex-direction:column-reverse;max-width:100%;padding:clamp(2rem, 5vw, 5rem)}.pn-usp-simple .heading{font-size:clamp(2rem, 4vw, 3rem);font-weight:700;margin-bottom:1rem}.pn-usp-simple .preamble{font-size:clamp(1rem, 4vw, 1.6rem);margin-top:var(--usp-preamble-margin);margin-bottom:var(--usp-preamble-margin)}.pn-usp-simple .cta{display:flex;font-size:clamp(1rem, 4vw, 1.6rem);flex-direction:column;gap:clamp(1rem, 4vw, 1.2rem);padding:0 6rem}.pn-usp-simple .image-container{display:flex;align-items:center;justify-content:center;margin-bottom:2rem}.pn-usp-simple .image-container .graphics{--pn-width:12rem !important;--pn-height:12rem !important}.pn-usp-simple .image-container .image{border-radius:50%}@media (min-width: 768px){.pn-usp-simple{flex-direction:row;align-items:center}.pn-usp-simple .content{max-width:60%}.pn-usp-simple .cta{flex-direction:row;gap:clamp(2rem, 3vw, 3rem);padding:0}.pn-usp-simple .image-container{flex:clamp(15rem, 3vw, 20rem);margin-bottom:0}.pn-usp-simple .image-container .graphics{--pn-width:15rem;--pn-height:15rem}}@media (min-width: 1200px){.pn-usp-simple{max-width:1140px;margin:0 auto}.pn-usp-simple .content{max-width:50%}.pn-usp-simple .image-container .graphics{--pn-width:18rem;--pn-height:18rem}}@media (min-width: 1640px){.pn-usp-simple{max-width:1400px}.pn-usp-simple .image-container .graphics{--pn-width:20rem;--pn-height:20rem}}";
5
- const PnUspSimpleStyle0 = pnUspSimpleCss;
6
-
7
- const PnUspSimple$1 = /*@__PURE__*/ proxyCustomElement(class PnUspSimple extends HTMLElement {
8
- constructor() {
9
- super();
10
- this.__registerHost();
11
- this.heading = undefined;
12
- this.headingLevel = 'h2';
13
- this.preamble = undefined;
14
- this.ctaButtonsLabel = undefined;
15
- this.primaryButtonText = undefined;
16
- this.primaryButtonUrl = undefined;
17
- this.primaryButtonIconSvg = undefined;
18
- this.secondaryButtonText = undefined;
19
- this.secondaryButtonUrl = undefined;
20
- this.pnIllustrationSvg = undefined;
21
- this.imageUrl = undefined;
22
- this.imageAltText = undefined;
23
- }
24
- get hasPrimaryButton() {
25
- return Boolean(this.primaryButtonText && this.primaryButtonUrl);
26
- }
27
- get hasSecondaryButton() {
28
- return Boolean(this.secondaryButtonText && this.secondaryButtonUrl);
29
- }
30
- renderButton(props, isPrimary) {
31
- const buttonType = isPrimary ? 'primary' : 'secondary';
32
- return (h("pn-button", { icon: props.iconSvg, "left-icon": Boolean(props.iconSvg), href: props.url, class: "btn", "data-button-type": buttonType, appearance: isPrimary ? 'default' : 'light' }, props.text));
33
- }
34
- render() {
35
- const hasButtons = this.hasPrimaryButton || this.hasSecondaryButton;
36
- const headingId = 'usp-heading';
37
- return (h(Host, { key: '86a81876d75377462d4a94cc9ca0d8a7b8150791' }, h("div", { key: '59568c012efdb309dc7e9b3ed64a0a344ab28360', class: "pn-usp-simple", role: "region", "aria-labelledby": this.heading ? headingId : undefined }, h("div", { key: '54685035dc6a2eba2130693961b87fe315023f27', class: "content" }, this.heading && (h(HeadingTag, { key: '1f0b464103fdcbf3b18ab6adf4f82b454e5c81eb', id: headingId, level: this.headingLevel, cssClass: "heading" }, this.heading)), this.preamble && (h("div", { key: 'd143480b02ecb45130ac2a825e392dbe7c0f3128', class: "preamble" }, this.preamble)), hasButtons && (h("div", { key: 'f618b4b041cf79eac3b67dd6d3c26697e29a72c6', class: "cta", role: "group", "aria-label": this.ctaButtonsLabel }, this.hasPrimaryButton &&
38
- this.renderButton({
39
- text: this.primaryButtonText,
40
- url: this.primaryButtonUrl,
41
- iconSvg: this.primaryButtonIconSvg,
42
- }, true), this.hasSecondaryButton &&
43
- this.renderButton({
44
- text: this.secondaryButtonText,
45
- url: this.secondaryButtonUrl,
46
- }, false)))), h("div", { key: 'cb22f2bd663e90bd009fac12d4662c729bffdd68', class: "image-container", "aria-hidden": !this.imageAltText }, this.imageUrl && h("img", { key: 'f76f0a6cbdb0cdc8847f062410f7c20c847d8a47', class: "image graphics", src: this.imageUrl, alt: this.imageAltText || '', loading: "lazy" }), !this.imageUrl && this.pnIllustrationSvg && h("pn-illustration", { key: '5653434436d33c04820f3ee201fd1e2853008e1b', class: "illustration graphics", illustration: this.pnIllustrationSvg, role: "presentation" })))));
47
- }
48
- static get style() { return PnUspSimpleStyle0; }
49
- }, [0, "pn-usp-simple", {
50
- "heading": [1],
51
- "headingLevel": [8, "heading-level"],
52
- "preamble": [1],
53
- "ctaButtonsLabel": [1, "cta-buttons-label"],
54
- "primaryButtonText": [1, "primary-button-text"],
55
- "primaryButtonUrl": [1, "primary-button-url"],
56
- "primaryButtonIconSvg": [1, "primary-button-icon-svg"],
57
- "secondaryButtonText": [1, "secondary-button-text"],
58
- "secondaryButtonUrl": [1, "secondary-button-url"],
59
- "pnIllustrationSvg": [1, "pn-illustration-svg"],
60
- "imageUrl": [1, "image-url"],
61
- "imageAltText": [1, "image-alt-text"]
62
- }]);
63
- function defineCustomElement$1() {
64
- if (typeof customElements === "undefined") {
65
- return;
66
- }
67
- const components = ["pn-usp-simple"];
68
- components.forEach(tagName => { switch (tagName) {
69
- case "pn-usp-simple":
70
- if (!customElements.get(tagName)) {
71
- customElements.define(tagName, PnUspSimple$1);
72
- }
73
- break;
74
- } });
75
- }
76
-
77
- const PnUspSimple = PnUspSimple$1;
78
- const defineCustomElement = defineCustomElement$1;
79
-
80
- export { PnUspSimple, defineCustomElement };
81
-
82
- //# sourceMappingURL=pn-usp-simple.js.map
@@ -1 +0,0 @@
1
- {"file":"pn-usp-simple.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,25DAA25D,CAAC;AACn7D,0BAAe,cAAc;;MCahBA,aAAW;;;;;4BAEe,IAAI;;;;;;;;;;;;IAYzC,IAAY,gBAAgB;QAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACjE;IAED,IAAY,kBAAkB;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACrE;IAEO,YAAY,CAAC,KAAkB,EAAE,SAAkB;QACzD,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;QACvD,QACE,iBACE,IAAI,EAAE,KAAK,CAAC,OAAO,eACR,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,KAAK,CAAC,GAAG,EACf,KAAK,EAAC,KAAK,sBACO,UAAU,EAC5B,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,IAE1C,KAAK,CAAC,IAAI,CACD,EACZ;KACH;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACpE,MAAM,SAAS,GAAG,aAAa,CAAC;QAEhC,QACE,EAAC,IAAI,uDACH,4DAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,QAAQ,qBAAkB,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,IAC5F,4DAAK,KAAK,EAAC,SAAS,IACjB,IAAI,CAAC,OAAO,KACX,EAAC,UAAU,qDAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAC,SAAS,IACpE,IAAI,CAAC,OAAO,CACF,CACd,EAEA,IAAI,CAAC,QAAQ,KACZ,4DAAK,KAAK,EAAC,UAAU,IAClB,IAAI,CAAC,QAAQ,CACV,CACP,EAEA,UAAU,KACT,4DAAK,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,gBAAa,IAAI,CAAC,eAAe,IAC3D,IAAI,CAAC,gBAAgB;YACpB,IAAI,CAAC,YAAY,CACf;gBACE,IAAI,EAAE,IAAI,CAAC,iBAAkB;gBAC7B,GAAG,EAAE,IAAI,CAAC,gBAAiB;gBAC3B,OAAO,EAAE,IAAI,CAAC,oBAAoB;aACnC,EACD,IAAI,CACL,EACF,IAAI,CAAC,kBAAkB;YACtB,IAAI,CAAC,YAAY,CACf;gBACE,IAAI,EAAE,IAAI,CAAC,mBAAoB;gBAC/B,GAAG,EAAE,IAAI,CAAC,kBAAmB;aAC9B,EACD,KAAK,CACN,CACC,CACP,CACG,EACN,4DAAK,KAAK,EAAC,iBAAiB,iBAAc,CAAC,IAAI,CAAC,YAAY,IACzD,IAAI,CAAC,QAAQ,IAAI,4DAAK,KAAK,EAAC,gBAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAC,MAAM,GAAG,EAChH,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,wEAAiB,KAAK,EAAC,uBAAuB,EAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAC,cAAc,GAAG,CACpJ,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PnUspSimple"],"sources":["src/components/widgets/pn-usp-simple/pn-usp-simple.scss?tag=pn-usp-simple","src/components/widgets/pn-usp-simple/pn-usp-simple.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n:root {\n --usp-preamble-margin: clamp(1.5rem, 3vw, 1.8rem);\n}\n\n.pn-usp-simple {\n background: linear-gradient(90deg, $white 0%, $blue25 17.44%);\n color: $gray900;\n display: flex;\n flex-direction: column-reverse;\n max-width: 100%;\n padding: clamp(2rem, 5vw, 5rem);\n\n .heading {\n font-size: clamp(2rem, 4vw, 3rem);\n font-weight: 700;\n margin-bottom: 1rem;\n }\n\n .preamble {\n font-size: clamp(1rem, 4vw, 1.6rem);\n margin-top: var(--usp-preamble-margin);\n margin-bottom: var(--usp-preamble-margin);\n }\n\n .cta {\n display: flex;\n font-size: clamp(1rem, 4vw, 1.6rem);\n flex-direction: column;\n gap: clamp(1rem, 4vw, 1.2rem);\n padding: 0 6rem;\n }\n\n .image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2rem;\n\n .graphics {\n --pn-width: #{$graphicsWidth} !important;\n --pn-height: #{$graphicsWidth} !important;\n }\n\n .image {\n border-radius: 50%;\n }\n }\n}\n\n@media (min-width: 768px) {\n .pn-usp-simple {\n flex-direction: row;\n align-items: center;\n\n .content {\n max-width: 60%;\n }\n\n .cta {\n flex-direction: row;\n gap: clamp(2rem, 3vw, 3rem);\n padding: 0;\n }\n\n .image-container {\n flex: clamp(15rem, 3vw, 20rem);\n margin-bottom: 0;\n\n .graphics {\n --pn-width: #{$graphicsWidthMd};\n --pn-height: #{$graphicsWidthMd};\n }\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-usp-simple {\n max-width: 1140px;\n margin: 0 auto;\n\n .content {\n max-width: 50%;\n }\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXl};\n --pn-height: #{$graphicsWidthXl};\n }\n }\n }\n}\n\n@media (min-width: 1640px) {\n .pn-usp-simple {\n max-width: 1400px;\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXxl};\n --pn-height: #{$graphicsWidthXxl};\n }\n }\n }\n}\n","import { HeadingLevel } from '@/components';\nimport { HeadingTag } from '@/globals/HeadingTag';\nimport { Component, Host, Prop, h } from '@stencil/core';\n\ninterface ButtonProps {\n text: string;\n url: string;\n iconSvg?: string;\n}\n\n@Component({\n tag: 'pn-usp-simple',\n styleUrl: 'pn-usp-simple.scss',\n})\nexport class PnUspSimple {\n @Prop() heading?: string;\n @Prop() headingLevel: HeadingLevel = 'h2';\n @Prop() preamble?: string;\n @Prop() ctaButtonsLabel?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n\n private get hasPrimaryButton(): boolean {\n return Boolean(this.primaryButtonText && this.primaryButtonUrl);\n }\n\n private get hasSecondaryButton(): boolean {\n return Boolean(this.secondaryButtonText && this.secondaryButtonUrl);\n }\n\n private renderButton(props: ButtonProps, isPrimary: boolean) {\n const buttonType = isPrimary ? 'primary' : 'secondary';\n return (\n <pn-button\n icon={props.iconSvg}\n left-icon={Boolean(props.iconSvg)}\n href={props.url}\n class=\"btn\"\n data-button-type={buttonType}\n appearance={isPrimary ? 'default' : 'light'}\n >\n {props.text}\n </pn-button>\n );\n }\n\n render() {\n const hasButtons = this.hasPrimaryButton || this.hasSecondaryButton;\n const headingId = 'usp-heading';\n\n return (\n <Host>\n <div class=\"pn-usp-simple\" role=\"region\" aria-labelledby={this.heading ? headingId : undefined}>\n <div class=\"content\">\n {this.heading && (\n <HeadingTag id={headingId} level={this.headingLevel} cssClass=\"heading\">\n {this.heading}\n </HeadingTag>\n )}\n\n {this.preamble && (\n <div class=\"preamble\">\n {this.preamble}\n </div>\n )}\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaButtonsLabel}>\n {this.hasPrimaryButton &&\n this.renderButton(\n {\n text: this.primaryButtonText!,\n url: this.primaryButtonUrl!,\n iconSvg: this.primaryButtonIconSvg,\n },\n true,\n )}\n {this.hasSecondaryButton &&\n this.renderButton(\n {\n text: this.secondaryButtonText!,\n url: this.secondaryButtonUrl!,\n },\n false,\n )}\n </div>\n )}\n </div>\n <div class=\"image-container\" aria-hidden={!this.imageAltText}>\n {this.imageUrl && <img class=\"image graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {!this.imageUrl && this.pnIllustrationSvg && <pn-illustration class=\"illustration graphics\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"pn-chat.service-f4037d6f.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,50 +0,0 @@
1
- import { r as registerInstance, c as createEvent, g as getElement, h, d as Host } from './index-c311acd6.js';
2
-
3
- const pnSearchCss = "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}}.pn-search{background-color:transparent;display:flex;flex-direction:column;align-items:center}.pn-search .graphics-container{padding-bottom:1rem}.pn-search .graphics{border-radius:50%;height:clamp(12rem, 14vw, 16rem);width:clamp(12rem, 14vw, 16rem);aspect-ratio:1/1;object-fit:cover}.pn-search .illustration{--pn-width:12rem;--pn-height:12rem}.pn-search .search-container{margin:clamp(1rem, 3vh, 1.5rem) 0}.pn-search .search-container ::placeholder{color:#5e554a}.pn-search .main{text-align:center;width:100%}.pn-search .heading{color:#000000;font-size:clamp(2rem, 4vw, 3.2rem);line-height:1;margin:0}.pn-search .search-container{display:flex;width:100%}.pn-search .search-container .search-component input,.pn-search .search-container .search-component button{font-size:1.6rem}.pn-search .cta{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-top:2rem;gap:1.2rem;width:100%}.pn-search .btn-mw[data-secondary]{color:#005d92;font-weight:500;text-decoration:underline}@media (min-width: 768px){.pn-search{flex-direction:row;align-items:flex-start}.pn-search .graphics-container{padding-right:clamp(2rem, 3vw, 4rem);padding-bottom:0}.pn-search .illustration{--pn-width:15rem;--pn-height:15rem}.pn-search .main{text-align:left}.pn-search pn-marketweb-search{width:40rem}.pn-search .cta{gap:1.6rem}.pn-search .btn-mw[data-primary]{width:auto;margin-bottom:0}.pn-search .btn-mw[data-secondary]{margin-top:0}}@media (min-width: 1200px){.pn-search{padding:2.4rem}.pn-search .search-container{max-width:400px}.pn-search .illustration{--pn-width:16rem;--pn-height:16rem}}@media (min-width: 1600px){.pn-search{max-width:1400px;margin:0 auto;padding:3.2rem}.pn-search .search-container{max-width:500px}}";
4
- const PnSearchStyle0 = pnSearchCss;
5
-
6
- const PNSearch = class {
7
- constructor(hostRef) {
8
- registerInstance(this, hostRef);
9
- this.pnSearch = createEvent(this, "pnSearch", 7);
10
- this.componentAriaLabel = undefined;
11
- this.heading = undefined;
12
- this.pnIllustrationSvg = undefined;
13
- this.imageUrl = undefined;
14
- this.imageAltText = undefined;
15
- this.searchPlaceholder = undefined;
16
- this.searchButtonText = undefined;
17
- this.searchButtonLabel = undefined;
18
- this.searchUrl = undefined;
19
- this.primaryButtonText = undefined;
20
- this.primaryButtonUrl = undefined;
21
- this.primaryButtonIconSvg = undefined;
22
- this.secondaryButtonText = undefined;
23
- this.secondaryButtonUrl = undefined;
24
- this.searchDescriptionAria = undefined;
25
- this.ctaActionsLabel = undefined;
26
- this.searchType = undefined;
27
- }
28
- get hostElement() { return getElement(this); }
29
- pnSearch;
30
- doSearch = (e) => {
31
- if (!this.searchUrl) {
32
- console.warn('Search URL is not defined');
33
- return;
34
- }
35
- const searchDetail = {
36
- query: e.detail,
37
- timestamp: Date.now(),
38
- };
39
- this.pnSearch.emit(searchDetail);
40
- };
41
- render() {
42
- const hasButtons = this.primaryButtonUrl || this.secondaryButtonUrl;
43
- return (h(Host, { key: 'fd8fdc6f6bc5d4743ff328d914a6b2b55d840503' }, h("div", { key: 'fb4be66b1a38fde9e5b0b0e3fc4abbdf0f1b2f38', class: "pn-search", role: "search", "aria-label": this.componentAriaLabel }, h("div", { key: 'b07dbfb4dcdf54e88ac790d4da6aa97a00356d04', class: "graphics-container", "aria-hidden": !this.imageAltText }, !this.pnIllustrationSvg && this.imageUrl && h("img", { key: '50ad3338cf3912ff74a50a6b72102e6d5e61f4f6', class: "graphics", src: this.imageUrl, alt: this.imageAltText || '', loading: "lazy" }), this.pnIllustrationSvg && h("pn-illustration", { key: '3956261bb79fbac47239f2091e3d50344e94d555', class: "illustration", illustration: this.pnIllustrationSvg, role: "presentation" })), h("div", { key: '17c6d2c2d1cd812f583f072b17adc3747562ae85', class: "main" }, h("h2", { key: '9214e9895160ee1d316f1ee09f4ddacb7c81f452', class: "heading", id: "search-section-heading" }, this.heading), h("div", { key: '1db65a02236162c22210981d11d3567e6cc27f58', class: "search-container", "aria-labelledby": "search-section-heading" }, h("pn-marketweb-search", { key: 'a560d93bb4747643a5c81610c2e55d0af0825559', class: "search-component", label: this.searchButtonLabel, name: "search", inputid: "search-field", autocomplete: "off", placeholder: this.searchPlaceholder, button: this.searchButtonText, disabled: false, loading: false, light: false, list: null, onSearch: this.doSearch, "data-search-url": this.searchUrl, "aria-describedby": "search-description" }), this.searchDescriptionAria && (h("div", { key: '3d59bd65947e1ecbdcfb75667135dc40e2482955', id: "search-description", class: "sr-only" }, this.searchDescriptionAria))), hasButtons && (h("div", { key: '1d9a2bd31084ae806879e6bc9e820591e3bd4b29', class: "cta", role: "group", "aria-label": this.ctaActionsLabel }, this.primaryButtonUrl && (h("pn-button", { key: '5ddda20fd6846f75e301272e52fc3c200e2c71bb', appearance: "light", variant: "outlined", small: true, icon: this.primaryButtonIconSvg, "left-icon": Boolean(this.primaryButtonIconSvg), class: "btn-mw", href: this.primaryButtonUrl, "data-primary": true }, this.primaryButtonText)), this.secondaryButtonUrl && (h("a", { key: 'a82cf19405f6144f9b5fd789ffa1242128a4c8f1', href: this.secondaryButtonUrl, class: "btn-mw", "data-secondary": true, role: "button" }, this.secondaryButtonText))))))));
44
- }
45
- };
46
- PNSearch.style = PnSearchStyle0;
47
-
48
- export { PNSearch as pn_search };
49
-
50
- //# sourceMappingURL=pn-search.entry.js.map
@@ -1 +0,0 @@
1
- {"file":"pn-search.entry.js","mappings":";;AAAA,MAAM,WAAW,GAAG,wlEAAwlE,CAAC;AAC7mE,uBAAe,WAAW;;MCUb,QAAQ;;;;;;;;;;;;;;;;;;;;;;;IAqBV,QAAQ,CAAmC;IAE5C,QAAQ,GAAG,CAAC,CAAc;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;SACR;QAED,MAAM,YAAY,GAAsB;YACtC,KAAK,EAAE,CAAC,CAAC,MAAM;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAClC,CAAC;IAEF,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAEpE,QACE,EAAC,IAAI,uDACH,4DAAK,KAAK,EAAC,WAAW,EAAC,IAAI,EAAC,QAAQ,gBAAa,IAAI,CAAC,kBAAkB,IACtE,4DAAK,KAAK,EAAC,oBAAoB,iBAAc,CAAC,IAAI,CAAC,YAAY,IAC5D,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,4DAAK,KAAK,EAAC,UAAU,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAC,MAAM,GAAG,EACrI,IAAI,CAAC,iBAAiB,IAAI,wEAAiB,KAAK,EAAC,cAAc,EAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAC,cAAc,GAAG,CACzH,EAEN,4DAAK,KAAK,EAAC,MAAM,IACf,2DAAI,KAAK,EAAC,SAAS,EAAC,EAAE,EAAC,wBAAwB,IAC5C,IAAI,CAAC,OAAO,CACV,EAEL,4DAAK,KAAK,EAAC,kBAAkB,qBAAiB,wBAAwB,IACpE,4EACE,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAC7B,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,cAAc,EACtB,YAAY,EAAC,KAAK,EAClB,WAAW,EAAE,IAAI,CAAC,iBAAiB,EACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAC7B,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,qBACN,IAAI,CAAC,SAAS,sBACd,oBAAoB,GACrC,EACD,IAAI,CAAC,qBAAqB,KACzB,4DAAK,EAAE,EAAC,oBAAoB,EAAC,KAAK,EAAC,SAAS,IACzC,IAAI,CAAC,qBAAqB,CACvB,CACP,CACG,EAEL,UAAU,KACT,4DAAK,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,gBAAa,IAAI,CAAC,eAAe,IAC3D,IAAI,CAAC,gBAAgB,KACpB,kEACE,UAAU,EAAC,OAAO,EAClB,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,IAAI,CAAC,oBAAoB,eACpB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAC7C,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,IAAI,CAAC,gBAAgB,0BAG1B,IAAI,CAAC,iBAAiB,CACb,CACb,EACA,IAAI,CAAC,kBAAkB,KACtB,0DAAG,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAC,QAAQ,0BAAgB,IAAI,EAAC,QAAQ,IAC1E,IAAI,CAAC,mBAAmB,CACvB,CACL,CACG,CACP,CACG,CACF,CACD,EACP;KACH;;;;;;","names":[],"sources":["src/components/widgets/pn-search/pn-search.scss?tag=pn-search","src/components/widgets/pn-search/pn-search.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n.pn-search {\n background-color: transparent;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .graphics-container {\n padding-bottom: 1rem;\n }\n\n .graphics {\n border-radius: 50%;\n height: clamp(12rem, 14vw, 16rem);\n width: clamp(12rem, 14vw, 16rem);\n aspect-ratio: 1 / 1;\n object-fit: cover;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidth};\n --pn-height: #{$illustrationWidth};\n }\n\n .search-container {\n margin: clamp(1rem, 3vh, 1.5rem) 0;\n\n ::placeholder {\n color: $gray700;\n }\n }\n\n .main {\n text-align: center;\n width: 100%;\n }\n\n .heading {\n color: $black;\n font-size: clamp(2rem, 4vw, 3.2rem);\n line-height: 1;\n margin: 0;\n }\n\n .search-container {\n display: flex;\n width: 100%;\n\n .search-component {\n input,\n button {\n font-size: 1.6rem;\n }\n }\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n margin-top: 2rem;\n gap: 1.2rem;\n width: 100%;\n }\n\n .btn-mw[data-secondary] {\n color: $blue700;\n font-weight: 500;\n text-decoration: underline;\n }\n}\n\n@media (min-width: 768px) {\n .pn-search {\n flex-direction: row;\n align-items: flex-start;\n\n .graphics-container {\n padding-right: clamp(2rem, 3vw, 4rem);\n padding-bottom: 0;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthMd};\n --pn-height: #{$illustrationWidthMd};\n }\n\n .main {\n text-align: left;\n }\n\n pn-marketweb-search {\n width: 40rem;\n }\n\n .cta {\n gap: 1.6rem;\n }\n\n .btn-mw[data-primary] {\n width: auto;\n margin-bottom: 0;\n }\n\n .btn-mw[data-secondary] {\n margin-top: 0;\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-search {\n padding: 2.4rem;\n\n .search-container {\n max-width: 400px;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthLg};\n --pn-height: #{$illustrationWidthLg};\n }\n }\n}\n\n@media (min-width: 1600px) {\n .pn-search {\n max-width: 1400px;\n margin: 0 auto;\n padding: 3.2rem;\n\n .search-container {\n max-width: 500px;\n }\n }\n}\n","import { Component, Host, Element, Prop, h, Event, EventEmitter } from '@stencil/core';\n\ninterface SearchEventDetail {\n query: string;\n timestamp: number;\n}\n\n@Component({\n tag: 'pn-search',\n styleUrl: 'pn-search.scss',\n})\nexport class PNSearch {\n @Element() hostElement!: HTMLElement;\n\n @Prop() componentAriaLabel!: string;\n @Prop() heading!: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n @Prop() searchPlaceholder?: string;\n @Prop() searchButtonText?: string;\n @Prop() searchButtonLabel?: string;\n @Prop() searchUrl?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() searchDescriptionAria?: string;\n @Prop() ctaActionsLabel?: string;\n @Prop() searchType: 'shipments' | 'episearch';\n\n @Event() pnSearch!: EventEmitter<SearchEventDetail>;\n\n private doSearch = (e: CustomEvent): void => {\n if (!this.searchUrl) {\n console.warn('Search URL is not defined');\n return;\n }\n\n const searchDetail: SearchEventDetail = {\n query: e.detail,\n timestamp: Date.now(),\n };\n\n this.pnSearch.emit(searchDetail);\n };\n\n render() {\n const hasButtons = this.primaryButtonUrl || this.secondaryButtonUrl;\n\n return (\n <Host>\n <div class=\"pn-search\" role=\"search\" aria-label={this.componentAriaLabel}>\n <div class=\"graphics-container\" aria-hidden={!this.imageAltText}>\n {!this.pnIllustrationSvg && this.imageUrl && <img class=\"graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {this.pnIllustrationSvg && <pn-illustration class=\"illustration\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n\n <div class=\"main\">\n <h2 class=\"heading\" id=\"search-section-heading\">\n {this.heading}\n </h2>\n\n <div class=\"search-container\" aria-labelledby=\"search-section-heading\">\n <pn-marketweb-search\n class=\"search-component\"\n label={this.searchButtonLabel}\n name=\"search\"\n inputid=\"search-field\"\n autocomplete=\"off\"\n placeholder={this.searchPlaceholder}\n button={this.searchButtonText}\n disabled={false}\n loading={false}\n light={false}\n list={null}\n onSearch={this.doSearch}\n data-search-url={this.searchUrl}\n aria-describedby=\"search-description\"\n />\n {this.searchDescriptionAria && (\n <div id=\"search-description\" class=\"sr-only\">\n {this.searchDescriptionAria}\n </div>\n )}\n </div>\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaActionsLabel}>\n {this.primaryButtonUrl && (\n <pn-button\n appearance=\"light\"\n variant=\"outlined\"\n small={true}\n icon={this.primaryButtonIconSvg}\n left-icon={Boolean(this.primaryButtonIconSvg)}\n class=\"btn-mw\"\n href={this.primaryButtonUrl}\n data-primary\n >\n {this.primaryButtonText}\n </pn-button>\n )}\n {this.secondaryButtonUrl && (\n <a href={this.secondaryButtonUrl} class=\"btn-mw\" data-secondary role=\"button\">\n {this.secondaryButtonText}\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,52 +0,0 @@
1
- import { r as registerInstance, h, d as Host } from './index-c311acd6.js';
2
- import { H as HeadingTag } from './HeadingTag-e20016ab.js';
3
-
4
- const pnUspSimpleCss = "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}}:root{--usp-preamble-margin:clamp(1.5rem, 3vw, 1.8rem)}.pn-usp-simple{background:linear-gradient(90deg, #ffffff 0%, #effbff 17.44%);color:#2d2013;display:flex;flex-direction:column-reverse;max-width:100%;padding:clamp(2rem, 5vw, 5rem)}.pn-usp-simple .heading{font-size:clamp(2rem, 4vw, 3rem);font-weight:700;margin-bottom:1rem}.pn-usp-simple .preamble{font-size:clamp(1rem, 4vw, 1.6rem);margin-top:var(--usp-preamble-margin);margin-bottom:var(--usp-preamble-margin)}.pn-usp-simple .cta{display:flex;font-size:clamp(1rem, 4vw, 1.6rem);flex-direction:column;gap:clamp(1rem, 4vw, 1.2rem);padding:0 6rem}.pn-usp-simple .image-container{display:flex;align-items:center;justify-content:center;margin-bottom:2rem}.pn-usp-simple .image-container .graphics{--pn-width:12rem !important;--pn-height:12rem !important}.pn-usp-simple .image-container .image{border-radius:50%}@media (min-width: 768px){.pn-usp-simple{flex-direction:row;align-items:center}.pn-usp-simple .content{max-width:60%}.pn-usp-simple .cta{flex-direction:row;gap:clamp(2rem, 3vw, 3rem);padding:0}.pn-usp-simple .image-container{flex:clamp(15rem, 3vw, 20rem);margin-bottom:0}.pn-usp-simple .image-container .graphics{--pn-width:15rem;--pn-height:15rem}}@media (min-width: 1200px){.pn-usp-simple{max-width:1140px;margin:0 auto}.pn-usp-simple .content{max-width:50%}.pn-usp-simple .image-container .graphics{--pn-width:18rem;--pn-height:18rem}}@media (min-width: 1640px){.pn-usp-simple{max-width:1400px}.pn-usp-simple .image-container .graphics{--pn-width:20rem;--pn-height:20rem}}";
5
- const PnUspSimpleStyle0 = pnUspSimpleCss;
6
-
7
- const PnUspSimple = class {
8
- constructor(hostRef) {
9
- registerInstance(this, hostRef);
10
- this.heading = undefined;
11
- this.headingLevel = 'h2';
12
- this.preamble = undefined;
13
- this.ctaButtonsLabel = undefined;
14
- this.primaryButtonText = undefined;
15
- this.primaryButtonUrl = undefined;
16
- this.primaryButtonIconSvg = undefined;
17
- this.secondaryButtonText = undefined;
18
- this.secondaryButtonUrl = undefined;
19
- this.pnIllustrationSvg = undefined;
20
- this.imageUrl = undefined;
21
- this.imageAltText = undefined;
22
- }
23
- get hasPrimaryButton() {
24
- return Boolean(this.primaryButtonText && this.primaryButtonUrl);
25
- }
26
- get hasSecondaryButton() {
27
- return Boolean(this.secondaryButtonText && this.secondaryButtonUrl);
28
- }
29
- renderButton(props, isPrimary) {
30
- const buttonType = isPrimary ? 'primary' : 'secondary';
31
- return (h("pn-button", { icon: props.iconSvg, "left-icon": Boolean(props.iconSvg), href: props.url, class: "btn", "data-button-type": buttonType, appearance: isPrimary ? 'default' : 'light' }, props.text));
32
- }
33
- render() {
34
- const hasButtons = this.hasPrimaryButton || this.hasSecondaryButton;
35
- const headingId = 'usp-heading';
36
- return (h(Host, { key: '86a81876d75377462d4a94cc9ca0d8a7b8150791' }, h("div", { key: '59568c012efdb309dc7e9b3ed64a0a344ab28360', class: "pn-usp-simple", role: "region", "aria-labelledby": this.heading ? headingId : undefined }, h("div", { key: '54685035dc6a2eba2130693961b87fe315023f27', class: "content" }, this.heading && (h(HeadingTag, { key: '1f0b464103fdcbf3b18ab6adf4f82b454e5c81eb', id: headingId, level: this.headingLevel, cssClass: "heading" }, this.heading)), this.preamble && (h("div", { key: 'd143480b02ecb45130ac2a825e392dbe7c0f3128', class: "preamble" }, this.preamble)), hasButtons && (h("div", { key: 'f618b4b041cf79eac3b67dd6d3c26697e29a72c6', class: "cta", role: "group", "aria-label": this.ctaButtonsLabel }, this.hasPrimaryButton &&
37
- this.renderButton({
38
- text: this.primaryButtonText,
39
- url: this.primaryButtonUrl,
40
- iconSvg: this.primaryButtonIconSvg,
41
- }, true), this.hasSecondaryButton &&
42
- this.renderButton({
43
- text: this.secondaryButtonText,
44
- url: this.secondaryButtonUrl,
45
- }, false)))), h("div", { key: 'cb22f2bd663e90bd009fac12d4662c729bffdd68', class: "image-container", "aria-hidden": !this.imageAltText }, this.imageUrl && h("img", { key: 'f76f0a6cbdb0cdc8847f062410f7c20c847d8a47', class: "image graphics", src: this.imageUrl, alt: this.imageAltText || '', loading: "lazy" }), !this.imageUrl && this.pnIllustrationSvg && h("pn-illustration", { key: '5653434436d33c04820f3ee201fd1e2853008e1b', class: "illustration graphics", illustration: this.pnIllustrationSvg, role: "presentation" })))));
46
- }
47
- };
48
- PnUspSimple.style = PnUspSimpleStyle0;
49
-
50
- export { PnUspSimple as pn_usp_simple };
51
-
52
- //# sourceMappingURL=pn-usp-simple.entry.js.map
@@ -1 +0,0 @@
1
- {"file":"pn-usp-simple.entry.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,25DAA25D,CAAC;AACn7D,0BAAe,cAAc;;MCahB,WAAW;;;;4BAEe,IAAI;;;;;;;;;;;;IAYzC,IAAY,gBAAgB;QAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACjE;IAED,IAAY,kBAAkB;QAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACrE;IAEO,YAAY,CAAC,KAAkB,EAAE,SAAkB;QACzD,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;QACvD,QACE,iBACE,IAAI,EAAE,KAAK,CAAC,OAAO,eACR,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,KAAK,CAAC,GAAG,EACf,KAAK,EAAC,KAAK,sBACO,UAAU,EAC5B,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,IAE1C,KAAK,CAAC,IAAI,CACD,EACZ;KACH;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACpE,MAAM,SAAS,GAAG,aAAa,CAAC;QAEhC,QACE,EAAC,IAAI,uDACH,4DAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,QAAQ,qBAAkB,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,IAC5F,4DAAK,KAAK,EAAC,SAAS,IACjB,IAAI,CAAC,OAAO,KACX,EAAC,UAAU,qDAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAC,SAAS,IACpE,IAAI,CAAC,OAAO,CACF,CACd,EAEA,IAAI,CAAC,QAAQ,KACZ,4DAAK,KAAK,EAAC,UAAU,IAClB,IAAI,CAAC,QAAQ,CACV,CACP,EAEA,UAAU,KACT,4DAAK,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,gBAAa,IAAI,CAAC,eAAe,IAC3D,IAAI,CAAC,gBAAgB;YACpB,IAAI,CAAC,YAAY,CACf;gBACE,IAAI,EAAE,IAAI,CAAC,iBAAkB;gBAC7B,GAAG,EAAE,IAAI,CAAC,gBAAiB;gBAC3B,OAAO,EAAE,IAAI,CAAC,oBAAoB;aACnC,EACD,IAAI,CACL,EACF,IAAI,CAAC,kBAAkB;YACtB,IAAI,CAAC,YAAY,CACf;gBACE,IAAI,EAAE,IAAI,CAAC,mBAAoB;gBAC/B,GAAG,EAAE,IAAI,CAAC,kBAAmB;aAC9B,EACD,KAAK,CACN,CACC,CACP,CACG,EACN,4DAAK,KAAK,EAAC,iBAAiB,iBAAc,CAAC,IAAI,CAAC,YAAY,IACzD,IAAI,CAAC,QAAQ,IAAI,4DAAK,KAAK,EAAC,gBAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,EAAC,MAAM,GAAG,EAChH,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,wEAAiB,KAAK,EAAC,uBAAuB,EAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAC,cAAc,GAAG,CACpJ,CACF,CACD,EACP;KACH;;;;;;","names":[],"sources":["src/components/widgets/pn-usp-simple/pn-usp-simple.scss?tag=pn-usp-simple","src/components/widgets/pn-usp-simple/pn-usp-simple.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n:root {\n --usp-preamble-margin: clamp(1.5rem, 3vw, 1.8rem);\n}\n\n.pn-usp-simple {\n background: linear-gradient(90deg, $white 0%, $blue25 17.44%);\n color: $gray900;\n display: flex;\n flex-direction: column-reverse;\n max-width: 100%;\n padding: clamp(2rem, 5vw, 5rem);\n\n .heading {\n font-size: clamp(2rem, 4vw, 3rem);\n font-weight: 700;\n margin-bottom: 1rem;\n }\n\n .preamble {\n font-size: clamp(1rem, 4vw, 1.6rem);\n margin-top: var(--usp-preamble-margin);\n margin-bottom: var(--usp-preamble-margin);\n }\n\n .cta {\n display: flex;\n font-size: clamp(1rem, 4vw, 1.6rem);\n flex-direction: column;\n gap: clamp(1rem, 4vw, 1.2rem);\n padding: 0 6rem;\n }\n\n .image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2rem;\n\n .graphics {\n --pn-width: #{$graphicsWidth} !important;\n --pn-height: #{$graphicsWidth} !important;\n }\n\n .image {\n border-radius: 50%;\n }\n }\n}\n\n@media (min-width: 768px) {\n .pn-usp-simple {\n flex-direction: row;\n align-items: center;\n\n .content {\n max-width: 60%;\n }\n\n .cta {\n flex-direction: row;\n gap: clamp(2rem, 3vw, 3rem);\n padding: 0;\n }\n\n .image-container {\n flex: clamp(15rem, 3vw, 20rem);\n margin-bottom: 0;\n\n .graphics {\n --pn-width: #{$graphicsWidthMd};\n --pn-height: #{$graphicsWidthMd};\n }\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-usp-simple {\n max-width: 1140px;\n margin: 0 auto;\n\n .content {\n max-width: 50%;\n }\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXl};\n --pn-height: #{$graphicsWidthXl};\n }\n }\n }\n}\n\n@media (min-width: 1640px) {\n .pn-usp-simple {\n max-width: 1400px;\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXxl};\n --pn-height: #{$graphicsWidthXxl};\n }\n }\n }\n}\n","import { HeadingLevel } from '@/components';\nimport { HeadingTag } from '@/globals/HeadingTag';\nimport { Component, Host, Prop, h } from '@stencil/core';\n\ninterface ButtonProps {\n text: string;\n url: string;\n iconSvg?: string;\n}\n\n@Component({\n tag: 'pn-usp-simple',\n styleUrl: 'pn-usp-simple.scss',\n})\nexport class PnUspSimple {\n @Prop() heading?: string;\n @Prop() headingLevel: HeadingLevel = 'h2';\n @Prop() preamble?: string;\n @Prop() ctaButtonsLabel?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n\n private get hasPrimaryButton(): boolean {\n return Boolean(this.primaryButtonText && this.primaryButtonUrl);\n }\n\n private get hasSecondaryButton(): boolean {\n return Boolean(this.secondaryButtonText && this.secondaryButtonUrl);\n }\n\n private renderButton(props: ButtonProps, isPrimary: boolean) {\n const buttonType = isPrimary ? 'primary' : 'secondary';\n return (\n <pn-button\n icon={props.iconSvg}\n left-icon={Boolean(props.iconSvg)}\n href={props.url}\n class=\"btn\"\n data-button-type={buttonType}\n appearance={isPrimary ? 'default' : 'light'}\n >\n {props.text}\n </pn-button>\n );\n }\n\n render() {\n const hasButtons = this.hasPrimaryButton || this.hasSecondaryButton;\n const headingId = 'usp-heading';\n\n return (\n <Host>\n <div class=\"pn-usp-simple\" role=\"region\" aria-labelledby={this.heading ? headingId : undefined}>\n <div class=\"content\">\n {this.heading && (\n <HeadingTag id={headingId} level={this.headingLevel} cssClass=\"heading\">\n {this.heading}\n </HeadingTag>\n )}\n\n {this.preamble && (\n <div class=\"preamble\">\n {this.preamble}\n </div>\n )}\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaButtonsLabel}>\n {this.hasPrimaryButton &&\n this.renderButton(\n {\n text: this.primaryButtonText!,\n url: this.primaryButtonUrl!,\n iconSvg: this.primaryButtonIconSvg,\n },\n true,\n )}\n {this.hasSecondaryButton &&\n this.renderButton(\n {\n text: this.secondaryButtonText!,\n url: this.secondaryButtonUrl!,\n },\n false,\n )}\n </div>\n )}\n </div>\n <div class=\"image-container\" aria-hidden={!this.imageAltText}>\n {this.imageUrl && <img class=\"image graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {!this.imageUrl && this.pnIllustrationSvg && <pn-illustration class=\"illustration graphics\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}