@ptcwebops/ptcw-design 0.4.6 → 0.4.7

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 (194) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/{icon-asset_4.cjs.entry.js → icon-asset_8.cjs.entry.js} +298 -219
  3. package/dist/cjs/{interfaces-0ecd8027.js → interfaces-574e6df7.js} +9 -9
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/lottie-player.cjs.entry.js +354 -354
  6. package/dist/cjs/my-component.cjs.entry.js +13 -13
  7. package/dist/cjs/ptc-breadcrumb.cjs.entry.js +12 -12
  8. package/dist/cjs/ptc-button.cjs.entry.js +65 -65
  9. package/dist/cjs/ptc-card-bottom.cjs.entry.js +31 -31
  10. package/dist/cjs/ptc-card-content.cjs.entry.js +31 -31
  11. package/dist/cjs/ptc-card-plm.cjs.entry.js +16 -16
  12. package/dist/cjs/ptc-card.cjs.entry.js +68 -68
  13. package/dist/cjs/ptc-countdown.cjs.entry.js +8 -8
  14. package/dist/cjs/ptc-date.cjs.entry.js +48 -48
  15. package/dist/cjs/ptc-footer.cjs.entry.js +8 -8
  16. package/dist/cjs/ptc-form.cjs.entry.js +104 -104
  17. package/dist/cjs/ptc-hero.cjs.entry.js +18 -18
  18. package/dist/cjs/ptc-img_2.cjs.entry.js +169 -169
  19. package/dist/cjs/ptc-input.cjs.entry.js +20 -20
  20. package/dist/cjs/ptc-link.cjs.entry.js +42 -42
  21. package/dist/cjs/ptc-list.cjs.entry.js +20 -20
  22. package/dist/cjs/ptc-lottie.cjs.entry.js +12 -12
  23. package/dist/cjs/ptc-modal.cjs.entry.js +103 -103
  24. package/dist/cjs/ptc-nav-item.cjs.entry.js +83 -83
  25. package/dist/cjs/ptc-nav.cjs.entry.js +8 -8
  26. package/dist/cjs/ptc-para.cjs.entry.js +39 -39
  27. package/dist/cjs/ptc-picture.cjs.entry.js +158 -158
  28. package/dist/cjs/ptc-responsive-wrapper.cjs.entry.js +54 -54
  29. package/dist/cjs/ptc-select.cjs.entry.js +24 -24
  30. package/dist/cjs/ptc-social-share.cjs.entry.js +64 -64
  31. package/dist/cjs/ptc-spacer.cjs.entry.js +35 -35
  32. package/dist/cjs/ptc-span.cjs.entry.js +23 -23
  33. package/dist/cjs/ptc-title.cjs.entry.js +44 -44
  34. package/dist/cjs/ptcw-design.cjs.js +1 -1
  35. package/dist/collection/collection-manifest.json +3 -0
  36. package/dist/collection/components/icon-asset/icon-asset.css +4 -4
  37. package/dist/collection/components/icon-asset/icon-asset.js +178 -178
  38. package/dist/collection/components/icon-asset/media/brands.svg +1381 -1381
  39. package/dist/collection/components/icon-asset/media/designer.svg +316 -316
  40. package/dist/collection/components/icon-asset/media/regular.svg +463 -463
  41. package/dist/collection/components/icon-asset/media/solid.svg +3013 -3013
  42. package/dist/collection/components/icon-asset/media/svg-with-js.min.css +4 -4
  43. package/dist/collection/components/list-item/list-item.css +31 -0
  44. package/dist/collection/components/list-item/list-item.js +103 -84
  45. package/dist/collection/components/my-component/my-component.css +3 -3
  46. package/dist/collection/components/my-component/my-component.js +73 -73
  47. package/dist/collection/components/ptc-announcement/ptc-announcement.js +170 -170
  48. package/dist/collection/components/ptc-breadcrumb/ptc-breadcrumb.js +21 -21
  49. package/dist/collection/components/ptc-button/ptc-button.js +293 -293
  50. package/dist/collection/components/ptc-card/ptc-card.js +282 -282
  51. package/dist/collection/components/ptc-card-bottom/ptc-card-bottom.js +105 -105
  52. package/dist/collection/components/ptc-card-content/ptc-card-content.js +105 -105
  53. package/dist/collection/components/ptc-card-plm/ptc-card-plm.js +97 -97
  54. package/dist/collection/components/ptc-countdown/ptc-countdown.js +15 -15
  55. package/dist/collection/components/ptc-date/ptc-date.js +201 -201
  56. package/dist/collection/components/ptc-footer/ptc-footer.js +25 -25
  57. package/dist/collection/components/ptc-form/ptc-form.js +118 -118
  58. package/dist/collection/components/ptc-form/validation/FormValidation.js +4234 -4234
  59. package/dist/collection/components/ptc-hero/ptc-hero.js +67 -67
  60. package/dist/collection/components/ptc-img/ptc-img.js +314 -314
  61. package/dist/collection/components/ptc-input/ptc-input.js +133 -133
  62. package/dist/collection/components/ptc-link/ptc-link.js +198 -198
  63. package/dist/collection/components/ptc-list/ptc-list.js +63 -63
  64. package/dist/collection/components/ptc-lottie/ptc-lottie.css +5 -5
  65. package/dist/collection/components/ptc-lottie/ptc-lottie.js +58 -58
  66. package/dist/collection/components/ptc-minimized-footer/ptc-minimized-footer.css +44 -0
  67. package/dist/collection/components/ptc-minimized-footer/ptc-minimized-footer.js +17 -0
  68. package/dist/collection/components/ptc-minimized-header/ptc-minimized-header.css +77 -0
  69. package/dist/collection/components/ptc-minimized-header/ptc-minimized-header.js +80 -0
  70. package/dist/collection/components/ptc-mobile-select/ptc-mobile-select.js +220 -220
  71. package/dist/collection/components/ptc-modal/ptc-modal.js +252 -252
  72. package/dist/collection/components/ptc-nav/ptc-nav.js +21 -21
  73. package/dist/collection/components/ptc-nav-item/ptc-nav-item.js +252 -252
  74. package/dist/collection/components/ptc-overlay/ptc-overlay.js +99 -99
  75. package/dist/collection/components/ptc-para/ptc-para.js +157 -157
  76. package/dist/collection/components/ptc-picture/ptc-picture.js +428 -428
  77. package/dist/collection/components/ptc-previous-url/ptc-previous-url.css +24 -0
  78. package/dist/collection/components/ptc-previous-url/ptc-previous-url.js +54 -0
  79. package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.css +3 -3
  80. package/dist/collection/components/ptc-responsive-wrapper/ptc-responsive-wrapper.js +62 -62
  81. package/dist/collection/components/ptc-select/ptc-select.js +105 -105
  82. package/dist/collection/components/ptc-social-share/ptc-social-share.js +206 -206
  83. package/dist/collection/components/ptc-spacer/ptc-spacer.css +322 -322
  84. package/dist/collection/components/ptc-spacer/ptc-spacer.js +99 -99
  85. package/dist/collection/components/ptc-span/ptc-span.js +89 -89
  86. package/dist/collection/components/ptc-svg-btn/ptc-svg-btn.css +16 -0
  87. package/dist/collection/components/ptc-svg-btn/ptc-svg-btn.js +71 -69
  88. package/dist/collection/components/ptc-title/ptc-title.js +231 -231
  89. package/dist/collection/index.js +1 -1
  90. package/dist/collection/media/svg-imgs/Back-arrow.svg +11 -0
  91. package/dist/collection/media/svg-imgs/close.svg +10 -10
  92. package/dist/collection/media/svg-imgs/slider-arrow-left.svg +18 -18
  93. package/dist/collection/media/svg-imgs/slider-arrow-right.svg +18 -18
  94. package/dist/collection/utils/interfaces.js +11 -11
  95. package/dist/collection/utils/utils.js +3 -3
  96. package/dist/custom-elements/index.d.ts +18 -0
  97. package/dist/custom-elements/index.js +2056 -1991
  98. package/dist/esm/{icon-asset_4.entry.js → icon-asset_8.entry.js} +295 -220
  99. package/dist/esm/{interfaces-c1c73092.js → interfaces-7c0243be.js} +9 -9
  100. package/dist/esm/loader.js +1 -1
  101. package/dist/esm/lottie-player.entry.js +354 -354
  102. package/dist/esm/my-component.entry.js +13 -13
  103. package/dist/esm/polyfills/core-js.js +0 -0
  104. package/dist/esm/polyfills/dom.js +0 -0
  105. package/dist/esm/polyfills/es5-html-element.js +0 -0
  106. package/dist/esm/polyfills/index.js +0 -0
  107. package/dist/esm/polyfills/system.js +0 -0
  108. package/dist/esm/ptc-breadcrumb.entry.js +12 -12
  109. package/dist/esm/ptc-button.entry.js +65 -65
  110. package/dist/esm/ptc-card-bottom.entry.js +31 -31
  111. package/dist/esm/ptc-card-content.entry.js +31 -31
  112. package/dist/esm/ptc-card-plm.entry.js +16 -16
  113. package/dist/esm/ptc-card.entry.js +68 -68
  114. package/dist/esm/ptc-countdown.entry.js +8 -8
  115. package/dist/esm/ptc-date.entry.js +48 -48
  116. package/dist/esm/ptc-footer.entry.js +8 -8
  117. package/dist/esm/ptc-form.entry.js +104 -104
  118. package/dist/esm/ptc-hero.entry.js +18 -18
  119. package/dist/esm/ptc-img_2.entry.js +169 -169
  120. package/dist/esm/ptc-input.entry.js +20 -20
  121. package/dist/esm/ptc-link.entry.js +42 -42
  122. package/dist/esm/ptc-list.entry.js +20 -20
  123. package/dist/esm/ptc-lottie.entry.js +12 -12
  124. package/dist/esm/ptc-modal.entry.js +103 -103
  125. package/dist/esm/ptc-nav-item.entry.js +83 -83
  126. package/dist/esm/ptc-nav.entry.js +8 -8
  127. package/dist/esm/ptc-para.entry.js +39 -39
  128. package/dist/esm/ptc-picture.entry.js +158 -158
  129. package/dist/esm/ptc-responsive-wrapper.entry.js +54 -54
  130. package/dist/esm/ptc-select.entry.js +24 -24
  131. package/dist/esm/ptc-social-share.entry.js +64 -64
  132. package/dist/esm/ptc-spacer.entry.js +35 -35
  133. package/dist/esm/ptc-span.entry.js +23 -23
  134. package/dist/esm/ptc-title.entry.js +44 -44
  135. package/dist/esm/ptcw-design.js +1 -1
  136. package/dist/ptcw-design/media/brands.svg +1381 -1381
  137. package/dist/ptcw-design/media/designer.svg +316 -316
  138. package/dist/ptcw-design/media/regular.svg +463 -463
  139. package/dist/ptcw-design/media/solid.svg +3013 -3013
  140. package/dist/ptcw-design/media/svg-with-js.min.css +4 -4
  141. package/dist/ptcw-design/{p-1e39bc14.entry.js → p-894e8c85.entry.js} +1 -1
  142. package/dist/ptcw-design/{p-439c9e49.entry.js → p-e87c04ae.entry.js} +2 -2
  143. package/dist/ptcw-design/{p-27538cac.entry.js → p-f2f1c015.entry.js} +1 -1
  144. package/dist/ptcw-design/ptcw-design.css +1 -1
  145. package/dist/ptcw-design/ptcw-design.esm.js +1 -1
  146. package/dist/ptcw-design/validation/FormValidation.js +4234 -4234
  147. package/dist/types/components/icon-asset/icon-asset.d.ts +32 -32
  148. package/dist/types/components/list-item/list-item.d.ts +8 -7
  149. package/dist/types/components/my-component/my-component.d.ts +16 -16
  150. package/dist/types/components/ptc-announcement/ptc-announcement.d.ts +35 -35
  151. package/dist/types/components/ptc-breadcrumb/ptc-breadcrumb.d.ts +4 -4
  152. package/dist/types/components/ptc-button/ptc-button.d.ts +56 -56
  153. package/dist/types/components/ptc-card/ptc-card.d.ts +50 -50
  154. package/dist/types/components/ptc-card-bottom/ptc-card-bottom.d.ts +15 -15
  155. package/dist/types/components/ptc-card-content/ptc-card-content.d.ts +15 -15
  156. package/dist/types/components/ptc-card-plm/ptc-card-plm.d.ts +8 -8
  157. package/dist/types/components/ptc-countdown/ptc-countdown.d.ts +3 -3
  158. package/dist/types/components/ptc-date/ptc-date.d.ts +41 -41
  159. package/dist/types/components/ptc-footer/ptc-footer.d.ts +3 -3
  160. package/dist/types/components/ptc-form/ptc-form.d.ts +11 -11
  161. package/dist/types/components/ptc-hero/ptc-hero.d.ts +12 -12
  162. package/dist/types/components/ptc-img/ptc-img.d.ts +51 -51
  163. package/dist/types/components/ptc-input/ptc-input.d.ts +19 -19
  164. package/dist/types/components/ptc-link/ptc-link.d.ts +36 -36
  165. package/dist/types/components/ptc-list/ptc-list.d.ts +6 -6
  166. package/dist/types/components/ptc-lottie/ptc-lottie.d.ts +12 -12
  167. package/dist/types/components/ptc-minimized-footer/ptc-minimized-footer.d.ts +3 -0
  168. package/dist/types/components/ptc-minimized-header/ptc-minimized-header.d.ts +6 -0
  169. package/dist/types/components/ptc-mobile-select/ptc-mobile-select.d.ts +40 -40
  170. package/dist/types/components/ptc-modal/ptc-modal.d.ts +46 -46
  171. package/dist/types/components/ptc-nav/ptc-nav.d.ts +3 -3
  172. package/dist/types/components/ptc-nav-item/ptc-nav-item.d.ts +53 -53
  173. package/dist/types/components/ptc-overlay/ptc-overlay.d.ts +20 -20
  174. package/dist/types/components/ptc-para/ptc-para.d.ts +28 -28
  175. package/dist/types/components/ptc-picture/ptc-picture.d.ts +82 -82
  176. package/dist/types/components/ptc-previous-url/ptc-previous-url.d.ts +5 -0
  177. package/dist/types/components/ptc-responsive-wrapper/ptc-responsive-wrapper.d.ts +8 -8
  178. package/dist/types/components/ptc-select/ptc-select.d.ts +9 -9
  179. package/dist/types/components/ptc-social-share/ptc-social-share.d.ts +25 -25
  180. package/dist/types/components/ptc-spacer/ptc-spacer.d.ts +16 -16
  181. package/dist/types/components/ptc-span/ptc-span.d.ts +16 -16
  182. package/dist/types/components/ptc-svg-btn/ptc-svg-btn.d.ts +12 -12
  183. package/dist/types/components/ptc-title/ptc-title.d.ts +41 -41
  184. package/dist/types/components.d.ts +77 -26
  185. package/dist/types/global.d.ts +1072 -1072
  186. package/dist/types/index.d.ts +1 -1
  187. package/dist/types/utils/interfaces.d.ts +14 -14
  188. package/dist/types/utils/utils.d.ts +1 -1
  189. package/package.json +58 -58
  190. package/readme.md +11 -11
  191. package/dist/cjs/list-item.cjs.entry.js +0 -29
  192. package/dist/esm/list-item.entry.js +0 -25
  193. package/dist/ptcw-design/p-80c03571.entry.js +0 -1
  194. /package/dist/ptcw-design/{p-50e52c88.js → p-ee1183b2.js} +0 -0
@@ -1,314 +1,314 @@
1
- import { Component, Host, h, Prop, Listen, Element } from '@stencil/core';
2
- import { ResponsiveBgVariables } from '../../utils/interfaces';
3
- export class PtcImg {
4
- constructor() {
5
- /**
6
- * Image size for smallest screen
7
- * <=767px
8
- */
9
- this.sizeXs = '510x340';
10
- /**
11
- * Image size for small screen
12
- * >=768px and <=991px
13
- */
14
- this.sizeSm = '1240x496';
15
- /**
16
- * Image size for medium screen
17
- * >=992px and <=1199px
18
- */
19
- this.sizeMd = '1366x500';
20
- /**
21
- * Image solution for large screen
22
- * >=1200px
23
- */
24
- this.sizeLg = '1920x1080';
25
- /**
26
- * Image type
27
- */
28
- this.imageType = 'smart-bg';
29
- /**
30
- * Image border shape
31
- */
32
- this.borderRadius = '';
33
- /**
34
- * Lazy loading option
35
- */
36
- this.loadMode = 'lazy-bg';
37
- }
38
- /**
39
- * Image Z Index
40
- */
41
- // @Prop() imageZIndex: 'z-index-auto' | 'z-index-n-2' | 'z-index-n-1' | 'z-index-p-1' | 'z-index-p-2' = 'z-index-auto';
42
- WindowResize() {
43
- this.setResponsiveBg();
44
- }
45
- render() {
46
- const classMap = this.getCssClassMap();
47
- return (h(Host, null,
48
- h("div", { class: classMap, "data-xs": `${this.imgUrl}:${this.sizeXs}`, "data-sm": `${this.imgUrl}:${this.sizeSm}`, "data-md": `${this.imgUrl}:${this.sizeMd}`, "data-lg": `${this.imgUrl}:${this.sizeLg}` }, this.imageType == 'smart-bg' ? h("slot", null) : null)));
49
- }
50
- componentDidLoad() {
51
- this.addIntersectionObserver();
52
- this.setResponsiveBg();
53
- }
54
- componentWillUpdate() {
55
- // console.log('componentWillUpdate!');
56
- this.addIntersectionObserver();
57
- this.setResponsiveBg();
58
- }
59
- //responsive image
60
- setResponsiveBg() {
61
- // Define local variables
62
- let backgrounds = (this.el || document).querySelectorAll(ResponsiveBgVariables.selector), el, elData, currentBreakpoint = this.getCurrentBreakPoints();
63
- // console.log('current breakpoint: ' + currentBreakpoint);
64
- // Loop through all target elements
65
- for (var i = 0, len = backgrounds.length; i < len; i++) {
66
- // Set current variables
67
- el = backgrounds[i];
68
- elData = el.getAttribute('data-' + currentBreakpoint);
69
- // If the data attribute exists, set the background
70
- if (elData !== null) {
71
- el.style.backgroundImage = "url('" + elData + "')";
72
- }
73
- else {
74
- if (typeof console == 'object') {
75
- console.warn('Data attribute: data-' + currentBreakpoint + ' not found on element:\n\n' + el.outerHTML + '\n\n\n');
76
- }
77
- }
78
- }
79
- }
80
- //lazy loading
81
- addIntersectionObserver() {
82
- if (!this.imgUrl) {
83
- console.log('no image!');
84
- return;
85
- }
86
- if ('IntersectionObserver' in window) {
87
- let lazyLoadBgs = (this.el || document).querySelectorAll('.lazy-bg');
88
- let bgObserver = new IntersectionObserver(entries => {
89
- entries.forEach(entry => {
90
- if (entry.isIntersecting) {
91
- const image = entry.target;
92
- image.classList.remove('lazy-bg');
93
- // console.log('loaded');
94
- bgObserver.unobserve(image);
95
- }
96
- });
97
- });
98
- lazyLoadBgs.forEach(image => {
99
- bgObserver.observe(image);
100
- });
101
- }
102
- else {
103
- // fall back to setTimeout for Safari and IE
104
- // setTimeout(() => {};
105
- // }, 5000);
106
- }
107
- }
108
- getCssClassMap() {
109
- return {
110
- [this.imageType]: true,
111
- 'ptc-img': true,
112
- [this.borderRadius]: true,
113
- [this.loadMode]: true,
114
- // [this.imageZIndex] : true
115
- };
116
- }
117
- getCurrentBreakPoints() {
118
- // Define local variables
119
- let doc = window.document, temp = doc.createElement('div'), env;
120
- // Append test node
121
- doc.body.appendChild(temp);
122
- // Loop through breakpoints
123
- for (let i = ResponsiveBgVariables.envs.length - 1; i >= 0; i--) {
124
- env = ResponsiveBgVariables.envs[i];
125
- // Add classes
126
- temp.className = 'hidden-' + env;
127
- // Found breakpoint
128
- if (temp.offsetParent === null) {
129
- // Remove our test node
130
- doc.body.removeChild(temp);
131
- console.log('remove test node');
132
- // Return current breakpoint
133
- return env;
134
- }
135
- }
136
- // Breakpoint not found, try fallback
137
- doc.body.removeChild(temp);
138
- return this.getFallbackBreakpoint();
139
- }
140
- getFallbackBreakpoint() {
141
- if (window.matchMedia('(min-width: 992px)').matches) {
142
- return 'lg';
143
- }
144
- else if (window.matchMedia('(min-width: 768px)').matches) {
145
- return 'md';
146
- }
147
- else if (window.matchMedia('(min-width: 576px)').matches) {
148
- return 'sm';
149
- }
150
- else {
151
- return 'xs';
152
- }
153
- }
154
- static get is() { return "ptc-img"; }
155
- static get originalStyleUrls() { return {
156
- "$": ["ptc-img.scss"]
157
- }; }
158
- static get styleUrls() { return {
159
- "$": ["ptc-img.css"]
160
- }; }
161
- static get properties() { return {
162
- "sizeXs": {
163
- "type": "string",
164
- "mutable": true,
165
- "complexType": {
166
- "original": "string",
167
- "resolved": "string",
168
- "references": {}
169
- },
170
- "required": false,
171
- "optional": false,
172
- "docs": {
173
- "tags": [],
174
- "text": "Image size for smallest screen\n<=767px"
175
- },
176
- "attribute": "size-xs",
177
- "reflect": false,
178
- "defaultValue": "'510x340'"
179
- },
180
- "sizeSm": {
181
- "type": "string",
182
- "mutable": true,
183
- "complexType": {
184
- "original": "string",
185
- "resolved": "string",
186
- "references": {}
187
- },
188
- "required": false,
189
- "optional": false,
190
- "docs": {
191
- "tags": [],
192
- "text": "Image size for small screen\n>=768px and <=991px"
193
- },
194
- "attribute": "size-sm",
195
- "reflect": false,
196
- "defaultValue": "'1240x496'"
197
- },
198
- "sizeMd": {
199
- "type": "string",
200
- "mutable": true,
201
- "complexType": {
202
- "original": "string",
203
- "resolved": "string",
204
- "references": {}
205
- },
206
- "required": false,
207
- "optional": false,
208
- "docs": {
209
- "tags": [],
210
- "text": "Image size for medium screen\n>=992px and <=1199px"
211
- },
212
- "attribute": "size-md",
213
- "reflect": false,
214
- "defaultValue": "'1366x500'"
215
- },
216
- "sizeLg": {
217
- "type": "string",
218
- "mutable": true,
219
- "complexType": {
220
- "original": "string",
221
- "resolved": "string",
222
- "references": {}
223
- },
224
- "required": false,
225
- "optional": false,
226
- "docs": {
227
- "tags": [],
228
- "text": "Image solution for large screen\n>=1200px"
229
- },
230
- "attribute": "size-lg",
231
- "reflect": false,
232
- "defaultValue": "'1920x1080'"
233
- },
234
- "imgUrl": {
235
- "type": "string",
236
- "mutable": false,
237
- "complexType": {
238
- "original": "string",
239
- "resolved": "string",
240
- "references": {}
241
- },
242
- "required": false,
243
- "optional": false,
244
- "docs": {
245
- "tags": [],
246
- "text": "Image Src"
247
- },
248
- "attribute": "img-url",
249
- "reflect": false
250
- },
251
- "imageType": {
252
- "type": "string",
253
- "mutable": false,
254
- "complexType": {
255
- "original": "'smart-bg' | 'smart-img'",
256
- "resolved": "\"smart-bg\" | \"smart-img\"",
257
- "references": {}
258
- },
259
- "required": false,
260
- "optional": false,
261
- "docs": {
262
- "tags": [],
263
- "text": "Image type"
264
- },
265
- "attribute": "image-type",
266
- "reflect": false,
267
- "defaultValue": "'smart-bg'"
268
- },
269
- "borderRadius": {
270
- "type": "string",
271
- "mutable": false,
272
- "complexType": {
273
- "original": "'radius-sm' | 'radius-md' | 'radius-lg' | ''",
274
- "resolved": "\"\" | \"radius-lg\" | \"radius-md\" | \"radius-sm\"",
275
- "references": {}
276
- },
277
- "required": false,
278
- "optional": false,
279
- "docs": {
280
- "tags": [],
281
- "text": "Image border shape"
282
- },
283
- "attribute": "border-radius",
284
- "reflect": false,
285
- "defaultValue": "''"
286
- },
287
- "loadMode": {
288
- "type": "string",
289
- "mutable": false,
290
- "complexType": {
291
- "original": "'lazy-bg' | 'eager-bg'",
292
- "resolved": "\"eager-bg\" | \"lazy-bg\"",
293
- "references": {}
294
- },
295
- "required": false,
296
- "optional": false,
297
- "docs": {
298
- "tags": [],
299
- "text": "Lazy loading option"
300
- },
301
- "attribute": "load-mode",
302
- "reflect": false,
303
- "defaultValue": "'lazy-bg'"
304
- }
305
- }; }
306
- static get elementRef() { return "el"; }
307
- static get listeners() { return [{
308
- "name": "resize",
309
- "method": "WindowResize",
310
- "target": "window",
311
- "capture": false,
312
- "passive": true
313
- }]; }
314
- }
1
+ import { Component, Host, h, Prop, Listen, Element } from '@stencil/core';
2
+ import { ResponsiveBgVariables } from '../../utils/interfaces';
3
+ export class PtcImg {
4
+ constructor() {
5
+ /**
6
+ * Image size for smallest screen
7
+ * <=767px
8
+ */
9
+ this.sizeXs = '510x340';
10
+ /**
11
+ * Image size for small screen
12
+ * >=768px and <=991px
13
+ */
14
+ this.sizeSm = '1240x496';
15
+ /**
16
+ * Image size for medium screen
17
+ * >=992px and <=1199px
18
+ */
19
+ this.sizeMd = '1366x500';
20
+ /**
21
+ * Image solution for large screen
22
+ * >=1200px
23
+ */
24
+ this.sizeLg = '1920x1080';
25
+ /**
26
+ * Image type
27
+ */
28
+ this.imageType = 'smart-bg';
29
+ /**
30
+ * Image border shape
31
+ */
32
+ this.borderRadius = '';
33
+ /**
34
+ * Lazy loading option
35
+ */
36
+ this.loadMode = 'lazy-bg';
37
+ }
38
+ /**
39
+ * Image Z Index
40
+ */
41
+ // @Prop() imageZIndex: 'z-index-auto' | 'z-index-n-2' | 'z-index-n-1' | 'z-index-p-1' | 'z-index-p-2' = 'z-index-auto';
42
+ WindowResize() {
43
+ this.setResponsiveBg();
44
+ }
45
+ render() {
46
+ const classMap = this.getCssClassMap();
47
+ return (h(Host, null,
48
+ h("div", { class: classMap, "data-xs": `${this.imgUrl}:${this.sizeXs}`, "data-sm": `${this.imgUrl}:${this.sizeSm}`, "data-md": `${this.imgUrl}:${this.sizeMd}`, "data-lg": `${this.imgUrl}:${this.sizeLg}` }, this.imageType == 'smart-bg' ? h("slot", null) : null)));
49
+ }
50
+ componentDidLoad() {
51
+ this.addIntersectionObserver();
52
+ this.setResponsiveBg();
53
+ }
54
+ componentWillUpdate() {
55
+ // console.log('componentWillUpdate!');
56
+ this.addIntersectionObserver();
57
+ this.setResponsiveBg();
58
+ }
59
+ //responsive image
60
+ setResponsiveBg() {
61
+ // Define local variables
62
+ let backgrounds = (this.el || document).querySelectorAll(ResponsiveBgVariables.selector), el, elData, currentBreakpoint = this.getCurrentBreakPoints();
63
+ // console.log('current breakpoint: ' + currentBreakpoint);
64
+ // Loop through all target elements
65
+ for (var i = 0, len = backgrounds.length; i < len; i++) {
66
+ // Set current variables
67
+ el = backgrounds[i];
68
+ elData = el.getAttribute('data-' + currentBreakpoint);
69
+ // If the data attribute exists, set the background
70
+ if (elData !== null) {
71
+ el.style.backgroundImage = "url('" + elData + "')";
72
+ }
73
+ else {
74
+ if (typeof console == 'object') {
75
+ console.warn('Data attribute: data-' + currentBreakpoint + ' not found on element:\n\n' + el.outerHTML + '\n\n\n');
76
+ }
77
+ }
78
+ }
79
+ }
80
+ //lazy loading
81
+ addIntersectionObserver() {
82
+ if (!this.imgUrl) {
83
+ console.log('no image!');
84
+ return;
85
+ }
86
+ if ('IntersectionObserver' in window) {
87
+ let lazyLoadBgs = (this.el || document).querySelectorAll('.lazy-bg');
88
+ let bgObserver = new IntersectionObserver(entries => {
89
+ entries.forEach(entry => {
90
+ if (entry.isIntersecting) {
91
+ const image = entry.target;
92
+ image.classList.remove('lazy-bg');
93
+ // console.log('loaded');
94
+ bgObserver.unobserve(image);
95
+ }
96
+ });
97
+ });
98
+ lazyLoadBgs.forEach(image => {
99
+ bgObserver.observe(image);
100
+ });
101
+ }
102
+ else {
103
+ // fall back to setTimeout for Safari and IE
104
+ // setTimeout(() => {};
105
+ // }, 5000);
106
+ }
107
+ }
108
+ getCssClassMap() {
109
+ return {
110
+ [this.imageType]: true,
111
+ 'ptc-img': true,
112
+ [this.borderRadius]: true,
113
+ [this.loadMode]: true,
114
+ // [this.imageZIndex] : true
115
+ };
116
+ }
117
+ getCurrentBreakPoints() {
118
+ // Define local variables
119
+ let doc = window.document, temp = doc.createElement('div'), env;
120
+ // Append test node
121
+ doc.body.appendChild(temp);
122
+ // Loop through breakpoints
123
+ for (let i = ResponsiveBgVariables.envs.length - 1; i >= 0; i--) {
124
+ env = ResponsiveBgVariables.envs[i];
125
+ // Add classes
126
+ temp.className = 'hidden-' + env;
127
+ // Found breakpoint
128
+ if (temp.offsetParent === null) {
129
+ // Remove our test node
130
+ doc.body.removeChild(temp);
131
+ console.log('remove test node');
132
+ // Return current breakpoint
133
+ return env;
134
+ }
135
+ }
136
+ // Breakpoint not found, try fallback
137
+ doc.body.removeChild(temp);
138
+ return this.getFallbackBreakpoint();
139
+ }
140
+ getFallbackBreakpoint() {
141
+ if (window.matchMedia('(min-width: 992px)').matches) {
142
+ return 'lg';
143
+ }
144
+ else if (window.matchMedia('(min-width: 768px)').matches) {
145
+ return 'md';
146
+ }
147
+ else if (window.matchMedia('(min-width: 576px)').matches) {
148
+ return 'sm';
149
+ }
150
+ else {
151
+ return 'xs';
152
+ }
153
+ }
154
+ static get is() { return "ptc-img"; }
155
+ static get originalStyleUrls() { return {
156
+ "$": ["ptc-img.scss"]
157
+ }; }
158
+ static get styleUrls() { return {
159
+ "$": ["ptc-img.css"]
160
+ }; }
161
+ static get properties() { return {
162
+ "sizeXs": {
163
+ "type": "string",
164
+ "mutable": true,
165
+ "complexType": {
166
+ "original": "string",
167
+ "resolved": "string",
168
+ "references": {}
169
+ },
170
+ "required": false,
171
+ "optional": false,
172
+ "docs": {
173
+ "tags": [],
174
+ "text": "Image size for smallest screen\r\n<=767px"
175
+ },
176
+ "attribute": "size-xs",
177
+ "reflect": false,
178
+ "defaultValue": "'510x340'"
179
+ },
180
+ "sizeSm": {
181
+ "type": "string",
182
+ "mutable": true,
183
+ "complexType": {
184
+ "original": "string",
185
+ "resolved": "string",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": false,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Image size for small screen\r\n>=768px and <=991px"
193
+ },
194
+ "attribute": "size-sm",
195
+ "reflect": false,
196
+ "defaultValue": "'1240x496'"
197
+ },
198
+ "sizeMd": {
199
+ "type": "string",
200
+ "mutable": true,
201
+ "complexType": {
202
+ "original": "string",
203
+ "resolved": "string",
204
+ "references": {}
205
+ },
206
+ "required": false,
207
+ "optional": false,
208
+ "docs": {
209
+ "tags": [],
210
+ "text": "Image size for medium screen\r\n>=992px and <=1199px"
211
+ },
212
+ "attribute": "size-md",
213
+ "reflect": false,
214
+ "defaultValue": "'1366x500'"
215
+ },
216
+ "sizeLg": {
217
+ "type": "string",
218
+ "mutable": true,
219
+ "complexType": {
220
+ "original": "string",
221
+ "resolved": "string",
222
+ "references": {}
223
+ },
224
+ "required": false,
225
+ "optional": false,
226
+ "docs": {
227
+ "tags": [],
228
+ "text": "Image solution for large screen\r\n>=1200px"
229
+ },
230
+ "attribute": "size-lg",
231
+ "reflect": false,
232
+ "defaultValue": "'1920x1080'"
233
+ },
234
+ "imgUrl": {
235
+ "type": "string",
236
+ "mutable": false,
237
+ "complexType": {
238
+ "original": "string",
239
+ "resolved": "string",
240
+ "references": {}
241
+ },
242
+ "required": false,
243
+ "optional": false,
244
+ "docs": {
245
+ "tags": [],
246
+ "text": "Image Src"
247
+ },
248
+ "attribute": "img-url",
249
+ "reflect": false
250
+ },
251
+ "imageType": {
252
+ "type": "string",
253
+ "mutable": false,
254
+ "complexType": {
255
+ "original": "'smart-bg' | 'smart-img'",
256
+ "resolved": "\"smart-bg\" | \"smart-img\"",
257
+ "references": {}
258
+ },
259
+ "required": false,
260
+ "optional": false,
261
+ "docs": {
262
+ "tags": [],
263
+ "text": "Image type"
264
+ },
265
+ "attribute": "image-type",
266
+ "reflect": false,
267
+ "defaultValue": "'smart-bg'"
268
+ },
269
+ "borderRadius": {
270
+ "type": "string",
271
+ "mutable": false,
272
+ "complexType": {
273
+ "original": "'radius-sm' | 'radius-md' | 'radius-lg' | ''",
274
+ "resolved": "\"\" | \"radius-lg\" | \"radius-md\" | \"radius-sm\"",
275
+ "references": {}
276
+ },
277
+ "required": false,
278
+ "optional": false,
279
+ "docs": {
280
+ "tags": [],
281
+ "text": "Image border shape"
282
+ },
283
+ "attribute": "border-radius",
284
+ "reflect": false,
285
+ "defaultValue": "''"
286
+ },
287
+ "loadMode": {
288
+ "type": "string",
289
+ "mutable": false,
290
+ "complexType": {
291
+ "original": "'lazy-bg' | 'eager-bg'",
292
+ "resolved": "\"eager-bg\" | \"lazy-bg\"",
293
+ "references": {}
294
+ },
295
+ "required": false,
296
+ "optional": false,
297
+ "docs": {
298
+ "tags": [],
299
+ "text": "Lazy loading option"
300
+ },
301
+ "attribute": "load-mode",
302
+ "reflect": false,
303
+ "defaultValue": "'lazy-bg'"
304
+ }
305
+ }; }
306
+ static get elementRef() { return "el"; }
307
+ static get listeners() { return [{
308
+ "name": "resize",
309
+ "method": "WindowResize",
310
+ "target": "window",
311
+ "capture": false,
312
+ "passive": true
313
+ }]; }
314
+ }