@leav/ui 1.6.0-b6d4f1b3 → 1.6.0-d2d86b41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_gqlTypes/index.d.ts +11 -0
- package/dist/_gqlTypes/index.js +1 -0
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js +20 -12
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map +1 -1
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +1 -1
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js +15 -17
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/View/View.d.ts +1 -3
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js +6 -2
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
- package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
- package/dist/components/RecordEdition/EditRecord/EditRecord.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/antdUtils.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js.map +1 -1
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +3 -3
- package/dist/hooks/useIFrameMessenger/schema.js +1 -1
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/locales/en/shared.json +3 -3
- package/dist/locales/fr/shared.json +3 -3
- package/package.json +6 -7
package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
|
|
3
3
|
// This file is released under LGPL V3
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
|
-
import {
|
|
5
|
+
import { DndContext, closestCenter } from '@dnd-kit/core';
|
|
6
|
+
import { SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
|
|
7
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
6
8
|
import styled from 'styled-components';
|
|
7
9
|
import { infosCol } from '../../../components/LibraryItemsList/constants';
|
|
8
10
|
import { AttributesSelectionListActionTypes } from '../reducer/attributesSelectionListReducer';
|
|
@@ -35,21 +37,27 @@ const CustomCard = styled.div `
|
|
|
35
37
|
`;
|
|
36
38
|
function SelectedAttributesList() {
|
|
37
39
|
const { state, dispatch } = useAttributesSelectionListState();
|
|
38
|
-
const selection = state.selectedAttributes;
|
|
39
|
-
const
|
|
40
|
-
|
|
40
|
+
const selection = state.selectedAttributes.filter(a => a.path !== infosCol);
|
|
41
|
+
const handleDragEnd = event => {
|
|
42
|
+
const { active, over } = event;
|
|
43
|
+
if (!over || active.id === over.id) {
|
|
41
44
|
return;
|
|
42
45
|
}
|
|
43
|
-
|
|
46
|
+
const from = selection.findIndex(item => item.path === active.id);
|
|
47
|
+
const to = selection.findIndex(item => item.path === over.id);
|
|
48
|
+
if (from === -1 || to === -1) {
|
|
44
49
|
return;
|
|
45
50
|
}
|
|
46
|
-
dispatch({
|
|
47
|
-
type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE,
|
|
48
|
-
from: result.source.index,
|
|
49
|
-
to: result.destination.index,
|
|
50
|
-
});
|
|
51
|
+
dispatch({ type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE, from, to });
|
|
51
52
|
};
|
|
52
|
-
return (_jsx(WrapperItemSelected, { children: _jsx(
|
|
53
|
+
return (_jsx(WrapperItemSelected, { children: _jsx(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: selection.map(a => a.path), strategy: verticalListSortingStrategy, children: selection.map(selectedAttribute => (_jsx(SortableItem, { selectedAttribute: selectedAttribute }, selectedAttribute.path))) }) }) }));
|
|
54
|
+
}
|
|
55
|
+
function SortableItem({ selectedAttribute }) {
|
|
56
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
|
|
57
|
+
id: selectedAttribute.path,
|
|
58
|
+
});
|
|
59
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
60
|
+
return (_jsx(CustomCard, { ref: setNodeRef, style: style, ...attributes, children: _jsx(SelectedAttribute, { selectedAttribute: selectedAttribute, handleProps: listeners }) }));
|
|
53
61
|
}
|
|
54
62
|
export default SelectedAttributesList;
|
|
55
63
|
//# sourceMappingURL=SelectedAttributesList.js.map
|
package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedAttributesList.js","sourceRoot":"","sources":["../../../../src/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"SelectedAttributesList.js","sourceRoot":"","sources":["../../../../src/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy, useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {infosCol} from '_ui/components/LibraryItemsList/constants';\nimport {AttributesSelectionListActionTypes} from '../reducer/attributesSelectionListReducer';\nimport {useAttributesSelectionListState} from '../reducer/attributesSelectionListStateContext';\nimport SelectedAttribute from './SelectedAttribute/SelectedAttribute';\nimport {type ISelectedAttribute} from '_ui/types';\n\nconst WrapperItemSelected = styled.div`\n overflow-y: auto;\n height: calc(100vh - 15rem);\n\n &&& > *:first-child {\n margin-top: 0;\n }\n\n &&& > *:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst CustomCard = styled.div`\n &&& {\n padding: 0;\n margin: 0 10px 10px 10px;\n display: flex;\n justify-content: space-between;\n border: 1px solid #f0f0f0;\n border-radius: 2px;\n min-height: 3rem;\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\n background: #fff;\n }\n`;\n\nfunction SelectedAttributesList(): JSX.Element {\n const {state, dispatch} = useAttributesSelectionListState();\n const selection = state.selectedAttributes.filter(a => a.path !== infosCol);\n\n const handleDragEnd = event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n const from = selection.findIndex(item => item.path === active.id);\n const to = selection.findIndex(item => item.path === over.id);\n if (from === -1 || to === -1) {\n return;\n }\n dispatch({type: AttributesSelectionListActionTypes.MOVE_SELECTED_ATTRIBUTE, from, to});\n };\n\n return (\n <WrapperItemSelected>\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={selection.map(a => a.path)} strategy={verticalListSortingStrategy}>\n {selection.map(selectedAttribute => (\n <SortableItem key={selectedAttribute.path} selectedAttribute={selectedAttribute} />\n ))}\n </SortableContext>\n </DndContext>\n </WrapperItemSelected>\n );\n}\n\nfunction SortableItem({selectedAttribute}: {selectedAttribute: ISelectedAttribute}) {\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({\n id: selectedAttribute.path,\n });\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n return (\n <CustomCard ref={setNodeRef} style={style} {...attributes}>\n <SelectedAttribute selectedAttribute={selectedAttribute} handleProps={listeners} />\n </CustomCard>\n );\n}\n\nexport default SelectedAttributesList;\n"]}
|
|
@@ -11,6 +11,6 @@ export const EmptyValueCheckbox = ({ filter, onSelect }) => {
|
|
|
11
11
|
const onChange = () => {
|
|
12
12
|
onSelect(!filter.withEmptyValues);
|
|
13
13
|
};
|
|
14
|
-
return (_jsx(TreeStyled, { checkable: true, treeData: [{ title: t('
|
|
14
|
+
return (_jsx(TreeStyled, { checkable: true, treeData: [{ title: t('filters.empty-value'), key: EMPTY_VALUE_KEY, isLeaf: true }], checkedKeys: filter.withEmptyValues ? [EMPTY_VALUE_KEY] : [], onSelect: onChange, onCheck: onChange }));
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=EmptyValueCheckbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyValueCheckbox.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/EmptyValueCheckbox.tsx"],"names":[],"mappings":";AAIA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAQpE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;;CAEjC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAgD,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClG,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,SAAS,QACT,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"EmptyValueCheckbox.js","sourceRoot":"","sources":["../../../../src/components/Filters/filter-items/EmptyValueCheckbox.tsx"],"names":[],"mappings":";AAIA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAQpE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;;CAEjC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAgD,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClG,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,UAAU,IACP,SAAS,QACT,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,EACjF,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5D,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,GACnB,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type FunctionComponent} from 'react';\nimport styled from 'styled-components';\nimport {KitTree} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type UIFilter} from '../_types';\n\ninterface IEmptyValueCheckboxProps {\n filter: UIFilter;\n onSelect: (selected: boolean) => void;\n}\n\nconst TreeStyled = styled(KitTree)`\n font-style: italic;\n`;\n\nconst EMPTY_VALUE_KEY = '0';\n\nexport const EmptyValueCheckbox: FunctionComponent<IEmptyValueCheckboxProps> = ({filter, onSelect}) => {\n const {t} = useSharedTranslation();\n\n const onChange = () => {\n onSelect(!filter.withEmptyValues);\n };\n\n return (\n <TreeStyled\n checkable\n treeData={[{title: t('filters.empty-value'), key: EMPTY_VALUE_KEY, isLeaf: true}]}\n checkedKeys={filter.withEmptyValues ? [EMPTY_VALUE_KEY] : []}\n onSelect={onChange}\n onCheck={onChange}\n />\n );\n};\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
|
|
2
1
|
import { type IFilter } from '../../../../types/search';
|
|
3
2
|
export interface IFilterInputProps {
|
|
4
3
|
filter: IFilter;
|
|
@@ -7,7 +6,6 @@ export interface IFilterInputProps {
|
|
|
7
6
|
}
|
|
8
7
|
interface IFilterProps {
|
|
9
8
|
filter: IFilter;
|
|
10
|
-
handleProps: DraggableProvidedDragHandleProps;
|
|
11
9
|
}
|
|
12
|
-
declare function Filter({ filter
|
|
10
|
+
declare function Filter({ filter }: IFilterProps): JSX.Element;
|
|
13
11
|
export default Filter;
|
|
@@ -6,6 +6,7 @@ import { CloseCircleFilled, MoreOutlined } from '@ant-design/icons';
|
|
|
6
6
|
import { localizedTranslation } from '@leav/utils';
|
|
7
7
|
import { Button, Dropdown } from 'antd';
|
|
8
8
|
import { useCallback, useState } from 'react';
|
|
9
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
9
10
|
import styled from 'styled-components';
|
|
10
11
|
import { themeVars } from '../../../../antdTheme';
|
|
11
12
|
import DateBetweenFilter from '../../../../components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';
|
|
@@ -27,6 +28,7 @@ import DateFilter from './FilterInput/DateFilter';
|
|
|
27
28
|
import NumericFilter from './FilterInput/NumericFilter';
|
|
28
29
|
import TextFilter from './FilterInput/TextFilter';
|
|
29
30
|
import { getDefaultFilterValueByFormat } from '../../../../components/LibraryItemsList/FiltersPanel/Filter/filterUtils';
|
|
31
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
30
32
|
const Wrapper = styled.div `
|
|
31
33
|
background: ${themeVars.lightBg};
|
|
32
34
|
padding: 8px 8px 8px 0px;
|
|
@@ -118,11 +120,13 @@ const ClearParentButton = styled(Button) `
|
|
|
118
120
|
}
|
|
119
121
|
}
|
|
120
122
|
`;
|
|
121
|
-
function Filter({ filter
|
|
123
|
+
function Filter({ filter }) {
|
|
122
124
|
const { t } = useSharedTranslation();
|
|
123
125
|
const { lang } = useLang();
|
|
124
126
|
const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
|
|
125
127
|
const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);
|
|
128
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: filter.key });
|
|
129
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
126
130
|
const handleDelete = () => {
|
|
127
131
|
searchDispatch({
|
|
128
132
|
type: SearchActionTypes.SET_FILTERS,
|
|
@@ -318,7 +322,7 @@ function Filter({ filter, handleProps }) {
|
|
|
318
322
|
const _handlePressEnter = () => {
|
|
319
323
|
searchDispatch({ type: SearchActionTypes.APPLY_FILTERS });
|
|
320
324
|
};
|
|
321
|
-
return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, children: [_jsx(Handle, { className: "filter-handle", ...
|
|
325
|
+
return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, ref: setNodeRef, style: style, ...attributes, children: [_jsx(Handle, { className: "filter-handle", ...listeners }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
|
|
322
326
|
}
|
|
323
327
|
export default Filter;
|
|
324
328
|
//# sourceMappingURL=Filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n handleProps: DraggableProvidedDragHandleProps;\n}\n\nfunction Filter({filter, handleProps}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active}>\n <Handle className=\"filter-handle\" {...handleProps} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}: </span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\nimport {useSortable} from '@dnd-kit/sortable';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n}\n\nfunction Filter({filter}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: filter.key});\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active} ref={setNodeRef} style={style} {...attributes}>\n <Handle className=\"filter-handle\" {...listeners} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}: </span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
|
|
@@ -6,7 +6,8 @@ import { DownOutlined } from '@ant-design/icons';
|
|
|
6
6
|
import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
|
|
7
7
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
8
8
|
import { Button, Dropdown, Space } from 'antd';
|
|
9
|
-
import {
|
|
9
|
+
import { DndContext, closestCenter } from '@dnd-kit/core';
|
|
10
|
+
import { SortableContext, verticalListSortingStrategy, arrayMove } from '@dnd-kit/sortable';
|
|
10
11
|
import styled from 'styled-components';
|
|
11
12
|
import { themeVars } from '../../../antdTheme';
|
|
12
13
|
import useSearchReducer from '../../../components/LibraryItemsList/hooks/useSearchReducer';
|
|
@@ -71,24 +72,21 @@ function FiltersPanel() {
|
|
|
71
72
|
const _handleHide = () => {
|
|
72
73
|
searchDispatch({ type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type });
|
|
73
74
|
};
|
|
74
|
-
const
|
|
75
|
-
|
|
75
|
+
const handleDragEnd = event => {
|
|
76
|
+
const { active, over } = event;
|
|
77
|
+
if (!over || active.id === over.id) {
|
|
76
78
|
return;
|
|
77
79
|
}
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
+
const oldIndex = searchState.filters.findIndex(f => f.key === active.id);
|
|
81
|
+
const newIndex = searchState.filters.findIndex(f => f.key === over.id);
|
|
82
|
+
if (oldIndex === -1 || newIndex === -1) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const filters = arrayMove(searchState.filters, oldIndex, newIndex).map((filter, idx) => ({
|
|
80
86
|
...filter,
|
|
81
|
-
index:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
? result.source.index
|
|
85
|
-
: filter.index,
|
|
86
|
-
}))
|
|
87
|
-
.sort((a, b) => a.index - b.index);
|
|
88
|
-
searchDispatch({
|
|
89
|
-
type: SearchActionTypes.SET_FILTERS,
|
|
90
|
-
filters: newFilter,
|
|
91
|
-
});
|
|
87
|
+
index: idx,
|
|
88
|
+
}));
|
|
89
|
+
searchDispatch({ type: SearchActionTypes.SET_FILTERS, filters });
|
|
92
90
|
};
|
|
93
91
|
const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);
|
|
94
92
|
const _handleApplyFilters = () => {
|
|
@@ -117,7 +115,7 @@ function FiltersPanel() {
|
|
|
117
115
|
label: t('filters.remove-filters'),
|
|
118
116
|
},
|
|
119
117
|
],
|
|
120
|
-
}, children: _jsxs(Button, { type: "text", style: { display: 'inline-flex' }, children: [t('filters.filters'), _jsx(DownOutlined, { style: { marginTop: '5px', marginLeft: '-3px' } })] }) }), _jsxs(Space, { size: "small", children: [_jsx(Button, { disabled: !searchState.filters.length, onClick: _handleApplyFilters, children: t('filters.apply') }), _jsx(Button, { onClick: _handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] })] }), _jsx(FiltersWrapper, { children: _jsx(
|
|
118
|
+
}, children: _jsxs(Button, { type: "text", style: { display: 'inline-flex' }, children: [t('filters.filters'), _jsx(DownOutlined, { style: { marginTop: '5px', marginLeft: '-3px' } })] }) }), _jsxs(Space, { size: "small", children: [_jsx(Button, { disabled: !searchState.filters.length, onClick: _handleApplyFilters, children: t('filters.apply') }), _jsx(Button, { onClick: _handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] })] }), _jsx(FiltersWrapper, { children: _jsx(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: filtersSorted.map(v => v.key), strategy: verticalListSortingStrategy, children: _jsx(ListFilters, { children: filtersSorted.map(filter => (_jsx(Filter, { filter: filter }, filter.key))) }) }) }) })] }));
|
|
121
119
|
}
|
|
122
120
|
export default FiltersPanel;
|
|
123
121
|
//# sourceMappingURL=FiltersPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltersPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DownOutlined} from '@ant-design/icons';\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {Button, Dropdown, Space} from 'antd';\nimport {DragDropContext, Draggable, Droppable, type DropResult, type ResponderProvided} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport Filter from './Filter/Filter';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n width: 1000px;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst FiltersWrapper = styled.div`\n height: calc(100% - 7rem);\n overflow: auto;\n`;\n\nconst ListFilters = styled.div`\n display: grid;\n`;\n\nfunction FiltersPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n\n const _resetFilters = () => {\n searchDispatch({type: SearchActionTypes.RESET_FILTERS});\n };\n\n const _disableFilters = () => {\n searchDispatch({type: SearchActionTypes.DISABLE_FILTERS});\n };\n\n const _enableFilters = () => {\n searchDispatch({type: SearchActionTypes.ENABLE_FILTERS});\n };\n\n const _handleHide = () => {\n searchDispatch({type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type});\n };\n\n const onDragEnd = (result: DropResult, provided: ResponderProvided) => {\n if (!result.destination) {\n return;\n }\n\n const newFilter = searchState.filters\n .map(filter => ({\n ...filter,\n index:\n result.source.index === filter.index\n ? result.destination.index\n : result.destination.index === filter.index\n ? result.source.index\n : filter.index,\n }))\n .sort((a, b) => a.index - b.index);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilter,\n });\n };\n\n const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);\n\n const _handleApplyFilters = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n const allFiltersDisabled = searchState.filters.every(f => f.active === false);\n const allFiltersEnabled = searchState.filters.every(f => f.active === true);\n\n return (\n <Wrapper>\n <Header>\n <Dropdown\n menu={{\n items: [\n {\n key: 'disable',\n disabled: allFiltersDisabled,\n onClick: _disableFilters,\n label: t('filters.disable-filters'),\n },\n {\n key: 'enable',\n disabled: allFiltersEnabled,\n onClick: _enableFilters,\n label: t('filters.enable-filters'),\n },\n {\n key: 'remove',\n disabled: !searchState.filters.length,\n onClick: _resetFilters,\n label: t('filters.remove-filters'),\n },\n ],\n }}\n >\n <Button type=\"text\" style={{display: 'inline-flex'}}>\n {t('filters.filters')}\n <DownOutlined style={{marginTop: '5px', marginLeft: '-3px'}} />\n </Button>\n </Dropdown>\n <Space size=\"small\">\n <Button disabled={!searchState.filters.length} onClick={_handleApplyFilters}>\n {t('filters.apply')}\n </Button>\n <Button onClick={_handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />} />\n </Space>\n </Header>\n\n <FiltersWrapper>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"droppable\">\n {providedDroppable => (\n <ListFilters {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {filtersSorted.map(filter => (\n <Draggable\n key={filter.index}\n draggableId={filter.index.toString()}\n index={filter.index}\n >\n {provided => (\n <div ref={provided.innerRef} {...provided.draggableProps}>\n <Filter\n key={filter.index}\n filter={filter}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </ListFilters>\n )}\n </Droppable>\n </DragDropContext>\n </FiltersWrapper>\n </Wrapper>\n );\n}\n\nexport default FiltersPanel;\n"]}
|
|
1
|
+
{"version":3,"file":"FiltersPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {DownOutlined} from '@ant-design/icons';\nimport {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {Button, Dropdown, Space} from 'antd';\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy, arrayMove} from '@dnd-kit/sortable';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport Filter from './Filter/Filter';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n width: 1000px;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst FiltersWrapper = styled.div`\n height: calc(100% - 7rem);\n overflow: auto;\n`;\n\nconst ListFilters = styled.div`\n display: grid;\n`;\n\nfunction FiltersPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n\n const _resetFilters = () => {\n searchDispatch({type: SearchActionTypes.RESET_FILTERS});\n };\n\n const _disableFilters = () => {\n searchDispatch({type: SearchActionTypes.DISABLE_FILTERS});\n };\n\n const _enableFilters = () => {\n searchDispatch({type: SearchActionTypes.ENABLE_FILTERS});\n };\n\n const _handleHide = () => {\n searchDispatch({type: SearchActionTypes.SET_SIDEBAR, visible: false, sidebarType: searchState.sideBar.type});\n };\n\n const handleDragEnd = event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = searchState.filters.findIndex(f => f.key === active.id);\n const newIndex = searchState.filters.findIndex(f => f.key === over.id);\n if (oldIndex === -1 || newIndex === -1) {\n return;\n }\n\n const filters = arrayMove(searchState.filters, oldIndex, newIndex).map((filter, idx) => ({\n ...filter,\n index: idx,\n }));\n\n searchDispatch({type: SearchActionTypes.SET_FILTERS, filters});\n };\n\n const filtersSorted = searchState.filters.sort((a, b) => a.index - b.index);\n\n const _handleApplyFilters = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n const allFiltersDisabled = searchState.filters.every(f => f.active === false);\n const allFiltersEnabled = searchState.filters.every(f => f.active === true);\n\n return (\n <Wrapper>\n <Header>\n <Dropdown\n menu={{\n items: [\n {\n key: 'disable',\n disabled: allFiltersDisabled,\n onClick: _disableFilters,\n label: t('filters.disable-filters'),\n },\n {\n key: 'enable',\n disabled: allFiltersEnabled,\n onClick: _enableFilters,\n label: t('filters.enable-filters'),\n },\n {\n key: 'remove',\n disabled: !searchState.filters.length,\n onClick: _resetFilters,\n label: t('filters.remove-filters'),\n },\n ],\n }}\n >\n <Button type=\"text\" style={{display: 'inline-flex'}}>\n {t('filters.filters')}\n <DownOutlined style={{marginTop: '5px', marginLeft: '-3px'}} />\n </Button>\n </Dropdown>\n <Space size=\"small\">\n <Button disabled={!searchState.filters.length} onClick={_handleApplyFilters}>\n {t('filters.apply')}\n </Button>\n <Button onClick={_handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />} />\n </Space>\n </Header>\n\n <FiltersWrapper>\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={filtersSorted.map(v => v.key)} strategy={verticalListSortingStrategy}>\n <ListFilters>\n {filtersSorted.map(filter => (\n <Filter key={filter.key} filter={filter} />\n ))}\n </ListFilters>\n </SortableContext>\n </DndContext>\n </FiltersWrapper>\n </Wrapper>\n );\n}\n\nexport default FiltersPanel;\n"]}
|
|
@@ -72,12 +72,6 @@ function ChooseTableColumns({ visible, onClose }) {
|
|
|
72
72
|
const _handleCancel = () => {
|
|
73
73
|
onClose();
|
|
74
74
|
};
|
|
75
|
-
// hack to disable warning "Droppable: unsupported nested scroll container" from react-beautiful-dnd,
|
|
76
|
-
// remove "overflow: auto" on class "ant-modal-wrap"
|
|
77
|
-
const elements = document.getElementsByClassName('ant-modal-wrap');
|
|
78
|
-
if (elements.length) {
|
|
79
|
-
elements[0].style.overflow = 'initial';
|
|
80
|
-
}
|
|
81
75
|
return (_jsx(Modal, { open: visible, onCancel: _handleCancel, title: t('table-columns-selection.header'), width: "70rem", centered: true, footer: [
|
|
82
76
|
_jsx(Button, { onClick: _handleCancel, children: t('table-columns-selection.cancel') }, "Cancel"),
|
|
83
77
|
_jsx(Button, { type: "primary", onClick: handleSubmit, children: t('table-columns-selection.submit') }, "Submit"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChooseTableColumns.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChooseTableColumns.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Modal} from 'antd';\nimport {useState} from 'react';\nimport AttributesSelectionList from '_ui/components/AttributesSelectionList';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISelectedAttribute} from '_ui/types/attributes';\nimport {type IAttribute, type IField} from '_ui/types/search';\nimport {AttributeFormat, AttributeType} from '_ui/_gqlTypes';\nimport {getFieldsKeyFromAttribute} from '../../helpers/getFieldsKeyFromAttribute';\n\ninterface IChooseTableColumnsProps {\n visible: boolean;\n onClose: () => void;\n}\n\nfunction ChooseTableColumns({visible, onClose}: IChooseTableColumnsProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [selectedAttributes, setSelectedAttributes] = useState<ISelectedAttribute[]>(\n (searchState?.fields ?? []).map(col => {\n const currentAttribute = searchState.attributes.find(\n attribute => attribute.id === col.id && attribute.library === col.library,\n );\n\n return {\n ...col,\n path: col.key,\n label: currentAttribute?.label ?? null,\n multiple_values: !!col.multipleValues,\n };\n }),\n );\n\n const handleSubmit = () => {\n const noDuplicateNewAttribute: IAttribute[] = selectedAttributes\n .filter(\n selectedAttribute =>\n !searchState.attributes.some(\n attribute =>\n attribute.id === selectedAttribute.id && attribute.library === selectedAttribute.library,\n ),\n )\n .map(a => ({\n ...a,\n isLink: a.type === AttributeType.tree,\n isMultiple: a.multiple_values,\n format: a.format ?? undefined,\n }));\n\n const allAttributes = [...(searchState?.attributes ?? []), ...noDuplicateNewAttribute];\n\n searchDispatch({type: SearchActionTypes.SET_ATTRIBUTES, attributes: allAttributes});\n\n const newFields: IField[] = selectedAttributes.reduce((acc, selectedAttribute) => {\n const attribute = allAttributes.find(\n currentAttr =>\n currentAttr.id === selectedAttribute.id && currentAttr.library === selectedAttribute.library,\n );\n\n if (!attribute) {\n return acc;\n }\n\n const key = getFieldsKeyFromAttribute(selectedAttribute);\n\n const label =\n typeof attribute.label === 'string' ? attribute.label : localizedTranslation(attribute.label, lang);\n\n const embeddedData = selectedAttribute.embeddedFieldData && {\n format: selectedAttribute.embeddedFieldData?.format ?? AttributeFormat.text,\n path: selectedAttribute.path,\n };\n\n const field: IField = {\n id: selectedAttribute.id,\n library: selectedAttribute.library,\n label,\n key,\n type: selectedAttribute.type,\n format: attribute.format,\n parentAttributeData: selectedAttribute?.parentAttributeData,\n treeData: selectedAttribute.treeData,\n embeddedData,\n recordLibrary:\n selectedAttribute?.parentAttributeData?.type === AttributeType.tree\n ? selectedAttribute.path.split('.')[1]\n : null,\n };\n\n return [...acc, field];\n }, []);\n\n searchDispatch({\n type: SearchActionTypes.SET_FIELDS,\n fields: newFields,\n });\n\n onClose();\n };\n\n const _handleCancel = () => {\n onClose();\n };\n\n return (\n <Modal\n open={visible}\n onCancel={_handleCancel}\n title={t('table-columns-selection.header')}\n width=\"70rem\"\n centered\n footer={[\n <Button key=\"Cancel\" onClick={_handleCancel}>\n {t('table-columns-selection.cancel')}\n </Button>,\n <Button type=\"primary\" key=\"Submit\" onClick={handleSubmit}>\n {t('table-columns-selection.submit')}\n </Button>,\n ]}\n >\n <AttributesSelectionList\n library={searchState.library.id}\n selectedAttributes={selectedAttributes}\n onSelectionChange={setSelectedAttributes}\n />\n </Modal>\n );\n}\n\nexport default ChooseTableColumns;\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
|
|
2
1
|
import { type IView } from '../../../../types/views';
|
|
3
2
|
interface IViewProps {
|
|
4
3
|
view: IView;
|
|
5
4
|
onEdit: (viewId: string) => void;
|
|
6
|
-
handleProps?: DraggableProvidedDragHandleProps;
|
|
7
5
|
}
|
|
8
|
-
declare function View({ view, onEdit
|
|
6
|
+
declare function View({ view, onEdit }: IViewProps): JSX.Element;
|
|
9
7
|
export default View;
|
|
@@ -4,6 +4,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { CopyOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';
|
|
6
6
|
import { localizedTranslation, objectToNameValueArray } from '@leav/utils';
|
|
7
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
8
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
7
9
|
import { Button, Tooltip, Typography } from 'antd';
|
|
8
10
|
import omit from 'lodash/omit';
|
|
9
11
|
import { useState } from 'react';
|
|
@@ -60,7 +62,7 @@ const Description = styled.div `
|
|
|
60
62
|
margin-left: 10px;
|
|
61
63
|
overflow: hidden;
|
|
62
64
|
`;
|
|
63
|
-
function View({ view, onEdit
|
|
65
|
+
function View({ view, onEdit }) {
|
|
64
66
|
const { t } = useSharedTranslation();
|
|
65
67
|
const { lang, defaultLang } = useLang();
|
|
66
68
|
const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
|
|
@@ -68,6 +70,8 @@ function View({ view, onEdit, handleProps }) {
|
|
|
68
70
|
const { saveView } = useExecuteSaveViewMutation();
|
|
69
71
|
const { deleteView } = useExecuteDeleteViewMutation();
|
|
70
72
|
const { updateViewsOrder } = useUpdateViewsOrderMutation(searchState.library.id);
|
|
73
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: view.id });
|
|
74
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
71
75
|
const _changeView = () => {
|
|
72
76
|
searchDispatch({ type: SearchActionTypes.CHANGE_VIEW, view });
|
|
73
77
|
};
|
|
@@ -134,7 +138,7 @@ function View({ view, onEdit, handleProps }) {
|
|
|
134
138
|
const selected = view.id === searchState.view.current?.id;
|
|
135
139
|
const [isActionsShown, setIsActionsShown] = useState(false);
|
|
136
140
|
const viewLabel = localizedTranslation(view.label, lang);
|
|
137
|
-
return (_jsxs(Wrapper, { selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...
|
|
141
|
+
return (_jsxs(Wrapper, { ref: setNodeRef, style: style, ...attributes, selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...listeners }), _jsxs(Infos, { children: [_jsxs(Title, { "data-testid": "view-title", children: [_jsx(IconViewType, { type: view.display.type }), _jsx(Typography.Text, { ellipsis: { tooltip: true }, style: { padding: '0 .5em', width: 'calc(100% - 1em)' }, children: viewLabel })] }), view.description && (_jsxs(Description, { children: [_jsx(Typography.Paragraph, { ellipsis: {
|
|
138
142
|
rows: ROWS_DESCRIPTION,
|
|
139
143
|
expandable: true,
|
|
140
144
|
onExpand: _onExpand,
|