@claspo/components 1.6.2 → 1.7.0-components-build-perf

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 (26) hide show
  1. package/package.json +6 -4
  2. package/script/SysButtonComponent/SysButton.manifest.js +126 -0
  3. package/script/SysButtonComponent/SysButton.styles.js +64 -0
  4. package/script/SysButtonComponent/SysButtonComponent.js +231 -0
  5. package/script/SysColumnComponent/SysColumn.manifest.js +17 -0
  6. package/script/SysColumnComponent/SysColumnComponent.js +107 -0
  7. package/script/SysColumnsComponent/SysColumns.manifest.js +17 -0
  8. package/script/SysColumnsComponent/SysColumnsComponent.js +53 -0
  9. package/script/SysColumnsComponent/getStyleElement.js +23 -0
  10. package/script/SysContainerComponent/SysBaseContainerComponent.js +41 -0
  11. package/script/SysContainerComponent/SysContainer.manifest.js +18 -0
  12. package/script/SysContainerComponent/SysContainerComponent.js +86 -0
  13. package/script/SysImageComponent/SysImage.manifest.js +18 -0
  14. package/script/SysImageComponent/SysImageComponent.js +378 -0
  15. package/script/SysImageComponent/getStyleElement.js +18 -0
  16. package/script/SysInputComponent/EmailSuggesting.js +252 -0
  17. package/script/SysInputComponent/InputFormControl.js +136 -0
  18. package/script/SysInputComponent/SysInput.manifest.js +728 -0
  19. package/script/SysInputComponent/SysInputComponent.js +84 -0
  20. package/script/SysInputComponent/emailProvidersList.js +158 -0
  21. package/script/SysInputComponent/getOverlayStyles.js +220 -0
  22. package/script/SysInputComponent/getStyleElement.js +69 -0
  23. package/script/SysInputComponent/inputValidators.js +293 -0
  24. package/script/SysTextComponent/SysText.manifest.js +29 -0
  25. package/script/SysTextComponent/SysTextComponent.js +147 -0
  26. package/script/SysTextComponent/TextRoller.js +298 -0
@@ -0,0 +1,84 @@
1
+ import SysInputComponentManifest from './SysInput.manifest.js';
2
+ import WcControlledElement from '@claspo/renderer/sdk/WcControlledElement';
3
+ import getStyleElement from './getStyleElement.js';
4
+ import InputFormControl from './InputFormControl.js';
5
+ import { applyInputLabelStyles, setInputHostSize, setFocusOutline } from '@claspo/renderer/sdk/HtmlStyleUtils';
6
+
7
+ class SysInputComponent extends WcControlledElement {
8
+ static define = {
9
+ name: 'sys-input',
10
+ model: SysInputComponentManifest.name,
11
+ manifest: SysInputComponentManifest,
12
+ };
13
+ manifest = SysInputComponentManifest;
14
+
15
+ inputFormControl = null;
16
+
17
+ connectedCallback() {
18
+ super.connectedCallback();
19
+
20
+ this.getRootElement().innerHTML += `
21
+ ${getStyleElement()}
22
+ <div class="main-container">
23
+ <div class="label-with-input-container">
24
+ <div cl-element="label"
25
+ cl-inline-edit="content, label"
26
+ class="label">
27
+ </div>
28
+ <div class="input-with-tooltip">
29
+ <input cl-element="input"
30
+ type="text"
31
+ name="fname">
32
+ <div class="input-tooltip">
33
+ <svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
34
+ <path d="M1.5 13.0604C1.5 19.4116 6.6481 24.5605 13.0075 24.5605C19.353 24.5605 24.5 19.4107 24.5 13.0604C24.5 6.70865 19.3531 1.55909 13.0075 1.55908C6.64806 1.55908 1.5 6.7077 1.5 13.0604ZM12.9775 17.9668C12.7032 17.9668 12.4807 17.7443 12.4807 17.47C12.4807 17.1956 12.7032 16.9732 12.9775 16.9732C13.2519 16.9732 13.4743 17.1956 13.4743 17.47C13.4743 17.7443 13.2519 17.9668 12.9775 17.9668ZM12.9775 13.4764C12.7032 13.4764 12.4807 13.254 12.4807 12.9796L12.4807 8.48924C12.4807 8.21487 12.7032 7.99245 12.9775 7.99245C13.2519 7.99245 13.4743 8.21487 13.4743 8.48924L13.4743 12.9796C13.4743 13.254 13.2519 13.4764 12.9775 13.4764Z" fill="#FF0000" stroke="white" stroke-width="2"></path>
35
+ </svg>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ `;
41
+
42
+ this.inputFormControl = new InputFormControl(
43
+ this.createControlWithValidation.bind(this),
44
+ this.getModel.bind(this),
45
+ this.getProps.bind(this),
46
+ this.getRootElement.bind(this),
47
+ this.services.form,
48
+ this.services.config,
49
+ this.manifest.i18n,
50
+ this.htmlDocumentObject,
51
+ );
52
+ this.inputFormControl.init();
53
+
54
+ this.observeProps((prev, next) => {
55
+ this.applyAutoAdaptiveStyles(next.adaptiveStyles, next.styles);
56
+
57
+ const env = this.getEnvironment();
58
+ const inputElement = this.getElement('input');
59
+
60
+ applyInputLabelStyles(next, env, this.getRootElement(), '.label-with-input-container');
61
+ inputElement.setAttribute('placeholder', next.content.placeholder);
62
+ setInputHostSize(next, env, this.getHostElement(), inputElement, this.getElement('label'));
63
+ setFocusOutline(inputElement);
64
+ this.updateContext();
65
+ });
66
+
67
+ this.observeEnvironment((prev, next) => {
68
+ const props = this.getProps();
69
+
70
+ applyInputLabelStyles(props, next, this.getRootElement(), '.label-with-input-container');
71
+ setInputHostSize(props, next, this.getHostElement(), this.getElement('input'), this.getElement('label'));
72
+ });
73
+
74
+ this.addContextRecord();
75
+ }
76
+
77
+ disconnectedCallback() {
78
+ super.disconnectedCallback();
79
+ this.inputFormControl.destroy();
80
+ this.services.context.deleteRecord(this.getModel().id);
81
+ }
82
+ }
83
+
84
+ export { SysInputComponent as default };
@@ -0,0 +1,158 @@
1
+ const emailProvidersList = [
2
+ 'abv.bg',
3
+ 'alice.it',
4
+ 'andorra.ad',
5
+ 'aol.com',
6
+ 'aon.at',
7
+ 'apollo.lv',
8
+ 'arnet.com.ar',
9
+ 'atlas.cz',
10
+ 'azet.sk',
11
+ 'bluewin.ch',
12
+ 'bol.com',
13
+ 'bouyguestelecom.fr',
14
+ 'caramail.com',
15
+ 'centrum.cz',
16
+ 'chol.com',
17
+ 'citromail.hu',
18
+ 'ctemplar.com',
19
+ 'daum.net',
20
+ 'dir.bg',
21
+ 'elion.ee',
22
+ 'email.cz',
23
+ 'empas.com',
24
+ 'eunet.rs',
25
+ 'fastmail.com',
26
+ 'fastwebnet.it',
27
+ 'fibertel.com.ar',
28
+ 'free.fr',
29
+ 'freemail.hu',
30
+ 'freenet.de',
31
+ 'gazeta.pl',
32
+ 'globo.com',
33
+ 'gmail.com',
34
+ 'gmx.at',
35
+ 'gmx.com',
36
+ 'gmx.de',
37
+ 'hanmail.net',
38
+ 'hinet.net',
39
+ 'hot.ee',
40
+ 'hotmail.com',
41
+ 'hotmail.it',
42
+ 'hushmail.com',
43
+ 'i.ua',
44
+ 'icloud.com',
45
+ 'ig.com.br',
46
+ 'inbox.com',
47
+ 'inbox.lt',
48
+ 'inbox.lv',
49
+ 'inbox.mk',
50
+ 'inbox.ru',
51
+ 'inet.me',
52
+ 'interia.pl',
53
+ 'inwind.it',
54
+ 'iskon.hr',
55
+ 'jubii.dk',
56
+ 'kolabnow.com',
57
+ 'kpnmail.nl',
58
+ 'kt.com',
59
+ 'laposte.net',
60
+ 'latnet.eu',
61
+ 'lattelecom.lv',
62
+ 'latvija.com',
63
+ 'latvijas.tv',
64
+ 'libero.it',
65
+ 'list.ru',
66
+ 'live.com',
67
+ 'live.dk',
68
+ 'live.fi',
69
+ 'live.no',
70
+ 'luxmail.com',
71
+ 'lycos.com',
72
+ 'mail.ba',
73
+ 'mail.bg',
74
+ 'mail.com',
75
+ 'mail.dk',
76
+ 'mail.ee',
77
+ 'mail.lt',
78
+ 'mail.lv',
79
+ 'mail.ru',
80
+ 'mailbox.org',
81
+ 'mailo.com',
82
+ 'mailpile.is',
83
+ 'meta.ua',
84
+ 'migadu.com',
85
+ 'monaco.net',
86
+ 'nate.com',
87
+ 'naver.com',
88
+ 'neti.ee',
89
+ 'numericable.fr',
90
+ 'one.lt',
91
+ 'one.lv',
92
+ 'onet.pl',
93
+ 'online.nl',
94
+ 'online.no',
95
+ 'openmailbox.com',
96
+ 'orange.fr',
97
+ 'outlook.com',
98
+ 'pasts.lv',
99
+ 'pobox.sk',
100
+ 'pochta.ru',
101
+ 'poczta.fm',
102
+ 'post.lu',
103
+ 'post.sk',
104
+ 'posta.si',
105
+ 'proton.me',
106
+ 'protonmail.com',
107
+ 'r7.com',
108
+ 'radiff.com',
109
+ 'rambler.ru',
110
+ 'runbox.com',
111
+ 'sapo.pt',
112
+ 'sbb.rs',
113
+ 'scarlet.be',
114
+ 'seznam.cz',
115
+ 'sfr.fr',
116
+ 'siol.net',
117
+ 'speedy.com.ar',
118
+ 'startmail.com',
119
+ 'swissmail.org',
120
+ 't-com.hr',
121
+ 't-com.me',
122
+ 't-online.de',
123
+ 't-online.hu',
124
+ 'tdc.dk',
125
+ 'telekom.rs',
126
+ 'telenet.be',
127
+ 'telenor.no',
128
+ 'telfort.nl',
129
+ 'terra.com.br',
130
+ 'tiscali.it',
131
+ 'tlen.pl',
132
+ 'tportal.hr',
133
+ 'tutanota.com',
134
+ 'tvnet.lv',
135
+ 'ukr.net',
136
+ 'uol.com',
137
+ 'uolsinectis.com.ar',
138
+ 'virgilio.it',
139
+ 'volny.cz',
140
+ 'web.de',
141
+ 'webmail.t-2.net',
142
+ 'wind.it',
143
+ 'wp.pl',
144
+ 'xs4all.nl',
145
+ 'yahoo.com',
146
+ 'yahoo.com.ar',
147
+ 'yahoo.com.br',
148
+ 'yahoo.dk',
149
+ 'yahoo.es',
150
+ 'yahoo.it',
151
+ 'yandex.com',
152
+ 'yandex.ru',
153
+ 'ziggo.nl',
154
+ 'zoho.com',
155
+ 'zoznam.sk',
156
+ ];
157
+
158
+ export { emailProvidersList as default };
@@ -0,0 +1,220 @@
1
+ function getOverlayStyles(overlayContentClassName) {
2
+ const afterBorderWidth = '12px';
3
+ const beforeBorderWidth = '14px';
4
+
5
+ return `
6
+ .${overlayContentClassName} {
7
+ position: absolute;
8
+ display: flex;
9
+ width: fit-content;
10
+ height: fit-content;
11
+ padding: 20px 0;
12
+ background: #000000;
13
+ border: 2px solid #FFFFFF;
14
+ border-radius: 5px;
15
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.28);
16
+ animation: jello-animation 10.9s both;
17
+ animation-iteration-count: 1;
18
+ }
19
+
20
+ .${overlayContentClassName}[cl-overlay-position='top']:after {
21
+ content: "";
22
+ position: absolute;
23
+ top: 100%;
24
+ left: calc(50% - 5px);
25
+ margin-left: -8px;
26
+ margin-top: -2px;
27
+ border-width: ${afterBorderWidth};
28
+ border-style: solid;
29
+ border-color: black transparent transparent transparent;
30
+ }
31
+
32
+ .${overlayContentClassName}[cl-overlay-position='top']:before {
33
+ content: "";
34
+ position: absolute;
35
+ top: 100%;
36
+ left: calc(50% - 15px);
37
+ border-width: ${beforeBorderWidth};
38
+ border-style: solid;
39
+ border-color: white transparent transparent transparent;
40
+ }
41
+
42
+ .${overlayContentClassName}[cl-overlay-position='bottom']:after {
43
+ content: "";
44
+ position: absolute;
45
+ top: -22px;
46
+ left: calc(50% - 4px);
47
+ margin-left: -5px;
48
+ margin-bottom: -2px;
49
+ border-width: ${afterBorderWidth};
50
+ border-style: solid;
51
+ border-color: transparent transparent black transparent;
52
+ }
53
+
54
+ .${overlayContentClassName}[cl-overlay-position='bottom']:before {
55
+ content: "";
56
+ position: absolute;
57
+ top: -28px;
58
+ left: calc(50% - 11px);
59
+ border-width: ${beforeBorderWidth};
60
+ border-style: solid;
61
+ border-color: transparent transparent white transparent;
62
+ }
63
+
64
+ .${overlayContentClassName}[cl-overlay-position='right']:after {
65
+ content: "";
66
+ position: absolute;
67
+ top: calc(50% - 7px);
68
+ left: -18px;
69
+ margin-left: -5px;
70
+ border-width: ${afterBorderWidth};
71
+ border-style: solid;
72
+ border-color: transparent black transparent transparent;
73
+ }
74
+
75
+ .${overlayContentClassName}[cl-overlay-position='right']:before {
76
+ content: "";
77
+ position: absolute;
78
+ top: calc(50% - 9px);
79
+ left: -28px;
80
+ border-width: ${beforeBorderWidth};
81
+ border-style: solid;
82
+ border-color: transparent white transparent transparent;
83
+ }
84
+
85
+ .${overlayContentClassName}[cl-overlay-position='left']:after {
86
+ content: "";
87
+ position: absolute;
88
+ top: calc(50% - 7px);
89
+ right: -22px;
90
+ margin-left: -5px;
91
+ border-width: ${afterBorderWidth};
92
+ border-style: solid;
93
+ border-color: transparent transparent transparent black;
94
+ }
95
+
96
+ .${overlayContentClassName}[cl-overlay-position='left']:before {
97
+ content: "";
98
+ position: absolute;
99
+ top: calc(50% - 9px);
100
+ right: -28px;
101
+ border-width: ${beforeBorderWidth};
102
+ border-style: solid;
103
+ border-color: transparent transparent transparent white;
104
+ }
105
+
106
+ .suggestion-text-container {
107
+ height: fit-content;
108
+ width: fit-content;
109
+ display: flex;
110
+ flex-direction: column;
111
+ align-items: flex-start;
112
+ gap: 3px;
113
+ margin: 2px 10px;
114
+ letter-spacing: normal;
115
+ font-size: 14px;
116
+ }
117
+
118
+ .did-you-mean-text {
119
+ height: 16px;
120
+ white-space: nowrap;
121
+ width: fit-content;
122
+ line-height: 16px;
123
+ letter-spacing: normal;
124
+ font-size: 14px;
125
+ color: white;
126
+ }
127
+
128
+ .suggestion-text {
129
+ height: 16px;
130
+ white-space: nowrap;
131
+ width: fit-content;
132
+ color: white;
133
+ line-height: 16px;
134
+ font-weight: bold;
135
+ letter-spacing: normal;
136
+ font-size: 14px;
137
+ }
138
+
139
+ .accept-button {
140
+ position: relative;
141
+ width: 36px;
142
+ height: 36px;
143
+
144
+ border: 2px solid #FFFFFF;
145
+ border-radius: 7px;
146
+ cursor: pointer;
147
+ }
148
+
149
+ .accept-button:after {
150
+ content: '';
151
+ position: absolute;
152
+ top: 42%;
153
+ left: 50%;
154
+ width: 9px;
155
+ height: 14px;
156
+ border: solid;
157
+ border-color: white;
158
+ border-width: 0 3px 3px 0;
159
+ -webkit-transform: translate(-50%, -50%) rotate(45deg);
160
+ -ms-transform: translate(-50%, -50%) rotate(45deg);
161
+ transform: translate(-50%, -50%) rotate(45deg);
162
+ }
163
+
164
+ .deny-button {
165
+ position: relative;
166
+ width: 36px;
167
+ height: 36px;
168
+ border: 2px solid black;
169
+ border-radius: 7px;
170
+ cursor: pointer;
171
+ }
172
+
173
+ .deny-button:before, .deny-button:after {
174
+ position: absolute;
175
+ top: 50%;
176
+ left: 50%;
177
+ content: '';
178
+ height: 18px;
179
+ width: 2px;
180
+ background-color: #595959;
181
+ }
182
+
183
+ .deny-button:before {
184
+ transform: translate(-50%, -50%) rotate(45deg);
185
+ }
186
+
187
+ .deny-button:after {
188
+ transform: translate(-50%, -50%) rotate(-45deg);
189
+ }
190
+
191
+ @keyframes jello-animation {
192
+ 0% {
193
+ transform: scale3d(1, 1, 1);
194
+ }
195
+ 3% {
196
+ transform: scale3d(1.25, 0.75, 1);
197
+ }
198
+ 4% {
199
+ transform: scale3d(0.75, 1.25, 1);
200
+ }
201
+ 5% {
202
+ transform: scale3d(1.15, 0.85, 1);
203
+ }
204
+ 6.5% {
205
+ transform: scale3d(0.95, 1.05, 1);
206
+ }
207
+ 7.5% {
208
+ transform: scale3d(1.05, 0.95, 1);
209
+ }
210
+ 10% {
211
+ transform: scale3d(1, 1, 1);
212
+ }
213
+ 100% {
214
+ transform: scale3d(1, 1, 1);
215
+ }
216
+ }
217
+ `;
218
+ }
219
+
220
+ export { getOverlayStyles as default };
@@ -0,0 +1,69 @@
1
+ function getStyleElement() {
2
+ return `
3
+ <style>
4
+ .main-container {
5
+ height: 100%;
6
+ }
7
+
8
+ .label-with-input-container {
9
+ height: 100%;
10
+ display: flex;
11
+ }
12
+
13
+ .label {
14
+ min-height: 10px;
15
+ }
16
+
17
+ .label.cl-focused {
18
+ min-height: auto;
19
+ }
20
+
21
+ .input-with-tooltip {
22
+ position: relative;
23
+ display: flex;
24
+ height: 100%;
25
+ width: 100%;
26
+ }
27
+
28
+ .invalid {
29
+ border: 1px solid #ff0000 !important;
30
+ }
31
+
32
+ .input-tooltip {
33
+ visibility: hidden;
34
+ position: absolute;
35
+ right: -10px;
36
+ top: -10px;
37
+ z-index: 1;
38
+ border-radius: 100%;
39
+ width: 20px;
40
+ height: 20px;
41
+ display: flex;
42
+ justify-content: center;
43
+ align-items: center;
44
+ -webkit-touch-callout: none; /* iOS Safari */
45
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
46
+ -khtml-user-select: none; /* Konqueror */
47
+ -moz-user-select: none; /* Firefox */
48
+ -ms-user-select: none; /* Internet Explorer/Edge */
49
+ user-select: none;
50
+ }
51
+
52
+ input {
53
+ width: 100%;
54
+ padding-top: 0 !important;
55
+ padding-bottom: 0 !important;
56
+ margin: 0;
57
+ -moz-appearance:none;
58
+ -webkit-appearance:none;
59
+ -o-appearance:none;
60
+ }
61
+
62
+ input.focus-outline-defined:focus {
63
+ outline: var(--clFocusOutline);
64
+ }
65
+ </style>
66
+ `;
67
+ }
68
+
69
+ export { getStyleElement as default };