@plurid/plurid-ui-components-react 0.0.0-21 → 0.0.0-22

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.
@@ -2585,6 +2585,306 @@ const universal = {
2585
2585
  varia: varia
2586
2586
  };
2587
2587
 
2588
+ const StyledDashboardsRenderer = styled__default.default.div`
2589
+ display: grid;
2590
+ grid-template-columns: ${({fullRenderArea: fullRenderArea, compactSelectors: compactSelectors}) => {
2591
+ if (fullRenderArea) {
2592
+ return "1fr";
2593
+ }
2594
+ return compactSelectors ? "60px auto" : "1fr 4fr";
2595
+ }};
2596
+ min-height: 700px;
2597
+ `;
2598
+
2599
+ const StyledNoDashboardRender = styled__default.default.div`
2600
+ display: grid;
2601
+ place-content: center;
2602
+ `;
2603
+
2604
+ const StyledSidebar = styled__default.default.div`
2605
+ `;
2606
+
2607
+ const StyledSelectors = styled__default.default.div`
2608
+ height: 100%;
2609
+ display: grid;
2610
+ justify-content: space-between;
2611
+ grid-template-columns: 1fr;
2612
+ grid-template-rows: ${({helpItemsCount: helpItemsCount}) => `120px auto ${45 * helpItemsCount}px`};
2613
+
2614
+ background-color: ${({theme: theme}) => theme.backgroundColorTertiary};
2615
+ box-shadow: inset -3px 0px 3px 0px ${({theme: theme}) => theme.boxShadowUmbraColor};
2616
+
2617
+ ul {
2618
+ list-style: none;
2619
+ padding: 0;
2620
+ margin: 0;
2621
+ }
2622
+
2623
+ li {
2624
+ cursor: pointer;
2625
+ padding: 0.7rem 1.4rem;
2626
+ user-select: none;
2627
+ }
2628
+ `;
2629
+
2630
+ const StyledBranding = styled__default.default.div`
2631
+ display: grid;
2632
+ place-content: center;
2633
+ grid-gap: 0.5rem;
2634
+ height: 100%;
2635
+ font-size: 0.9rem;
2636
+ text-align: center;
2637
+ user-select: none;
2638
+
2639
+ img {
2640
+ cursor: pointer;
2641
+ }
2642
+ `;
2643
+
2644
+ const StyledHelp = styled__default.default.div`
2645
+ li {
2646
+ font-size: 0.9rem;
2647
+ }
2648
+ `;
2649
+
2650
+ const StyledHelpItem = styled__default.default.li`
2651
+ display: grid;
2652
+ align-items: center;
2653
+ grid-gap: 0.5rem;
2654
+ grid-template-columns: ${({compactSelectors: compactSelectors}) => compactSelectors ? "16px" : "16px auto 16px"};
2655
+ min-height: 45px;
2656
+ `;
2657
+
2658
+ const StyledSelector = styled__default.default.li`
2659
+ background-color: ${({theme: theme, selected: selected}) => selected ? theme.backgroundColorPrimary : "initial"};
2660
+
2661
+ :hover {
2662
+ background-color: ${({theme: theme}) => theme.backgroundColorPrimary};
2663
+ }
2664
+
2665
+ display: grid;
2666
+ grid-template-columns: ${({compactSelectors: compactSelectors}) => compactSelectors ? "16px" : "16px auto"};
2667
+ grid-gap: 0.7rem;
2668
+ min-height: 45px;
2669
+ align-items: center;
2670
+ position: relative;
2671
+ `;
2672
+
2673
+ const StyledSelectorRelativeLabel = styled__default.default.div`
2674
+ position: absolute;
2675
+ left: 50px;
2676
+ z-index: 9999;
2677
+ min-height: 45px;
2678
+ display: grid;
2679
+ align-items: center;
2680
+ padding-right: 0.5rem;
2681
+ background-color: ${({theme: theme}) => theme.backgroundColorPrimaryAlpha};
2682
+ `;
2683
+
2684
+ const Selector = properties => {
2685
+ const {data: data, selectedDashboard: selectedDashboard, compactSelectors: compactSelectors, theme: theme, setSelectedDashboard: setSelectedDashboard, rendererID: rendererID} = properties;
2686
+ const {id: id, icon: icon, label: label} = data;
2687
+ const Icon = icon;
2688
+ const selected = id === selectedDashboard;
2689
+ const [mouseOver, setMouseOver] = React.useState(false);
2690
+ React.useEffect((() => {
2691
+ let mounted = true;
2692
+ if (mouseOver) {
2693
+ setTimeout((() => {
2694
+ if (!mounted) {
2695
+ return;
2696
+ }
2697
+ setMouseOver(false);
2698
+ }), 2e3);
2699
+ }
2700
+ return () => {
2701
+ mounted = false;
2702
+ };
2703
+ }), [ mouseOver ]);
2704
+ const selectorIcon = !icon ? React__default.default.createElement(pluridIconsReact.PluridIconSpace, {
2705
+ theme: theme
2706
+ }) : typeof icon === "function" ? React__default.default.createElement(Icon, {
2707
+ theme: theme
2708
+ }) : React__default.default.createElement(React__default.default.Fragment, null, icon);
2709
+ return React__default.default.createElement(StyledSelector, {
2710
+ key: (rendererID || "") + id,
2711
+ onClick: () => setSelectedDashboard(id),
2712
+ onMouseEnter: () => setMouseOver(true),
2713
+ onMouseLeave: () => setMouseOver(false),
2714
+ theme: theme,
2715
+ selected: selected,
2716
+ compactSelectors: compactSelectors
2717
+ }, selectorIcon, !compactSelectors && React__default.default.createElement("div", null, label), compactSelectors && mouseOver && React__default.default.createElement(StyledSelectorRelativeLabel, {
2718
+ theme: theme
2719
+ }, label));
2720
+ };
2721
+
2722
+ const Sidebar = properties => {
2723
+ const {dashboards: dashboards, theme: theme, compactSelectors: compactSelectors, setCompactSelectors: setCompactSelectors, selectedDashboard: selectedDashboard, setSelectedDashboard: setSelectedDashboard, identonym: identonym, usageType: usageType, openManual: openManual, logout: logout, rendererID: rendererID, brandingName: brandingName, brandingNameStyle: brandingNameStyle, brandingLogo: brandingLogo} = properties;
2724
+ const openManualCount = openManual ? 1 : 0;
2725
+ const usageTypeCount = usageType === "PRIVATE_USAGE" ? 1 : 0;
2726
+ const helpItemsCount = openManualCount + usageTypeCount;
2727
+ const [mouseOverSelectors, setMouseOverSelectors] = React.useState(false);
2728
+ const branding = React__default.default.createElement(StyledBranding, {
2729
+ compactSelectors: compactSelectors
2730
+ }, !compactSelectors && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", null, brandingLogo && React__default.default.createElement("img", {
2731
+ src: brandingLogo,
2732
+ alt: "icon",
2733
+ height: 40,
2734
+ onClick: () => {
2735
+ setCompactSelectors(true);
2736
+ setMouseOverSelectors(false);
2737
+ }
2738
+ })), brandingName && React__default.default.createElement("div", {
2739
+ style: brandingNameStyle
2740
+ }, brandingName)), compactSelectors && mouseOverSelectors && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement(pluridIconsReact.PluridIconArrowRight, {
2741
+ atClick: () => setCompactSelectors(false)
2742
+ }), React__default.default.createElement("div", null, "ㅤ")));
2743
+ const selectors = React__default.default.createElement("ul", null, dashboards.map((dashboard => React__default.default.createElement(Selector, {
2744
+ key: dashboard.id,
2745
+ data: dashboard,
2746
+ compactSelectors: compactSelectors,
2747
+ theme: theme,
2748
+ selectedDashboard: selectedDashboard,
2749
+ setSelectedDashboard: setSelectedDashboard,
2750
+ rendererID: rendererID
2751
+ }))));
2752
+ const help = React__default.default.createElement(StyledHelp, null, mouseOverSelectors && React__default.default.createElement("ul", null, openManual && React__default.default.createElement(StyledHelpItem, {
2753
+ onClick: () => openManual(),
2754
+ compactSelectors: compactSelectors
2755
+ }, React__default.default.createElement(pluridIconsReact.PluridIconDocuments, null), !compactSelectors && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", null, "manual"), React__default.default.createElement(pluridIconsReact.PluridIconExternalLink, null))), usageType === "PRIVATE_USAGE" && logout && React__default.default.createElement(StyledHelpItem, {
2756
+ onClick: () => logout(),
2757
+ compactSelectors: compactSelectors
2758
+ }, React__default.default.createElement(pluridIconsReact.PluridIconExit, null), !compactSelectors && React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", null, "logout (", identonym, ")"), React__default.default.createElement("div", null)))));
2759
+ return React__default.default.createElement(StyledSidebar, {
2760
+ theme: theme
2761
+ }, React__default.default.createElement(StyledSelectors, {
2762
+ onMouseEnter: () => setMouseOverSelectors(true),
2763
+ onMouseLeave: () => setMouseOverSelectors(false),
2764
+ theme: theme,
2765
+ compactSelectors: compactSelectors,
2766
+ helpItemsCount: helpItemsCount
2767
+ }, branding, selectors, help));
2768
+ };
2769
+
2770
+ const StyledRenderArea = styled__default.default.div`
2771
+ `;
2772
+
2773
+ const RenderArea = properties => {
2774
+ const {dashboards: dashboards, selectedDashboard: selectedDashboard, renderView: renderView, fullRenderArea: fullRenderArea, theme: theme, setSelectedDashboard: setSelectedDashboard, setRenderView: setRenderView, setFullRenderArea: setFullRenderArea} = properties;
2775
+ const dashboard = dashboards.find((dashboard => dashboard.id === selectedDashboard));
2776
+ if (!dashboard) {
2777
+ return React__default.default.createElement(React__default.default.Fragment, null);
2778
+ }
2779
+ const resolveView = () => {
2780
+ const dashboard = dashboards.find((dashboard => dashboard.id === selectedDashboard));
2781
+ if (!dashboard) {
2782
+ return;
2783
+ }
2784
+ const renderViewInDashboard = dashboard.renderers[renderView];
2785
+ if (renderViewInDashboard) {
2786
+ return renderView;
2787
+ }
2788
+ if (dashboard.defaultRender) {
2789
+ return dashboard.defaultRender;
2790
+ }
2791
+ return Object.keys(dashboard.renderers)[0];
2792
+ };
2793
+ const renderID = resolveView();
2794
+ React.useEffect((() => {
2795
+ if (renderID && renderID !== renderView) {
2796
+ setRenderView(renderID);
2797
+ }
2798
+ }), [ renderID ]);
2799
+ if (!renderID) {
2800
+ return React__default.default.createElement(React__default.default.Fragment, null);
2801
+ }
2802
+ const DashboardRender = dashboard.renderers[renderID];
2803
+ if (!DashboardRender) {
2804
+ return React__default.default.createElement(React__default.default.Fragment, null);
2805
+ }
2806
+ return React__default.default.createElement(StyledRenderArea, {
2807
+ theme: theme
2808
+ }, React__default.default.createElement(DashboardRender, {
2809
+ theme: theme,
2810
+ selectedDashboard: selectedDashboard,
2811
+ setSelectedDashboard: setSelectedDashboard,
2812
+ renderView: renderView,
2813
+ setRenderView: setRenderView,
2814
+ fullRenderArea: fullRenderArea,
2815
+ setFullRenderArea: setFullRenderArea
2816
+ }));
2817
+ };
2818
+
2819
+ const DashboardsRenderer$1 = properties => {
2820
+ const {dashboards: dashboards, theme: theme, rendererID: rendererID, identonym: identonym, usageType: usageType, brandingName: brandingName, brandingNameStyle: brandingNameStyle, brandingLogo: brandingLogo, activeDashboard: activeDashboard, activeRender: activeRender, compactSelectors: compactSelectorsProperty, fullRenderArea: fullRenderAreaProperty, noDashboardRender: noDashboardRender, atDashboardChange: atDashboardChange, atUIChange: atUIChange, openManual: openManual, logout: logout} = properties;
2821
+ const [compactSelectors, setCompactSelectors] = React.useState(compactSelectorsProperty !== null && compactSelectorsProperty !== void 0 ? compactSelectorsProperty : false);
2822
+ const [fullRenderArea, setFullRenderArea] = React.useState(fullRenderAreaProperty !== null && fullRenderAreaProperty !== void 0 ? fullRenderAreaProperty : false);
2823
+ const [selectedDashboard, setSelectedDashboard] = React.useState(activeDashboard || "");
2824
+ const [renderView, setRenderView] = React.useState(activeRender || "");
2825
+ React.useEffect((() => {
2826
+ if (!activeDashboard) {
2827
+ return;
2828
+ }
2829
+ if (selectedDashboard === activeDashboard) {
2830
+ return;
2831
+ }
2832
+ setSelectedDashboard(activeDashboard);
2833
+ }), [ activeDashboard ]);
2834
+ React.useEffect((() => {
2835
+ if (atDashboardChange) {
2836
+ atDashboardChange(renderView);
2837
+ }
2838
+ }), [ renderView ]);
2839
+ React.useEffect((() => {
2840
+ if (typeof compactSelectorsProperty === "boolean") {
2841
+ setCompactSelectors(compactSelectorsProperty);
2842
+ }
2843
+ if (typeof fullRenderAreaProperty === "boolean") {
2844
+ setFullRenderArea(fullRenderAreaProperty);
2845
+ }
2846
+ }), [ compactSelectorsProperty, fullRenderAreaProperty ]);
2847
+ React.useEffect((() => {
2848
+ if (atUIChange) {
2849
+ atUIChange("compactSelectors", compactSelectors);
2850
+ }
2851
+ }), [ compactSelectors ]);
2852
+ React.useEffect((() => {
2853
+ if (atUIChange) {
2854
+ atUIChange("fullRenderArea", fullRenderArea);
2855
+ }
2856
+ }), [ fullRenderArea ]);
2857
+ return React__default.default.createElement(StyledDashboardsRenderer, {
2858
+ theme: theme,
2859
+ compactSelectors: compactSelectors,
2860
+ fullRenderArea: fullRenderArea
2861
+ }, !fullRenderArea && React__default.default.createElement(Sidebar, {
2862
+ dashboards: dashboards,
2863
+ theme: theme,
2864
+ compactSelectors: compactSelectors,
2865
+ setCompactSelectors: setCompactSelectors,
2866
+ selectedDashboard: selectedDashboard,
2867
+ setSelectedDashboard: setSelectedDashboard,
2868
+ identonym: identonym,
2869
+ usageType: usageType,
2870
+ openManual: openManual,
2871
+ logout: logout,
2872
+ rendererID: rendererID,
2873
+ brandingName: brandingName,
2874
+ brandingNameStyle: brandingNameStyle,
2875
+ brandingLogo: brandingLogo
2876
+ }), selectedDashboard && React__default.default.createElement(RenderArea, {
2877
+ dashboards: dashboards,
2878
+ selectedDashboard: selectedDashboard,
2879
+ setSelectedDashboard: setSelectedDashboard,
2880
+ renderView: renderView,
2881
+ setRenderView: setRenderView,
2882
+ fullRenderArea: fullRenderArea,
2883
+ setFullRenderArea: setFullRenderArea,
2884
+ theme: theme
2885
+ }), !selectedDashboard && noDashboardRender && React__default.default.createElement(StyledNoDashboardRender, null, noDashboardRender));
2886
+ };
2887
+
2588
2888
  const StyledEntityView = styled__default.default.div`
2589
2889
  position: relative;
2590
2890
  height: 100%;
@@ -2832,6 +3132,7 @@ const EntityView$1 = React.forwardRef(((properties, reference) => {
2832
3132
  }));
2833
3133
 
2834
3134
  const containers = {
3135
+ DashboardsRenderer: DashboardsRenderer$1,
2835
3136
  EntityView: EntityView$1
2836
3137
  };
2837
3138
 
@@ -3980,10 +4281,12 @@ var index = Object.assign(Object.assign(Object.assign(Object.assign(Object.assig
3980
4281
 
3981
4282
  const {buttons: {LinkButton: LinkButton, PureButton: PureButton, RefreshButton: RefreshButton}, form: {FormLeftRight: FormLeftRight, FormObliterate: FormObliterate, Formbutton: Formbutton, Formitem: Formitem, Formline: Formline}, general: {GlobalStyles: GlobalStyles}, inputs: {Dropdown: Dropdown, EntityPill: EntityPill, EntityPillGroup: EntityPillGroup, InputBox: InputBox, InputDescriptor: InputDescriptor, InputLine: InputLine, InputSwitch: InputSwitch, Itemsline: Itemsline, Select: Select, Slider: Slider, Switch: Switch, Textline: Textline}, markers: {HR: HR, ProgressCircle: ProgressCircle, Spinner: Spinner, Tooltip: Tooltip}, typography: {Heading: Heading, Paragraph: Paragraph}, varia: {CopyableLine: CopyableLine, NewPageLink: NewPageLink, ScrollableLine: ScrollableLine, TextItem: TextItem}} = universal;
3982
4283
 
3983
- const {containers: {EntityView: EntityView}, head: {Head: Head}, notifications: {Notification: Notification, Notifications: Notifications}, sitting: {SittingTray: SittingTray}, toolbars: {HorizontalToolbarButton: HorizontalToolbarButton, ToolbarControls: ToolbarControls, ToolbarGeneral: ToolbarGeneral, ToolbarSpecific: ToolbarSpecific, VerticalToolbarButton: VerticalToolbarButton}} = pluridal;
4284
+ const {containers: {DashboardsRenderer: DashboardsRenderer, EntityView: EntityView}, head: {Head: Head}, notifications: {Notification: Notification, Notifications: Notifications}, sitting: {SittingTray: SittingTray}, toolbars: {HorizontalToolbarButton: HorizontalToolbarButton, ToolbarControls: ToolbarControls, ToolbarGeneral: ToolbarGeneral, ToolbarSpecific: ToolbarSpecific, VerticalToolbarButton: VerticalToolbarButton}} = pluridal;
3984
4285
 
3985
4286
  exports.CopyableLine = CopyableLine;
3986
4287
 
4288
+ exports.DashboardsRenderer = DashboardsRenderer;
4289
+
3987
4290
  exports.Dropdown = Dropdown;
3988
4291
 
3989
4292
  exports.EntityPill = EntityPill;