Hoppa till innehåll

Common

All imports from base package are available both on the server and client.

DOM friendly unique identifier for the WebApp.

import { appId } from '@soleil-se/app-util';
console.log(appId); // For example: 12_682d461b1708a9bb1ea13efd

If the WebApp is running in offline mode or not.

import { isOffline } from '@soleil-se/app-util';
console.log(isOffline); // true or false

If the WebApp is running in online mode or not.

import { isOnline } from '@soleil-se/app-util';
console.log(isOnline); // true or false

If the current code is running on the server.

import { isServer } from '@soleil-se/app-util';
console.log(isServer); // true or false

If the current code is running in the browser.

import { isBrowser } from '@soleil-se/app-util';
console.log(isBrowser); // true or false

Get a prefixed namespace unique for app.

Returns: String - Prefixed namespace.

ParamTypeDefault
[prefix]string'app'
import { getNamespace } from '@soleil-se/app-util';
console.log(getNamespace());
// For example: app_12_682d461b1708a9bb1ea13efd
console.log(getNamespace('input'));
// For example: input_12_682d461b1708a9bb1ea13efd
// If the app is in a decoration template the Portlet ID is the same for all instances, so the ID of the decorated node is used as well.
console.log(getNamespace('decoration'));
// For example: decoration_10_3871c02f1754f3aa8f9d4eb_12_70c3d424173b4900fc550e1c

Generate a unique identifier with a random UUID without dashes.

Returns: String - Unique identifier.

ParamTypeDefault
[prefix]string'id'
import { generateId } from '@soleil-se/app-util';
console.log(generateId());
// For example: id_550e8400e29b41d4a716446655440000
console.log(generateId('input'));
// For example: input_550e8400e29b41d4a716446655440000

Get URI for a route.

Returns: String - URI for route.

ParamTypeDescription
routeStringA route.
queryObjectObject with query string parameters
import { getRouteUri } from '@soleil-se/app-util';
console.log(getRouteUri('/items'));
// URI structure: /appresource/{pageId}/{portletId}>/items
import { getRouteUri } from '@soleil-se/app-util';
console.log(getRouteUri('/items', { foo: 'bar' }));
// URI structure: /appresource/{pageId}/{portletId}>/items?foo=bar

Get URI for a resource.

Returns: String - URI for a resource.

ParamTypeDescription
resourceStringA resource.
import { getResourceUri } from '@soleil-se/app-util';
console.log(getResourceUri('/image.png'));
// URI structure: /webapp-files/<webappname>/<webappversion>/image.png

Get props that are passed to app when rendering.

Returns: * | Object - Value or object.

ParamTypeDescription
[key]StringKey for value.
import { getAppProps } from '@soleil-se/app-util';
// Get value with key
const myValue = getAppProps('myValue');
// Or with destructuring
const { myValue } = getAppProps();

stringifyParams(params [, options]) ⇨ String

Section titled “stringifyParams(params [, options]) ⇨ String”

Stringify an object to a query string compatible with Sitevision.

Returns: String - Stringified parameters.

ParamTypeDefaultDescription
paramsObjectObject with parameters to stringify.
[options]Object{}Options object.
[options.addQueryPrefix]BooleanfalseIf a leading ? should be added to the string.
import { stringifyParams } from '@soleil-se/app-util';
const queryString = stringifyParams({ foo: 'bar', num: 1 });
// foo=bar&num=1
const queryString = stringifyParams({ foo: 'bar', num: 1 }, { addQueryPrefix: true });
// ?foo=bar&num=1

Parse an URL, URI or query string to an object containing its query parameters.

Returns: Object - Parsed parameters.

ParamTypeDefaultDescription
urlStringURL, URI or query string to be parsed, must start with or contain ”?“
import { parseParams } from '@soleil-se/app-util';
const params = parseParams('?foo=bar&arr[]=1&arr[]=2');
// { foo: 'bar', arr: [1, 2] }

Compares two strings in a localized manner, taking into account Nordic special characters.
The order is defined as: a-z å ä æ ö ø (case-insensitive, with lowercase before uppercase).
Also handles accented characters.

Returns: Number - Negative if a < b, positive if a > b, zero if equal.

ParamTypeDescription
aStringThe first string to compare.
bStringThe second string to compare.
import { localizedCompare } from '@soleil-se/app-util';
// Basic alphabetical sorting
const fruits = ['banana', 'apple', 'zebra', 'cherry'];
fruits.sort(localizedCompare);
// Result: ['apple', 'banana', 'cherry', 'zebra']
// Nordic characters are sorted correctly
const names = ['Öberg', 'Gustavsson', 'Åström', 'Anderson', 'Ärlig'];
names.sort(localizedCompare);
// Result: ['Anderson', 'Gustavsson', 'Åström', 'Ärlig', 'Öberg']
// Case-insensitive with lowercase taking precedence
const words = ['Apple', 'apple', 'Banana', 'banana'];
words.sort(localizedCompare);
// Result: ['apple', 'Apple', 'banana', 'Banana']
// Handles accents correctly
const names = ['Pérez', 'Perez', 'café', 'cafe', 'José', 'Jose'];
names.sort(localizedCompare);
// Result: ['cafe', 'café', 'Jose', 'José', 'Perez', 'Pérez']

localizedCompareBy(prop | props) ⇨ Function

Section titled “localizedCompareBy(prop | props) ⇨ Function”

Creates a comparator function for sorting objects by one or more properties. The property values are compared using localized string comparison (a-z å ä æ ö ø). When multiple properties are provided, they are used in order as tiebreakers.

Returns: Function - A comparator function that accepts two objects and returns their sort order.

ParamTypeDescription
propString | String[]Property name(s) to compare by. Multiple properties sort in the order provided.
import { localizedCompareBy } from '@soleil-se/app-util';
const employees = [
{ name: 'Öberg', department: 'IT' },
{ name: 'Anderson', department: 'HR' },
{ name: 'Åström', department: 'Sales' },
{ name: 'Ärlig', department: 'IT' }
];
// Sort by name property
employees.sort(localizedCompareBy('name'));
// Result: [
// { name: 'Anderson', ... },
// { name: 'Åström', ... },
// { name: 'Ärlig', ... },
// { name: 'Öberg', ... }
// ]
// Sort by multiple properties (department first, then name)
employees.sort(localizedCompareBy(['department', 'name']));
// Result: First sorted by department, then by name within each department
// [
// { name: 'Anderson', department: 'HR' },
// { name: 'Ärlig', department: 'IT' },
// { name: 'Öberg', department: 'IT' },
// { name: 'Åström', department: 'Sales' }
// ]