datastake-daf 0.6.121 → 0.6.123

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.
@@ -3065,7 +3065,7 @@ const config$3 = {
3065
3065
  Integration: config$4
3066
3066
  };
3067
3067
 
3068
- const _excluded$o = ["width", "height", "size", "name", "fill"];
3068
+ const _excluded$p = ["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$o);
3077
+ props = _objectWithoutProperties(_ref, _excluded$p);
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$n = ["view", "module", "scope", "form", "meta"];
9279
+ const _excluded$o = ["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$n);
9653
+ rest = _objectWithoutProperties(data, _excluded$o);
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$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"];
10038
+ const _excluded$n = ["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$m);
10069
+ rest = _objectWithoutProperties(_ref, _excluded$n);
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$l = ["size", "maxHeight", "dataSource", "columns", "pagination"];
10791
+ const _excluded$m = ["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$l);
10800
+ props = _objectWithoutProperties(_ref, _excluded$m);
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$k = ["children"];
11492
+ const _excluded$l = ["children"];
11493
11493
  const BorderedButton = _ref => {
11494
11494
  let {
11495
11495
  children
11496
11496
  } = _ref,
11497
- props = _objectWithoutProperties(_ref, _excluded$k);
11497
+ props = _objectWithoutProperties(_ref, _excluded$l);
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), {}, {
@@ -11634,12 +11634,12 @@ Badge.propTypes = {
11634
11634
  props: PropTypes__default["default"].object
11635
11635
  };
11636
11636
 
11637
- const _excluded$j = ["icon"];
11637
+ const _excluded$k = ["icon"];
11638
11638
  function GetIcon(_ref) {
11639
11639
  let {
11640
11640
  icon
11641
11641
  } = _ref,
11642
- props = _objectWithoutProperties(_ref, _excluded$j);
11642
+ props = _objectWithoutProperties(_ref, _excluded$k);
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$i = ["options", "defaultSelected", "onChange", "textWhenMultiple", "withCount", "oneAlwaysSelected", "canUnselectLast", "isAvatarGroup", "maxAvatarCount", "dropDownWidth", "topAvatarValue", "isSingle", "selectionType"];
11964
+ const _excluded$j = ["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$i);
12057
+ restProps = _objectWithoutProperties(_ref, _excluded$j);
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$h = ["tabs", "onChange", "value", "className"];
12724
+ const _excluded$i = ["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$h);
12732
+ rest = _objectWithoutProperties(_ref, _excluded$i);
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,7 +12826,7 @@ 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"];
12829
+ const _excluded$h = ["label", "onClick", "icon", "type", "tooltip", "disabled", "loading", "style", "className"];
12830
12830
  const useFooter = _ref => {
12831
12831
  let {
12832
12832
  leftContent,
@@ -12861,7 +12861,7 @@ const useFooter = _ref => {
12861
12861
  style = {},
12862
12862
  className = ""
12863
12863
  } = button,
12864
- restProps = _objectWithoutProperties(button, _excluded$g);
12864
+ restProps = _objectWithoutProperties(button, _excluded$h);
12865
12865
  return /*#__PURE__*/jsxRuntime.jsx(DafButton, _objectSpread2({
12866
12866
  content: label,
12867
12867
  type: type,
@@ -12934,9 +12934,9 @@ DAFFooter.propTypes = {
12934
12934
  isViewMode: PropTypes__default["default"].bool
12935
12935
  };
12936
12936
 
12937
- const PAGE_HEIGHT = 3508;
12937
+ const PAGE_HEIGHT = 1587;
12938
12938
  // margin-top: 20, bottom: 20;
12939
- const FOOTER_HEIGHT = 40;
12939
+ const FOOTER_HEIGHT = 70;
12940
12940
  const HEADER_HEIGHT = 100;
12941
12941
  const Row = _ref => {
12942
12942
  let {
@@ -13001,14 +13001,8 @@ function PdfView(_ref2) {
13001
13001
  ref
13002
13002
  } = sectionsConfig[k];
13003
13003
  if (i === 0) {
13004
- const availableSpace = PAGE_HEIGHT - 30 - FOOTER_HEIGHT - HEADER_HEIGHT;
13005
- if (height > availableSpace) {
13006
- ref.current.style.marginTop = '30px';
13007
- incrHeight = 30;
13008
- } else {
13009
- ref.current.style.marginTop = "".concat(HEADER_HEIGHT, "px");
13010
- incrHeight = HEADER_HEIGHT;
13011
- }
13004
+ ref.current.style.marginTop = "".concat(HEADER_HEIGHT, "px");
13005
+ incrHeight += HEADER_HEIGHT;
13012
13006
  }
13013
13007
  const newHeight = incrHeight + height;
13014
13008
  if (i === keys.length - 1) {
@@ -14135,7 +14129,7 @@ const handleDataLinkGroupWithTableKeys = ({
14135
14129
  label: uploadTypeFields.includes(tableKey) ? uploadTypeLabels[tableKey] : tableKey,
14136
14130
  type: inputConfig?.type
14137
14131
  };
14138
- values[tableKey] = item?.linking?.SCL?.[item?.[tableKey]]?.name || item?.[tableKey];
14132
+ values[tableKey] = item?.[tableKey];
14139
14133
  }
14140
14134
  });
14141
14135
  siblingInputsMatchingTableKeys.forEach(siblingKey => {
@@ -14310,7 +14304,7 @@ const handleDataLinkWithTableKeys = ({
14310
14304
  }
14311
14305
  inputs[tableKey].label = resolvedLabel || Object.values(formInputConfig.label)[0] || (uploadTypeFields.includes(tableKey) ? uploadTypeLabels[tableKey] : tableKey);
14312
14306
  }
14313
- values[tableKey] = item?.linking?.SCL?.[item?.[tableKey]]?.name || item?.[formInputConfig?.tableLabel?.toLowerCase()] || item?.[tableKey];
14307
+ values[tableKey] = item?.[formInputConfig?.tableLabel?.toLowerCase()] || item?.[tableKey];
14314
14308
  } else {
14315
14309
  inputs[tableKey] = {
14316
14310
  label: uploadTypeFields.includes(tableKey) ? uploadTypeLabels[tableKey] : tableKey,
@@ -14349,7 +14343,7 @@ const handleDataLinkWithTableKeys = ({
14349
14343
  }
14350
14344
  inputs[fieldKey].label = resolvedLabel || Object.values(formInputConfig.label)[0] || (uploadTypeFields.includes(fieldKey) ? uploadTypeLabels[fieldKey] : fieldKey);
14351
14345
  }
14352
- values[fieldKey] = item?.linking?.SCL?.[item?.[fieldKey]]?.name || item?.[formInputConfig?.tableLabel?.toLowerCase()] || item?.[fieldKey];
14346
+ values[fieldKey] = item?.[formInputConfig?.tableLabel?.toLowerCase()] || item?.[fieldKey];
14353
14347
  });
14354
14348
  }
14355
14349
  return {
@@ -15010,6 +15004,7 @@ const PdfForm = _ref3 => {
15010
15004
  getAppHeader = () => {},
15011
15005
  app
15012
15006
  } = _ref3;
15007
+ // Group objects under headers based on position
15013
15008
  const organizeFormByHeaders = formData => {
15014
15009
  const organizedSections = {};
15015
15010
  Object.keys(formData).forEach(sectionKey => {
@@ -15017,6 +15012,8 @@ const PdfForm = _ref3 => {
15017
15012
  if (typeof section !== 'object' || !section.label) {
15018
15013
  return;
15019
15014
  }
15015
+
15016
+ // Get all objects from this section and sort by position
15020
15017
  const allObjects = Object.keys(section).filter(key => {
15021
15018
  return !(key === 'id' || key === 'label' || key === 'position' || key === 'subTitle');
15022
15019
  }).map(key => _objectSpread2({
@@ -15026,13 +15023,18 @@ const PdfForm = _ref3 => {
15026
15023
  const positionB = b.position || 0;
15027
15024
  return positionA - positionB;
15028
15025
  });
15026
+
15027
+ // Identify headers and regular objects
15029
15028
  const headers = allObjects.filter(obj => obj.type === 'header');
15030
15029
  const nonHeaders = allObjects.filter(obj => obj.type !== 'header');
15031
15030
  if (headers.length === 0) {
15031
+ // No headers found, keep original structure
15032
15032
  organizedSections[sectionKey] = section;
15033
15033
  return;
15034
15034
  }
15035
15035
  const organizedSection = _objectSpread2({}, section);
15036
+
15037
+ // Clear the section of its original objects
15036
15038
  Object.keys(section).forEach(key => {
15037
15039
  if (!(key === 'id' || key === 'label' || key === 'position' || key === 'subTitle')) {
15038
15040
  delete organizedSection[key];
@@ -15041,23 +15043,30 @@ const PdfForm = _ref3 => {
15041
15043
  headers.forEach((header, index) => {
15042
15044
  const headerPosition = header.position || 0;
15043
15045
  const nextHeaderPosition = index < headers.length - 1 ? headers[index + 1].position || 0 : Infinity;
15046
+
15047
+ // Find objects that belong under this header
15044
15048
  const childrenObjects = nonHeaders.filter(obj => {
15045
15049
  const objPosition = obj.position || 0;
15046
15050
  return objPosition > headerPosition && objPosition < nextHeaderPosition;
15047
15051
  });
15052
+
15053
+ // Create the header structure with children as inputs
15048
15054
  const headerWithChildren = _objectSpread2({}, header);
15049
- delete headerWithChildren.key;
15055
+ delete headerWithChildren.key; // Remove the key we added temporarily
15056
+
15050
15057
  if (childrenObjects.length > 0) {
15051
15058
  headerWithChildren.inputs = {};
15052
15059
  childrenObjects.forEach(child => {
15053
15060
  const childKey = child.key;
15054
15061
  const childData = _objectSpread2({}, child);
15055
- delete childData.key;
15062
+ delete childData.key; // Remove the temporary key
15056
15063
  headerWithChildren.inputs[childKey] = childData;
15057
15064
  });
15058
15065
  }
15059
15066
  organizedSection[header.key] = headerWithChildren;
15060
15067
  });
15068
+
15069
+ // Add any remaining objects that don't fall under any header
15061
15070
  const uncategorizedObjects = nonHeaders.filter(obj => {
15062
15071
  const objPosition = obj.position || 0;
15063
15072
  return !headers.some((header, index) => {
@@ -15079,112 +15088,33 @@ const PdfForm = _ref3 => {
15079
15088
  const organizedForm = React.useMemo(() => organizeFormByHeaders(form), [form]);
15080
15089
  const pdfConfig = React.useMemo(() => {
15081
15090
  const sections = [];
15082
-
15083
- // Function to count the complexity/size of a section
15084
- const getSectionComplexity = section => {
15085
- let complexity = 0;
15086
- const countInputs = obj => {
15087
- if (!obj || typeof obj !== 'object') return 0;
15088
- let count = 0;
15089
- Object.keys(obj).forEach(key => {
15090
- if (key === 'inputs' && obj[key]) {
15091
- count += Object.keys(obj[key]).length;
15092
- // Recursively count nested inputs
15093
- Object.values(obj[key]).forEach(input => {
15094
- count += countInputs(input);
15095
- });
15096
- } else if (typeof obj[key] === 'object' && obj[key] !== null) {
15097
- count += countInputs(obj[key]);
15098
- }
15099
- });
15100
- return count;
15101
- };
15102
- complexity += countInputs(section);
15103
- return complexity;
15104
- };
15105
-
15106
- // Function to split a section into smaller chunks
15107
- const splitSection = function (sectionKey, section) {
15108
- let maxComplexity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 15;
15109
- const complexity = getSectionComplexity(section);
15110
- if (complexity <= maxComplexity) {
15111
- // Section is small enough, return as-is
15112
- return [{
15113
- key: sectionKey,
15114
- section: section,
15115
- title: formName,
15116
- isFirstPart: true,
15117
- isLastPart: true
15118
- }];
15119
- }
15120
-
15121
- // Section is too large, split it
15122
- const chunks = [];
15123
- const sectionInputs = Object.keys(section).filter(key => !(key === 'id' || key === 'label' || key === 'position' || key === 'subTitle')).sort((a, b) => {
15124
- var _section$a, _section$b;
15125
- const positionA = ((_section$a = section[a]) === null || _section$a === void 0 ? void 0 : _section$a.position) || 0;
15126
- const positionB = ((_section$b = section[b]) === null || _section$b === void 0 ? void 0 : _section$b.position) || 0;
15127
- return positionA - positionB;
15128
- });
15129
- const chunkSize = Math.ceil(sectionInputs.length / Math.ceil(complexity / maxComplexity));
15130
- for (let i = 0; i < sectionInputs.length; i += chunkSize) {
15131
- const chunkInputs = sectionInputs.slice(i, i + chunkSize);
15132
- const chunkSection = _objectSpread2(_objectSpread2({}, section), {}, {
15133
- label: "".concat(section.label, " ").concat(chunks.length > 0 ? "(Part ".concat(chunks.length + 1, ")") : '')
15134
- });
15135
-
15136
- // Remove all inputs first
15137
- Object.keys(chunkSection).forEach(key => {
15138
- if (!(key === 'id' || key === 'label' || key === 'position' || key === 'subTitle')) {
15139
- delete chunkSection[key];
15140
- }
15141
- });
15142
-
15143
- // Add only the inputs for this chunk
15144
- chunkInputs.forEach(inputKey => {
15145
- chunkSection[inputKey] = section[inputKey];
15146
- });
15147
- chunks.push({
15148
- key: "".concat(sectionKey, "_chunk_").concat(chunks.length),
15149
- section: chunkSection,
15150
- title: chunks.length === 0 ? formName : '',
15151
- // Only show title on first chunk
15152
- isFirstPart: chunks.length === 0,
15153
- isLastPart: i + chunkSize >= sectionInputs.length
15154
- });
15155
- }
15156
- return chunks;
15157
- };
15158
15091
  Object.keys(organizedForm).forEach(sectionKey => {
15159
15092
  const section = organizedForm[sectionKey];
15160
15093
  if (typeof section !== 'object' || !section.label) {
15161
15094
  return;
15162
15095
  }
15163
- const sectionChunks = splitSection(sectionKey, section);
15164
- sectionChunks.forEach(chunk => {
15165
- sections.push({
15166
- render: () => /*#__PURE__*/jsxRuntime.jsx("div", {
15167
- className: "pdf-form-section",
15168
- children: /*#__PURE__*/jsxRuntime.jsx(PdfFormContent, {
15169
- form: {
15170
- [chunk.key]: chunk.section
15171
- },
15172
- data: data,
15173
- t: t,
15174
- user: user,
15175
- title: chunk.title,
15176
- source: chunk.isFirstPart ? source : '',
15177
- version: chunk.isFirstPart ? version : '',
15178
- getApiBaseUrl: getApiBaseUrl,
15179
- getAppHeader: getAppHeader,
15180
- app: app
15181
- })
15182
- }, chunk.key),
15183
- style: {
15184
- marginBottom: chunk.isLastPart ? '20px' : '10px',
15185
- padding: '0 20px'
15186
- }
15187
- });
15096
+ sections.push({
15097
+ render: () => /*#__PURE__*/jsxRuntime.jsx("div", {
15098
+ className: "pdf-form-section",
15099
+ children: /*#__PURE__*/jsxRuntime.jsx(PdfFormContent, {
15100
+ form: {
15101
+ [sectionKey]: section
15102
+ },
15103
+ data: data,
15104
+ t: t,
15105
+ user: user,
15106
+ title: formName,
15107
+ source: source,
15108
+ version: version,
15109
+ getApiBaseUrl: getApiBaseUrl,
15110
+ getAppHeader: getAppHeader,
15111
+ app: app
15112
+ })
15113
+ }, sectionKey),
15114
+ style: {
15115
+ marginBottom: '20px',
15116
+ padding: '0 20px'
15117
+ }
15188
15118
  });
15189
15119
  });
15190
15120
  return sections;
@@ -15400,7 +15330,7 @@ Widget.propTypes = {
15400
15330
  onExpandChange: PropTypes__default["default"].func
15401
15331
  };
15402
15332
 
15403
- const _excluded$f = ["loading", "title", "image", "description", "imgAlt", "noDescriptionText"];
15333
+ const _excluded$g = ["loading", "title", "image", "description", "imgAlt", "noDescriptionText"];
15404
15334
  function ImageWidget(_ref) {
15405
15335
  let {
15406
15336
  loading = false,
@@ -15410,7 +15340,7 @@ function ImageWidget(_ref) {
15410
15340
  imgAlt,
15411
15341
  noDescriptionText
15412
15342
  } = _ref,
15413
- props = _objectWithoutProperties(_ref, _excluded$f);
15343
+ props = _objectWithoutProperties(_ref, _excluded$g);
15414
15344
  return /*#__PURE__*/jsxRuntime.jsx(Widget, _objectSpread2(_objectSpread2({
15415
15345
  loading: loading,
15416
15346
  title: title,
@@ -15467,7 +15397,7 @@ function ImageWidget(_ref) {
15467
15397
  }
15468
15398
 
15469
15399
  var _templateObject$9;
15470
- const _excluded$e = ["title", "loading", "data", "current", "defaultActiveTab", "widgetClassname", "className", "direction"];
15400
+ const _excluded$f = ["title", "loading", "data", "current", "defaultActiveTab", "widgetClassname", "className", "direction"];
15471
15401
  function FlowWidget(_ref) {
15472
15402
  let {
15473
15403
  title,
@@ -15479,7 +15409,7 @@ function FlowWidget(_ref) {
15479
15409
  className,
15480
15410
  direction = "horizontal"
15481
15411
  } = _ref,
15482
- rest = _objectWithoutProperties(_ref, _excluded$e);
15412
+ rest = _objectWithoutProperties(_ref, _excluded$f);
15483
15413
  const [activeTab, setActiveTab] = React.useState();
15484
15414
  React.useEffect(() => {
15485
15415
  if (defaultActiveTab) {
@@ -20055,14 +19985,14 @@ const MapConfig = ({
20055
19985
  });
20056
19986
  };
20057
19987
 
20058
- const _excluded$d = ["config", "title", "loading"];
19988
+ const _excluded$e = ["config", "title", "loading"];
20059
19989
  const Details = _ref => {
20060
19990
  let {
20061
19991
  config = [],
20062
19992
  title,
20063
19993
  loading = false
20064
19994
  } = _ref,
20065
- rest = _objectWithoutProperties(_ref, _excluded$d);
19995
+ rest = _objectWithoutProperties(_ref, _excluded$e);
20066
19996
  return /*#__PURE__*/jsxRuntime.jsx(Widget, _objectSpread2(_objectSpread2({
20067
19997
  className: "with-border-header h-w-btn-header card",
20068
19998
  loading: loading,
@@ -20078,14 +20008,14 @@ const Details = _ref => {
20078
20008
  }));
20079
20009
  };
20080
20010
 
20081
- const _excluded$c = ["config", "title", "loading"];
20011
+ const _excluded$d = ["config", "title", "loading"];
20082
20012
  const KeyIndicatorsDetails = _ref => {
20083
20013
  let {
20084
20014
  config,
20085
20015
  title,
20086
20016
  loading = false
20087
20017
  } = _ref,
20088
- rest = _objectWithoutProperties(_ref, _excluded$c);
20018
+ rest = _objectWithoutProperties(_ref, _excluded$d);
20089
20019
  return /*#__PURE__*/jsxRuntime.jsx(Widget, _objectSpread2(_objectSpread2({
20090
20020
  className: "with-border-header h-w-btn-header",
20091
20021
  title: title,
@@ -20115,7 +20045,7 @@ const Style$x = dt.div`
20115
20045
  }
20116
20046
  `;
20117
20047
 
20118
- const _excluded$b = ["children", "config", "detailsTitle", "firstColumnWidth"];
20048
+ const _excluded$c = ["children", "config", "detailsTitle", "firstColumnWidth"];
20119
20049
  const DetailsSection = _ref => {
20120
20050
  let {
20121
20051
  children,
@@ -20123,7 +20053,7 @@ const DetailsSection = _ref => {
20123
20053
  detailsTitle,
20124
20054
  firstColumnWidth = "250px"
20125
20055
  } = _ref,
20126
- rest = _objectWithoutProperties(_ref, _excluded$b);
20056
+ rest = _objectWithoutProperties(_ref, _excluded$c);
20127
20057
  return /*#__PURE__*/jsxRuntime.jsx(Style$x, {
20128
20058
  firstColumnWidth: firstColumnWidth,
20129
20059
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -20136,202 +20066,6 @@ const DetailsSection = _ref => {
20136
20066
  });
20137
20067
  };
20138
20068
 
20139
- const SDG_CONFIG = {
20140
- 1: {
20141
- name: "No Poverty",
20142
- color: "#E5243B",
20143
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-01.jpg"
20144
- },
20145
- 2: {
20146
- name: "Zero Hunger",
20147
- color: "#DDA63A",
20148
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-02.jpg"
20149
- },
20150
- 3: {
20151
- name: "Good Health and Well-being",
20152
- color: "#4C9F38",
20153
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-03.jpg"
20154
- },
20155
- 4: {
20156
- name: "Quality Education",
20157
- color: "#C5192D",
20158
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-04.jpg"
20159
- },
20160
- 6: {
20161
- name: "Clean Water and Sanitation",
20162
- color: "#26BDE2",
20163
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-06.jpg"
20164
- },
20165
- 8: {
20166
- name: "Decent Work and Economic Growth",
20167
- color: "#A21942",
20168
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-08.jpg"
20169
- },
20170
- 13: {
20171
- name: "Climate Action",
20172
- color: "#48773E",
20173
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-13.jpg"
20174
- },
20175
- 15: {
20176
- name: "Life on Land",
20177
- color: "#3EB049",
20178
- icon: "https://sdgs.un.org/sites/default/files/goals/E_SDG_Icons-15.jpg"
20179
- }
20180
- };
20181
-
20182
- // Default SDGs to show (matching the image)
20183
- const DEFAULT_SDGS = [1, 2, 3, 4, 6, 8, 13, 15];
20184
-
20185
- // Individual Project Card Component
20186
- const ProjectCard = _ref => {
20187
- let {
20188
- title,
20189
- image,
20190
- imgAlt,
20191
- country,
20192
- countryFlag,
20193
- sectoralScope,
20194
- methodology,
20195
- sdgs = []
20196
- } = _ref;
20197
- return /*#__PURE__*/jsxRuntime.jsxs(antd.Card, {
20198
- style: {
20199
- minWidth: 280,
20200
- width: "100%",
20201
- borderRadius: "12px",
20202
- overflow: "hidden",
20203
- border: "1px solid #e5e7eb",
20204
- boxShadow: "0 1px 3px rgba(0,0,0,0.08)"
20205
- },
20206
- cover: /*#__PURE__*/jsxRuntime.jsx("div", {
20207
- className: "relative w-full h-40 overflow-hidden",
20208
- children: image ? /*#__PURE__*/jsxRuntime.jsx("img", {
20209
- alt: imgAlt || "".concat(title, " image"),
20210
- src: image,
20211
- style: {
20212
- width: "100%",
20213
- height: "100%",
20214
- objectFit: "cover"
20215
- }
20216
- }) : /*#__PURE__*/jsxRuntime.jsx("div", {
20217
- className: "w-full h-full flex items-center justify-center bg-gray-100",
20218
- children: /*#__PURE__*/jsxRuntime.jsx(antd.Empty, {
20219
- image: antd.Empty.PRESENTED_IMAGE_SIMPLE
20220
- })
20221
- })
20222
- }),
20223
- bodyStyle: {
20224
- padding: "16px"
20225
- },
20226
- children: [title && /*#__PURE__*/jsxRuntime.jsx("h3", {
20227
- className: "text-md font-semibold text-gray-900 mb-3",
20228
- children: title
20229
- }), country && /*#__PURE__*/jsxRuntime.jsxs("div", {
20230
- className: "flex items-center justify-between py-2 border-b border-gray-200",
20231
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
20232
- className: "text-sm text-gray-600",
20233
- children: "Country"
20234
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
20235
- className: "flex items-center gap-1",
20236
- children: [countryFlag && /*#__PURE__*/jsxRuntime.jsx("img", {
20237
- src: countryFlag,
20238
- alt: "".concat(country, " flag"),
20239
- style: {
20240
- width: "16px",
20241
- height: "12px"
20242
- }
20243
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
20244
- className: "text-sm font-medium text-gray-900",
20245
- children: country
20246
- })]
20247
- })]
20248
- }), sectoralScope && /*#__PURE__*/jsxRuntime.jsxs("div", {
20249
- className: "flex items-center justify-between py-2 border-b border-gray-200",
20250
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
20251
- className: "text-sm text-gray-600",
20252
- children: "Sectoral Scope"
20253
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
20254
- className: "text-sm font-medium text-gray-900",
20255
- children: sectoralScope
20256
- })]
20257
- }), methodology && /*#__PURE__*/jsxRuntime.jsxs("div", {
20258
- className: "flex items-center justify-between py-2 border-b border-gray-200",
20259
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
20260
- className: "text-sm text-gray-600",
20261
- children: "Methodology"
20262
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
20263
- className: "text-sm font-medium text-gray-900",
20264
- children: methodology
20265
- })]
20266
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
20267
- className: "pt-2",
20268
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
20269
- className: "text-sm text-gray-600",
20270
- children: "SDGs"
20271
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
20272
- className: "flex flex-wrap gap-1 mt-2",
20273
- children: (sdgs.length > 0 ? sdgs : DEFAULT_SDGS).map((sdg, index) => {
20274
- const sdgConfig = typeof sdg === "number" ? SDG_CONFIG[sdg] : sdg;
20275
- return /*#__PURE__*/jsxRuntime.jsx("img", {
20276
- src: sdgConfig === null || sdgConfig === void 0 ? void 0 : sdgConfig.icon,
20277
- alt: sdgConfig === null || sdgConfig === void 0 ? void 0 : sdgConfig.name,
20278
- style: {
20279
- width: "22px",
20280
- height: "22px",
20281
- objectFit: "cover"
20282
- }
20283
- }, index);
20284
- })
20285
- })]
20286
- })]
20287
- });
20288
- };
20289
-
20290
- // Main Widget Catalogue Component
20291
- function WidgetCatalogue(_ref2) {
20292
- let {
20293
- title = "Project Catalogue",
20294
- projects = [],
20295
- loading = false,
20296
- className = ""
20297
- } = _ref2;
20298
- if (loading) {
20299
- return /*#__PURE__*/jsxRuntime.jsx(Widget, {
20300
- title: title,
20301
- className: "with-border-header",
20302
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
20303
- className: "flex justify-center items-center h-64",
20304
- children: /*#__PURE__*/jsxRuntime.jsx(antd.Spin, {
20305
- size: "large"
20306
- })
20307
- })
20308
- });
20309
- }
20310
- return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
20311
- children: /*#__PURE__*/jsxRuntime.jsx(Widget, {
20312
- title: title,
20313
- className: "with-border-header",
20314
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
20315
- style: {
20316
- display: "flex",
20317
- gap: "16px",
20318
- justifyContent: "space-between"
20319
- },
20320
- children: projects.slice(0, 3).map((project, idx) => /*#__PURE__*/jsxRuntime.jsx("div", {
20321
- style: {
20322
- flex: "1 1 0",
20323
- // make each card take equal width
20324
- maxWidth: "calc(33.333% - 16px)"
20325
- },
20326
- children: /*#__PURE__*/jsxRuntime.jsx(ProjectCard, {
20327
- project: project
20328
- })
20329
- }, idx))
20330
- })
20331
- })
20332
- });
20333
- }
20334
-
20335
20069
  var Style$w = dt.div`
20336
20070
  border: 1px solid var(--base-gray-40);
20337
20071
  padding: 12px;
@@ -25447,7 +25181,7 @@ const RepeatableModals = ({
25447
25181
  }) : null;
25448
25182
  };
25449
25183
 
25450
- const _excluded$a = ["viewGroup"],
25184
+ const _excluded$b = ["viewGroup"],
25451
25185
  _excluded2 = ["label", "icon", "position"];
25452
25186
  const Content = _ref => {
25453
25187
  let {
@@ -25515,7 +25249,7 @@ const Content = _ref => {
25515
25249
  if (groups[gKey].viewGroup === key) {
25516
25250
  // eslint-disable-next-line no-unused-vars
25517
25251
  const _groups$gKey = groups[gKey],
25518
- gCfg = _objectWithoutProperties(_groups$gKey, _excluded$a);
25252
+ gCfg = _objectWithoutProperties(_groups$gKey, _excluded$b);
25519
25253
  items[gKey] = gCfg;
25520
25254
  }
25521
25255
  return items;
@@ -41620,7 +41354,7 @@ const getGrouContent = (form, values, i, formId, excludedKeys, getData, setValue
41620
41354
  });
41621
41355
  };
41622
41356
 
41623
- const _excluded$9 = ["icon"];
41357
+ const _excluded$a = ["icon"];
41624
41358
  function DynamicForm(_ref) {
41625
41359
  var _data$meta;
41626
41360
  let {
@@ -42175,7 +41909,7 @@ function DynamicForm(_ref) {
42175
41909
  let {
42176
41910
  icon: Icon
42177
41911
  } = _ref3,
42178
- form = _objectWithoutProperties(_ref3, _excluded$9);
41912
+ form = _objectWithoutProperties(_ref3, _excluded$a);
42179
41913
  return /*#__PURE__*/jsxRuntime.jsxs(antd.Button, {
42180
41914
  type: "link",
42181
41915
  size: "large",
@@ -42481,6 +42215,68 @@ const SideIcon = _ref3 => {
42481
42215
  });
42482
42216
  };
42483
42217
 
42218
+ const _excluded$9 = ["value", "options", "onChange", "className", "width"];
42219
+ const ProgressTabs = _ref => {
42220
+ let {
42221
+ value = 'setup',
42222
+ options = [{
42223
+ label: 'Set Up',
42224
+ value: 'setup'
42225
+ }, {
42226
+ label: 'Project Scan',
42227
+ value: 'scan'
42228
+ }, {
42229
+ label: 'Review & Submission',
42230
+ value: 'review'
42231
+ }, {
42232
+ label: 'Submission Status',
42233
+ value: 'status'
42234
+ }],
42235
+ onChange = () => {},
42236
+ className = '',
42237
+ width = '100%'
42238
+ } = _ref,
42239
+ rest = _objectWithoutProperties(_ref, _excluded$9);
42240
+ // Transform options to include icons and handle disabled state
42241
+ const transformedOptions = options.map(option => _objectSpread2(_objectSpread2({}, option), {}, {
42242
+ label: /*#__PURE__*/jsxRuntime.jsxs("div", {
42243
+ className: "progress-tabs__option-content",
42244
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
42245
+ className: "progress-tabs__label",
42246
+ children: option.label
42247
+ }), option.icon && /*#__PURE__*/jsxRuntime.jsx("span", {
42248
+ className: "progress-tabs__icon",
42249
+ children: option.icon
42250
+ })]
42251
+ }),
42252
+ disabled: option.isDisabled || false
42253
+ }));
42254
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
42255
+ className: "progress-tabs ".concat(className),
42256
+ style: {
42257
+ width
42258
+ },
42259
+ children: /*#__PURE__*/jsxRuntime.jsx(antd.Segmented, _objectSpread2({
42260
+ value: value,
42261
+ options: transformedOptions,
42262
+ onChange: onChange,
42263
+ className: "progress-tabs__segmented"
42264
+ }, rest))
42265
+ });
42266
+ };
42267
+ ProgressTabs.propTypes = {
42268
+ value: PropTypes__default["default"].string,
42269
+ options: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({
42270
+ label: PropTypes__default["default"].string.isRequired,
42271
+ value: PropTypes__default["default"].string.isRequired,
42272
+ isDisabled: PropTypes__default["default"].bool,
42273
+ icon: PropTypes__default["default"].node
42274
+ })),
42275
+ onChange: PropTypes__default["default"].func,
42276
+ className: PropTypes__default["default"].string,
42277
+ width: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
42278
+ };
42279
+
42484
42280
  const defaultData = {
42485
42281
  overview: {
42486
42282
  consolidated: {
@@ -59615,6 +59411,7 @@ exports.PieChart = Chart;
59615
59411
  exports.PieChartTooltip = Tooltip;
59616
59412
  exports.ProgressBar = ProgressBar;
59617
59413
  exports.ProgressBarSideIcon = SideIcon;
59414
+ exports.ProgressTabs = ProgressTabs;
59618
59415
  exports.ProjectVisualisationAlert = Alert;
59619
59416
  exports.ProjectVisualisationFooter = Footer;
59620
59417
  exports.ProjectVisualisationHeader = Header;
@@ -59647,7 +59444,6 @@ exports.ViewForm = Content;
59647
59444
  exports.ViewFormInput = Input;
59648
59445
  exports.ViewFormNavigation = Navigation;
59649
59446
  exports.Widget = Widget;
59650
- exports.WidgetCatalogue = WidgetCatalogue;
59651
59447
  exports.WidgetImage = ImageWidget;
59652
59448
  exports.WidgetLoader = Loader;
59653
59449
  exports.WidgetPlaceholder = WidgetPlaceholder;