@khester/create-dynamics-app 2.3.0 → 2.5.0
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 +1 -1
- package/dist/artifacts/registry.d.ts.map +1 -1
- package/dist/artifacts/registry.js +4 -4
- package/dist/artifacts/registry.js.map +1 -1
- package/package.json +1 -1
- package/templates/pcf-dataset/ControlManifest.Input.xml +3 -3
- package/templates/pcf-dataset/README.md +9 -2
- package/templates/pcf-dataset/featureconfig.json +3 -0
- package/templates/pcf-dataset/index.ts +8 -18
- package/templates/pcf-dataset/package.json +14 -12
- package/templates/pcf-dataset/strings/{{componentName}}.1033.resx +4 -24
- package/templates/pcf-dataset/tsconfig.json +2 -1
- package/templates/pcf-dataset/{{componentName}}Component.tsx +56 -6
- package/templates/pcf-field/package.json +7 -8
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ npm run metadata:pull -- --entities account,contact # live metadata → typed s
|
|
|
40
40
|
| `react-custom-page` | React SPA for a model-driven custom page | v8 |
|
|
41
41
|
| `power-pages` | Power Pages portal starter | v8 |
|
|
42
42
|
| `pcf-field` | PCF field control (property-type aware: text/number/boolean/date) | v8 |
|
|
43
|
-
| `pcf-dataset` | PCF dataset/grid control (
|
|
43
|
+
| `pcf-dataset` | PCF dataset/grid control — grid-kit `<DataGrid>` (sort/filter/columns/search), **model-driven, React 18** | v8 |
|
|
44
44
|
| `grid-customizer` | Editable-grid cell-renderer customizer | v9 |
|
|
45
45
|
| `web-resource` | React web resource (webpack bundle) | **v8 or v9** |
|
|
46
46
|
| `dialog-form` | Single React form host (opened as a dialog) | **v8 or v9** |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAGlB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA6IpB;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAGlB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA6IpB;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAmTzC,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEtE;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAI1E,CAAC"}
|
|
@@ -284,7 +284,7 @@ export const ARTIFACTS = [
|
|
|
284
284
|
],
|
|
285
285
|
prune: ['_variants'],
|
|
286
286
|
exportTarget: 'pcf',
|
|
287
|
-
templateVersion: '2.
|
|
287
|
+
templateVersion: '2.2.0',
|
|
288
288
|
available: true,
|
|
289
289
|
},
|
|
290
290
|
// ----- Declared now, templates land in Phase A (not yet offered) -----
|
|
@@ -317,15 +317,15 @@ export const ARTIFACTS = [
|
|
|
317
317
|
},
|
|
318
318
|
{
|
|
319
319
|
id: 'pcf-dataset',
|
|
320
|
-
label: '🗂️ PCF Dataset Control — grid/dataset PCF control (
|
|
321
|
-
description: 'PCF dataset control: binds a grid/view, renders records with a
|
|
320
|
+
label: '🗂️ PCF Dataset Control — grid/dataset PCF control (grid-kit, model-driven)',
|
|
321
|
+
description: 'PCF dataset control (model-driven, React 18): binds a grid/view, renders records with a grid-kit <DataGrid> (sort, filter, column chooser, search).',
|
|
322
322
|
templateDir: 'pcf-dataset',
|
|
323
323
|
supportsLibraryChoice: false,
|
|
324
324
|
devTools: [],
|
|
325
325
|
prompts: PCF_NAMING_PROMPTS,
|
|
326
326
|
derive: derivePcfNaming,
|
|
327
327
|
exportTarget: 'pcf',
|
|
328
|
-
templateVersion: '2.
|
|
328
|
+
templateVersion: '2.3.0',
|
|
329
329
|
available: true,
|
|
330
330
|
},
|
|
331
331
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzF;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,WAAoB;IAC7C,OAAO;QACL;YACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,WAAW;YACrD,YAAY,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE;YAChD,WAAW;SACZ;QACD;YACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,WAAW;YACrD,YAAY,EAAE,EAAE,4BAA4B,EAAE,SAAS,EAAE;YACzD,WAAW;SACZ;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,WAAoB;IAClD,OAAO;QACL;YACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,MAAM;YAC9C,YAAY,EAAE;gBACZ,8BAA8B,EAAE,QAAQ;gBACxC,iBAAiB,EAAE,WAAW;aAC/B;YACD,WAAW;SACZ;KACF,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AACxE,sFAAsF;AACtF,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErD;;;;;;;GAOG;AACH,SAAS,cAAc;IACrB,OAAO;QACL;YACE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;YAChB,YAAY,EAAE;gBACZ,4BAA4B,EAAE,QAAQ;gBACtC,iBAAiB,EAAE,WAAW;aAC/B;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW;IAClB,OAAO;QACL;YACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpD,YAAY,EAAE,EAAE,yBAAyB,EAAE,QAAQ,EAAE;SACtD;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,YAAY,GAAiF;IACjG,iBAAiB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE;IAC/E,YAAY,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;IACrF,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;IAChF,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE;IACrF,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE;IAC/E,sBAAsB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;CAC5F,CAAC;AAEF,8EAA8E;AAC9E,SAAS,eAAe,CACtB,OAA+B,EAC/B,EAAE,WAAW,EAA2B;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC;IACvD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IACzE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,yFAAyF;AACzF,SAAS,aAAa,CACpB,OAA+B,EAC/B,GAA4B;IAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC;QAChC,YAAY;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,kBAAkB,GAAG;IACzB;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,gCAAgC;QACzC,IAAI,EAAE,OAAgB;QACtB,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,iBAAiB;KAC5B;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,OAAgB;QACtB,QAAQ,EAAE,qBAAqB;KAChC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,4EAA4E;QACnF,WAAW,EACT,+JAA+J;QACjK,WAAW,EAAE,mBAAmB;QAChC,qBAAqB,EAAE,KAAK;QAC5B,iFAAiF;QACjF,qFAAqF;QACrF,kFAAkF;QAClF,mFAAmF;QACnF,gFAAgF;QAChF,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,gFAAgF;QACvF,WAAW,EACT,+NAA+N;QACjO,WAAW,EAAE,cAAc;QAC3B,yEAAyE;QACzE,8EAA8E;QAC9E,2EAA2E;QAC3E,0EAA0E;QAC1E,mCAAmC;QACnC,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,OAAO,EAAE,EAAE;QACX,6EAA6E;QAC7E,6EAA6E;QAC7E,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,OAAO;KACzB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,2EAA2E;QAClF,WAAW,EACT,+OAA+O;QACjP,WAAW,EAAE,cAAc;QAC3B,6EAA6E;QAC7E,6EAA6E;QAC7E,4EAA4E;QAC5E,8EAA8E;QAC9E,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,oCAAoC;gBAC7C,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,kDAAkD,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC3E,EAAE,IAAI,EAAE,2CAA2C,EAAE,KAAK,EAAE,OAAO,EAAE;oBACrE,EAAE,IAAI,EAAE,wDAAwD,EAAE,KAAK,EAAE,WAAW,EAAE;oBACtF,EAAE,IAAI,EAAE,uDAAuD,EAAE,KAAK,EAAE,eAAe,EAAE;iBAC1F;gBACD,2EAA2E;gBAC3E,2EAA2E;gBAC3E,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACzB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACrF;SACF;QACD,wEAAwE;QACxE,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,4BAA4B;oBACnC,SAAS,EAAE,gCAAgC;oBAC3C,eAAe,EAAE,oCAAoC;iBACtD;gBACD,EAAE,EAAE,aAAa;aAClB;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,8EAA8E;QAC9E,eAAe,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACxD,6EAA6E;QAC7E,qFAAqF;QACrF,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,OAAO;KACzB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,6CAA6C;QACpD,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,qBAAqB;QAClC,qBAAqB,EAAE,KAAK;QAC5B,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,sBAAsB,EAAE;QACzC,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,sEAAsE;QAC7E,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,WAAW;QACxB,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gCAAgC;gBACzC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,iBAAiB;aAC5B;YACD;gBACE,oDAAoD;gBACpD,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,qBAAqB;aAChC;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,sBAAsB;gBAC/B,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,iBAAiB,EAAE;oBAC5D,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC1D,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;oBAC/C,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,YAAY,EAAE;oBACpD,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,WAAW,EAAE;oBACtD,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,sBAAsB,EAAE;iBACvE;gBACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,CAAC,IAAI,YAAY;oBACf,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACrG;SACF;QACD,MAAM,EAAE,aAAa;QACrB,iFAAiF;QACjF,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE;oBACL,IAAI,EAAE,+BAA+B;oBACrC,MAAM,EAAE,iCAAiC;oBACzC,OAAO,EAAE,kCAAkC;oBAC3C,IAAI,EAAE,+BAA+B;oBACrC,SAAS,EAAE,oCAAoC;iBAChD;gBACD,EAAE,EAAE,gBAAgB;aACrB;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IAED,wEAAwE;IACxE;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,qDAAqD;QAC5D,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,cAAc;QAC3B,qBAAqB,EAAE,IAAI;QAC3B,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,WAAW;QAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,EAAE;QACX,8EAA8E;QAC9E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,kBAAkB;gBAC1B,KAAK,EAAE;oBACL,WAAW,EAAE,sBAAsB;oBACnC,WAAW,EAAE,sBAAsB;iBACpC;gBACD,EAAE,EAAE,aAAa;aAClB;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE,CAAC,GAAG,iBAAiB,EAAE,EAAE,GAAG,sBAAsB,EAAE,CAAC;QACtE,YAAY,EAAE,cAAc;QAC5B,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,8EAA8E;QACrF,WAAW,EACT,qJAAqJ;QACvJ,WAAW,EAAE,aAAa;QAC1B,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,eAAe;QACvB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,+DAA+D;QACtE,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,iBAAiB;QAC9B,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,eAAe;QACvB,4EAA4E;QAC5E,0CAA0C;QAC1C,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,uEAAuE;QAC9E,WAAW,EAAE,gFAAgF;QAC7F,WAAW,EAAE,aAAa;QAC1B,qBAAqB,EAAE,IAAI;QAC3B,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,WAAW;QAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,kBAAkB;gBAC1B,KAAK,EAAE;oBACL,WAAW,EAAE,sBAAsB;oBACnC,WAAW,EAAE,sBAAsB;iBACpC;gBACD,EAAE,EAAE,aAAa;aAClB;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE,CAAC,GAAG,iBAAiB,EAAE,EAAE,GAAG,sBAAsB,EAAE,CAAC;QACtE,YAAY,EAAE,cAAc;QAC5B,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,6DAA6D;QACpE,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,WAAW;QACxB,qBAAqB,EAAE,KAAK;QAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,sCAAsC;gBAC/C,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,OAAO;aACjB;SACF;QACD,mEAAmE;QACnE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7E,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,EAAE,EAAE,EAAE,uBAAuB,EAAE,GAAG,EAAE,wBAAwB,EAAE;gBACrE,EAAE,EAAE,uBAAuB;aAC5B;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,gEAAgE;QAChE,eAAe,EAAE;YACf;gBACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI;gBACvC,YAAY,EAAE,EAAE,mCAAmC,EAAE,QAAQ,EAAE;aAChE;SACF;QACD,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,oEAAoE;QAC3E,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE,gBAAgB;QAC7B,qBAAqB,EAAE,IAAI;QAC3B,cAAc,EAAE,WAAW;QAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;QAChD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,kBAAkB;gBAC1B,KAAK,EAAE;oBACL,WAAW,EAAE,sBAAsB;oBACnC,WAAW,EAAE,sBAAsB;iBACpC;gBACD,EAAE,EAAE,sBAAsB;aAC3B;SACF;QACD,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC,UAAU,CAAC;QAC9C,YAAY,EAAE,gBAAgB;QAC9B,eAAe,EAAE,OAAO;QACxB,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA0C;IAC7E,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;IAC/D,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IACzE,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE;CACjE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
2
|
<manifest>
|
|
3
|
-
<control namespace="{{namespace}}" constructor="{{componentName}}" version="1.0.0" display-name-key="{{namespace}}_{{componentName}}" description-key="{{namespace}}_{{componentName}}_Desc" control-type="
|
|
3
|
+
<control namespace="{{namespace}}" constructor="{{componentName}}" version="1.0.0" display-name-key="{{namespace}}_{{componentName}}" description-key="{{namespace}}_{{componentName}}_Desc" control-type="virtual">
|
|
4
4
|
<data-set name="dataset" display-name-key="Dataset_Display_Key">
|
|
5
5
|
</data-set>
|
|
6
6
|
<resources>
|
|
7
7
|
<code path="index.ts" order="1"/>
|
|
8
|
-
<platform-library name="React" version="
|
|
9
|
-
<platform-library name="Fluent" version="8.
|
|
8
|
+
<platform-library name="React" version="18.2.0" />
|
|
9
|
+
<platform-library name="Fluent" version="8.115.6" />
|
|
10
10
|
<resx path="strings/{{componentName}}.1033.resx" version="1.0.0" />
|
|
11
11
|
</resources>
|
|
12
12
|
<feature-usage>
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# {{componentName}} (PCF dataset control)
|
|
2
2
|
|
|
3
3
|
A PowerApps Component Framework **dataset** control — binds to a grid/view and renders the records
|
|
4
|
-
with a Fluent UI v8
|
|
4
|
+
with `@dataverse-kit/grid-kit`'s `<DataGrid>`: a Fluent UI v8 grid with sorting, client-side
|
|
5
|
+
filtering, a column chooser, and search.
|
|
6
|
+
|
|
7
|
+
> **Model-driven apps only.** This control declares a **React 18** platform library (grid-kit's
|
|
8
|
+
> peer floor), so it targets model-driven apps — it is **not** Canvas-app compatible (Canvas is
|
|
9
|
+
> React-16-locked). For a Canvas-compatible field control, use the `pcf-field` template.
|
|
5
10
|
|
|
6
11
|
## Develop
|
|
7
12
|
|
|
@@ -13,7 +18,9 @@ npm run refreshTypes # regenerate generated/ManifestTypes after manifest edits
|
|
|
13
18
|
```
|
|
14
19
|
|
|
15
20
|
Bind it to a dataset (subgrid/view) on a form. Customize columns/rendering in
|
|
16
|
-
`{{componentName}}Component.tsx`.
|
|
21
|
+
`{{componentName}}Component.tsx`. Every column renders as text (the formatted value), so client
|
|
22
|
+
sort/filter is lexical on the displayed string; map `dataset.columns[].dataType` to a grid-kit
|
|
23
|
+
`rendererType` (currency / date / optionset / …) for type-aware cells and correct ordering.
|
|
17
24
|
|
|
18
25
|
## Namespace / constructor
|
|
19
26
|
|
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
import { IInputs, IOutputs } from "./generated/ManifestTypes";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import * as ReactDOM from "react-dom";
|
|
4
3
|
import { {{componentName}}Component } from "./{{componentName}}Component";
|
|
5
4
|
|
|
6
|
-
export class {{componentName}} implements ComponentFramework.
|
|
7
|
-
private _container: HTMLDivElement;
|
|
8
|
-
private _context: ComponentFramework.Context<IInputs>;
|
|
9
|
-
|
|
5
|
+
export class {{componentName}} implements ComponentFramework.ReactControl<IInputs, IOutputs> {
|
|
10
6
|
constructor() {}
|
|
11
7
|
|
|
12
8
|
public init(
|
|
13
9
|
context: ComponentFramework.Context<IInputs>,
|
|
14
10
|
notifyOutputChanged: () => void,
|
|
15
|
-
state: ComponentFramework.Dictionary
|
|
16
|
-
container: HTMLDivElement
|
|
11
|
+
state: ComponentFramework.Dictionary
|
|
17
12
|
): void {
|
|
18
|
-
|
|
19
|
-
this._container = container;
|
|
13
|
+
// Virtual control: the platform owns the React root — nothing to render here.
|
|
20
14
|
}
|
|
21
15
|
|
|
22
|
-
public updateView(context: ComponentFramework.Context<IInputs>):
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
dataset: context.parameters.dataset
|
|
27
|
-
}),
|
|
28
|
-
this._container
|
|
29
|
-
);
|
|
16
|
+
public updateView(context: ComponentFramework.Context<IInputs>): React.ReactElement {
|
|
17
|
+
return React.createElement({{componentName}}Component, {
|
|
18
|
+
dataset: context.parameters.dataset,
|
|
19
|
+
});
|
|
30
20
|
}
|
|
31
21
|
|
|
32
22
|
public getOutputs(): IOutputs {
|
|
@@ -34,6 +24,6 @@ export class {{componentName}} implements ComponentFramework.StandardControl<IIn
|
|
|
34
24
|
}
|
|
35
25
|
|
|
36
26
|
public destroy(): void {
|
|
37
|
-
|
|
27
|
+
// Cleanup handled by the platform.
|
|
38
28
|
}
|
|
39
29
|
}
|
|
@@ -10,23 +10,25 @@
|
|
|
10
10
|
"refreshTypes": "pcf-scripts refreshTypes"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@
|
|
14
|
-
"@
|
|
15
|
-
"
|
|
16
|
-
"
|
|
13
|
+
"@dataverse-kit/grid-kit": "^0.6.0",
|
|
14
|
+
"@fluentui/react": "^8.120.0",
|
|
15
|
+
"@khester/dynamics-cell-renderers": "^1.1.0",
|
|
16
|
+
"@khester/dynamics-utils": "^1.2.0",
|
|
17
|
+
"@types/powerapps-component-framework": "^1.3.18",
|
|
18
|
+
"react": "^18.2.0",
|
|
19
|
+
"react-dom": "^18.2.0"
|
|
17
20
|
},
|
|
18
21
|
"devDependencies": {
|
|
19
22
|
"@microsoft/eslint-config-spfx": "^1.18.2",
|
|
20
23
|
"@types/node": "^18.16.9",
|
|
21
|
-
"@types/react": "^
|
|
22
|
-
"@types/react-dom": "^
|
|
24
|
+
"@types/react": "^18.2.0",
|
|
25
|
+
"@types/react-dom": "^18.2.0",
|
|
23
26
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
24
|
-
"pcf-scripts": "^1
|
|
25
|
-
"pcf-start": "^1
|
|
26
|
-
"typescript": "^
|
|
27
|
+
"pcf-scripts": "^1",
|
|
28
|
+
"pcf-start": "^1",
|
|
29
|
+
"typescript": "^5.3.0"
|
|
27
30
|
},
|
|
28
31
|
"browserslist": [
|
|
29
|
-
"last 2 versions"
|
|
30
|
-
"ie 11"
|
|
32
|
+
"last 2 versions"
|
|
31
33
|
]
|
|
32
|
-
}
|
|
34
|
+
}
|
|
@@ -20,28 +20,8 @@
|
|
|
20
20
|
<value>{{componentName}} control built with Dynamics UI Kit</value>
|
|
21
21
|
<comment>Description of the control</comment>
|
|
22
22
|
</data>
|
|
23
|
-
<data name="
|
|
24
|
-
<value>
|
|
25
|
-
<comment>
|
|
23
|
+
<data name="Dataset_Display_Key" xml:space="preserve">
|
|
24
|
+
<value>Records</value>
|
|
25
|
+
<comment>Display name for the bound dataset</comment>
|
|
26
26
|
</data>
|
|
27
|
-
|
|
28
|
-
<value>The value of the control</value>
|
|
29
|
-
<comment>Description of the Value property</comment>
|
|
30
|
-
</data>
|
|
31
|
-
<data name="Placeholder" xml:space="preserve">
|
|
32
|
-
<value>Placeholder</value>
|
|
33
|
-
<comment>Placeholder property</comment>
|
|
34
|
-
</data>
|
|
35
|
-
<data name="Placeholder_Desc" xml:space="preserve">
|
|
36
|
-
<value>Placeholder text for the control</value>
|
|
37
|
-
<comment>Description of the Placeholder property</comment>
|
|
38
|
-
</data>
|
|
39
|
-
<data name="Disabled" xml:space="preserve">
|
|
40
|
-
<value>Disabled</value>
|
|
41
|
-
<comment>Disabled property</comment>
|
|
42
|
-
</data>
|
|
43
|
-
<data name="Disabled_Desc" xml:space="preserve">
|
|
44
|
-
<value>Whether the control is disabled</value>
|
|
45
|
-
<comment>Description of the Disabled property</comment>
|
|
46
|
-
</data>
|
|
47
|
-
</root>
|
|
27
|
+
</root>
|
|
@@ -1,39 +1,89 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DetailsList, IColumn, SelectionMode } from '@fluentui/react/lib/DetailsList';
|
|
3
2
|
import { initializeIcons } from '@fluentui/react/lib/Icons';
|
|
3
|
+
import { ReadOnlyGrid, createCellRegistry } from '@dataverse-kit/grid-kit';
|
|
4
|
+
import type { ColumnDef, GridSortState } from '@dataverse-kit/grid-kit';
|
|
4
5
|
|
|
5
|
-
// Initialize Fluent UI icons
|
|
6
|
+
// Initialize Fluent UI icons — the grid toolbar / column-chooser / filter use them.
|
|
6
7
|
initializeIcons();
|
|
7
8
|
|
|
8
9
|
export interface I{{componentName}}ComponentProps {
|
|
9
10
|
dataset: ComponentFramework.PropertyTypes.DataSet;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
interface Row extends Record<string, unknown> {
|
|
14
|
+
key: string;
|
|
15
|
+
}
|
|
13
16
|
|
|
14
17
|
export const {{componentName}}Component: React.FC<I{{componentName}}ComponentProps> = ({ dataset }) => {
|
|
15
|
-
const
|
|
18
|
+
const registry = React.useMemo(() => createCellRegistry(), []);
|
|
19
|
+
const [search, setSearch] = React.useState('');
|
|
20
|
+
const [sort, setSort] = React.useState<GridSortState | undefined>(undefined);
|
|
21
|
+
|
|
22
|
+
// Map the bound dataset's columns → grid-kit ColumnDef[]. Every column renders as
|
|
23
|
+
// `text` (the formatted Dataverse value), so client sort/filter is lexical on the
|
|
24
|
+
// displayed string. For type-aware cells + correct numeric/date ordering, map each
|
|
25
|
+
// `dataset.columns[].dataType` to a rendererType (currency / date / optionset / …)
|
|
26
|
+
// and feed the raw `record.getValue(col.name)` alongside the formatted value.
|
|
27
|
+
// (`.filter()` returns a fresh array, so `.sort()` never mutates dataset.columns.)
|
|
28
|
+
const columns: ColumnDef<Row>[] = dataset.columns
|
|
16
29
|
.filter((c) => !c.isHidden)
|
|
17
30
|
.sort((a, b) => a.order - b.order)
|
|
18
31
|
.map((c) => ({
|
|
19
32
|
key: c.name,
|
|
20
|
-
name: c.displayName,
|
|
21
33
|
fieldName: c.name,
|
|
34
|
+
name: c.displayName,
|
|
35
|
+
rendererType: 'text',
|
|
22
36
|
minWidth: 100,
|
|
23
37
|
maxWidth: 240,
|
|
24
38
|
isResizable: true,
|
|
39
|
+
isSortable: true,
|
|
40
|
+
isFilterable: true,
|
|
25
41
|
}));
|
|
26
42
|
|
|
43
|
+
// Rows are rebuilt every render: the dataset is the change signal, and PCF can
|
|
44
|
+
// mutate `records`/`sortedRecordIds` in place on refresh, so a reference-keyed memo
|
|
45
|
+
// could go stale. The map is cheap for a page-scoped subgrid. `key` is written LAST
|
|
46
|
+
// so a column whose logical name is "key" can't clobber the record id used by getKey.
|
|
27
47
|
const items: Row[] = dataset.sortedRecordIds.map((id) => {
|
|
28
48
|
const record = dataset.records[id];
|
|
29
49
|
const row: Row = { key: id };
|
|
30
50
|
for (const col of dataset.columns) {
|
|
31
51
|
row[col.name] = record.getFormattedValue(col.name);
|
|
32
52
|
}
|
|
53
|
+
row.key = id;
|
|
33
54
|
return row;
|
|
34
55
|
});
|
|
35
56
|
|
|
57
|
+
// grid-kit's toolbar `onSearch` only reports the term — the host owns filtering.
|
|
58
|
+
// Substring-match across every column's formatted value.
|
|
59
|
+
const q = search.trim().toLowerCase();
|
|
60
|
+
const filtered = q
|
|
61
|
+
? items.filter((row) =>
|
|
62
|
+
columns.some((c) => String(row[c.fieldName] ?? '').toLowerCase().includes(q)),
|
|
63
|
+
)
|
|
64
|
+
: items;
|
|
65
|
+
|
|
66
|
+
// grid-kit sort is controlled — `onSortChange` reports the header click; the host
|
|
67
|
+
// reorders nothing. Sort the (filtered) rows by the formatted string.
|
|
68
|
+
const sorted = sort
|
|
69
|
+
? [...filtered].sort(
|
|
70
|
+
(a, b) =>
|
|
71
|
+
String(a[sort.fieldName] ?? '').localeCompare(String(b[sort.fieldName] ?? '')) *
|
|
72
|
+
(sort.direction === 'desc' ? -1 : 1),
|
|
73
|
+
)
|
|
74
|
+
: filtered;
|
|
75
|
+
|
|
36
76
|
return (
|
|
37
|
-
<
|
|
77
|
+
<ReadOnlyGrid<Row>
|
|
78
|
+
items={sorted}
|
|
79
|
+
columns={columns}
|
|
80
|
+
registry={registry}
|
|
81
|
+
getKey={(r) => r.key}
|
|
82
|
+
sort={sort}
|
|
83
|
+
onSortChange={(fieldName, direction) => setSort({ fieldName, direction })}
|
|
84
|
+
columnChooser
|
|
85
|
+
filterBuilder
|
|
86
|
+
toolbar={{ showSearch: true, searchPlaceholder: 'Search', onSearch: setSearch }}
|
|
87
|
+
/>
|
|
38
88
|
);
|
|
39
89
|
};
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"refreshTypes": "pcf-scripts refreshTypes"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@fluentui/react": "^8.
|
|
14
|
-
"@types/powerapps-component-framework": "^1.3.
|
|
13
|
+
"@fluentui/react": "^8.120.0",
|
|
14
|
+
"@types/powerapps-component-framework": "^1.3.18",
|
|
15
15
|
"react": "^16.14.0",
|
|
16
16
|
"react-dom": "^16.14.0"
|
|
17
17
|
},
|
|
@@ -21,12 +21,11 @@
|
|
|
21
21
|
"@types/react": "^16.14.34",
|
|
22
22
|
"@types/react-dom": "^16.9.17",
|
|
23
23
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
24
|
-
"pcf-scripts": "^1
|
|
25
|
-
"pcf-start": "^1
|
|
26
|
-
"typescript": "^
|
|
24
|
+
"pcf-scripts": "^1",
|
|
25
|
+
"pcf-start": "^1",
|
|
26
|
+
"typescript": "^5.3.0"
|
|
27
27
|
},
|
|
28
28
|
"browserslist": [
|
|
29
|
-
"last 2 versions"
|
|
30
|
-
"ie 11"
|
|
29
|
+
"last 2 versions"
|
|
31
30
|
]
|
|
32
|
-
}
|
|
31
|
+
}
|