aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/StyleProvider.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/StyleProvider.tsx')
-rw-r--r--src/client/views/StyleProvider.tsx41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx
index 069bfd049..8a5ad3139 100644
--- a/src/client/views/StyleProvider.tsx
+++ b/src/client/views/StyleProvider.tsx
@@ -1,7 +1,7 @@
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Tooltip } from '@material-ui/core';
-import { IconButton, Shadows, Size } from 'browndash-components';
+import { Dropdown, DropdownType, IconButton, IListItemProps, ListBox, ListItem, Popup, Shadows, Size, Type } from 'browndash-components';
import { action, runInAction } from 'mobx';
import { extname } from 'path';
import { BsArrowDown, BsArrowDownUp, BsArrowUp } from 'react-icons/bs';
@@ -24,6 +24,8 @@ import { KeyValueBox } from './nodes/KeyValueBox';
import { SliderBox } from './nodes/SliderBox';
import './StyleProvider.scss';
import React = require('react');
+import { PropertiesView } from './PropertiesView';
+import { FaFilter } from 'react-icons/fa';
export enum StyleProp {
TreeViewIcon = 'treeView_Icon',
@@ -283,13 +285,44 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<DocumentViewProps
const filter = () => {
const showFilterIcon =
StrListCast(doc?._childFilters).length || StrListCast(doc?._childFiltersByRanges).length
- ? '#18c718bd' //'hasFilter'
+ ? 'green' // #18c718bd' //'hasFilter'
: docProps?.childFilters?.().filter(f => Utils.IsRecursiveFilter(f) && f !== Utils.noDragsDocFilter).length || docProps?.childFiltersByRanges().length
? 'orange' //'inheritsFilter'
: undefined;
return !showFilterIcon ? null : (
- <div className="styleProvider-filter" onClick={action(() => (SettingsManager.propertiesWidth = 250))}>
- <FontAwesomeIcon icon={'filter'} size="lg" style={{ position: 'absolute', top: '1%', right: '1%', cursor: 'pointer', padding: 1, color: showFilterIcon, zIndex: 1 }} />
+ <div className="styleProvider-filter">
+ <Dropdown
+ type={Type.TERT}
+ dropdownType={DropdownType.CLICK}
+ fillWidth
+ iconProvider={(active:boolean) => <div className='styleProvider-filterShift'><FaFilter/></div>}
+ closeOnSelect={true}
+ setSelectedVal={
+ action((dv) => {
+ (dv as any).select(false);
+ (SettingsManager.propertiesWidth = 250);
+ setTimeout(action(() => {
+ if (PropertiesView.Instance) {
+ PropertiesView.Instance.CloseAll();
+ PropertiesView.Instance.openFilters = true;
+ }
+ }));
+ })
+ }
+ size={Size.XSMALL}
+ width={15}
+ height={15}
+ title={showFilterIcon === 'green' ?
+ "This view is filtered. Click to view/change filters":
+ "this view inherits filters from one of its parents"}
+ color={SettingsManager.userColor}
+ background={showFilterIcon}
+ items={[...(props?.docViewPath?.()??[]), ...(props?.DocumentView?[props?.DocumentView?.()]:[])].map(dv => ({
+ text: StrCast(dv.rootDoc.title),
+ val: dv as any,
+ style: {color:SettingsManager.userColor, background:SettingsManager.userBackgroundColor},
+ } as IListItemProps)) }
+ />
</div>
);
};