UNPKG

@cmdap/ng-wizard

Version:

A simple wizard/stepper component for Angular 9 utilizing Angular Routing for navigation.

107 lines 11.4 kB
/** * Returns true if the component extends the NgWizardStep class or implements the NgWizardStepInterface. * * @param componentRef The reference to the component to verify */ export function componentImplementsNgWizardStepInterface(componentRef) { return 'wsIsValid' in componentRef && 'wsOnNext' in componentRef && 'wsOnPrevious' in componentRef; } /** * Returns the NgWizardStepData with the given path in the stepData list or undefined if none is * found. * * @param stepData The list with NgWizardStepDatas * @param path The path you want to get the NgWizardStepData for */ export function getStepDataForPath(stepData, path) { return stepData.find(data => data.path === path); } /** * Returns the NgWizardStepData for the given url in the stepData list or undefined if none is * found. * * @param stepData The list with NgWizardStepDatas * @param url The url which you want to get the NgWizardStepData for */ export function getStepDataForUrl(stepData, url) { // gets 'path' in the url '/wizard/path?key=value' const path = url.split('/').pop().split('?')[0]; return getStepDataForPath(stepData, path); } /** * Returns the default wizard options. */ export function getDefaultWizardOptions() { return { name: '', navBar: { icons: { previous: '<i class="material-icons ng-wizard-icon">done</i>', current: '<i class="material-icons ng-wizard-icon">create</i>', next: '<i class="material-icons ng-wizard-icon">lock</i>', }, }, buttons: { previous: { label: '<i class="material-icons ng-wizard-icon">chevron_left</i> Previous', }, next: { label: 'Next <i class="material-icons ng-wizard-icon">chevron_right</i>', }, } }; } /** * Merges the wizard options in the wizard route's config with the default wizard options. * * @param wizardOptions The wizard options in the wizard route's config */ export function mergeWizardOptions(wizardOptions) { if (!wizardOptions) { return getDefaultWizardOptions(); } return Object.assign(Object.assign({}, getDefaultWizardOptions()), wizardOptions); } /** * Returns the options passed to the wizard step route with an added title attribute. * * @param route The wizard step route configuration */ export function getWizardStepOptions(route) { if (!route.data) { return { title: getStepTitleFromRoute(route) }; } return Object.assign(Object.assign({}, route.data), { title: getStepTitleFromRoute(route) }); } /** * Returns the step title based on the Route configuration. * If the route has a data.title attribute it will be returned. * Else the path will be capitalized and '-' or '_' characters will be replaces by spaces. * * @param route The Angular Route object */ export function getStepTitleFromRoute(route) { if (route.data && route.data.title) { return route.data.title; } return capitalize(insertSpaces(route.path)); } /** * Capitalizes the first character of the passed value. */ function capitalize(value) { if (!value) { return value; } return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase(); } /** * Replaces '-' and '_' characters by spaces. */ function insertSpaces(value) { if (!value) { return value; } return value.replace(/[-_]/g, ' ').trim(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctd2l6YXJkLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctd2l6YXJkL3NyYy9saWIvbmctd2l6YXJkLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsd0NBQXdDLENBQUMsWUFBK0I7SUFDdEYsT0FBTyxXQUFXLElBQUksWUFBWSxJQUFJLFVBQVUsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLFlBQVksQ0FBQztBQUNyRyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQTRCLEVBQUUsSUFBWTtJQUMzRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBNEIsRUFBRSxHQUFXO0lBQ3pFLGtEQUFrRDtJQUNsRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU87UUFDTCxJQUFJLEVBQUUsRUFBRTtRQUNSLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsbURBQW1EO2dCQUM3RCxPQUFPLEVBQUUscURBQXFEO2dCQUM5RCxJQUFJLEVBQUUsbURBQW1EO2FBQzFEO1NBQ0Y7UUFDRCxPQUFPLEVBQUU7WUFDUCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLG9FQUFvRTthQUM1RTtZQUNELElBQUksRUFBRTtnQkFDSixLQUFLLEVBQUUsaUVBQWlFO2FBQ3pFO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsYUFBaUI7SUFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNsQixPQUFPLHVCQUF1QixFQUFFLENBQUM7S0FDbEM7SUFFRCx1Q0FBWSx1QkFBdUIsRUFBRSxHQUFLLGFBQWEsRUFBRztBQUM1RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFZO0lBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0tBQ2hEO0lBRUQsdUNBQ0ssS0FBSyxDQUFDLElBQUksS0FDYixLQUFLLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQ25DO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxLQUFZO0lBQ2hELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQ3pCO0lBQ0QsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsVUFBVSxDQUFDLEtBQWE7SUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1dpemFyZFN0ZXBEYXRhIH0gZnJvbSAnLi9uZy13aXphcmQtc3RlcC9uZy13aXphcmQtc3RlcC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOZ1dpemFyZE9wdGlvbnMgfSBmcm9tICcuL25nLXdpemFyZC1vcHRpb25zL25nLXdpemFyZC1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOZ1dpemFyZFN0ZXBPcHRpb25zIH0gZnJvbSAnLi9uZy13aXphcmQtc3RlcC9uZy13aXphcmQtc3RlcC1vcHRpb25zJztcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbXBvbmVudCBleHRlbmRzIHRoZSBOZ1dpemFyZFN0ZXAgY2xhc3Mgb3IgaW1wbGVtZW50cyB0aGUgTmdXaXphcmRTdGVwSW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnRSZWYgVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IHRvIHZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50SW1wbGVtZW50c05nV2l6YXJkU3RlcEludGVyZmFjZShjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+KTogYm9vbGVhbiB7XG4gIHJldHVybiAnd3NJc1ZhbGlkJyBpbiBjb21wb25lbnRSZWYgJiYgJ3dzT25OZXh0JyBpbiBjb21wb25lbnRSZWYgJiYgJ3dzT25QcmV2aW91cycgaW4gY29tcG9uZW50UmVmO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIE5nV2l6YXJkU3RlcERhdGEgd2l0aCB0aGUgZ2l2ZW4gcGF0aCBpbiB0aGUgc3RlcERhdGEgbGlzdCBvciB1bmRlZmluZWQgaWYgbm9uZSBpc1xuICogZm91bmQuXG4gKlxuICogQHBhcmFtIHN0ZXBEYXRhIFRoZSBsaXN0IHdpdGggTmdXaXphcmRTdGVwRGF0YXNcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHlvdSB3YW50IHRvIGdldCB0aGUgTmdXaXphcmRTdGVwRGF0YSBmb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBEYXRhRm9yUGF0aChzdGVwRGF0YTogTmdXaXphcmRTdGVwRGF0YVtdLCBwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ZXBEYXRhLmZpbmQoZGF0YSA9PiBkYXRhLnBhdGggPT09IHBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIE5nV2l6YXJkU3RlcERhdGEgZm9yIHRoZSBnaXZlbiB1cmwgaW4gdGhlIHN0ZXBEYXRhIGxpc3Qgb3IgdW5kZWZpbmVkIGlmIG5vbmUgaXNcbiAqIGZvdW5kLlxuICpcbiAqIEBwYXJhbSBzdGVwRGF0YSBUaGUgbGlzdCB3aXRoIE5nV2l6YXJkU3RlcERhdGFzXG4gKiBAcGFyYW0gdXJsIFRoZSB1cmwgd2hpY2ggeW91IHdhbnQgdG8gZ2V0IHRoZSBOZ1dpemFyZFN0ZXBEYXRhIGZvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RlcERhdGFGb3JVcmwoc3RlcERhdGE6IE5nV2l6YXJkU3RlcERhdGFbXSwgdXJsOiBzdHJpbmcpIHtcbiAgLy8gZ2V0cyAncGF0aCcgaW4gdGhlIHVybCAnL3dpemFyZC9wYXRoP2tleT12YWx1ZSdcbiAgY29uc3QgcGF0aCA9IHVybC5zcGxpdCgnLycpLnBvcCgpLnNwbGl0KCc/JylbMF07XG4gIHJldHVybiBnZXRTdGVwRGF0YUZvclBhdGgoc3RlcERhdGEsIHBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGRlZmF1bHQgd2l6YXJkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0V2l6YXJkT3B0aW9ucygpOiBOZ1dpemFyZE9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICcnLFxuICAgIG5hdkJhcjoge1xuICAgICAgaWNvbnM6IHtcbiAgICAgICAgcHJldmlvdXM6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG5nLXdpemFyZC1pY29uXCI+ZG9uZTwvaT4nLFxuICAgICAgICBjdXJyZW50OiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBuZy13aXphcmQtaWNvblwiPmNyZWF0ZTwvaT4nLFxuICAgICAgICBuZXh0OiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBuZy13aXphcmQtaWNvblwiPmxvY2s8L2k+JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBidXR0b25zOiB7XG4gICAgICBwcmV2aW91czoge1xuICAgICAgICBsYWJlbDogJzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgbmctd2l6YXJkLWljb25cIj5jaGV2cm9uX2xlZnQ8L2k+IFByZXZpb3VzJyxcbiAgICAgIH0sXG4gICAgICBuZXh0OiB7XG4gICAgICAgIGxhYmVsOiAnTmV4dCA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG5nLXdpemFyZC1pY29uXCI+Y2hldnJvbl9yaWdodDwvaT4nLFxuICAgICAgfSxcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogTWVyZ2VzIHRoZSB3aXphcmQgb3B0aW9ucyBpbiB0aGUgd2l6YXJkIHJvdXRlJ3MgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgd2l6YXJkIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHdpemFyZE9wdGlvbnMgVGhlIHdpemFyZCBvcHRpb25zIGluIHRoZSB3aXphcmQgcm91dGUncyBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlV2l6YXJkT3B0aW9ucyh3aXphcmRPcHRpb25zOiB7fSk6IE5nV2l6YXJkT3B0aW9ucyB7XG4gIGlmICghd2l6YXJkT3B0aW9ucykge1xuICAgIHJldHVybiBnZXREZWZhdWx0V2l6YXJkT3B0aW9ucygpO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4uZ2V0RGVmYXVsdFdpemFyZE9wdGlvbnMoKSwgLi4ud2l6YXJkT3B0aW9ucyB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSB3aXphcmQgc3RlcCByb3V0ZSB3aXRoIGFuIGFkZGVkIHRpdGxlIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0gcm91dGUgVGhlIHdpemFyZCBzdGVwIHJvdXRlIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpemFyZFN0ZXBPcHRpb25zKHJvdXRlOiBSb3V0ZSk6IE5nV2l6YXJkU3RlcE9wdGlvbnMge1xuICBpZiAoIXJvdXRlLmRhdGEpIHtcbiAgICByZXR1cm4geyB0aXRsZTogZ2V0U3RlcFRpdGxlRnJvbVJvdXRlKHJvdXRlKSB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yb3V0ZS5kYXRhLFxuICAgIHRpdGxlOiBnZXRTdGVwVGl0bGVGcm9tUm91dGUocm91dGUpLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0ZXAgdGl0bGUgYmFzZWQgb24gdGhlIFJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aGUgcm91dGUgaGFzIGEgZGF0YS50aXRsZSBhdHRyaWJ1dGUgaXQgd2lsbCBiZSByZXR1cm5lZC5cbiAqIEVsc2UgdGhlIHBhdGggd2lsbCBiZSBjYXBpdGFsaXplZCBhbmQgJy0nIG9yICdfJyBjaGFyYWN0ZXJzIHdpbGwgYmUgcmVwbGFjZXMgYnkgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSByb3V0ZSBUaGUgQW5ndWxhciBSb3V0ZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBUaXRsZUZyb21Sb3V0ZShyb3V0ZTogUm91dGUpOiBzdHJpbmcge1xuICBpZiAocm91dGUuZGF0YSAmJiByb3V0ZS5kYXRhLnRpdGxlKSB7XG4gICAgcmV0dXJuIHJvdXRlLmRhdGEudGl0bGU7XG4gIH1cbiAgcmV0dXJuIGNhcGl0YWxpemUoaW5zZXJ0U3BhY2VzKHJvdXRlLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBDYXBpdGFsaXplcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBwYXNzZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyAnLScgYW5kICdfJyBjaGFyYWN0ZXJzIGJ5IHNwYWNlcy5cbiAqL1xuZnVuY3Rpb24gaW5zZXJ0U3BhY2VzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bLV9dL2csICcgJykudHJpbSgpO1xufVxuIl19