devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
141 lines (139 loc) • 6.55 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/file_manager/ui.file_manager.dialog.folder_chooser.js)
* Version: 25.2.7
* Build date: Tue May 05 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _message = _interopRequireDefault(require("../../../common/core/localization/message"));
var _renderer = _interopRequireDefault(require("../../../core/renderer"));
var _extend = require("../../../core/utils/extend");
var _uiFile_manager = require("../../ui/file_manager/ui.file_manager.common");
var _uiFile_manager2 = _interopRequireDefault(require("../../ui/file_manager/ui.file_manager.dialog"));
var _uiFile_manager3 = _interopRequireDefault(require("../../ui/file_manager/ui.file_manager.files_tree_view"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const FILE_MANAGER_DIALOG_FOLDER_CHOOSER = "dx-filemanager-dialog-folder-chooser";
const FILE_MANAGER_DIALOG_FOLDER_CHOOSER_POPUP = "dx-filemanager-dialog-folder-chooser-popup";
class FileManagerFolderChooserDialog extends _uiFile_manager2.default {
show() {
var _this$_filesTreeView;
this._setSelectedDirInfo(null);
null === (_this$_filesTreeView = this._filesTreeView) || void 0 === _this$_filesTreeView || _this$_filesTreeView.refresh();
super.show()
}
switchToCopyDialog(targetItemInfos) {
this._targetItemInfos = targetItemInfos;
this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserCopyTitle"));
this._setApplyButtonOptions({
text: _message.default.format("dxFileManager-dialogDirectoryChooserCopyButtonText"),
disabled: true
})
}
switchToMoveDialog(targetItemInfos) {
this._targetItemInfos = targetItemInfos;
this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserMoveTitle"));
this._setApplyButtonOptions({
text: _message.default.format("dxFileManager-dialogDirectoryChooserMoveButtonText"),
disabled: true
})
}
_getDialogOptions() {
return Object.assign({}, super._getDialogOptions(), {
contentCssClass: FILE_MANAGER_DIALOG_FOLDER_CHOOSER,
popupCssClass: FILE_MANAGER_DIALOG_FOLDER_CHOOSER_POPUP
})
}
_createContentTemplate(element) {
var _this$_$contentElemen, _this$_filesTreeView2;
super._createContentTemplate(element);
const {
getDirectories: getDirectories
} = this.option();
this._filesTreeView = this._createComponent((0, _renderer.default)("<div>"), _uiFile_manager3.default, {
getDirectories: getDirectories,
getCurrentDirectory: () => this._getDialogSelectedDirectory(),
onDirectoryClick: e => this._onFilesTreeViewDirectoryClick(e),
onFilesTreeViewContentReady: () => this._toggleUnavailableLocationsDisabled(true)
});
null === (_this$_$contentElemen = this._$contentElement) || void 0 === _this$_$contentElemen || _this$_$contentElemen.append((0, _renderer.default)(null === (_this$_filesTreeView2 = this._filesTreeView) || void 0 === _this$_filesTreeView2 ? void 0 : _this$_filesTreeView2.$element()))
}
_getDialogResult() {
const result = this._getDialogSelectedDirectory();
return result ? {
folder: result
} : result
}
_getDefaultOptions() {
return (0, _extend.extend)(super._getDefaultOptions(), {
getItems: null
})
}
_getDialogSelectedDirectory() {
return this._selectedDirectoryInfo
}
_onFilesTreeViewDirectoryClick(_ref) {
var _this$_filesTreeView3;
let {
itemData: itemData
} = _ref;
this._setSelectedDirInfo(itemData);
null === (_this$_filesTreeView3 = this._filesTreeView) || void 0 === _this$_filesTreeView3 || _this$_filesTreeView3.updateCurrentDirectory()
}
_setSelectedDirInfo(dirInfo) {
this._selectedDirectoryInfo = dirInfo;
this._setApplyButtonOptions({
disabled: !dirInfo
})
}
_onPopupShown() {
this._toggleUnavailableLocationsDisabled(true);
super._onPopupShown()
}
_onPopupHiding() {
this._toggleUnavailableLocationsDisabled(false);
super._onPopupHiding()
}
_toggleUnavailableLocationsDisabled(isDisabled) {
if (!this._filesTreeView) {
return
}
const locations = this._getLocationsToProcess(isDisabled);
this._filesTreeView.toggleDirectoryExpandedStateRecursive(locations.locationsToExpand[0], isDisabled).then(() => {
var _this$_filesTreeView4;
return null === (_this$_filesTreeView4 = this._filesTreeView) || void 0 === _this$_filesTreeView4 ? void 0 : _this$_filesTreeView4.toggleDirectoryLineExpandedState(locations.locationsToCollapse, !isDisabled).then(() => locations.locationKeysToDisable.forEach(key => {
var _this$_filesTreeView5;
return null === (_this$_filesTreeView5 = this._filesTreeView) || void 0 === _this$_filesTreeView5 ? void 0 : _this$_filesTreeView5.toggleNodeDisabledState(key, isDisabled)
}))
})
}
_getLocationsToProcess(isDisabled) {
const expandLocations = {};
const collapseLocations = {};
this._targetItemInfos.forEach(itemInfo => {
if (itemInfo.parentDirectory) {
expandLocations[itemInfo.parentDirectory.getInternalKey()] = itemInfo.parentDirectory
}
if (itemInfo.fileItem.isDirectory) {
collapseLocations[itemInfo.getInternalKey()] = itemInfo
}
});
const expandMap = (0, _uiFile_manager.getMapFromObject)(expandLocations);
const collapseMap = (0, _uiFile_manager.getMapFromObject)(collapseLocations);
return {
locationsToExpand: isDisabled ? expandMap.values : [],
locationsToCollapse: isDisabled ? collapseMap.values : [],
locationKeysToDisable: expandMap.keys.concat(...collapseMap.keys)
}
}
}
var _default = exports.default = FileManagerFolderChooserDialog;