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
JavaScript
;
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;
}, {});
}