codeapp-js 0.1.0 → 0.1.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.
- package/codeApp/dist/codeapp.js +11 -0
- package/codeApp/dist/icon-512.png +0 -0
- package/codeApp/dist/index.html +1 -0
- package/codeApp/power.config.json +1 -1
- package/dev files/dataverse.js +11 -0
- package/docs-mockups/atelier/index.html +120 -0
- package/docs-mockups/atelier/script.js +23 -0
- package/docs-mockups/atelier/styles.css +361 -0
- package/docs-mockups/field-guide/index.html +112 -0
- package/docs-mockups/field-guide/script.js +20 -0
- package/docs-mockups/field-guide/styles.css +272 -0
- package/docs-mockups/index.html +80 -0
- package/docs-mockups/maker-hub/index.html +178 -0
- package/docs-mockups/maker-hub/script.js +20 -0
- package/docs-mockups/maker-hub/styles.css +404 -0
- package/docs-mockups/script.js +26 -0
- package/docs-mockups/signal/index.html +146 -0
- package/docs-mockups/signal/script.js +20 -0
- package/docs-mockups/signal/styles.css +314 -0
- package/docs-mockups/styles.css +287 -0
- package/examples/groups Demo/power.config.json +3 -2
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const aModeButtons = Array.from(document.querySelectorAll('.modeButton'));
|
|
2
|
+
const aModeContents = Array.from(document.querySelectorAll('.modeContent'));
|
|
3
|
+
|
|
4
|
+
const setMode = (sModeId) => {
|
|
5
|
+
aModeButtons.forEach((eButton) => {
|
|
6
|
+
const bIsMatch = eButton.dataset.mode === sModeId;
|
|
7
|
+
eButton.classList.toggle('is-active', bIsMatch);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
aModeContents.forEach((eContent) => {
|
|
11
|
+
const bIsMatch = eContent.id === sModeId;
|
|
12
|
+
eContent.classList.toggle('is-active', bIsMatch);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
aModeButtons.forEach((eButton) => {
|
|
17
|
+
eButton.addEventListener('click', () => {
|
|
18
|
+
setMode(eButton.dataset.mode);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--bg: #efe1c6;
|
|
3
|
+
--paper: #f8f0dc;
|
|
4
|
+
--paper-strong: #f3e4c0;
|
|
5
|
+
--ink: #2a241b;
|
|
6
|
+
--muted: #65594a;
|
|
7
|
+
--forest: #425438;
|
|
8
|
+
--rust: #b55c3b;
|
|
9
|
+
--line: rgba(42, 36, 27, 0.14);
|
|
10
|
+
--shadow: 0 18px 48px rgba(78, 58, 28, 0.16);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
* {
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
html {
|
|
18
|
+
scroll-behavior: smooth;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
body {
|
|
22
|
+
margin: 0;
|
|
23
|
+
min-height: 100vh;
|
|
24
|
+
background:
|
|
25
|
+
radial-gradient(circle at 15% 10%, rgba(181, 92, 59, 0.16), transparent 22%),
|
|
26
|
+
radial-gradient(circle at 85% 20%, rgba(66, 84, 56, 0.14), transparent 18%),
|
|
27
|
+
linear-gradient(180deg, #f4e7cb, var(--bg));
|
|
28
|
+
color: var(--ink);
|
|
29
|
+
font-family: 'Outfit', sans-serif;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.poster {
|
|
33
|
+
position: fixed;
|
|
34
|
+
inset: 0;
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
background-image:
|
|
37
|
+
linear-gradient(rgba(42, 36, 27, 0.04) 1px, transparent 1px),
|
|
38
|
+
linear-gradient(90deg, rgba(42, 36, 27, 0.04) 1px, transparent 1px);
|
|
39
|
+
background-size: 36px 36px;
|
|
40
|
+
opacity: 0.55;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.shell {
|
|
44
|
+
position: relative;
|
|
45
|
+
z-index: 1;
|
|
46
|
+
width: min(1180px, calc(100% - 42px));
|
|
47
|
+
margin: 0 auto;
|
|
48
|
+
padding: 34px 0 52px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.masthead {
|
|
52
|
+
display: flex;
|
|
53
|
+
justify-content: space-between;
|
|
54
|
+
gap: 24px;
|
|
55
|
+
align-items: end;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.kicker,
|
|
59
|
+
.cardLabel {
|
|
60
|
+
margin: 0;
|
|
61
|
+
color: var(--rust);
|
|
62
|
+
font-size: 0.82rem;
|
|
63
|
+
font-weight: 800;
|
|
64
|
+
letter-spacing: 0.16em;
|
|
65
|
+
text-transform: uppercase;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.masthead h1,
|
|
69
|
+
.featurePanel h2,
|
|
70
|
+
.routePanel h2,
|
|
71
|
+
.samplesPanel h3 {
|
|
72
|
+
font-family: 'Literata', serif;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.masthead h1 {
|
|
76
|
+
max-width: 720px;
|
|
77
|
+
margin: 12px 0 0;
|
|
78
|
+
font-size: clamp(3rem, 6vw, 5.2rem);
|
|
79
|
+
line-height: 0.95;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.subcopy {
|
|
83
|
+
max-width: 720px;
|
|
84
|
+
margin: 16px 0 0;
|
|
85
|
+
color: var(--muted);
|
|
86
|
+
line-height: 1.8;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.returnLink {
|
|
90
|
+
border: 1px solid var(--line);
|
|
91
|
+
border-radius: 999px;
|
|
92
|
+
padding: 12px 16px;
|
|
93
|
+
background: rgba(248, 240, 220, 0.72);
|
|
94
|
+
color: var(--ink);
|
|
95
|
+
font-weight: 700;
|
|
96
|
+
text-decoration: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.guideGrid {
|
|
100
|
+
display: grid;
|
|
101
|
+
grid-template-columns: 280px minmax(0, 1fr);
|
|
102
|
+
gap: 22px;
|
|
103
|
+
margin-top: 26px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.mapColumn {
|
|
107
|
+
display: grid;
|
|
108
|
+
gap: 18px;
|
|
109
|
+
align-content: start;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.noteCard,
|
|
113
|
+
.routeCard,
|
|
114
|
+
.featurePanel,
|
|
115
|
+
.kitPanel,
|
|
116
|
+
.samplesPanel {
|
|
117
|
+
border: 1px solid var(--line);
|
|
118
|
+
border-radius: 28px;
|
|
119
|
+
background: linear-gradient(180deg, rgba(248, 240, 220, 0.95), rgba(243, 228, 192, 0.96));
|
|
120
|
+
box-shadow: var(--shadow);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.noteCard,
|
|
124
|
+
.routeCard,
|
|
125
|
+
.featurePanel,
|
|
126
|
+
.kitPanel,
|
|
127
|
+
.samplesPanel {
|
|
128
|
+
padding: 22px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.noteCard p:last-child,
|
|
132
|
+
.featurePanel p,
|
|
133
|
+
.modeContent p,
|
|
134
|
+
.sampleList p {
|
|
135
|
+
color: var(--muted);
|
|
136
|
+
line-height: 1.8;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.routeCard {
|
|
140
|
+
display: grid;
|
|
141
|
+
gap: 12px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.routeCard a {
|
|
145
|
+
color: var(--forest);
|
|
146
|
+
font-weight: 700;
|
|
147
|
+
text-decoration: none;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.contentColumn {
|
|
151
|
+
display: grid;
|
|
152
|
+
gap: 18px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.featurePanel h2,
|
|
156
|
+
.routePanel h2 {
|
|
157
|
+
margin: 12px 0 0;
|
|
158
|
+
font-size: clamp(2rem, 3.2vw, 3.3rem);
|
|
159
|
+
line-height: 1.05;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.routePanel {
|
|
163
|
+
display: grid;
|
|
164
|
+
gap: 18px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.routeSteps {
|
|
168
|
+
display: grid;
|
|
169
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
170
|
+
gap: 14px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.routeSteps div {
|
|
174
|
+
padding: 18px;
|
|
175
|
+
border: 1px dashed rgba(42, 36, 27, 0.22);
|
|
176
|
+
border-radius: 20px;
|
|
177
|
+
background: rgba(248, 240, 220, 0.6);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.routeSteps span {
|
|
181
|
+
color: var(--forest);
|
|
182
|
+
font-size: 1.4rem;
|
|
183
|
+
font-weight: 800;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.kitHeader {
|
|
187
|
+
display: flex;
|
|
188
|
+
justify-content: space-between;
|
|
189
|
+
gap: 16px;
|
|
190
|
+
align-items: center;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.modeToggle {
|
|
194
|
+
display: flex;
|
|
195
|
+
gap: 8px;
|
|
196
|
+
flex-wrap: wrap;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.modeButton {
|
|
200
|
+
border: 1px solid var(--line);
|
|
201
|
+
border-radius: 999px;
|
|
202
|
+
padding: 10px 14px;
|
|
203
|
+
background: transparent;
|
|
204
|
+
color: var(--muted);
|
|
205
|
+
font: inherit;
|
|
206
|
+
cursor: pointer;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.modeButton.is-active {
|
|
210
|
+
background: var(--forest);
|
|
211
|
+
color: #f8f0dc;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.modeContent {
|
|
215
|
+
display: none;
|
|
216
|
+
margin-top: 16px;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.modeContent.is-active {
|
|
220
|
+
display: block;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
pre {
|
|
224
|
+
overflow-x: auto;
|
|
225
|
+
margin: 0;
|
|
226
|
+
padding: 18px;
|
|
227
|
+
border-radius: 18px;
|
|
228
|
+
background: #292419;
|
|
229
|
+
color: #f8f0dc;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
code {
|
|
233
|
+
font-family: 'Courier New', monospace;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.sampleList {
|
|
237
|
+
display: grid;
|
|
238
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
239
|
+
gap: 14px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.sampleList article {
|
|
243
|
+
padding: 18px;
|
|
244
|
+
border-radius: 20px;
|
|
245
|
+
background: rgba(248, 240, 220, 0.7);
|
|
246
|
+
border: 1px solid rgba(42, 36, 27, 0.1);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.sampleList h3 {
|
|
250
|
+
margin: 0 0 10px;
|
|
251
|
+
font-size: 1.35rem;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
@media (max-width: 980px) {
|
|
255
|
+
.guideGrid,
|
|
256
|
+
.routeSteps,
|
|
257
|
+
.sampleList {
|
|
258
|
+
grid-template-columns: 1fr;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
@media (max-width: 760px) {
|
|
263
|
+
.shell {
|
|
264
|
+
width: min(100% - 24px, 1180px);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.masthead,
|
|
268
|
+
.kitHeader {
|
|
269
|
+
flex-direction: column;
|
|
270
|
+
align-items: flex-start;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>CodeApp JS Docs Mockups</title>
|
|
7
|
+
<link rel="stylesheet" href="./styles.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="shell">
|
|
11
|
+
<header class="topbar">
|
|
12
|
+
<div class="brandBlock">
|
|
13
|
+
<div class="suiteMark">P</div>
|
|
14
|
+
<div>
|
|
15
|
+
<p class="eyebrow">Power Platform-style Study</p>
|
|
16
|
+
<h1>Two new docs mockups shaped like maker and model-driven experiences.</h1>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="topbarMeta">
|
|
20
|
+
<span>codeapp-js</span>
|
|
21
|
+
<span>Static prototype</span>
|
|
22
|
+
</div>
|
|
23
|
+
</header>
|
|
24
|
+
|
|
25
|
+
<section class="heroPanel">
|
|
26
|
+
<div>
|
|
27
|
+
<p class="heroLead">The new direction drops the art-direction experiments and moves toward the visual language of make.powerapps.com and model-driven apps: light enterprise chrome, left rails, tabs, command bars, cards, forms, and data tables.</p>
|
|
28
|
+
<div class="heroActions">
|
|
29
|
+
<a class="primaryAction" href="./maker-hub/index.html">Open Maker Hub</a>
|
|
30
|
+
<a class="secondaryAction" href="./model-workspace/index.html">Open Model Workspace</a>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="heroStats">
|
|
34
|
+
<article>
|
|
35
|
+
<strong>01</strong>
|
|
36
|
+
<span>Maker portal docs hub</span>
|
|
37
|
+
</article>
|
|
38
|
+
<article>
|
|
39
|
+
<strong>02</strong>
|
|
40
|
+
<span>Model-driven reference workspace</span>
|
|
41
|
+
</article>
|
|
42
|
+
</div>
|
|
43
|
+
</section>
|
|
44
|
+
|
|
45
|
+
<main class="conceptGrid">
|
|
46
|
+
<article class="conceptCard makerCard" data-index="1">
|
|
47
|
+
<p class="conceptNumber">01</p>
|
|
48
|
+
<h2>Maker Hub</h2>
|
|
49
|
+
<p class="conceptTone">Inspired by make.powerapps.com</p>
|
|
50
|
+
<p class="conceptBody">A docs home screen that feels like a maker portal: product chrome, command bar, learning cards, quick starts, and guided entry points into install, connectors, and examples.</p>
|
|
51
|
+
<ul class="tags">
|
|
52
|
+
<li>Portal shell</li>
|
|
53
|
+
<li>Command bar</li>
|
|
54
|
+
<li>Learning cards</li>
|
|
55
|
+
</ul>
|
|
56
|
+
<a href="./maker-hub/index.html">Preview concept</a>
|
|
57
|
+
</article>
|
|
58
|
+
|
|
59
|
+
<article class="conceptCard workspaceCard" data-index="2">
|
|
60
|
+
<p class="conceptNumber">02</p>
|
|
61
|
+
<h2>Model Workspace</h2>
|
|
62
|
+
<p class="conceptTone">Inspired by model-driven apps</p>
|
|
63
|
+
<p class="conceptBody">A dense reference layout that behaves like a model-driven work area with sitemap navigation, entity forms, related data grids, and tabbed detail panes for docs content.</p>
|
|
64
|
+
<ul class="tags">
|
|
65
|
+
<li>Sitemap</li>
|
|
66
|
+
<li>Form canvas</li>
|
|
67
|
+
<li>Grid + details</li>
|
|
68
|
+
</ul>
|
|
69
|
+
<a href="./model-workspace/index.html">Preview concept</a>
|
|
70
|
+
</article>
|
|
71
|
+
</main>
|
|
72
|
+
|
|
73
|
+
<footer class="footerNote">
|
|
74
|
+
<p>Keyboard shortcuts: press 1 for Maker Hub or 2 for Model Workspace.</p>
|
|
75
|
+
</footer>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<script src="./script.js"></script>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Maker Hub | codeapp-js Docs</title>
|
|
7
|
+
<link rel="stylesheet" href="./styles.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="appShell">
|
|
11
|
+
<header class="suiteBar">
|
|
12
|
+
<div class="suiteLeft">
|
|
13
|
+
<button class="iconButton" aria-label="Open menu">☰</button>
|
|
14
|
+
<div class="suiteBadge">P</div>
|
|
15
|
+
<strong>Power Apps</strong>
|
|
16
|
+
<span class="suiteDivider"></span>
|
|
17
|
+
<span class="suiteLabel">codeapp-js documentation</span>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="suiteRight">
|
|
20
|
+
<input class="searchBox" type="search" placeholder="Search docs, connectors, examples">
|
|
21
|
+
<button class="iconButton" aria-label="Notifications">⎋</button>
|
|
22
|
+
<div class="avatar">CW</div>
|
|
23
|
+
</div>
|
|
24
|
+
</header>
|
|
25
|
+
|
|
26
|
+
<div class="workspace">
|
|
27
|
+
<aside class="leftRail">
|
|
28
|
+
<p class="railLabel">Explore</p>
|
|
29
|
+
<nav class="railNav">
|
|
30
|
+
<a class="is-active" href="#home">Home</a>
|
|
31
|
+
<a href="#quickstart">Quick start</a>
|
|
32
|
+
<a href="#connectors">Connectors</a>
|
|
33
|
+
<a href="#examples">Examples</a>
|
|
34
|
+
<a href="#reference">Reference</a>
|
|
35
|
+
</nav>
|
|
36
|
+
<div class="railPanel">
|
|
37
|
+
<p class="panelTitle">Environment</p>
|
|
38
|
+
<p>Default workspace</p>
|
|
39
|
+
<span>CLI ready</span>
|
|
40
|
+
</div>
|
|
41
|
+
</aside>
|
|
42
|
+
|
|
43
|
+
<main class="contentArea">
|
|
44
|
+
<section class="commandBar">
|
|
45
|
+
<div class="commandSet">
|
|
46
|
+
<button class="commandPrimary">Get started</button>
|
|
47
|
+
<button class="commandButton">Install</button>
|
|
48
|
+
<button class="commandButton">Configure</button>
|
|
49
|
+
<button class="commandButton">Push app</button>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="commandSet">
|
|
52
|
+
<button class="commandButton">Share</button>
|
|
53
|
+
<button class="commandButton">Feedback</button>
|
|
54
|
+
</div>
|
|
55
|
+
</section>
|
|
56
|
+
|
|
57
|
+
<section class="pageHeader" id="home">
|
|
58
|
+
<div>
|
|
59
|
+
<p class="eyebrow">Maker portal concept</p>
|
|
60
|
+
<h1>Build a documentation home that feels native to the Power Platform ecosystem.</h1>
|
|
61
|
+
<p class="lead">This mockup treats docs as a product workspace: short paths in, task cards, status surfaces, and a familiar Microsoft-style shell rather than a marketing landing page.</p>
|
|
62
|
+
</div>
|
|
63
|
+
<article class="summaryCard">
|
|
64
|
+
<span>Library summary</span>
|
|
65
|
+
<strong>JavaScript-first Power Apps Code Apps workflow</strong>
|
|
66
|
+
<p>Generated services, `power.config.json`, connector references, and example apps from one hub.</p>
|
|
67
|
+
</article>
|
|
68
|
+
</section>
|
|
69
|
+
|
|
70
|
+
<section class="tabRow" aria-label="Sections">
|
|
71
|
+
<button class="tabButton is-active" data-target="overviewPanel">Overview</button>
|
|
72
|
+
<button class="tabButton" data-target="setupPanel">Setup</button>
|
|
73
|
+
<button class="tabButton" data-target="examplesPanel">Examples</button>
|
|
74
|
+
<button class="tabButton" data-target="referencePanel">Reference</button>
|
|
75
|
+
</section>
|
|
76
|
+
|
|
77
|
+
<section class="panelDeck">
|
|
78
|
+
<div class="contentPanel is-active" id="overviewPanel">
|
|
79
|
+
<div class="cardGrid wideGrid">
|
|
80
|
+
<article class="infoCard accentCard">
|
|
81
|
+
<p class="cardLabel">Why this works</p>
|
|
82
|
+
<h2>It matches how Power Platform users already navigate products.</h2>
|
|
83
|
+
<p>Use entry cards for install, connectors, Dataverse tables, and generated code. The surface feels like product documentation inside a maker experience, not a detached microsite.</p>
|
|
84
|
+
</article>
|
|
85
|
+
<article class="infoCard">
|
|
86
|
+
<p class="cardLabel">Recommended entry points</p>
|
|
87
|
+
<ul class="checkList">
|
|
88
|
+
<li>Install and serve from the repo root</li>
|
|
89
|
+
<li>Connect Dataverse or Office 365 services</li>
|
|
90
|
+
<li>Explore starter and sample apps</li>
|
|
91
|
+
</ul>
|
|
92
|
+
</article>
|
|
93
|
+
<article class="infoCard">
|
|
94
|
+
<p class="cardLabel">At-a-glance</p>
|
|
95
|
+
<div class="metricRow">
|
|
96
|
+
<div><strong>5</strong><span>connector families</span></div>
|
|
97
|
+
<div><strong>4173</strong><span>default port</span></div>
|
|
98
|
+
<div><strong>pac</strong><span>CLI workflow</span></div>
|
|
99
|
+
</div>
|
|
100
|
+
</article>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div class="contentPanel" id="setupPanel">
|
|
105
|
+
<div class="cardGrid">
|
|
106
|
+
<article class="infoCard" id="quickstart">
|
|
107
|
+
<p class="cardLabel">Quick start</p>
|
|
108
|
+
<pre><code>npm install
|
|
109
|
+
npm start
|
|
110
|
+
pac auth create
|
|
111
|
+
pac env select --environment "environment-id"</code></pre>
|
|
112
|
+
</article>
|
|
113
|
+
<article class="infoCard">
|
|
114
|
+
<p class="cardLabel">Config map</p>
|
|
115
|
+
<p>The docs can split `databaseReferences.default.cds.dataSources` and `connectionReferences` into focused cards instead of one giant JSON blob.</p>
|
|
116
|
+
<div class="miniPills">
|
|
117
|
+
<span>Dataverse tables</span>
|
|
118
|
+
<span>Outlook</span>
|
|
119
|
+
<span>SharePoint</span>
|
|
120
|
+
<span>Groups</span>
|
|
121
|
+
<span>Users</span>
|
|
122
|
+
</div>
|
|
123
|
+
</article>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<div class="contentPanel" id="examplesPanel">
|
|
128
|
+
<div class="cardGrid triGrid" id="examples">
|
|
129
|
+
<article class="infoCard">
|
|
130
|
+
<p class="cardLabel">Starter app</p>
|
|
131
|
+
<strong>codeApp/dist/</strong>
|
|
132
|
+
<p>Primary onboarding destination for first success.</p>
|
|
133
|
+
</article>
|
|
134
|
+
<article class="infoCard">
|
|
135
|
+
<p class="cardLabel">Connector demos</p>
|
|
136
|
+
<strong>examples/outlook Demo/dist/</strong>
|
|
137
|
+
<p>Ideal for service-specific walkthrough pages.</p>
|
|
138
|
+
</article>
|
|
139
|
+
<article class="infoCard">
|
|
140
|
+
<p class="cardLabel">App gallery</p>
|
|
141
|
+
<strong>todo, kanban, planning poker</strong>
|
|
142
|
+
<p>Use these to show progressive complexity.</p>
|
|
143
|
+
</article>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div class="contentPanel" id="referencePanel">
|
|
148
|
+
<div class="cardGrid" id="reference">
|
|
149
|
+
<article class="infoCard">
|
|
150
|
+
<p class="cardLabel">Generated files</p>
|
|
151
|
+
<table>
|
|
152
|
+
<tbody>
|
|
153
|
+
<tr><td>Services</td><td>src/generated/services/*</td></tr>
|
|
154
|
+
<tr><td>Models</td><td>src/generated/models/*</td></tr>
|
|
155
|
+
<tr><td>Config</td><td>power.config.json</td></tr>
|
|
156
|
+
</tbody>
|
|
157
|
+
</table>
|
|
158
|
+
</article>
|
|
159
|
+
<article class="infoCard" id="connectors">
|
|
160
|
+
<p class="cardLabel">Connector references</p>
|
|
161
|
+
<ul class="checkList compactList">
|
|
162
|
+
<li>shared_commondataserviceforapps</li>
|
|
163
|
+
<li>shared_office365</li>
|
|
164
|
+
<li>shared_sharepointonline</li>
|
|
165
|
+
<li>shared_office365groups</li>
|
|
166
|
+
<li>shared_office365users</li>
|
|
167
|
+
</ul>
|
|
168
|
+
</article>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
</section>
|
|
172
|
+
</main>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<script src="./script.js"></script>
|
|
177
|
+
</body>
|
|
178
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const aMakerTabs = Array.from(document.querySelectorAll('.tabButton'));
|
|
2
|
+
const aMakerPanels = Array.from(document.querySelectorAll('.contentPanel'));
|
|
3
|
+
|
|
4
|
+
const setMakerPanel = (sTargetId) => {
|
|
5
|
+
aMakerTabs.forEach((eButton) => {
|
|
6
|
+
const bIsActive = eButton.dataset.target === sTargetId;
|
|
7
|
+
eButton.classList.toggle('is-active', bIsActive);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
aMakerPanels.forEach((ePanel) => {
|
|
11
|
+
const bIsActive = ePanel.id === sTargetId;
|
|
12
|
+
ePanel.classList.toggle('is-active', bIsActive);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
aMakerTabs.forEach((eButton) => {
|
|
17
|
+
eButton.addEventListener('click', () => {
|
|
18
|
+
setMakerPanel(eButton.dataset.target);
|
|
19
|
+
});
|
|
20
|
+
});
|