datastake-daf 0.6.97 → 0.6.98

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.
Files changed (60) hide show
  1. package/dist/components/index.js +130 -20
  2. package/package.json +107 -107
  3. package/rollup.config.js +41 -83
  4. package/src/@daf/core/components/Dashboard/DashboardLayout/DashboardLayout.stories.jsx +2 -1
  5. package/src/@daf/core/components/Dashboard/DashboardLayout/index.jsx +2 -1
  6. package/src/@daf/core/components/Footer/Footer.stories.jsx +152 -0
  7. package/src/@daf/core/components/Footer/hook.js +84 -0
  8. package/src/@daf/core/components/Footer/index.jsx +101 -0
  9. package/src/@daf/core/components/Footer/style.js +176 -0
  10. package/src/index.js +3 -0
  11. package/src/styles/_index.scss +1 -1
  12. package/src/styles/datastake.scss +4454 -1
  13. package/.vscode/settings.json +0 -13
  14. package/dist/style/datastake/_index.css +0 -5
  15. package/dist/style/datastake/datastake.css +0 -5081
  16. package/dist/style/datastake/fonts/Outfit-Black.ttf +0 -0
  17. package/dist/style/datastake/fonts/Outfit-Bold.ttf +0 -0
  18. package/dist/style/datastake/fonts/Outfit-ExtraBold.ttf +0 -0
  19. package/dist/style/datastake/fonts/Outfit-ExtraLight.ttf +0 -0
  20. package/dist/style/datastake/fonts/Outfit-Light.ttf +0 -0
  21. package/dist/style/datastake/fonts/Outfit-Medium.ttf +0 -0
  22. package/dist/style/datastake/fonts/Outfit-Regular.ttf +0 -0
  23. package/dist/style/datastake/fonts/Outfit-SemiBold.ttf +0 -0
  24. package/dist/style/datastake/fonts/Outfit-Thin.ttf +0 -0
  25. package/dist/style/datastake/fonts/outfit.css +0 -62
  26. package/dist/style/datastake/fonts/sf-ui-display-black-58646a6b80d5a.woff +0 -0
  27. package/dist/style/datastake/fonts/sf-ui-display-bold-58646a511e3d9.woff +0 -0
  28. package/dist/style/datastake/fonts/sf-ui-display-heavy-586470160b9e5.woff +0 -0
  29. package/dist/style/datastake/fonts/sf-ui-display-light-58646b33e0551.woff +0 -0
  30. package/dist/style/datastake/fonts/sf-ui-display-medium-58646be638f96.woff +0 -0
  31. package/dist/style/datastake/fonts/sf-ui-display-semibold-58646eddcae92.woff +0 -0
  32. package/dist/style/datastake/fonts/sf-ui-display-thin-58646e9b26e8b.woff +0 -0
  33. package/dist/style/datastake/fonts/sf-ui-display-ultralight-58646b19bf205.woff +0 -0
  34. package/dist/style/datastake/fonts/sfDisplay.css +0 -59
  35. package/dist/style/datastake/leaflet.css +0 -671
  36. package/dist/style/datastake/leaflet.markercluster.css +0 -60
  37. package/dist/style/style.css +0 -1
  38. package/src/styles/datastake/_index.css +0 -5
  39. package/src/styles/datastake/datastake.css +0 -5081
  40. package/src/styles/datastake/fonts/Outfit-Black.ttf +0 -0
  41. package/src/styles/datastake/fonts/Outfit-Bold.ttf +0 -0
  42. package/src/styles/datastake/fonts/Outfit-ExtraBold.ttf +0 -0
  43. package/src/styles/datastake/fonts/Outfit-ExtraLight.ttf +0 -0
  44. package/src/styles/datastake/fonts/Outfit-Light.ttf +0 -0
  45. package/src/styles/datastake/fonts/Outfit-Medium.ttf +0 -0
  46. package/src/styles/datastake/fonts/Outfit-Regular.ttf +0 -0
  47. package/src/styles/datastake/fonts/Outfit-SemiBold.ttf +0 -0
  48. package/src/styles/datastake/fonts/Outfit-Thin.ttf +0 -0
  49. package/src/styles/datastake/fonts/outfit.css +0 -62
  50. package/src/styles/datastake/fonts/sf-ui-display-black-58646a6b80d5a.woff +0 -0
  51. package/src/styles/datastake/fonts/sf-ui-display-bold-58646a511e3d9.woff +0 -0
  52. package/src/styles/datastake/fonts/sf-ui-display-heavy-586470160b9e5.woff +0 -0
  53. package/src/styles/datastake/fonts/sf-ui-display-light-58646b33e0551.woff +0 -0
  54. package/src/styles/datastake/fonts/sf-ui-display-medium-58646be638f96.woff +0 -0
  55. package/src/styles/datastake/fonts/sf-ui-display-semibold-58646eddcae92.woff +0 -0
  56. package/src/styles/datastake/fonts/sf-ui-display-thin-58646e9b26e8b.woff +0 -0
  57. package/src/styles/datastake/fonts/sf-ui-display-ultralight-58646b19bf205.woff +0 -0
  58. package/src/styles/datastake/fonts/sfDisplay.css +0 -59
  59. package/src/styles/datastake/leaflet.css +0 -671
  60. package/src/styles/datastake/leaflet.markercluster.css +0 -60
@@ -3065,7 +3065,7 @@ const config$3 = {
3065
3065
  Integration: config$4
3066
3066
  };
3067
3067
 
3068
- const _excluded$n = ["width", "height", "size", "name", "fill"];
3068
+ const _excluded$o = ["width", "height", "size", "name", "fill"];
3069
3069
  const CustomIcon = _ref => {
3070
3070
  let {
3071
3071
  width = 14,
@@ -3074,7 +3074,7 @@ const CustomIcon = _ref => {
3074
3074
  name = "",
3075
3075
  fill = "none"
3076
3076
  } = _ref,
3077
- props = _objectWithoutProperties(_ref, _excluded$n);
3077
+ props = _objectWithoutProperties(_ref, _excluded$o);
3078
3078
  const conf = config$3[name];
3079
3079
  if (conf) {
3080
3080
  return /*#__PURE__*/jsxRuntime.jsx("svg", _objectSpread2(_objectSpread2({}, props), {}, {
@@ -9276,7 +9276,7 @@ createCommonjsModule(function (module, exports) {
9276
9276
  !function(e,n){module.exports=n();}(commonjsGlobal,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return "["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
9277
9277
  });
9278
9278
 
9279
- const _excluded$m = ["view", "module", "scope", "form", "meta"];
9279
+ const _excluded$n = ["view", "module", "scope", "form", "meta"];
9280
9280
  dayjs__default["default"].extend(customParseFormat);
9281
9281
  dayjs__default["default"].extend(utc);
9282
9282
  dayjs__default["default"].extend(utc);
@@ -9650,7 +9650,7 @@ const filterCreateData = data => {
9650
9650
  form,
9651
9651
  meta
9652
9652
  } = data,
9653
- rest = _objectWithoutProperties(data, _excluded$m);
9653
+ rest = _objectWithoutProperties(data, _excluded$n);
9654
9654
  const _meta = isObjectEmpty(meta) ? undefined : meta;
9655
9655
  return _objectSpread2(_objectSpread2({}, rest), {}, {
9656
9656
  meta: _meta
@@ -10035,7 +10035,7 @@ SelectFilters.propTypes = {
10035
10035
  apiUrl: PropTypes__default["default"].string
10036
10036
  };
10037
10037
 
10038
- const _excluded$l = ["columns", "data", "defaultFilters", "style", "pagination", "loading", "onChange", "onFilterChange", "selectOptions", "filtersConfig", "rowSelection", "setShowFilters", "rowKey", "showFilters", "hideOnLoading", "sourcesKey", "className", "projects", "t", "selectedProject", "sourceId", "projectSources", "language", "scrollX", "apiUrl", "app", "doEmptyRows"];
10038
+ const _excluded$m = ["columns", "data", "defaultFilters", "style", "pagination", "loading", "onChange", "onFilterChange", "selectOptions", "filtersConfig", "rowSelection", "setShowFilters", "rowKey", "showFilters", "hideOnLoading", "sourcesKey", "className", "projects", "t", "selectedProject", "sourceId", "projectSources", "language", "scrollX", "apiUrl", "app", "doEmptyRows"];
10039
10039
  function DAFTable(_ref) {
10040
10040
  let {
10041
10041
  columns = [],
@@ -10066,7 +10066,7 @@ function DAFTable(_ref) {
10066
10066
  app,
10067
10067
  doEmptyRows
10068
10068
  } = _ref,
10069
- rest = _objectWithoutProperties(_ref, _excluded$l);
10069
+ rest = _objectWithoutProperties(_ref, _excluded$m);
10070
10070
  const [source, setSource] = React.useState([]);
10071
10071
  const projectData = (projects || []).find(p => p.id === selectedProject);
10072
10072
  const [filtersInit, setFiltersInit] = React.useState(!loading);
@@ -10788,7 +10788,7 @@ Pagination.propTypes = {
10788
10788
  isMobile: PropTypes__default["default"].bool
10789
10789
  };
10790
10790
 
10791
- const _excluded$k = ["size", "maxHeight", "dataSource", "columns", "pagination"];
10791
+ const _excluded$l = ["size", "maxHeight", "dataSource", "columns", "pagination"];
10792
10792
  function StickyTable(_ref) {
10793
10793
  let {
10794
10794
  size = null,
@@ -10797,7 +10797,7 @@ function StickyTable(_ref) {
10797
10797
  columns = {},
10798
10798
  pagination = false
10799
10799
  } = _ref,
10800
- props = _objectWithoutProperties(_ref, _excluded$k);
10800
+ props = _objectWithoutProperties(_ref, _excluded$l);
10801
10801
  return /*#__PURE__*/jsxRuntime.jsx("div", {
10802
10802
  className: "daf-sticky-table",
10803
10803
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Table, _objectSpread2(_objectSpread2({}, props), {}, {
@@ -11489,12 +11489,12 @@ const Style$H = dt.div`
11489
11489
  }
11490
11490
  `;
11491
11491
 
11492
- const _excluded$j = ["children"];
11492
+ const _excluded$k = ["children"];
11493
11493
  const BorderedButton = _ref => {
11494
11494
  let {
11495
11495
  children
11496
11496
  } = _ref,
11497
- props = _objectWithoutProperties(_ref, _excluded$j);
11497
+ props = _objectWithoutProperties(_ref, _excluded$k);
11498
11498
  return /*#__PURE__*/jsxRuntime.jsx(Style$H, {
11499
11499
  className: "d-btn-cont",
11500
11500
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Button, _objectSpread2(_objectSpread2({}, props), {}, {
@@ -11503,7 +11503,7 @@ const BorderedButton = _ref => {
11503
11503
  });
11504
11504
  };
11505
11505
 
11506
- var _templateObject$a;
11506
+ var _templateObject$b;
11507
11507
  const variantConfig = {
11508
11508
  default: {
11509
11509
  className: "default-badge",
@@ -11621,7 +11621,7 @@ function Badge(_ref) {
11621
11621
  })
11622
11622
  });
11623
11623
  }
11624
- const Style$G = dt.div(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 4px;\n\tpadding: 4px;\n\tmax-width: 100%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t> svg {\n\t\tflex-shrink: 0;\n\t}\n\n\t> span {\n\t\tall: unset;\n\t\tmargin-left: 4px;\n\t\tfont-weight: 600;\n\t\tfont-size: 12px;\n\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t}\n"])));
11624
+ const Style$G = dt.div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 4px;\n\tpadding: 4px;\n\tmax-width: 100%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t> svg {\n\t\tflex-shrink: 0;\n\t}\n\n\t> span {\n\t\tall: unset;\n\t\tmargin-left: 4px;\n\t\tfont-weight: 600;\n\t\tfont-size: 12px;\n\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t}\n"])));
11625
11625
  Badge.propTypes = {
11626
11626
  children: PropTypes__default["default"].node,
11627
11627
  className: PropTypes__default["default"].string,
@@ -11634,12 +11634,12 @@ Badge.propTypes = {
11634
11634
  props: PropTypes__default["default"].object
11635
11635
  };
11636
11636
 
11637
- const _excluded$i = ["icon"];
11637
+ const _excluded$j = ["icon"];
11638
11638
  function GetIcon(_ref) {
11639
11639
  let {
11640
11640
  icon
11641
11641
  } = _ref,
11642
- props = _objectWithoutProperties(_ref, _excluded$i);
11642
+ props = _objectWithoutProperties(_ref, _excluded$j);
11643
11643
  let Icon = Icons__namespace.CloseOutlined;
11644
11644
  if (Icons__namespace[icon]) {
11645
11645
  Icon = Icons__namespace[icon];
@@ -11961,7 +11961,7 @@ GoToSelect.propTypes = {
11961
11961
  t: PropTypes__default["default"].func
11962
11962
  };
11963
11963
 
11964
- const _excluded$h = ["options", "defaultSelected", "onChange", "textWhenMultiple", "withCount", "oneAlwaysSelected", "canUnselectLast", "isAvatarGroup", "maxAvatarCount", "dropDownWidth", "topAvatarValue", "isSingle", "selectionType"];
11964
+ const _excluded$i = ["options", "defaultSelected", "onChange", "textWhenMultiple", "withCount", "oneAlwaysSelected", "canUnselectLast", "isAvatarGroup", "maxAvatarCount", "dropDownWidth", "topAvatarValue", "isSingle", "selectionType"];
11965
11965
  const {
11966
11966
  useToken: useToken$i
11967
11967
  } = antd.theme;
@@ -12054,7 +12054,7 @@ function Multiselect(_ref) {
12054
12054
  isSingle = false,
12055
12055
  selectionType = SELECTION_TYPES.DEFAULT
12056
12056
  } = _ref,
12057
- restProps = _objectWithoutProperties(_ref, _excluded$h);
12057
+ restProps = _objectWithoutProperties(_ref, _excluded$i);
12058
12058
  const {
12059
12059
  token
12060
12060
  } = useToken$i();
@@ -12721,7 +12721,7 @@ DAFHeader.propTypes = {
12721
12721
  downloadDisabled: PropTypes__default["default"].any
12722
12722
  };
12723
12723
 
12724
- const _excluded$g = ["tabs", "onChange", "value", "className"];
12724
+ const _excluded$h = ["tabs", "onChange", "value", "className"];
12725
12725
  function TabsHeader(_ref) {
12726
12726
  let {
12727
12727
  tabs = [],
@@ -12729,7 +12729,7 @@ function TabsHeader(_ref) {
12729
12729
  value = '',
12730
12730
  className = 'mt-2'
12731
12731
  } = _ref,
12732
- rest = _objectWithoutProperties(_ref, _excluded$g);
12732
+ rest = _objectWithoutProperties(_ref, _excluded$h);
12733
12733
  return /*#__PURE__*/jsxRuntime.jsx("div", {
12734
12734
  className: formatClassname(['daf-tabs-header pl-6 pr-6', className]),
12735
12735
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Tabs, _objectSpread2({
@@ -12826,6 +12826,114 @@ DrawerHeader.propTypes = {
12826
12826
  tabsConfig: PropTypes__default["default"].any
12827
12827
  };
12828
12828
 
12829
+ const _excluded$g = ["label", "onClick", "icon", "type", "tooltip", "disabled", "loading", "style", "className"];
12830
+ const useFooter = _ref => {
12831
+ let {
12832
+ leftContent,
12833
+ centerContent,
12834
+ rightContent,
12835
+ actionButtons,
12836
+ app,
12837
+ isViewMode
12838
+ } = _ref;
12839
+ const renderFooterContent = React.useMemo(() => {
12840
+ const FooterContent = () => /*#__PURE__*/jsxRuntime.jsxs("div", {
12841
+ className: "daf-footer-content",
12842
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
12843
+ className: "daf-footer-left",
12844
+ children: leftContent
12845
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
12846
+ className: "daf-footer-center",
12847
+ children: centerContent
12848
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
12849
+ className: "daf-footer-right",
12850
+ children: [rightContent, actionButtons.length > 0 && /*#__PURE__*/jsxRuntime.jsx(antd.Space, {
12851
+ className: "daf-footer-actions",
12852
+ children: actionButtons.map((button, index) => {
12853
+ const {
12854
+ label,
12855
+ onClick,
12856
+ icon,
12857
+ type = BTN_TYPES.PRIMARY,
12858
+ tooltip,
12859
+ disabled = false,
12860
+ loading = false,
12861
+ style = {},
12862
+ className = ""
12863
+ } = button,
12864
+ restProps = _objectWithoutProperties(button, _excluded$g);
12865
+ return /*#__PURE__*/jsxRuntime.jsx(DafButton, _objectSpread2({
12866
+ content: label,
12867
+ type: type,
12868
+ size: BTN_SIZE.MD,
12869
+ icon: typeof icon === "string" ? /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
12870
+ name: icon
12871
+ }) : icon,
12872
+ onClick: onClick,
12873
+ disabled: disabled || isViewMode,
12874
+ loading: loading,
12875
+ title: tooltip,
12876
+ style: style,
12877
+ className: className
12878
+ }, restProps), index);
12879
+ })
12880
+ })]
12881
+ })]
12882
+ });
12883
+ FooterContent.displayName = 'FooterContent';
12884
+ return FooterContent;
12885
+ }, [leftContent, centerContent, rightContent, actionButtons, app, isViewMode]);
12886
+ return {
12887
+ renderFooterContent
12888
+ };
12889
+ };
12890
+
12891
+ var _templateObject$a;
12892
+ const FooterContainer = dt.div(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral(["\n\t.daf-footer {\n\t\tbackground: #ffffff;\n\t\tborder-top: 1px solid #e8e8e8;\n\t\tborder-left: none;\n\t\tborder-right: none;\n\t\tborder-bottom: none;\n\t\tborder-radius: 0;\n\t\tpadding: 24px;\n\t\tmargin: 0;\n\t\tbox-shadow: none;\n\t\tz-index: 100;\n\t\tposition: relative;\n\t\tmin-height: 80px;\n\n\t\t&.daf-footer-fixed {\n\t\t\tposition: fixed;\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tz-index: 1000;\n\t\t}\n\n\t\t.daf-footer-content {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmin-height: 32px;\n\n\t\t\t.daf-footer-left {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\n\t\t\t.daf-footer-center {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t}\n\n\t\t\t.daf-footer-right {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: flex-end;\n\t\t\t\tgap: 12px;\n\n\t\t\t\t.daf-footer-actions {\n\t\t\t\t\t.ant-btn {\n\t\t\t\t\t\theight: 40px;\n\t\t\t\t\t\tpadding: 0 24px;\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tfont-weight: 500;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\ttransition: all 0.3s ease;\n\t\t\t\t\t\tborder: 1px solid transparent;\n\n\t\t\t\t\t\t&.ant-btn-primary {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-70);\n\t\t\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground-color: var(--color-primary-60);\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-60);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tbackground-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tbackground-color: #f5f5f5;\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.ant-btn-default {\n\t\t\t\t\t\t\tbackground: #ffffff;\n\t\t\t\t\t\t\tcolor: #666666;\n\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-70);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tbackground-color: #f5f5f5;\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.ant-btn-ghost {\n\t\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\t\tcolor: #666666;\n\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-70);\n\t\t\t\t\t\t\t\tbackground: rgba(0, 0, 0, 0.02);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Responsive design */\n\t@media (max-width: 768px) {\n\t\t.daf-footer {\n\t\t\tmargin: 0;\n\t\t\tpadding: 16px;\n\n\t\t\t.daf-footer-content {\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 16px;\n\t\t\t\talign-items: stretch;\n\n\t\t\t\t.daf-footer-left,\n\t\t\t\t.daf-footer-center,\n\t\t\t\t.daf-footer-right {\n\t\t\t\t\tflex: none;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\n\t\t\t\t.daf-footer-right {\n\t\t\t\t\t.daf-footer-actions {\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* App-specific styling */\n\t&.sbg-app {\n\t\t.daf-footer {\n\t\t\tbackground: #f8f9fa;\n\t\t\tborder-color: #e9ecef;\n\t\t}\n\t}\n\n\t&.nashiriki-app {\n\t\t.daf-footer {\n\t\t\tbackground: #fff;\n\t\t\tborder-color: #d9d9d9;\n\t\t}\n\t}\n"])));
12893
+
12894
+ function DAFFooter(_ref) {
12895
+ let {
12896
+ leftContent = null,
12897
+ centerContent = null,
12898
+ rightContent = null,
12899
+ actionButtons = [],
12900
+ className = "",
12901
+ style = {},
12902
+ fixed = false,
12903
+ app = "",
12904
+ isViewMode = false
12905
+ } = _ref;
12906
+ const {
12907
+ renderFooterContent
12908
+ } = useFooter({
12909
+ leftContent,
12910
+ centerContent,
12911
+ rightContent,
12912
+ actionButtons,
12913
+ app,
12914
+ isViewMode
12915
+ });
12916
+ return /*#__PURE__*/jsxRuntime.jsx(FooterContainer, {
12917
+ className: "".concat(fixed ? 'daf-footer-fixed' : '', " ").concat(className),
12918
+ style: style,
12919
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
12920
+ className: "daf-footer ".concat(fixed ? 'daf-footer-fixed' : ''),
12921
+ children: renderFooterContent()
12922
+ })
12923
+ });
12924
+ }
12925
+ DAFFooter.propTypes = {
12926
+ leftContent: PropTypes__default["default"].any,
12927
+ centerContent: PropTypes__default["default"].any,
12928
+ rightContent: PropTypes__default["default"].any,
12929
+ actionButtons: PropTypes__default["default"].array,
12930
+ className: PropTypes__default["default"].string,
12931
+ style: PropTypes__default["default"].object,
12932
+ fixed: PropTypes__default["default"].bool,
12933
+ app: PropTypes__default["default"].string,
12934
+ isViewMode: PropTypes__default["default"].bool
12935
+ };
12936
+
12829
12937
  const PAGE_HEIGHT = 1587;
12830
12938
  // margin-top: 20, bottom: 20;
12831
12939
  const FOOTER_HEIGHT = 70;
@@ -19304,7 +19412,8 @@ DAFSteps.defaultProps = {
19304
19412
  function DashboardLayout(_ref) {
19305
19413
  let {
19306
19414
  children,
19307
- header
19415
+ header,
19416
+ footer
19308
19417
  } = _ref;
19309
19418
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
19310
19419
  className: "daf-analysis",
@@ -19320,7 +19429,7 @@ function DashboardLayout(_ref) {
19320
19429
  children: children
19321
19430
  })
19322
19431
  })
19323
- })]
19432
+ }), footer]
19324
19433
  });
19325
19434
  }
19326
19435
 
@@ -58927,6 +59036,7 @@ exports.FindInformationProvider = FindInformationProvider;
58927
59036
  exports.FindInformationSource = FindInformationSource;
58928
59037
  exports.FindInformationSubject = FindInformationSubject;
58929
59038
  exports.FlowWidget = FlowWidget;
59039
+ exports.Footer = DAFFooter;
58930
59040
  exports.FormPopover = FormPopover;
58931
59041
  exports.GetIcon = GetIcon;
58932
59042
  exports.Globe = Globe;
package/package.json CHANGED
@@ -1,109 +1,109 @@
1
1
  {
2
- "name": "datastake-daf",
3
- "version": "0.6.97",
4
- "dependencies": {
5
- "@ant-design/icons": "^5.2.5",
6
- "@antv/g2": "^5.1.1",
7
- "@antv/g2plot": "^2.4.32",
8
- "@elfalem/leaflet-curve": "^0.9.2",
9
- "@testing-library/jest-dom": "^5.16.5",
10
- "@testing-library/react": "^13.4.0",
11
- "@testing-library/user-event": "^13.5.0",
12
- "@xyflow/react": "^12.4.3",
13
- "antd": ">=5.4.0",
14
- "axios": "^1.4.0",
15
- "buffer": "^6.0.3",
16
- "countries-list": "^2.6.1",
17
- "country-city-location": "^1.0.13",
18
- "datastake-daf": "^0.5.780",
19
- "dayjs": "^1.11.12",
20
- "deepmerge": "^4.3.1",
21
- "dot-object": "^2.1.5",
22
- "leaflet": "^1.0.3",
23
- "leaflet-editable": "^1.3.0",
24
- "leaflet-geosearch": "^3.1.0",
25
- "leaflet.heat": "^0.2.0",
26
- "leaflet.markercluster": "^1.4.1",
27
- "lodash": "^4.17.21",
28
- "mapbox-gl": "^3.14.0",
29
- "moment": "^2.29.4",
30
- "react": "^18.3.1",
31
- "react-collapsed": "^4.1.2",
32
- "react-dom": "^18.3.1",
33
- "react-flow-renderer": "^9.6.0",
34
- "react-html-parser": "^2.0.2",
35
- "react-scripts": "^5.0.1",
36
- "reactflow": "^11.11.4",
37
- "rollup-plugin-node-polyfills": "^0.2.1",
38
- "rollup-plugin-postcss": "^4.0.2",
39
- "styled-components": "^6.1.12",
40
- "web-vitals": "^2.1.4"
41
- },
42
- "scripts": {
43
- "start": "react-scripts start",
44
- "build": "react-scripts build",
45
- "build-dist": "rollup -c",
46
- "start-dist": "rollup -c -w",
47
- "test": "react-scripts test",
48
- "eject": "react-scripts eject",
49
- "storybook": "storybook dev -p 6006",
50
- "build-storybook": "storybook build",
51
- "deploy-storybook": "storybook-deployer --ci",
52
- "prepare": "rollup -c",
53
- "prepublishOnly": "rollup -c",
54
- "release": "node ./scripts/prepublish-check.js",
55
- "chromatic": "npx chromatic --project-token=chpt_2f5aa5550a15e1d --exit-zero-on-changes"
56
- },
57
- "browserslist": {
58
- "production": [
59
- ">0.2%",
60
- "not dead",
61
- "not op_mini all"
62
- ],
63
- "development": [
64
- "last 1 chrome version",
65
- "last 1 firefox version",
66
- "last 1 safari version"
67
- ]
68
- },
69
- "devDependencies": {
70
- "@babel/plugin-syntax-jsx": "^7.24.7",
71
- "@babel/preset-react": "^7.18.6",
72
- "@rollup/plugin-commonjs": "^28.0.1",
73
- "@rollup/plugin-node-resolve": "^13.0.6",
74
- "@storybook/addon-essentials": "^7.2.3",
75
- "@storybook/addon-interactions": "^7.2.3",
76
- "@storybook/addon-links": "^7.2.3",
77
- "@storybook/addon-styling": "^2.0.2-next.3",
78
- "@storybook/blocks": "^7.2.3",
79
- "@storybook/preset-create-react-app": "^7.2.3",
80
- "@storybook/react": "^7.2.3",
81
- "@storybook/react-webpack5": "^7.2.3",
82
- "@storybook/testing-library": "^0.2.1-next.0",
83
- "babel": "^6.23.0",
84
- "babel-plugin-import": "^1.13.6",
85
- "babel-plugin-named-exports-order": "^0.0.2",
86
- "chromatic": "^12.1.0",
87
- "eslint": "^8.40.0",
88
- "eslint-config-airbnb": "^19.0.4",
89
- "eslint-plugin-import": "^2.27.5",
90
- "eslint-plugin-jsx-a11y": "^6.7.1",
91
- "eslint-plugin-react": "^7.33.1",
92
- "eslint-plugin-react-hooks": "^4.6.0",
93
- "prop-types": "^15.8.1",
94
- "rollup": "^2.79.1",
95
- "rollup-plugin-babel": "^4.4.0",
96
- "rollup-plugin-commonjs": "^10.1.0",
97
- "rollup-plugin-node-resolve": "^5.2.0",
98
- "rollup-plugin-peer-deps-external": "^2.2.4",
99
- "sass": "^1.62.0",
100
- "sass-loader": "^13.2.2",
101
- "semver": "^7.7.2",
102
- "storybook": "^7.2.3",
103
- "storybook-deployer": "^2.8.12",
104
- "webpack": "^5.78.0"
105
- },
106
- "peerDependencies": {
107
- "antd": ">=5.4.0"
108
- }
2
+ "name": "datastake-daf",
3
+ "version": "0.6.98",
4
+ "dependencies": {
5
+ "@ant-design/icons": "^5.2.5",
6
+ "@antv/g2": "^5.1.1",
7
+ "@antv/g2plot": "^2.4.32",
8
+ "@elfalem/leaflet-curve": "^0.9.2",
9
+ "@testing-library/jest-dom": "^5.16.5",
10
+ "@testing-library/react": "^13.4.0",
11
+ "@testing-library/user-event": "^13.5.0",
12
+ "@xyflow/react": "^12.4.3",
13
+ "antd": ">=5.4.0",
14
+ "axios": "^1.4.0",
15
+ "buffer": "^6.0.3",
16
+ "countries-list": "^2.6.1",
17
+ "country-city-location": "^1.0.13",
18
+ "datastake-daf": "^0.5.780",
19
+ "dayjs": "^1.11.12",
20
+ "deepmerge": "^4.3.1",
21
+ "dot-object": "^2.1.5",
22
+ "leaflet": "^1.0.3",
23
+ "leaflet-editable": "^1.3.0",
24
+ "leaflet-geosearch": "^3.1.0",
25
+ "leaflet.heat": "^0.2.0",
26
+ "leaflet.markercluster": "^1.4.1",
27
+ "lodash": "^4.17.21",
28
+ "mapbox-gl": "^3.14.0",
29
+ "moment": "^2.29.4",
30
+ "react": "^18.3.1",
31
+ "react-collapsed": "^4.1.2",
32
+ "react-dom": "^18.3.1",
33
+ "react-flow-renderer": "^9.6.0",
34
+ "react-html-parser": "^2.0.2",
35
+ "react-scripts": "^5.0.1",
36
+ "reactflow": "^11.11.4",
37
+ "rollup-plugin-node-polyfills": "^0.2.1",
38
+ "rollup-plugin-postcss": "^4.0.2",
39
+ "styled-components": "^6.1.12",
40
+ "web-vitals": "^2.1.4"
41
+ },
42
+ "scripts": {
43
+ "start": "react-scripts start",
44
+ "build": "react-scripts build",
45
+ "build-dist": "rollup -c",
46
+ "start-dist": "rollup -c -w",
47
+ "test": "react-scripts test",
48
+ "eject": "react-scripts eject",
49
+ "storybook": "storybook dev -p 6006",
50
+ "build-storybook": "storybook build",
51
+ "deploy-storybook": "storybook-deployer --ci",
52
+ "prepare": "rollup -c",
53
+ "prepublishOnly": "rollup -c",
54
+ "release": "node ./scripts/prepublish-check.js",
55
+ "chromatic": "npx chromatic --project-token=chpt_2f5aa5550a15e1d --exit-zero-on-changes"
56
+ },
57
+ "browserslist": {
58
+ "production": [
59
+ ">0.2%",
60
+ "not dead",
61
+ "not op_mini all"
62
+ ],
63
+ "development": [
64
+ "last 1 chrome version",
65
+ "last 1 firefox version",
66
+ "last 1 safari version"
67
+ ]
68
+ },
69
+ "devDependencies": {
70
+ "@babel/plugin-syntax-jsx": "^7.24.7",
71
+ "@babel/preset-react": "^7.18.6",
72
+ "@rollup/plugin-commonjs": "^28.0.1",
73
+ "@rollup/plugin-node-resolve": "^13.0.6",
74
+ "@storybook/addon-essentials": "^7.2.3",
75
+ "@storybook/addon-interactions": "^7.2.3",
76
+ "@storybook/addon-links": "^7.2.3",
77
+ "@storybook/addon-styling": "^2.0.2-next.3",
78
+ "@storybook/blocks": "^7.2.3",
79
+ "@storybook/preset-create-react-app": "^7.2.3",
80
+ "@storybook/react": "^7.2.3",
81
+ "@storybook/react-webpack5": "^7.2.3",
82
+ "@storybook/testing-library": "^0.2.1-next.0",
83
+ "babel": "^6.23.0",
84
+ "babel-plugin-import": "^1.13.6",
85
+ "babel-plugin-named-exports-order": "^0.0.2",
86
+ "chromatic": "^12.1.0",
87
+ "eslint": "^8.40.0",
88
+ "eslint-config-airbnb": "^19.0.4",
89
+ "eslint-plugin-import": "^2.27.5",
90
+ "eslint-plugin-jsx-a11y": "^6.7.1",
91
+ "eslint-plugin-react": "^7.33.1",
92
+ "eslint-plugin-react-hooks": "^4.6.0",
93
+ "prop-types": "^15.8.1",
94
+ "rollup": "^2.79.1",
95
+ "rollup-plugin-babel": "^4.4.0",
96
+ "rollup-plugin-commonjs": "^10.1.0",
97
+ "rollup-plugin-node-resolve": "^5.2.0",
98
+ "rollup-plugin-peer-deps-external": "^2.2.4",
99
+ "sass": "^1.62.0",
100
+ "sass-loader": "^13.2.2",
101
+ "semver": "^7.7.2",
102
+ "storybook": "^7.2.3",
103
+ "storybook-deployer": "^2.8.12",
104
+ "webpack": "^5.78.0"
105
+ },
106
+ "peerDependencies": {
107
+ "antd": ">=5.4.0"
108
+ }
109
109
  }