@servicenow/library-enhanced-element
Version:
Base element for Now Design System components
50 lines (45 loc) • 1.07 kB
JavaScript
import {createUpdateStateEffect} from '@servicenow/ui-effect-update-state';
export const localsSetEffectHandler = createUpdateStateEffect(
(state, action) => {
/* eslint-disable-next-line no-undef */
if (process.env.NODE_ENV === 'development') {
/* eslint-disable-next-line no-console */
console.warn(
'`locals` from @devsnc/library-enhanced-element is deprecated. Please migrate to using `updateState` helper method from @servicenow/ui-core.'
);
}
const {payload} = action;
return {
...state,
locals: {
...state.locals,
...payload
}
};
}
);
export const extendWithLocals = (baseConfig) => {
const localsConfig = baseConfig.locals || {};
const locals = Object.keys(localsConfig).reduce(
(acc, key) => ({
...acc,
[key]: localsConfig[key].default
}),
{}
);
return {
...baseConfig,
actionHandlers: {
LOCALS_SET: {
...localsSetEffectHandler,
stopPropagation: true
},
...baseConfig.actionHandlers
},
initialState: {
locals,
properties: {},
...baseConfig.initialState
}
};
};