@omegagrid/bucket 0.10.86 → 0.10.88

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.
@@ -45,6 +45,8 @@ declare const _default: {
45
45
  FLOATING_WINDOW_MAX_WIDTH: number;
46
46
  TOP_HEIGHT: number;
47
47
  SIDEMENU_WIDTH: number;
48
+ SIDEMENU_WIDE_WIDTH: number;
49
+ SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD: number;
48
50
  SIDEBAR_WIDTH: number;
49
51
  SIZER_TRESHOLD: number;
50
52
  SIDEBAR_HEADER_HEIGHT: number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBASE"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAWE"}
package/dist/constants.js CHANGED
@@ -2,6 +2,8 @@ import { constants as coreConstants } from '@omegagrid/core';
2
2
  export default {
3
3
  TOP_HEIGHT: 41,
4
4
  SIDEMENU_WIDTH: 41,
5
+ SIDEMENU_WIDE_WIDTH: 160,
6
+ SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD: 80,
5
7
  SIDEBAR_WIDTH: 250,
6
8
  SIZER_TRESHOLD: 5,
7
9
  SIDEBAR_HEADER_HEIGHT: 30,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAe;IACd,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,CAAC;IACjB,qBAAqB,EAAE,EAAE;IACzB,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,GAAG;IACrB,GAAG,aAAa;CAChB,CAAC","sourcesContent":["import { constants as coreConstants } from '@omegagrid/core';\n\nexport default {\n\tTOP_HEIGHT: 41,\n\tSIDEMENU_WIDTH: 41,\n\tSIDEBAR_WIDTH: 250,\n\tSIZER_TRESHOLD: 5,\n\tSIDEBAR_HEADER_HEIGHT: 30,\n\tALERT_DEFAULT_HEIGHT: 30,\n\tALERT_MAX_HEIGHT: 300,\n\t...coreConstants\n};"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAe;IACd,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,GAAG;IACxB,mCAAmC,EAAE,EAAE;IACvC,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,CAAC;IACjB,qBAAqB,EAAE,EAAE;IACzB,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,GAAG;IACrB,GAAG,aAAa;CAChB,CAAC","sourcesContent":["import { constants as coreConstants } from '@omegagrid/core';\n\nexport default {\n\tTOP_HEIGHT: 41,\n\tSIDEMENU_WIDTH: 41,\n\tSIDEMENU_WIDE_WIDTH: 160,\n\tSIDEMENU_BUTTON_HORIZONTAL_TRESHOLD: 80,\n\tSIDEBAR_WIDTH: 250,\n\tSIZER_TRESHOLD: 5,\n\tSIDEBAR_HEADER_HEIGHT: 30,\n\tALERT_DEFAULT_HEIGHT: 30,\n\tALERT_MAX_HEIGHT: 300,\n\t...coreConstants\n};"]}
package/dist/options.d.ts CHANGED
@@ -11,6 +11,10 @@ export type BucketOptions = {
11
11
  pathResolver?: PathResolver;
12
12
  pathPosition?: 'top' | 'bottom';
13
13
  sidebarPosition?: 'left' | 'right';
14
+ /** allows the user to toggle the sidemenu between normal and wide mode (shows a toggle button at the bottom of the sidemenu), default `false` */
15
+ sidemenuExpandable?: boolean;
16
+ /** width of the sidemenu in wide mode (px), default `160` */
17
+ sidemenuWideWidth?: number;
14
18
  } & CommonOptions;
15
19
  export declare function initOptions(options?: Partial<BucketOptions>, origOptions?: BucketOptions): BucketOptions;
16
20
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC,GAAG,aAAa,CAAA;AAcjB,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,WAAW,GAAE,aAAoB,GAAG,aAAa,CAO9G"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,iJAAiJ;IACjJ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,aAAa,CAAA;AAgBjB,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,WAAW,GAAE,aAAoB,GAAG,aAAa,CAO9G"}
package/dist/options.js CHANGED
@@ -8,7 +8,9 @@ const DEFAULT_OPTIONS = {
8
8
  pathPosition: 'top',
9
9
  componentMode: 'tabbed',
10
10
  sidebarPosition: 'left',
11
- modalSidebarWidth: constants.SIDEBAR_WIDTH
11
+ modalSidebarWidth: constants.SIDEBAR_WIDTH,
12
+ sidemenuExpandable: false,
13
+ sidemenuWideWidth: constants.SIDEMENU_WIDE_WIDTH
12
14
  };
13
15
  export function initOptions(options, origOptions = null) {
14
16
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,SAAS,MAAM,aAAa,CAAC;AAgBpC,MAAM,eAAe,GAAkB;IACtC,MAAM,EAAE;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;KACb;IACD,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,QAAQ;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,SAAS,CAAC,aAAa;CAC1C,CAAA;AAGD,MAAM,UAAU,WAAW,CAAC,OAAgC,EAAE,cAA6B,IAAI;IAC9F,OAAO;QACN,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,GAAG,eAAe;QAClB,GAAG,WAAW;QACd,GAAG,OAAO;KACV,CAAC;AACH,CAAC","sourcesContent":["import { initCommonOptions, CommonOptions } from \"@omegagrid/core\";\nimport { PathResolver } from \"./types\";\nimport constants from \"./constants\";\n\nexport type AlertsOptions = {\n\tmaxItems: number,\n\ttimeout: number,\n}\n\nexport type BucketOptions = {\n\talerts?: AlertsOptions,\n\tcomponentMode?: 'tabbed' | 'single',\n\tmodalSidebarWidth?: number,\n\tpathResolver?: PathResolver,\n\tpathPosition?: 'top' | 'bottom',\n\tsidebarPosition?: 'left' | 'right',\n} & CommonOptions\n\nconst DEFAULT_OPTIONS: BucketOptions = {\n\talerts: {\n\t\tmaxItems: 5,\n\t\ttimeout: 5000,\n\t},\n\tpathPosition: 'top',\n\tcomponentMode: 'tabbed',\n\tsidebarPosition: 'left',\n\tmodalSidebarWidth: constants.SIDEBAR_WIDTH\n}\n\n\nexport function initOptions(options?: Partial<BucketOptions>, origOptions: BucketOptions = null): BucketOptions {\n\treturn {\n\t\t...initCommonOptions(options, origOptions),\n\t\t...DEFAULT_OPTIONS,\n\t\t...origOptions,\n\t\t...options,\n\t};\n}\n"]}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,SAAS,MAAM,aAAa,CAAC;AAoBpC,MAAM,eAAe,GAAkB;IACtC,MAAM,EAAE;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;KACb;IACD,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,QAAQ;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,SAAS,CAAC,aAAa;IAC1C,kBAAkB,EAAE,KAAK;IACzB,iBAAiB,EAAE,SAAS,CAAC,mBAAmB;CAChD,CAAA;AAGD,MAAM,UAAU,WAAW,CAAC,OAAgC,EAAE,cAA6B,IAAI;IAC9F,OAAO;QACN,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,GAAG,eAAe;QAClB,GAAG,WAAW;QACd,GAAG,OAAO;KACV,CAAC;AACH,CAAC","sourcesContent":["import { initCommonOptions, CommonOptions } from \"@omegagrid/core\";\nimport { PathResolver } from \"./types\";\nimport constants from \"./constants\";\n\nexport type AlertsOptions = {\n\tmaxItems: number,\n\ttimeout: number,\n}\n\nexport type BucketOptions = {\n\talerts?: AlertsOptions,\n\tcomponentMode?: 'tabbed' | 'single',\n\tmodalSidebarWidth?: number,\n\tpathResolver?: PathResolver,\n\tpathPosition?: 'top' | 'bottom',\n\tsidebarPosition?: 'left' | 'right',\n\t/** allows the user to toggle the sidemenu between normal and wide mode (shows a toggle button at the bottom of the sidemenu), default `false` */\n\tsidemenuExpandable?: boolean,\n\t/** width of the sidemenu in wide mode (px), default `160` */\n\tsidemenuWideWidth?: number,\n} & CommonOptions\n\nconst DEFAULT_OPTIONS: BucketOptions = {\n\talerts: {\n\t\tmaxItems: 5,\n\t\ttimeout: 5000,\n\t},\n\tpathPosition: 'top',\n\tcomponentMode: 'tabbed',\n\tsidebarPosition: 'left',\n\tmodalSidebarWidth: constants.SIDEBAR_WIDTH,\n\tsidemenuExpandable: false,\n\tsidemenuWideWidth: constants.SIDEMENU_WIDE_WIDTH\n}\n\n\nexport function initOptions(options?: Partial<BucketOptions>, origOptions: BucketOptions = null): BucketOptions {\n\treturn {\n\t\t...initCommonOptions(options, origOptions),\n\t\t...DEFAULT_OPTIONS,\n\t\t...origOptions,\n\t\t...options,\n\t};\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -4,12 +4,25 @@ import { ContainerTabItem, TabSplitContainerSource } from "@omegagrid/tabs";
4
4
  import { DialogOptions } from "@omegagrid/dialog";
5
5
  import { TemplateResult } from "lit";
6
6
  import { BucketOptions } from "./options";
7
+ /**
8
+ * layout of a bucket button
9
+ * - `vertical`: text below the icon (default)
10
+ * - `horizontal`: text next to the icon
11
+ * - `auto`: horizontal when the button is wider than `SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD`, vertical otherwise
12
+ */
13
+ export type BucketButtonOrientation = 'horizontal' | 'vertical' | 'auto';
14
+ /** width mode of the sidemenu */
15
+ export type SidemenuMode = 'normal' | 'wide';
7
16
  export type SidemenuItem = {
8
17
  id: string;
9
18
  icon: string;
10
19
  statusIcon?: string;
11
20
  statusColor?: string;
12
21
  text?: string;
22
+ /** text used in the horizontal layout (falls back to `text`) */
23
+ longText?: string;
24
+ /** layout of the button, default `vertical` */
25
+ orientation?: BucketButtonOrientation;
13
26
  tooltip?: string;
14
27
  color?: string;
15
28
  };
@@ -66,6 +79,9 @@ export type BucketState = {
66
79
  width?: number;
67
80
  collapsed?: boolean;
68
81
  };
82
+ sidemenu?: {
83
+ mode?: SidemenuMode;
84
+ };
69
85
  layout?: TabSplitContainerSource;
70
86
  dialogs?: OpenDialogOptions[];
71
87
  components?: Record<ComponentId, ComponentState>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ComponentId, ComponentState, HorizontalPosition, IconSpec } from \"@omegagrid/core\";\nimport { Dialog } from \"@omegagrid/dialog\";\nimport { ContainerTabItem, TabSplitContainerSource } from \"@omegagrid/tabs\";\nimport { DialogOptions } from \"@omegagrid/dialog\";\nimport { TemplateResult } from \"lit\";\nimport { BucketOptions } from \"./options\";\n\nexport type SidemenuItem = {\n\tid: string,\n\ticon: string,\n\tstatusIcon?: string,\n\tstatusColor?: string,\n\ttext?: string,\n\ttooltip?: string,\n\tcolor?: string\n}\n\nexport type SidemenuSettings = {\n\titems: SidemenuItem[];\n\tactiveIndex?: number;\n\thidden?: boolean;\n}\n\nexport type SidebarSettings = {\n\twidth?: number,\n\tcollapsed?: boolean\n}\n\nexport type ModalSidebarOptions = {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\twidth?: number,\n\tcaption?: string,\n\tclosable?: boolean,\n\tposition?: HorizontalPosition\n}\n\nexport type ComponentOptions = Record<string, unknown>;\n\nexport type PathSegment = {\n\tid: string,\n\tlabel?: string,\n\ticon?: string,\n\tclickable?: boolean,\n}\n\nexport type PathSegments = (PathSegment|string)[];\n\nexport type PathResolver = (id: ComponentId) => PathSegments|Promise<PathSegments>;\n\nexport type ComponentUpdateOptions = {\n\tid?: ComponentId,\n\ttitle?: string\n}\n\nexport type TopItem = {\n\tid: ComponentId\n}\n\nexport type TopSettings = {\n\trightItems: TopItem[]\n}\n\nexport type BucketSource = {\n\ttop?: TopSettings,\n\tsidemenu?: SidemenuSettings,\n\tsidebar?: SidebarSettings,\n\teditorLayout?: TabSplitContainerSource,\n\tcomponentId?: ComponentId,\n\toptions?: BucketOptions,\n}\n\nexport type BucketDialog = Dialog & {componentId: ComponentId};\n\nexport type BucketState = {\n\tsidebar?: {\n\t\tselectedItem?: ComponentId\n\t\twidth?: number,\n\t\tcollapsed?: boolean\n\t},\n\tlayout?: TabSplitContainerSource,\n\tdialogs?: OpenDialogOptions[],\n\tcomponents?: Record<ComponentId, ComponentState>\n}\n\nexport type OpenDialogOptions = DialogOptions & {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\tmaximizable?: boolean\n}\n\nexport type OpenTabOptions = ContainerTabItem & {\n\tcomponent?: HTMLElement,\n\t// path?: PathSegments,\n}\n\nexport type BucketAlertType = 'danger'|'warning'|'info'|'success';\n\nexport type BucketAlertOptions = {\n\ttitle?: string|TemplateResult<1>,\n\ticon?: string|IconSpec,\n\ttype?: BucketAlertType,\n\tcontent?: string|TemplateResult<1>,\n\ttimeout?: number\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ComponentId, ComponentState, HorizontalPosition, IconSpec } from \"@omegagrid/core\";\nimport { Dialog } from \"@omegagrid/dialog\";\nimport { ContainerTabItem, TabSplitContainerSource } from \"@omegagrid/tabs\";\nimport { DialogOptions } from \"@omegagrid/dialog\";\nimport { TemplateResult } from \"lit\";\nimport { BucketOptions } from \"./options\";\n\n/**\n * layout of a bucket button\n * - `vertical`: text below the icon (default)\n * - `horizontal`: text next to the icon\n * - `auto`: horizontal when the button is wider than `SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD`, vertical otherwise\n */\nexport type BucketButtonOrientation = 'horizontal' | 'vertical' | 'auto';\n\n/** width mode of the sidemenu */\nexport type SidemenuMode = 'normal' | 'wide';\n\nexport type SidemenuItem = {\n\tid: string,\n\ticon: string,\n\tstatusIcon?: string,\n\tstatusColor?: string,\n\ttext?: string,\n\t/** text used in the horizontal layout (falls back to `text`) */\n\tlongText?: string,\n\t/** layout of the button, default `vertical` */\n\torientation?: BucketButtonOrientation,\n\ttooltip?: string,\n\tcolor?: string\n}\n\nexport type SidemenuSettings = {\n\titems: SidemenuItem[];\n\tactiveIndex?: number;\n\thidden?: boolean;\n}\n\nexport type SidebarSettings = {\n\twidth?: number,\n\tcollapsed?: boolean\n}\n\nexport type ModalSidebarOptions = {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\twidth?: number,\n\tcaption?: string,\n\tclosable?: boolean,\n\tposition?: HorizontalPosition\n}\n\nexport type ComponentOptions = Record<string, unknown>;\n\nexport type PathSegment = {\n\tid: string,\n\tlabel?: string,\n\ticon?: string,\n\tclickable?: boolean,\n}\n\nexport type PathSegments = (PathSegment|string)[];\n\nexport type PathResolver = (id: ComponentId) => PathSegments|Promise<PathSegments>;\n\nexport type ComponentUpdateOptions = {\n\tid?: ComponentId,\n\ttitle?: string\n}\n\nexport type TopItem = {\n\tid: ComponentId\n}\n\nexport type TopSettings = {\n\trightItems: TopItem[]\n}\n\nexport type BucketSource = {\n\ttop?: TopSettings,\n\tsidemenu?: SidemenuSettings,\n\tsidebar?: SidebarSettings,\n\teditorLayout?: TabSplitContainerSource,\n\tcomponentId?: ComponentId,\n\toptions?: BucketOptions,\n}\n\nexport type BucketDialog = Dialog & {componentId: ComponentId};\n\nexport type BucketState = {\n\tsidebar?: {\n\t\tselectedItem?: ComponentId\n\t\twidth?: number,\n\t\tcollapsed?: boolean\n\t},\n\tsidemenu?: {\n\t\tmode?: SidemenuMode\n\t},\n\tlayout?: TabSplitContainerSource,\n\tdialogs?: OpenDialogOptions[],\n\tcomponents?: Record<ComponentId, ComponentState>\n}\n\nexport type OpenDialogOptions = DialogOptions & {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\tmaximizable?: boolean\n}\n\nexport type OpenTabOptions = ContainerTabItem & {\n\tcomponent?: HTMLElement,\n\t// path?: PathSegments,\n}\n\nexport type BucketAlertType = 'danger'|'warning'|'info'|'success';\n\nexport type BucketAlertOptions = {\n\ttitle?: string|TemplateResult<1>,\n\ticon?: string|IconSpec,\n\ttype?: BucketAlertType,\n\tcontent?: string|TemplateResult<1>,\n\ttimeout?: number\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Layout, ListSelectEvent, ComponentFactory, SplitContainer, log, ComponentId, Overlay, OmegaComponent, ShortcutManager } from '@omegagrid/core';
2
2
  import { TabCloseEvent, TabEvent, TabItem, TabSplitContainer } from '@omegagrid/tabs';
3
3
  import { CommandManager, CommandResult, OpenCommandsOptions } from '@omegagrid/commands';
4
- import { BucketAlertOptions, BucketSource, BucketState, ModalSidebarOptions, OpenDialogOptions, OpenTabOptions } from '../types';
4
+ import { BucketAlertOptions, BucketSource, BucketState, ModalSidebarOptions, OpenDialogOptions, OpenTabOptions, SidemenuMode } from '../types';
5
5
  import { Sidemenu } from './sidemenu';
6
6
  import { BucketTop } from './top';
7
7
  import { ComponentHost } from './componentHost';
@@ -30,6 +30,8 @@ export declare class Bucket extends OmegaComponent<BucketState> implements Layou
30
30
  options: BucketOptions;
31
31
  logger: log.Logger;
32
32
  compact: boolean;
33
+ /** current width mode of the sidemenu, see `toggleSidemenu()` */
34
+ sidemenuMode: SidemenuMode;
33
35
  sidebar1ComponentId: string;
34
36
  readonly components: BucketComponents;
35
37
  readonly sidebars: BucketSidebars;
@@ -71,6 +73,11 @@ export declare class Bucket extends OmegaComponent<BucketState> implements Layou
71
73
  toggleSidebar(open?: boolean): Promise<void>;
72
74
  hideSidebar(): Promise<void>;
73
75
  showSidebar(): Promise<void>;
76
+ /**
77
+ * switches the sidemenu between normal and wide mode
78
+ * @param wide target mode, toggles the current mode when omitted
79
+ */
80
+ toggleSidemenu(wide?: boolean): Promise<void>;
74
81
  showAlert(options: BucketAlertOptions): Promise<void>;
75
82
  createEditorComponent: (id: ComponentId) => ComponentHost;
76
83
  _createSplitContainerComponent: ComponentFactory;
@@ -84,6 +91,8 @@ export declare class Bucket extends OmegaComponent<BucketState> implements Layou
84
91
  updateSidebarComponent(): void;
85
92
  updateMainComponent(): void;
86
93
  openSidebarComponent(id: ComponentId): Promise<void>;
94
+ _onSidemenuToggle: () => Promise<void>;
95
+ get sidemenuWidth(): number;
87
96
  renderSideMenu: () => import("lit-html").TemplateResult<1>;
88
97
  render: () => import("lit-html").TemplateResult<1>;
89
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.ts"],"names":[],"mappings":"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"}
package/dist/ui/bucket.js CHANGED
@@ -11,6 +11,7 @@ import { CommandManager } from '@omegagrid/commands';
11
11
  import { msg } from '@omegagrid/localize';
12
12
  import { html, LitElement } from 'lit';
13
13
  import { customElement, property, query } from 'lit/decorators.js';
14
+ import { styleMap } from 'lit/directives/style-map.js';
14
15
  import constants from '../constants';
15
16
  import style from './bucket.style';
16
17
  import { BucketAlerts } from './bucket.alerts';
@@ -90,6 +91,8 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
90
91
  this.sourceData = DEFAULT_SOURCE;
91
92
  this.logger = new log.Logger('Ωbucket');
92
93
  this.compact = false;
94
+ /** current width mode of the sidemenu, see `toggleSidemenu()` */
95
+ this.sidemenuMode = 'normal';
93
96
  this.updateContainerVisibility = debounce(() => {
94
97
  let hasTabs = false;
95
98
  this.editorContainer.walk((splitContainer, tabContainer) => {
@@ -164,8 +167,14 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
164
167
  this.dispatchStateEvent();
165
168
  }
166
169
  };
170
+ this._onSidemenuToggle = () => this.toggleSidemenu();
167
171
  this.renderSideMenu = () => this.sourceData.sidemenu.hidden ? html `` : html `
168
172
  <og-bucket-sidemenu
173
+ style=${styleMap({ minWidth: dom.px(this.sidemenuWidth) })}
174
+ .mode=${this.sidemenuMode}
175
+ ?expandable=${this.options.sidemenuExpandable && !this.compact}
176
+ .position=${this.options.sidebarPosition}
177
+ @sidemenu.toggle=${this._onSidemenuToggle}
169
178
  @select=${this._onSidemenuSelect}
170
179
  .settings=${this.sourceData.sidemenu}>
171
180
  </og-bucket-sidemenu>
@@ -227,6 +236,7 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
227
236
  this.sidebar1ComponentId = sidebarComponentId;
228
237
  }
229
238
  await this.container?.updateComplete;
239
+ await this.sidemenu?.updateComplete;
230
240
  this.layout();
231
241
  }
232
242
  _openComponent(item) {
@@ -295,6 +305,22 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
295
305
  }
296
306
  this.layout();
297
307
  }
308
+ /**
309
+ * switches the sidemenu between normal and wide mode
310
+ * @param wide target mode, toggles the current mode when omitted
311
+ */
312
+ async toggleSidemenu(wide) {
313
+ wide ?? (wide = this.sidemenuMode != 'wide');
314
+ const mode = wide ? 'wide' : 'normal';
315
+ if (mode == this.sidemenuMode)
316
+ return;
317
+ this.sidemenuMode = mode;
318
+ await this.updateComplete; // the new width is applied by render, updated() runs layout()
319
+ if (this.sidebars.modalSidebars.length)
320
+ this.sidebars.updateModalSidebarPositions();
321
+ this.dispatchEvent(new BucketEvent('sidemenu.change'));
322
+ this.dispatchStateEvent();
323
+ }
298
324
  showAlert(options) {
299
325
  return this.alerts.addAlert(options);
300
326
  }
@@ -306,6 +332,9 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
306
332
  width: item?.size,
307
333
  collapsed: !!item?.collapsed
308
334
  },
335
+ sidemenu: {
336
+ mode: this.sidemenuMode
337
+ },
309
338
  layout: this.editorContainer?.model.getSourceData(),
310
339
  dialogs: [...Array.from(this.dialogs.items.entries()).map(([id, dialog]) => Object.assign({ id: id }, dialog.getOptions()))],
311
340
  components: [...this.components.components].reduce((acc, [id, component]) => {
@@ -326,6 +355,8 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
326
355
  this.sidebar1ComponentId = state.sidebar.selectedItem;
327
356
  }
328
357
  this.sourceData.editorLayout = state.layout;
358
+ // wide mode is restored only when the user can switch it back
359
+ this.sidemenuMode = this.options.sidemenuExpandable ? (state.sidemenu?.mode ?? 'normal') : 'normal';
329
360
  this._editorContainer = null;
330
361
  this.requestUpdate();
331
362
  await this.updateComplete;
@@ -363,6 +394,9 @@ let Bucket = Bucket_1 = class Bucket extends OmegaComponent {
363
394
  this.sidemenu.selectItem(id.toString());
364
395
  await this.sidebarHost.updateComplete;
365
396
  }
397
+ get sidemenuWidth() {
398
+ return this.sidemenuMode == 'wide' ? this.options.sidemenuWideWidth : constants.SIDEMENU_WIDTH;
399
+ }
366
400
  };
367
401
  Bucket.styles = [style];
368
402
  Bucket.uniqueId = 0;
@@ -397,6 +431,9 @@ __decorate([
397
431
  __decorate([
398
432
  property({ type: Boolean })
399
433
  ], Bucket.prototype, "compact", void 0);
434
+ __decorate([
435
+ property({ type: String })
436
+ ], Bucket.prototype, "sidemenuMode", void 0);
400
437
  Bucket = Bucket_1 = __decorate([
401
438
  customElement('og-bucket')
402
439
  ], Bucket);
@@ -1 +1 @@
1
- {"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../src/ui/bucket.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tdom, Layout, ListSelectEvent, ComponentFactory, SplitContainer, log,\n\tComponentId, Overlay, OmegaComponent, ComponentState, ShortcutManager,\n SplitContainerItem\n} from '@omegagrid/core';\nimport { TabCloseEvent, TabEvent, TabItem, TabSplitContainer, TabSplitContainerModel } from '@omegagrid/tabs';\nimport { CommandManager, CommandResult, OpenCommandsOptions } from '@omegagrid/commands';\nimport { msg } from '@omegagrid/localize';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport constants from '../constants';\nimport { BucketAlertOptions, BucketSource, BucketState, ModalSidebarOptions, OpenDialogOptions, OpenTabOptions } from '../types';\nimport { Sidemenu } from './sidemenu';\nimport style from './bucket.style';\nimport { BucketTop } from './top';\nimport { ComponentHost } from './componentHost';\nimport { BucketAlerts } from './bucket.alerts';\nimport { BucketOptions, initOptions } from '../options';\nimport { Sidebar } from './sidebar';\nimport { BucketComponents } from './bucket.components';\nimport { BucketSidebars } from './bucket.sidebars';\nimport { BucketDialogs } from './bucket.dialogs';\nimport { debounce } from 'ts-debounce';\n\nconst DEFAULT_SOURCE: BucketSource = {\n\ttop: {rightItems: []},\n\tsidemenu: {items: [], activeIndex: null, hidden: false},\n\tsidebar: {width: constants.SIDEBAR_WIDTH, collapsed: false},\n\teditorLayout: {items: []}\n};\n\nexport class BucketEvent extends Event {\n\ttab: TabItem;\n\tcomponentId: ComponentId;\n\n\tconstructor(type: string, args?: Partial<BucketEvent>) {\n\t\tsuper(`bucket.${type}`, {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\t}\n\n}\n\n@customElement('og-bucket')\nexport class Bucket extends OmegaComponent<BucketState> implements Layout {\n\n\tstatic styles = [style];\n\tstatic uniqueId = 0;\n\tstatic getUniqueId = () => ++Bucket.uniqueId;\n\n\t@query('og-overlay')\n\toverlay: Overlay;\n\n\t@query('og-bucket-top')\n\ttop: BucketTop;\n\n\t@query('og-bucket-sidemenu')\n\tsidemenu: Sidemenu;\n\n\t@query('.body')\n\tbody: HTMLDivElement;\n\n\t@query('.main')\n\tmain: HTMLDivElement;\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@property({type: Object})\n\tsourceData: BucketSource = DEFAULT_SOURCE;\n\n\t@property({type: Object})\n\toptions: BucketOptions;\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωbucket');\n\n\t@property({type: Boolean})\n\tcompact = false;\n\n\tsidebar1ComponentId: string;\n\n\treadonly components: BucketComponents;\n\treadonly sidebars: BucketSidebars;\n\treadonly alerts: BucketAlerts;\n\treadonly dialogs: BucketDialogs;\n\treadonly commands: CommandManager;\n\treadonly shortcuts: ShortcutManager;\n\n\tprivate _activeComponentId: ComponentId;\n\tget activeComponentId() { return this._activeComponentId }\n\n\tget sidebarIndex() { return this.options.sidebarPosition == 'left' ? 0 : 1 }\n\tget mainIndex() { return this.options.sidebarPosition == 'left' ? 1 : 0 }\n\n\tprivate _container: SplitContainer;\n\tget container(): SplitContainer {\n\t\tif (this._container) return this._container;\n\t\tthis._container = dom.createElement<SplitContainer>('og-splitcontainer');\n\t\tthis._container.orientation = 'horizontal';\n\n\t\tconst sidebarItem: SplitContainerItem = {\n\t\t\tsize: this.sourceData.sidebar?.width || constants.SIDEBAR_WIDTH,\n\t\t\tcollapsed: this.sourceData.sidebar?.collapsed || false\n\t\t};\n\n\t\tthis._container.items = [\n\t\t\tthis.sidebarIndex == 0 ? sidebarItem : {size: null},\n\t\t\tthis.sidebarIndex == 1 ? sidebarItem : {size: null},\n\t\t];\n\n\t\tthis._container.createComponent = this._createSplitContainerComponent;\n\t\tthis._container.addEventListener('splitContainer.resize', this._onSplitContainerResize);\n\t\tthis._container.addEventListener('tab.beforeRemove', this._onTabBeforeRemove);\n\t\tthis._container.addEventListener('tab.remove', this._onTabRemove);\n\t\tthis._container.addEventListener('tab.select', this._onTabSelect);\n\t\treturn this._container;\n\t}\n\n\tprivate _editorContainer: TabSplitContainer;\n\tget editorContainer(): TabSplitContainer {\n\t\tif (this._editorContainer) return this._editorContainer;\n\t\tthis._editorContainer = dom.createElement<TabSplitContainer>('og-tabsplitcontainer');\n\t\tthis._editorContainer.style.height = '100%';\n\t\tthis._editorContainer.closable = true;\n\t\tthis._editorContainer.singleActive = true;\n\t\tthis._editorContainer.createComponent = this.createEditorComponent;\n\t\tthis._editorContainer.model = new TabSplitContainerModel(this.sourceData.editorLayout);\n\t\tthis._editorContainer.scrollableTabs = true;\n\t\treturn this._editorContainer;\n\t}\n\n\tprivate _singleContainer: HTMLDivElement;\n\tget singleContainer() {\n\t\tif (this._singleContainer) return this._singleContainer;\n\t\tthis._singleContainer = dom.createElement('div');\n\t\tthis._singleContainer.style.height = '100%';\n\t\treturn this._singleContainer;\n\t}\n\n\tget mainContentContainer(): HTMLDivElement | TabSplitContainer {\n\t\treturn this.options?.componentMode == 'single' ? this.singleContainer : this.editorContainer;\n\t}\n\n\tprivate _sidebarHost: Sidebar;\n\tget sidebarHost() {\n\t\tif (this._sidebarHost) return this._sidebarHost;\n\t\tthis._sidebarHost = dom.createElement<Sidebar>('og-bucket-sidebar');\n\t\tthis._sidebarHost.bucket = this;\n\t\tthis._sidebarHost.componentId = this.sidebar1ComponentId;\n\t\treturn this._sidebarHost;\n\t}\n\n\tupdateContainerVisibility = debounce(() => {\n\t\tlet hasTabs = false;\n\t\tthis.editorContainer.walk((splitContainer, tabContainer) => {\n\t\t\tif (tabContainer.tabs?.items?.length) {\n\t\t\t\thasTabs = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (hasTabs) dom.showElement(this.editorContainer);\n\t\telse dom.hideElement(this.editorContainer);\n\t}, 100);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.components = new BucketComponents(this);\n\t\tthis.sidebars = new BucketSidebars(this);\n\t\tthis.alerts = new BucketAlerts(this);\n\t\tthis.dialogs = new BucketDialogs(this);\n\t\tthis.commands = new CommandManager(this);\n\t\tthis.shortcuts = new ShortcutManager(this);\n\n\t\tthis.options = initOptions();\n\t\tthis.logger.info('init');\n\n\t\tthis.addEventListener('state', (e: Event) => {\n\t\t\tif (e.target == this) return;\n\t\t\te.stopPropagation();\n\t\t\tthis.dispatchStateEvent();\n\t\t});\n\t}\n\n\tshowOverlay = () => this.overlay.show(this.body);\n\thideOverlay = () => this.overlay.hide();\n\n\t_onWindowBeforeUnload = (e: BeforeUnloadEvent) => {\n\t\tif (!this.components.hasUnsavedComponents) return;\n\t\te.preventDefault();\n\t\te.returnValue = '';\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 0;\n\t\tthis.logger.info('connected');\n\t\twindow.addEventListener('beforeunload', this._onWindowBeforeUnload);\n\t}\n\n\tdisconnectedCallback() {\n\t\twindow.removeEventListener('beforeunload', this._onWindowBeforeUnload);\n\t}\n\n\tlayout() {\n\t\tthis.container?.layout();\n\t\tthis.top?.layout();\n\t}\n\n\tsetSourceData(sourceData: BucketSource) {\n\t\tthis.sourceData = sourceData;\n\t\tif (sourceData.options) {\n\t\t\tthis.options = initOptions(sourceData.options, this.options);\n\t\t}\n\t}\n\n\tasync updated() {\n\t\tconst mainContainer = this.compact ? this.mainContentContainer : this.container;\n\n\t\tif (mainContainer.parentElement != this.main) {\n\t\t\tdom.empty(this.main);\n\t\t\tthis.main.appendChild(mainContainer);\n\t\t\tif (mainContainer instanceof LitElement) (mainContainer as LitElement).requestUpdate();\n\t\t}\n\n\t\tconst sidebarComponentId = (this.sourceData.sidemenu.items ?? [])[this.sourceData.sidemenu.activeIndex]?.id;\n\t\tif (sidebarComponentId) {\n\t\t\tthis.sidebar1ComponentId = sidebarComponentId;\n\t\t}\n\n\t\tawait this.container?.updateComplete;\n\n\t\tthis.layout();\n\t}\n\n\tprivate _openComponent(item: OpenTabOptions) {\n\t\tconst singleMode = this.options?.componentMode == 'single';\n\t\tif (singleMode) {\n\t\t\tdom.empty(this.singleContainer);\n\t\t\tthis.singleContainer.appendChild(this.createEditorComponent(item.id));\n\t\t} else {\n\t\t\tthis.editorContainer.open(item);\n\t\t}\n\t}\n\n\tasync open(item: OpenTabOptions) {\n\t\tif (this.compact) this.hideSidebar();\n\n\t\tdom.showElement(this.mainContentContainer);\n\n\t\tconst component = item.component;\n\t\tif (component) {\n\t\t\titem.id = this.components.register(item.id, item.component);\n\t\t\tdelete item.component;\n\t\t\tthis._openComponent(item);\n\t\t\treturn component;\n\t\t}\n\n\t\tconst promise = this.components.waitFor(item.id);\n\t\tthis._openComponent(item);\n\t\tthis.dispatchStateEvent();\n\t\treturn promise;\n\t}\n\n\tasync openDialog(options: OpenDialogOptions) {\n\t\treturn await this.dialogs.open(options);\n\t}\n\n\topenMenu(options: OpenCommandsOptions): Promise<CommandResult|null> {\n\t\treturn this.commands.open(options);\n\t}\n\n\topenModalSidebar(options: ModalSidebarOptions) {\n\t\treturn this.sidebars.openModalSidebar(options);\n\t}\n\n\tasync toggleSidebar(open?: boolean) {\n\t\topen ??= this.compact ? this.sidebarHost.parentElement != this.main : this.container.items[this.sidebarIndex].collapsed;\n\t\tif (open) this.showSidebar();\n\t\telse this.hideSidebar();\n\t}\n\n\tasync hideSidebar() {\n\t\tif (this.compact) {\n\t\t\tif (this.sidebarHost.parentElement == this.main) {\n\t\t\t\tdom.empty(this.main);\n\t\t\t\tthis.main.appendChild(this.editorContainer);\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.container.collapse(this.sidebarIndex, true);\n\t\t}\n\n\t\tthis.layout();\n\t}\n\n\tasync showSidebar() {\n\t\tif (this.compact) {\n\t\t\tif (this.sidebarHost.parentElement != this.main) {\n\t\t\t\tdom.empty(this.main);\n\t\t\t\tthis.main.appendChild(this.sidebarHost);\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.container.collapse(this.sidebarIndex, false);\n\t\t}\n\n\t\tthis.layout();\n\t}\n\n\tshowAlert(options: BucketAlertOptions) {\n\t\treturn this.alerts.addAlert(options);\n\t}\n\n\tcreateEditorComponent = (id: ComponentId) => {\n\t\treturn dom.createElement<ComponentHost>('og-bucket-component-host', {\n\t\t\tcomponentId: id,\n\t\t\tbucket: this,\n\t\t\tpathPosition: this.options.pathPosition\n\t\t});\n\t}\n\n\t_createSplitContainerComponent: ComponentFactory = (index: ComponentId) => {\n\t\tlet component: HTMLElement;\n\t\tif (index == this.sidebarIndex) {\n\t\t\t// primary sidebar\n\t\t\tthis.logger.info('create primary sidebar');\n\t\t\treturn this.sidebarHost;\n\t\t} else if (index == this.mainIndex) {\n\t\t\t// editor split container\n\t\t\tthis.logger.info('create editor container');\n\t\t\treturn this.mainContentContainer;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tcomponent = dom.createElement<HTMLElement>('div');\n\t\t\tcomponent.innerHTML = 'empty';\n\t\t}\n\n\t\treturn component;\n\t}\n\n\tgetState(): BucketState {\n\t\tconst item = this.container?.items[0];\n\t\treturn {\n\t\t\tsidebar: {\n\t\t\t\tselectedItem: this.sidebar1ComponentId,\n\t\t\t\twidth: item?.size,\n\t\t\t\tcollapsed: !!item?.collapsed\n\t\t\t},\n\t\t\tlayout: this.editorContainer?.model.getSourceData(),\n\t\t\tdialogs: [...Array.from(this.dialogs.items.entries()).map(\n\t\t\t\t([id, dialog]) => Object.assign({id: id}, dialog.getOptions())\n\t\t\t)],\n\t\t\tcomponents: [...this.components.components].reduce((acc, [id, component]) => {\n\t\t\t\tif ((component as OmegaComponent).getState) {\n\t\t\t\t\tconst componentState = (component as OmegaComponent).getState();\n\t\t\t\t\tif (componentState) acc[id] = componentState;\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {} as Record<ComponentId, ComponentState>)\n\t\t};\n\t}\n\n\tasync setState(state: BucketState) {\n\t\tthis.state = state;\n\t\tconst selectedIndex = this.sourceData.sidemenu.items.findIndex(item => item.id == state.sidebar.selectedItem);\n\t\tif (selectedIndex >= 0) {\n\t\t\tthis.sourceData.sidemenu.activeIndex = selectedIndex;\n\t\t\tthis.sidebar1ComponentId = state.sidebar.selectedItem as string;\n\t\t}\n\t\tthis.sourceData.editorLayout = state.layout;\n\t\tthis._editorContainer = null;\n\t\tthis.requestUpdate();\n\t\tawait this.updateComplete;\n\t\tthis.sidemenu?.requestUpdate();\n\t\tthis.updateSidebarComponent();\n\t\tthis.updateMainComponent();\n\t\tstate.dialogs?.forEach(opt => this.openDialog(opt));\n\n\t\tfor (const k in state.components) {\n\t\t\tthis.components.setState(k, state.components[k]);\n\t\t}\n\t}\n\n\t_onSplitContainerResize = () => {\n\t\tthis.top?.layout();\n\t\tthis.dispatchStateEvent();\n\t}\n\n\t_onTabRemove = (e: TabEvent) => {\n\t\tthis.components.unregister(e.tab.id);\n\t\tthis.dispatchEvent(new BucketEvent('close', {tab: e.tab, componentId: e.tab.id}));\n\t\tthis.dispatchStateEvent();\n\t}\n\n\t_onTabBeforeRemove = (e: TabCloseEvent) => {\n\t\tconst tabId = e.tab.id;\n\t\tif (this.components.unsavedComponents.has(tabId)) {\n\t\t\te.preventDefault();\n\t\t\tthis.openMenu({text: `[${e.tab.title || e.tab.id}]: ${msg('Discard changes and close tab?')}`, content: 'yes_no'}).then(answer => {\n\t\t\t\tif (answer?.command?.id == 'Y') {\n\t\t\t\t\tthis.components.unsavedComponents.delete(tabId);\n\t\t\t\t\te.resolveClose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_onTabSelect = (e: TabEvent) => {\n\t\tif (e.tabs.topLevelComponent == this.editorContainer) {\n\t\t\tthis._activeComponentId = e.tab?.id;\n\t\t\tthis.dispatchEvent(new BucketEvent('activate', {tab: e.tab, componentId: e.tab?.id}));\n\t\t\tthis.dispatchStateEvent();\n\t\t}\n\t}\n\n\t_onSidemenuSelect(e: ListSelectEvent) {\n\t\tconst id = (this.sourceData.sidemenu.items ?? [])[e.index]?.id;\n\t\tif (id == this.sidebar1ComponentId) {\n\t\t\tthis.toggleSidebar();\n\t\t} else {\n\t\t\tthis.toggleSidebar(true);\n\t\t\tthis.sidebar1ComponentId = id;\n\t\t\tthis.updateSidebarComponent();\n\t\t\tthis.dispatchEvent(new BucketEvent('sidebar.change'));\n\t\t}\n\t\tthis.dispatchStateEvent();\n\t}\n\n\tupdateSidebarComponent() {\n\t\tthis.sidebarHost.componentId = this.sidebar1ComponentId;\n\t}\n\n\tupdateMainComponent() {\n\t\tthis.container?.updateComponent(1);\n\t}\n\n\tasync openSidebarComponent(id: ComponentId) {\n\t\tthis.sidebar1ComponentId = id.toString();\n\t\tthis.showSidebar();\n\t\tthis.updateSidebarComponent();\n\t\tthis.sidemenu.selectItem(id.toString());\n\t\tawait this.sidebarHost.updateComplete;\n\t}\n\n\trenderSideMenu = () => this.sourceData.sidemenu.hidden ? html`` : html`\n\t\t<og-bucket-sidemenu\n\t\t\t@select=${this._onSidemenuSelect}\n\t\t\t.settings=${this.sourceData.sidemenu}>\n\t\t</og-bucket-sidemenu>\n\t`;\n\n\trender = () => html`\n\t\t<og-bucket-top></og-bucket-top>\n\n\t\t<div class=\"body\">\n\t\t\t<og-overlay></og-overlay>\n\t\t\t${this.options.sidebarPosition == 'left' ? this.renderSideMenu() : null}\n\t\t\t<div class=\"main\"></div>\n\t\t\t${this.options.sidebarPosition == 'right' ? this.renderSideMenu() : null}\n\t\t</div>\n\t`;\n\n}\n"]}
1
+ {"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../src/ui/bucket.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tdom, Layout, ListSelectEvent, ComponentFactory, SplitContainer, log,\n\tComponentId, Overlay, OmegaComponent, ComponentState, ShortcutManager,\n SplitContainerItem\n} from '@omegagrid/core';\nimport { TabCloseEvent, TabEvent, TabItem, TabSplitContainer, TabSplitContainerModel } from '@omegagrid/tabs';\nimport { CommandManager, CommandResult, OpenCommandsOptions } from '@omegagrid/commands';\nimport { msg } from '@omegagrid/localize';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport constants from '../constants';\nimport { BucketAlertOptions, BucketSource, BucketState, ModalSidebarOptions, OpenDialogOptions, OpenTabOptions, SidemenuMode } from '../types';\nimport { Sidemenu } from './sidemenu';\nimport style from './bucket.style';\nimport { BucketTop } from './top';\nimport { ComponentHost } from './componentHost';\nimport { BucketAlerts } from './bucket.alerts';\nimport { BucketOptions, initOptions } from '../options';\nimport { Sidebar } from './sidebar';\nimport { BucketComponents } from './bucket.components';\nimport { BucketSidebars } from './bucket.sidebars';\nimport { BucketDialogs } from './bucket.dialogs';\nimport { debounce } from 'ts-debounce';\n\nconst DEFAULT_SOURCE: BucketSource = {\n\ttop: {rightItems: []},\n\tsidemenu: {items: [], activeIndex: null, hidden: false},\n\tsidebar: {width: constants.SIDEBAR_WIDTH, collapsed: false},\n\teditorLayout: {items: []}\n};\n\nexport class BucketEvent extends Event {\n\ttab: TabItem;\n\tcomponentId: ComponentId;\n\n\tconstructor(type: string, args?: Partial<BucketEvent>) {\n\t\tsuper(`bucket.${type}`, {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\t}\n\n}\n\n@customElement('og-bucket')\nexport class Bucket extends OmegaComponent<BucketState> implements Layout {\n\n\tstatic styles = [style];\n\tstatic uniqueId = 0;\n\tstatic getUniqueId = () => ++Bucket.uniqueId;\n\n\t@query('og-overlay')\n\toverlay: Overlay;\n\n\t@query('og-bucket-top')\n\ttop: BucketTop;\n\n\t@query('og-bucket-sidemenu')\n\tsidemenu: Sidemenu;\n\n\t@query('.body')\n\tbody: HTMLDivElement;\n\n\t@query('.main')\n\tmain: HTMLDivElement;\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@property({type: Object})\n\tsourceData: BucketSource = DEFAULT_SOURCE;\n\n\t@property({type: Object})\n\toptions: BucketOptions;\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωbucket');\n\n\t@property({type: Boolean})\n\tcompact = false;\n\n\t/** current width mode of the sidemenu, see `toggleSidemenu()` */\n\t@property({type: String})\n\tsidemenuMode: SidemenuMode = 'normal';\n\n\tsidebar1ComponentId: string;\n\n\treadonly components: BucketComponents;\n\treadonly sidebars: BucketSidebars;\n\treadonly alerts: BucketAlerts;\n\treadonly dialogs: BucketDialogs;\n\treadonly commands: CommandManager;\n\treadonly shortcuts: ShortcutManager;\n\n\tprivate _activeComponentId: ComponentId;\n\tget activeComponentId() { return this._activeComponentId }\n\n\tget sidebarIndex() { return this.options.sidebarPosition == 'left' ? 0 : 1 }\n\tget mainIndex() { return this.options.sidebarPosition == 'left' ? 1 : 0 }\n\n\tprivate _container: SplitContainer;\n\tget container(): SplitContainer {\n\t\tif (this._container) return this._container;\n\t\tthis._container = dom.createElement<SplitContainer>('og-splitcontainer');\n\t\tthis._container.orientation = 'horizontal';\n\n\t\tconst sidebarItem: SplitContainerItem = {\n\t\t\tsize: this.sourceData.sidebar?.width || constants.SIDEBAR_WIDTH,\n\t\t\tcollapsed: this.sourceData.sidebar?.collapsed || false\n\t\t};\n\n\t\tthis._container.items = [\n\t\t\tthis.sidebarIndex == 0 ? sidebarItem : {size: null},\n\t\t\tthis.sidebarIndex == 1 ? sidebarItem : {size: null},\n\t\t];\n\n\t\tthis._container.createComponent = this._createSplitContainerComponent;\n\t\tthis._container.addEventListener('splitContainer.resize', this._onSplitContainerResize);\n\t\tthis._container.addEventListener('tab.beforeRemove', this._onTabBeforeRemove);\n\t\tthis._container.addEventListener('tab.remove', this._onTabRemove);\n\t\tthis._container.addEventListener('tab.select', this._onTabSelect);\n\t\treturn this._container;\n\t}\n\n\tprivate _editorContainer: TabSplitContainer;\n\tget editorContainer(): TabSplitContainer {\n\t\tif (this._editorContainer) return this._editorContainer;\n\t\tthis._editorContainer = dom.createElement<TabSplitContainer>('og-tabsplitcontainer');\n\t\tthis._editorContainer.style.height = '100%';\n\t\tthis._editorContainer.closable = true;\n\t\tthis._editorContainer.singleActive = true;\n\t\tthis._editorContainer.createComponent = this.createEditorComponent;\n\t\tthis._editorContainer.model = new TabSplitContainerModel(this.sourceData.editorLayout);\n\t\tthis._editorContainer.scrollableTabs = true;\n\t\treturn this._editorContainer;\n\t}\n\n\tprivate _singleContainer: HTMLDivElement;\n\tget singleContainer() {\n\t\tif (this._singleContainer) return this._singleContainer;\n\t\tthis._singleContainer = dom.createElement('div');\n\t\tthis._singleContainer.style.height = '100%';\n\t\treturn this._singleContainer;\n\t}\n\n\tget mainContentContainer(): HTMLDivElement | TabSplitContainer {\n\t\treturn this.options?.componentMode == 'single' ? this.singleContainer : this.editorContainer;\n\t}\n\n\tprivate _sidebarHost: Sidebar;\n\tget sidebarHost() {\n\t\tif (this._sidebarHost) return this._sidebarHost;\n\t\tthis._sidebarHost = dom.createElement<Sidebar>('og-bucket-sidebar');\n\t\tthis._sidebarHost.bucket = this;\n\t\tthis._sidebarHost.componentId = this.sidebar1ComponentId;\n\t\treturn this._sidebarHost;\n\t}\n\n\tupdateContainerVisibility = debounce(() => {\n\t\tlet hasTabs = false;\n\t\tthis.editorContainer.walk((splitContainer, tabContainer) => {\n\t\t\tif (tabContainer.tabs?.items?.length) {\n\t\t\t\thasTabs = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (hasTabs) dom.showElement(this.editorContainer);\n\t\telse dom.hideElement(this.editorContainer);\n\t}, 100);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.components = new BucketComponents(this);\n\t\tthis.sidebars = new BucketSidebars(this);\n\t\tthis.alerts = new BucketAlerts(this);\n\t\tthis.dialogs = new BucketDialogs(this);\n\t\tthis.commands = new CommandManager(this);\n\t\tthis.shortcuts = new ShortcutManager(this);\n\n\t\tthis.options = initOptions();\n\t\tthis.logger.info('init');\n\n\t\tthis.addEventListener('state', (e: Event) => {\n\t\t\tif (e.target == this) return;\n\t\t\te.stopPropagation();\n\t\t\tthis.dispatchStateEvent();\n\t\t});\n\t}\n\n\tshowOverlay = () => this.overlay.show(this.body);\n\thideOverlay = () => this.overlay.hide();\n\n\t_onWindowBeforeUnload = (e: BeforeUnloadEvent) => {\n\t\tif (!this.components.hasUnsavedComponents) return;\n\t\te.preventDefault();\n\t\te.returnValue = '';\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 0;\n\t\tthis.logger.info('connected');\n\t\twindow.addEventListener('beforeunload', this._onWindowBeforeUnload);\n\t}\n\n\tdisconnectedCallback() {\n\t\twindow.removeEventListener('beforeunload', this._onWindowBeforeUnload);\n\t}\n\n\tlayout() {\n\t\tthis.container?.layout();\n\t\tthis.top?.layout();\n\t}\n\n\tsetSourceData(sourceData: BucketSource) {\n\t\tthis.sourceData = sourceData;\n\t\tif (sourceData.options) {\n\t\t\tthis.options = initOptions(sourceData.options, this.options);\n\t\t}\n\t}\n\n\tasync updated() {\n\t\tconst mainContainer = this.compact ? this.mainContentContainer : this.container;\n\n\t\tif (mainContainer.parentElement != this.main) {\n\t\t\tdom.empty(this.main);\n\t\t\tthis.main.appendChild(mainContainer);\n\t\t\tif (mainContainer instanceof LitElement) (mainContainer as LitElement).requestUpdate();\n\t\t}\n\n\t\tconst sidebarComponentId = (this.sourceData.sidemenu.items ?? [])[this.sourceData.sidemenu.activeIndex]?.id;\n\t\tif (sidebarComponentId) {\n\t\t\tthis.sidebar1ComponentId = sidebarComponentId;\n\t\t}\n\n\t\tawait this.container?.updateComplete;\n\t\tawait this.sidemenu?.updateComplete;\n\n\t\tthis.layout();\n\t}\n\n\tprivate _openComponent(item: OpenTabOptions) {\n\t\tconst singleMode = this.options?.componentMode == 'single';\n\t\tif (singleMode) {\n\t\t\tdom.empty(this.singleContainer);\n\t\t\tthis.singleContainer.appendChild(this.createEditorComponent(item.id));\n\t\t} else {\n\t\t\tthis.editorContainer.open(item);\n\t\t}\n\t}\n\n\tasync open(item: OpenTabOptions) {\n\t\tif (this.compact) this.hideSidebar();\n\n\t\tdom.showElement(this.mainContentContainer);\n\n\t\tconst component = item.component;\n\t\tif (component) {\n\t\t\titem.id = this.components.register(item.id, item.component);\n\t\t\tdelete item.component;\n\t\t\tthis._openComponent(item);\n\t\t\treturn component;\n\t\t}\n\n\t\tconst promise = this.components.waitFor(item.id);\n\t\tthis._openComponent(item);\n\t\tthis.dispatchStateEvent();\n\t\treturn promise;\n\t}\n\n\tasync openDialog(options: OpenDialogOptions) {\n\t\treturn await this.dialogs.open(options);\n\t}\n\n\topenMenu(options: OpenCommandsOptions): Promise<CommandResult|null> {\n\t\treturn this.commands.open(options);\n\t}\n\n\topenModalSidebar(options: ModalSidebarOptions) {\n\t\treturn this.sidebars.openModalSidebar(options);\n\t}\n\n\tasync toggleSidebar(open?: boolean) {\n\t\topen ??= this.compact ? this.sidebarHost.parentElement != this.main : this.container.items[this.sidebarIndex].collapsed;\n\t\tif (open) this.showSidebar();\n\t\telse this.hideSidebar();\n\t}\n\n\tasync hideSidebar() {\n\t\tif (this.compact) {\n\t\t\tif (this.sidebarHost.parentElement == this.main) {\n\t\t\t\tdom.empty(this.main);\n\t\t\t\tthis.main.appendChild(this.editorContainer);\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.container.collapse(this.sidebarIndex, true);\n\t\t}\n\n\t\tthis.layout();\n\t}\n\n\tasync showSidebar() {\n\t\tif (this.compact) {\n\t\t\tif (this.sidebarHost.parentElement != this.main) {\n\t\t\t\tdom.empty(this.main);\n\t\t\t\tthis.main.appendChild(this.sidebarHost);\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.container.collapse(this.sidebarIndex, false);\n\t\t}\n\n\t\tthis.layout();\n\t}\n\n\t/**\n\t * switches the sidemenu between normal and wide mode\n\t * @param wide target mode, toggles the current mode when omitted\n\t */\n\tasync toggleSidemenu(wide?: boolean) {\n\t\twide ??= this.sidemenuMode != 'wide';\n\t\tconst mode: SidemenuMode = wide ? 'wide' : 'normal';\n\t\tif (mode == this.sidemenuMode) return;\n\t\tthis.sidemenuMode = mode;\n\t\tawait this.updateComplete; // the new width is applied by render, updated() runs layout()\n\t\tif (this.sidebars.modalSidebars.length) this.sidebars.updateModalSidebarPositions();\n\t\tthis.dispatchEvent(new BucketEvent('sidemenu.change'));\n\t\tthis.dispatchStateEvent();\n\t}\n\n\tshowAlert(options: BucketAlertOptions) {\n\t\treturn this.alerts.addAlert(options);\n\t}\n\n\tcreateEditorComponent = (id: ComponentId) => {\n\t\treturn dom.createElement<ComponentHost>('og-bucket-component-host', {\n\t\t\tcomponentId: id,\n\t\t\tbucket: this,\n\t\t\tpathPosition: this.options.pathPosition\n\t\t});\n\t}\n\n\t_createSplitContainerComponent: ComponentFactory = (index: ComponentId) => {\n\t\tlet component: HTMLElement;\n\t\tif (index == this.sidebarIndex) {\n\t\t\t// primary sidebar\n\t\t\tthis.logger.info('create primary sidebar');\n\t\t\treturn this.sidebarHost;\n\t\t} else if (index == this.mainIndex) {\n\t\t\t// editor split container\n\t\t\tthis.logger.info('create editor container');\n\t\t\treturn this.mainContentContainer;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tcomponent = dom.createElement<HTMLElement>('div');\n\t\t\tcomponent.innerHTML = 'empty';\n\t\t}\n\n\t\treturn component;\n\t}\n\n\tgetState(): BucketState {\n\t\tconst item = this.container?.items[0];\n\t\treturn {\n\t\t\tsidebar: {\n\t\t\t\tselectedItem: this.sidebar1ComponentId,\n\t\t\t\twidth: item?.size,\n\t\t\t\tcollapsed: !!item?.collapsed\n\t\t\t},\n\t\t\tsidemenu: {\n\t\t\t\tmode: this.sidemenuMode\n\t\t\t},\n\t\t\tlayout: this.editorContainer?.model.getSourceData(),\n\t\t\tdialogs: [...Array.from(this.dialogs.items.entries()).map(\n\t\t\t\t([id, dialog]) => Object.assign({id: id}, dialog.getOptions())\n\t\t\t)],\n\t\t\tcomponents: [...this.components.components].reduce((acc, [id, component]) => {\n\t\t\t\tif ((component as OmegaComponent).getState) {\n\t\t\t\t\tconst componentState = (component as OmegaComponent).getState();\n\t\t\t\t\tif (componentState) acc[id] = componentState;\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {} as Record<ComponentId, ComponentState>)\n\t\t};\n\t}\n\n\tasync setState(state: BucketState) {\n\t\tthis.state = state;\n\t\tconst selectedIndex = this.sourceData.sidemenu.items.findIndex(item => item.id == state.sidebar.selectedItem);\n\t\tif (selectedIndex >= 0) {\n\t\t\tthis.sourceData.sidemenu.activeIndex = selectedIndex;\n\t\t\tthis.sidebar1ComponentId = state.sidebar.selectedItem as string;\n\t\t}\n\t\tthis.sourceData.editorLayout = state.layout;\n\t\t// wide mode is restored only when the user can switch it back\n\t\tthis.sidemenuMode = this.options.sidemenuExpandable ? (state.sidemenu?.mode ?? 'normal') : 'normal';\n\t\tthis._editorContainer = null;\n\t\tthis.requestUpdate();\n\t\tawait this.updateComplete;\n\t\tthis.sidemenu?.requestUpdate();\n\t\tthis.updateSidebarComponent();\n\t\tthis.updateMainComponent();\n\t\tstate.dialogs?.forEach(opt => this.openDialog(opt));\n\n\t\tfor (const k in state.components) {\n\t\t\tthis.components.setState(k, state.components[k]);\n\t\t}\n\t}\n\n\t_onSplitContainerResize = () => {\n\t\tthis.top?.layout();\n\t\tthis.dispatchStateEvent();\n\t}\n\n\t_onTabRemove = (e: TabEvent) => {\n\t\tthis.components.unregister(e.tab.id);\n\t\tthis.dispatchEvent(new BucketEvent('close', {tab: e.tab, componentId: e.tab.id}));\n\t\tthis.dispatchStateEvent();\n\t}\n\n\t_onTabBeforeRemove = (e: TabCloseEvent) => {\n\t\tconst tabId = e.tab.id;\n\t\tif (this.components.unsavedComponents.has(tabId)) {\n\t\t\te.preventDefault();\n\t\t\tthis.openMenu({text: `[${e.tab.title || e.tab.id}]: ${msg('Discard changes and close tab?')}`, content: 'yes_no'}).then(answer => {\n\t\t\t\tif (answer?.command?.id == 'Y') {\n\t\t\t\t\tthis.components.unsavedComponents.delete(tabId);\n\t\t\t\t\te.resolveClose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_onTabSelect = (e: TabEvent) => {\n\t\tif (e.tabs.topLevelComponent == this.editorContainer) {\n\t\t\tthis._activeComponentId = e.tab?.id;\n\t\t\tthis.dispatchEvent(new BucketEvent('activate', {tab: e.tab, componentId: e.tab?.id}));\n\t\t\tthis.dispatchStateEvent();\n\t\t}\n\t}\n\n\t_onSidemenuSelect(e: ListSelectEvent) {\n\t\tconst id = (this.sourceData.sidemenu.items ?? [])[e.index]?.id;\n\t\tif (id == this.sidebar1ComponentId) {\n\t\t\tthis.toggleSidebar();\n\t\t} else {\n\t\t\tthis.toggleSidebar(true);\n\t\t\tthis.sidebar1ComponentId = id;\n\t\t\tthis.updateSidebarComponent();\n\t\t\tthis.dispatchEvent(new BucketEvent('sidebar.change'));\n\t\t}\n\t\tthis.dispatchStateEvent();\n\t}\n\n\tupdateSidebarComponent() {\n\t\tthis.sidebarHost.componentId = this.sidebar1ComponentId;\n\t}\n\n\tupdateMainComponent() {\n\t\tthis.container?.updateComponent(1);\n\t}\n\n\tasync openSidebarComponent(id: ComponentId) {\n\t\tthis.sidebar1ComponentId = id.toString();\n\t\tthis.showSidebar();\n\t\tthis.updateSidebarComponent();\n\t\tthis.sidemenu.selectItem(id.toString());\n\t\tawait this.sidebarHost.updateComplete;\n\t}\n\n\t_onSidemenuToggle = () => this.toggleSidemenu();\n\n\tget sidemenuWidth() {\n\t\treturn this.sidemenuMode == 'wide' ? this.options.sidemenuWideWidth : constants.SIDEMENU_WIDTH;\n\t}\n\n\trenderSideMenu = () => this.sourceData.sidemenu.hidden ? html`` : html`\n\t\t<og-bucket-sidemenu\n\t\t\tstyle=${styleMap({minWidth: dom.px(this.sidemenuWidth)})}\n\t\t\t.mode=${this.sidemenuMode}\n\t\t\t?expandable=${this.options.sidemenuExpandable && !this.compact}\n\t\t\t.position=${this.options.sidebarPosition}\n\t\t\t@sidemenu.toggle=${this._onSidemenuToggle}\n\t\t\t@select=${this._onSidemenuSelect}\n\t\t\t.settings=${this.sourceData.sidemenu}>\n\t\t</og-bucket-sidemenu>\n\t`;\n\n\trender = () => html`\n\t\t<og-bucket-top></og-bucket-top>\n\n\t\t<div class=\"body\">\n\t\t\t<og-overlay></og-overlay>\n\t\t\t${this.options.sidebarPosition == 'left' ? this.renderSideMenu() : null}\n\t\t\t<div class=\"main\"></div>\n\t\t\t${this.options.sidebarPosition == 'right' ? this.renderSideMenu() : null}\n\t\t</div>\n\t`;\n\n}\n"]}
@@ -1,7 +1,12 @@
1
1
  import { IconSpec } from '@omegagrid/core';
2
2
  import { LitElement } from 'lit';
3
+ import { BucketButtonOrientation } from '../types';
3
4
  export declare class BucketButton extends LitElement {
4
5
  text: string;
6
+ /** text used in the horizontal layout, falls back to `text` */
7
+ longText: string;
8
+ /** `vertical` (text below the icon, default), `horizontal` (text next to the icon) or `auto` (horizontal when wide enough) */
9
+ orientation: BucketButtonOrientation;
5
10
  icon: IconSpec | string;
6
11
  active: boolean;
7
12
  statusIcon: string | [string, string];
@@ -1 +1 @@
1
- {"version":3,"file":"bucketButton.d.ts","sourceRoot":"","sources":["../../src/ui/bucketButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,YAAa,SAAQ,UAAU;IAG3C,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,QAAQ,GAAC,MAAM,CAAC;IAGtB,MAAM,UAAQ;IAGd,UAAU,EAAE,MAAM,GAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC,MAAM,CAAC,MAAM,0BAqEX;IAEF,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM,6CASJ;CAEF"}
1
+ {"version":3,"file":"bucketButton.d.ts","sourceRoot":"","sources":["../../src/ui/bucketButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAGvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAmCnD,qBACa,YAAa,SAAQ,UAAU;IAG3C,IAAI,EAAE,MAAM,CAAC;IAEb,+DAA+D;IAE/D,QAAQ,EAAE,MAAM,CAAC;IAEjB,8HAA8H;IAE9H,WAAW,EAAE,uBAAuB,CAAc;IAGlD,IAAI,EAAE,QAAQ,GAAC,MAAM,CAAC;IAGtB,MAAM,UAAQ;IAGd,UAAU,EAAE,MAAM,GAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC,MAAM,CAAC,MAAM,0BAoFX;IAEF,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM,6CAeL;CAED"}
@@ -5,22 +5,63 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { utils } from '@omegagrid/core';
8
- import { LitElement, html, css } from 'lit';
8
+ import { LitElement, html, css, unsafeCSS } from 'lit';
9
9
  import { customElement, property } from 'lit/decorators.js';
10
+ import constants from '../constants';
11
+ // horizontal layout (icon + text in a row); applied unconditionally for orientation="horizontal"
12
+ // and from a container query for orientation="auto"
13
+ const horizontalStyle = (host) => css `
14
+ ${unsafeCSS(host)} .inner {
15
+ flex-direction: row;
16
+ justify-content: flex-start;
17
+ gap: 6px;
18
+ padding: 0 6px;
19
+ }
20
+
21
+ ${unsafeCSS(host)} .icon {
22
+ flex: 0 0 auto;
23
+ width: 22px;
24
+ }
25
+
26
+ ${unsafeCSS(host)} .text.short {
27
+ display: none;
28
+ }
29
+
30
+ ${unsafeCSS(host)} .text.long {
31
+ display: block;
32
+ flex: 1;
33
+ min-width: 0;
34
+ height: auto;
35
+ line-height: normal;
36
+ text-align: left;
37
+ font-size: var(--og-font-size);
38
+ white-space: nowrap;
39
+ overflow: hidden;
40
+ text-overflow: ellipsis;
41
+ }
42
+ `;
10
43
  let BucketButton = class BucketButton extends LitElement {
11
44
  constructor() {
12
45
  super(...arguments);
46
+ /** `vertical` (text below the icon, default), `horizontal` (text next to the icon) or `auto` (horizontal when wide enough) */
47
+ this.orientation = 'vertical';
13
48
  this.active = false;
14
- this.render = () => html `
15
- <div class="inner">
16
- <div class="icon">
17
- <og-icon .icon="${this.iconSpec}"></og-icon>
49
+ this.render = () => {
50
+ const longText = this.longText ?? this.text;
51
+ return html `
52
+ <div class="inner">
53
+ <div class="icon">
54
+ <og-icon .icon="${this.iconSpec}"></og-icon>
55
+ </div>
56
+ ${this.text == null ? '' : html `
57
+ <div class="text short">${this.text}</div>
58
+ `}
59
+ ${longText == null ? '' : html `
60
+ <div class="text long">${longText}</div>
61
+ `}
18
62
  </div>
19
- ${this.text == null ? '' : html `
20
- <div class="text">${this.text}</div>
21
- `}
22
- </div>
23
- `;
63
+ `;
64
+ };
24
65
  }
25
66
  get iconSpec() {
26
67
  return Object.assign(utils.isObject(this.icon) ? this.icon : { icon: this.icon }, { size: 'lg' });
@@ -29,11 +70,16 @@ let BucketButton = class BucketButton extends LitElement {
29
70
  BucketButton.styles = css `
30
71
  :host {
31
72
  display: block;
32
- width: 40px;
73
+ min-width: 40px;
33
74
  height: 40px;
34
75
  cursor: pointer;
35
76
  padding: 4px;
36
77
  outline: none;
78
+ box-sizing: border-box;
79
+ }
80
+
81
+ :host([orientation="auto"]) {
82
+ container-type: inline-size;
37
83
  }
38
84
 
39
85
  :host(:hover) .inner {
@@ -92,13 +138,29 @@ BucketButton.styles = css `
92
138
  line-height: 10px;
93
139
  }
94
140
 
141
+ .text.long {
142
+ display: none;
143
+ }
144
+
95
145
  .statusicon {
96
146
  color: var(--og-accent-color);
97
147
  }
148
+
149
+ ${horizontalStyle(':host([orientation="horizontal"])')}
150
+
151
+ @container (min-width: ${constants.SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD}px) {
152
+ ${horizontalStyle(':host([orientation="auto"])')}
153
+ }
98
154
  `;
99
155
  __decorate([
100
156
  property({ type: String })
101
157
  ], BucketButton.prototype, "text", void 0);
158
+ __decorate([
159
+ property({ type: String })
160
+ ], BucketButton.prototype, "longText", void 0);
161
+ __decorate([
162
+ property({ type: String, reflect: true })
163
+ ], BucketButton.prototype, "orientation", void 0);
102
164
  __decorate([
103
165
  property()
104
166
  ], BucketButton.prototype, "icon", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"bucketButton.js","sourceRoot":"","sources":["../../src/ui/bucketButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAY,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGrD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QASN,WAAM,GAAG,KAAK,CAAA;QAgFd,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;;sBAGE,IAAI,CAAC,QAAQ;;KAE9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;wBACV,IAAI,CAAC,IAAI;IAC7B;;EAEF,CAAC;IAEH,CAAC;IAfA,IAAY,QAAQ;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAa,CAAC;IAC3G,CAAC;;AAzEM,mBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqElB,AArEY,CAqEX;AAhFF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACZ;AAGb;IADC,QAAQ,EAAE;0CACW;AAGtB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CAC3B;AAGd;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;gDACW;AAZxB,YAAY;IADxB,aAAa,CAAC,kBAAkB,CAAC;GACrB,YAAY,CAoGxB","sourcesContent":["import { IconSpec, utils } from '@omegagrid/core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('og-bucket-button')\nexport class BucketButton extends LitElement {\n\n\t@property({type: String})\n\ttext: string;\n\n\t@property()\n\ticon: IconSpec|string;\n\n\t@property({type: Boolean, reflect: true})\n\tactive = false\n\n\t@property({type: String})\n\tstatusIcon: string|[string, string];\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 4px;\n\t\t\toutline: none;\n\t\t}\n\n\t\t:host(:hover) .inner {\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t}\n\n\t\t:host(:active) .inner {\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t\ttransform: scale(0.92);\n\t\t}\n\n\t\t:host([active]) .inner {\n\t\t\tborder-color: var(--og-accent-color);\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t\tcolor: var(--og-text-color-3);\n\t\t}\n\n\t\t:host(:focus-visible) .inner {\n\t\t\tbox-shadow: 0 0 0 2px var(--og-accent-color);\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t.inner {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tborder-radius: var(--og-base-radius);\n\t\t\toverflow: hidden;\n\t\t\ttransition: background-color 0.15s ease, border-color 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease;\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\t.icon {\n\t\t\tflex: 1;\n\t\t\tline-height: 22px;\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t.icon og-icon {\n\t\t\tflex: 1;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t.text {\n\t\t\tflex: 0;\n\t\t\tfont-size: 8px;\n\t\t\theight: 10px;\n\t\t\tline-height: 10px;\n\t\t}\n\n\t\t.statusicon {\n\t\t\tcolor: var(--og-accent-color);\n\t\t}\n\t`;\n\n\tprivate get iconSpec() {\n\t\treturn Object.assign(utils.isObject(this.icon) ? this.icon : {icon: this.icon}, {size: 'lg'}) as IconSpec;\n\t}\n\n\trender = () => html`\n\t\t<div class=\"inner\">\n\t\t\t<div class=\"icon\">\n\t\t\t\t<og-icon .icon=\"${this.iconSpec}\"></og-icon>\n\t\t\t</div>\n\t\t\t${this.text == null ? '' : html`\n\t\t\t\t<div class=\"text\">${this.text}</div>\n\t\t\t`}\n\t\t</div>\n\t`;\n\n}\n"]}
1
+ {"version":3,"file":"bucketButton.js","sourceRoot":"","sources":["../../src/ui/bucketButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAY,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,iGAAiG;AACjG,oDAAoD;AACpD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,CAAA;GAC1C,SAAS,CAAC,IAAI,CAAC;;;;;;;GAOf,SAAS,CAAC,IAAI,CAAC;;;;;GAKf,SAAS,CAAC,IAAI,CAAC;;;;GAIf,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;CAYjB,CAAC;AAGK,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QASN,8HAA8H;QAE9H,gBAAW,GAA4B,UAAU,CAAC;QAMlD,WAAM,GAAG,KAAK,CAAA;QA+Fd,WAAM,GAAG,GAAG,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAC5C,OAAO,IAAI,CAAA;;;uBAGU,IAAI,CAAC,QAAQ;;MAE9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;+BACJ,IAAI,CAAC,IAAI;KACnC;MACC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;8BACJ,QAAQ;KACjC;;GAEF,CAAC;QACH,CAAC,CAAA;IAEF,CAAC;IArBA,IAAY,QAAQ;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAa,CAAC;IAC3G,CAAC;;AAxFM,mBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+EhB,eAAe,CAAC,mCAAmC,CAAC;;2BAE7B,SAAS,CAAC,mCAAmC;KACnE,eAAe,CAAC,6BAA6B,CAAC;;EAEjD,AApFY,CAoFX;AAvGF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACZ;AAIb;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;8CACR;AAIjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACU;AAGlD;IADC,QAAQ,EAAE;0CACW;AAGtB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CAC3B;AAGd;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;gDACW;AApBxB,YAAY;IADxB,aAAa,CAAC,kBAAkB,CAAC;GACrB,YAAY,CAiIxB","sourcesContent":["import { IconSpec, utils } from '@omegagrid/core';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport constants from '../constants';\nimport { BucketButtonOrientation } from '../types';\n\n// horizontal layout (icon + text in a row); applied unconditionally for orientation=\"horizontal\"\n// and from a container query for orientation=\"auto\"\nconst horizontalStyle = (host: string) => css`\n\t${unsafeCSS(host)} .inner {\n\t\tflex-direction: row;\n\t\tjustify-content: flex-start;\n\t\tgap: 6px;\n\t\tpadding: 0 6px;\n\t}\n\n\t${unsafeCSS(host)} .icon {\n\t\tflex: 0 0 auto;\n\t\twidth: 22px;\n\t}\n\n\t${unsafeCSS(host)} .text.short {\n\t\tdisplay: none;\n\t}\n\n\t${unsafeCSS(host)} .text.long {\n\t\tdisplay: block;\n\t\tflex: 1;\n\t\tmin-width: 0;\n\t\theight: auto;\n\t\tline-height: normal;\n\t\ttext-align: left;\n\t\tfont-size: var(--og-font-size);\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n`;\n\n@customElement('og-bucket-button')\nexport class BucketButton extends LitElement {\n\n\t@property({type: String})\n\ttext: string;\n\n\t/** text used in the horizontal layout, falls back to `text` */\n\t@property({type: String})\n\tlongText: string;\n\n\t/** `vertical` (text below the icon, default), `horizontal` (text next to the icon) or `auto` (horizontal when wide enough) */\n\t@property({type: String, reflect: true})\n\torientation: BucketButtonOrientation = 'vertical';\n\n\t@property()\n\ticon: IconSpec|string;\n\n\t@property({type: Boolean, reflect: true})\n\tactive = false\n\n\t@property({type: String})\n\tstatusIcon: string|[string, string];\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tmin-width: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 4px;\n\t\t\toutline: none;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host([orientation=\"auto\"]) {\n\t\t\tcontainer-type: inline-size;\n\t\t}\n\n\t\t:host(:hover) .inner {\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t}\n\n\t\t:host(:active) .inner {\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t\ttransform: scale(0.92);\n\t\t}\n\n\t\t:host([active]) .inner {\n\t\t\tborder-color: var(--og-accent-color);\n\t\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t\t\tcolor: var(--og-text-color-3);\n\t\t}\n\n\t\t:host(:focus-visible) .inner {\n\t\t\tbox-shadow: 0 0 0 2px var(--og-accent-color);\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t.inner {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tborder-radius: var(--og-base-radius);\n\t\t\toverflow: hidden;\n\t\t\ttransition: background-color 0.15s ease, border-color 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease;\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\t.icon {\n\t\t\tflex: 1;\n\t\t\tline-height: 22px;\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t.icon og-icon {\n\t\t\tflex: 1;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t.text {\n\t\t\tflex: 0;\n\t\t\tfont-size: 8px;\n\t\t\theight: 10px;\n\t\t\tline-height: 10px;\n\t\t}\n\n\t\t.text.long {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.statusicon {\n\t\t\tcolor: var(--og-accent-color);\n\t\t}\n\n\t\t${horizontalStyle(':host([orientation=\"horizontal\"])')}\n\n\t\t@container (min-width: ${constants.SIDEMENU_BUTTON_HORIZONTAL_TRESHOLD}px) {\n\t\t\t${horizontalStyle(':host([orientation=\"auto\"])')}\n\t\t}\n\t`;\n\n\tprivate get iconSpec() {\n\t\treturn Object.assign(utils.isObject(this.icon) ? this.icon : {icon: this.icon}, {size: 'lg'}) as IconSpec;\n\t}\n\n\trender = () => {\n\t\tconst longText = this.longText ?? this.text;\n\t\treturn html`\n\t\t\t<div class=\"inner\">\n\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t<og-icon .icon=\"${this.iconSpec}\"></og-icon>\n\t\t\t\t</div>\n\t\t\t\t${this.text == null ? '' : html`\n\t\t\t\t\t<div class=\"text short\">${this.text}</div>\n\t\t\t\t`}\n\t\t\t\t${longText == null ? '' : html`\n\t\t\t\t\t<div class=\"text long\">${longText}</div>\n\t\t\t\t`}\n\t\t\t</div>\n\t\t`;\n\t}\n\n}\n"]}
@@ -1,23 +1,33 @@
1
- import { List, ListItemElement, Tooltip } from '@omegagrid/core';
1
+ import { HorizontalPosition, List, ListItemElement, Tooltip } from '@omegagrid/core';
2
2
  import { LitElement } from 'lit';
3
- import { SidemenuSettings } from '../types';
3
+ import { SidemenuMode, SidemenuSettings } from '../types';
4
4
  export declare class Sidemenu extends LitElement {
5
5
  settings: SidemenuSettings;
6
+ /** current width mode; the width itself is applied by the bucket */
7
+ mode: SidemenuMode;
8
+ /** renders the normal/wide toggle button at the bottom */
9
+ expandable: boolean;
10
+ /** position of the sidemenu in the bucket, flips the toggle arrow */
11
+ position: HorizontalPosition;
6
12
  list: List;
7
13
  static styles: import("lit").CSSResult;
8
14
  private tooltipRef;
9
15
  get tooltip(): Tooltip;
10
16
  get count(): number;
17
+ get toggleIcon(): "chevron-right" | "chevron-left";
11
18
  private _hideTimer;
12
19
  private items;
13
20
  selectItem(id: string): void;
14
21
  constructor();
15
22
  requestHide(): void;
16
23
  _onMouseMove: (_e: MouseEvent, elm: ListItemElement) => void;
24
+ _onToggle: () => void;
25
+ _onToggleKeyDown: (e: KeyboardEvent) => void;
17
26
  updated(): Promise<void>;
18
27
  updateActiveIndex(): void;
19
28
  firstUpdated(): void;
20
29
  _itemRenderer: (div: HTMLDivElement, index: number) => Promise<void>;
30
+ renderToggle: () => import("lit-html").TemplateResult<1> | "";
21
31
  render: () => import("lit-html").TemplateResult<1>;
22
32
  }
23
33
  //# sourceMappingURL=sidemenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidemenu.d.ts","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgB5C,qBACa,QAAS,SAAQ,UAAU;IAGvC,QAAQ,EAAE,gBAAgB,CAAC;IAG3B,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,CAAC,MAAM,0BAYX;IAEF,OAAO,CAAC,UAAU,CAAwB;IAC1C,IAAI,OAAO,YAAqC;IAEhD,IAAI,KAAK,WAA+C;IAExD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CASV;IAEH,UAAU,CAAC,EAAE,EAAE,MAAM;;IAkBrB,WAAW;IASX,YAAY,GAAI,IAAI,UAAU,EAAE,KAAK,eAAe,UAQnD;IAEK,OAAO;IAOb,iBAAiB;IAOjB,YAAY;IAIZ,aAAa,GAAU,KAAK,cAAc,EAAE,OAAO,MAAM,mBAIxD;IAED,MAAM,6CAcJ;CAEF"}
1
+ {"version":3,"file":"sidemenu.d.ts","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,kBAAkB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1G,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgB1D,qBACa,QAAS,SAAQ,UAAU;IAGvC,QAAQ,EAAE,gBAAgB,CAAC;IAE3B,oEAAoE;IAEpE,IAAI,EAAE,YAAY,CAAY;IAE9B,0DAA0D;IAE1D,UAAU,UAAS;IAEnB,qEAAqE;IAErE,QAAQ,EAAE,kBAAkB,CAAU;IAGtC,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,CAAC,MAAM,0BAqBX;IAEF,OAAO,CAAC,UAAU,CAAwB;IAC1C,IAAI,OAAO,YAAqC;IAEhD,IAAI,KAAK,WAA+C;IAExD,IAAI,UAAU,qCAIb;IAED,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAWV;IAEH,UAAU,CAAC,EAAE,EAAE,MAAM;;IAkBrB,WAAW;IASX,YAAY,GAAI,IAAI,UAAU,EAAE,KAAK,eAAe,UAQnD;IAED,SAAS,aAER;IAED,gBAAgB,GAAI,GAAG,aAAa,UAKnC;IAEK,OAAO;IAOb,iBAAiB;IAOjB,YAAY;IAIZ,aAAa,GAAU,KAAK,cAAc,EAAE,OAAO,MAAM,mBAIxD;IAED,YAAY,kDAmBX;IAED,MAAM,6CAgBJ;CAEF"}
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import constants from '../constants';
8
8
  import { ComponentStore, dom } from '@omegagrid/core';
9
+ import { msg } from '@omegagrid/localize';
9
10
  import { LitElement, html, css } from 'lit';
10
11
  import { customElement, property, query } from 'lit/decorators.js';
11
12
  import { createRef, ref } from 'lit/directives/ref.js';
@@ -24,6 +25,11 @@ const itemStyle = css `
24
25
  let Sidemenu = class Sidemenu extends LitElement {
25
26
  get tooltip() { return this.tooltipRef?.value; }
26
27
  get count() { return this.settings?.items?.length ?? 0; }
28
+ get toggleIcon() {
29
+ const expandsRight = this.position != 'right';
30
+ const wide = this.mode == 'wide';
31
+ return expandsRight !== wide ? 'chevron-right' : 'chevron-left';
32
+ }
27
33
  selectItem(id) {
28
34
  const index = this.settings?.items.findIndex(item => item.id === id);
29
35
  if (index >= 0) {
@@ -33,12 +39,20 @@ let Sidemenu = class Sidemenu extends LitElement {
33
39
  }
34
40
  constructor() {
35
41
  super();
42
+ /** current width mode; the width itself is applied by the bucket */
43
+ this.mode = 'normal';
44
+ /** renders the normal/wide toggle button at the bottom */
45
+ this.expandable = false;
46
+ /** position of the sidemenu in the bucket, flips the toggle arrow */
47
+ this.position = 'left';
36
48
  this.tooltipRef = createRef();
37
49
  this.items = new ComponentStore((index) => {
38
50
  const item = this.settings?.items[index];
39
51
  const b = dom.createElement('og-bucket-button', {
40
52
  active: this.settings?.activeIndex === index,
41
53
  text: item.text,
54
+ longText: item.longText,
55
+ orientation: item.orientation ?? 'vertical',
42
56
  icon: item.icon,
43
57
  statusIcon: ['fas', item.statusIcon]
44
58
  });
@@ -54,11 +68,41 @@ let Sidemenu = class Sidemenu extends LitElement {
54
68
  this.tooltip.deatach();
55
69
  }
56
70
  };
71
+ this._onToggle = () => {
72
+ this.dispatchEvent(new Event('sidemenu.toggle', { bubbles: true, composed: true }));
73
+ };
74
+ this._onToggleKeyDown = (e) => {
75
+ if (e.key == 'Enter' || e.key == ' ') {
76
+ e.preventDefault();
77
+ this._onToggle();
78
+ }
79
+ };
57
80
  this._itemRenderer = async (div, index) => {
58
81
  const item = await this.items.get(index);
59
82
  dom.empty(div);
60
83
  div.appendChild(item);
61
84
  };
85
+ this.renderToggle = () => {
86
+ if (!this.expandable)
87
+ return '';
88
+ const wide = this.mode == 'wide';
89
+ const label = wide ? msg('collapse menu') : msg('expand menu');
90
+ return html `
91
+ <div class="toggle">
92
+ <og-bucket-button
93
+ orientation="auto"
94
+ .icon="${this.toggleIcon}"
95
+ .longText="${label}"
96
+ title="${label}"
97
+ tabindex="0"
98
+ role="button"
99
+ aria-expanded="${wide}"
100
+ @click="${this._onToggle}"
101
+ @keydown="${this._onToggleKeyDown}">
102
+ </og-bucket-button>
103
+ </div>
104
+ `;
105
+ };
62
106
  this.render = () => html `
63
107
  <og-list
64
108
  .size="${this.count}"
@@ -70,6 +114,8 @@ let Sidemenu = class Sidemenu extends LitElement {
70
114
  @select="${() => this.updateActiveIndex()}">
71
115
  </og-list>
72
116
 
117
+ ${this.renderToggle()}
118
+
73
119
  <og-tooltip ${ref(this.tooltipRef)} style="max-width: 300px; display: none">
74
120
  <div style="padding: 5px" slot="body"></div>
75
121
  </og-tooltip>
@@ -106,7 +152,8 @@ let Sidemenu = class Sidemenu extends LitElement {
106
152
  };
107
153
  Sidemenu.styles = css `
108
154
  :host {
109
- display: block;
155
+ display: flex;
156
+ flex-direction: column;
110
157
  }
111
158
 
112
159
  * {
@@ -114,12 +161,29 @@ Sidemenu.styles = css `
114
161
  }
115
162
 
116
163
  og-list {
117
- height: 100%;
164
+ flex: 1 1 auto;
165
+ min-height: 0;
166
+ }
167
+
168
+ .toggle {
169
+ flex: 0 0 auto;
170
+ height: ${constants.SIDEMENU_WIDTH}px;
171
+ border-top: 1px solid var(--og-bucket-border-color);
172
+ color: var(--og-text-color);
118
173
  }
119
174
  `;
120
175
  __decorate([
121
176
  property({ type: Object })
122
177
  ], Sidemenu.prototype, "settings", void 0);
178
+ __decorate([
179
+ property({ type: String, reflect: true })
180
+ ], Sidemenu.prototype, "mode", void 0);
181
+ __decorate([
182
+ property({ type: Boolean })
183
+ ], Sidemenu.prototype, "expandable", void 0);
184
+ __decorate([
185
+ property({ type: String })
186
+ ], Sidemenu.prototype, "position", void 0);
123
187
  __decorate([
124
188
  query('og-list')
125
189
  ], Sidemenu.prototype, "list", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"sidemenu.js","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { ComponentStore, dom, List, ListItemElement, Tooltip } from '@omegagrid/core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { SidemenuSettings } from '../types';\nimport { BucketButton } from './bucketButton';\n\nconst itemStyle = css`\n\t.item {\n\t\tvertical-align: middle;\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid var(--og-bucket-border-color);\n\t\tcolor: var(--og-text-color);\n\t}\n\n\t.item.selected, .item:hover {\n\t\tbackground-color: inherit !important;\n\t}\n`;\n\n@customElement('og-bucket-sidemenu')\nexport class Sidemenu extends LitElement {\n\n\t@property({type: Object})\n\tsettings: SidemenuSettings;\n\n\t@query('og-list')\n\tlist: List;\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tog-list {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\tprivate tooltipRef = createRef<Tooltip>();\n\tget tooltip() { return this.tooltipRef?.value; }\n\n\tget count() { return this.settings?.items?.length ?? 0 }\n\n\tprivate _hideTimer: number;\n\tprivate items = new ComponentStore<BucketButton>((index: number) => {\n\t\tconst item = this.settings?.items[index];\n\t\tconst b = dom.createElement<BucketButton>('og-bucket-button', {\n\t\t\tactive: this.settings?.activeIndex === index,\n\t\t\ttext: item.text,\n\t\t\ticon: item.icon,\n\t\t\tstatusIcon: ['fas', item.statusIcon]\n\t\t});\n\t\treturn b\n\t});\n\n\tselectItem(id: string) {\n\t\tconst index = this.settings?.items.findIndex(item => item.id === id);\n\t\tif (index >= 0) {\n\t\t\tthis.list.select(index);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tdom.debounceOn(this, 'mousemove', '.item', this._onMouseMove, {wait: 10, noMatchCallback: () => {\n\t\t\tthis.tooltip.deatach();\n\t\t}});\n\n\t\tdom.on(this, 'mouseout', '.item', () => this.requestHide());\n\t\tdom.on(this, 'mouseleave', '.item', () => this.requestHide());\n\t}\n\n\trequestHide() {\n\t\tif (this._hideTimer == null) {\n\t\t\tthis._hideTimer = window.setTimeout(() => {\n\t\t\t\tthis.tooltip.deatach();\n\t\t\t\tthis._hideTimer = null;\n\t\t\t}, 100)\n\t\t}\n\t}\n\n\t_onMouseMove = (_e: MouseEvent, elm: ListItemElement) => {\n\t\tconst tooltip = this.settings.items[elm.index].tooltip;\n\t\tif (tooltip) {\n\t\t\t(this.tooltip.querySelector('[slot=\"body\"]') as HTMLDivElement).innerText = tooltip;\n\t\t\tthis.tooltip.attachTo(elm, 'right');\n\t\t} else {\n\t\t\tthis.tooltip.deatach();\n\t\t}\n\t}\n\n\tasync updated() {\n\t\tif (this.settings?.activeIndex >= 0) {\n\t\t\tthis.list.select(this.settings?.activeIndex);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tupdateActiveIndex() {\n\t\tthis.settings.activeIndex = this.list.selectedIndex;\n\t\tthis.items.forEach((item, index) => {\n\t\t\titem.active = index === this.settings.activeIndex;\n\t\t});\n\t}\n\n\tfirstUpdated() {\n\t\tdocument.body.appendChild(this.tooltip);\n\t}\n\n\t_itemRenderer = async (div: HTMLDivElement, index: number) => {\n\t\tconst item = await this.items.get(index);\n\t\tdom.empty(div);\n\t\tdiv.appendChild(item);\n\t}\n\n\trender = () => html`\n\t\t<og-list\n\t\t\t.size=\"${this.count}\"\n\t\t\t?nativeHeight=\"${true}\"\n\t\t\t.customStyle=\"${itemStyle}\"\n\t\t\tsliderSize=\"6\"\n\t\t\titemHeight=\"${constants.SIDEMENU_WIDTH}\"\n\t\t\t.itemRenderer=\"${this._itemRenderer}\"\n\t\t\t@select=\"${() => this.updateActiveIndex()}\">\n\t\t</og-list>\n\n\t\t<og-tooltip ${ref(this.tooltipRef)} style=\"max-width: 300px; display: none\">\n\t\t\t<div style=\"padding: 5px\" slot=\"body\"></div>\n\t\t</og-tooltip>\n\t`;\n\n}\n"]}
1
+ {"version":3,"file":"sidemenu.js","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { ComponentStore, dom, HorizontalPosition, List, ListItemElement, Tooltip } from '@omegagrid/core';\nimport { msg } from '@omegagrid/localize';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { SidemenuMode, SidemenuSettings } from '../types';\nimport { BucketButton } from './bucketButton';\n\nconst itemStyle = css`\n\t.item {\n\t\tvertical-align: middle;\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid var(--og-bucket-border-color);\n\t\tcolor: var(--og-text-color);\n\t}\n\n\t.item.selected, .item:hover {\n\t\tbackground-color: inherit !important;\n\t}\n`;\n\n@customElement('og-bucket-sidemenu')\nexport class Sidemenu extends LitElement {\n\n\t@property({type: Object})\n\tsettings: SidemenuSettings;\n\n\t/** current width mode; the width itself is applied by the bucket */\n\t@property({type: String, reflect: true})\n\tmode: SidemenuMode = 'normal';\n\n\t/** renders the normal/wide toggle button at the bottom */\n\t@property({type: Boolean})\n\texpandable = false;\n\n\t/** position of the sidemenu in the bucket, flips the toggle arrow */\n\t@property({type: String})\n\tposition: HorizontalPosition = 'left';\n\n\t@query('og-list')\n\tlist: List;\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tog-list {\n\t\t\tflex: 1 1 auto;\n\t\t\tmin-height: 0;\n\t\t}\n\n\t\t.toggle {\n\t\t\tflex: 0 0 auto;\n\t\t\theight: ${constants.SIDEMENU_WIDTH}px;\n\t\t\tborder-top: 1px solid var(--og-bucket-border-color);\n\t\t\tcolor: var(--og-text-color);\n\t\t}\n\t`;\n\n\tprivate tooltipRef = createRef<Tooltip>();\n\tget tooltip() { return this.tooltipRef?.value; }\n\n\tget count() { return this.settings?.items?.length ?? 0 }\n\n\tget toggleIcon() {\n\t\tconst expandsRight = this.position != 'right';\n\t\tconst wide = this.mode == 'wide';\n\t\treturn expandsRight !== wide ? 'chevron-right' : 'chevron-left';\n\t}\n\n\tprivate _hideTimer: number;\n\tprivate items = new ComponentStore<BucketButton>((index: number) => {\n\t\tconst item = this.settings?.items[index];\n\t\tconst b = dom.createElement<BucketButton>('og-bucket-button', {\n\t\t\tactive: this.settings?.activeIndex === index,\n\t\t\ttext: item.text,\n\t\t\tlongText: item.longText,\n\t\t\torientation: item.orientation ?? 'vertical',\n\t\t\ticon: item.icon,\n\t\t\tstatusIcon: ['fas', item.statusIcon]\n\t\t});\n\t\treturn b\n\t});\n\n\tselectItem(id: string) {\n\t\tconst index = this.settings?.items.findIndex(item => item.id === id);\n\t\tif (index >= 0) {\n\t\t\tthis.list.select(index);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tdom.debounceOn(this, 'mousemove', '.item', this._onMouseMove, {wait: 10, noMatchCallback: () => {\n\t\t\tthis.tooltip.deatach();\n\t\t}});\n\n\t\tdom.on(this, 'mouseout', '.item', () => this.requestHide());\n\t\tdom.on(this, 'mouseleave', '.item', () => this.requestHide());\n\t}\n\n\trequestHide() {\n\t\tif (this._hideTimer == null) {\n\t\t\tthis._hideTimer = window.setTimeout(() => {\n\t\t\t\tthis.tooltip.deatach();\n\t\t\t\tthis._hideTimer = null;\n\t\t\t}, 100)\n\t\t}\n\t}\n\n\t_onMouseMove = (_e: MouseEvent, elm: ListItemElement) => {\n\t\tconst tooltip = this.settings.items[elm.index].tooltip;\n\t\tif (tooltip) {\n\t\t\t(this.tooltip.querySelector('[slot=\"body\"]') as HTMLDivElement).innerText = tooltip;\n\t\t\tthis.tooltip.attachTo(elm, 'right');\n\t\t} else {\n\t\t\tthis.tooltip.deatach();\n\t\t}\n\t}\n\n\t_onToggle = () => {\n\t\tthis.dispatchEvent(new Event('sidemenu.toggle', {bubbles: true, composed: true}));\n\t}\n\n\t_onToggleKeyDown = (e: KeyboardEvent) => {\n\t\tif (e.key == 'Enter' || e.key == ' ') {\n\t\t\te.preventDefault();\n\t\t\tthis._onToggle();\n\t\t}\n\t}\n\n\tasync updated() {\n\t\tif (this.settings?.activeIndex >= 0) {\n\t\t\tthis.list.select(this.settings?.activeIndex);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tupdateActiveIndex() {\n\t\tthis.settings.activeIndex = this.list.selectedIndex;\n\t\tthis.items.forEach((item, index) => {\n\t\t\titem.active = index === this.settings.activeIndex;\n\t\t});\n\t}\n\n\tfirstUpdated() {\n\t\tdocument.body.appendChild(this.tooltip);\n\t}\n\n\t_itemRenderer = async (div: HTMLDivElement, index: number) => {\n\t\tconst item = await this.items.get(index);\n\t\tdom.empty(div);\n\t\tdiv.appendChild(item);\n\t}\n\n\trenderToggle = () => {\n\t\tif (!this.expandable) return '';\n\t\tconst wide = this.mode == 'wide';\n\t\tconst label = wide ? msg('collapse menu') : msg('expand menu');\n\t\treturn html`\n\t\t\t<div class=\"toggle\">\n\t\t\t\t<og-bucket-button\n\t\t\t\t\torientation=\"auto\"\n\t\t\t\t\t.icon=\"${this.toggleIcon}\"\n\t\t\t\t\t.longText=\"${label}\"\n\t\t\t\t\ttitle=\"${label}\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-expanded=\"${wide}\"\n\t\t\t\t\t@click=\"${this._onToggle}\"\n\t\t\t\t\t@keydown=\"${this._onToggleKeyDown}\">\n\t\t\t\t</og-bucket-button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\trender = () => html`\n\t\t<og-list\n\t\t\t.size=\"${this.count}\"\n\t\t\t?nativeHeight=\"${true}\"\n\t\t\t.customStyle=\"${itemStyle}\"\n\t\t\tsliderSize=\"6\"\n\t\t\titemHeight=\"${constants.SIDEMENU_WIDTH}\"\n\t\t\t.itemRenderer=\"${this._itemRenderer}\"\n\t\t\t@select=\"${() => this.updateActiveIndex()}\">\n\t\t</og-list>\n\n\t\t${this.renderToggle()}\n\n\t\t<og-tooltip ${ref(this.tooltipRef)} style=\"max-width: 300px; display: none\">\n\t\t\t<div style=\"padding: 5px\" slot=\"body\"></div>\n\t\t</og-tooltip>\n\t`;\n\n}\n"]}
package/dist/ui/top.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare class BucketTop extends OmegaComponent implements Layout {
5
5
  get bucket(): Bucket;
6
6
  items: NodeListOf<HTMLDivElement>;
7
7
  leftItem: HTMLDivElement;
8
+ logoItem: HTMLDivElement;
8
9
  leftItemWidth: number;
9
10
  updated(): Promise<void>;
10
11
  firstUpdated(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"top.d.ts","sourceRoot":"","sources":["../../src/ui/top.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAO,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBACa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAE9D,MAAM,CAAC,MAAM,4BAAW;IAExB,IAAI,MAAM,IAAoC,MAAM,CAAE;IAGtD,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAGlC,QAAQ,EAAE,cAAc,CAAC;IAEzB,aAAa,SAAO;IAEd,OAAO;IAgBb,YAAY;IAIZ,MAAM,6CAOJ;IAEF,MAAM;CAQN"}
1
+ {"version":3,"file":"top.d.ts","sourceRoot":"","sources":["../../src/ui/top.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAO,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBACa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAE9D,MAAM,CAAC,MAAM,4BAAW;IAExB,IAAI,MAAM,IAAoC,MAAM,CAAE;IAGtD,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAGlC,QAAQ,EAAE,cAAc,CAAC;IAGzB,QAAQ,EAAE,cAAc,CAAC;IAEzB,aAAa,SAAO;IAEd,OAAO;IAgBb,YAAY;IAIZ,MAAM,6CAOJ;IAEF,MAAM;CAeN"}
package/dist/ui/top.js CHANGED
@@ -41,6 +41,12 @@ let BucketTop = class BucketTop extends OmegaComponent {
41
41
  this.layout();
42
42
  }
43
43
  layout() {
44
+ // keep the logo cell as wide as the sidemenu, so the left item stays aligned with the sidebar
45
+ const sidemenu = this.bucket?.sidemenu;
46
+ if (this.logoItem) {
47
+ const sync = sidemenu && this.bucket.options?.sidebarPosition == 'left';
48
+ this.logoItem.style.minWidth = sync ? dom.px(sidemenu.offsetWidth) : '';
49
+ }
44
50
  if (this.bucket?.compact)
45
51
  return;
46
52
  if (!this.bucket?.container?.containers[0])
@@ -57,6 +63,9 @@ __decorate([
57
63
  __decorate([
58
64
  query('.left')
59
65
  ], BucketTop.prototype, "leftItem", void 0);
66
+ __decorate([
67
+ query('.logo')
68
+ ], BucketTop.prototype, "logoItem", void 0);
60
69
  BucketTop = __decorate([
61
70
  customElement('og-bucket-top')
62
71
  ], BucketTop);
@@ -1 +1 @@
1
- {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/ui/top.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,GAAG,EAAU,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,cAAc;IAAtC;;QAYN,kBAAa,GAAG,GAAG,CAAC;QAsBpB,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;IAEhB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;;GAEjC;;;EAGD,CAAC;IAUH,CAAC;IA/CA,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAyB,CAAA,CAAC,CAAC;IAUtD,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5B,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAWD,MAAM;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;;AA/CM,gBAAM,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW;AAKxB;IADC,QAAQ,CAAC,OAAO,CAAC;wCACgB;AAGlC;IADC,KAAK,CAAC,OAAO,CAAC;2CACU;AAVb,SAAS;IADrB,aAAa,CAAC,eAAe,CAAC;GAClB,SAAS,CAmDrB","sourcesContent":["import { html } from 'lit';\nimport { customElement, query, queryAll } from 'lit/decorators.js';\nimport style from './top.style';\nimport { Bucket } from './bucket';\nimport { dom, Layout, OmegaComponent } from '@omegagrid/core';\n\n@customElement('og-bucket-top')\nexport class BucketTop extends OmegaComponent implements Layout {\n\n\tstatic styles = [style];\n\n\tget bucket() { return this.parentComponent as Bucket }\n\n\t@queryAll('.item')\n\titems: NodeListOf<HTMLDivElement>;\n\n\t@query('.left')\n\tleftItem: HTMLDivElement;\n\n\tleftItemWidth = 250;\n\n\tasync updated() {\n\t\tif (!this.bucket) return;\n\n\t\tlet visible = false;\n\t\tfor (const item of this.items) {\n\t\t\tconst component = await this.bucket.components.get(item.dataset.component);\n\t\t\tdom.empty(item);\n\t\t\tif (component) {\n\t\t\t\titem.appendChild(component);\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!visible) dom.hideElement(this);\n\t}\n\n\tfirstUpdated() {\n\t\tthis.layout();\n\t}\n\n\trender = () => html`\n\t\t<div class=\"item logo\" data-component=\"bucket-logo\"></div>\n\t\t${this.bucket?.compact ? '' : html`\n\t\t\t<div class=\"item left\" data-component=\"bucket-topLeft\"></div>\n\t\t`}\n\t\t<div class=\"item center\" data-component=\"bucket-topCenter\"></div>\n\t\t<div class=\"item right\" data-component=\"bucket-topRight\"></div>\n\t`;\n\n\tlayout() {\n\t\tif (this.bucket?.compact) return;\n\t\tif (!this.bucket?.container?.containers[0]) return;\n\t\tif (!this.bucket.container.items[0].collapsed && this.leftItem) {\n\t\t\tdom.setMinSize(this.leftItem, {w: this.bucket.container.containers[0].offsetWidth});\n\t\t}\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/ui/top.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,GAAG,EAAU,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,cAAc;IAAtC;;QAeN,kBAAa,GAAG,GAAG,CAAC;QAsBpB,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;IAEhB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;;GAEjC;;;EAGD,CAAC;IAiBH,CAAC;IAzDA,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,eAAyB,CAAA,CAAC,CAAC;IAatD,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5B,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAWD,MAAM;QACL,8FAA8F;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,MAAM,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;;AAzDM,gBAAM,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW;AAKxB;IADC,QAAQ,CAAC,OAAO,CAAC;wCACgB;AAGlC;IADC,KAAK,CAAC,OAAO,CAAC;2CACU;AAGzB;IADC,KAAK,CAAC,OAAO,CAAC;2CACU;AAbb,SAAS;IADrB,aAAa,CAAC,eAAe,CAAC;GAClB,SAAS,CA6DrB","sourcesContent":["import { html } from 'lit';\nimport { customElement, query, queryAll } from 'lit/decorators.js';\nimport style from './top.style';\nimport { Bucket } from './bucket';\nimport { dom, Layout, OmegaComponent } from '@omegagrid/core';\n\n@customElement('og-bucket-top')\nexport class BucketTop extends OmegaComponent implements Layout {\n\n\tstatic styles = [style];\n\n\tget bucket() { return this.parentComponent as Bucket }\n\n\t@queryAll('.item')\n\titems: NodeListOf<HTMLDivElement>;\n\n\t@query('.left')\n\tleftItem: HTMLDivElement;\n\n\t@query('.logo')\n\tlogoItem: HTMLDivElement;\n\n\tleftItemWidth = 250;\n\n\tasync updated() {\n\t\tif (!this.bucket) return;\n\n\t\tlet visible = false;\n\t\tfor (const item of this.items) {\n\t\t\tconst component = await this.bucket.components.get(item.dataset.component);\n\t\t\tdom.empty(item);\n\t\t\tif (component) {\n\t\t\t\titem.appendChild(component);\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!visible) dom.hideElement(this);\n\t}\n\n\tfirstUpdated() {\n\t\tthis.layout();\n\t}\n\n\trender = () => html`\n\t\t<div class=\"item logo\" data-component=\"bucket-logo\"></div>\n\t\t${this.bucket?.compact ? '' : html`\n\t\t\t<div class=\"item left\" data-component=\"bucket-topLeft\"></div>\n\t\t`}\n\t\t<div class=\"item center\" data-component=\"bucket-topCenter\"></div>\n\t\t<div class=\"item right\" data-component=\"bucket-topRight\"></div>\n\t`;\n\n\tlayout() {\n\t\t// keep the logo cell as wide as the sidemenu, so the left item stays aligned with the sidebar\n\t\tconst sidemenu = this.bucket?.sidemenu;\n\t\tif (this.logoItem) {\n\t\t\tconst sync = sidemenu && this.bucket.options?.sidebarPosition == 'left';\n\t\t\tthis.logoItem.style.minWidth = sync ? dom.px(sidemenu.offsetWidth) : '';\n\t\t}\n\n\t\tif (this.bucket?.compact) return;\n\t\tif (!this.bucket?.container?.containers[0]) return;\n\t\tif (!this.bucket.container.items[0].collapsed && this.leftItem) {\n\t\t\tdom.setMinSize(this.leftItem, {w: this.bucket.container.containers[0].offsetWidth});\n\t\t}\n\t}\n\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/bucket",
3
- "version": "0.10.86",
3
+ "version": "0.10.88",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Application layout component",
6
6
  "main": "./dist/index.js",
@@ -28,11 +28,11 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@fortawesome/fontawesome-svg-core": "^7.0.1",
31
- "@omegagrid/commands": "^0.10.86",
32
- "@omegagrid/core": "^0.10.86",
33
- "@omegagrid/dialog": "^0.10.86",
34
- "@omegagrid/localize": "^0.10.86",
35
- "@omegagrid/tabs": "^0.10.86",
31
+ "@omegagrid/commands": "^0.10.88",
32
+ "@omegagrid/core": "^0.10.88",
33
+ "@omegagrid/dialog": "^0.10.88",
34
+ "@omegagrid/localize": "^0.10.88",
35
+ "@omegagrid/tabs": "^0.10.88",
36
36
  "lit": "^3.1.1",
37
37
  "ts-debounce": "^4.0.0"
38
38
  },