@apvee/spfx-react-toolkit 1.1.0 → 1.2.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.
Files changed (135) hide show
  1. package/README.md +52 -7217
  2. package/lib/core/context.internal.d.ts +6 -1
  3. package/lib/core/context.internal.d.ts.map +1 -1
  4. package/lib/core/context.internal.js +6 -1
  5. package/lib/core/context.internal.js.map +1 -1
  6. package/lib/core/index.d.ts +21 -0
  7. package/lib/core/index.d.ts.map +1 -1
  8. package/lib/core/index.js +21 -0
  9. package/lib/core/index.js.map +1 -1
  10. package/lib/core/provider-application-customizer.d.ts.map +1 -1
  11. package/lib/core/provider-application-customizer.js.map +1 -1
  12. package/lib/core/provider-field-customizer.d.ts.map +1 -1
  13. package/lib/core/provider-field-customizer.js.map +1 -1
  14. package/lib/core/provider-listview-commandset.d.ts.map +1 -1
  15. package/lib/core/provider-listview-commandset.js.map +1 -1
  16. package/lib/core/provider-webpart.d.ts.map +1 -1
  17. package/lib/core/provider-webpart.js.map +1 -1
  18. package/lib/core/types.d.ts +2 -0
  19. package/lib/core/types.d.ts.map +1 -1
  20. package/lib/hooks/index.d.ts +31 -0
  21. package/lib/hooks/index.d.ts.map +1 -1
  22. package/lib/hooks/index.js +31 -0
  23. package/lib/hooks/index.js.map +1 -1
  24. package/lib/hooks/useAsyncInvoke.internal.d.ts +58 -0
  25. package/lib/hooks/useAsyncInvoke.internal.d.ts.map +1 -0
  26. package/lib/hooks/useAsyncInvoke.internal.js +118 -0
  27. package/lib/hooks/useAsyncInvoke.internal.js.map +1 -0
  28. package/lib/hooks/useSPFxAadHttpClient.d.ts.map +1 -1
  29. package/lib/hooks/useSPFxAadHttpClient.js +5 -75
  30. package/lib/hooks/useSPFxAadHttpClient.js.map +1 -1
  31. package/lib/hooks/useSPFxContainerInfo.d.ts +2 -0
  32. package/lib/hooks/useSPFxContainerInfo.d.ts.map +1 -1
  33. package/lib/hooks/useSPFxContainerInfo.js +2 -0
  34. package/lib/hooks/useSPFxContainerInfo.js.map +1 -1
  35. package/lib/hooks/useSPFxDisplayMode.d.ts +4 -0
  36. package/lib/hooks/useSPFxDisplayMode.d.ts.map +1 -1
  37. package/lib/hooks/useSPFxDisplayMode.js +4 -0
  38. package/lib/hooks/useSPFxDisplayMode.js.map +1 -1
  39. package/lib/hooks/useSPFxHttpClient.d.ts +4 -0
  40. package/lib/hooks/useSPFxHttpClient.d.ts.map +1 -1
  41. package/lib/hooks/useSPFxHttpClient.js +8 -75
  42. package/lib/hooks/useSPFxHttpClient.js.map +1 -1
  43. package/lib/hooks/useSPFxMSGraphClient.d.ts.map +1 -1
  44. package/lib/hooks/useSPFxMSGraphClient.js +4 -74
  45. package/lib/hooks/useSPFxMSGraphClient.js.map +1 -1
  46. package/lib/hooks/useSPFxOneDriveAppData.d.ts +25 -0
  47. package/lib/hooks/useSPFxOneDriveAppData.d.ts.map +1 -1
  48. package/lib/hooks/useSPFxOneDriveAppData.js +121 -256
  49. package/lib/hooks/useSPFxOneDriveAppData.js.map +1 -1
  50. package/lib/hooks/useSPFxPermissions.d.ts +15 -3
  51. package/lib/hooks/useSPFxPermissions.d.ts.map +1 -1
  52. package/lib/hooks/useSPFxPermissions.js.map +1 -1
  53. package/lib/hooks/useSPFxPnPContext.d.ts +4 -0
  54. package/lib/hooks/useSPFxPnPContext.d.ts.map +1 -1
  55. package/lib/hooks/useSPFxPnPContext.js +4 -0
  56. package/lib/hooks/useSPFxPnPContext.js.map +1 -1
  57. package/lib/hooks/useSPFxPnPSearch.d.ts.map +1 -1
  58. package/lib/hooks/useSPFxPnPSearch.js +61 -48
  59. package/lib/hooks/useSPFxPnPSearch.js.map +1 -1
  60. package/lib/hooks/useSPFxSPHttpClient.d.ts.map +1 -1
  61. package/lib/hooks/useSPFxSPHttpClient.js +4 -74
  62. package/lib/hooks/useSPFxSPHttpClient.js.map +1 -1
  63. package/lib/hooks/useSPFxThemeInfo.d.ts +2 -0
  64. package/lib/hooks/useSPFxThemeInfo.d.ts.map +1 -1
  65. package/lib/hooks/useSPFxThemeInfo.js +2 -0
  66. package/lib/hooks/useSPFxThemeInfo.js.map +1 -1
  67. package/lib/index.d.ts +27 -0
  68. package/lib/index.d.ts.map +1 -1
  69. package/lib/index.js +27 -0
  70. package/lib/index.js.map +1 -1
  71. package/lib/utils/resize-observer.internal.d.ts +12 -2
  72. package/lib/utils/resize-observer.internal.d.ts.map +1 -1
  73. package/lib/utils/resize-observer.internal.js +12 -2
  74. package/lib/utils/resize-observer.internal.js.map +1 -1
  75. package/lib/utils/theme-subscription.internal.d.ts +12 -3
  76. package/lib/utils/theme-subscription.internal.d.ts.map +1 -1
  77. package/lib/utils/theme-subscription.internal.js +19 -3
  78. package/lib/utils/theme-subscription.internal.js.map +1 -1
  79. package/lib/utils/type-guards.internal.d.ts +78 -5
  80. package/lib/utils/type-guards.internal.d.ts.map +1 -1
  81. package/lib/utils/type-guards.internal.js +78 -5
  82. package/lib/utils/type-guards.internal.js.map +1 -1
  83. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts +0 -4
  84. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts.map +1 -1
  85. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js +35 -752
  86. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js.map +1 -1
  87. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.d.ts +7 -0
  88. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.d.ts.map +1 -0
  89. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js +131 -0
  90. package/lib/webparts/spFxReactToolkitTest/components/demos/HttpClientDemo.js.map +1 -0
  91. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.d.ts +8 -0
  92. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.d.ts.map +1 -0
  93. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js +158 -0
  94. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPContextDemo.js.map +1 -0
  95. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.d.ts +9 -0
  96. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.d.ts.map +1 -0
  97. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js +159 -0
  98. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.js.map +1 -0
  99. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.d.ts +10 -0
  100. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.d.ts.map +1 -0
  101. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js +141 -0
  102. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.js.map +1 -0
  103. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.d.ts +6 -0
  104. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.d.ts.map +1 -0
  105. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js +62 -0
  106. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.js.map +1 -0
  107. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.d.ts +6 -0
  108. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.d.ts.map +1 -0
  109. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js +98 -0
  110. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.js.map +1 -0
  111. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.d.ts +6 -0
  112. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.d.ts.map +1 -0
  113. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js +45 -0
  114. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.js.map +1 -0
  115. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.d.ts +6 -0
  116. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.d.ts.map +1 -0
  117. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js +134 -0
  118. package/lib/webparts/spFxReactToolkitTest/components/demos/PnPSearchSuggestionsDemo.js.map +1 -0
  119. package/lib/webparts/spFxReactToolkitTest/components/demos/index.d.ts +13 -0
  120. package/lib/webparts/spFxReactToolkitTest/components/demos/index.d.ts.map +1 -0
  121. package/lib/webparts/spFxReactToolkitTest/components/demos/index.js +18 -0
  122. package/lib/webparts/spFxReactToolkitTest/components/demos/index.js.map +1 -0
  123. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.d.ts +18 -0
  124. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.d.ts.map +1 -0
  125. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js +17 -0
  126. package/lib/webparts/spFxReactToolkitTest/components/shared/InfoRow.js.map +1 -0
  127. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.d.ts +16 -0
  128. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.d.ts.map +1 -0
  129. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js +14 -0
  130. package/lib/webparts/spFxReactToolkitTest/components/shared/StatusBadge.js.map +1 -0
  131. package/lib/webparts/spFxReactToolkitTest/components/shared/index.d.ts +6 -0
  132. package/lib/webparts/spFxReactToolkitTest/components/shared/index.d.ts.map +1 -0
  133. package/lib/webparts/spFxReactToolkitTest/components/shared/index.js +6 -0
  134. package/lib/webparts/spFxReactToolkitTest/components/shared/index.js.map +1 -0
  135. package/package.json +7 -7
@@ -0,0 +1,159 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import * as React from 'react';
38
+ import { Stack, TextField, PrimaryButton, DefaultButton, MessageBar, Separator, Label, Icon, } from '@fluentui/react';
39
+ import { useSPFxPnPList } from '../../../../hooks';
40
+ import '@pnp/sp/webs';
41
+ import '@pnp/sp/lists';
42
+ import '@pnp/sp/items';
43
+ /**
44
+ * Example 7: useSPFxPnPList - CRUD Operations
45
+ */
46
+ export var PnPListDemo = function () {
47
+ var _a = React.useState(''), listTitle = _a[0], setListTitle = _a[1];
48
+ var _b = React.useState(''), newTitle = _b[0], setNewTitle = _b[1];
49
+ var _c = React.useState(null), editingId = _c[0], setEditingId = _c[1];
50
+ var _d = React.useState(''), editTitle = _d[0], setEditTitle = _d[1];
51
+ var _e = useSPFxPnPList(listTitle, { pageSize: 10 }), query = _e.query, items = _e.items, loading = _e.loading, error = _e.error, isEmpty = _e.isEmpty, hasMore = _e.hasMore, loadMore = _e.loadMore, clearError = _e.clearError, create = _e.create, update = _e.update, remove = _e.remove;
52
+ var handleLoadList = React.useCallback(function () {
53
+ query(function (q) { return q.select('Id', 'Title').orderBy('Id', false); }).catch(function (err) { return console.error('Load error:', err); });
54
+ }, [query]);
55
+ var handleCreate = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
56
+ var err_1;
57
+ return __generator(this, function (_a) {
58
+ switch (_a.label) {
59
+ case 0:
60
+ if (!newTitle || !listTitle)
61
+ return [2 /*return*/];
62
+ _a.label = 1;
63
+ case 1:
64
+ _a.trys.push([1, 3, , 4]);
65
+ return [4 /*yield*/, create({ Title: newTitle })];
66
+ case 2:
67
+ _a.sent();
68
+ setNewTitle('');
69
+ return [3 /*break*/, 4];
70
+ case 3:
71
+ err_1 = _a.sent();
72
+ console.error('Create error:', err_1);
73
+ return [3 /*break*/, 4];
74
+ case 4: return [2 /*return*/];
75
+ }
76
+ });
77
+ }); }, [create, newTitle, listTitle]);
78
+ var handleUpdate = React.useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
79
+ var err_2;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0:
83
+ if (!editTitle)
84
+ return [2 /*return*/];
85
+ _a.label = 1;
86
+ case 1:
87
+ _a.trys.push([1, 3, , 4]);
88
+ return [4 /*yield*/, update(id, { Title: editTitle })];
89
+ case 2:
90
+ _a.sent();
91
+ setEditingId(null);
92
+ setEditTitle('');
93
+ return [3 /*break*/, 4];
94
+ case 3:
95
+ err_2 = _a.sent();
96
+ console.error('Update error:', err_2);
97
+ return [3 /*break*/, 4];
98
+ case 4: return [2 /*return*/];
99
+ }
100
+ });
101
+ }); }, [update, editTitle]);
102
+ var handleDelete = React.useCallback(function (id) { return __awaiter(void 0, void 0, void 0, function () {
103
+ var err_3;
104
+ return __generator(this, function (_a) {
105
+ switch (_a.label) {
106
+ case 0:
107
+ if (!confirm('Delete this item?'))
108
+ return [2 /*return*/];
109
+ _a.label = 1;
110
+ case 1:
111
+ _a.trys.push([1, 3, , 4]);
112
+ return [4 /*yield*/, remove(id)];
113
+ case 2:
114
+ _a.sent();
115
+ return [3 /*break*/, 4];
116
+ case 3:
117
+ err_3 = _a.sent();
118
+ console.error('Delete error:', err_3);
119
+ return [3 /*break*/, 4];
120
+ case 4: return [2 /*return*/];
121
+ }
122
+ });
123
+ }); }, [remove]);
124
+ return (React.createElement(Stack, { tokens: { childrenGap: 10 }, styles: { root: { padding: '16px', border: '1px solid #edebe9', borderRadius: '4px' } } },
125
+ React.createElement("h3", null,
126
+ React.createElement(Icon, { iconName: "BulletedList", style: { marginRight: '8px' } }),
127
+ "Example 3: useSPFxPnPList - CRUD Operations"),
128
+ React.createElement(Separator, null),
129
+ React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 6 } },
130
+ React.createElement(TextField, { label: "List Title", value: listTitle, onChange: function (_, newValue) { return setListTitle(newValue !== null && newValue !== void 0 ? newValue : ''); }, placeholder: "e.g., Site Pages", styles: { root: { flexGrow: 1 } } }),
131
+ React.createElement(PrimaryButton, { text: "Load", onClick: handleLoadList, disabled: !listTitle || loading, styles: { root: { marginTop: '28px' } } })),
132
+ error && (React.createElement(MessageBar, { onDismiss: clearError }, error.message)),
133
+ listTitle && (React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 6 }, styles: { root: { padding: '8px', backgroundColor: '#f3f2f1', borderRadius: '4px' } } },
134
+ React.createElement(TextField, { value: newTitle, onChange: function (_, newValue) { return setNewTitle(newValue !== null && newValue !== void 0 ? newValue : ''); }, placeholder: "New item title...", styles: { root: { flexGrow: 1 } } }),
135
+ React.createElement(PrimaryButton, { text: "Create", onClick: handleCreate, disabled: !newTitle || loading }))),
136
+ loading && React.createElement(MessageBar, null, "Loading..."),
137
+ isEmpty && !loading && React.createElement(MessageBar, null, "No items found."),
138
+ items.length > 0 && (React.createElement(Stack, { tokens: { childrenGap: 3 } },
139
+ React.createElement(Label, null,
140
+ "Items (",
141
+ items.length,
142
+ "):"),
143
+ items.map(function (item) { return (React.createElement(Stack, { key: item.Id, horizontal: true, tokens: { childrenGap: 6 }, styles: { root: { padding: '6px', backgroundColor: '#faf9f8', borderRadius: '4px' } } }, editingId === item.Id ? (React.createElement(React.Fragment, null,
144
+ React.createElement(TextField, { value: editTitle, onChange: function (_, v) { return setEditTitle(v !== null && v !== void 0 ? v : ''); }, styles: { root: { flexGrow: 1 } } }),
145
+ React.createElement(DefaultButton, { text: "Save", onClick: function () { return handleUpdate(item.Id); } }),
146
+ React.createElement(DefaultButton, { text: "Cancel", onClick: function () { setEditingId(null); setEditTitle(''); } }))) : (React.createElement(React.Fragment, null,
147
+ React.createElement("div", { style: { flexGrow: 1 } },
148
+ "#",
149
+ item.Id,
150
+ " - ",
151
+ item.Title),
152
+ React.createElement(DefaultButton, { text: "Edit", onClick: function () { setEditingId(item.Id); setEditTitle(item.Title); } }),
153
+ React.createElement(DefaultButton, { text: "Delete", onClick: function () { return handleDelete(item.Id); } }))))); }),
154
+ hasMore && React.createElement(PrimaryButton, { text: "Load More", onClick: loadMore, disabled: loading }))),
155
+ React.createElement(Label, null,
156
+ React.createElement(Icon, { iconName: "InfoSolid", style: { marginRight: '4px', color: '#0078d4' } }),
157
+ "Complete CRUD with auto-refetch. Try with \"Site Pages\" or \"Documents\".")));
158
+ };
159
+ //# sourceMappingURL=PnPListDemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPListDemo.js","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPListDemo.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import '@pnp/sp/webs';
3
+ import '@pnp/sp/lists';
4
+ import '@pnp/sp/site-users';
5
+ /**
6
+ * Example 2: useSPFxPnP
7
+ * Shows invoke() for single operations and batch() for multiple operations
8
+ */
9
+ export declare const PnPOperationsDemo: React.FC;
10
+ //# sourceMappingURL=PnPOperationsDemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPOperationsDemo.d.ts","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAgHrC,CAAC"}
@@ -0,0 +1,141 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import * as React from 'react';
38
+ import { Stack, PrimaryButton, MessageBar, MessageBarType, Separator, Label, Icon, } from '@fluentui/react';
39
+ import { useSPFxPnP } from '../../../../hooks';
40
+ import { InfoRow } from '../shared';
41
+ import '@pnp/sp/webs';
42
+ import '@pnp/sp/lists';
43
+ import '@pnp/sp/site-users';
44
+ /**
45
+ * Example 2: useSPFxPnP
46
+ * Shows invoke() for single operations and batch() for multiple operations
47
+ */
48
+ export var PnPOperationsDemo = function () {
49
+ var _a = useSPFxPnP(), invoke = _a.invoke, batch = _a.batch, isLoading = _a.isLoading, error = _a.error, clearError = _a.clearError;
50
+ var _b = React.useState([]), lists = _b[0], setLists = _b[1];
51
+ var _c = React.useState(null), batchData = _c[0], setBatchData = _c[1];
52
+ var handleInvokeLists = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
53
+ var result, err_1;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0:
57
+ _a.trys.push([0, 2, , 3]);
58
+ clearError();
59
+ return [4 /*yield*/, invoke(function (sp) {
60
+ return sp.web.lists
61
+ .select('Title', 'ItemCount')
62
+ .filter('Hidden eq false')
63
+ .top(10)();
64
+ })];
65
+ case 1:
66
+ result = _a.sent();
67
+ setLists(result);
68
+ return [3 /*break*/, 3];
69
+ case 2:
70
+ err_1 = _a.sent();
71
+ console.error('Invoke error:', err_1);
72
+ return [3 /*break*/, 3];
73
+ case 3: return [2 /*return*/];
74
+ }
75
+ });
76
+ }); }, [invoke, clearError]);
77
+ var handleBatchOperations = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
78
+ var results, listsResult, userResult, webResult, err_2;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0:
82
+ _a.trys.push([0, 2, , 3]);
83
+ clearError();
84
+ return [4 /*yield*/, batch(function (batchedSP) { return __awaiter(void 0, void 0, void 0, function () {
85
+ var listsPromise, userPromise, webPromise;
86
+ return __generator(this, function (_a) {
87
+ listsPromise = batchedSP.web.lists.select('Title').top(5)();
88
+ userPromise = batchedSP.web.currentUser.select('Title')();
89
+ webPromise = batchedSP.web.select('Title')();
90
+ // Wait for all batched operations to complete
91
+ return [2 /*return*/, Promise.all([listsPromise, userPromise, webPromise])];
92
+ });
93
+ }); })];
94
+ case 1:
95
+ results = _a.sent();
96
+ listsResult = results[0], userResult = results[1], webResult = results[2];
97
+ setBatchData({
98
+ lists: listsResult,
99
+ user: userResult,
100
+ webTitle: webResult.Title
101
+ });
102
+ return [3 /*break*/, 3];
103
+ case 2:
104
+ err_2 = _a.sent();
105
+ console.error('Batch error:', err_2);
106
+ return [3 /*break*/, 3];
107
+ case 3: return [2 /*return*/];
108
+ }
109
+ });
110
+ }); }, [batch, clearError]);
111
+ return (React.createElement(Stack, { tokens: { childrenGap: 10 }, styles: { root: { padding: '16px', border: '1px solid #edebe9', borderRadius: '4px' } } },
112
+ React.createElement("h3", null,
113
+ React.createElement(Icon, { iconName: "CloudUpload", style: { marginRight: '8px' } }),
114
+ "Example 2: useSPFxPnP - Operations & Batching"),
115
+ React.createElement(Separator, null),
116
+ error && (React.createElement(MessageBar, { messageBarType: MessageBarType.error, onDismiss: clearError }, error.message)),
117
+ React.createElement(Stack, { tokens: { childrenGap: 8 } },
118
+ React.createElement(Label, null, "Single Operation with invoke()"),
119
+ React.createElement(PrimaryButton, { text: isLoading ? 'Loading...' : 'Load Lists (invoke)', onClick: handleInvokeLists, disabled: isLoading, iconProps: { iconName: 'BulletedList' } }),
120
+ lists.length > 0 && (React.createElement(Stack, { tokens: { childrenGap: 4 }, styles: { root: { padding: '12px', backgroundColor: '#f3f2f1', borderRadius: '4px' } } },
121
+ React.createElement(Label, null, "Lists (top 10, non-hidden):"),
122
+ lists.map(function (list, idx) { return (React.createElement("div", { key: idx, style: { padding: '4px 0', borderBottom: idx < lists.length - 1 ? '1px solid #edebe9' : 'none' } },
123
+ React.createElement("strong", null, list.Title),
124
+ " - ",
125
+ list.ItemCount,
126
+ " items")); })))),
127
+ React.createElement(Stack, { tokens: { childrenGap: 8 } },
128
+ React.createElement(Label, null, "Batch Operations with batch()"),
129
+ React.createElement(PrimaryButton, { text: isLoading ? 'Loading...' : 'Load Multiple (batch)', onClick: handleBatchOperations, disabled: isLoading, iconProps: { iconName: 'Streaming' } }),
130
+ batchData && (React.createElement(Stack, { tokens: { childrenGap: 8 }, styles: { root: { padding: '12px', backgroundColor: '#f3f2f1', borderRadius: '4px' } } },
131
+ React.createElement(InfoRow, { label: "Web Title", value: batchData.webTitle, icon: "CityNext" }),
132
+ React.createElement(InfoRow, { label: "Current User", value: batchData.user.Title, icon: "Contact" }),
133
+ React.createElement(Label, null, "Lists (top 5):"),
134
+ batchData.lists.map(function (list, idx) { return (React.createElement("div", { key: idx, style: { paddingLeft: '16px' } },
135
+ "\u2022 ",
136
+ list.Title)); })))),
137
+ React.createElement(Label, null,
138
+ React.createElement(Icon, { iconName: "InfoSolid", style: { marginRight: '4px', color: '#0078d4' } }),
139
+ "invoke() for single operations, batch() combines multiple requests into ONE HTTP call for better performance.")));
140
+ };
141
+ //# sourceMappingURL=PnPOperationsDemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPOperationsDemo.js","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPOperationsDemo.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Example 4: Advanced Search with Builder and Verticals
4
+ */
5
+ export declare const PnPSearchAdvancedDemo: React.FC;
6
+ //# sourceMappingURL=PnPSearchAdvancedDemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchAdvancedDemo.d.ts","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EA6GzC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import * as React from 'react';
2
+ import { Stack, PrimaryButton, DefaultButton, MessageBar, MessageBarType, Separator, Label, Icon, } from '@fluentui/react';
3
+ import { useSPFxPnPSearch, SearchVerticals } from '../../../../hooks';
4
+ /**
5
+ * Example 4: Advanced Search with Builder and Verticals
6
+ */
7
+ export var PnPSearchAdvancedDemo = function () {
8
+ var _a = React.useState('All'), selectedVertical = _a[0], setSelectedVertical = _a[1];
9
+ var _b = useSPFxPnPSearch({
10
+ pageSize: 5,
11
+ selectProperties: ['Title', 'Path', 'Author', 'LastModifiedTime', 'FileType']
12
+ }), search = _b.search, results = _b.results, totalResults = _b.totalResults, loading = _b.loading, loadMore = _b.loadMore, hasMore = _b.hasMore, error = _b.error, clearError = _b.clearError;
13
+ var getVerticalSourceId = function (vertical) {
14
+ switch (vertical) {
15
+ case 'People': return SearchVerticals.People;
16
+ case 'Documents': return SearchVerticals.Documents;
17
+ case 'Pages': return SearchVerticals.Pages;
18
+ case 'Videos': return SearchVerticals.Videos;
19
+ default: return undefined;
20
+ }
21
+ };
22
+ var handleSearch = React.useCallback(function (query) {
23
+ search(function (builder) {
24
+ var result = builder.text(query).sortList({ Property: 'LastModifiedTime', Direction: 1 });
25
+ var sourceId = getVerticalSourceId(selectedVertical);
26
+ if (sourceId)
27
+ result = result.sourceId(sourceId);
28
+ return result;
29
+ }).catch(function (err) { return console.error('Search error:', err); });
30
+ }, [search, selectedVertical]);
31
+ return (React.createElement(Stack, { tokens: { childrenGap: 10 }, styles: { root: { padding: '16px', border: '1px solid #edebe9', borderRadius: '4px' } } },
32
+ React.createElement("h3", null,
33
+ React.createElement(Icon, { iconName: "SearchAndApps", style: { marginRight: '8px' } }),
34
+ "Example 2: Advanced Search with Builder"),
35
+ React.createElement(Separator, null),
36
+ error && (React.createElement(MessageBar, { messageBarType: MessageBarType.error, onDismiss: clearError }, error.message)),
37
+ React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 6 }, wrap: true }, ['All', 'Documents', 'Pages', 'People', 'Videos'].map(function (v) { return (React.createElement(DefaultButton, { key: v, text: v, onClick: function () { return setSelectedVertical(v); }, primary: selectedVertical === v })); })),
38
+ React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 6 } },
39
+ React.createElement(PrimaryButton, { text: "Search All", onClick: function () { return handleSearch('*'); }, disabled: loading }),
40
+ React.createElement(DefaultButton, { text: "Search Documents", onClick: function () { return handleSearch('filetype:docx OR filetype:pdf'); }, disabled: loading })),
41
+ totalResults !== undefined && (React.createElement(MessageBar, { messageBarType: MessageBarType.info },
42
+ "Found ",
43
+ totalResults,
44
+ " result",
45
+ totalResults !== 1 ? 's' : '',
46
+ " in \"",
47
+ selectedVertical,
48
+ "\"")),
49
+ results.length > 0 && (React.createElement(Stack, { tokens: { childrenGap: 6 } },
50
+ results.map(function (result) { return (React.createElement(Stack, { key: result.id, tokens: { childrenGap: 2 }, styles: { root: { padding: '10px', backgroundColor: '#f3f2f1', borderRadius: '4px' } } },
51
+ React.createElement("div", { style: { fontWeight: 600 } }, result.data.Title || '(No Title)'),
52
+ React.createElement(Label, null,
53
+ result.data.Author,
54
+ " - ",
55
+ result.data.LastModifiedTime ? new Date(result.data.LastModifiedTime).toLocaleDateString() : 'N/A'),
56
+ React.createElement("a", { href: result.data.Path, target: "_blank", rel: "noopener noreferrer", style: { fontSize: '11px' } }, result.data.Path))); }),
57
+ hasMore && (React.createElement(PrimaryButton, { text: loading ? 'Loading...' : 'Load More', onClick: loadMore, disabled: loading })))),
58
+ React.createElement(Label, null,
59
+ React.createElement(Icon, { iconName: "InfoSolid", style: { marginRight: '4px', color: '#0078d4' } }),
60
+ "Builder API with verticals (People, Documents, Pages, Videos) and pagination.")));
61
+ };
62
+ //# sourceMappingURL=PnPSearchAdvancedDemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchAdvancedDemo.js","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchAdvancedDemo.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Example 3: useSPFxPnPSearch - Basic Search
4
+ */
5
+ export declare const PnPSearchBasicDemo: React.FC;
6
+ //# sourceMappingURL=PnPSearchBasicDemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchBasicDemo.d.ts","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EA0FtC,CAAC"}
@@ -0,0 +1,98 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import * as React from 'react';
38
+ import { Stack, TextField, PrimaryButton, MessageBar, MessageBarType, Separator, Label, Icon, } from '@fluentui/react';
39
+ import { useSPFxPnPSearch } from '../../../../hooks';
40
+ /**
41
+ * Example 3: useSPFxPnPSearch - Basic Search
42
+ */
43
+ export var PnPSearchBasicDemo = function () {
44
+ var _a = React.useState(''), searchText = _a[0], setSearchText = _a[1];
45
+ var _b = useSPFxPnPSearch({
46
+ pageSize: 10
47
+ }), search = _b.search, results = _b.results, totalResults = _b.totalResults, loading = _b.loading, error = _b.error, clearError = _b.clearError;
48
+ var handleSearch = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
49
+ var err_1;
50
+ return __generator(this, function (_a) {
51
+ switch (_a.label) {
52
+ case 0:
53
+ if (!searchText.trim())
54
+ return [2 /*return*/];
55
+ _a.label = 1;
56
+ case 1:
57
+ _a.trys.push([1, 3, , 4]);
58
+ return [4 /*yield*/, search(searchText)];
59
+ case 2:
60
+ _a.sent();
61
+ return [3 /*break*/, 4];
62
+ case 3:
63
+ err_1 = _a.sent();
64
+ console.error('Search error:', err_1);
65
+ return [3 /*break*/, 4];
66
+ case 4: return [2 /*return*/];
67
+ }
68
+ });
69
+ }); }, [searchText, search]);
70
+ return (React.createElement(Stack, { tokens: { childrenGap: 10 }, styles: { root: { padding: '16px', border: '1px solid #edebe9', borderRadius: '4px' } } },
71
+ React.createElement("h3", null,
72
+ React.createElement(Icon, { iconName: "Search", style: { marginRight: '8px' } }),
73
+ "Example 1: Basic Search"),
74
+ React.createElement(Separator, null),
75
+ error && (React.createElement(MessageBar, { messageBarType: MessageBarType.error, onDismiss: clearError }, error.message)),
76
+ React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 8 } },
77
+ React.createElement(TextField, { value: searchText, onChange: function (_, newValue) { return setSearchText(newValue !== null && newValue !== void 0 ? newValue : ''); }, placeholder: "Search SharePoint...", styles: { root: { flexGrow: 1 } }, onKeyDown: function (e) {
78
+ if (e.key === 'Enter') {
79
+ handleSearch().catch(function (err) { return console.error('Search error:', err); });
80
+ }
81
+ } }),
82
+ React.createElement(PrimaryButton, { text: loading ? 'Searching...' : 'Search', onClick: handleSearch, disabled: !searchText.trim() || loading, iconProps: { iconName: 'Search' } })),
83
+ totalResults !== undefined && (React.createElement(MessageBar, { messageBarType: MessageBarType.info },
84
+ "Found ",
85
+ totalResults,
86
+ " result",
87
+ totalResults !== 1 ? 's' : '')),
88
+ results.length > 0 ? (React.createElement(Stack, { tokens: { childrenGap: 6 } }, results.map(function (result) { return (React.createElement(Stack, { key: result.id, tokens: { childrenGap: 4 }, styles: { root: { padding: '10px', backgroundColor: '#faf9f8', borderRadius: '4px' } } },
89
+ React.createElement("div", { style: { fontWeight: 600 } }, result.data.Title || '(No Title)'),
90
+ React.createElement("a", { href: result.data.Path, target: "_blank", rel: "noopener noreferrer", style: { fontSize: '12px' } }, result.data.Path),
91
+ result.data.FileType && React.createElement(Label, null,
92
+ "Type: ",
93
+ result.data.FileType))); }))) : totalResults === 0 ? (React.createElement(MessageBar, null, "No results found. Try a different query.")) : null,
94
+ React.createElement(Label, null,
95
+ React.createElement(Icon, { iconName: "InfoSolid", style: { marginRight: '4px', color: '#0078d4' } }),
96
+ "Simple text search. Try: \"document\", \"report\", \"ContentType:Document\"")));
97
+ };
98
+ //# sourceMappingURL=PnPSearchBasicDemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchBasicDemo.js","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchBasicDemo.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Example 5: Faceted Search with Refiners
4
+ */
5
+ export declare const PnPSearchRefinersDemo: React.FC;
6
+ //# sourceMappingURL=PnPSearchRefinersDemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchRefinersDemo.d.ts","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EA2FzC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import { Stack, PrimaryButton, DefaultButton, MessageBar, MessageBarType, Separator, Label, Icon, } from '@fluentui/react';
3
+ import { useSPFxPnPSearch } from '../../../../hooks';
4
+ /**
5
+ * Example 5: Faceted Search with Refiners
6
+ */
7
+ export var PnPSearchRefinersDemo = function () {
8
+ var _a = useSPFxPnPSearch({
9
+ pageSize: 10,
10
+ selectProperties: ['Title', 'Path', 'FileType', 'Author'],
11
+ refiners: 'FileType,Author'
12
+ }), search = _a.search, results = _a.results, refiners = _a.refiners, totalResults = _a.totalResults, loading = _a.loading, applyRefiner = _a.applyRefiner, error = _a.error, clearError = _a.clearError;
13
+ var handleSearch = React.useCallback(function () {
14
+ search('*').catch(function (err) { return console.error('Search error:', err); });
15
+ }, [search]);
16
+ return (React.createElement(Stack, { tokens: { childrenGap: 10 }, styles: { root: { padding: '16px', border: '1px solid #edebe9', borderRadius: '4px' } } },
17
+ React.createElement("h3", null,
18
+ React.createElement(Icon, { iconName: "FilterSettings", style: { marginRight: '8px' } }),
19
+ "Example 3: Faceted Search with Refiners"),
20
+ React.createElement(Separator, null),
21
+ error && (React.createElement(MessageBar, { messageBarType: MessageBarType.error, onDismiss: clearError }, error.message)),
22
+ React.createElement(PrimaryButton, { text: loading ? 'Loading...' : 'Search All Content', onClick: handleSearch, disabled: loading, iconProps: { iconName: 'Search' } }),
23
+ totalResults !== undefined && (React.createElement(Label, null,
24
+ React.createElement(Icon, { iconName: "SearchIssue", style: { marginRight: '4px', color: '#0078d4' } }),
25
+ "Found ",
26
+ totalResults,
27
+ " results")),
28
+ React.createElement(Stack, { horizontal: true, tokens: { childrenGap: 12 }, styles: { root: { alignItems: 'flex-start' } } },
29
+ refiners.length > 0 && (React.createElement(Stack, { tokens: { childrenGap: 8 }, styles: { root: { width: '200px', padding: '8px', backgroundColor: '#f3f2f1', borderRadius: '4px' } } },
30
+ React.createElement(Label, { style: { fontWeight: 600 } }, "Filters"),
31
+ refiners.map(function (refiner) { return (React.createElement(Stack, { key: refiner.name, tokens: { childrenGap: 2 } },
32
+ React.createElement(Label, null, refiner.name),
33
+ refiner.entries.slice(0, 5).map(function (entry) { return (React.createElement(DefaultButton, { key: entry.value, text: "".concat(entry.value, " (").concat(entry.count, ")"), onClick: function () { return applyRefiner(refiner.name, entry.value); }, styles: { root: { height: '28px', fontSize: '12px' } } })); }))); }))),
34
+ React.createElement(Stack, { tokens: { childrenGap: 6 }, styles: { root: { flexGrow: 1 } } }, results.length > 0 ? (results.map(function (result) { return (React.createElement(Stack, { key: result.id, tokens: { childrenGap: 2 }, styles: { root: { padding: '8px', backgroundColor: '#faf9f8', borderRadius: '4px' } } },
35
+ React.createElement("div", { style: { fontWeight: 600 } }, result.data.Title || '(No Title)'),
36
+ React.createElement(Label, null,
37
+ result.data.FileType,
38
+ " | ",
39
+ result.data.Author),
40
+ React.createElement("a", { href: result.data.Path, target: "_blank", rel: "noopener noreferrer", style: { fontSize: '11px' } }, result.data.Path))); })) : (React.createElement(Label, null, "Click \"Search All Content\" to see results.")))),
41
+ React.createElement(Label, null,
42
+ React.createElement(Icon, { iconName: "InfoSolid", style: { marginRight: '4px', color: '#0078d4' } }),
43
+ "Faceted search with FileType and Author refiners. Click to filter/toggle.")));
44
+ };
45
+ //# sourceMappingURL=PnPSearchRefinersDemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnPSearchRefinersDemo.js","sourceRoot":"","sources":["../../../../../src/webparts/spFxReactToolkitTest/components/demos/PnPSearchRefinersDemo.tsx"],"names":[],"mappings":"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"}