@ptcwebops/ptcw-design 0.4.9 → 0.5.1

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 (213) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/icon-asset.cjs.entry.js +53 -53
  3. package/dist/cjs/{interfaces-574e6df7.js → interfaces-0ecd8027.js} +9 -9
  4. package/dist/cjs/list-item.cjs.entry.js +19 -19
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/lottie-player.cjs.entry.js +354 -354
  7. package/dist/cjs/my-component.cjs.entry.js +13 -13
  8. package/dist/cjs/ptc-announcement_2.cjs.entry.js +113 -112
  9. package/dist/cjs/ptc-breadcrumb.cjs.entry.js +12 -12
  10. package/dist/cjs/ptc-button.cjs.entry.js +65 -65
  11. package/dist/cjs/ptc-card-bottom.cjs.entry.js +31 -31
  12. package/dist/cjs/ptc-card-content.cjs.entry.js +31 -31
  13. package/dist/cjs/ptc-card-plm.cjs.entry.js +16 -16
  14. package/dist/cjs/ptc-card.cjs.entry.js +68 -68
  15. package/dist/cjs/ptc-countdown.cjs.entry.js +8 -8
  16. package/dist/cjs/ptc-date.cjs.entry.js +48 -48
  17. package/dist/cjs/ptc-footer.cjs.entry.js +8 -8
  18. package/dist/cjs/ptc-form.cjs.entry.js +104 -104
  19. package/dist/cjs/ptc-hero-footer-cta.cjs.entry.js +8 -8
  20. package/dist/cjs/ptc-hero.cjs.entry.js +18 -18
  21. package/dist/cjs/ptc-icon-list.cjs.entry.js +32 -32
  22. package/dist/cjs/ptc-img_2.cjs.entry.js +169 -169
  23. package/dist/cjs/ptc-input.cjs.entry.js +20 -20
  24. package/dist/cjs/ptc-link.cjs.entry.js +42 -42
  25. package/dist/cjs/ptc-list.cjs.entry.js +20 -20
  26. package/dist/cjs/ptc-lottie.cjs.entry.js +12 -12
  27. package/dist/cjs/ptc-minimized-footer.cjs.entry.js +8 -8
  28. package/dist/cjs/ptc-minimized-header.cjs.entry.js +11 -11
  29. package/dist/cjs/ptc-mobile-select.cjs.entry.js +69 -69
  30. package/dist/cjs/ptc-modal.cjs.entry.js +103 -103
  31. package/dist/cjs/ptc-nav-item.cjs.entry.js +83 -83
  32. package/dist/cjs/ptc-nav.cjs.entry.js +8 -8
  33. package/dist/cjs/ptc-para.cjs.entry.js +39 -39
  34. package/dist/cjs/ptc-picture.cjs.entry.js +169 -169
  35. package/dist/cjs/ptc-previous-url.cjs.entry.js +8 -8
  36. package/dist/cjs/ptc-quote.cjs.entry.js +25 -25
  37. package/dist/cjs/ptc-responsive-wrapper.cjs.entry.js +54 -54
  38. package/dist/cjs/ptc-select.cjs.entry.js +24 -24
  39. package/dist/cjs/ptc-social-share.cjs.entry.js +64 -64
  40. package/dist/cjs/ptc-spacer.cjs.entry.js +35 -35
  41. package/dist/cjs/ptc-span.cjs.entry.js +23 -23
  42. package/dist/cjs/ptc-title.cjs.entry.js +44 -44
  43. package/dist/cjs/ptc-two-column-media.cjs.entry.js +14 -14
  44. package/dist/cjs/ptcw-design.cjs.js +1 -1
  45. package/dist/collection/components/icon-asset/icon-asset.css +4 -4
  46. package/dist/collection/components/icon-asset/icon-asset.js +199 -199
  47. package/dist/collection/components/icon-asset/media/brands.svg +1381 -1381
  48. package/dist/collection/components/icon-asset/media/designer.svg +327 -327
  49. package/dist/collection/components/icon-asset/media/regular.svg +463 -463
  50. package/dist/collection/components/icon-asset/media/solid.svg +3013 -3013
  51. package/dist/collection/components/icon-asset/media/svg-with-js.min.css +4 -4
  52. package/dist/collection/components/list-item/list-item.js +103 -103
  53. package/dist/collection/components/my-component/my-component.css +3 -3
  54. package/dist/collection/components/my-component/my-component.js +73 -73
  55. package/dist/collection/components/ptc-announcement/ptc-announcement.css +1 -0
  56. package/dist/collection/components/ptc-announcement/ptc-announcement.js +210 -192
  57. package/dist/collection/components/ptc-breadcrumb/ptc-breadcrumb.js +21 -21
  58. package/dist/collection/components/ptc-button/ptc-button.js +293 -293
  59. package/dist/collection/components/ptc-card/ptc-card.js +282 -282
  60. package/dist/collection/components/ptc-card-bottom/ptc-card-bottom.js +105 -105
  61. package/dist/collection/components/ptc-card-content/ptc-card-content.js +105 -105
  62. package/dist/collection/components/ptc-card-plm/ptc-card-plm.js +97 -97
  63. package/dist/collection/components/ptc-countdown/ptc-countdown.js +15 -15
  64. package/dist/collection/components/ptc-date/ptc-date.js +201 -201
  65. package/dist/collection/components/ptc-footer/ptc-footer.js +25 -25
  66. package/dist/collection/components/ptc-form/ptc-form.js +118 -118
  67. package/dist/collection/components/ptc-form/validation/FormValidation.js +4234 -4234
  68. package/dist/collection/components/ptc-hero/ptc-hero.js +67 -67
  69. package/dist/collection/components/ptc-hero-footer-cta/ptc-hero-footer-cta.js +77 -77
  70. package/dist/collection/components/ptc-icon-list/ptc-icon-list.js +145 -145
  71. package/dist/collection/components/ptc-img/ptc-img.js +314 -314
  72. package/dist/collection/components/ptc-input/ptc-input.js +133 -133
  73. package/dist/collection/components/ptc-link/ptc-link.js +198 -198
  74. package/dist/collection/components/ptc-list/ptc-list.js +63 -63
  75. package/dist/collection/components/ptc-lottie/ptc-lottie.css +5 -5
  76. package/dist/collection/components/ptc-lottie/ptc-lottie.js +58 -58
  77. package/dist/collection/components/ptc-minimized-footer/ptc-minimized-footer.js +17 -17
  78. package/dist/collection/components/ptc-minimized-header/ptc-minimized-header.js +80 -80
  79. package/dist/collection/components/ptc-mobile-select/ptc-mobile-select.js +221 -221
  80. package/dist/collection/components/ptc-modal/ptc-modal.js +252 -252
  81. package/dist/collection/components/ptc-nav/ptc-nav.js +21 -21
  82. package/dist/collection/components/ptc-nav-item/ptc-nav-item.js +252 -252
  83. package/dist/collection/components/ptc-overlay/ptc-overlay.js +99 -99
  84. package/dist/collection/components/ptc-para/ptc-para.js +157 -157
  85. package/dist/collection/components/ptc-picture/ptc-picture.js +474 -474
  86. package/dist/collection/components/ptc-previous-url/ptc-previous-url.js +54 -54
  87. package/dist/collection/components/ptc-quote/ptc-quote.js +154 -154
  88. package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.css +3 -3
  89. package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.js +62 -62
  90. package/dist/collection/components/ptc-select/ptc-select.js +105 -105
  91. package/dist/collection/components/ptc-social-share/ptc-social-share.js +206 -206
  92. package/dist/collection/components/ptc-spacer/ptc-spacer.css +322 -322
  93. package/dist/collection/components/ptc-spacer/ptc-spacer.js +99 -99
  94. package/dist/collection/components/ptc-span/ptc-span.js +89 -89
  95. package/dist/collection/components/ptc-svg-btn/ptc-svg-btn.js +71 -71
  96. package/dist/collection/components/ptc-title/ptc-title.js +231 -231
  97. package/dist/collection/components/ptc-two-column-media/ptc-two-column-media.js +40 -40
  98. package/dist/collection/index.js +1 -1
  99. package/dist/collection/media/svg-imgs/Back-arrow.svg +11 -11
  100. package/dist/collection/media/svg-imgs/close.svg +10 -10
  101. package/dist/collection/media/svg-imgs/slider-arrow-left.svg +18 -18
  102. package/dist/collection/media/svg-imgs/slider-arrow-right.svg +18 -18
  103. package/dist/collection/utils/interfaces.js +11 -11
  104. package/dist/collection/utils/utils.js +3 -3
  105. package/dist/custom-elements/index.js +2130 -2129
  106. package/dist/esm/icon-asset.entry.js +53 -53
  107. package/dist/esm/{interfaces-7c0243be.js → interfaces-c1c73092.js} +9 -9
  108. package/dist/esm/list-item.entry.js +19 -19
  109. package/dist/esm/loader.js +1 -1
  110. package/dist/esm/lottie-player.entry.js +354 -354
  111. package/dist/esm/my-component.entry.js +13 -13
  112. package/dist/esm/polyfills/core-js.js +0 -0
  113. package/dist/esm/polyfills/dom.js +0 -0
  114. package/dist/esm/polyfills/es5-html-element.js +0 -0
  115. package/dist/esm/polyfills/index.js +0 -0
  116. package/dist/esm/polyfills/system.js +0 -0
  117. package/dist/esm/ptc-announcement_2.entry.js +113 -112
  118. package/dist/esm/ptc-breadcrumb.entry.js +12 -12
  119. package/dist/esm/ptc-button.entry.js +65 -65
  120. package/dist/esm/ptc-card-bottom.entry.js +31 -31
  121. package/dist/esm/ptc-card-content.entry.js +31 -31
  122. package/dist/esm/ptc-card-plm.entry.js +16 -16
  123. package/dist/esm/ptc-card.entry.js +68 -68
  124. package/dist/esm/ptc-countdown.entry.js +8 -8
  125. package/dist/esm/ptc-date.entry.js +48 -48
  126. package/dist/esm/ptc-footer.entry.js +8 -8
  127. package/dist/esm/ptc-form.entry.js +104 -104
  128. package/dist/esm/ptc-hero-footer-cta.entry.js +8 -8
  129. package/dist/esm/ptc-hero.entry.js +18 -18
  130. package/dist/esm/ptc-icon-list.entry.js +32 -32
  131. package/dist/esm/ptc-img_2.entry.js +169 -169
  132. package/dist/esm/ptc-input.entry.js +20 -20
  133. package/dist/esm/ptc-link.entry.js +42 -42
  134. package/dist/esm/ptc-list.entry.js +20 -20
  135. package/dist/esm/ptc-lottie.entry.js +12 -12
  136. package/dist/esm/ptc-minimized-footer.entry.js +8 -8
  137. package/dist/esm/ptc-minimized-header.entry.js +11 -11
  138. package/dist/esm/ptc-mobile-select.entry.js +69 -69
  139. package/dist/esm/ptc-modal.entry.js +103 -103
  140. package/dist/esm/ptc-nav-item.entry.js +83 -83
  141. package/dist/esm/ptc-nav.entry.js +8 -8
  142. package/dist/esm/ptc-para.entry.js +39 -39
  143. package/dist/esm/ptc-picture.entry.js +169 -169
  144. package/dist/esm/ptc-previous-url.entry.js +8 -8
  145. package/dist/esm/ptc-quote.entry.js +25 -25
  146. package/dist/esm/ptc-responsive-wrapper.entry.js +54 -54
  147. package/dist/esm/ptc-select.entry.js +24 -24
  148. package/dist/esm/ptc-social-share.entry.js +64 -64
  149. package/dist/esm/ptc-spacer.entry.js +35 -35
  150. package/dist/esm/ptc-span.entry.js +23 -23
  151. package/dist/esm/ptc-title.entry.js +44 -44
  152. package/dist/esm/ptc-two-column-media.entry.js +14 -14
  153. package/dist/esm/ptcw-design.js +1 -1
  154. package/dist/ptcw-design/media/brands.svg +1381 -1381
  155. package/dist/ptcw-design/media/designer.svg +327 -327
  156. package/dist/ptcw-design/media/regular.svg +463 -463
  157. package/dist/ptcw-design/media/solid.svg +3013 -3013
  158. package/dist/ptcw-design/media/svg-with-js.min.css +4 -4
  159. package/dist/ptcw-design/p-58a9ce3c.entry.js +1 -0
  160. package/dist/ptcw-design/{p-e4102de2.entry.js → p-97edf10d.entry.js} +1 -1
  161. package/dist/ptcw-design/{p-da55b60e.entry.js → p-d97f4152.entry.js} +1 -1
  162. package/dist/ptcw-design/ptcw-design.esm.js +1 -1
  163. package/dist/ptcw-design/validation/FormValidation.js +4234 -4234
  164. package/dist/types/components/icon-asset/icon-asset.d.ts +36 -36
  165. package/dist/types/components/list-item/list-item.d.ts +8 -8
  166. package/dist/types/components/my-component/my-component.d.ts +16 -16
  167. package/dist/types/components/ptc-announcement/ptc-announcement.d.ts +43 -39
  168. package/dist/types/components/ptc-breadcrumb/ptc-breadcrumb.d.ts +4 -4
  169. package/dist/types/components/ptc-button/ptc-button.d.ts +56 -56
  170. package/dist/types/components/ptc-card/ptc-card.d.ts +50 -50
  171. package/dist/types/components/ptc-card-bottom/ptc-card-bottom.d.ts +15 -15
  172. package/dist/types/components/ptc-card-content/ptc-card-content.d.ts +15 -15
  173. package/dist/types/components/ptc-card-plm/ptc-card-plm.d.ts +8 -8
  174. package/dist/types/components/ptc-countdown/ptc-countdown.d.ts +3 -3
  175. package/dist/types/components/ptc-date/ptc-date.d.ts +41 -41
  176. package/dist/types/components/ptc-footer/ptc-footer.d.ts +3 -3
  177. package/dist/types/components/ptc-form/ptc-form.d.ts +11 -11
  178. package/dist/types/components/ptc-hero/ptc-hero.d.ts +12 -12
  179. package/dist/types/components/ptc-hero-footer-cta/ptc-hero-footer-cta.d.ts +6 -6
  180. package/dist/types/components/ptc-icon-list/ptc-icon-list.d.ts +21 -21
  181. package/dist/types/components/ptc-img/ptc-img.d.ts +51 -51
  182. package/dist/types/components/ptc-input/ptc-input.d.ts +19 -19
  183. package/dist/types/components/ptc-link/ptc-link.d.ts +36 -36
  184. package/dist/types/components/ptc-list/ptc-list.d.ts +6 -6
  185. package/dist/types/components/ptc-lottie/ptc-lottie.d.ts +12 -12
  186. package/dist/types/components/ptc-minimized-footer/ptc-minimized-footer.d.ts +3 -3
  187. package/dist/types/components/ptc-minimized-header/ptc-minimized-header.d.ts +6 -6
  188. package/dist/types/components/ptc-mobile-select/ptc-mobile-select.d.ts +40 -40
  189. package/dist/types/components/ptc-modal/ptc-modal.d.ts +46 -46
  190. package/dist/types/components/ptc-nav/ptc-nav.d.ts +3 -3
  191. package/dist/types/components/ptc-nav-item/ptc-nav-item.d.ts +53 -53
  192. package/dist/types/components/ptc-overlay/ptc-overlay.d.ts +20 -20
  193. package/dist/types/components/ptc-para/ptc-para.d.ts +28 -28
  194. package/dist/types/components/ptc-picture/ptc-picture.d.ts +93 -93
  195. package/dist/types/components/ptc-previous-url/ptc-previous-url.d.ts +5 -5
  196. package/dist/types/components/ptc-quote/ptc-quote.d.ts +29 -29
  197. package/dist/types/components/ptc-responsive-wrapper/ptc-responsive-wrapper.d.ts +8 -8
  198. package/dist/types/components/ptc-select/ptc-select.d.ts +9 -9
  199. package/dist/types/components/ptc-social-share/ptc-social-share.d.ts +25 -25
  200. package/dist/types/components/ptc-spacer/ptc-spacer.d.ts +16 -16
  201. package/dist/types/components/ptc-span/ptc-span.d.ts +16 -16
  202. package/dist/types/components/ptc-svg-btn/ptc-svg-btn.d.ts +12 -12
  203. package/dist/types/components/ptc-title/ptc-title.d.ts +41 -41
  204. package/dist/types/components/ptc-two-column-media/ptc-two-column-media.d.ts +9 -9
  205. package/dist/types/components.d.ts +32 -24
  206. package/dist/types/global.d.ts +1072 -1072
  207. package/dist/types/index.d.ts +1 -1
  208. package/dist/types/utils/interfaces.d.ts +14 -14
  209. package/dist/types/utils/utils.d.ts +1 -1
  210. package/package.json +59 -59
  211. package/readme.md +11 -11
  212. package/dist/ptcw-design/p-8dd0aef5.entry.js +0 -1
  213. /package/dist/ptcw-design/{p-ee1183b2.js → p-50e52c88.js} +0 -0
@@ -1,474 +1,474 @@
1
- import { Component, Prop, h, Element, Listen, State, Host } from '@stencil/core';
2
- import { ResponsivePictureVariables } from '../../utils/interfaces';
3
- export class PtcPicture {
4
- constructor() {
5
- /**
6
- * Image alt
7
- */
8
- this.alt = "image";
9
- /**
10
- * Image size for smallest screen
11
- * <=767px
12
- */
13
- this.sizeXs = '510x340';
14
- /**
15
- * Image size for small screen
16
- * >=768px and <=991px
17
- */
18
- this.sizeSm = '1240x496';
19
- /**
20
- * Image size for medium screen
21
- * >=992px and <=1199px
22
- */
23
- this.sizeMd = '1366x500';
24
- /**
25
- * Image solution for large screen
26
- * >=1200px
27
- */
28
- this.sizeLg = '1920x1080';
29
- /**
30
- * Image Position
31
- */
32
- this.imagePosition = 'static';
33
- /**
34
- * Object Fit
35
- * Default: cover
36
- */
37
- this.objectFit = 'cover';
38
- /**
39
- * Stretch height to 100%?
40
- */
41
- this.isFullHeight = false;
42
- /**
43
- * Stretch width to 100%?
44
- */
45
- this.isFullWidth = false;
46
- /**
47
- * (optional) Image alignment
48
- **/
49
- this.imageAlignment = 'left';
50
- }
51
- WindowResize() {
52
- this.addIntersectionObserver();
53
- }
54
- componentDidLoad() {
55
- this.addIntersectionObserver();
56
- }
57
- componentWillUpdate() {
58
- if (this.src !== this.oldSrc) {
59
- this.addIntersectionObserver();
60
- }
61
- this.oldSrc = this.src;
62
- }
63
- //lazy-loading
64
- addIntersectionObserver() {
65
- if (!this.src) {
66
- return;
67
- }
68
- if ('IntersectionObserver' in window) {
69
- let lazyLoadImages = new IntersectionObserver(entries => {
70
- entries.forEach(entry => {
71
- if (entry.isIntersecting) {
72
- const image = this.el.shadowRoot.querySelector('img');
73
- image.src = this.setResponsiveBg();
74
- console.log('loaded');
75
- lazyLoadImages.unobserve(image);
76
- }
77
- });
78
- });
79
- lazyLoadImages.observe(this.el.shadowRoot.querySelector('img'));
80
- }
81
- else {
82
- // fall back to setTimeout for Safari and IE
83
- setTimeout(() => {
84
- const image = this.el.shadowRoot.querySelector('img');
85
- image.src = this.setResponsiveBg();
86
- image.onload = () => {
87
- image.removeAttribute('data-src');
88
- console.log('loaded fallback');
89
- };
90
- }, 5000);
91
- }
92
- }
93
- //responsive image
94
- setResponsiveBg() {
95
- // Define local variables
96
- let backgrounds = (this.el.shadowRoot || document).querySelectorAll('img'), el, elData, currentBreakpoint = this.getCurrentBreakPoints();
97
- for (var i = 0, len = backgrounds.length; i < len; i++) {
98
- // Set current variables
99
- el = backgrounds[i];
100
- elData = el.getAttribute('data-' + currentBreakpoint);
101
- if (elData !== null) {
102
- // console.log('img src= ' + elData);
103
- return elData;
104
- }
105
- else {
106
- if (typeof console == 'object') {
107
- console.warn('Data attribute: data-' + currentBreakpoint + ' not found on element:\n\n' + el.outerHTML + '\n\n\n');
108
- }
109
- }
110
- }
111
- }
112
- render() {
113
- const classMap = this.getCssClassMap();
114
- const classMapHost = this.getCssClassMapHost();
115
- return (h(Host, { class: classMapHost },
116
- this.styles && h("style", null, this.styles),
117
- h("img", Object.assign({ class: classMap, "data-xs": !!this.sizeXs ? `${this.src}:${this.sizeXs}` : `${this.src}`, "data-sm": !!this.sizeSm ? `${this.src}:${this.sizeSm}` : `${this.src}`, "data-md": !!this.sizeMd ? `${this.src}:${this.sizeMd}` : `${this.src}`, "data-lg": !!this.sizeLg ? `${this.src}:${this.sizeLg}` : `${this.src}` }, (!!this.width ? { width: this.width } : {}), (!!this.height ? { height: this.height } : {}), { alt: this.alt, style: Object.assign({}, (!!this.maxWidth ? { maxWidth: this.maxWidth + 'px' } : {})) })),
118
- h("slot", null)));
119
- }
120
- getCurrentBreakPoints() {
121
- // Define local variables
122
- let doc = window.document, temp = doc.createElement('div'), env;
123
- // Append test node
124
- doc.body.appendChild(temp);
125
- // Loop through breakpoints
126
- for (let i = ResponsivePictureVariables.envs.length - 1; i >= 0; i--) {
127
- env = ResponsivePictureVariables.envs[i];
128
- // Add classes
129
- temp.className = 'hidden-' + env;
130
- // Found breakpoint
131
- if (temp.offsetParent === null) {
132
- // Remove our test node
133
- doc.body.removeChild(temp);
134
- console.log('remove test node');
135
- // Return current breakpoint
136
- return env;
137
- }
138
- }
139
- // Breakpoint not found, try fallback
140
- doc.body.removeChild(temp);
141
- return this.getFallbackBreakpoint();
142
- }
143
- getFallbackBreakpoint() {
144
- if (window.matchMedia('(min-width: 992px)').matches) {
145
- return 'lg';
146
- }
147
- else if (window.matchMedia('(min-width: 768px)').matches) {
148
- return 'md';
149
- }
150
- else if (window.matchMedia('(min-width: 576px)').matches) {
151
- return 'sm';
152
- }
153
- else {
154
- return 'xs';
155
- }
156
- }
157
- getCssClassMap() {
158
- return {
159
- [this.borderRadius]: this.borderRadius ? true : false,
160
- [this.objectFit]: true,
161
- [this.isFullHeight ? 'is-full-height' : 'is-normal-height']: true,
162
- [this.isFullWidth ? 'is-full-width' : 'is-normal-width']: true
163
- };
164
- }
165
- getCssClassMapHost() {
166
- return {
167
- [this.imagePosition]: true,
168
- [this.imageAlignment]: true
169
- };
170
- }
171
- static get is() { return "ptc-picture"; }
172
- static get encapsulation() { return "shadow"; }
173
- static get originalStyleUrls() { return {
174
- "$": ["ptc-picture.scss"]
175
- }; }
176
- static get styleUrls() { return {
177
- "$": ["ptc-picture.css"]
178
- }; }
179
- static get properties() { return {
180
- "src": {
181
- "type": "string",
182
- "mutable": false,
183
- "complexType": {
184
- "original": "string",
185
- "resolved": "string",
186
- "references": {}
187
- },
188
- "required": false,
189
- "optional": false,
190
- "docs": {
191
- "tags": [],
192
- "text": "Image Render Src"
193
- },
194
- "attribute": "src",
195
- "reflect": false
196
- },
197
- "alt": {
198
- "type": "string",
199
- "mutable": false,
200
- "complexType": {
201
- "original": "string",
202
- "resolved": "string",
203
- "references": {}
204
- },
205
- "required": false,
206
- "optional": false,
207
- "docs": {
208
- "tags": [],
209
- "text": "Image alt"
210
- },
211
- "attribute": "alt",
212
- "reflect": false,
213
- "defaultValue": "\"image\""
214
- },
215
- "sizeXs": {
216
- "type": "string",
217
- "mutable": true,
218
- "complexType": {
219
- "original": "string",
220
- "resolved": "string",
221
- "references": {}
222
- },
223
- "required": false,
224
- "optional": false,
225
- "docs": {
226
- "tags": [],
227
- "text": "Image size for smallest screen\r\n<=767px"
228
- },
229
- "attribute": "size-xs",
230
- "reflect": false,
231
- "defaultValue": "'510x340'"
232
- },
233
- "sizeSm": {
234
- "type": "string",
235
- "mutable": true,
236
- "complexType": {
237
- "original": "string",
238
- "resolved": "string",
239
- "references": {}
240
- },
241
- "required": false,
242
- "optional": false,
243
- "docs": {
244
- "tags": [],
245
- "text": "Image size for small screen\r\n>=768px and <=991px"
246
- },
247
- "attribute": "size-sm",
248
- "reflect": false,
249
- "defaultValue": "'1240x496'"
250
- },
251
- "sizeMd": {
252
- "type": "string",
253
- "mutable": true,
254
- "complexType": {
255
- "original": "string",
256
- "resolved": "string",
257
- "references": {}
258
- },
259
- "required": false,
260
- "optional": false,
261
- "docs": {
262
- "tags": [],
263
- "text": "Image size for medium screen\r\n>=992px and <=1199px"
264
- },
265
- "attribute": "size-md",
266
- "reflect": false,
267
- "defaultValue": "'1366x500'"
268
- },
269
- "sizeLg": {
270
- "type": "string",
271
- "mutable": true,
272
- "complexType": {
273
- "original": "string",
274
- "resolved": "string",
275
- "references": {}
276
- },
277
- "required": false,
278
- "optional": false,
279
- "docs": {
280
- "tags": [],
281
- "text": "Image solution for large screen\r\n>=1200px"
282
- },
283
- "attribute": "size-lg",
284
- "reflect": false,
285
- "defaultValue": "'1920x1080'"
286
- },
287
- "imagePosition": {
288
- "type": "string",
289
- "mutable": false,
290
- "complexType": {
291
- "original": "'relative' | 'absolute' | 'static'",
292
- "resolved": "\"absolute\" | \"relative\" | \"static\"",
293
- "references": {}
294
- },
295
- "required": false,
296
- "optional": false,
297
- "docs": {
298
- "tags": [],
299
- "text": "Image Position"
300
- },
301
- "attribute": "image-position",
302
- "reflect": false,
303
- "defaultValue": "'static'"
304
- },
305
- "borderRadius": {
306
- "type": "string",
307
- "mutable": false,
308
- "complexType": {
309
- "original": "'radius-sm' | 'radius-md' | 'radius-lg' | 'radius-x-lg'",
310
- "resolved": "\"radius-lg\" | \"radius-md\" | \"radius-sm\" | \"radius-x-lg\"",
311
- "references": {}
312
- },
313
- "required": false,
314
- "optional": false,
315
- "docs": {
316
- "tags": [],
317
- "text": "Image border shape"
318
- },
319
- "attribute": "border-radius",
320
- "reflect": false
321
- },
322
- "height": {
323
- "type": "string",
324
- "mutable": false,
325
- "complexType": {
326
- "original": "string",
327
- "resolved": "string",
328
- "references": {}
329
- },
330
- "required": false,
331
- "optional": true,
332
- "docs": {
333
- "tags": [],
334
- "text": "Set height\r\nValue unit: pixles\r\nJust put numbers without unit"
335
- },
336
- "attribute": "height",
337
- "reflect": false
338
- },
339
- "width": {
340
- "type": "string",
341
- "mutable": false,
342
- "complexType": {
343
- "original": "string",
344
- "resolved": "string",
345
- "references": {}
346
- },
347
- "required": false,
348
- "optional": true,
349
- "docs": {
350
- "tags": [],
351
- "text": "Set Width\r\nvalue unit: pixles\r\nJust put numbers without unit"
352
- },
353
- "attribute": "width",
354
- "reflect": false
355
- },
356
- "objectFit": {
357
- "type": "string",
358
- "mutable": false,
359
- "complexType": {
360
- "original": "'cover' | 'fill' | 'contain' | 'scale-down' | 'none' | 'initial' | 'inherit'",
361
- "resolved": "\"contain\" | \"cover\" | \"fill\" | \"inherit\" | \"initial\" | \"none\" | \"scale-down\"",
362
- "references": {}
363
- },
364
- "required": false,
365
- "optional": false,
366
- "docs": {
367
- "tags": [],
368
- "text": "Object Fit\r\nDefault: cover"
369
- },
370
- "attribute": "object-fit",
371
- "reflect": false,
372
- "defaultValue": "'cover'"
373
- },
374
- "isFullHeight": {
375
- "type": "boolean",
376
- "mutable": false,
377
- "complexType": {
378
- "original": "boolean",
379
- "resolved": "boolean",
380
- "references": {}
381
- },
382
- "required": false,
383
- "optional": false,
384
- "docs": {
385
- "tags": [],
386
- "text": "Stretch height to 100%?"
387
- },
388
- "attribute": "is-full-height",
389
- "reflect": false,
390
- "defaultValue": "false"
391
- },
392
- "isFullWidth": {
393
- "type": "boolean",
394
- "mutable": false,
395
- "complexType": {
396
- "original": "boolean",
397
- "resolved": "boolean",
398
- "references": {}
399
- },
400
- "required": false,
401
- "optional": false,
402
- "docs": {
403
- "tags": [],
404
- "text": "Stretch width to 100%?"
405
- },
406
- "attribute": "is-full-width",
407
- "reflect": false,
408
- "defaultValue": "false"
409
- },
410
- "styles": {
411
- "type": "string",
412
- "mutable": false,
413
- "complexType": {
414
- "original": "string",
415
- "resolved": "string",
416
- "references": {}
417
- },
418
- "required": false,
419
- "optional": true,
420
- "docs": {
421
- "tags": [],
422
- "text": "(optional) Injected CSS styles"
423
- },
424
- "attribute": "styles",
425
- "reflect": false
426
- },
427
- "imageAlignment": {
428
- "type": "string",
429
- "mutable": false,
430
- "complexType": {
431
- "original": "'left' | 'right' | 'center'",
432
- "resolved": "\"center\" | \"left\" | \"right\"",
433
- "references": {}
434
- },
435
- "required": false,
436
- "optional": true,
437
- "docs": {
438
- "tags": [],
439
- "text": "(optional) Image alignment"
440
- },
441
- "attribute": "image-alignment",
442
- "reflect": false,
443
- "defaultValue": "'left'"
444
- },
445
- "maxWidth": {
446
- "type": "string",
447
- "mutable": false,
448
- "complexType": {
449
- "original": "string",
450
- "resolved": "string",
451
- "references": {}
452
- },
453
- "required": false,
454
- "optional": true,
455
- "docs": {
456
- "tags": [],
457
- "text": "(optional) Set max-width\r\nvalue unit: pixles\r\nJust put numbers without unit"
458
- },
459
- "attribute": "max-width",
460
- "reflect": false
461
- }
462
- }; }
463
- static get states() { return {
464
- "oldSrc": {}
465
- }; }
466
- static get elementRef() { return "el"; }
467
- static get listeners() { return [{
468
- "name": "resize",
469
- "method": "WindowResize",
470
- "target": "window",
471
- "capture": false,
472
- "passive": true
473
- }]; }
474
- }
1
+ import { Component, Prop, h, Element, Listen, State, Host } from '@stencil/core';
2
+ import { ResponsivePictureVariables } from '../../utils/interfaces';
3
+ export class PtcPicture {
4
+ constructor() {
5
+ /**
6
+ * Image alt
7
+ */
8
+ this.alt = "image";
9
+ /**
10
+ * Image size for smallest screen
11
+ * <=767px
12
+ */
13
+ this.sizeXs = '510x340';
14
+ /**
15
+ * Image size for small screen
16
+ * >=768px and <=991px
17
+ */
18
+ this.sizeSm = '1240x496';
19
+ /**
20
+ * Image size for medium screen
21
+ * >=992px and <=1199px
22
+ */
23
+ this.sizeMd = '1366x500';
24
+ /**
25
+ * Image solution for large screen
26
+ * >=1200px
27
+ */
28
+ this.sizeLg = '1920x1080';
29
+ /**
30
+ * Image Position
31
+ */
32
+ this.imagePosition = 'static';
33
+ /**
34
+ * Object Fit
35
+ * Default: cover
36
+ */
37
+ this.objectFit = 'cover';
38
+ /**
39
+ * Stretch height to 100%?
40
+ */
41
+ this.isFullHeight = false;
42
+ /**
43
+ * Stretch width to 100%?
44
+ */
45
+ this.isFullWidth = false;
46
+ /**
47
+ * (optional) Image alignment
48
+ **/
49
+ this.imageAlignment = 'left';
50
+ }
51
+ WindowResize() {
52
+ this.addIntersectionObserver();
53
+ }
54
+ componentDidLoad() {
55
+ this.addIntersectionObserver();
56
+ }
57
+ componentWillUpdate() {
58
+ if (this.src !== this.oldSrc) {
59
+ this.addIntersectionObserver();
60
+ }
61
+ this.oldSrc = this.src;
62
+ }
63
+ //lazy-loading
64
+ addIntersectionObserver() {
65
+ if (!this.src) {
66
+ return;
67
+ }
68
+ if ('IntersectionObserver' in window) {
69
+ let lazyLoadImages = new IntersectionObserver(entries => {
70
+ entries.forEach(entry => {
71
+ if (entry.isIntersecting) {
72
+ const image = this.el.shadowRoot.querySelector('img');
73
+ image.src = this.setResponsiveBg();
74
+ console.log('loaded');
75
+ lazyLoadImages.unobserve(image);
76
+ }
77
+ });
78
+ });
79
+ lazyLoadImages.observe(this.el.shadowRoot.querySelector('img'));
80
+ }
81
+ else {
82
+ // fall back to setTimeout for Safari and IE
83
+ setTimeout(() => {
84
+ const image = this.el.shadowRoot.querySelector('img');
85
+ image.src = this.setResponsiveBg();
86
+ image.onload = () => {
87
+ image.removeAttribute('data-src');
88
+ console.log('loaded fallback');
89
+ };
90
+ }, 5000);
91
+ }
92
+ }
93
+ //responsive image
94
+ setResponsiveBg() {
95
+ // Define local variables
96
+ let backgrounds = (this.el.shadowRoot || document).querySelectorAll('img'), el, elData, currentBreakpoint = this.getCurrentBreakPoints();
97
+ for (var i = 0, len = backgrounds.length; i < len; i++) {
98
+ // Set current variables
99
+ el = backgrounds[i];
100
+ elData = el.getAttribute('data-' + currentBreakpoint);
101
+ if (elData !== null) {
102
+ // console.log('img src= ' + elData);
103
+ return elData;
104
+ }
105
+ else {
106
+ if (typeof console == 'object') {
107
+ console.warn('Data attribute: data-' + currentBreakpoint + ' not found on element:\n\n' + el.outerHTML + '\n\n\n');
108
+ }
109
+ }
110
+ }
111
+ }
112
+ render() {
113
+ const classMap = this.getCssClassMap();
114
+ const classMapHost = this.getCssClassMapHost();
115
+ return (h(Host, { class: classMapHost },
116
+ this.styles && h("style", null, this.styles),
117
+ h("img", Object.assign({ class: classMap, "data-xs": !!this.sizeXs ? `${this.src}:${this.sizeXs}` : `${this.src}`, "data-sm": !!this.sizeSm ? `${this.src}:${this.sizeSm}` : `${this.src}`, "data-md": !!this.sizeMd ? `${this.src}:${this.sizeMd}` : `${this.src}`, "data-lg": !!this.sizeLg ? `${this.src}:${this.sizeLg}` : `${this.src}` }, (!!this.width ? { width: this.width } : {}), (!!this.height ? { height: this.height } : {}), { alt: this.alt, style: Object.assign({}, (!!this.maxWidth ? { maxWidth: this.maxWidth + 'px' } : {})) })),
118
+ h("slot", null)));
119
+ }
120
+ getCurrentBreakPoints() {
121
+ // Define local variables
122
+ let doc = window.document, temp = doc.createElement('div'), env;
123
+ // Append test node
124
+ doc.body.appendChild(temp);
125
+ // Loop through breakpoints
126
+ for (let i = ResponsivePictureVariables.envs.length - 1; i >= 0; i--) {
127
+ env = ResponsivePictureVariables.envs[i];
128
+ // Add classes
129
+ temp.className = 'hidden-' + env;
130
+ // Found breakpoint
131
+ if (temp.offsetParent === null) {
132
+ // Remove our test node
133
+ doc.body.removeChild(temp);
134
+ console.log('remove test node');
135
+ // Return current breakpoint
136
+ return env;
137
+ }
138
+ }
139
+ // Breakpoint not found, try fallback
140
+ doc.body.removeChild(temp);
141
+ return this.getFallbackBreakpoint();
142
+ }
143
+ getFallbackBreakpoint() {
144
+ if (window.matchMedia('(min-width: 992px)').matches) {
145
+ return 'lg';
146
+ }
147
+ else if (window.matchMedia('(min-width: 768px)').matches) {
148
+ return 'md';
149
+ }
150
+ else if (window.matchMedia('(min-width: 576px)').matches) {
151
+ return 'sm';
152
+ }
153
+ else {
154
+ return 'xs';
155
+ }
156
+ }
157
+ getCssClassMap() {
158
+ return {
159
+ [this.borderRadius]: this.borderRadius ? true : false,
160
+ [this.objectFit]: true,
161
+ [this.isFullHeight ? 'is-full-height' : 'is-normal-height']: true,
162
+ [this.isFullWidth ? 'is-full-width' : 'is-normal-width']: true
163
+ };
164
+ }
165
+ getCssClassMapHost() {
166
+ return {
167
+ [this.imagePosition]: true,
168
+ [this.imageAlignment]: true
169
+ };
170
+ }
171
+ static get is() { return "ptc-picture"; }
172
+ static get encapsulation() { return "shadow"; }
173
+ static get originalStyleUrls() { return {
174
+ "$": ["ptc-picture.scss"]
175
+ }; }
176
+ static get styleUrls() { return {
177
+ "$": ["ptc-picture.css"]
178
+ }; }
179
+ static get properties() { return {
180
+ "src": {
181
+ "type": "string",
182
+ "mutable": false,
183
+ "complexType": {
184
+ "original": "string",
185
+ "resolved": "string",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": false,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Image Render Src"
193
+ },
194
+ "attribute": "src",
195
+ "reflect": false
196
+ },
197
+ "alt": {
198
+ "type": "string",
199
+ "mutable": false,
200
+ "complexType": {
201
+ "original": "string",
202
+ "resolved": "string",
203
+ "references": {}
204
+ },
205
+ "required": false,
206
+ "optional": false,
207
+ "docs": {
208
+ "tags": [],
209
+ "text": "Image alt"
210
+ },
211
+ "attribute": "alt",
212
+ "reflect": false,
213
+ "defaultValue": "\"image\""
214
+ },
215
+ "sizeXs": {
216
+ "type": "string",
217
+ "mutable": true,
218
+ "complexType": {
219
+ "original": "string",
220
+ "resolved": "string",
221
+ "references": {}
222
+ },
223
+ "required": false,
224
+ "optional": false,
225
+ "docs": {
226
+ "tags": [],
227
+ "text": "Image size for smallest screen\n<=767px"
228
+ },
229
+ "attribute": "size-xs",
230
+ "reflect": false,
231
+ "defaultValue": "'510x340'"
232
+ },
233
+ "sizeSm": {
234
+ "type": "string",
235
+ "mutable": true,
236
+ "complexType": {
237
+ "original": "string",
238
+ "resolved": "string",
239
+ "references": {}
240
+ },
241
+ "required": false,
242
+ "optional": false,
243
+ "docs": {
244
+ "tags": [],
245
+ "text": "Image size for small screen\n>=768px and <=991px"
246
+ },
247
+ "attribute": "size-sm",
248
+ "reflect": false,
249
+ "defaultValue": "'1240x496'"
250
+ },
251
+ "sizeMd": {
252
+ "type": "string",
253
+ "mutable": true,
254
+ "complexType": {
255
+ "original": "string",
256
+ "resolved": "string",
257
+ "references": {}
258
+ },
259
+ "required": false,
260
+ "optional": false,
261
+ "docs": {
262
+ "tags": [],
263
+ "text": "Image size for medium screen\n>=992px and <=1199px"
264
+ },
265
+ "attribute": "size-md",
266
+ "reflect": false,
267
+ "defaultValue": "'1366x500'"
268
+ },
269
+ "sizeLg": {
270
+ "type": "string",
271
+ "mutable": true,
272
+ "complexType": {
273
+ "original": "string",
274
+ "resolved": "string",
275
+ "references": {}
276
+ },
277
+ "required": false,
278
+ "optional": false,
279
+ "docs": {
280
+ "tags": [],
281
+ "text": "Image solution for large screen\n>=1200px"
282
+ },
283
+ "attribute": "size-lg",
284
+ "reflect": false,
285
+ "defaultValue": "'1920x1080'"
286
+ },
287
+ "imagePosition": {
288
+ "type": "string",
289
+ "mutable": false,
290
+ "complexType": {
291
+ "original": "'relative' | 'absolute' | 'static'",
292
+ "resolved": "\"absolute\" | \"relative\" | \"static\"",
293
+ "references": {}
294
+ },
295
+ "required": false,
296
+ "optional": false,
297
+ "docs": {
298
+ "tags": [],
299
+ "text": "Image Position"
300
+ },
301
+ "attribute": "image-position",
302
+ "reflect": false,
303
+ "defaultValue": "'static'"
304
+ },
305
+ "borderRadius": {
306
+ "type": "string",
307
+ "mutable": false,
308
+ "complexType": {
309
+ "original": "'radius-sm' | 'radius-md' | 'radius-lg' | 'radius-x-lg'",
310
+ "resolved": "\"radius-lg\" | \"radius-md\" | \"radius-sm\" | \"radius-x-lg\"",
311
+ "references": {}
312
+ },
313
+ "required": false,
314
+ "optional": false,
315
+ "docs": {
316
+ "tags": [],
317
+ "text": "Image border shape"
318
+ },
319
+ "attribute": "border-radius",
320
+ "reflect": false
321
+ },
322
+ "height": {
323
+ "type": "string",
324
+ "mutable": false,
325
+ "complexType": {
326
+ "original": "string",
327
+ "resolved": "string",
328
+ "references": {}
329
+ },
330
+ "required": false,
331
+ "optional": true,
332
+ "docs": {
333
+ "tags": [],
334
+ "text": "Set height\nValue unit: pixles\nJust put numbers without unit"
335
+ },
336
+ "attribute": "height",
337
+ "reflect": false
338
+ },
339
+ "width": {
340
+ "type": "string",
341
+ "mutable": false,
342
+ "complexType": {
343
+ "original": "string",
344
+ "resolved": "string",
345
+ "references": {}
346
+ },
347
+ "required": false,
348
+ "optional": true,
349
+ "docs": {
350
+ "tags": [],
351
+ "text": "Set Width\nvalue unit: pixles\nJust put numbers without unit"
352
+ },
353
+ "attribute": "width",
354
+ "reflect": false
355
+ },
356
+ "objectFit": {
357
+ "type": "string",
358
+ "mutable": false,
359
+ "complexType": {
360
+ "original": "'cover' | 'fill' | 'contain' | 'scale-down' | 'none' | 'initial' | 'inherit'",
361
+ "resolved": "\"contain\" | \"cover\" | \"fill\" | \"inherit\" | \"initial\" | \"none\" | \"scale-down\"",
362
+ "references": {}
363
+ },
364
+ "required": false,
365
+ "optional": false,
366
+ "docs": {
367
+ "tags": [],
368
+ "text": "Object Fit\nDefault: cover"
369
+ },
370
+ "attribute": "object-fit",
371
+ "reflect": false,
372
+ "defaultValue": "'cover'"
373
+ },
374
+ "isFullHeight": {
375
+ "type": "boolean",
376
+ "mutable": false,
377
+ "complexType": {
378
+ "original": "boolean",
379
+ "resolved": "boolean",
380
+ "references": {}
381
+ },
382
+ "required": false,
383
+ "optional": false,
384
+ "docs": {
385
+ "tags": [],
386
+ "text": "Stretch height to 100%?"
387
+ },
388
+ "attribute": "is-full-height",
389
+ "reflect": false,
390
+ "defaultValue": "false"
391
+ },
392
+ "isFullWidth": {
393
+ "type": "boolean",
394
+ "mutable": false,
395
+ "complexType": {
396
+ "original": "boolean",
397
+ "resolved": "boolean",
398
+ "references": {}
399
+ },
400
+ "required": false,
401
+ "optional": false,
402
+ "docs": {
403
+ "tags": [],
404
+ "text": "Stretch width to 100%?"
405
+ },
406
+ "attribute": "is-full-width",
407
+ "reflect": false,
408
+ "defaultValue": "false"
409
+ },
410
+ "styles": {
411
+ "type": "string",
412
+ "mutable": false,
413
+ "complexType": {
414
+ "original": "string",
415
+ "resolved": "string",
416
+ "references": {}
417
+ },
418
+ "required": false,
419
+ "optional": true,
420
+ "docs": {
421
+ "tags": [],
422
+ "text": "(optional) Injected CSS styles"
423
+ },
424
+ "attribute": "styles",
425
+ "reflect": false
426
+ },
427
+ "imageAlignment": {
428
+ "type": "string",
429
+ "mutable": false,
430
+ "complexType": {
431
+ "original": "'left' | 'right' | 'center'",
432
+ "resolved": "\"center\" | \"left\" | \"right\"",
433
+ "references": {}
434
+ },
435
+ "required": false,
436
+ "optional": true,
437
+ "docs": {
438
+ "tags": [],
439
+ "text": "(optional) Image alignment"
440
+ },
441
+ "attribute": "image-alignment",
442
+ "reflect": false,
443
+ "defaultValue": "'left'"
444
+ },
445
+ "maxWidth": {
446
+ "type": "string",
447
+ "mutable": false,
448
+ "complexType": {
449
+ "original": "string",
450
+ "resolved": "string",
451
+ "references": {}
452
+ },
453
+ "required": false,
454
+ "optional": true,
455
+ "docs": {
456
+ "tags": [],
457
+ "text": "(optional) Set max-width\nvalue unit: pixles\nJust put numbers without unit"
458
+ },
459
+ "attribute": "max-width",
460
+ "reflect": false
461
+ }
462
+ }; }
463
+ static get states() { return {
464
+ "oldSrc": {}
465
+ }; }
466
+ static get elementRef() { return "el"; }
467
+ static get listeners() { return [{
468
+ "name": "resize",
469
+ "method": "WindowResize",
470
+ "target": "window",
471
+ "capture": false,
472
+ "passive": true
473
+ }]; }
474
+ }