@microsoft/generator-sharepoint 1.15.0-beta.1 → 1.15.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.
Files changed (65) hide show
  1. package/lib/common/BaseGenerator.js +5 -1
  2. package/lib/common/JsonManager.js +5 -1
  3. package/lib/common/ServeJsonManager.js +5 -1
  4. package/lib/common/YeomanConfiguration.d.ts +2 -0
  5. package/lib/common/YeomanConfiguration.d.ts.map +1 -1
  6. package/lib/common/YeomanConfiguration.js +8 -1
  7. package/lib/common/dependencies.json +82 -52
  8. package/lib/common/spsay.d.ts +1 -1
  9. package/lib/common/spsay.d.ts.map +1 -1
  10. package/lib/common/spsay.js +9 -9
  11. package/lib/common/utilities.d.ts.map +1 -1
  12. package/lib/common/utilities.js +10 -2
  13. package/lib/generators/adaptiveCardExtension/index.js +6 -2
  14. package/lib/generators/adaptiveCardExtension/templates/manifestTemplate/baseTemplate/{componentClassName}.manifest.json +3 -3
  15. package/lib/generators/adaptiveCardExtension/templates/manifestTemplate/imageTemplate/{componentClassName}.manifest.json +1 -2
  16. package/lib/generators/adaptiveCardExtension/templates/none/quickView/QuickView.ts +1 -1
  17. package/lib/generators/app/index.d.ts.map +1 -1
  18. package/lib/generators/app/index.js +9 -2
  19. package/lib/generators/applicationCustomizer/index.js +6 -2
  20. package/lib/generators/applicationCustomizer/templates/none/{componentClassName}.ts +3 -1
  21. package/lib/generators/commandSet/index.js +6 -2
  22. package/lib/generators/commandSet/templates/none/{componentClassName}.ts +7 -5
  23. package/lib/generators/component/BaseComponentGenerator.d.ts +3 -0
  24. package/lib/generators/component/BaseComponentGenerator.d.ts.map +1 -1
  25. package/lib/generators/component/BaseComponentGenerator.js +26 -1
  26. package/lib/generators/component/index.js +5 -1
  27. package/lib/generators/component/templates/eslint/default.eslintrc.js +5 -0
  28. package/lib/generators/component/templates/eslint/react.eslintrc.js +5 -0
  29. package/lib/generators/extension/BaseExtensionGenerator.d.ts +2 -1
  30. package/lib/generators/extension/BaseExtensionGenerator.d.ts.map +1 -1
  31. package/lib/generators/extension/BaseExtensionGenerator.js +13 -4
  32. package/lib/generators/extension/index.d.ts +2 -1
  33. package/lib/generators/extension/index.d.ts.map +1 -1
  34. package/lib/generators/extension/index.js +12 -2
  35. package/lib/generators/fieldCustomizer/index.js +6 -2
  36. package/lib/generators/fieldCustomizer/templates/minimal/{componentClassName}.module.scss +1 -1
  37. package/lib/generators/fieldCustomizer/templates/minimal/{componentClassName}.ts +1 -1
  38. package/lib/generators/fieldCustomizer/templates/none/{componentClassName}.module.scss +1 -1
  39. package/lib/generators/fieldCustomizer/templates/none/{componentClassName}.ts +1 -1
  40. package/lib/generators/fieldCustomizer/templates/react/components/{componentName}.module.scss +1 -1
  41. package/lib/generators/fieldCustomizer/templates/react/components/{componentName}.tsx +1 -1
  42. package/lib/generators/formCustomizer/index.d.ts +24 -0
  43. package/lib/generators/formCustomizer/index.d.ts.map +1 -0
  44. package/lib/generators/formCustomizer/index.js +142 -0
  45. package/lib/generators/formCustomizer/templates/base/{componentClassName}.manifest.json +17 -0
  46. package/lib/generators/formCustomizer/templates/loc/en-us.js +7 -0
  47. package/lib/generators/formCustomizer/templates/loc/myStrings.d.ts +10 -0
  48. package/lib/generators/formCustomizer/templates/none/{componentClassName}.module.scss +5 -0
  49. package/lib/generators/formCustomizer/templates/none/{componentClassName}.ts +53 -0
  50. package/lib/generators/formCustomizer/templates/react/components/{componentName}.module.scss +5 -0
  51. package/lib/generators/formCustomizer/templates/react/components/{componentName}.tsx +28 -0
  52. package/lib/generators/formCustomizer/templates/react/{componentClassName}.ts +64 -0
  53. package/lib/generators/library/index.js +6 -2
  54. package/lib/generators/searchQueryModifier/index.js +6 -2
  55. package/lib/generators/solution/index.js +6 -1
  56. package/lib/generators/solution/templates/base/.vscode/settings.json +13 -0
  57. package/lib/generators/solution/templates/spo/tsconfig.json +1 -1
  58. package/lib/generators/webpart/index.js +6 -2
  59. package/lib/generators/webpart/initial.teamsManifest.json +6 -0
  60. package/lib/generators/webpart/templates/none/{componentClassName}.ts +6 -3
  61. package/lib/generators/webpart/templates/react/components/{componentName}.tsx +8 -8
  62. package/lib/generators/webpart/templates/react/{componentClassName}.ts +6 -3
  63. package/package.json +4 -4
  64. package/lib/generators/solution/templates/gulp/tslint.json +0 -29
  65. package/lib/generators/solution/templates/heft/tslint.json +0 -7
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { Log, FormDisplayMode } from '@microsoft/sp-core-library';
3
+ import { FormCustomizerContext } from '@microsoft/sp-listview-extensibility';
4
+
5
+ import styles from './<%= componentName %>.module.scss';
6
+
7
+ export interface I<%= componentName %>Props {
8
+ context: FormCustomizerContext;
9
+ displayMode: FormDisplayMode;
10
+ onSave: () => void;
11
+ onClose: () => void;
12
+ }
13
+
14
+ const LOG_SOURCE: string = '<%= componentName %>';
15
+
16
+ export default class <%= componentName %> extends React.Component<I<%= componentName %>Props, {}> {
17
+ public componentDidMount(): void {
18
+ Log.info(LOG_SOURCE, 'React Element: <%= componentName %> mounted');
19
+ }
20
+
21
+ public componentWillUnmount(): void {
22
+ Log.info(LOG_SOURCE, 'React Element: <%= componentName %> unmounted');
23
+ }
24
+
25
+ public render(): React.ReactElement<{}> {
26
+ return <div className={styles.<%= componentNameCamelCase %>} />;
27
+ }
28
+ }
@@ -0,0 +1,64 @@
1
+ import * as React from 'react';
2
+ import * as ReactDOM from 'react-dom';
3
+
4
+ import { Log } from '@microsoft/sp-core-library';
5
+ import {
6
+ BaseFormCustomizer
7
+ } from '@microsoft/sp-listview-extensibility';
8
+
9
+ import <%= componentName %>, { I<%= componentName %>Props } from './components/<%= componentName %>';
10
+
11
+ /**
12
+ * If your field customizer uses the ClientSideComponentProperties JSON input,
13
+ * it will be deserialized into the BaseExtension.properties object.
14
+ * You can define an interface to describe it.
15
+ */
16
+ export interface I<%= componentClassName %>Properties {
17
+ // This is an example; replace with your own property
18
+ sampleText?: string;
19
+ }
20
+
21
+ const LOG_SOURCE: string = '<%= componentClassName %>';
22
+
23
+ export default class <%= componentClassName %>
24
+ extends BaseFormCustomizer<I<%= componentClassName %>Properties> {
25
+
26
+ public onInit(): Promise<void> {
27
+ // Add your custom initialization to this method. The framework will wait
28
+ // for the returned promise to resolve before rendering the form.
29
+ Log.info(LOG_SOURCE, 'Activated <%= componentClassName %> with properties:');
30
+ Log.info(LOG_SOURCE, JSON.stringify(this.properties, undefined, 2));
31
+ return Promise.resolve();
32
+ }
33
+
34
+ public render(): void {
35
+ // Use this method to perform your custom rendering.
36
+
37
+ const <%= componentNameCamelCase %>: React.ReactElement<{}> =
38
+ React.createElement(<%= componentName %>, {
39
+ context: this.context,
40
+ displayMode: this.displayMode,
41
+ onSave: this._onSave,
42
+ onClose: this._onClose
43
+ } as I<%= componentName %>Props);
44
+
45
+ ReactDOM.render(<%= componentNameCamelCase %>, this.domElement);
46
+ }
47
+
48
+ public onDispose(): void {
49
+ // This method should be used to free any resources that were allocated during rendering.
50
+ ReactDOM.unmountComponentAtNode(this.domElement);
51
+ super.onDispose();
52
+ }
53
+
54
+ private _onSave = (): void => {
55
+
56
+ // You MUST call this.formSaved() after you save the form.
57
+ this.formSaved();
58
+ }
59
+
60
+ private _onClose = (): void => {
61
+ // You MUST call this.formClosed() after you close the form.
62
+ this.formClosed();
63
+ }
64
+ }
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -76,7 +80,7 @@ class LibraryGenerator extends BaseComponent.BaseComponentGenerator {
76
80
  }
77
81
  }
78
82
  end() {
79
- /* no-op */
83
+ super.end();
80
84
  }
81
85
  shouldExecute() {
82
86
  return this.config.get('environment') === 'spo' && this.config.get('componentType') === 'library';
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -76,7 +80,7 @@ class SearchQueryModifierGenerator extends BaseExtension.BaseExtensionGenerator
76
80
  }
77
81
  }
78
82
  end() {
79
- /* no-op */
83
+ super.end();
80
84
  }
81
85
  includeClientSideInstances() {
82
86
  return true;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -150,6 +154,7 @@ class SolutionGenerator extends BaseGenerator_1.BaseGenerator {
150
154
  YeomanConfiguration_1.YeomanConfiguration.environment = environment;
151
155
  YeomanConfiguration_1.YeomanConfiguration.packageManager =
152
156
  this.config.get('packageManager') || YeomanConfiguration_1.YeomanConfiguration.packageManager || 'npm';
157
+ YeomanConfiguration_1.YeomanConfiguration.useHeft = !!useHeft;
153
158
  this.config.set('solutionName', solutionName);
154
159
  this.config.set('useHeft', useHeft);
155
160
  this.config.set('environment', environment);
@@ -0,0 +1,13 @@
1
+ // Place your settings in this file to overwrite default and user settings.
2
+ {
3
+ // Configure glob patterns for excluding files and folders in the file explorer.
4
+ "files.exclude": {
5
+ "**/.git": true,
6
+ "**/.DS_Store": true,
7
+ "**/bower_components": true,
8
+ "**/coverage": true,
9
+ "**/lib-amd": true,
10
+ "src/**/*.scss.ts": true
11
+ },
12
+ "typescript.tsdk": ".\\node_modules\\typescript\\lib"
13
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "./node_modules/@microsoft/rush-stack-compiler-3.9/includes/tsconfig-web.json",
2
+ "extends": "./node_modules/@microsoft/rush-stack-compiler-4.5/includes/tsconfig-web.json",
3
3
  "compilerOptions": {
4
4
  "target": "es5",
5
5
  "forceConsistentCasingInFileNames": true,
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -80,7 +84,7 @@ class WebpartGenerator extends BaseComponent.BaseComponentGenerator {
80
84
  }
81
85
  }
82
86
  end() {
83
- /* no-op */
87
+ super.end();
84
88
  }
85
89
  shouldExecute() {
86
90
  return this.config.get('environment') === 'spo' && this.config.get('componentType') === 'webpart';
@@ -35,6 +35,12 @@
35
35
  "*.sharepoint-df.com",
36
36
  "spoppe-a.akamaihd.net",
37
37
  "spoprod-a.akamaihd.net",
38
+ "modernb.akamai.odsp.cdn.office.net",
39
+ "modernb.verizon.odsp.cdn.office.net",
40
+ "res-1-sdf.cdn.office.net",
41
+ "res-2-sdf.cdn.office.net",
42
+ "res-1.cdn.office.net",
43
+ "res-2.cdn.office.net",
38
44
  "resourceseng.blob.core.windows.net",
39
45
  "odspwebdevdeploy.blob.core.windows.net",
40
46
  "msft.spoppe.com"
@@ -72,9 +72,12 @@ export default class <%= componentClassName %> extends BaseClientSideWebPart<I<%
72
72
  const {
73
73
  semanticColors
74
74
  } = currentTheme;
75
- this.domElement.style.setProperty('--bodyText', semanticColors.bodyText);
76
- this.domElement.style.setProperty('--link', semanticColors.link);
77
- this.domElement.style.setProperty('--linkHovered', semanticColors.linkHovered);
75
+
76
+ if (semanticColors) {
77
+ this.domElement.style.setProperty('--bodyText', semanticColors.bodyText || null);
78
+ this.domElement.style.setProperty('--link', semanticColors.link || null);
79
+ this.domElement.style.setProperty('--linkHovered', semanticColors.linkHovered || null);
80
+ }
78
81
 
79
82
  }
80
83
 
@@ -24,17 +24,17 @@ export default class <%= componentName %> extends React.Component<I<%= component
24
24
  <div>
25
25
  <h3>Welcome to SharePoint Framework!</h3>
26
26
  <p>
27
- The SharePoint Framework (SPFx) is a extensibility model for Microsoft Viva, Microsoft Teams and SharePoint. It's the easiest way to extend Microsoft 365 with automatic Single Sign On, automatic hosting and industry standard tooling.
27
+ The SharePoint Framework (SPFx) is a extensibility model for Microsoft Viva, Microsoft Teams and SharePoint. It&#39;s the easiest way to extend Microsoft 365 with automatic Single Sign On, automatic hosting and industry standard tooling.
28
28
  </p>
29
29
  <h4>Learn more about SPFx development:</h4>
30
30
  <ul className={styles.links}>
31
- <li><a href="https://aka.ms/spfx" target="_blank">SharePoint Framework Overview</a></li>
32
- <li><a href="https://aka.ms/spfx-yeoman-graph" target="_blank">Use Microsoft Graph in your solution</a></li>
33
- <li><a href="https://aka.ms/spfx-yeoman-teams" target="_blank">Build for Microsoft Teams using SharePoint Framework</a></li>
34
- <li><a href="https://aka.ms/spfx-yeoman-viva" target="_blank">Build for Microsoft Viva Connections using SharePoint Framework</a></li>
35
- <li><a href="https://aka.ms/spfx-yeoman-store" target="_blank">Publish SharePoint Framework applications to the marketplace</a></li>
36
- <li><a href="https://aka.ms/spfx-yeoman-api" target="_blank">SharePoint Framework API reference</a></li>
37
- <li><a href="https://aka.ms/m365pnp" target="_blank">Microsoft 365 Developer Community</a></li>
31
+ <li><a href="https://aka.ms/spfx" target="_blank" rel="noreferrer">SharePoint Framework Overview</a></li>
32
+ <li><a href="https://aka.ms/spfx-yeoman-graph" target="_blank" rel="noreferrer">Use Microsoft Graph in your solution</a></li>
33
+ <li><a href="https://aka.ms/spfx-yeoman-teams" target="_blank" rel="noreferrer">Build for Microsoft Teams using SharePoint Framework</a></li>
34
+ <li><a href="https://aka.ms/spfx-yeoman-viva" target="_blank" rel="noreferrer">Build for Microsoft Viva Connections using SharePoint Framework</a></li>
35
+ <li><a href="https://aka.ms/spfx-yeoman-store" target="_blank" rel="noreferrer">Publish SharePoint Framework applications to the marketplace</a></li>
36
+ <li><a href="https://aka.ms/spfx-yeoman-api" target="_blank" rel="noreferrer">SharePoint Framework API reference</a></li>
37
+ <li><a href="https://aka.ms/m365pnp" target="_blank" rel="noreferrer">Microsoft 365 Developer Community</a></li>
38
38
  </ul>
39
39
  </div>
40
40
  </section>
@@ -59,9 +59,12 @@ export default class <%= componentClassName %> extends BaseClientSideWebPart<I<%
59
59
  const {
60
60
  semanticColors
61
61
  } = currentTheme;
62
- this.domElement.style.setProperty('--bodyText', semanticColors.bodyText);
63
- this.domElement.style.setProperty('--link', semanticColors.link);
64
- this.domElement.style.setProperty('--linkHovered', semanticColors.linkHovered);
62
+
63
+ if (semanticColors) {
64
+ this.domElement.style.setProperty('--bodyText', semanticColors.bodyText || null);
65
+ this.domElement.style.setProperty('--link', semanticColors.link || null);
66
+ this.domElement.style.setProperty('--linkHovered', semanticColors.linkHovered || null);
67
+ }
65
68
 
66
69
  }
67
70
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/generator-sharepoint",
3
- "version": "1.15.0-beta.1",
3
+ "version": "1.15.0",
4
4
  "description": "Yeoman generator for the SharePoint Framework",
5
5
  "scripts": {},
6
6
  "engines": {
@@ -13,13 +13,13 @@
13
13
  "homepage": "http://aka.ms/spfx",
14
14
  "main": "lib/generators/app/index.js",
15
15
  "dependencies": {
16
- "@microsoft/spfx-heft-plugins": "1.15.0-beta.1",
17
- "@rushstack/node-core-library": "3.45.0",
16
+ "@microsoft/spfx-heft-plugins": "1.15.0",
17
+ "@rushstack/node-core-library": "3.45.5",
18
18
  "colors": "~1.2.1",
19
19
  "lodash": "4.17.21",
20
20
  "update-notifier": "5.1.0",
21
21
  "uuid": "~3.1.0",
22
- "yeoman-generator": "5.4.2",
22
+ "yeoman-generator": "5.6.1",
23
23
  "yosay": "2.0.2"
24
24
  }
25
25
  }
@@ -1,29 +0,0 @@
1
- {
2
- "extends": "./node_modules/@microsoft/sp-tslint-rules/base-tslint.json",
3
- "rules": {
4
- "class-name": false,
5
- "export-name": false,
6
- "forin": false,
7
- "label-position": false,
8
- "member-access": true,
9
- "no-arg": false,
10
- "no-console": false,
11
- "no-construct": false,
12
- "no-duplicate-variable": true,
13
- "no-eval": false,
14
- "no-function-expression": true,
15
- "no-internal-module": true,
16
- "no-shadowed-variable": true,
17
- "no-switch-case-fall-through": true,
18
- "no-unnecessary-semicolons": true,
19
- "no-unused-expression": true,
20
- "no-with-statement": true,
21
- "semicolon": true,
22
- "trailing-comma": false,
23
- "typedef": false,
24
- "typedef-whitespace": false,
25
- "use-named-parameter": true,
26
- "variable-name": false,
27
- "whitespace": false
28
- }
29
- }
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "@microsoft/rush-stack-compiler-3.9/includes/tslint.json",
3
- "rules": {
4
- "no-floating-promises": false,
5
- "react-this-binding-issue": false
6
- }
7
- }