@finos/legend-data-cube
Version:
37 lines • 3.52 kB
JavaScript
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { cn, DataCubeIcon } from '@finos/legend-art';
import { observer } from 'mobx-react-lite';
import { DataCubeEditorColumnsSelector } from './DataCubeEditorColumnsSelector.js';
import { useEffect } from 'react';
import { FormCheckbox } from '../../core/DataCubeFormUtils.js';
import { _findCol } from '../../../stores/core/model/DataCubeColumn.js';
const ColumnLabel = observer((props) => {
const { column, editor } = props;
const showHiddenIndicator = editor.columnProperties.getColumnConfiguration(column.name).hideFromView;
return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('items-center overflow-hidden overflow-ellipsis whitespace-nowrap pl-2', {
'text-neutral-400': showHiddenIndicator,
}), children: column.name }), Boolean(_findCol(editor.leafExtendColumns, column.name)) && (_jsx("div", { className: "ml-1.5 mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600", children: `Extended (Leaf Level)` })), Boolean(_findCol(editor.groupExtendColumns, column.name)) && (_jsx("div", { className: "ml-1.5 mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600", children: `Extended (Group Level)` }))] }));
});
export const DataCubeEditorColumnsPanel = observer((props) => {
const { view } = props;
const editor = view.editor;
const panel = editor.columns;
useEffect(() => () => panel.propagateChanges(), [panel]);
return (_jsxs("div", { className: "h-full w-full select-none p-2", children: [_jsxs("div", { className: "flex h-6 justify-between", children: [_jsxs("div", { className: "flex h-full", children: [_jsx("div", { className: "flex h-6 items-center text-xl font-medium", children: _jsx(DataCubeIcon.TableColumns, {}) }), _jsx("div", { className: "ml-1 flex h-6 items-center text-xl font-medium", children: "Columns" })] }), _jsx("div", { className: "flex h-full items-center pr-2", children: _jsx(FormCheckbox, { label: "Show hidden columns?", checked: panel.selector.showHiddenColumns, onChange: () => panel.selector.setShowHiddenColumns(!panel.selector.showHiddenColumns) }) })] }), _jsx("div", { className: "flex h-[calc(100%_-_24px)] w-full", children: _jsx(DataCubeEditorColumnsSelector, { selector: panel.selector, noColumnsSelectedRenderer: () => (_jsxs("div", { className: "flex items-center border-[1.5px] border-neutral-200 p-2 font-semibold text-neutral-400", children: [_jsx("div", { children: _jsx(DataCubeIcon.Warning, { className: "mr-1 text-lg" }) }), "No columns selected"] })), columnLabelRenderer: (p) => _jsx(ColumnLabel, { ...p, editor: editor }) }) })] }));
});
//# sourceMappingURL=DataCubeEditorColumnsPanel.js.map