ngnz-time-input
Version:
Material design time input for Angular 8
44 lines • 5.86 kB
JavaScript
export class CssClassCreator {
constructor(initVal) {
this._classes = {};
if (!!initVal) {
this.appendCssClasses(initVal);
}
}
appendCssClasses(classes, trigger = true) {
if (!!classes) {
if (typeof classes === 'string') {
this._createFromString(classes, trigger);
}
else if (Array.isArray(classes)) {
this._createFromArray(classes, trigger);
}
else if (typeof classes === 'object') {
Object.assign(this._classes, classes);
}
}
return this;
}
generate() {
const out = {};
for (const item in this._classes) {
if (this._classes.hasOwnProperty(item)) {
out[item] =
typeof this._classes[item] === 'function'
? this._classes[item].call(this)
: !!this._classes[item];
}
}
return out;
}
_createFromArray(classes, trigger) {
for (const cls of classes) {
this._classes['' + cls] = true;
}
}
_createFromString(classes, trigger) {
const splitted = classes.split(/[\s,;]+/).filter((item) => !!item);
this._createFromArray(splitted, trigger);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLWNsYXNzLWNyZWF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ256LXRpbWUtaW5wdXQvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9jc3MtY2xhc3MtY3JlYXRvci9jc3MtY2xhc3MtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sZUFBZTtJQUV4QixZQUFZLE9BQThCO1FBRGhDLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUNaLE9BQTZCLEVBQzdCLFVBQTBCLElBQUk7UUFFOUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDekM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxHQUFHLEdBQWUsRUFBRSxDQUFDO1FBQzNCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVO3dCQUNyQyxDQUFDLENBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDUyxnQkFBZ0IsQ0FBQyxPQUFpQixFQUFFLE9BQXVCO1FBQ2pFLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNsQztJQUNMLENBQUM7SUFDUyxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsT0FBdUI7UUFDaEUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5GdW5jdGlvbiB9IGZyb20gJy4uLy4uL2RhdGF0eXBlcy9ib29sZWFuLWZ1bmN0aW9uJztcbmltcG9ydCB7IEJvb2xlYW5UcmlnZ2VyIH0gZnJvbSAnLi4vLi4vZGF0YXR5cGVzL2Jvb2xlYW4tdHJpZ2dlcic7XG5pbXBvcnQgeyBDc3NDbGFzc2VzIH0gZnJvbSAnLi4vLi4vZGF0YXR5cGVzL2Nzcy1jbGFzc2VzJztcbmltcG9ydCB7IENzc0NsYXNzZXNEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YXR5cGVzL2Nzcy1jbGFzc2VzLWRlZmluaXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQ3NzQ2xhc3NDcmVhdG9yIHtcbiAgICBwcm90ZWN0ZWQgX2NsYXNzZXM6IENzc0NsYXNzZXMgPSB7fTtcbiAgICBjb25zdHJ1Y3Rvcihpbml0VmFsPzogQ3NzQ2xhc3Nlc0RlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKCEhaW5pdFZhbCkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRDc3NDbGFzc2VzKGluaXRWYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kQ3NzQ2xhc3NlcyhcbiAgICAgICAgY2xhc3NlczogQ3NzQ2xhc3Nlc0RlZmluaXRpb24sXG4gICAgICAgIHRyaWdnZXI6IEJvb2xlYW5UcmlnZ2VyID0gdHJ1ZVxuICAgICkge1xuICAgICAgICBpZiAoISFjbGFzc2VzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRnJvbVN0cmluZyhjbGFzc2VzLCB0cmlnZ2VyKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjbGFzc2VzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUZyb21BcnJheShjbGFzc2VzLCB0cmlnZ2VyKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNsYXNzZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jbGFzc2VzLCBjbGFzc2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBnZW5lcmF0ZSgpIHtcbiAgICAgICAgY29uc3Qgb3V0OiBDc3NDbGFzc2VzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBpbiB0aGlzLl9jbGFzc2VzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY2xhc3Nlcy5oYXNPd25Qcm9wZXJ0eShpdGVtKSkge1xuICAgICAgICAgICAgICAgIG91dFtpdGVtXSA9XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLl9jbGFzc2VzW2l0ZW1dID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLl9jbGFzc2VzW2l0ZW1dIGFzIEJvb2xlYW5GdW5jdGlvbikuY2FsbCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAhIXRoaXMuX2NsYXNzZXNbaXRlbV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGcm9tQXJyYXkoY2xhc3Nlczogc3RyaW5nW10sIHRyaWdnZXI6IEJvb2xlYW5UcmlnZ2VyKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2xzIG9mIGNsYXNzZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsYXNzZXNbJycgKyBjbHNdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUZyb21TdHJpbmcoY2xhc3Nlczogc3RyaW5nLCB0cmlnZ2VyOiBCb29sZWFuVHJpZ2dlcikge1xuICAgICAgICBjb25zdCBzcGxpdHRlZCA9IGNsYXNzZXMuc3BsaXQoL1tcXHMsO10rLykuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuICAgICAgICB0aGlzLl9jcmVhdGVGcm9tQXJyYXkoc3BsaXR0ZWQsIHRyaWdnZXIpO1xuICAgIH1cbn1cbiJdfQ==