UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

54 lines 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaxonomyPanelContents = TaxonomyPanelContents; var tslib_1 = require("tslib"); var React = tslib_1.__importStar(require("react")); var TaxonomyPanelContents_module_scss_1 = tslib_1.__importDefault(require("./TaxonomyPanelContents.module.scss")); var react_1 = require("@fluentui/react"); var strings = tslib_1.__importStar(require("ControlStrings")); var react_hooks_1 = require("@uifabric/react-hooks"); var ModernTermPicker_1 = require("../modernTermPicker/ModernTermPicker"); var TaxonomyTree_1 = require("../taxonomyTree/TaxonomyTree"); function TaxonomyPanelContents(props) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; var _m = React.useState(((_a = props.selectedPanelOptions) === null || _a === void 0 ? void 0 : _a.length) > 0 ? tslib_1.__spreadArray([], props.selectedPanelOptions, true) : []), terms = _m[0], setTerms = _m[1]; var forceUpdate = (0, react_hooks_1.useForceUpdate)(); var selection = React.useMemo(function () { var s = new react_1.Selection({ onSelectionChanged: function () { props.setSelectedPanelOptions(function (prevOptions) { return tslib_1.__spreadArray([], selection.getSelection(), true); }); forceUpdate(); }, getKey: function (term) { return term.id; } // eslint-disable-line @typescript-eslint/no-explicit-any }); s.setItems(terms); for (var _i = 0, _a = props.selectedPanelOptions; _i < _a.length; _i++) { var selectedOption = _a[_i]; if (s.canSelectItem) { s.setKeySelected(selectedOption.id.toString(), true, true); } } return s; }, [terms]); var onPickerChange = function (items) { var itemsToAdd = items.filter(function (item) { return terms.every(function (term) { return term.id !== item.id; }); }); setTerms(function (prevTerms) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], prevTerms, true), itemsToAdd, true); }); selection.setItems(tslib_1.__spreadArray(tslib_1.__spreadArray([], selection.getItems(), true), itemsToAdd, true), true); for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { var item = items_1[_i]; if (selection.canSelectItem(item)) { selection.setKeySelected(item.id.toString(), true, false); } } }; var termPickerStyles = { root: { paddingTop: 4, paddingBottom: 4, paddingRight: 4, minheight: 34 }, input: { minheight: 34 }, text: { minheight: 34, borderStyle: 'none', borderWidth: '0px' } }; return (React.createElement("div", { className: TaxonomyPanelContents_module_scss_1.default.taxonomyPanelContents }, React.createElement("div", { className: TaxonomyPanelContents_module_scss_1.default.taxonomyTreeSelector }, React.createElement("div", null, React.createElement(ModernTermPicker_1.ModernTermPicker, tslib_1.__assign({}, props.termPickerProps, { removeButtonAriaLabel: strings.ModernTaxonomyPickerRemoveButtonText, onResolveSuggestions: (_c = (_b = props.termPickerProps) === null || _b === void 0 ? void 0 : _b.onResolveSuggestions) !== null && _c !== void 0 ? _c : props.onResolveSuggestions, itemLimit: props.allowMultipleSelections ? undefined : 1, selectedItems: props.selectedPanelOptions, styles: (_e = (_d = props.termPickerProps) === null || _d === void 0 ? void 0 : _d.styles) !== null && _e !== void 0 ? _e : termPickerStyles, onChange: onPickerChange, getTextFromItem: props.getTextFromItem, pickerSuggestionsProps: (_g = (_f = props.termPickerProps) === null || _f === void 0 ? void 0 : _f.pickerSuggestionsProps) !== null && _g !== void 0 ? _g : { noResultsFoundText: strings.ModernTaxonomyPickerNoResultsFound }, inputProps: (_j = (_h = props.termPickerProps) === null || _h === void 0 ? void 0 : _h.inputProps) !== null && _j !== void 0 ? _j : { 'aria-label': props.placeHolder || strings.ModernTaxonomyPickerDefaultPlaceHolder, placeholder: props.placeHolder || strings.ModernTaxonomyPickerDefaultPlaceHolder }, onRenderSuggestionsItem: (_l = (_k = props.termPickerProps) === null || _k === void 0 ? void 0 : _k.onRenderSuggestionsItem) !== null && _l !== void 0 ? _l : props.onRenderSuggestionsItem, onRenderItem: props.onRenderItem, themeVariant: props.themeVariant })))), React.createElement(react_1.Label, { className: TaxonomyPanelContents_module_scss_1.default.taxonomyTreeLabel }, props.allowMultipleSelections ? strings.ModernTaxonomyPickerTreeTitleMulti : strings.ModernTaxonomyPickerTreeTitleSingle), React.createElement(TaxonomyTree_1.TaxonomyTree, { anchorTermInfo: props.anchorTermInfo, languageTag: props.languageTag, onLoadMoreData: props.onLoadMoreData, pageSize: props.pageSize, selection: selection, setTerms: setTerms, termSetInfo: props.termSetInfo, termStoreInfo: props.termStoreInfo, terms: terms, allowMultipleSelections: props.allowMultipleSelections, onRenderActionButton: props.onRenderActionButton, hideDeprecatedTerms: true, showIcons: false, allowSelectingChildren: props.allowSelectingChildren }))); } //# sourceMappingURL=TaxonomyPanelContents.js.map