@plusscommunities/pluss-feature-builder-app-b 8.0.14 → 8.0.15

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.
@@ -61,7 +61,7 @@ export const loadTargetFeature = () => {
61
61
  const rawListings = listResponse.data.listings || [];
62
62
 
63
63
  // Filter out soft-deleted items at the Redux level
64
- const listings = rawListings.filter(listing => !listing.deletedAt);
64
+ const listings = rawListings.filter(listing => !listing.deletedAt).sort(sortByOrder);
65
65
  const payload = {
66
66
  feature: flattenedFeature,
67
67
  listings: listings
@@ -82,4 +82,9 @@ export const loadTargetFeature = () => {
82
82
  }
83
83
  };
84
84
  };
85
+ function sortByOrder(listingA, listingB) {
86
+ const a = (listingA === null || listingA === void 0 ? void 0 : listingA.order) || 999;
87
+ const b = (listingB === null || listingB === void 0 ? void 0 : listingB.order) || 999;
88
+ return a - b;
89
+ }
85
90
  //# sourceMappingURL=featureBuilderActions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["values","featureBuilderAPI","updateFeatureBuilderStringAndIconFromDefinition","FeatureBuilderActionTypes","LOADING","actions","LOAD_SUCCESS","FAILURE","loadTargetFeature","dispatch","getState","type","_state$user","state","site","user","targetId","targetFeatureDefinitionId","defResponse","getFeatureDefinitions","allDefinitions","data","featureDefinitions","rawTarget","find","d","id","Error","flattenedFeature","definition","listResponse","getFeatureListings","rawListings","listings","filter","listing","deletedAt","payload","feature","error","console","message"],"sources":["featureBuilderActions.js"],"sourcesContent":["import { values } from \"../values.config\";\nimport { featureBuilderAPI } from \"../webapi/featureBuilderAPI\";\nimport { updateFeatureBuilderStringAndIconFromDefinition } from \"./featureBuilderStringsActions\";\n\n/**\n * Action types for feature builder Redux actions\n * These are pulled from values.config.actions to ensure unique action types per instance\n * @readonly\n * @enum {string}\n */\nexport const FeatureBuilderActionTypes = {\n\t/** Indicates loading state for feature data fetch */\n\tLOADING: values.actions.LOADING,\n\t/** Indicates successful fetch of feature definition and listings */\n\tLOAD_SUCCESS: values.actions.LOAD_SUCCESS,\n\t/** Indicates failure in fetching feature data */\n\tFAILURE: values.actions.FAILURE,\n};\n\n/**\n * Loads the target feature definition and its listings from the API\n * This function fetches the feature definition configured in values.config\n * and loads all associated listings for display\n *\n * @function\n * @returns {Function} Redux thunk function that handles the async loading\n * @throws {Error} When no feature definitions are found or API calls fail\n *\n * @example\n * // In component\n * useEffect(() => {\n * props.loadTargetFeature();\n * }, []);\n *\n * // Dispatch directly\n * dispatch(loadTargetFeature());\n */\nexport const loadTargetFeature = () => {\n\treturn async (dispatch, getState) => {\n\t\tdispatch({ type: FeatureBuilderActionTypes.LOADING });\n\n\t\ttry {\n\t\t\tconst state = getState();\n\t\t\tconst site = state?.user?.site;\n\t\t\tconst targetId = values.targetFeatureDefinitionId;\n\n\t\t\tconst defResponse = await featureBuilderAPI.getFeatureDefinitions(site);\n\t\t\tconst allDefinitions = defResponse.data.featureDefinitions || [];\n\n\t\t\t// Find the specific target definition - throw if not found\n\t\t\tconst rawTarget = allDefinitions.find((d) => d.id === targetId);\n\n\t\t\tif (!rawTarget) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Target feature definition with ID '${targetId}' not found.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst flattenedFeature = {\n\t\t\t\tid: rawTarget.id,\n\t\t\t\t...rawTarget.definition,\n\t\t\t};\n\n\t\t\tconst listResponse = await featureBuilderAPI.getFeatureListings(\n\t\t\t\tsite,\n\t\t\t\trawTarget.id,\n\t\t\t);\n\t\t\tconst rawListings = listResponse.data.listings || [];\n\n\t\t\t// Filter out soft-deleted items at the Redux level\n\t\t\tconst listings = rawListings.filter((listing) => !listing.deletedAt);\n\n\t\t\tconst payload = {\n\t\t\t\tfeature: flattenedFeature,\n\t\t\t\tlistings: listings,\n\t\t\t};\n\t\t\tdispatch({\n\t\t\t\ttype: FeatureBuilderActionTypes.LOAD_SUCCESS,\n\t\t\t\tpayload,\n\t\t\t});\n\n\t\t\t// Update strings store with feature definition title and icon\n\t\t\tdispatch(updateFeatureBuilderStringAndIconFromDefinition());\n\t\t} catch (error) {\n\t\t\tconsole.error(\n\t\t\t\t\"FeatureBuilder Actions - Error in loadTargetFeature:\",\n\t\t\t\terror,\n\t\t\t);\n\t\t\tdispatch({\n\t\t\t\ttype: FeatureBuilderActionTypes.FAILURE,\n\t\t\t\tpayload: error.message || \"Failed to load feature.\",\n\t\t\t});\n\t\t}\n\t};\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,kBAAkB;AACzC,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,+CAA+C,QAAQ,gCAAgC;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAG;EACxC;EACAC,OAAO,EAAEJ,MAAM,CAACK,OAAO,CAACD,OAAO;EAC/B;EACAE,YAAY,EAAEN,MAAM,CAACK,OAAO,CAACC,YAAY;EACzC;EACAC,OAAO,EAAEP,MAAM,CAACK,OAAO,CAACE;AACzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACtC,OAAO,OAAOC,QAAQ,EAAEC,QAAQ,KAAK;IACpCD,QAAQ,CAAC;MAAEE,IAAI,EAAER,yBAAyB,CAACC;IAAQ,CAAC,CAAC;IAErD,IAAI;MAAA,IAAAQ,WAAA;MACH,MAAMC,KAAK,GAAGH,QAAQ,CAAC,CAAC;MACxB,MAAMI,IAAI,GAAGD,KAAK,aAALA,KAAK,gBAAAD,WAAA,GAALC,KAAK,CAAEE,IAAI,cAAAH,WAAA,uBAAXA,WAAA,CAAaE,IAAI;MAC9B,MAAME,QAAQ,GAAGhB,MAAM,CAACiB,yBAAyB;MAEjD,MAAMC,WAAW,GAAG,MAAMjB,iBAAiB,CAACkB,qBAAqB,CAACL,IAAI,CAAC;MACvE,MAAMM,cAAc,GAAGF,WAAW,CAACG,IAAI,CAACC,kBAAkB,IAAI,EAAE;;MAEhE;MACA,MAAMC,SAAS,GAAGH,cAAc,CAACI,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKV,QAAQ,CAAC;MAE/D,IAAI,CAACO,SAAS,EAAE;QACf,MAAM,IAAII,KAAK,CACd,sCAAsCX,QAAQ,cAC/C,CAAC;MACF;MAEA,MAAMY,gBAAgB,GAAG;QACxBF,EAAE,EAAEH,SAAS,CAACG,EAAE;QAChB,GAAGH,SAAS,CAACM;MACd,CAAC;MAED,MAAMC,YAAY,GAAG,MAAM7B,iBAAiB,CAAC8B,kBAAkB,CAC9DjB,IAAI,EACJS,SAAS,CAACG,EACX,CAAC;MACD,MAAMM,WAAW,GAAGF,YAAY,CAACT,IAAI,CAACY,QAAQ,IAAI,EAAE;;MAEpD;MACA,MAAMA,QAAQ,GAAGD,WAAW,CAACE,MAAM,CAAEC,OAAO,IAAK,CAACA,OAAO,CAACC,SAAS,CAAC;MAEpE,MAAMC,OAAO,GAAG;QACfC,OAAO,EAAEV,gBAAgB;QACzBK,QAAQ,EAAEA;MACX,CAAC;MACDxB,QAAQ,CAAC;QACRE,IAAI,EAAER,yBAAyB,CAACG,YAAY;QAC5C+B;MACD,CAAC,CAAC;;MAEF;MACA5B,QAAQ,CAACP,+CAA+C,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAOqC,KAAK,EAAE;MACfC,OAAO,CAACD,KAAK,CACZ,sDAAsD,EACtDA,KACD,CAAC;MACD9B,QAAQ,CAAC;QACRE,IAAI,EAAER,yBAAyB,CAACI,OAAO;QACvC8B,OAAO,EAAEE,KAAK,CAACE,OAAO,IAAI;MAC3B,CAAC,CAAC;IACH;EACD,CAAC;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["values","featureBuilderAPI","updateFeatureBuilderStringAndIconFromDefinition","FeatureBuilderActionTypes","LOADING","actions","LOAD_SUCCESS","FAILURE","loadTargetFeature","dispatch","getState","type","_state$user","state","site","user","targetId","targetFeatureDefinitionId","defResponse","getFeatureDefinitions","allDefinitions","data","featureDefinitions","rawTarget","find","d","id","Error","flattenedFeature","definition","listResponse","getFeatureListings","rawListings","listings","filter","listing","deletedAt","sort","sortByOrder","payload","feature","error","console","message","listingA","listingB","a","order","b"],"sources":["featureBuilderActions.js"],"sourcesContent":["import { values } from \"../values.config\";\nimport { featureBuilderAPI } from \"../webapi/featureBuilderAPI\";\nimport { updateFeatureBuilderStringAndIconFromDefinition } from \"./featureBuilderStringsActions\";\n\n/**\n * Action types for feature builder Redux actions\n * These are pulled from values.config.actions to ensure unique action types per instance\n * @readonly\n * @enum {string}\n */\nexport const FeatureBuilderActionTypes = {\n\t/** Indicates loading state for feature data fetch */\n\tLOADING: values.actions.LOADING,\n\t/** Indicates successful fetch of feature definition and listings */\n\tLOAD_SUCCESS: values.actions.LOAD_SUCCESS,\n\t/** Indicates failure in fetching feature data */\n\tFAILURE: values.actions.FAILURE,\n};\n\n/**\n * Loads the target feature definition and its listings from the API\n * This function fetches the feature definition configured in values.config\n * and loads all associated listings for display\n *\n * @function\n * @returns {Function} Redux thunk function that handles the async loading\n * @throws {Error} When no feature definitions are found or API calls fail\n *\n * @example\n * // In component\n * useEffect(() => {\n * props.loadTargetFeature();\n * }, []);\n *\n * // Dispatch directly\n * dispatch(loadTargetFeature());\n */\nexport const loadTargetFeature = () => {\n\treturn async (dispatch, getState) => {\n\t\tdispatch({ type: FeatureBuilderActionTypes.LOADING });\n\n\t\ttry {\n\t\t\tconst state = getState();\n\t\t\tconst site = state?.user?.site;\n\t\t\tconst targetId = values.targetFeatureDefinitionId;\n\n\t\t\tconst defResponse = await featureBuilderAPI.getFeatureDefinitions(site);\n\t\t\tconst allDefinitions = defResponse.data.featureDefinitions || [];\n\n\t\t\t// Find the specific target definition - throw if not found\n\t\t\tconst rawTarget = allDefinitions.find((d) => d.id === targetId);\n\n\t\t\tif (!rawTarget) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Target feature definition with ID '${targetId}' not found.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst flattenedFeature = {\n\t\t\t\tid: rawTarget.id,\n\t\t\t\t...rawTarget.definition,\n\t\t\t};\n\n\t\t\tconst listResponse = await featureBuilderAPI.getFeatureListings(\n\t\t\t\tsite,\n\t\t\t\trawTarget.id,\n\t\t\t);\n\t\t\tconst rawListings = listResponse.data.listings || [];\n\n\t\t\t// Filter out soft-deleted items at the Redux level\n\t\t\tconst listings = rawListings\n\t\t\t\t.filter((listing) => !listing.deletedAt)\n\t\t\t\t.sort(sortByOrder);\n\n\t\t\tconst payload = {\n\t\t\t\tfeature: flattenedFeature,\n\t\t\t\tlistings: listings,\n\t\t\t};\n\t\t\tdispatch({\n\t\t\t\ttype: FeatureBuilderActionTypes.LOAD_SUCCESS,\n\t\t\t\tpayload,\n\t\t\t});\n\n\t\t\t// Update strings store with feature definition title and icon\n\t\t\tdispatch(updateFeatureBuilderStringAndIconFromDefinition());\n\t\t} catch (error) {\n\t\t\tconsole.error(\n\t\t\t\t\"FeatureBuilder Actions - Error in loadTargetFeature:\",\n\t\t\t\terror,\n\t\t\t);\n\t\t\tdispatch({\n\t\t\t\ttype: FeatureBuilderActionTypes.FAILURE,\n\t\t\t\tpayload: error.message || \"Failed to load feature.\",\n\t\t\t});\n\t\t}\n\t};\n};\n\nfunction sortByOrder(listingA, listingB) {\n\tconst a = listingA?.order || 999;\n\tconst b = listingB?.order || 999;\n\treturn a - b;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-feature-builder-app-b",
3
- "version": "8.0.14",
3
+ "version": "8.0.15",
4
4
  "description": "Feature Builder mobile extension for displaying custom features",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -68,7 +68,9 @@ export const loadTargetFeature = () => {
68
68
  const rawListings = listResponse.data.listings || [];
69
69
 
70
70
  // Filter out soft-deleted items at the Redux level
71
- const listings = rawListings.filter((listing) => !listing.deletedAt);
71
+ const listings = rawListings
72
+ .filter((listing) => !listing.deletedAt)
73
+ .sort(sortByOrder);
72
74
 
73
75
  const payload = {
74
76
  feature: flattenedFeature,
@@ -93,3 +95,9 @@ export const loadTargetFeature = () => {
93
95
  }
94
96
  };
95
97
  };
98
+
99
+ function sortByOrder(listingA, listingB) {
100
+ const a = listingA?.order || 999;
101
+ const b = listingB?.order || 999;
102
+ return a - b;
103
+ }