@sitecore-feaas/clientside 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -36
- package/build/components/FEAASComponent.js +71 -11
- package/build/components/FEAASComponent.js.map +1 -1
- package/build/components/FEAASElement.js +411 -37
- package/build/components/FEAASElement.js.map +1 -1
- package/build/components/FEAASLoader.js +2 -2
- package/build/components/FEAASLoader.js.map +1 -1
- package/build/components/FEAASReactElement.js +47 -0
- package/build/components/FEAASReactElement.js.map +1 -0
- package/build/components/FEAASStylesheet.js +2 -2
- package/build/components/FEAASStylesheet.js.map +1 -1
- package/build/headless.js +4 -3
- package/build/headless.js.map +1 -1
- package/build/ui/FEAAS.js +5 -0
- package/build/ui/FEAAS.js.map +1 -0
- package/build/ui/FEAASContext.js +20 -8
- package/build/ui/FEAASContext.js.map +1 -1
- package/build/ui/FEAASEditor.js +2 -2
- package/build/ui/FEAASEditor.js.map +1 -1
- package/build/ui/FEAASExternal.js +128 -24
- package/build/ui/FEAASExternal.js.map +1 -1
- package/build/ui/FEAASPicker.js +7 -2
- package/build/ui/FEAASPicker.js.map +1 -1
- package/build/ui/index.js +3 -4
- package/build/ui/index.js.map +1 -1
- package/build/ui/react.js.map +1 -1
- package/build/utils/fetch.js +26 -0
- package/build/utils/fetch.js.map +1 -0
- package/dist/browser/headless.cjs +6 -6
- package/dist/browser/headless.cjs.map +4 -4
- package/dist/browser/headless.esm.js +6 -6
- package/dist/browser/headless.esm.js.map +1 -1
- package/dist/browser/index.cjs +7 -7
- package/dist/browser/index.cjs.map +4 -4
- package/dist/browser/index.esm.js +7 -7
- package/dist/browser/index.esm.js.map +1 -1
- package/dist/browser/react.cjs +6 -6
- package/dist/browser/react.cjs.map +4 -4
- package/dist/browser/react.esm.js +6 -6
- package/dist/browser/react.esm.js.map +1 -1
- package/dist/node/headless.cjs +4 -4
- package/dist/node/headless.cjs.map +4 -4
- package/dist/node/headless.esm.js +4 -4
- package/dist/node/headless.esm.js.map +4 -4
- package/dist/node/index.cjs +4 -4
- package/dist/node/index.cjs.map +4 -4
- package/dist/node/index.esm.js +4 -4
- package/dist/node/index.esm.js.map +4 -4
- package/dist/node/react.cjs +4 -4
- package/dist/node/react.cjs.map +4 -4
- package/dist/node/react.esm.js +4 -4
- package/dist/node/react.esm.js.map +4 -4
- package/headless.cjs +4 -4
- package/headless.cjs.map +4 -4
- package/headless.js +4 -4
- package/headless.js.map +4 -4
- package/package.json +11 -3
- package/react.cjs +6 -6
- package/react.cjs.map +4 -4
- package/react.js +6 -6
- package/react.js.map +4 -4
- package/scripts/build.js +1 -1
- package/scripts/test-setup.ts +1 -0
- package/src/components/FEAASComponent.tsx +96 -12
- package/src/components/FEAASElement.tsx +479 -41
- package/src/components/FEAASLoader.tsx +2 -2
- package/src/components/FEAASReactElement.tsx +61 -0
- package/src/components/FEAASStylesheet.tsx +3 -3
- package/src/headless.ts +5 -4
- package/src/ui/FEAAS.tsx +4 -0
- package/src/ui/FEAASContext.tsx +25 -7
- package/src/ui/FEAASEditor.tsx +7 -7
- package/src/ui/FEAASExternal.tsx +134 -24
- package/src/ui/FEAASPicker.tsx +9 -5
- package/src/ui/index.ts +4 -4
- package/src/ui/react.tsx +5 -0
- package/src/ui/tsconfig.json +1 -1
- package/src/utils/fetch.ts +44 -0
- package/test/FEAASBase.test.tsx +2 -2
- package/test/FEAASComponent.test.tsx +4 -1
- package/test/FEAASComponent2.test.tsx +215 -0
- package/test/FEAASContext.test.tsx +206 -29
- package/test/FEAASExternal.test.tsx +1 -8
- package/test/FEAASPicker.test.tsx +4 -2
- package/test/fetch-data.ts +55 -0
- package/types/components/FEAASComponent.d.ts +33 -3
- package/types/components/FEAASComponent.d.ts.map +1 -1
- package/types/components/FEAASElement.d.ts +299 -22
- package/types/components/FEAASElement.d.ts.map +1 -1
- package/types/components/FEAASLoader.d.ts +2 -2
- package/types/components/FEAASLoader.d.ts.map +1 -1
- package/types/components/FEAASReactElement.d.ts +30 -0
- package/types/components/FEAASReactElement.d.ts.map +1 -0
- package/types/components/FEAASStylesheet.d.ts +3 -3
- package/types/components/FEAASStylesheet.d.ts.map +1 -1
- package/types/headless.d.ts +4 -3
- package/types/headless.d.ts.map +1 -1
- package/types/tsbuildinfo +1 -1
- package/types/ui/FEAAS.d.ts +5 -0
- package/types/ui/FEAAS.d.ts.map +1 -0
- package/types/ui/FEAASContext.d.ts +16 -7
- package/types/ui/FEAASContext.d.ts.map +1 -1
- package/types/ui/FEAASEditor.d.ts +6 -6
- package/types/ui/FEAASEditor.d.ts.map +1 -1
- package/types/ui/FEAASExternal.d.ts +59 -10
- package/types/ui/FEAASExternal.d.ts.map +1 -1
- package/types/ui/FEAASPicker.d.ts +11 -9
- package/types/ui/FEAASPicker.d.ts.map +1 -1
- package/types/ui/index.d.ts +1 -4
- package/types/ui/index.d.ts.map +1 -1
- package/types/ui/react.d.ts.map +1 -1
- package/types/ui/tsbuildinfo +1 -0
- package/types/utils/fetch.d.ts +9 -0
- package/types/utils/fetch.d.ts.map +1 -0
- package/build/components/FEAASBase.js +0 -416
- package/build/components/FEAASBase.js.map +0 -1
- package/src/components/FEAASBase.tsx +0 -485
- package/types/components/FEAASBase.d.ts +0 -299
- package/types/components/FEAASBase.d.ts.map +0 -1
- package/types/tsbuildinfo_ui +0 -1
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ return (
|
|
|
33
33
|
### Web component
|
|
34
34
|
|
|
35
35
|
```javascript
|
|
36
|
-
import * as FEAAS '@sitecore-feaas/clientside';
|
|
36
|
+
import * as FEAAS from '@sitecore-feaas/clientside';
|
|
37
37
|
|
|
38
38
|
// provide html template directly
|
|
39
39
|
<feaas-component template={`<p>Hello <var data-path="user.name" /></p>`} data={JSON.stringify({user: {name: "John"}})} />
|
|
@@ -168,9 +168,8 @@ import * as FEAAS from '@sitecore-feaas/clientside/react'
|
|
|
168
168
|
registerComponent(component, options)
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
-
`component` is the actual react component, `options`
|
|
172
|
-
options containing the components props and other options.
|
|
173
|
-
prop-less component. An example of `schema` is provided below:
|
|
171
|
+
`component` is the actual react component, `options` is a JSON Schema representation of your component
|
|
172
|
+
options containing the components props and other options. An example of `schema` is provided below:
|
|
174
173
|
|
|
175
174
|
```typescript
|
|
176
175
|
const options = {
|
|
@@ -193,6 +192,24 @@ const options = {
|
|
|
193
192
|
type: 'string',
|
|
194
193
|
title: 'Telephone',
|
|
195
194
|
minLength: 10
|
|
195
|
+
},
|
|
196
|
+
bold: {
|
|
197
|
+
type: 'boolean',
|
|
198
|
+
title: 'Show text in bold weight'
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
ui: {
|
|
202
|
+
firstName: {
|
|
203
|
+
'ui:autofocus': true,
|
|
204
|
+
'ui:placeholder': 'Write your first name'
|
|
205
|
+
},
|
|
206
|
+
telephone: {
|
|
207
|
+
'ui:options': {
|
|
208
|
+
inputType: 'tel'
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
bold: {
|
|
212
|
+
'ui:widget': 'radio'
|
|
196
213
|
}
|
|
197
214
|
}
|
|
198
215
|
}
|
|
@@ -200,7 +217,7 @@ const options = {
|
|
|
200
217
|
|
|
201
218
|
Options may contain any of the bellow items:
|
|
202
219
|
|
|
203
|
-
**Name**<br/> Type: string<br/> Required:
|
|
220
|
+
**Name**<br/> Type: string<br/> Required: yes<br/> Description: Name of your Component as it will be shown to the user.
|
|
204
221
|
If not provided, will be function name in title case.
|
|
205
222
|
|
|
206
223
|
**Description**<br/> Type: string<br/> Required: no<br/> Description: Describe your Component and anything a user should
|
|
@@ -218,6 +235,9 @@ user when embedding this Component.
|
|
|
218
235
|
**Required**<br/> Type: String Array<br/> Required: no<br/> Description: Array of keys from Inputs (Props) that should
|
|
219
236
|
be required
|
|
220
237
|
|
|
238
|
+
**UI**<br/> Type: JSONSchema object<br/> Required: no<br/> Description: Any UI specific configuration for the inputs
|
|
239
|
+
form rendering in the builder
|
|
240
|
+
|
|
221
241
|
_We use React JSONSchema Form to generate a form for the component properties. You can read more about React JSONSchema
|
|
222
242
|
Form here:_ https://react-jsonschema-form.readthedocs.io
|
|
223
243
|
|
|
@@ -393,27 +413,30 @@ It is possible to use the styles as a part of BYOC component as well.
|
|
|
393
413
|
Each element type like button, card, section has a dedicated class making it recieve the style. Designers can create
|
|
394
414
|
their own element types, but some are built in. FEAAS class name starts with dash.
|
|
395
415
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
416
|
+
### Text elements
|
|
417
|
+
|
|
418
|
+
- `-paragraph` or `<p>`
|
|
419
|
+
- `-heading1` or `<h1>`
|
|
420
|
+
- `-heading2` or `<h2>`
|
|
421
|
+
- `-heading3` or `<h3>`
|
|
422
|
+
- `-heading4` or `<h4>`
|
|
423
|
+
- `-heading5` or `<h5>`
|
|
424
|
+
- `-heading6` or `<h6>`
|
|
425
|
+
|
|
426
|
+
###Block elements
|
|
427
|
+
|
|
428
|
+
- `-card`
|
|
429
|
+
- `-section` or `<section>`
|
|
430
|
+
- `-blockquote` or `<blockquote>`
|
|
431
|
+
- `-block--media`
|
|
432
|
+
- `-block--my-custom-type` - custom block type
|
|
433
|
+
|
|
434
|
+
### Inline elements
|
|
435
|
+
|
|
436
|
+
- `-button` or `<button>`
|
|
437
|
+
- `-link` or `<a>`
|
|
438
|
+
- `-inline--badge`
|
|
439
|
+
- `-inline--my-custom-type` - custom inline type
|
|
417
440
|
|
|
418
441
|
Applying the above classes inside an container with `-feaas -theme--name` classes will apply default theme styles for
|
|
419
442
|
each. It is possible to use specific element styles defined in style guides overriding theme defaults with extra
|
|
@@ -436,14 +459,11 @@ of the badge
|
|
|
436
459
|
</button>
|
|
437
460
|
|
|
438
461
|
<!--
|
|
439
|
-
"Primary" button with "instance" style created in builder.
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
In
|
|
443
|
-
|
|
444
|
-
up the instance style from the document. In this case, only t
|
|
445
|
-
he *typography* rule of the button was altered, so others
|
|
446
|
-
(like spacing or decoration) still retain the link to shared styles.
|
|
462
|
+
"Primary" button with "instance" style created in builder. Style is bundled inline as a part of the html output.
|
|
463
|
+
User can choose to start with reusable rule and "customize it". In that case the instance style is linked with
|
|
464
|
+
the original. Removing the className belonging to instance style clears up the instance style from the document.
|
|
465
|
+
In this case, only the *typography* rule of the button was altered, so others (like spacing or decoration) still
|
|
466
|
+
retain the link to shared styles.
|
|
447
467
|
-->
|
|
448
468
|
<style>
|
|
449
469
|
.-typography--chunky[data-instance-id="unique"][class][class][class] {
|
|
@@ -671,6 +691,7 @@ customizations and redefinitions do not rely on specificity.
|
|
|
671
691
|
|
|
672
692
|
- **Gap override** (codename) - Child element can override the gap set by its parent. Used in builder. Similar to _
|
|
673
693
|
align-self_ and _justify-self_ logic of flexbox. Independent from direction of layout.
|
|
694
|
+
|
|
674
695
|
```CSS
|
|
675
696
|
/* Even though element style has lower priority than layout rule,
|
|
676
697
|
the ---self-- family of variables can be redefined on element itself */
|
|
@@ -679,6 +700,7 @@ customizations and redefinitions do not rely on specificity.
|
|
|
679
700
|
---self--column-gap: 10px;
|
|
680
701
|
}
|
|
681
702
|
```
|
|
703
|
+
|
|
682
704
|
- **Paragraph spacing** - like gap, but for text elements. Takes precedence over vertical gap. Because text elements can
|
|
683
705
|
not be direct children inside horizontal layouts, does not care about direction.
|
|
684
706
|
|
|
@@ -689,5 +711,3 @@ customizations and redefinitions do not rely on specificity.
|
|
|
689
711
|
}
|
|
690
712
|
|
|
691
713
|
```
|
|
692
|
-
|
|
693
|
-
> > > > > > > Stashed changes
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { DEFAULT_CDN_URL, fetchAndRevalidateComponent, parseComponentSource } from '../cdn.js';
|
|
2
2
|
import { renderDOMContent, renderDOMElement } from '../dom/rendering.js';
|
|
3
3
|
import { loadStylesheetAllowStale } from '../headless.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ControlledPromise } from '../utils/promise.js';
|
|
5
|
+
import { fetchData } from '../utils/fetch.js';
|
|
6
|
+
import { FEAASElement } from './FEAASElement.js';
|
|
5
7
|
export function FEAASComponentsProps(element) {
|
|
6
8
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
7
9
|
let data;
|
|
@@ -35,7 +37,31 @@ export function FEAASComponentsProps(element) {
|
|
|
35
37
|
withStylesheet: element.getAttribute('with-stylesheet') != 'false'
|
|
36
38
|
};
|
|
37
39
|
}
|
|
38
|
-
|
|
40
|
+
/**
|
|
41
|
+
* - Initialization lifecycle:
|
|
42
|
+
* - - `set(props)`
|
|
43
|
+
* - - `scheduleRender()` - any attribute change causes render to schedule to next frame
|
|
44
|
+
* - - `whenRendered.restart()` - rendering promise is reset and will resolve after render
|
|
45
|
+
* - - `advance()` - called on next frame
|
|
46
|
+
* - - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load
|
|
47
|
+
* - - `load() => payload` => component is loaded
|
|
48
|
+
* - - `onLoad?(payload)` => invoke loaded callback for cached version of a component
|
|
49
|
+
* - - `advance()` => going further in state machine
|
|
50
|
+
* - - `flush()` => flushes all react changes if needed
|
|
51
|
+
* - - `update()` => component-specific method (or react) to render changes to dom
|
|
52
|
+
* - - `render(payload, props)` => render means react
|
|
53
|
+
* - - `whenRendered.resolve()` - rendering promise is resolved after rendering
|
|
54
|
+
* - - IF CACHE WAS STALE - FETCH AND RENDER AGAIN
|
|
55
|
+
* - - `fetchByPassingCache()` - load up-to-date version of a component
|
|
56
|
+
* - - `onLoad(newPayload) `
|
|
57
|
+
* - - `advance()` => going further in state machine
|
|
58
|
+
* - - `flush()` => flushes all react changes if needed
|
|
59
|
+
* - - `update()` => component-specific method (or react) to render changes to dom
|
|
60
|
+
* - - `render(payload, props)` => render means react
|
|
61
|
+
* - - `whenRendered.resolve()` - rendering promise is resolved after rendering
|
|
62
|
+
* - - `whenLoaded.resolved()` - resolved after loading of up to date component
|
|
63
|
+
*/
|
|
64
|
+
class FEAASComponent extends FEAASElement {
|
|
39
65
|
setData(data) {
|
|
40
66
|
this.set({ data });
|
|
41
67
|
}
|
|
@@ -51,6 +77,20 @@ class FEAASComponent extends FEAASBase {
|
|
|
51
77
|
}
|
|
52
78
|
this.needsRefresh = true;
|
|
53
79
|
super.attributeChangedCallback(name, oldValue, newValue);
|
|
80
|
+
if (name === 'data') {
|
|
81
|
+
this.fetchData();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Reset readyData and perform a new fetch.
|
|
85
|
+
async fetchData() {
|
|
86
|
+
this.readyData = undefined;
|
|
87
|
+
this.whenDataReady = this.whenDataReady.restart();
|
|
88
|
+
const data = await fetchData(this.props.data);
|
|
89
|
+
const alreadyRendered = this.alreadyRendered;
|
|
90
|
+
await this.whenDataReady.resolve(data);
|
|
91
|
+
if (alreadyRendered) {
|
|
92
|
+
this.advance();
|
|
93
|
+
}
|
|
54
94
|
}
|
|
55
95
|
getEditor() {
|
|
56
96
|
var _a;
|
|
@@ -58,6 +98,8 @@ class FEAASComponent extends FEAASBase {
|
|
|
58
98
|
}
|
|
59
99
|
constructor() {
|
|
60
100
|
super();
|
|
101
|
+
this.readyData = {};
|
|
102
|
+
this.whenDataReady = ControlledPromise((data) => (this.readyData = data), (e) => this.onError(e));
|
|
61
103
|
this.defaultProps = {
|
|
62
104
|
cdn: DEFAULT_CDN_URL,
|
|
63
105
|
revision: 'published',
|
|
@@ -70,6 +112,9 @@ class FEAASComponent extends FEAASBase {
|
|
|
70
112
|
this.payload = html;
|
|
71
113
|
this.advance();
|
|
72
114
|
};
|
|
115
|
+
if (!this.getAttribute('data')) {
|
|
116
|
+
this.whenDataReady.resolve({});
|
|
117
|
+
}
|
|
73
118
|
this.addEventListener('click', () => {
|
|
74
119
|
if (this.props.editable) {
|
|
75
120
|
this.edit();
|
|
@@ -103,29 +148,44 @@ class FEAASComponent extends FEAASBase {
|
|
|
103
148
|
}
|
|
104
149
|
async load() {
|
|
105
150
|
// defer loading to original element
|
|
106
|
-
if (this.getOriginal())
|
|
151
|
+
if (this.getOriginal())
|
|
107
152
|
return;
|
|
108
|
-
|
|
153
|
+
const advanceIfEverythingIsReady = () => {
|
|
154
|
+
// html is not loaded
|
|
155
|
+
if (!this.payload)
|
|
156
|
+
return;
|
|
157
|
+
// shared stylesheet is still being loaded
|
|
158
|
+
if (stylesheetPromise)
|
|
159
|
+
return;
|
|
160
|
+
// data is still loading
|
|
161
|
+
if (!this.readyData)
|
|
162
|
+
return;
|
|
163
|
+
this.onLoad(this.payload);
|
|
164
|
+
};
|
|
109
165
|
if (this.props.withStylesheet) {
|
|
110
166
|
var stylesheetPromise = loadStylesheetAllowStale({ ...this.props, revision: 'published' }).then(() => {
|
|
111
167
|
stylesheetPromise = null;
|
|
112
|
-
|
|
113
|
-
this.onLoad(this.payload);
|
|
114
|
-
}
|
|
168
|
+
advanceIfEverythingIsReady();
|
|
115
169
|
});
|
|
116
170
|
}
|
|
117
171
|
return Promise.all([
|
|
118
172
|
stylesheetPromise,
|
|
173
|
+
this.whenDataReady.then(() => advanceIfEverythingIsReady()),
|
|
119
174
|
fetchAndRevalidateComponent(this.props, (html) => {
|
|
120
175
|
this.payload = html;
|
|
121
|
-
|
|
122
|
-
this.onLoad(html);
|
|
176
|
+
advanceIfEverythingIsReady();
|
|
123
177
|
})
|
|
124
178
|
]).then(() => this.payload);
|
|
125
179
|
}
|
|
180
|
+
flush() {
|
|
181
|
+
if (!this.readyData)
|
|
182
|
+
return;
|
|
183
|
+
super.flush();
|
|
184
|
+
}
|
|
126
185
|
update() {
|
|
186
|
+
this.alreadyRendered = true;
|
|
127
187
|
if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {
|
|
128
|
-
renderDOMElement(this, this.
|
|
188
|
+
renderDOMElement(this, this.readyData);
|
|
129
189
|
}
|
|
130
190
|
else {
|
|
131
191
|
this.needsRefresh = true;
|
|
@@ -133,7 +193,7 @@ class FEAASComponent extends FEAASBase {
|
|
|
133
193
|
if (this.getOriginal()) {
|
|
134
194
|
return;
|
|
135
195
|
}
|
|
136
|
-
renderDOMContent(this, this.payload, this.
|
|
196
|
+
renderDOMContent(this, this.payload, this.readyData);
|
|
137
197
|
}
|
|
138
198
|
}
|
|
139
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FEAASComponent.js","sourceRoot":"","sources":["../../src/components/FEAASComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA2B,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACvH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"FEAASComponent.js","sourceRoot":"","sources":["../../src/components/FEAASComponent.tsx"],"names":[],"mappings":"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"}
|