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

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