UNPKG

ngxsmk-datepicker

Version:

Lightweight, accessible date and range picker for Angular 17+. Standalone component, Signals, SSR and zoneless-ready, Luxon-based i18n and timezones.

68 lines (67 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ngAdd = ngAdd; const tasks_1 = require("@angular-devkit/schematics/tasks"); const LUXON_VERSION = '^3.0.0'; /** * `ng add ngxsmk-datepicker` entry point. * * The component ships its styles bundled, so no angular.json changes are needed. * This schematic only ensures the `luxon` peer dependency is present and prints * getting-started guidance. */ function ngAdd(options = {}) { return (tree, context) => { ensureLuxon(tree, context, options); context.logger.info(''); context.logger.info('ngxsmk-datepicker is ready to use.'); context.logger.info(''); context.logger.info('Import the standalone component where you need it:'); context.logger.info(''); context.logger.info(" import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';"); context.logger.info(''); context.logger.info(' @Component({'); context.logger.info(' imports: [NgxsmkDatepickerComponent],'); context.logger.info(' template: `<ngxsmk-datepicker mode="single" (valueChange)="onDate($event)" />`,'); context.logger.info(' })'); context.logger.info(''); context.logger.info('Docs: https://github.com/NGXSMK/ngxsmk-datepicker#readme'); return tree; }; } function ensureLuxon(tree, context, options) { const pkgPath = '/package.json'; const buffer = tree.read(pkgPath); if (!buffer) { context.logger.warn('Could not read package.json; please install the "luxon" peer dependency manually.'); return; } let pkg; try { pkg = JSON.parse(buffer.toString()); } catch { context.logger.warn('Could not parse package.json; please install the "luxon" peer dependency manually.'); return; } const hasLuxon = Boolean(pkg['dependencies']?.['luxon'] ?? pkg['devDependencies']?.['luxon']); if (hasLuxon) { return; } const dependencies = pkg['dependencies'] ?? {}; dependencies['luxon'] = LUXON_VERSION; pkg['dependencies'] = sortKeys(dependencies); tree.overwrite(pkgPath, JSON.stringify(pkg, null, 2) + '\n'); context.logger.info(`Added missing peer dependency "luxon@${LUXON_VERSION}" to package.json.`); if (!options.skipInstall) { context.addTask(new tasks_1.NodePackageInstallTask()); } } function sortKeys(record) { return Object.keys(record) .sort() .reduce((acc, key) => { acc[key] = record[key]; return acc; }, {}); }