├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE │ └── pull_request_template.md └── workflows │ ├── publish-docs.yml │ ├── publish.yml │ ├── release-template.md │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── QnA.md ├── assets │ ├── DataSources.png │ ├── LCP.png │ ├── NoAccessError.png │ ├── api-access-approved.jpg │ ├── api-access-pending.jpg │ ├── app_catalog.png │ ├── cards_layout_options.png │ ├── extensibility │ │ ├── adaptive_cards_templating.png │ │ ├── extensibility_configuration.png │ │ ├── extensibility_configuration_manifest.png │ │ ├── handlebars_templating.png │ │ ├── implement_interface.png │ │ ├── layout │ │ │ ├── custom_layout.png │ │ │ └── layout_properties.png │ │ ├── library_manifest_id.png │ │ └── web_components │ │ │ ├── breadcrumb_component.png │ │ │ ├── collapsible_component.png │ │ │ ├── custom_web_component.png │ │ │ ├── debug_types.png │ │ │ ├── document_card_component.png │ │ │ ├── fileicon_component.png │ │ │ ├── filepreview_component.png │ │ │ ├── icon_component.png │ │ │ ├── panel_component.png │ │ │ └── persona_component.png │ ├── extra.css │ ├── installation-enable-app.png │ ├── pnp_logo.png │ ├── theme_debug.png │ ├── theme_field.png │ ├── using-query-tools │ │ ├── PeopleSearch.png │ │ ├── ReindexLibrary.png │ │ ├── rightQuery1.png │ │ └── wrongQuery1.png │ ├── v3_v4.png │ ├── webparts.png │ └── webparts │ │ ├── search-box │ │ ├── dynamic_data_source.png │ │ ├── search_box_settings.png │ │ ├── search_box_suggestions.png │ │ ├── search_box_wp_default.png │ │ ├── search_box_wp_picker.png │ │ ├── suggestions_demo.png │ │ └── suggestions_providers_panel.png │ │ ├── search-filters │ │ ├── checkbox_template.png │ │ ├── combo_template.png │ │ ├── dateinterval_template.png │ │ ├── daterange_template.png │ │ ├── filter_deep_linking.png │ │ ├── filter_settings.png │ │ ├── filter_settings_panel.png │ │ ├── layouts │ │ │ ├── available_layouts.png │ │ │ ├── custom_edit.png │ │ │ ├── custom_external_file.png │ │ │ ├── custom_layout.png │ │ │ ├── debug_layout.png │ │ │ ├── horizontal_layout.png │ │ │ ├── horizontal_options.png │ │ │ ├── panel_layout.png │ │ │ ├── panel_options.png │ │ │ └── vertical_layout.png │ │ ├── operator_filters.png │ │ ├── people_template.png │ │ ├── search_filters_wp_default.png │ │ ├── search_filters_wp_picker.png │ │ └── wp_connection.png │ │ ├── search-results │ │ ├── about_page.png │ │ ├── connections │ │ │ ├── allow_item_selection.png │ │ │ ├── available_connections.png │ │ │ ├── configure_data_results_connection_1.png │ │ │ ├── configure_data_results_connection_2.png │ │ │ ├── configure_data_results_connection_3.png │ │ │ ├── configure_data_results_connection_4.png │ │ │ ├── configure_data_results_connection_5.png │ │ │ ├── filters.png │ │ │ ├── input_text_dynamic.png │ │ │ ├── input_text_static.png │ │ │ ├── select_vertical.png │ │ │ └── verticals.png │ │ ├── layouts │ │ │ ├── available_layouts.png │ │ │ ├── card_allow_html.png │ │ │ ├── card_preview.png │ │ │ ├── cards_layout.png │ │ │ ├── common_options.png │ │ │ ├── custom_edit.png │ │ │ ├── custom_external_file.png │ │ │ ├── custom_layout.png │ │ │ ├── debug_layout.png │ │ │ ├── details_list_fields.png │ │ │ ├── details_list_hb_expr.png │ │ │ ├── details_list_hb_expr2.png │ │ │ ├── details_list_layout.png │ │ │ ├── hide_webpart.png │ │ │ ├── manage_cards_fields.png │ │ │ ├── manage_people_fields.png │ │ │ ├── people_layout.png │ │ │ ├── persona_card_hover.png │ │ │ ├── result_types.png │ │ │ ├── result_types_btn.png │ │ │ ├── result_types_result.png │ │ │ ├── result_types_template.png │ │ │ ├── see_all_link.png │ │ │ ├── simple_list_layout.png │ │ │ ├── simple_list_thumbnail.png │ │ │ └── slider_layout.png │ │ ├── localization_crawled_property.png │ │ ├── page1 │ │ │ ├── available_datasources.png │ │ │ ├── custom_slot.png │ │ │ ├── data_source_slots.png │ │ │ └── slot_concept.png │ │ ├── search_results_wp_picker.png │ │ └── search_results_wp_placeholder.png │ │ └── search-verticals │ │ ├── configure_verticals.png │ │ └── search_verticals_wp_picker.png ├── build-the-doc.md ├── create-custom-layouts │ ├── assets │ │ ├── create-your-first-custom-template │ │ │ ├── custom_search-results-example.png │ │ │ ├── insert_external-url-for-custom-template.png │ │ │ └── myfirsttemplate_file-screenshot.png │ │ ├── edit-custom-templates-in-sharepoint │ │ │ ├── open_htmlfile-in-text-editor.png │ │ │ └── save_the-changed-file.png │ │ ├── edit-templates-using-vscode-and-onedrive │ │ │ ├── open-template-folder-onedrive.png │ │ │ ├── refresh-search-page-and-see-result-of-changes.png │ │ │ └── sync-or-addshortcut-to-onedrive.png │ │ └── store-custom-templates-in-sharepoint │ │ │ ├── central-repository-multiple-sites.png │ │ │ ├── custom-template-external-url-edit.png │ │ │ └── sharepoint-resources-lib.png │ ├── create-your-first-custom-template.md │ ├── edit-custom-templates-in-sharepoint.md │ ├── edit-templates-using-vscode-and-onedrive.md │ ├── howto-store-custom-templates-in-sharepoint.md │ └── index.md ├── extensibility │ ├── adaptivecards_customizations.md │ ├── custom_data_sources.md │ ├── custom_layout.md │ ├── custom_query_modifications.md │ ├── custom_suggestions_provider.md │ ├── custom_web_component.md │ ├── extensibility_compatibility_matrix.md │ ├── handlebars_customizations.md │ ├── index.md │ ├── templating.md │ └── web_components_list.md ├── how-to-contribute.md ├── index.md ├── installation.md ├── scenarios │ ├── Connect-to-a-search-results-webpart.md │ ├── Create-a-search-page-showing-graph-connector-data.md │ ├── Create-a-search-page-with-verticals-on-different-pages.md │ ├── Create-a-search-page-with-verticals-within-the-same-page.md │ ├── Create-a-useful-People-Search.md │ ├── Setup-Results-web-part-to-show-birthdays.md │ ├── Setup-Results-web-part-to-show-work-anniversaries.md │ ├── Use-query-rules-for-promoted-links.md │ ├── assets │ │ ├── Connect-to-a-search-results-webpart │ │ │ ├── configure-first-results-webpart-layout.png │ │ │ ├── configure-first-results-webpart.png │ │ │ ├── configure-second-results-webpart-connections.png │ │ │ ├── configure-second-results-webpart.png │ │ │ ├── sharepoint-admin-center-hub-architecture.png │ │ │ ├── simple-search-page-two-results.png │ │ │ └── solution-use-results-webpart-connections.png │ │ ├── Create-a-search-page-showing-graph-connector-data │ │ │ ├── GraphConnectors.png │ │ │ ├── Results_wp_setup1.png │ │ │ ├── Schema_for_graph_connector.png │ │ │ ├── SelectedProperties.png │ │ │ ├── columnsAndRefiners.png │ │ │ └── finalresult.png │ │ ├── Create-a-search-page-with-verticals-on-different-pages │ │ │ ├── add-PnP-web-parts.png │ │ │ ├── configure-search-verticals-on-first-page.png │ │ │ ├── configure-search-verticals-on-second-page.png │ │ │ ├── create-a-page.png │ │ │ ├── first-result-web-part-connection.png │ │ │ ├── first-result-web-part-vertical-everything.png │ │ │ ├── search-box-configuration.png │ │ │ ├── search-vertical-on-first-page.png │ │ │ ├── search-vertical-on-second-page.png │ │ │ ├── second-result-web-part-connection.png │ │ │ ├── second-result-web-part-vertical-videos.png │ │ │ └── used-search-web-parts.png │ │ ├── Create-a-search-page-with-verticals-within-the-same-page │ │ │ ├── Add-PnP-Web-Parts.png │ │ │ ├── Configure-Search-Box-Web-Part.png │ │ │ ├── Configure-Search-Vertical-Web-Part.png │ │ │ ├── Create-a-page.png │ │ │ ├── First-Result-Web-Part-Vertical-Everything.png │ │ │ ├── First-Result-Web-Part-connection.png │ │ │ ├── Search-Vertical.png │ │ │ ├── Search-Web-Parts.png │ │ │ ├── Second-Result-Web-Part-Vertical-Knowledge.png │ │ │ ├── Second-Result-Web-Part-connection.png │ │ │ └── Test-Your-Search-page.png │ │ ├── Setup-Results-web-part-to-show-birthdays │ │ │ ├── BirthdayUPA.png │ │ │ ├── RefinableDate00.png │ │ │ └── birthdays.png │ │ ├── Setup-Results-web-part-to-show-work-anniversaries │ │ │ ├── BirthdayAndHiredateSyncList.png │ │ │ ├── anniversaries.png │ │ │ ├── mapping1.png │ │ │ ├── mapping2.png │ │ │ └── upa.png │ │ ├── Use-query-rules-for-promoted-links │ │ │ ├── Create-a-page.png │ │ │ ├── add-promoted-result.png │ │ │ ├── add-webparts.png │ │ │ ├── configure-search-results.png │ │ │ ├── configured-query-rule.png │ │ │ ├── connection-search-box.png │ │ │ ├── create-a-new-query-rule.png │ │ │ ├── query-rule-information.png │ │ │ ├── result-webpart-enable-query-rules.png │ │ │ └── show-promoted-links.png │ │ ├── create-a-useful-people-search │ │ │ ├── Add-PnP-Web-Parts.png │ │ │ ├── Create-a-page.png │ │ │ ├── arrange-your-search-web-parts.png │ │ │ ├── configure-Search-Box.png │ │ │ ├── configure-customize-filters.png │ │ │ ├── configure-search-filters.png │ │ │ ├── configure-search-results.png │ │ │ ├── people-search.png │ │ │ ├── search-results-connections.png │ │ │ ├── search-results-layout-options.png │ │ │ └── search-results-layouts.png │ │ ├── create-simple-search-page │ │ │ ├── add-web-parts-to-page.jpg │ │ │ ├── available-data-sources.jpg │ │ │ ├── new-page.jpg │ │ │ ├── use-input-query-text.jpg │ │ │ └── web-part-toolbox-pnp-modern-search.jpg │ │ ├── display-multilingual-term-store-values-with-pnp-search-results │ │ │ ├── Managed-Properties-RefinableString.png │ │ │ ├── add-pnp-search-results-webpart.png │ │ │ ├── create-a-sharepoint-term-set.png │ │ │ ├── document-library-in-english.png │ │ │ ├── document-library-in-german.png │ │ │ ├── enable-localization.png │ │ │ ├── results-in-english.png │ │ │ ├── results-in-german.png │ │ │ ├── results-webpart-confguration.png │ │ │ ├── search-results-without-translation.png │ │ │ ├── site-column-managed-metadata.png │ │ │ ├── webpart-configuration-manage-columns-ows_taxid_.png │ │ │ └── webpart-configuration-manage-columns.png │ │ ├── page-with-filters │ │ │ ├── connect-filter-web-part.png │ │ │ ├── connect-search-results-web-part.png │ │ │ ├── page-layout-with-filters.png │ │ │ ├── selected-properties.png │ │ │ ├── set-up-filters-properties.png │ │ │ └── set-up-filters.png │ │ ├── search-verticals-with-parameter │ │ │ ├── configure-search-results.png │ │ │ ├── configure-search-verticals-query-parameter.png │ │ │ ├── configure-search-verticals.png │ │ │ ├── example-query-string-parameter.png │ │ │ └── readme.md │ │ ├── use-query-string-in-url │ │ │ ├── Create-a-page.png │ │ │ ├── add-web-parts.png │ │ │ ├── configure-search-results-query.png │ │ │ ├── query-string-parameter.png │ │ │ ├── query-template.png │ │ │ ├── quicklinks-query-string.png │ │ │ ├── readme │ │ │ └── solution.png │ │ └── use-search-as-a-department-webpart │ │ │ ├── Add-PnP-Results-Web-Parts.png │ │ │ ├── Create-a-page.png │ │ │ ├── Layout1.png │ │ │ ├── Layout2.png │ │ │ ├── MarketingDepartment.png │ │ │ ├── Setup-page1.png │ │ │ └── Termstore_marketing.png │ ├── create-simple-search-page.md │ ├── display-multilingual-term-store-values-with-pnp-search-results.md │ ├── includes │ │ └── deployment-note.md │ ├── index.md │ ├── page-with-filters.md │ ├── search-verticals-with-parameter.md │ ├── set-up-managed-properties.md │ ├── use-query-string-in-url.md │ └── use-search-as-a-department-webpart.md ├── usage │ ├── search-box │ │ └── index.md │ ├── search-filters │ │ ├── index.md │ │ └── layouts │ │ │ ├── custom.md │ │ │ ├── debug.md │ │ │ ├── horizontal.md │ │ │ ├── index.md │ │ │ ├── panel.md │ │ │ └── vertical.md │ ├── search-results │ │ ├── common │ │ │ └── paging.md │ │ ├── connections │ │ │ ├── index.md │ │ │ └── item-selection.md │ │ ├── data-sources │ │ │ ├── index.md │ │ │ ├── microsoft-search.md │ │ │ └── sharepoint-search.md │ │ ├── index.md │ │ ├── layouts │ │ │ ├── cards.md │ │ │ ├── custom.md │ │ │ ├── debug.md │ │ │ ├── details-list.md │ │ │ ├── index.md │ │ │ ├── people.md │ │ │ ├── simple-list.md │ │ │ ├── slider.md │ │ │ └── templating.md │ │ ├── slots.md │ │ └── tokens.md │ └── search-verticals │ │ └── index.md ├── using-query-tools-to-verify-issues.md └── v3 │ ├── build-the-doc.md │ ├── contributors.md │ ├── images │ ├── ChangeColor.gif │ ├── ChangeNode.gif │ ├── NavNodesMain.gif │ ├── WebComponent_Accordion_PopupExample.png │ ├── WebComponent_LookupListExtender_Example.png │ ├── WebComponent_Popup_Modal_Example.png │ ├── all_layouts.png │ ├── azure_keys.png │ ├── best_bets.png │ ├── coderenderer.gif │ ├── coderenderertemplate.gif │ ├── container_tree_template.png │ ├── cors_settings.png │ ├── custom_template_fields.PNG │ ├── custom_template_fields_selection.PNG │ ├── debug_layout.png │ ├── default_selected_filters.png │ ├── details_list_hb_expr.png │ ├── details_list_hb_expr2.png │ ├── details_list_layout.png │ ├── details_list_manage_columns.png │ ├── documentcards_html_fields.png │ ├── documentcards_layout.png │ ├── documentcards_manage_fields.png │ ├── edit_template.png │ ├── enable_localization.png │ ├── function_devops.png │ ├── function_devops_build.png │ ├── luis_apps.png │ ├── luis_key_manage.png │ ├── managed-property.png │ ├── ngrok.png │ ├── paging_settings.png │ ├── people_layout.png │ ├── placeholders.png │ ├── property_pane.png │ ├── property_pane2.png │ ├── property_pane3.png │ ├── query_modifiers.png │ ├── query_modifiers_select.png │ ├── query_rules.png │ ├── react-search-refiners.gif │ ├── renderervariables.png │ ├── result_preview.png │ ├── result_types.png │ ├── results_layout.PNG │ ├── sb_configure_suggestions.png │ ├── sb_custom_suggestion_providers.png │ ├── sb_property_pane.png │ ├── search-filters-property-pane.png │ ├── search-pagination-property-pane.png │ ├── search-refiners-property-pane.png │ ├── search_box_luis.png │ ├── search_verticals.png │ ├── search_verticals_propertypane.png │ ├── search_verticals_propertypane2.png │ ├── search_verticals_propertypane3.png │ ├── simple_list_layout.png │ ├── slider_layout.png │ └── wp_connection.png │ ├── index.md │ ├── search-custom-renderer │ └── getting-started.md │ ├── search-extensibility-library │ └── getting-started.md │ ├── search-parts │ ├── getting-started.md │ ├── search-box.md │ ├── search-filters.md │ ├── search-pagination.md │ ├── search-results.md │ ├── search-verticals.md │ └── templating.md │ └── search-query-enhancer │ ├── debug-locally.md │ └── getting-started.md ├── mkdocs.yml ├── search-extensibility ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .npmrc ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── .yo-rc.json ├── README.md ├── config │ ├── config.json │ ├── copy-assets.json │ ├── deploy-azure-storage.json │ ├── package-solution.json │ ├── sass.json │ ├── serve.json │ └── write-manifests.json ├── gulpfile.js ├── package-lock.json ├── package.json ├── src │ ├── constants │ │ └── ExtensibilityConstants.ts │ ├── extensibilityLibrary.manifest.json │ ├── index.ts │ └── models │ │ ├── IAdaptiveCardAction.ts │ │ ├── IExtensibilityLibrary.ts │ │ ├── ITokenService.ts │ │ ├── dataSources │ │ ├── BaseDataSource.ts │ │ ├── IDataContext.ts │ │ ├── IDataSource.ts │ │ ├── IDataSourceData.ts │ │ ├── IDataSourceDefinition.ts │ │ ├── IResultTemplates.ts │ │ ├── ISortInfo.ts │ │ ├── ITemplateSlot.ts │ │ ├── PagingBehavior.ts │ │ └── SortFieldDirection.ts │ │ ├── filters │ │ ├── FilterBehavior.ts │ │ ├── IDataFilter.ts │ │ ├── IDataFilterConfiguration.ts │ │ ├── IDataFilterInfo.ts │ │ ├── IDataFilterInternal.ts │ │ └── IDataFilterToken.ts │ │ ├── layouts │ │ ├── BaseLayout.ts │ │ ├── BaseWebComponent.ts │ │ ├── IComponentDefinition.ts │ │ ├── ILayout.ts │ │ └── ILayoutDefinition.ts │ │ ├── queryModifier │ │ ├── BaseQueryModifier.ts │ │ ├── IQueryModifier.ts │ │ └── IQueryModifierDefinition.ts │ │ ├── suggestions │ │ ├── BaseSuggestionProvider.ts │ │ ├── ISuggestion.ts │ │ ├── ISuggestionProvider.ts │ │ └── ISuggestionProviderDefinition.ts │ │ └── verticals │ │ └── IDataVertical.ts └── tsconfig.json └── search-parts ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .npmrc ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── .yo-rc.json ├── README.md ├── config ├── config.json ├── deploy-azure-storage.json ├── package-solution.json ├── sass.json ├── serve.json └── write-manifests.json ├── fast-serve └── webpack.extend.js ├── gulpfile.js ├── package-lock.json ├── package.json ├── src ├── common │ ├── BaseWebPart.ts │ ├── ComponentType.ts │ └── Constants.ts ├── components │ ├── AvailableComponents.ts │ ├── CollapsibleContentComponent.module.scss │ ├── CollapsibleContentComponent.tsx │ ├── DebugViewComponent.tsx │ ├── DetailsListComponent.tsx │ ├── DocumentCardComponent.tsx │ ├── DocumentCardShimmersComponent.tsx │ ├── DownloadSelectedItemsButtonComponent.tsx │ ├── FileIconComponent.tsx │ ├── FilePreviewComponent.tsx │ ├── IconComponent.tsx │ ├── ImageComponent.tsx │ ├── ItemSelectionComponent.module.scss │ ├── ItemSelectionComponent.tsx │ ├── PaginationComponent.module.scss │ ├── PaginationComponent.tsx │ ├── PanelComponent.module.scss │ ├── PanelComponent.tsx │ ├── PersonaComponent.tsx │ ├── PersonaShimmersComponent.tsx │ ├── SliderComponent.tsx │ ├── SortComponent.tsx │ ├── SpoPathBreadcrumbComponent.tsx │ └── filters │ │ ├── FilterCheckBoxComponent.tsx │ │ ├── FilterComboBoxComponent.module.scss │ │ ├── FilterComboBoxComponent.tsx │ │ ├── FilterDateIntervalComponent.tsx │ │ ├── FilterDateRangeComponent.tsx │ │ ├── FilterMultiComponent.module.scss │ │ ├── FilterMultiComponent.tsx │ │ ├── FilterPeopleCheckBoxComponent.module.scss │ │ ├── FilterPeopleCheckBoxComponent.tsx │ │ ├── FilterSearchBoxComponent.module.scss │ │ ├── FilterSearchBoxComponent.tsx │ │ ├── FilterValueOperatorComponent.module.scss │ │ ├── FilterValueOperatorComponent.tsx │ │ ├── SelectedFiltersComponent.module.scss │ │ └── SelectedFiltersComponent.tsx ├── controls │ ├── PreviewContainer │ │ ├── IPreviewContainerProps.ts │ │ ├── IPreviewContainerState.ts │ │ ├── PreviewContainer.module.scss │ │ └── PreviewContainer.tsx │ ├── PropertyPaneAsyncCombo │ │ ├── IPropertyPaneAsyncComboProps.ts │ │ ├── PropertyPaneAsyncCombo.ts │ │ └── components │ │ │ ├── AsyncCombo.module.scss │ │ │ ├── AsyncCombo.tsx │ │ │ ├── IAsyncComboProps.ts │ │ │ └── IAsyncComboState.ts │ ├── PropertyPaneNonReactiveTextField │ │ ├── IPropertyPaneNonReactiveTextFieldProps.ts │ │ ├── PropertyPaneNonReactiveTextField.ts │ │ └── components │ │ │ ├── INonReactiveTextFieldProps.ts │ │ │ ├── INonReactiveTextFieldState.ts │ │ │ └── NonReactiveTextField.tsx │ ├── PropertyPaneTabsField │ │ ├── IPropertyPaneTabsFieldProps.ts │ │ ├── PropertyPaneTabsField.ts │ │ └── components │ │ │ ├── ChoiceGroupTabs.tsx │ │ │ └── IChoiceGroupTabsProps.ts │ ├── TemplateRenderer │ │ ├── ITemplateRendererProps.ts │ │ ├── ITemplateRendererState.ts │ │ ├── TemplateRenderer.scss │ │ ├── TemplateRenderer.tsx │ │ ├── fluentUI │ │ │ ├── Actions.tsx │ │ │ ├── Elements.tsx │ │ │ ├── FluentUI.tsx │ │ │ ├── Shared.tsx │ │ │ └── index.ts │ │ └── themes │ │ │ ├── redPalette.json │ │ │ ├── teamsDarkPalette.json │ │ │ ├── teamsDefaultPalette.json │ │ │ └── teamsHighContrastPalette.json │ ├── TemplateValueFieldEditor │ │ └── TemplateValueFieldEditor.tsx │ └── TextDialog │ │ ├── AceEditor.module.scss │ │ ├── ITextDialogProps.ts │ │ ├── ITextDialogState.ts │ │ ├── ITextDialogStrings.ts │ │ ├── TextDialog.module.scss │ │ ├── TextDialog.tsx │ │ └── index.ts ├── dataSources │ ├── AvailableDataSources.ts │ ├── MicrosoftSearchDataSource.ts │ └── SharePointSearchDataSource.ts ├── helpers │ ├── DataFilterHelper.ts │ ├── DateHelper.ts │ ├── DomPurifyHelper.ts │ ├── DynamicPropertyHelper.ts │ ├── EnumHelper.ts │ ├── GraphToolKitHelper.ts │ ├── LayoutHelper.ts │ ├── LocalizationHelper.ts │ ├── ObjectHelper.ts │ ├── ServiceScopeHelper.ts │ ├── StringHelper.ts │ └── UrlHelper.ts ├── index.ts ├── layouts │ ├── AvailableLayouts.ts │ ├── AvailableTemplates.ts │ ├── filters │ │ ├── custom │ │ │ ├── FiltersCustomLayout.ts │ │ │ └── filters-custom.html │ │ ├── debug │ │ │ ├── DebugFilterLayout.ts │ │ │ └── filters-debug.html │ │ ├── horizontal │ │ │ ├── HorizontalFilterLayout.ts │ │ │ └── horizontal.html │ │ ├── panel │ │ │ ├── PanelFilterLayout.ts │ │ │ └── panel.html │ │ └── vertical │ │ │ ├── VerticalFilterLayout.ts │ │ │ └── vertical.html │ ├── layouts.d.ts │ ├── resultTypes │ │ ├── default_cards.html │ │ ├── default_custom.html │ │ ├── default_people.html │ │ └── default_simple_list.html │ └── results │ │ ├── cards │ │ ├── CardsLayout.ts │ │ └── cards.html │ │ ├── custom │ │ ├── ResultsCustomLayout.ts │ │ ├── custom.d.ts │ │ ├── results-custom.html │ │ └── results-custom.json │ │ ├── debug │ │ ├── ResultsDebugLayout.ts │ │ └── results-debug.html │ │ ├── detailsList │ │ ├── DetailListLayout.ts │ │ ├── DetailsListLayout.module.scss │ │ └── details-list.html │ │ ├── people │ │ ├── PeopleLayout.ts │ │ └── people.html │ │ ├── resultsDebug │ │ └── ResultsDebugLayout.ts │ │ ├── simpleList │ │ ├── SimpleListLayout.ts │ │ ├── simple-list.html │ │ └── simple-list.json │ │ └── slider │ │ ├── SliderLayout.ts │ │ └── slider.html ├── loc │ ├── commonStrings.d.ts │ ├── cs-cz.js │ ├── da-dk.js │ ├── de-de.js │ ├── en-us.js │ ├── es-es.js │ ├── fi-fi.js │ ├── fr-fr.js │ ├── it-it.js │ ├── nb-no.js │ ├── nl-nl.js │ ├── pl-pl.js │ ├── propertyControlStrings.d.ts │ ├── pt-br.js │ └── sv-SE.js ├── models │ ├── common │ │ ├── IBaseWebPartProps.ts │ │ ├── IComponentFieldsConfiguration.ts │ │ ├── IDataResultType.ts │ │ ├── IDataVerticalConfiguration.ts │ │ ├── IExtensibilityConfiguration.ts │ │ ├── IItemSelectionProps.ts │ │ ├── IPagingSettings.ts │ │ ├── ISelectableComponentItem.ts │ │ └── ITemplateContext.ts │ ├── dynamicData │ │ ├── IDataFilterSourceData.ts │ │ ├── IDataResultSourceData.ts │ │ ├── IDataVerticalSourceData.ts │ │ └── IDynamicDataSourceProperty.ts │ └── search │ │ ├── ILocalizableSearchResult.ts │ │ ├── IMicrosoftSearchDataSourceData.ts │ │ ├── IMicrosoftSearchRequest.ts │ │ ├── IMicrosoftSearchResponse.ts │ │ ├── ISharePointManagedProperty.ts │ │ ├── ISharePointSearchQuery.ts │ │ ├── ISharePointSearchResponse.ts │ │ ├── ISharePointSearchResults.ts │ │ ├── ISortFieldConfiguration.ts │ │ └── ISuggestQuery.ts ├── providers │ ├── AvailableSuggestionProviders.ts │ ├── ISuggestionProviderConfiguration.ts │ └── SharePointSuggestionProvider.ts ├── queryModifier │ └── IQueryModifierConfiguration.ts ├── services │ ├── dynamicDataService │ │ ├── DynamicDataService.ts │ │ └── IDynamicDataService.ts │ ├── extensibilityService │ │ ├── ExtensibilityService.ts │ │ └── IExtensibilityService.ts │ ├── searchService │ │ ├── ISharePointSearchService.ts │ │ └── SharePointSearchService.ts │ ├── taxonomyService │ │ ├── ITaxonomyItems.ts │ │ ├── ITaxonomyService.ts │ │ └── TaxonomyService.ts │ ├── templateService │ │ ├── ITemplateService.ts │ │ └── TemplateService.ts │ └── tokenService │ │ └── TokenService.ts ├── styles │ └── Common.module.scss └── webparts │ ├── searchBox │ ├── ISearchBoxWebPartProps.ts │ ├── SearchBoxWebPart.manifest.json │ ├── SearchBoxWebPart.ts │ ├── components │ │ ├── ISearchBoxContainerProps.ts │ │ ├── ISearchBoxContainerState.ts │ │ ├── SearchBoxAutoComplete │ │ │ ├── ISearchBoxAutoCompleteProps.ts │ │ │ ├── ISearchBoxAutoCompleteState.ts │ │ │ └── SearchBoxAutoComplete.tsx │ │ ├── SearchBoxContainer.module.scss │ │ └── SearchBoxContainer.tsx │ └── loc │ │ ├── cs-cz.js │ │ ├── da-dk.js │ │ ├── de-de.js │ │ ├── en-us.js │ │ ├── es-es.js │ │ ├── fi-fi.js │ │ ├── fr-fr.js │ │ ├── it-it.js │ │ ├── mystrings.d.ts │ │ ├── nb-no.js │ │ ├── nl-nl.js │ │ ├── pl-pl.js │ │ ├── pt-br.js │ │ └── sv-SE.js │ ├── searchFilters │ ├── ISearchFiltersWebPartProps.ts │ ├── SearchFiltersWebPart.manifest.json │ ├── SearchFiltersWebPart.ts │ ├── components │ │ ├── ISearchFiltersContainerProps.ts │ │ ├── ISearchFiltersContainerState.ts │ │ └── SearchFiltersContainer.tsx │ └── loc │ │ ├── cs-cz.js │ │ ├── da-dk.js │ │ ├── de-de.js │ │ ├── en-us.js │ │ ├── es-es.js │ │ ├── fi-fi.js │ │ ├── fr-fr.js │ │ ├── it-it.js │ │ ├── mystrings.d.ts │ │ ├── nb-no.js │ │ ├── nl-nl.js │ │ ├── pl-pl.js │ │ ├── pt-br.js │ │ └── sv-SE.js │ ├── searchResults │ ├── ISearchResultsWebPartProps.ts │ ├── SearchResultsWebPart.manifest.json │ ├── SearchResultsWebPart.ts │ ├── components │ │ ├── ISearchResultsContainerProps.ts │ │ ├── ISearchResultsContainerState.ts │ │ ├── SearchResultsContainer.module.scss │ │ └── SearchResultsContainer.tsx │ └── loc │ │ ├── cs-cz.js │ │ ├── da-dk.js │ │ ├── de-de.js │ │ ├── en-us.js │ │ ├── es-es.js │ │ ├── fi-fi.js │ │ ├── fr-fr.js │ │ ├── it-it.js │ │ ├── mystrings.d.ts │ │ ├── nb-no.js │ │ ├── nl-nl.js │ │ ├── pl-pl.js │ │ ├── pt-br.js │ │ └── sv-SE.js │ └── searchVerticals │ ├── ISearchVerticalsWebPartProps.ts │ ├── SearchVerticalsWebPart.manifest.json │ ├── SearchVerticalsWebPart.ts │ ├── components │ ├── ISearchVerticalsContainerProps.ts │ ├── ISearchVerticalsContainerState.ts │ ├── SearchVerticalsContainer.module.scss │ └── SearchVerticalsContainer.tsx │ └── loc │ ├── cs-cz.js │ ├── da-dk.js │ ├── de-de.js │ ├── en-us.js │ ├── es-es.js │ ├── fi-fi.js │ ├── fr-fr.js │ ├── it-it.js │ ├── mystrings.d.ts │ ├── nb-no.js │ ├── nl-nl.js │ ├── pl-pl.js │ ├── pt-br.js │ └── sv-SE.js ├── teams ├── 544c1372-42df-47c3-94d6-017428cd2baf_color.png ├── 544c1372-42df-47c3-94d6-017428cd2baf_outline.png ├── 8de5b2b8-7e5a-49ec-8db6-812f76c375f2_color.png ├── 8de5b2b8-7e5a-49ec-8db6-812f76c375f2_outline.png ├── a5259212-77ae-40a0-9095-805ae2a0d5e9_color.png ├── a5259212-77ae-40a0-9095-805ae2a0d5e9_outline.png ├── e255fd67-fb1d-4e96-bc1e-31fd66979667_color.png └── e255fd67-fb1d-4e96-bc1e-31fd66979667_outline.png └── tsconfig.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: FranckyC # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for the modern search 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Log requests as ideas in the discussion forum. 11 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/pull_request_template.md: -------------------------------------------------------------------------------- 1 | > ⚠️ NOTE: As of today, we only accept PRs for bug fixes due an on-going complete refactoring operation. If your PR is related to a new feature, please wait for the next version to be released. 2 | 3 | ## Guidelines 4 | 5 | - _If your PR is related to an existing issue, please refer it using '#'._ 6 | - _If you changed the behavior of an existing feature, make sure you've updated the **[documentation](https://microsoft-search.github.io/pnp-modern-search/build-the-doc/)** as well if applicable._ 7 | 8 | ## Problem 9 | 10 | _What problem are you trying to solve?_ 11 | 12 | ## Solution 13 | 14 | _How did you solve the problem?_ 15 | 16 | ## Other changes (e.g. bug fixes, UI tweaks, small refactors) 17 | -------------------------------------------------------------------------------- /.github/workflows/publish-docs.yml: -------------------------------------------------------------------------------- 1 | name: Publish Docs manually 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | publish_docs: 7 | default: true 8 | description: 'Publish docs?' 9 | 10 | jobs: 11 | release: 12 | runs-on: ubuntu-latest 13 | environment: production 14 | if: ${{ github.event.inputs.publish_docs }} 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | fetch-depth: 0 19 | 20 | - name: Setup python 21 | uses: actions/setup-python@v5 22 | with: 23 | python-version: 3.x 24 | 25 | - name: Deploy documentation 26 | run: | 27 | pip install markdown-include 28 | pip install mkdocs-material==7.2.4 29 | mkdocs gh-deploy --force -------------------------------------------------------------------------------- /.github/workflows/release-template.md: -------------------------------------------------------------------------------- 1 | **This solution includes only one `.sppkg` file:** 2 | - `pnp-modern-search-parts-.sppkg` (Mandatory). 3 | 4 | > Extensions (i.e. custom web components, layouts, etc.) must be deployed separately. See [PnP Modern Search - Extensibility samples](https://github.com/microsoft-search/pnp-modern-search-extensibility-samples) for more information. 5 | 6 | **Useful resources** 7 | 8 | - [Official documentation](https://microsoft-search.github.io/pnp-modern-search/) 9 | 10 | ____ 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | site/* 2 | 3 | # Mac files 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | SharePoint Patterns and Practices Community Search Solutions 2 | Copyright (c) Microsoft Corporation 3 | 4 | All rights reserved. 5 | 6 | MIT License 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. -------------------------------------------------------------------------------- /docs/assets/DataSources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/DataSources.png -------------------------------------------------------------------------------- /docs/assets/LCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/LCP.png -------------------------------------------------------------------------------- /docs/assets/NoAccessError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/NoAccessError.png -------------------------------------------------------------------------------- /docs/assets/api-access-approved.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/api-access-approved.jpg -------------------------------------------------------------------------------- /docs/assets/api-access-pending.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/api-access-pending.jpg -------------------------------------------------------------------------------- /docs/assets/app_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/app_catalog.png -------------------------------------------------------------------------------- /docs/assets/cards_layout_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/cards_layout_options.png -------------------------------------------------------------------------------- /docs/assets/extensibility/adaptive_cards_templating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/adaptive_cards_templating.png -------------------------------------------------------------------------------- /docs/assets/extensibility/extensibility_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/extensibility_configuration.png -------------------------------------------------------------------------------- /docs/assets/extensibility/extensibility_configuration_manifest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/extensibility_configuration_manifest.png -------------------------------------------------------------------------------- /docs/assets/extensibility/handlebars_templating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/handlebars_templating.png -------------------------------------------------------------------------------- /docs/assets/extensibility/implement_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/implement_interface.png -------------------------------------------------------------------------------- /docs/assets/extensibility/layout/custom_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/layout/custom_layout.png -------------------------------------------------------------------------------- /docs/assets/extensibility/layout/layout_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/layout/layout_properties.png -------------------------------------------------------------------------------- /docs/assets/extensibility/library_manifest_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/library_manifest_id.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/breadcrumb_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/breadcrumb_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/collapsible_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/collapsible_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/custom_web_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/custom_web_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/debug_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/debug_types.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/document_card_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/document_card_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/fileicon_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/fileicon_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/filepreview_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/filepreview_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/icon_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/icon_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/panel_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/panel_component.png -------------------------------------------------------------------------------- /docs/assets/extensibility/web_components/persona_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/extensibility/web_components/persona_component.png -------------------------------------------------------------------------------- /docs/assets/extra.css: -------------------------------------------------------------------------------- 1 | .center { 2 | display: block; 3 | margin-left: auto; 4 | margin-right: auto; 5 | } 6 | 7 | .logo { 8 | width: 150px; 9 | } 10 | 11 | .md-header { 12 | background-color: #0078d4; 13 | } 14 | 15 | .md-tabs { 16 | background-color: #ecf0f1; 17 | } 18 | 19 | .md-tabs__link { 20 | opacity: 1; 21 | color: #0078d4; 22 | } -------------------------------------------------------------------------------- /docs/assets/installation-enable-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/installation-enable-app.png -------------------------------------------------------------------------------- /docs/assets/pnp_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/pnp_logo.png -------------------------------------------------------------------------------- /docs/assets/theme_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/theme_debug.png -------------------------------------------------------------------------------- /docs/assets/theme_field.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/theme_field.png -------------------------------------------------------------------------------- /docs/assets/using-query-tools/PeopleSearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/using-query-tools/PeopleSearch.png -------------------------------------------------------------------------------- /docs/assets/using-query-tools/ReindexLibrary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/using-query-tools/ReindexLibrary.png -------------------------------------------------------------------------------- /docs/assets/using-query-tools/rightQuery1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/using-query-tools/rightQuery1.png -------------------------------------------------------------------------------- /docs/assets/using-query-tools/wrongQuery1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/using-query-tools/wrongQuery1.png -------------------------------------------------------------------------------- /docs/assets/v3_v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/v3_v4.png -------------------------------------------------------------------------------- /docs/assets/webparts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/dynamic_data_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/dynamic_data_source.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/search_box_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/search_box_settings.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/search_box_suggestions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/search_box_suggestions.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/search_box_wp_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/search_box_wp_default.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/search_box_wp_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/search_box_wp_picker.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/suggestions_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/suggestions_demo.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-box/suggestions_providers_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-box/suggestions_providers_panel.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/checkbox_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/checkbox_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/combo_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/combo_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/dateinterval_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/dateinterval_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/daterange_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/daterange_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/filter_deep_linking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/filter_deep_linking.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/filter_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/filter_settings.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/filter_settings_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/filter_settings_panel.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/available_layouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/available_layouts.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/custom_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/custom_edit.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/custom_external_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/custom_external_file.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/custom_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/custom_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/debug_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/debug_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/horizontal_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/horizontal_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/horizontal_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/horizontal_options.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/panel_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/panel_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/panel_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/panel_options.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/layouts/vertical_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/layouts/vertical_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/operator_filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/operator_filters.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/people_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/people_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/search_filters_wp_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/search_filters_wp_default.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/search_filters_wp_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/search_filters_wp_picker.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-filters/wp_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-filters/wp_connection.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/about_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/about_page.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/allow_item_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/allow_item_selection.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/available_connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/available_connections.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/configure_data_results_connection_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/configure_data_results_connection_1.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/configure_data_results_connection_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/configure_data_results_connection_2.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/configure_data_results_connection_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/configure_data_results_connection_3.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/configure_data_results_connection_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/configure_data_results_connection_4.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/configure_data_results_connection_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/configure_data_results_connection_5.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/filters.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/input_text_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/input_text_dynamic.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/input_text_static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/input_text_static.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/select_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/select_vertical.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/connections/verticals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/connections/verticals.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/available_layouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/available_layouts.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/card_allow_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/card_allow_html.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/card_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/card_preview.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/cards_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/cards_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/common_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/common_options.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/custom_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/custom_edit.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/custom_external_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/custom_external_file.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/custom_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/custom_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/debug_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/debug_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/details_list_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/details_list_fields.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/details_list_hb_expr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/details_list_hb_expr.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/details_list_hb_expr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/details_list_hb_expr2.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/details_list_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/details_list_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/hide_webpart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/hide_webpart.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/manage_cards_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/manage_cards_fields.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/manage_people_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/manage_people_fields.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/people_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/people_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/persona_card_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/persona_card_hover.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/result_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/result_types.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/result_types_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/result_types_btn.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/result_types_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/result_types_result.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/result_types_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/result_types_template.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/see_all_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/see_all_link.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/simple_list_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/simple_list_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/simple_list_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/simple_list_thumbnail.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/layouts/slider_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/layouts/slider_layout.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/localization_crawled_property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/localization_crawled_property.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/page1/available_datasources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/page1/available_datasources.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/page1/custom_slot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/page1/custom_slot.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/page1/data_source_slots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/page1/data_source_slots.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/page1/slot_concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/page1/slot_concept.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/search_results_wp_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/search_results_wp_picker.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-results/search_results_wp_placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-results/search_results_wp_placeholder.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-verticals/configure_verticals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-verticals/configure_verticals.png -------------------------------------------------------------------------------- /docs/assets/webparts/search-verticals/search_verticals_wp_picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/assets/webparts/search-verticals/search_verticals_wp_picker.png -------------------------------------------------------------------------------- /docs/build-the-doc.md: -------------------------------------------------------------------------------- 1 | # Building the Documentation 2 | 3 | Building the documentation locally can help you visualize change you are making to the docs. What you see locally should be what you see online. 4 | 5 | ## Building 6 | 7 | Documentation is built using MkDocs. You will need to latest version of Python (tested on version 3.7.1) and pip. If you're on the Windows operating system, make sure you have added Python to your [Path environment variable](https://docs.python.org/3/using/windows.html). 8 | 9 | When executing the pip module on Windows you can prefix it with **python -m**. 10 | For example: 11 | 12 | `python -m pip install mkdocs-material` 13 | 14 | - [Install MkDocs](https://www.mkdocs.org/#installation) 15 | - `pip install mkdocs==1.2.2` 16 | - `pip install markdown-include` 17 | - Install the Material theme 18 | - `pip install mkdocs-material==7.2.4` 19 | - Serve it up 20 | - `mkdocs serve` 21 | - Open a browser to http://127.0.0.1:8000/ 22 | - Deploy 23 | - `mkdocs gh-deploy` from main branch -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/create-your-first-custom-template/custom_search-results-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/create-your-first-custom-template/custom_search-results-example.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/create-your-first-custom-template/insert_external-url-for-custom-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/create-your-first-custom-template/insert_external-url-for-custom-template.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/create-your-first-custom-template/myfirsttemplate_file-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/create-your-first-custom-template/myfirsttemplate_file-screenshot.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/edit-custom-templates-in-sharepoint/open_htmlfile-in-text-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/edit-custom-templates-in-sharepoint/open_htmlfile-in-text-editor.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/edit-custom-templates-in-sharepoint/save_the-changed-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/edit-custom-templates-in-sharepoint/save_the-changed-file.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/open-template-folder-onedrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/open-template-folder-onedrive.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/refresh-search-page-and-see-result-of-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/refresh-search-page-and-see-result-of-changes.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/sync-or-addshortcut-to-onedrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/edit-templates-using-vscode-and-onedrive/sync-or-addshortcut-to-onedrive.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/central-repository-multiple-sites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/central-repository-multiple-sites.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/custom-template-external-url-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/custom-template-external-url-edit.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/sharepoint-resources-lib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/create-custom-layouts/assets/store-custom-templates-in-sharepoint/sharepoint-resources-lib.png -------------------------------------------------------------------------------- /docs/create-custom-layouts/index.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | If you are looking for inspiration, you can find a selection of custom layouts in the 5 | [Custom layouts repository](https://github.com/microsoft-search/pnp-modern-search-layouts/blob/main/README.md) 6 | 7 | If you have a custom layout you want to share, please submit a PR to the repository. 8 | 9 | 10 | ## [Scenario Create your first custom template](create-your-first-custom-template.md) 11 | 12 | Create your first custom template 13 | 14 | ## [Store custom templates in SharePoint](howto-store-custom-templates-in-sharepoint.md) 15 | 16 | Storing custom templates as files in a SharePoint site, is great when you want to use them across sites and want some control. 17 | 18 | ## [Edit custom templates in SharePoint](edit-custom-templates-in-sharepoint.md) 19 | 20 | Storing custom templates as files in a SharePoint site, is great when you want to use them across sites and want some control. 21 | 22 | ## [Edit custom templates locally in Visual Studio Code](edit-templates-using-vscode-and-onedrive.md) 23 | 24 | When you have your templates in SharePoint, it is easy to setup a way to edit locally on your computer and still get the result in SharePoint almost instantly. 25 | -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-first-results-webpart-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-first-results-webpart-layout.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-first-results-webpart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-first-results-webpart.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-second-results-webpart-connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-second-results-webpart-connections.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-second-results-webpart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/configure-second-results-webpart.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/sharepoint-admin-center-hub-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/sharepoint-admin-center-hub-architecture.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/simple-search-page-two-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/simple-search-page-two-results.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Connect-to-a-search-results-webpart/solution-use-results-webpart-connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Connect-to-a-search-results-webpart/solution-use-results-webpart-connections.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/GraphConnectors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/GraphConnectors.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/Results_wp_setup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/Results_wp_setup1.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/Schema_for_graph_connector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/Schema_for_graph_connector.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/SelectedProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/SelectedProperties.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/columnsAndRefiners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/columnsAndRefiners.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/finalresult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-showing-graph-connector-data/finalresult.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/add-PnP-web-parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/add-PnP-web-parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/configure-search-verticals-on-first-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/configure-search-verticals-on-first-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/configure-search-verticals-on-second-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/configure-search-verticals-on-second-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/first-result-web-part-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/first-result-web-part-connection.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/first-result-web-part-vertical-everything.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/first-result-web-part-vertical-everything.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-box-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-box-configuration.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-vertical-on-first-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-vertical-on-first-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-vertical-on-second-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/search-vertical-on-second-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/second-result-web-part-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/second-result-web-part-connection.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/second-result-web-part-vertical-videos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/second-result-web-part-vertical-videos.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/used-search-web-parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-on-different-pages/used-search-web-parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/BirthdayUPA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/BirthdayUPA.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/RefinableDate00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/RefinableDate00.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/birthdays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-birthdays/birthdays.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/BirthdayAndHiredateSyncList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/BirthdayAndHiredateSyncList.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/anniversaries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/anniversaries.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/mapping1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/mapping1.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/mapping2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/mapping2.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/upa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Setup-Results-web-part-to-show-work-anniversaries/upa.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/Create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/Create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/add-promoted-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/add-promoted-result.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/add-webparts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/add-webparts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/configure-search-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/configure-search-results.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/configured-query-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/configured-query-rule.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/connection-search-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/connection-search-box.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/create-a-new-query-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/create-a-new-query-rule.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/query-rule-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/query-rule-information.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/result-webpart-enable-query-rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/result-webpart-enable-query-rules.png -------------------------------------------------------------------------------- /docs/scenarios/assets/Use-query-rules-for-promoted-links/show-promoted-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/Use-query-rules-for-promoted-links/show-promoted-links.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/Add-PnP-Web-Parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/Add-PnP-Web-Parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/Create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/Create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/arrange-your-search-web-parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/arrange-your-search-web-parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/configure-Search-Box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/configure-Search-Box.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/configure-customize-filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/configure-customize-filters.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/configure-search-filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/configure-search-filters.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/configure-search-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/configure-search-results.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/people-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/people-search.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/search-results-connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/search-results-connections.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/search-results-layout-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/search-results-layout-options.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-a-useful-people-search/search-results-layouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-a-useful-people-search/search-results-layouts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/create-simple-search-page/add-web-parts-to-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-simple-search-page/add-web-parts-to-page.jpg -------------------------------------------------------------------------------- /docs/scenarios/assets/create-simple-search-page/available-data-sources.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-simple-search-page/available-data-sources.jpg -------------------------------------------------------------------------------- /docs/scenarios/assets/create-simple-search-page/new-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-simple-search-page/new-page.jpg -------------------------------------------------------------------------------- /docs/scenarios/assets/create-simple-search-page/use-input-query-text.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-simple-search-page/use-input-query-text.jpg -------------------------------------------------------------------------------- /docs/scenarios/assets/create-simple-search-page/web-part-toolbox-pnp-modern-search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/create-simple-search-page/web-part-toolbox-pnp-modern-search.jpg -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/Managed-Properties-RefinableString.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/Managed-Properties-RefinableString.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/add-pnp-search-results-webpart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/add-pnp-search-results-webpart.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/create-a-sharepoint-term-set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/create-a-sharepoint-term-set.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/document-library-in-english.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/document-library-in-english.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/document-library-in-german.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/document-library-in-german.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/enable-localization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/enable-localization.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-in-english.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-in-english.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-in-german.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-in-german.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-webpart-confguration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/results-webpart-confguration.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/search-results-without-translation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/search-results-without-translation.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/site-column-managed-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/site-column-managed-metadata.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/webpart-configuration-manage-columns-ows_taxid_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/webpart-configuration-manage-columns-ows_taxid_.png -------------------------------------------------------------------------------- /docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/webpart-configuration-manage-columns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/display-multilingual-term-store-values-with-pnp-search-results/webpart-configuration-manage-columns.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/connect-filter-web-part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/connect-filter-web-part.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/connect-search-results-web-part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/connect-search-results-web-part.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/page-layout-with-filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/page-layout-with-filters.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/selected-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/selected-properties.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/set-up-filters-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/set-up-filters-properties.png -------------------------------------------------------------------------------- /docs/scenarios/assets/page-with-filters/set-up-filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/page-with-filters/set-up-filters.png -------------------------------------------------------------------------------- /docs/scenarios/assets/search-verticals-with-parameter/configure-search-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/search-verticals-with-parameter/configure-search-results.png -------------------------------------------------------------------------------- /docs/scenarios/assets/search-verticals-with-parameter/configure-search-verticals-query-parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/search-verticals-with-parameter/configure-search-verticals-query-parameter.png -------------------------------------------------------------------------------- /docs/scenarios/assets/search-verticals-with-parameter/configure-search-verticals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/search-verticals-with-parameter/configure-search-verticals.png -------------------------------------------------------------------------------- /docs/scenarios/assets/search-verticals-with-parameter/example-query-string-parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/search-verticals-with-parameter/example-query-string-parameter.png -------------------------------------------------------------------------------- /docs/scenarios/assets/search-verticals-with-parameter/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/Create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/Create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/add-web-parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/add-web-parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/configure-search-results-query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/configure-search-results-query.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/query-string-parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/query-string-parameter.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/query-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/query-template.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/quicklinks-query-string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/quicklinks-query-string.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/readme: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/scenarios/assets/use-query-string-in-url/solution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-query-string-in-url/solution.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Add-PnP-Results-Web-Parts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Add-PnP-Results-Web-Parts.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Create-a-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Create-a-page.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Layout1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Layout1.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Layout2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Layout2.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/MarketingDepartment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/MarketingDepartment.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Setup-page1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Setup-page1.png -------------------------------------------------------------------------------- /docs/scenarios/assets/use-search-as-a-department-webpart/Termstore_marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/scenarios/assets/use-search-as-a-department-webpart/Termstore_marketing.png -------------------------------------------------------------------------------- /docs/scenarios/includes/deployment-note.md: -------------------------------------------------------------------------------- 1 | !!! note 2 | The PnP Modern Search Web Parts must be deployed to your App Catalog and activated on your site. See the [installation documentation](../../installation.md) for details. 3 | -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/custom.md: -------------------------------------------------------------------------------- 1 | The 'custom' layout is the minimal layout to start with if you want to create your own customized UI from scratch. You can also start from an existing layout. 2 | 3 | !["Custom"](../../../assets/webparts/search-filters/layouts/custom_layout.png){: .center} 4 | 5 | 6 | > Updating a builtin layout (ex: 'Horizontal', 'Vertical', etc.) will automatically switch the selected layout to 'Custom' with your modifications as content. **All previous custom layout content will be overwritten**. 7 | 8 | !["Custom edit"](../../../assets/webparts/search-results/layouts/custom_edit.png){: .center} 9 | 10 | You have also the ability to use an external _.html_ file to centralize your customizations. This file must be stored in an accessible location for uses (ex: a SharePoint document library with _'Read'_ permissions for concerned users). 11 | 12 | !["External file"](../../../assets/webparts/search-filters/layouts/custom_external_file.png){: .center} 13 | 14 | > Unless you specify an external file, the template content is stored in the Web Part property bag. 15 | 16 | Updating the layout HTML template is a good option for minor UI updates (Ex: add a link, update colors, etc.). For more control over the UI, you may want to use the extensibility library feature. -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/debug.md: -------------------------------------------------------------------------------- 1 | The 'debug' layout allows you to see all relevant data used by filter templates during render. 2 | 3 | !["Debug"](../../../assets/webparts/search-filters/layouts/debug_layout.png){: .center} 4 | 5 | The template context object exposes the following properties: 6 | 7 | ```json 8 | { 9 | "filters": "", 10 | "selectedFilters": "", 11 | "instanceId": "", 12 | "theme": "", 13 | "strings": "", 14 | "selectedOnce": "", 15 | "properties": "" 16 | } 17 | ``` 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/horizontal.md: -------------------------------------------------------------------------------- 1 | Display filters as an horizontal bar. For instance, it fits nicely with 'Combo' filter templates. 2 | 3 | !["Horizontal"](../../../assets/webparts/search-filters/layouts/horizontal_layout.png){: .center} 4 | 5 | #### Layout options 6 | 7 | !["Horizontal layout options"](../../../assets/webparts/search-filters/layouts/horizontal_options.png){: .center} 8 | 9 | | Setting | Description | Default value 10 | | ------- |---------------- | ---------- 11 | | **Preferred number of cards per row** | Specify the **preferred** number of filters to display per row **when the required width space is available**. The Web Part will always adjust the number of possible filters to display depending the available width. It means that if you set this value to '3' but you display the Web Part in small column, only 1 filter will be displayed. | 3. 12 | -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/index.md: -------------------------------------------------------------------------------- 1 | ## Builtin layouts 2 | 3 | By default, the following layouts are provided: 4 | 5 | !["Available layouts"](../../../assets/webparts/search-filters/layouts/available_layouts.png){: .center} 6 | 7 | ### Vertical 8 | 9 | {!usage/search-filters/layouts/vertical.md!} 10 | 11 | ### Horizontal 12 | 13 | {!usage/search-filters/layouts/horizontal.md!} 14 | 15 | ### Panel 16 | 17 | {!usage/search-filters/layouts/panel.md!} 18 | 19 | ### Debug 20 | 21 | {!usage/search-filters/layouts/debug.md!} 22 | 23 | ### Custom 24 | 25 | {!usage/search-filters/layouts/custom.md!} 26 | -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/panel.md: -------------------------------------------------------------------------------- 1 | Display filters as an side panel. Useful to gain space on the page. 2 | 3 | !["Panel"](../../../assets/webparts/search-filters/layouts/panel_layout.png){: .center} 4 | 5 | #### Layout options 6 | 7 | !["Panel layout options"](../../../assets/webparts/search-filters/layouts/panel_options.png){: .center} 8 | 9 | | Setting | Description | Default value 10 | | ------- |---------------- | ---------- 11 | | **Button label to display** | The label to display to open the panel. | "Show filters". 12 | | **Panel header text** | The label to display to in the panel header. | "Filters". 13 | | **Modal** | If enabled, the panel will be modal (you can't select elemtns outside the panel). | True. 14 | | **Light dismiss** | If enabled, dismiss the panel when click outside. | True. 15 | | **Panel size** | The filter panel size to display. | Small (right). -------------------------------------------------------------------------------- /docs/usage/search-filters/layouts/vertical.md: -------------------------------------------------------------------------------- 1 | Display filters as a vertical bar: 2 | 3 | !["Vertical"](../../../assets/webparts/search-filters/layouts/vertical_layout.png){: .center} -------------------------------------------------------------------------------- /docs/usage/search-results/common/paging.md: -------------------------------------------------------------------------------- 1 | The paging options are available for all data sources. 2 | 3 | | Setting | Description | Default value | 4 | | --------| ----------- |---------------| 5 | |**Show paging** | Hide or display the paging control. 6 | |**Number of items per page** | Specify the number of items to show per page. 7 | |**Number of pages to display in range** | Determines the number of pages to display in range. 8 | |**Hide navigation buttons (prev page, next page)** | Self explicit. 9 | |**Hide first/last navigation buttons** | Self explicit. 10 | |**Hide navigation buttons (prev, next, first, last) if they are disabled.** | Self explicit. -------------------------------------------------------------------------------- /docs/usage/search-results/data-sources/index.md: -------------------------------------------------------------------------------- 1 | # Data sources 2 | 3 | ## Built-in data sources 4 | 5 | By default, the following data sources are available: 6 | 7 | !["Available data sources"](../../../assets/webparts/search-results/page1/available_datasources.png){: .center} 8 | 9 | > Be careful, when you switch the data source in the property pane, all the previous data source properties are lost. We do this to avoid polluting the web part property bag with multiple useless configurations. 10 | 11 | ### SharePoint Search 12 | 13 | {!usage/search-results/data-sources/sharepoint-search.md!} 14 | 15 | ### Microsoft Search 16 | 17 | {!usage/search-results/data-sources/microsoft-search.md!} 18 | 19 | ## Paging 20 | 21 | {!usage/search-results/common/paging.md!} 22 | -------------------------------------------------------------------------------- /docs/usage/search-results/layouts/templating.md: -------------------------------------------------------------------------------- 1 | ## Preview behavior 2 | 3 | 4 | ## Light updates 5 | ## Advanced updates -------------------------------------------------------------------------------- /docs/v3/build-the-doc.md: -------------------------------------------------------------------------------- 1 | # Building the Documentation 2 | 3 | Building the documentation locally can help you visualize change you are making to the docs. What you see locally should be what you see online. 4 | 5 | ## Building 6 | Documentation is built using MkDocs. You will need to latest version of Python (tested on version 3.7.1) and pip. If you're on the Windows operating system, make sure you have added Python to your [Path environment variable](https://docs.python.org/3/using/windows.html). 7 | 8 | When executing the pip module on Windows you can prefix it with **python -m**. 9 | For example: 10 | 11 | `python -m pip install mkdocs-material` 12 | 13 | - [Install MkDocs](https://www.mkdocs.org/#installation) 14 | - `pip install mkdocs` 15 | - Install the Material theme 16 | - `pip install mkdocs-material==4.6.3` 17 | - Serve it up 18 | - `mkdocs serve` 19 | - Open a browser to http://127.0.0.1:8000/ 20 | - Deploy 21 | - `mkdocs gh-deploy` from main branch -------------------------------------------------------------------------------- /docs/v3/contributors.md: -------------------------------------------------------------------------------- 1 | # Contributors - v3 2 | [Table of contents](../index.md) 3 | 4 | This solution won't be here without the volunteer work of these people. Feel free to support them if you like the solution! 5 | 6 | - Franck Cornu (aequos) - [@FranckCornu](http://www.twitter.com/FranckCornu) - [GitHub Sponsor Page](https://github.com/sponsors/FranckyC) 7 | - Mikael Svenson (Microsoft) - [@mikaelsvenson](http://www.twitter.com/mikaelsvenson) 8 | - Yannick Reekmans - [@yannickreekmans](https://twitter.com/yannickreekmans) 9 | - Albert-Jan Schot - [@appieschot](https://twitter.com/appieschot) 10 | - Tarald Gåsbakk (PuzzlePart) - [@taraldgasbakk](https://twitter.com/Taraldgasbakk) 11 | - Brad Schlintz (Microsoft) - [@bschlintz](https://twitter.com/bschlintz) 12 | - Richard Gigan - [@PooLP](https://twitter.com/PooLP) -------------------------------------------------------------------------------- /docs/v3/images/ChangeColor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/ChangeColor.gif -------------------------------------------------------------------------------- /docs/v3/images/ChangeNode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/ChangeNode.gif -------------------------------------------------------------------------------- /docs/v3/images/NavNodesMain.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/NavNodesMain.gif -------------------------------------------------------------------------------- /docs/v3/images/WebComponent_Accordion_PopupExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/WebComponent_Accordion_PopupExample.png -------------------------------------------------------------------------------- /docs/v3/images/WebComponent_LookupListExtender_Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/WebComponent_LookupListExtender_Example.png -------------------------------------------------------------------------------- /docs/v3/images/WebComponent_Popup_Modal_Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/WebComponent_Popup_Modal_Example.png -------------------------------------------------------------------------------- /docs/v3/images/all_layouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/all_layouts.png -------------------------------------------------------------------------------- /docs/v3/images/azure_keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/azure_keys.png -------------------------------------------------------------------------------- /docs/v3/images/best_bets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/best_bets.png -------------------------------------------------------------------------------- /docs/v3/images/coderenderer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/coderenderer.gif -------------------------------------------------------------------------------- /docs/v3/images/coderenderertemplate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/coderenderertemplate.gif -------------------------------------------------------------------------------- /docs/v3/images/container_tree_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/container_tree_template.png -------------------------------------------------------------------------------- /docs/v3/images/cors_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/cors_settings.png -------------------------------------------------------------------------------- /docs/v3/images/custom_template_fields.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/custom_template_fields.PNG -------------------------------------------------------------------------------- /docs/v3/images/custom_template_fields_selection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/custom_template_fields_selection.PNG -------------------------------------------------------------------------------- /docs/v3/images/debug_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/debug_layout.png -------------------------------------------------------------------------------- /docs/v3/images/default_selected_filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/default_selected_filters.png -------------------------------------------------------------------------------- /docs/v3/images/details_list_hb_expr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/details_list_hb_expr.png -------------------------------------------------------------------------------- /docs/v3/images/details_list_hb_expr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/details_list_hb_expr2.png -------------------------------------------------------------------------------- /docs/v3/images/details_list_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/details_list_layout.png -------------------------------------------------------------------------------- /docs/v3/images/details_list_manage_columns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/details_list_manage_columns.png -------------------------------------------------------------------------------- /docs/v3/images/documentcards_html_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/documentcards_html_fields.png -------------------------------------------------------------------------------- /docs/v3/images/documentcards_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/documentcards_layout.png -------------------------------------------------------------------------------- /docs/v3/images/documentcards_manage_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/documentcards_manage_fields.png -------------------------------------------------------------------------------- /docs/v3/images/edit_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/edit_template.png -------------------------------------------------------------------------------- /docs/v3/images/enable_localization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/enable_localization.png -------------------------------------------------------------------------------- /docs/v3/images/function_devops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/function_devops.png -------------------------------------------------------------------------------- /docs/v3/images/function_devops_build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/function_devops_build.png -------------------------------------------------------------------------------- /docs/v3/images/luis_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/luis_apps.png -------------------------------------------------------------------------------- /docs/v3/images/luis_key_manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/luis_key_manage.png -------------------------------------------------------------------------------- /docs/v3/images/managed-property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/managed-property.png -------------------------------------------------------------------------------- /docs/v3/images/ngrok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/ngrok.png -------------------------------------------------------------------------------- /docs/v3/images/paging_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/paging_settings.png -------------------------------------------------------------------------------- /docs/v3/images/people_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/people_layout.png -------------------------------------------------------------------------------- /docs/v3/images/placeholders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/placeholders.png -------------------------------------------------------------------------------- /docs/v3/images/property_pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/property_pane.png -------------------------------------------------------------------------------- /docs/v3/images/property_pane2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/property_pane2.png -------------------------------------------------------------------------------- /docs/v3/images/property_pane3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/property_pane3.png -------------------------------------------------------------------------------- /docs/v3/images/query_modifiers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/query_modifiers.png -------------------------------------------------------------------------------- /docs/v3/images/query_modifiers_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/query_modifiers_select.png -------------------------------------------------------------------------------- /docs/v3/images/query_rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/query_rules.png -------------------------------------------------------------------------------- /docs/v3/images/react-search-refiners.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/react-search-refiners.gif -------------------------------------------------------------------------------- /docs/v3/images/renderervariables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/renderervariables.png -------------------------------------------------------------------------------- /docs/v3/images/result_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/result_preview.png -------------------------------------------------------------------------------- /docs/v3/images/result_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/result_types.png -------------------------------------------------------------------------------- /docs/v3/images/results_layout.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/results_layout.PNG -------------------------------------------------------------------------------- /docs/v3/images/sb_configure_suggestions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/sb_configure_suggestions.png -------------------------------------------------------------------------------- /docs/v3/images/sb_custom_suggestion_providers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/sb_custom_suggestion_providers.png -------------------------------------------------------------------------------- /docs/v3/images/sb_property_pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/sb_property_pane.png -------------------------------------------------------------------------------- /docs/v3/images/search-filters-property-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search-filters-property-pane.png -------------------------------------------------------------------------------- /docs/v3/images/search-pagination-property-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search-pagination-property-pane.png -------------------------------------------------------------------------------- /docs/v3/images/search-refiners-property-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search-refiners-property-pane.png -------------------------------------------------------------------------------- /docs/v3/images/search_box_luis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search_box_luis.png -------------------------------------------------------------------------------- /docs/v3/images/search_verticals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search_verticals.png -------------------------------------------------------------------------------- /docs/v3/images/search_verticals_propertypane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search_verticals_propertypane.png -------------------------------------------------------------------------------- /docs/v3/images/search_verticals_propertypane2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search_verticals_propertypane2.png -------------------------------------------------------------------------------- /docs/v3/images/search_verticals_propertypane3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/search_verticals_propertypane3.png -------------------------------------------------------------------------------- /docs/v3/images/simple_list_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/simple_list_layout.png -------------------------------------------------------------------------------- /docs/v3/images/slider_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/slider_layout.png -------------------------------------------------------------------------------- /docs/v3/images/wp_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/docs/v3/images/wp_connection.png -------------------------------------------------------------------------------- /docs/v3/search-parts/search-pagination.md: -------------------------------------------------------------------------------- 1 | # Search Pagination - v3 2 | [Table of contents](../index.md) 3 | 4 | > **This WebPart has been removed since the 3.11.0 version. If you had custom templates and need pagination, add the following code snippet in your template**: 5 | 6 | ``` 7 | {{#if @root.paging.showPaging}} 8 | 17 | 18 | {{/if}} 19 | ``` 20 | -------------------------------------------------------------------------------- /search-extensibility/.eslintrc.js: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-config/patch/modern-module-resolution'); 2 | module.exports = { 3 | extends: ['@microsoft/eslint-config-spfx/lib/profiles/react'], 4 | parserOptions: { tsconfigRootDir: __dirname }, 5 | rules: { 6 | "@typescript-eslint/no-explicit-any": 0, 7 | "@typescript-eslint/explicit-member-accessibility": 0, 8 | "@typescript-eslint/explicit-function-return-type": 0, 9 | "@typescript-eslint/typedef": 0, 10 | "no-throw-literal": 0, 11 | "@typescript-eslint/no-empty-function": 0, 12 | "@typescript-eslint/no-unused-vars": 0, 13 | }, 14 | }; -------------------------------------------------------------------------------- /search-extensibility/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Dependency directories 7 | node_modules 8 | 9 | # Build generated files 10 | dist 11 | lib 12 | solution 13 | temp 14 | release 15 | *.sppkg 16 | .heft 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # OSX 22 | .DS_Store 23 | 24 | # Visual Studio files 25 | .ntvs_analysis.dat 26 | .vs 27 | bin 28 | obj 29 | 30 | # Resx Generated Code 31 | *.resx.ts 32 | 33 | # Styles Generated Code 34 | *.scss.ts 35 | -------------------------------------------------------------------------------- /search-extensibility/.npmignore: -------------------------------------------------------------------------------- 1 | # Folders 2 | .vscode 3 | coverage 4 | node_modules 5 | sharepoint 6 | src 7 | temp 8 | config 9 | typings 10 | lib/extensions 11 | lib/webparts 12 | assets 13 | dist 14 | docs 15 | scripts 16 | .circleci 17 | tslint.json 18 | 19 | # Files 20 | *.csproj 21 | .git* 22 | .yo-rc.json 23 | .editorconfig 24 | gulpfile.js 25 | tsconfig.json 26 | yarn.lock 27 | *.tgz 28 | *.test.js 29 | *.test.js.map -------------------------------------------------------------------------------- /search-extensibility/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true -------------------------------------------------------------------------------- /search-extensibility/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "msjsdiag.debugger-for-chrome" 4 | ] 5 | } -------------------------------------------------------------------------------- /search-extensibility/.vscode/settings.json: -------------------------------------------------------------------------------- 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 | } -------------------------------------------------------------------------------- /search-extensibility/.yo-rc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@microsoft/generator-sharepoint": { 3 | "isCreatingSolution": true, 4 | "environment": "spo", 5 | "version": "1.20.0", 6 | "libraryName": "pnp-search-extensibility", 7 | "libraryId": "f13a5866-004f-4219-b078-69731f848bd1", 8 | "packageManager": "npm", 9 | "isDomainIsolated": false, 10 | "componentType": "library", 11 | "nodeVersion": "18.20.4", 12 | "sdkVersions": { 13 | "@microsoft/teams-js": "2.24.0", 14 | "@microsoft/microsoft-graph-client": "3.0.2" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /search-extensibility/README.md: -------------------------------------------------------------------------------- 1 | ## PnP Search Extensibility library 2 | 3 | PnP Modern Search uses the concept of 'extensibility libraries'. These are SharePoint Framework library components you put in the global or site collection app catalog that will be loaded automatically by Web Parts to enhance the experience and options (ex: new data source with new options, custom layout, etc.). Simple as that! 4 | 5 | ## Get started 6 | 7 | More information to get started can be found in the documentation for PnP Moderns Search at https://microsoft-search.github.io/pnp-modern-search/extensibility/. 8 | 9 | ## Code of Conduct 10 | 11 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 12 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or 13 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 14 | 15 | ## "Sharing is Caring" 16 | 17 | ## Disclaimer 18 | 19 | **THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** -------------------------------------------------------------------------------- /search-extensibility/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/config.2.0.schema.json", 3 | "version": "2.0", 4 | "bundles": { 5 | "pnp-search-extensibility-library": { 6 | "components": [ 7 | { 8 | "entrypoint": "./lib/index.js", 9 | "manifest": "./src/extensibilityLibrary.manifest.json" 10 | } 11 | ] 12 | } 13 | }, 14 | "externals": {}, 15 | "localizedResources": { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /search-extensibility/config/copy-assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/copy-assets.schema.json", 3 | "deployCdnPath": "./release/assets/" 4 | } -------------------------------------------------------------------------------- /search-extensibility/config/deploy-azure-storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json", 3 | "workingDir": "./release/assets/", 4 | "account": "", 5 | "container": "pnp-search-extensibility", 6 | "accessKey": "" 7 | } -------------------------------------------------------------------------------- /search-extensibility/config/sass.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/core-build/sass.schema.json" 3 | } -------------------------------------------------------------------------------- /search-extensibility/config/serve.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json", 3 | "port": 4321, 4 | "https": true 5 | } 6 | -------------------------------------------------------------------------------- /search-extensibility/config/write-manifests.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", 3 | "cdnBasePath": "" 4 | } -------------------------------------------------------------------------------- /search-extensibility/gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const build = require('@microsoft/sp-build-web'); 4 | 5 | build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`); 6 | 7 | var getTasks = build.rig.getTasks; 8 | build.rig.getTasks = function() { 9 | var result = getTasks.call(build.rig); 10 | 11 | result.set('serve', result.get('serve-deprecated')); 12 | 13 | return result; 14 | }; 15 | 16 | build.initialize(require('gulp')); -------------------------------------------------------------------------------- /search-extensibility/src/constants/ExtensibilityConstants.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/typedef */ 2 | export class ExtensibilityConstants { 3 | /** 4 | * Event name to use when a filter value is selected or unselected 5 | */ 6 | public static readonly EVENT_FILTER_UPDATED = 'filterUpdated'; 7 | 8 | /** 9 | * Event name to use when all filter values are applied at once 10 | */ 11 | public static readonly EVENT_FILTER_APPLY_ALL = 'filterApplyAll'; 12 | 13 | /** 14 | * Event name to use when all filter values are cleared at once 15 | */ 16 | public static readonly EVENT_FILTER_CLEAR_ALL = 'filterClearAll'; 17 | 18 | /** 19 | * Event name to use when the operator between filter values changes 20 | */ 21 | public static readonly EVENT_FILTER_VALUE_OPERATOR_UPDATED = 'filterOperatorUpdated'; 22 | 23 | /** 24 | * Event name to use when a sort field an direction are applied 25 | */ 26 | public static readonly EVENT_SORT_BY = 'sortBy'; 27 | } -------------------------------------------------------------------------------- /search-extensibility/src/extensibilityLibrary.manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "96dcffa8-2c69-47ec-ba5c-770213aeb4fe", 3 | "alias": "pnpSearchExtensibilityLibrary", 4 | "componentType": "Library", 5 | "version": "*", 6 | "manifestVersion": 2 7 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/IAdaptiveCardAction.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Defines the Adaptive Card action from an high level 3 | */ 4 | export interface IAdaptiveCardAction { 5 | 6 | /** 7 | * The Type of the Adaptive Card Action 8 | */ 9 | type: string; 10 | 11 | /** 12 | * The Title of the Adaptive Card Action 13 | */ 14 | title?: string; 15 | 16 | /** 17 | * The URL of the Adaptive Card Action, when it is an OpenUrlAction 18 | */ 19 | url?: string; 20 | 21 | /** 22 | * The Data object of the Adaptive Card Action, when it is a SubmitAction or a VerbAction 23 | */ 24 | data?: any; 25 | 26 | /** 27 | * The Verb of the Adaptive Card Action, when it is a VerbAction 28 | */ 29 | verb?: string; 30 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/ITokenService.ts: -------------------------------------------------------------------------------- 1 | export interface ITokenService { 2 | 3 | /** 4 | * Sets the value for a specific token 5 | * @internal this method is not intended to be used directly in your code. 6 | * @param token the token name 7 | * @param value the value to set 8 | */ 9 | setTokenValue(token: string, value: any): void; 10 | 11 | /** 12 | * Gets the value of a specific token 13 | * @param token the token name to retrieve 14 | */ 15 | getTokenValue(token: string): any; 16 | 17 | /** 18 | * Resolves tokens for the specified input string. 19 | * @param string 20 | */ 21 | resolveTokens(string: string): Promise; 22 | 23 | /** 24 | * Retrieves available current page properties 25 | * @internal this method is not intended to be used directly in your code. 26 | */ 27 | getPageProperties(): Promise; 28 | 29 | /** 30 | * Retrieve all current user profile properties 31 | * @internal this method is not intended to be used directly in your code. 32 | */ 33 | getUserProfileProperties(): Promise; 34 | } 35 | 36 | export interface IProfileProperties { 37 | [propertyName: string]: string; 38 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/IDataSourceData.ts: -------------------------------------------------------------------------------- 1 | import { IDataFilterResult } from '../filters/IDataFilter'; 2 | import { IResultTemplates } from './IResultTemplates'; 3 | 4 | export interface IDataSourceData { 5 | 6 | /** 7 | * Items returned by the data source. 8 | */ 9 | items: any[]; 10 | 11 | /** 12 | * Any other property returned by the data source to be used in the Handlebars template context. 13 | */ 14 | [key: string]: any; 15 | 16 | /** 17 | * The available filters provided by the data source according to the filters configuration provided from the data context (if applicable). 18 | */ 19 | filters?: IDataFilterResult[]; 20 | 21 | /** 22 | * Result templates available for items provided by the data source 23 | */ 24 | resultTemplates?: IResultTemplates; 25 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/IDataSourceDefinition.ts: -------------------------------------------------------------------------------- 1 | import { IDataSource } from "./IDataSource"; 2 | import { ServiceKey } from '@microsoft/sp-core-library'; 3 | 4 | export interface IDataSourceDefinition { 5 | 6 | /** 7 | * The data source friendly name that will be displayed in the property pane options 8 | */ 9 | name: string; 10 | 11 | /** 12 | * The data source unique key 13 | */ 14 | key: string; 15 | 16 | /** 17 | * The Office UI Fabric icon name 18 | * See https://developer.microsoft.com/en-us/fabric#/styles/web/icons 19 | */ 20 | iconName: string; 21 | 22 | /** 23 | * The data source service key 24 | */ 25 | serviceKey: ServiceKey; 26 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/IResultTemplates.ts: -------------------------------------------------------------------------------- 1 | export interface IResultTemplates { 2 | [resultTemplateId: string]: { 3 | body: string; 4 | displayName: string; 5 | }; 6 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/ISortInfo.ts: -------------------------------------------------------------------------------- 1 | import { SortFieldDirection } from './SortFieldDirection'; 2 | 3 | /** 4 | * Use this interface to send data when custonm sort event is raised 5 | */ 6 | export interface ISortInfo { 7 | /** 8 | * The sort field name 9 | */ 10 | sortFieldName: string; 11 | 12 | /** 13 | * The sort field direction 14 | */ 15 | sortFieldDirection: SortFieldDirection; 16 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/ITemplateSlot.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * List of available slot values for Handlebars templates 3 | */ 4 | export enum BuiltinTemplateSlots { 5 | Title = 'Title', 6 | Path = 'Path', 7 | Summary = 'Summary', 8 | Date = 'Date', 9 | FileType = 'FileType', 10 | PreviewImageUrl = 'PreviewImageUrl', 11 | PreviewUrl = 'PreviewUrl', 12 | Author = 'Author', 13 | Tags = 'Tags', 14 | SiteId = 'SiteId', 15 | WebId = 'WebId', 16 | ListId = 'ListId', 17 | ItemId = 'ItemId', 18 | IsFolder = 'IsFolder', 19 | PersonQuery = 'PersonQuery', 20 | UserDisplayName = 'UserDisplayName', 21 | UserEmail = 'UserEmail', 22 | ContentClass = 'contentclass', 23 | DriveId = "DriveId", 24 | Id = "Id" 25 | } 26 | 27 | export interface ITemplateSlot { 28 | 29 | /** 30 | * Name of the slot to be used in the Handlebars templates (ex: 'Title'). This will be accessible using \{{@slots.}} in templates 31 | */ 32 | slotName: BuiltinTemplateSlots | string; 33 | 34 | /** 35 | * The data source field associated with that slot 36 | */ 37 | slotField: string; 38 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/PagingBehavior.ts: -------------------------------------------------------------------------------- 1 | export enum PagingBehavior { 2 | 3 | /** 4 | * If 'Dynamic', the paging will be done using the pre-calculated paging.links array property returned by the data source. 5 | */ 6 | Dynamic = 'dynamic' 7 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/dataSources/SortFieldDirection.ts: -------------------------------------------------------------------------------- 1 | export enum SortFieldDirection { 2 | Ascending = 1, 3 | Descending= 2 4 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/filters/FilterBehavior.ts: -------------------------------------------------------------------------------- 1 | export enum FilterBehavior { 2 | 3 | /** 4 | * If 'Dynamic', the available filters and values will be the ones returned by the data source in the `filters` array property. 5 | */ 6 | Dynamic = 'dynamic', 7 | 8 | /** 9 | * If 'Static', the available filters and values will be determined using the current results set returned by the data source (using objects properties from the `items` array property). 10 | */ 11 | Static = 'static', 12 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/filters/IDataFilterInfo.ts: -------------------------------------------------------------------------------- 1 | import { FilterConditionOperator, IDataFilterValue } from "./IDataFilter"; 2 | 3 | /** 4 | * This interface is used to send filter information back to the Web Part through predefined events 5 | */ 6 | export interface IDataFilterInfo { 7 | 8 | /** 9 | * The filter internal name (not the display name) 10 | */ 11 | filterName: string; 12 | 13 | /** 14 | * The selected or unselected values for that filter 15 | */ 16 | filterValues: IDataFilterValueInfo[]; 17 | 18 | /** 19 | * The operator to use between filters values (optional). If specified, will override the default filter operator configuration. 20 | */ 21 | operator?: FilterConditionOperator; 22 | 23 | /** 24 | * Indicates if the new filters should be submitted to the data source. This is useful when you want to clear multi values filters in a single operation 25 | */ 26 | forceUpdate?: boolean; 27 | 28 | /** 29 | * The Web Part instance ID 30 | */ 31 | instanceId: string; 32 | } 33 | 34 | export interface IDataFilterValueInfo extends IDataFilterValue { 35 | 36 | /** 37 | * Indicates if the value is selected or not 38 | */ 39 | selected: boolean; 40 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/filters/IDataFilterToken.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Representation of selected filters as a token 3 | */ 4 | export interface IDataFilterToken { 5 | 6 | /** 7 | * Individual filters information 8 | */ 9 | [filterName: string] : IDataFilterTokenValue; 10 | 11 | } 12 | 13 | export interface IDataFilterTokenValue { 14 | 15 | /** 16 | * The filter value as text. If the filter is multi values, all values will be seperated by a comma ',' 17 | */ 18 | valueAsText: string; 19 | 20 | /** 21 | * If the filter is a date, the from date value 22 | */ 23 | fromDate?: string; 24 | 25 | /** 26 | * If the filter is a date, the to date value 27 | */ 28 | toDate?: string; 29 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/layouts/IComponentDefinition.ts: -------------------------------------------------------------------------------- 1 | export interface IComponentDefinition { 2 | 3 | /** 4 | * The component custom element name (ex: )) 5 | */ 6 | componentName: string; 7 | 8 | /** 9 | * The class implementing the logic of the component 10 | */ 11 | componentClass: T; 12 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/layouts/ILayoutDefinition.ts: -------------------------------------------------------------------------------- 1 | import { ServiceKey } from '@microsoft/sp-core-library'; 2 | import { ILayout } from './ILayout'; 3 | 4 | export interface ILayoutDefinition { 5 | 6 | /** 7 | * The layout friendly name 8 | */ 9 | name: string; 10 | 11 | /** 12 | * The layout unique key 13 | */ 14 | key: string; 15 | 16 | /** 17 | * The layout type (Results, Filter) 18 | */ 19 | type: LayoutType; 20 | 21 | /** 22 | * The Office UI Fabric icon name 23 | * See https://developer.microsoft.com/en-us/fabric#/styles/web/icons 24 | */ 25 | iconName: string; 26 | 27 | /** 28 | * The template HTML content. You can use the require('; 41 | } 42 | 43 | export enum LayoutType { 44 | Results = 'ResultsLayout', 45 | Filter = 'FiltersLayout' 46 | } 47 | 48 | export enum LayoutRenderType { 49 | Handlebars = 'Handlebars', 50 | AdaptiveCards = 'AdaptiveCards' 51 | } 52 | -------------------------------------------------------------------------------- /search-extensibility/src/models/queryModifier/IQueryModifierDefinition.ts: -------------------------------------------------------------------------------- 1 | import { ServiceKey } from "@microsoft/sp-core-library"; 2 | import { IQueryModifier } from "./IQueryModifier"; 3 | 4 | export interface IQueryModifierDefinition { 5 | 6 | /** 7 | * The provider internal name 8 | */ 9 | name: string; 10 | 11 | /** 12 | * The provider unique key 13 | */ 14 | key: string; 15 | 16 | /** 17 | * The provider description 18 | */ 19 | description: string; 20 | 21 | /** 22 | * The layout service key 23 | */ 24 | serviceKey: ServiceKey; 25 | } -------------------------------------------------------------------------------- /search-extensibility/src/models/suggestions/ISuggestion.ts: -------------------------------------------------------------------------------- 1 | export interface ISuggestion { 2 | 3 | /** 4 | * The text to display for that suggestion 5 | */ 6 | displayText: string; 7 | 8 | /** 9 | * The text to display when hover 10 | */ 11 | hoverText?: string; 12 | 13 | /** 14 | * A quick sub description of this suggestion 15 | */ 16 | description?: string; 17 | 18 | /** 19 | * The suggestion URL 20 | */ 21 | targetUrl?: string; 22 | 23 | /** 24 | * Optionnal icon source 25 | */ 26 | iconSrc?: string; 27 | 28 | /** 29 | * The groupe name where belong this suggestion 30 | */ 31 | groupName?: string; 32 | 33 | /** 34 | * Callback handler when the suggestion is clicked 35 | */ 36 | onSuggestionSelected?: (suggestion: ISuggestion) => void; 37 | } 38 | -------------------------------------------------------------------------------- /search-extensibility/src/models/suggestions/ISuggestionProviderDefinition.ts: -------------------------------------------------------------------------------- 1 | import { ISuggestionProvider } from './ISuggestionProvider'; 2 | import { ServiceKey } from '@microsoft/sp-core-library'; 3 | 4 | export interface ISuggestionProviderDefinition { 5 | 6 | /** 7 | * The provider internal name 8 | */ 9 | name: string; 10 | 11 | /** 12 | * The provider unique key 13 | */ 14 | key: string; 15 | 16 | /** 17 | * The provider description 18 | */ 19 | description: string; 20 | 21 | /** 22 | * The layout service key 23 | */ 24 | serviceKey: ServiceKey; 25 | } 26 | -------------------------------------------------------------------------------- /search-extensibility/src/models/verticals/IDataVertical.ts: -------------------------------------------------------------------------------- 1 | export interface IDataVertical { 2 | /** 3 | * The vertical unique key 4 | */ 5 | key: string; 6 | /** 7 | * The vertical tab name 8 | */ 9 | name: string; 10 | /** 11 | * The vertical tab value 12 | */ 13 | value: string; 14 | } 15 | -------------------------------------------------------------------------------- /search-extensibility/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "moduleResolution": "node", 9 | "types": ["es6-promise"], 10 | "lib": ["es5", "dom"], 11 | "experimentalDecorators": true, 12 | "esModuleInterop": true, 13 | "skipLibCheck": true, 14 | "strictNullChecks": false, 15 | "importHelpers": true 16 | }, 17 | "include": ["src"], 18 | "exclude": ["node_modules", "**/__tests__/*"] 19 | } 20 | -------------------------------------------------------------------------------- /search-parts/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | test-results.xml 6 | 7 | # Dependency directories 8 | node_modules 9 | 10 | # Build generated files 11 | dist 12 | lib 13 | solution 14 | temp 15 | release 16 | *.sppkg 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # OSX 22 | .DS_Store 23 | 24 | # Visual Studio files 25 | .ntvs_analysis.dat 26 | .vs 27 | bin 28 | obj 29 | 30 | # Resx Generated Code 31 | *.resx.ts 32 | 33 | # Styles Generated Code 34 | *.scss.ts 35 | *.scss.d.ts 36 | 37 | # Pnpm lock file 38 | pnpm-lock.yaml 39 | 40 | .heft -------------------------------------------------------------------------------- /search-parts/.npmignore: -------------------------------------------------------------------------------- 1 | !dist 2 | config 3 | 4 | gulpfile.js 5 | 6 | release 7 | src 8 | temp 9 | 10 | tsconfig.json 11 | tslint.json 12 | 13 | *.log 14 | 15 | .yo-rc.json 16 | .vscode -------------------------------------------------------------------------------- /search-parts/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=false 2 | strict-peer-dependencies=false -------------------------------------------------------------------------------- /search-parts/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | ] 4 | } -------------------------------------------------------------------------------- /search-parts/.vscode/settings.json: -------------------------------------------------------------------------------- 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 | } -------------------------------------------------------------------------------- /search-parts/.yo-rc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@microsoft/generator-sharepoint": { 3 | "plusBeta": false, 4 | "isCreatingSolution": true, 5 | "environment": "spo", 6 | "version": "1.20.0", 7 | "solutionName": "modern-pnp-modern-search-web-parts", 8 | "libraryName": "modern-pnp-modern-search-web-parts", 9 | "libraryId": "8aa14115-d64a-4545-b215-ee8fb8d82e59", 10 | "packageManager": "npm", 11 | "isDomainIsolated": false, 12 | "componentType": "webpart", 13 | "solutionShortDescription": "PnP Modern Search web parts", 14 | "skipFeatureDeployment": true, 15 | "nodeVersion": "16.20.0", 16 | "sdkVersions": { 17 | "@microsoft/teams-js": "2.24.0", 18 | "@microsoft/microsoft-graph-client": "3.0.2" 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /search-parts/config/deploy-azure-storage.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json", 3 | "workingDir": "./release/assets/", 4 | "account": "", 5 | "container": "modern-pnp-modern-search-web-parts", 6 | "accessKey": "" 7 | } -------------------------------------------------------------------------------- /search-parts/config/sass.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/core-build/sass.schema.json" 3 | } -------------------------------------------------------------------------------- /search-parts/config/serve.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/spfx-serve.schema.json", 3 | "port": 4321, 4 | "https": true, 5 | "initialPage": "https://{tenantDomain}/_layouts/workbench.aspx" 6 | } -------------------------------------------------------------------------------- /search-parts/config/write-manifests.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", 3 | "cdnBasePath": "" 4 | } -------------------------------------------------------------------------------- /search-parts/src/common/ComponentType.ts: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * List of all available components for data dynamic data connections filtering 4 | */ 5 | export enum ComponentType { 6 | SearchResults = 'pnpSearchResultsWebPart', 7 | SearchFilters = 'pnpSearchFiltersWebPart', 8 | SearchBox = 'pnpSearchBoxWebPart', 9 | SearchVerticals = 'pnpSearchVerticalsWebPart', 10 | PageEnvironment = 'PageContext' 11 | } 12 | 13 | export enum DynamicDataProperties { 14 | AvailableFieldValuesFromResults = 'AvailableFieldValuesFromResults' 15 | } -------------------------------------------------------------------------------- /search-parts/src/components/CollapsibleContentComponent.module.scss: -------------------------------------------------------------------------------- 1 | .collapsible { 2 | 3 | min-height: 35px; 4 | 5 | &__filterPanel { 6 | &__body { 7 | overflow: auto; 8 | 9 | &__headerIcon { 10 | text-align: right; 11 | margin-top: 5px; 12 | padding-left: 10px; 13 | padding-right: 10px; 14 | cursor: pointer; 15 | } 16 | 17 | &__group { 18 | 19 | display: block; 20 | 21 | &__header { 22 | display: flex; 23 | align-items: center; 24 | margin-bottom: 10px; 25 | } 26 | 27 | &__item { 28 | padding-left: 15px; 29 | padding-top: 10px; 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /search-parts/src/components/ItemSelectionComponent.module.scss: -------------------------------------------------------------------------------- 1 | pnp-select { 2 | 3 | .root { 4 | display: block; 5 | position: relative; 6 | 7 | &:hover { 8 | background-color: "[theme: themeLighterAlt]"; 9 | } 10 | 11 | .itemRow { 12 | padding-left: 5px; 13 | display: flex; 14 | align-items: center; 15 | } 16 | } 17 | 18 | .selected { 19 | background-color: "[theme: themeLighterAlt]"; 20 | } 21 | } -------------------------------------------------------------------------------- /search-parts/src/components/PanelComponent.module.scss: -------------------------------------------------------------------------------- 1 | .panel { 2 | &__open:hover { 3 | cursor: pointer; 4 | } 5 | } -------------------------------------------------------------------------------- /search-parts/src/components/filters/FilterComboBoxComponent.module.scss: -------------------------------------------------------------------------------- 1 | .filterComboBox { 2 | 3 | display: flex; 4 | align-items: center; 5 | padding: 10px; 6 | 7 | i { 8 | margin-right: 5px; 9 | margin-left: 5px; 10 | } 11 | 12 | i:hover { 13 | color: "[theme: themePrimary, default: #005a9e]"; 14 | cursor: pointer; 15 | } 16 | } -------------------------------------------------------------------------------- /search-parts/src/components/filters/FilterMultiComponent.module.scss: -------------------------------------------------------------------------------- 1 | .filterMultiActions { 2 | 3 | padding: 10px; 4 | 5 | button.applyBtn { 6 | border: none; 7 | } 8 | 9 | button.clearBtn { 10 | border-color: "[theme: neutralLight, default: #edebe9]"; 11 | } 12 | 13 | button~button { 14 | margin-left: 10px; 15 | } 16 | } -------------------------------------------------------------------------------- /search-parts/src/components/filters/FilterPeopleCheckBoxComponent.module.scss: -------------------------------------------------------------------------------- 1 | .filterPeopleCheckBoxTemplate { 2 | 3 | display: flex; 4 | align-items: center; 5 | padding: 10px; 6 | 7 | i { 8 | margin-right: 5px; 9 | margin-left: 5px; 10 | } 11 | 12 | i:hover { 13 | color: "[theme: themePrimary, default: #005a9e]"; 14 | cursor: pointer; 15 | } 16 | } -------------------------------------------------------------------------------- /search-parts/src/components/filters/FilterValueOperatorComponent.module.scss: -------------------------------------------------------------------------------- 1 | .filterValueOperator { 2 | display: flex; 3 | align-items: center; 4 | 5 | i { 6 | margin-right: 4px; 7 | } 8 | } -------------------------------------------------------------------------------- /search-parts/src/components/filters/SelectedFiltersComponent.module.scss: -------------------------------------------------------------------------------- 1 | .selectedFilters { 2 | 3 | padding-left: 10px; 4 | padding-right: 10px; 5 | display: flex; 6 | flex-wrap: wrap; 7 | 8 | .filterRow { 9 | display: flex; 10 | max-width: 100%; 11 | align-items: center; 12 | } 13 | 14 | .filterRowValues { 15 | display: flex; 16 | flex-wrap: wrap; 17 | } 18 | .ellipsis { 19 | display: block; 20 | overflow: hidden; 21 | text-overflow: ellipsis 22 | } 23 | 24 | .operator { 25 | font-weight: bold; 26 | margin-left: 5px; 27 | margin-right: 5px; 28 | } 29 | 30 | i { 31 | margin-right: 5px; 32 | margin-top: 4px; 33 | } 34 | 35 | i:hover { 36 | color: "[theme: themePrimary, default: #005a9e]"; 37 | cursor: pointer; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /search-parts/src/controls/PreviewContainer/IPreviewContainerProps.ts: -------------------------------------------------------------------------------- 1 | export interface IPreviewContainerProps { 2 | 3 | /** 4 | * The element URL to display (can be the iframe source URL) 5 | */ 6 | elementUrl: string; 7 | 8 | /** 9 | * The thumbnail image URL 10 | */ 11 | previewImageUrl: string; 12 | 13 | /** 14 | * The HTML element to use as target for the callout 15 | */ 16 | targetElement: HTMLElement; 17 | 18 | /** 19 | * Indicates if we need to show the preview 20 | */ 21 | showPreview: boolean; 22 | 23 | /** 24 | * The preview type 25 | */ 26 | previewType: PreviewType; 27 | 28 | } 29 | 30 | export enum PreviewType { 31 | Document 32 | } 33 | -------------------------------------------------------------------------------- /search-parts/src/controls/PreviewContainer/IPreviewContainerState.ts: -------------------------------------------------------------------------------- 1 | interface IPreviewContainerState { 2 | showCallout: boolean; 3 | isLoading: boolean; 4 | } 5 | 6 | export default IPreviewContainerState; -------------------------------------------------------------------------------- /search-parts/src/controls/PreviewContainer/PreviewContainer.module.scss: -------------------------------------------------------------------------------- 1 | .calloutContainer { 2 | 3 | .calloutHeader { 4 | display: block; 5 | text-align: right; 6 | } 7 | } 8 | 9 | /* https://blog.theodo.fr/2018/01/responsive-iframes-css-trick/ */ 10 | .calloutContentContainer { 11 | padding-left: 15px; 12 | padding-right: 15px; 13 | padding-bottom: 15px; 14 | display: flex; 15 | justify-content: center; 16 | align-items: center; 17 | width: 500px; 18 | min-height: 280px; 19 | background-size: cover; 20 | background-clip: content-box; 21 | background-repeat: no-repeat; 22 | background-origin: content-box; 23 | 24 | .overlay { 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | width: 100%; 29 | height: 100%; 30 | } 31 | 32 | .iframeContainer { 33 | position: relative; 34 | overflow: hidden; 35 | padding-top: 56.25%; 36 | width: 100%; 37 | 38 | iframe { 39 | position: absolute; 40 | top: 0; 41 | left: 0; 42 | width: 100%; 43 | height: 100%; 44 | border: 0; 45 | } 46 | } 47 | } 48 | 49 | .hide { 50 | display: none; 51 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneAsyncCombo/components/AsyncCombo.module.scss: -------------------------------------------------------------------------------- 1 | .asyncCombo { 2 | 3 | .errorMessage { 4 | animation-name: css-0, css-13; 5 | animation-duration: 0.367s; 6 | animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1); 7 | animation-fill-mode: both; 8 | -webkit-font-smoothing: antialiased; 9 | font-size: 12px; 10 | font-weight: 400; 11 | color: #A80000; 12 | margin-top: 0px; 13 | margin-right: 0px; 14 | margin-bottom: 0px; 15 | margin-left: 0px; 16 | padding-top: 5px; 17 | display: flex; 18 | align-items: center; 19 | } 20 | 21 | .spinner { 22 | display: inline-block; 23 | } 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneAsyncCombo/components/IAsyncComboState.ts: -------------------------------------------------------------------------------- 1 | import { IComboBoxOption } from '@fluentui/react'; 2 | 3 | export interface IAsyncComboState { 4 | 5 | /** 6 | * Selected keys (multi values mode) 7 | */ 8 | selectedOptionKeys?: string[]; 9 | 10 | /** 11 | * The text value to show in the combo box 12 | */ 13 | textDisplayValue: string; 14 | 15 | /** 16 | * Options to display in the combo box 17 | */ 18 | options: IComboBoxOption[]; 19 | 20 | /** 21 | * Error message to display if needed 22 | */ 23 | errorMessage?: string; 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneNonReactiveTextField/IPropertyPaneNonReactiveTextFieldProps.ts: -------------------------------------------------------------------------------- 1 | export interface IPropertyPaneNonReactiveTextFieldProps { 2 | 3 | /** 4 | * The unique key for the component 5 | */ 6 | componentKey: string; 7 | 8 | /** 9 | * The default value to display 10 | */ 11 | defaultValue?: string; 12 | /** 13 | * The placeholder to display in the text field 14 | */ 15 | placeholderText?: string; 16 | 17 | /** 18 | * If the text field should be multiline 19 | */ 20 | multiline?: boolean; 21 | 22 | /** 23 | * The text field label 24 | */ 25 | label?: string; 26 | 27 | /** 28 | * The text field description 29 | */ 30 | description?: string; 31 | 32 | /** 33 | * The text to display in the 'apply' button 34 | */ 35 | applyBtnText?: string; 36 | 37 | /** 38 | * The number of rows to display 39 | */ 40 | rows?: number; 41 | 42 | /** 43 | * Flag indicating if the user can save an empty value 44 | */ 45 | allowEmptyValue?: boolean; 46 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldProps.ts: -------------------------------------------------------------------------------- 1 | export interface INonReactiveTextFieldProps { 2 | 3 | /** 4 | * Unique key for the component 5 | */ 6 | key?: string; 7 | 8 | /** 9 | * The default value to display 10 | */ 11 | defaultValue?: string; 12 | 13 | /** 14 | * Handler when a field value is updated 15 | */ 16 | onUpdate: (value: string) => void; 17 | 18 | /** 19 | * The placeholder to display in the text field 20 | */ 21 | placeholderText?: string; 22 | 23 | /** 24 | * If the text field should be multiline 25 | */ 26 | multiline?: boolean; 27 | 28 | /** 29 | * The text field lable 30 | */ 31 | label?: string; 32 | 33 | /** 34 | * The text field description 35 | */ 36 | description?: string; 37 | 38 | /** 39 | * The text to display in the 'apply' button 40 | */ 41 | applyBtnText?: string; 42 | 43 | /** 44 | * The number of rows to display 45 | */ 46 | rows?: number; 47 | 48 | /** 49 | * Flag indicating if the user can save an empty value 50 | */ 51 | allowEmptyValue?: boolean; 52 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldState.ts: -------------------------------------------------------------------------------- 1 | export interface INonReactiveTextFieldState { 2 | 3 | /** 4 | * Content of the text field 5 | */ 6 | value: string; 7 | 8 | /** 9 | * The icon to display in the button 10 | */ 11 | iconName: string; 12 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneTabsField/IPropertyPaneTabsFieldProps.ts: -------------------------------------------------------------------------------- 1 | import { IChoiceGroupOption } from '@fluentui/react'; 2 | 3 | export interface IPropertyPaneTabsFieldProps { 4 | defaultSelectedKey: string; 5 | 6 | /** 7 | * Callback when the property is updated 8 | * @param propertyPath the updated property name 9 | * @param newValue the new values 10 | * @param changeCallback optionnal callback to notify SPFx something has changed add retrigger a render 11 | */ 12 | onPropertyChange: (propertyPath: string, newValue: string, changeCallback?: (targetProperty?: string, newValue?: any) => void) => void; 13 | options: IChoiceGroupOption[]; 14 | } -------------------------------------------------------------------------------- /search-parts/src/controls/PropertyPaneTabsField/components/IChoiceGroupTabsProps.ts: -------------------------------------------------------------------------------- 1 | import { IChoiceGroupOption } from '@fluentui/react'; 2 | 3 | export interface IChoiceGroupTabsProps { 4 | defaultSelectedKey: string; 5 | onChange(selectedKey: string): void; 6 | options: IChoiceGroupOption[]; 7 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/ITemplateRendererProps.ts: -------------------------------------------------------------------------------- 1 | import { LayoutRenderType } from "@pnp/modern-search-extensibility"; 2 | import { ITemplateService } from "../../services/templateService/ITemplateService"; 3 | 4 | interface ITemplateRendererProps { 5 | 6 | instanceId: string; 7 | 8 | /** 9 | * The template context 10 | */ 11 | templateContext: any; 12 | 13 | /** 14 | * The Handlebars raw template content for a single item 15 | */ 16 | templateContent: string; 17 | 18 | /** 19 | * A template service instance 20 | */ 21 | templateService: ITemplateService; 22 | 23 | /** 24 | * The layout render type (Handlebars, Adaptive Cards, etc.) 25 | */ 26 | renderType: LayoutRenderType; 27 | } 28 | 29 | export default ITemplateRendererProps; -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/ITemplateRendererState.ts: -------------------------------------------------------------------------------- 1 | interface ITemplateRendererState { 2 | } 3 | 4 | export default ITemplateRendererState; -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/fluentUI/Shared.tsx: -------------------------------------------------------------------------------- 1 | import * as ReactDOM from "react-dom"; 2 | 3 | export const createDiv = (): HTMLDivElement => document.createElement("div"); 4 | 5 | export const internalRender = (renderReact: () => JSX.Element): HTMLElement => { 6 | const div = createDiv(); 7 | // eslint-disable-next-line @microsoft/spfx/pair-react-dom-render-unmount 8 | ReactDOM.render(renderReact(), div); 9 | return div; 10 | }; -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/fluentUI/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Actions'; 2 | export * from './Elements'; 3 | export * from './FluentUI'; 4 | export * from './Shared'; 5 | -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/themes/redPalette.json: -------------------------------------------------------------------------------- 1 | { 2 | "themePrimary": "#d40004", 3 | "themeLighterAlt": "#fdf3f3", 4 | "themeLighter": "#f8d0d1", 5 | "themeLight": "#f2a9ab", 6 | "themeTertiary": "#e55c5e", 7 | "themeSecondary": "#d91a1d", 8 | "themeDarkAlt": "#be0003", 9 | "themeDark": "#a10003", 10 | "themeDarker": "#770002", 11 | "neutralLighterAlt": "#faf9f8", 12 | "neutralLighter": "#f3f2f1", 13 | "neutralLight": "#edebe9", 14 | "neutralQuaternaryAlt": "#e1dfdd", 15 | "neutralQuaternary": "#d0d0d0", 16 | "neutralTertiaryAlt": "#c8c6c4", 17 | "neutralTertiary": "#a19f9d", 18 | "neutralSecondary": "#605e5c", 19 | "neutralPrimaryAlt": "#3b3a39", 20 | "neutralPrimary": "#323130", 21 | "neutralDark": "#201f1e", 22 | "black": "#000000", 23 | "white": "#ffffff" 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/themes/teamsDarkPalette.json: -------------------------------------------------------------------------------- 1 | { 2 | "themePrimary": "#6264A7", 3 | "themeLighterAlt": "#040407", 4 | "themeLighter": "#10101b", 5 | "themeLight": "#1d1e32", 6 | "themeTertiary": "#3b3c63", 7 | "themeSecondary": "#565892", 8 | "themeDarkAlt": "#6e70af", 9 | "themeDark": "#8183bb", 10 | "themeDarker": "#9ea0cd", 11 | "neutralLighterAlt": "#1e1e1e", 12 | "neutralLighter": "#1d1d1d", 13 | "neutralLight": "#1c1c1c", 14 | "neutralQuaternaryAlt": "#1a1a1a", 15 | "neutralQuaternary": "#191919", 16 | "neutralTertiaryAlt": "#181818", 17 | "neutralTertiary": "#f8f8f8", 18 | "neutralSecondary": "#f9f9f9", 19 | "neutralPrimaryAlt": "#fafafa", 20 | "neutralPrimary": "#F5F5F5", 21 | "neutralDark": "#fdfdfd", 22 | "black": "#fefefe", 23 | "white": "#1F1F1F" 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/themes/teamsDefaultPalette.json: -------------------------------------------------------------------------------- 1 | { 2 | "themePrimary": "#6264A7", 3 | "themeLighterAlt": "#f7f7fb", 4 | "themeLighter": "#e1e1f1", 5 | "themeLight": "#c8c9e4", 6 | "themeTertiary": "#989ac9", 7 | "themeSecondary": "#7173b0", 8 | "themeDarkAlt": "#585a95", 9 | "themeDark": "#4a4c7e", 10 | "themeDarker": "#37385d", 11 | "neutralLighterAlt": "#eeeeee", 12 | "neutralLighter": "#eaeaea", 13 | "neutralLight": "#e1e1e1", 14 | "neutralQuaternaryAlt": "#d1d1d1", 15 | "neutralQuaternary": "#c8c8c8", 16 | "neutralTertiaryAlt": "#c0c0c0", 17 | "neutralTertiary": "#acacac", 18 | "neutralSecondary": "#919191", 19 | "neutralPrimaryAlt": "#767676", 20 | "neutralPrimary": "#0b0b0b", 21 | "neutralDark": "#404040", 22 | "black": "#252525", 23 | "white": "#F5F5F5" 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TemplateRenderer/themes/teamsHighContrastPalette.json: -------------------------------------------------------------------------------- 1 | { 2 | "themePrimary": "#ffff01", 3 | "themeLighterAlt": "#0a0a00", 4 | "themeLighter": "#292900", 5 | "themeLight": "#4d4d00", 6 | "themeTertiary": "#999900", 7 | "themeSecondary": "#e0e000", 8 | "themeDarkAlt": "#ffff19", 9 | "themeDark": "#ffff3d", 10 | "themeDarker": "#ffff70", 11 | "neutralLighterAlt": "#0b0b0b", 12 | "neutralLighter": "#151515", 13 | "neutralLight": "#252525", 14 | "neutralQuaternaryAlt": "#2f2f2f", 15 | "neutralQuaternary": "#373737", 16 | "neutralTertiaryAlt": "#595959", 17 | "neutralTertiary": "#fafafa", 18 | "neutralSecondary": "#fbfbfb", 19 | "neutralPrimaryAlt": "#fcfcfc", 20 | "neutralPrimary": "#f8f8f8", 21 | "neutralDark": "#fdfdfd", 22 | "black": "#fefefe", 23 | "white": "#000000" 24 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/AceEditor.module.scss: -------------------------------------------------------------------------------- 1 | .ace_editor.ace_autocomplete { 2 | z-index: 2000000 !important; 3 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/ITextDialogProps.ts: -------------------------------------------------------------------------------- 1 | import { ITextDialogStrings } from "./ITextDialogStrings"; 2 | import { PropertyFieldCodeEditorLanguages } from "@pnp/spfx-property-controls/lib/PropertyFieldCodeEditor"; 3 | 4 | export interface ITextDialogProps { 5 | dialogTextFieldValue?: string; 6 | onChanged?: (text: string) => void; 7 | disabled?: boolean; 8 | strings: ITextDialogStrings; 9 | stateKey?: string; 10 | language?: PropertyFieldCodeEditorLanguages; 11 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/ITextDialogState.ts: -------------------------------------------------------------------------------- 1 | export interface ITextDialogState { 2 | dialogText: string; 3 | showDialog: boolean; 4 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/ITextDialogStrings.ts: -------------------------------------------------------------------------------- 1 | export interface ITextDialogStrings { 2 | dialogTitle: string; 3 | dialogSubText?: string; 4 | dialogButtonLabel?: string; 5 | dialogButtonText: string; 6 | dialogTextBoxPlaceholder?: string; 7 | saveButtonText: string; 8 | cancelButtonText: string; 9 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/TextDialog.module.scss: -------------------------------------------------------------------------------- 1 | .textDialog { 2 | max-width: 100%; 3 | } -------------------------------------------------------------------------------- /search-parts/src/controls/TextDialog/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TextDialog } from './TextDialog'; -------------------------------------------------------------------------------- /search-parts/src/dataSources/AvailableDataSources.ts: -------------------------------------------------------------------------------- 1 | import { IDataSourceDefinition } from "@pnp/modern-search-extensibility"; 2 | import * as strings from 'CommonStrings'; 3 | 4 | export enum BuiltinDataSourceProviderKeys { 5 | SharePointSearch = 'SharePointSearch', 6 | MicrosoftSearch = 'MicrosoftSearch' 7 | } 8 | 9 | export class AvailableDataSources { 10 | 11 | /** 12 | * Returns the list of builtin data sources for the search results 13 | */ 14 | public static BuiltinDataSources: IDataSourceDefinition[] = [ 15 | { 16 | name: strings.DataSources.SharePointSearch.SourceName, 17 | iconName: 'SharePointLogo', 18 | key: BuiltinDataSourceProviderKeys.SharePointSearch.toString(), 19 | serviceKey: null // ServiceKey will be created dynamically for builtin source 20 | }, 21 | { 22 | name: strings.DataSources.MicrosoftSearch.SourceName, 23 | iconName: 'OfficeLogo', 24 | key: BuiltinDataSourceProviderKeys.MicrosoftSearch.toString(), 25 | serviceKey: null // ServiceKey will be created dynamically for builtin source 26 | } 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /search-parts/src/helpers/DomPurifyHelper.ts: -------------------------------------------------------------------------------- 1 | export class DomPurifyHelper { 2 | 3 | /** 4 | * Allows custom attributes 5 | * @param attr the attribute name 6 | * @param data the DOMPurify data 7 | */ 8 | public static allowCustomAttributesHook(attr, data) { 9 | 10 | if(data && data.attrName) { 11 | if(data.attrName.indexOf("on") == 0) return; 12 | if(data.attrName == "href") return; 13 | data.allowedAttributes[data.attrName] = true; 14 | data.forceKeepAttr = true; 15 | } 16 | } 17 | 18 | /** 19 | * Allows custom components (ex: ) 20 | * @param node the HTML node 21 | * @param data the DOMPurify data 22 | */ 23 | public static allowCustomComponentsHook(node, data) { 24 | if(node.nodeName && node.nodeName.match(/^\w+(-\w+)+$/) 25 | && !data.allowedTags[data.tagName]) { 26 | data.allowedTags[data.tagName] = true; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /search-parts/src/helpers/EnumHelper.ts: -------------------------------------------------------------------------------- 1 | export class EnumHelper { 2 | 3 | /** 4 | * Get the text associated to an enum value 5 | * @param myEnum the enum to lookup 6 | * @param enumValue the value to get 7 | */ 8 | public static getEnumKeyByEnumValue(myEnum: any, enumValue: any): string { 9 | let keys = Object.keys(myEnum).filter(x => myEnum[x] == enumValue); 10 | return keys.length > 0 ? keys[0] : null; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/helpers/ServiceScopeHelper.ts: -------------------------------------------------------------------------------- 1 | import { ServiceScope, ServiceKey } from '@microsoft/sp-core-library'; 2 | 3 | export class ServiceScopeHelper { 4 | 5 | /** 6 | * Registers new services within a child scope of the specified root scope 7 | * @param serviceKey the service keys of services to register in that scope 8 | */ 9 | public static registerChildServices(rootScope: ServiceScope, serviceKeys: ServiceKey[]): ServiceScope { 10 | 11 | let childScope: ServiceScope = null; 12 | 13 | if (rootScope) { 14 | 15 | childScope = rootScope.startNewChild(); 16 | serviceKeys.forEach(serviceKey => { 17 | childScope.createDefaultAndProvide(serviceKey); 18 | }); 19 | 20 | childScope.finish(); 21 | } 22 | 23 | return childScope; 24 | } 25 | 26 | /** 27 | * Gets the top root service scope from a child scope 28 | * @param scope a child service scope 29 | * @returns 30 | */ 31 | public static getRootServiceScope(scope: ServiceScope) { 32 | 33 | let rootServiceScope; 34 | 35 | let parentScope = scope.getParent(); 36 | 37 | while (parentScope !== undefined) { 38 | rootServiceScope = parentScope; 39 | parentScope = parentScope.getParent(); 40 | } 41 | 42 | return rootServiceScope; 43 | } 44 | } -------------------------------------------------------------------------------- /search-parts/src/helpers/StringHelper.ts: -------------------------------------------------------------------------------- 1 | export class StringHelper { 2 | 3 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping 4 | public static escapeRegExp(string) { 5 | return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string 6 | } 7 | 8 | public static _bytesToHex(bytes) { 9 | return Array.from( 10 | bytes, 11 | byte => (byte as any).toString(16).padStart(2, "0") 12 | ).join(""); 13 | } 14 | 15 | public static _stringToUTF8Bytes(string) { 16 | return new TextEncoder().encode(string); 17 | } 18 | } -------------------------------------------------------------------------------- /search-parts/src/index.ts: -------------------------------------------------------------------------------- 1 | // A file is required to be in the root of the /src directory by the TypeScript compiler 2 | -------------------------------------------------------------------------------- /search-parts/src/layouts/AvailableTemplates.ts: -------------------------------------------------------------------------------- 1 | import { FilterType } from "@pnp/modern-search-extensibility"; 2 | 3 | export enum BuiltinFilterTemplates { 4 | CheckBox = 'CheckboxFilterTemplate', 5 | DateRange = 'DateRangeFilterTemplate', 6 | ComboBox = 'ComboBoxFilterTemplate', 7 | People = 'PeopleTemplate', 8 | DateInterval = 'DateIntervalFilterTemplate', 9 | TaxonomyPicker = 'TaxonomyPickerFilterTemplate' 10 | } 11 | 12 | /** 13 | * Filter types configuration 14 | */ 15 | export const BuiltinFilterTypes = { 16 | [BuiltinFilterTemplates.CheckBox]: FilterType.Refiner, 17 | [BuiltinFilterTemplates.DateInterval]: FilterType.Refiner, 18 | [BuiltinFilterTemplates.ComboBox]: FilterType.Refiner, 19 | [BuiltinFilterTemplates.People]: FilterType.Refiner, 20 | [BuiltinFilterTemplates.DateRange]: FilterType.StaticFilter, 21 | [BuiltinFilterTemplates.TaxonomyPicker]: FilterType.StaticFilter 22 | }; -------------------------------------------------------------------------------- /search-parts/src/layouts/filters/custom/FiltersCustomLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IFiltersCustomLayoutProperties { 5 | } 6 | 7 | export class FiltersCustomLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/filters/custom/filters-custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{#each @root.filters as |filter|}} 4 | 5 |
{{filter.filterName}}
6 | 7 | 8 | 9 | {{#each filter.values}} 10 | 18 | 19 | {{/each}} 20 | 21 | {{#eq filter.values.length 0}} 22 |
{{@root.strings.FilterNoValuesMessage}}
23 | {{else}} 24 | 25 | {{#if filter.isMulti}} 26 | 27 | {{/if}} 28 | {{/eq}} 29 | 30 | {{/each}} 31 | 32 |
-------------------------------------------------------------------------------- /search-parts/src/layouts/filters/debug/DebugFilterLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IDebugFilterLayoutProperties { 5 | } 6 | 7 | export class DebugFilterLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/filters/debug/filters-debug.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /search-parts/src/layouts/filters/vertical/VerticalFilterLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IVerticalFilterLayoutProperties { 5 | } 6 | 7 | export class VerticalFilterLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/layouts.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.html' { 2 | const content: string; 3 | export default content; 4 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/resultTypes/default_cards.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /search-parts/src/layouts/resultTypes/default_custom.html: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | {{slot item @root.slots.Title}} 4 |
  • -------------------------------------------------------------------------------- /search-parts/src/layouts/resultTypes/default_people.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | -------------------------------------------------------------------------------- /search-parts/src/layouts/results/custom/ResultsCustomLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IResultsCustomLayoutProperties { 5 | } 6 | 7 | export class ResultsCustomLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/results/custom/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.css' { 2 | const content: string; 3 | export default content; 4 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/results/debug/ResultsDebugLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IResultsDebugLayoutProperties { 5 | } 6 | 7 | export class ResultsDebugLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/layouts/results/detailsList/DetailsListLayout.module.scss: -------------------------------------------------------------------------------- 1 | .additionalGroupByFieldsTable { 2 | table-layout: fixed; 3 | 4 | > div { 5 | > span:nth-child(1) { 6 | width: 50px; 7 | } 8 | 9 | > span:nth-child(2) { 10 | width: 350px; 11 | } 12 | 13 | > span:nth-child(3) { 14 | text-align: end; 15 | } 16 | 17 | > span:nth-child(4) { 18 | width: 20px; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /search-parts/src/layouts/results/resultsDebug/ResultsDebugLayout.ts: -------------------------------------------------------------------------------- 1 | import { BaseLayout } from "@pnp/modern-search-extensibility"; 2 | import { IPropertyPaneField } from "@microsoft/sp-property-pane"; 3 | 4 | export interface IResultsDebugLayoutProperties { 5 | } 6 | 7 | export class ResultsDebugLayout extends BaseLayout { 8 | 9 | public getPropertyPaneFieldsConfiguration(availableFields: string[]): IPropertyPaneField[] { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /search-parts/src/loc/propertyControlStrings.d.ts: -------------------------------------------------------------------------------- 1 | declare interface IPropertyControlStrings { 2 | CollectionDataItemFieldRequiredLabel: string; 3 | } 4 | 5 | declare module 'PropertyControlStrings' { 6 | const strings: IPropertyControlStrings; 7 | export = strings; 8 | } 9 | -------------------------------------------------------------------------------- /search-parts/src/models/common/IBaseWebPartProps.ts: -------------------------------------------------------------------------------- 1 | export interface IBaseWebPartProps { 2 | 3 | /** 4 | * The link URL to the solution documenation 5 | */ 6 | documentationLink: string; 7 | 8 | /** 9 | * The Web Part title 10 | */ 11 | title: string; 12 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IComponentFieldsConfiguration.ts: -------------------------------------------------------------------------------- 1 | export interface IComponentFieldsConfiguration { 2 | 3 | /** 4 | * The name of the field 5 | */ 6 | name: string; 7 | 8 | /** 9 | * The field name for the inner component props 10 | */ 11 | field: string; 12 | 13 | /** 14 | * The value of the field 15 | */ 16 | value: string; 17 | 18 | /** 19 | * Indicates if the calue is an Handlebars expression 20 | */ 21 | useHandlebarsExpr: boolean; 22 | 23 | /** 24 | * Indicates if the field supports HTML markup injection 25 | */ 26 | supportHtml: boolean; 27 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IDataResultType.ts: -------------------------------------------------------------------------------- 1 | export interface IDataResultType { 2 | 3 | /** 4 | * The property name (i.e data source field) 5 | */ 6 | property: string; 7 | 8 | /** 9 | * Operator to use 10 | */ 11 | operator: ResultTypeOperator; 12 | 13 | /** 14 | * The value of the field 15 | */ 16 | value: string; 17 | 18 | /** 19 | * The templat to display if the condition is matched 20 | */ 21 | inlineTemplateContent: string; 22 | 23 | /** 24 | * An external template URL 25 | */ 26 | externalTemplateUrl: string; 27 | } 28 | 29 | /** 30 | * Corresponds to Handlebars operators 31 | */ 32 | export enum ResultTypeOperator { 33 | Equal = 'eq', 34 | NotEqual = 'isnt', 35 | LessThan = 'lt', 36 | GreaterThan = 'gt', 37 | LessOrEqual = 'lte', 38 | GreaterOrEqual = 'gte', 39 | Contains = 'contains', 40 | StartsWith = 'startsWith', 41 | NotNull = 'if', 42 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IDataVerticalConfiguration.ts: -------------------------------------------------------------------------------- 1 | import { PageOpenBehavior } from "../../helpers/UrlHelper"; 2 | 3 | export interface IDataVerticalConfiguration { 4 | /** 5 | * Unique key for the vertical 6 | */ 7 | key: string; 8 | 9 | /** 10 | * The vertical tab name 11 | */ 12 | tabName: string; 13 | 14 | /** 15 | * The vertical tab value that will be sent to connected Web Parts 16 | */ 17 | tabValue: string; 18 | 19 | /** 20 | * Specifes if the vertical is a link 21 | */ 22 | isLink: boolean; 23 | 24 | /** 25 | * The link URL 26 | */ 27 | linkUrl: string; 28 | 29 | /** 30 | * The link open behavior 31 | */ 32 | openBehavior: PageOpenBehavior; 33 | 34 | /** 35 | * If the vertical is a link, show a icon near the tab name to indicate user it is a link. 36 | */ 37 | showLinkIcon: boolean; 38 | 39 | /** 40 | * The Fluent UI icon name 41 | */ 42 | iconName?: string; 43 | 44 | /** 45 | * Audience for the vertical 46 | */ 47 | audience?: any[]; 48 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IExtensibilityConfiguration.ts: -------------------------------------------------------------------------------- 1 | export interface IExtensibilityConfiguration { 2 | 3 | /** 4 | * A friendly name/purpose of the library to load 5 | */ 6 | name: string; 7 | 8 | /** 9 | * The manifest GUID of the library 10 | */ 11 | id: string; 12 | 13 | /** 14 | * Flag indicating if the ibrary is enabled/disabled 15 | */ 16 | enabled: boolean; 17 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IItemSelectionProps.ts: -------------------------------------------------------------------------------- 1 | import { FilterConditionOperator } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface IItemSelectionProps { 4 | /** 5 | * Flag indicating if items can be selected in the results 6 | */ 7 | allowItemSelection: boolean; 8 | 9 | /** 10 | * The destination field 11 | */ 12 | destinationFieldName: string; 13 | 14 | /** 15 | * The selection mode (i.e. how to use the selected value) 16 | */ 17 | selectionMode: ItemSelectionMode; 18 | 19 | /** 20 | * Allow multiple values to be select=ed 21 | */ 22 | allowMulti: boolean; 23 | 24 | /** 25 | * The logical operator to use between values 26 | */ 27 | valuesOperator: FilterConditionOperator; 28 | 29 | /** 30 | * Keep the selection when the user clicks on an empty area 31 | */ 32 | selectionPreservedOnEmptyClick: boolean; 33 | } 34 | 35 | export enum ItemSelectionMode { 36 | AsTokenValue = 'AsTokenValue', 37 | AsDataFilter = 'AsDataFilter' 38 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/IPagingSettings.ts: -------------------------------------------------------------------------------- 1 | export interface IPagingSettings { 2 | 3 | /** 4 | * Indicates whether or not the paging should be displayed 5 | */ 6 | showPaging: boolean; 7 | 8 | /** 9 | * The number of items to display per page 10 | */ 11 | itemsCountPerPage: number; 12 | 13 | /** 14 | * The page range to display (default 5) 15 | */ 16 | pagingRange: number; 17 | 18 | /** 19 | * Hide first/last navigation buttons for the paging control 20 | */ 21 | hideFirstLastPages: boolean; 22 | 23 | /** 24 | * Hide navigation buttons (prev page, next page) 25 | */ 26 | hideNavigation: boolean; 27 | 28 | /** 29 | * Hide navigation buttons (prev, next, first, last) if they are disabled. 30 | */ 31 | hideDisabled: boolean; 32 | 33 | /** 34 | * Flag indicating if the data source use @odata.nextLink to handle server-side paging 35 | */ 36 | useNextLinks: boolean; 37 | } -------------------------------------------------------------------------------- /search-parts/src/models/common/ISelectableComponentItem.ts: -------------------------------------------------------------------------------- 1 | export interface ISelectableComponentItem { 2 | /** 3 | * The key of the element used for selection. Needed to track selected items when pages are updated 4 | */ 5 | itemKey?: string; 6 | 7 | /** 8 | * The current selection keys. Needed to set the selected state of the component. 9 | */ 10 | selectedKeys?: string[]; 11 | 12 | /** 13 | * Flag indicating if items can be selected in the results 14 | */ 15 | allowItemSelection?: boolean; 16 | 17 | /** 18 | * The current index of item. Needed for the the SelectionZone to lookup the correct item im the collection. 19 | */ 20 | index?: string; 21 | } -------------------------------------------------------------------------------- /search-parts/src/models/dynamicData/IDataFilterSourceData.ts: -------------------------------------------------------------------------------- 1 | import { IDataFilterConfiguration, IDataFilter, FilterConditionOperator } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface IDataFilterSourceData { 4 | 5 | /** 6 | * The current selected filters 7 | */ 8 | selectedFilters: IDataFilter[]; 9 | 10 | /** 11 | * The filters configuration for the Data Filter Web Part 12 | */ 13 | filterConfiguration: IDataFilterConfiguration[]; 14 | 15 | /** 16 | * The configured logical operator to use between filters 17 | */ 18 | filterOperator: FilterConditionOperator; 19 | 20 | /** 21 | * The Web Part instance ID 22 | */ 23 | instanceId: string; 24 | } -------------------------------------------------------------------------------- /search-parts/src/models/dynamicData/IDataResultSourceData.ts: -------------------------------------------------------------------------------- 1 | import { IDataFilterResult } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface IDataResultSourceData { 4 | 5 | /** 6 | * The available fields extracted from the data source results 7 | */ 8 | availableFieldsFromResults: string[]; 9 | 10 | /** 11 | * The available filters from the data source results 12 | */ 13 | availablefilters: IDataFilterResult[]; 14 | 15 | /** 16 | * The Hanlebars context available for consumers 17 | */ 18 | handlebarsContext?: typeof Handlebars; 19 | 20 | /** 21 | * The current selected items in the Search Results Web Part 22 | */ 23 | selectedItems?: {[key: string]: string}[]; 24 | 25 | /** 26 | * The count of items returned by the getItemCount method of a datasource 27 | */ 28 | totalCount?:number; 29 | } -------------------------------------------------------------------------------- /search-parts/src/models/dynamicData/IDataVerticalSourceData.ts: -------------------------------------------------------------------------------- 1 | import { IDataVertical } from "@pnp/modern-search-extensibility"; 2 | import { IDataVerticalConfiguration } from "../common/IDataVerticalConfiguration"; 3 | 4 | export interface IDataVerticalSourceData { 5 | 6 | /** 7 | * The current selected vertical 8 | */ 9 | selectedVertical: IDataVertical; 10 | 11 | /** 12 | * The serch verticals configuration. Used to determnine counts for other tabs. 13 | */ 14 | verticalsConfiguration: IDataVerticalConfiguration[]; 15 | } -------------------------------------------------------------------------------- /search-parts/src/models/dynamicData/IDynamicDataSourceProperty.ts: -------------------------------------------------------------------------------- 1 | interface IDynamicDataSourceProperty { 2 | key: string; 3 | text: string; 4 | } 5 | 6 | export default IDynamicDataSourceProperty; -------------------------------------------------------------------------------- /search-parts/src/models/search/ILocalizableSearchResult.ts: -------------------------------------------------------------------------------- 1 | export interface ILocalizableSearchResult { 2 | 3 | /** 4 | * The unique identifier of the search result 5 | */ 6 | uniqueIdentifier: number; 7 | 8 | /** 9 | * All localizable properties for this result 10 | */ 11 | properties: ILocalizableSearchResultProperty[]; 12 | } 13 | 14 | export interface ILocalizableSearchResultProperty { 15 | 16 | /** 17 | * Name of the search result propert (ex: 'RefinableStringXXX') 18 | */ 19 | propertyName: string; 20 | 21 | /** 22 | * Localized term ids 23 | */ 24 | termIds?: string[]; 25 | 26 | /** 27 | * Localized term labels 28 | */ 29 | termLabels?: string[]; 30 | } -------------------------------------------------------------------------------- /search-parts/src/models/search/IMicrosoftSearchDataSourceData.ts: -------------------------------------------------------------------------------- 1 | import { IDataSourceData } from "@pnp/modern-search-extensibility"; 2 | import { IQueryAlterationResponse } from "./IMicrosoftSearchResponse"; 3 | 4 | export interface IMicrosoftSearchDataSourceData extends IDataSourceData { 5 | 6 | /** 7 | * The alteration response by Microsft Search 8 | * see https://docs.microsoft.com/en-us/graph/api/resources/alterationResponse?view=graph-rest-beta&preserve-view=true 9 | * Spelling correction is only supported for the following resources: message, event, site, drive, driveItem, list, listItem and externalItem. 10 | */ 11 | queryAlterationResponse?: IQueryAlterationResponse; 12 | } -------------------------------------------------------------------------------- /search-parts/src/models/search/ISharePointManagedProperty.ts: -------------------------------------------------------------------------------- 1 | export default interface ISharePointManagedProperty { 2 | 3 | /** 4 | * Name of the search managed property 5 | */ 6 | name: string; 7 | 8 | /** 9 | * Is managed property sortable or not 10 | */ 11 | sortable?: boolean; 12 | } -------------------------------------------------------------------------------- /search-parts/src/models/search/ISharePointSearchResults.ts: -------------------------------------------------------------------------------- 1 | import { IDataFilterResult } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface ISharePointSearchResult { 4 | [key: string]: string; 5 | 6 | // Known SharePoint managed properties 7 | Title?: string; 8 | Path?: string; 9 | FileType?: string; 10 | HitHighlightedSummary?: string; 11 | AuthorOWSUSER?: string; 12 | owstaxidmetadataalltagsinfo?: string; 13 | Created?: string; 14 | UniqueID?: string; 15 | NormSiteID?: string; 16 | NormWebID?: string; 17 | NormListID?: string; 18 | NormUniqueID?: string; 19 | } 20 | 21 | export interface ISharePointSearchResults { 22 | queryModification?: string; 23 | queryKeywords: string; 24 | relevantResults: ISharePointSearchResult[]; 25 | secondaryResults: ISharePointSearchResultBlock[]; 26 | refinementResults: IDataFilterResult[]; 27 | promotedResults?: ISharePointSearchPromotedResult[]; 28 | spellingSuggestion?: string; 29 | totalRows: number; 30 | } 31 | 32 | export interface ISharePointSearchPromotedResult { 33 | url: string; 34 | title: string; 35 | description: string; 36 | } 37 | 38 | export interface ISharePointSearchResultBlock { 39 | title: string; 40 | results: ISharePointSearchResult[]; 41 | } 42 | -------------------------------------------------------------------------------- /search-parts/src/models/search/ISortFieldConfiguration.ts: -------------------------------------------------------------------------------- 1 | import { SortFieldDirection } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface ISortFieldConfiguration { 4 | 5 | /** 6 | * The sort search field to use 7 | */ 8 | sortField: string; 9 | 10 | /** 11 | * The default sort direction 12 | */ 13 | sortDirection: SortFieldDirection; 14 | 15 | /** 16 | * If the field is sorted by default (without use action) 17 | */ 18 | isDefaultSort: boolean; 19 | 20 | /** 21 | * If the field should be available for users to sort 22 | */ 23 | isUserSort: boolean; 24 | 25 | /** 26 | * If sortable by users, the display name to use in the control 27 | */ 28 | sortFieldDisplayName: string; 29 | } -------------------------------------------------------------------------------- /search-parts/src/providers/AvailableSuggestionProviders.ts: -------------------------------------------------------------------------------- 1 | import * as strings from 'CommonStrings'; 2 | import { ISuggestionProviderDefinition } from "@pnp/modern-search-extensibility"; 3 | 4 | export enum BuiltinSuggestionProviderKeys { 5 | SharePointStaticSuggestions = 'SharePointStaticSuggestions', 6 | } 7 | 8 | export class AvailableSuggestionProviders { 9 | 10 | /** 11 | * Returns the list of builtin data sources for the Search Results 12 | */ 13 | public static BuiltinSuggestionProviders: ISuggestionProviderDefinition[] = [ 14 | { 15 | name: strings.SuggestionProviders.SharePointStatic.ProviderName, 16 | key: BuiltinSuggestionProviderKeys.SharePointStaticSuggestions.toString(), 17 | description: strings.SuggestionProviders.SharePointStatic.ProviderDescription, 18 | serviceKey: null // ServiceKey will be created dynamically for builtin source 19 | } 20 | ]; 21 | } -------------------------------------------------------------------------------- /search-parts/src/providers/ISuggestionProviderConfiguration.ts: -------------------------------------------------------------------------------- 1 | export interface ISuggestionProviderConfiguration { 2 | name: string; 3 | key: string; 4 | enabled: boolean; 5 | description; 6 | } -------------------------------------------------------------------------------- /search-parts/src/queryModifier/IQueryModifierConfiguration.ts: -------------------------------------------------------------------------------- 1 | export interface IQueryModifierConfiguration { 2 | name: string; 3 | key: string; 4 | enabled: boolean; 5 | description:string; 6 | endWhenSuccessfull:boolean; 7 | } -------------------------------------------------------------------------------- /search-parts/src/services/dynamicDataService/IDynamicDataService.ts: -------------------------------------------------------------------------------- 1 | import IDataSourceProperty from "../../models/dynamicData/IDynamicDataSourceProperty"; 2 | import { DynamicDataProvider } from "@microsoft/sp-component-base"; 3 | 4 | export default interface IDynamicDataService { 5 | dynamicDataProvider: DynamicDataProvider; 6 | getAvailableDataSourcesByType(propertyId: string): Promise; 7 | } -------------------------------------------------------------------------------- /search-parts/src/services/extensibilityService/IExtensibilityService.ts: -------------------------------------------------------------------------------- 1 | import { IExtensibilityLibrary } from '@pnp/modern-search-extensibility'; 2 | import { IExtensibilityConfiguration } from '../../models/common/IExtensibilityConfiguration'; 3 | 4 | export default interface IExtensibilityService { 5 | 6 | /** 7 | * Loads the extensibility library component dynamically. 8 | * @returns if present in the SharePoint app catalog, returns the library instance. Returns undefined otherwise. 9 | */ 10 | loadExtensibilityLibraries(librairiesConfiguration: IExtensibilityConfiguration[]): Promise; 11 | } -------------------------------------------------------------------------------- /search-parts/src/services/taxonomyService/ITaxonomyService.ts: -------------------------------------------------------------------------------- 1 | import { ITerm } from './ITaxonomyItems'; 2 | 3 | export interface ITaxonomyService { 4 | 5 | /** 6 | * Gets multiple terms by their ids using the current taxonomy context 7 | * @param siteUrl The site URL to use for the taxonomy session 8 | * @param termIds An array of term ids to search for 9 | * @return {Promise} A promise containing the terms. 10 | */ 11 | getTermsById(siteUrl: string, termIds: string[]): Promise; 12 | } -------------------------------------------------------------------------------- /search-parts/src/styles/Common.module.scss: -------------------------------------------------------------------------------- 1 | .wpTitle { 2 | textarea, span { 3 | font-size: 20px!important; 4 | font-weight: 600!important; 5 | } 6 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchBox/components/ISearchBoxContainerState.ts: -------------------------------------------------------------------------------- 1 | export interface ISearchBoxContainerState { 2 | 3 | /** 4 | * The current value of the input string 5 | */ 6 | searchInputValue: string; 7 | 8 | /** 9 | * Error message 10 | */ 11 | errorMessage: string; 12 | 13 | /** 14 | * Show Clear button in the Search Box 15 | */ 16 | showClearButton: boolean; 17 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchBox/components/SearchBoxAutoComplete/ISearchBoxAutoCompleteProps.ts: -------------------------------------------------------------------------------- 1 | import { IReadonlyTheme } from '@microsoft/sp-component-base'; 2 | import { ISuggestionProvider } from '@pnp/modern-search-extensibility'; 3 | 4 | export interface ISearchBoxAutoCompleteProps { 5 | placeholderText: string; 6 | suggestionProviders: ISuggestionProvider[]; 7 | inputValue: string; 8 | onSearch: (queryText: string, isReset?: boolean) => void; 9 | domElement: HTMLElement; 10 | 11 | /** 12 | * The number of suggestions to display for each group 13 | */ 14 | numberOfSuggestionsPerGroup: number; 15 | 16 | /** 17 | * The current theme variant 18 | */ 19 | themeVariant: IReadonlyTheme | undefined; 20 | } 21 | -------------------------------------------------------------------------------- /search-parts/src/webparts/searchFilters/components/ISearchFiltersContainerState.ts: -------------------------------------------------------------------------------- 1 | import { IDataFilter, IDataFilterInternal } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface ISearchFiltersContainerState { 4 | 5 | /** 6 | * The selected/unselected filters sent to the Handlebars templates as context for rendering 7 | */ 8 | currentUiFilters: IDataFilterInternal[]; 9 | 10 | /** 11 | * Filters submitted to the data source 12 | */ 13 | submittedFilters: IDataFilter[]; 14 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchResults/components/ISearchResultsContainerState.ts: -------------------------------------------------------------------------------- 1 | import { IDataSourceData } from "@pnp/modern-search-extensibility"; 2 | 3 | export interface ISearchResultsContainerState { 4 | 5 | /** 6 | * The current loaded data 7 | */ 8 | data: IDataSourceData; 9 | 10 | /** 11 | * The current selected item keys in results regardless the page 12 | */ 13 | selectedItemKeys: string[]; 14 | 15 | /** 16 | * Flag indicating if results are loading 17 | */ 18 | isLoading: boolean; 19 | 20 | /** 21 | * Error message display in the message bar 22 | */ 23 | errorMessage: string; 24 | 25 | /** 26 | * Indicates if the data have already been rendered once. 27 | */ 28 | renderedOnce: boolean; 29 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchResults/components/SearchResultsContainer.module.scss: -------------------------------------------------------------------------------- 1 | .overlay { 2 | z-index: 1; 3 | display: flex; 4 | justify-content: center; 5 | align-items: center; 6 | } 7 | 8 | .title { 9 | 10 | textarea { 11 | font-size: 20px!important; 12 | font-weight: 600!important; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /search-parts/src/webparts/searchVerticals/ISearchVerticalsWebPartProps.ts: -------------------------------------------------------------------------------- 1 | import { IBaseWebPartProps } from "../../models/common/IBaseWebPartProps"; 2 | import { IDataVerticalConfiguration } from "../../models/common/IDataVerticalConfiguration"; 3 | 4 | export interface ISearchVerticalsWebPartProps extends IBaseWebPartProps { 5 | 6 | /** 7 | * The Web Part title 8 | */ 9 | title: string; 10 | 11 | /** 12 | * The configured search verticals 13 | */ 14 | verticals: IDataVerticalConfiguration[]; 15 | 16 | /** 17 | * The query string parameter name to use to select a vertical tab by default 18 | */ 19 | defaultVerticalQueryStringParam: string; 20 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchVerticals/components/ISearchVerticalsContainerProps.ts: -------------------------------------------------------------------------------- 1 | import { IDataVerticalConfiguration } from "../../../models/common/IDataVerticalConfiguration"; 2 | import { IReadonlyTheme } from "@microsoft/sp-component-base"; 3 | import { IWebPartTitleProps } from "@pnp/spfx-controls-react/lib/WebPartTitle"; 4 | import { ITokenService } from "@pnp/modern-search-extensibility"; 5 | 6 | export interface ISearchVerticalsContainerProps { 7 | 8 | /** 9 | * The current search verticals information 10 | */ 11 | verticals: IDataVerticalConfiguration[]; 12 | 13 | /** 14 | * Acllback handler when a vertical is selected 15 | */ 16 | onVerticalSelected: (itemKey: string) => void; 17 | 18 | /** 19 | * The current theme variant 20 | */ 21 | themeVariant: IReadonlyTheme | undefined; 22 | 23 | /** 24 | * The Web Part Title props 25 | */ 26 | webPartTitleProps: IWebPartTitleProps; 27 | 28 | /** 29 | * An instance of the token service 30 | */ 31 | tokenService: ITokenService; 32 | 33 | /** 34 | * The default selected vertical 35 | */ 36 | defaultSelectedKey: string; 37 | } 38 | -------------------------------------------------------------------------------- /search-parts/src/webparts/searchVerticals/components/ISearchVerticalsContainerState.ts: -------------------------------------------------------------------------------- 1 | export interface ISearchVerticalsContainerState { 2 | 3 | /** 4 | * The current selected vertical key 5 | */ 6 | selectedKey: string; 7 | } -------------------------------------------------------------------------------- /search-parts/src/webparts/searchVerticals/components/SearchVerticalsContainer.module.scss: -------------------------------------------------------------------------------- 1 | .dataVerticals { 2 | div[role=tablist] { 3 | white-space: normal; 4 | } 5 | 6 | .isLink { 7 | display: flex; 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /search-parts/src/webparts/searchVerticals/loc/mystrings.d.ts: -------------------------------------------------------------------------------- 1 | declare interface ISearchVerticalsWebPartStrings { 2 | General: { 3 | WebPartDefaultTitle: string; 4 | PlaceHolder: { 5 | EditLabel: string; 6 | IconText: string; 7 | Description: string; 8 | ConfigureBtnLabel: string; 9 | } 10 | }, 11 | PropertyPane: { 12 | SearchVerticalsGroupName: string; 13 | Verticals: { 14 | PropertyLabel: string; 15 | PanelHeader: string; 16 | PanelDescription: string; 17 | ButtonLabel: string; 18 | DefaultVerticalQueryStringParamLabel: string; 19 | DefaultVerticalQueryStringParamDescription: string; 20 | Fields: { 21 | TabName: string; 22 | TabValue: string; 23 | IconName: string; 24 | IsLink: string; 25 | LinkUrl: string; 26 | ShowLinkIcon: string; 27 | OpenBehavior: string; 28 | Audience: string; 29 | }, 30 | AudienceInputPlaceholderText: string; 31 | AudienceNoResultsFound: string; 32 | AudienceLoading: string; 33 | } 34 | } 35 | } 36 | 37 | declare module 'SearchVerticalsWebPartStrings' { 38 | const strings: ISearchVerticalsWebPartStrings; 39 | export = strings; 40 | } 41 | -------------------------------------------------------------------------------- /search-parts/teams/544c1372-42df-47c3-94d6-017428cd2baf_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/544c1372-42df-47c3-94d6-017428cd2baf_color.png -------------------------------------------------------------------------------- /search-parts/teams/544c1372-42df-47c3-94d6-017428cd2baf_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/544c1372-42df-47c3-94d6-017428cd2baf_outline.png -------------------------------------------------------------------------------- /search-parts/teams/8de5b2b8-7e5a-49ec-8db6-812f76c375f2_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/8de5b2b8-7e5a-49ec-8db6-812f76c375f2_color.png -------------------------------------------------------------------------------- /search-parts/teams/8de5b2b8-7e5a-49ec-8db6-812f76c375f2_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/8de5b2b8-7e5a-49ec-8db6-812f76c375f2_outline.png -------------------------------------------------------------------------------- /search-parts/teams/a5259212-77ae-40a0-9095-805ae2a0d5e9_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/a5259212-77ae-40a0-9095-805ae2a0d5e9_color.png -------------------------------------------------------------------------------- /search-parts/teams/a5259212-77ae-40a0-9095-805ae2a0d5e9_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/a5259212-77ae-40a0-9095-805ae2a0d5e9_outline.png -------------------------------------------------------------------------------- /search-parts/teams/e255fd67-fb1d-4e96-bc1e-31fd66979667_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/e255fd67-fb1d-4e96-bc1e-31fd66979667_color.png -------------------------------------------------------------------------------- /search-parts/teams/e255fd67-fb1d-4e96-bc1e-31fd66979667_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft-search/pnp-modern-search/f23f9b8b37b8f8233082d3ef3b65cfa2243757b6/search-parts/teams/e255fd67-fb1d-4e96-bc1e-31fd66979667_outline.png -------------------------------------------------------------------------------- /search-parts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./node_modules/@microsoft/rush-stack-compiler-4.7/includes/tsconfig-web.json", 3 | "compilerOptions": { 4 | "target": "es5", 5 | "forceConsistentCasingInFileNames": true, 6 | "module": "esnext", 7 | "moduleResolution": "node", 8 | "jsx": "react", 9 | "declaration": true, 10 | "sourceMap": true, 11 | "experimentalDecorators": true, 12 | "skipLibCheck": true, 13 | "outDir": "lib", 14 | "inlineSources": false, 15 | "strictNullChecks": false, 16 | "noUnusedLocals": false, 17 | "typeRoots": ["./node_modules/@types", "./node_modules/@microsoft"], 18 | "types": ["webpack-env"], 19 | "lib": ["es2017", "dom"] 20 | }, 21 | "include": ["src/**/*.ts"], 22 | "exclude": ["node_modules", "lib"] 23 | } 24 | --------------------------------------------------------------------------------