ngx-modialog-11
Version:
Modal / Dialog for Angular
68 lines • 11.1 kB
JavaScript
import { FluentAssign } from '../framework/fluent-assign';
import { extend, arrayUnion } from '../framework/utils';
const ɵ0 = function supportsKey(keyCode) {
return this.keyboard.indexOf(keyCode) > -1;
};
export const DEFAULT_VALUES = {
inElement: false,
isBlocking: true,
keyboard: [27],
supportsKey: ɵ0
};
const DEFAULT_SETTERS = [
'inElement',
'isBlocking',
'keyboard'
];
export class OverlayContext {
normalize() {
if (this.isBlocking !== false) {
this.isBlocking = true;
}
if (this.keyboard === null) {
this.keyboard = [];
}
else if (typeof this.keyboard === 'number') {
this.keyboard = [this.keyboard];
}
else if (!Array.isArray(this.keyboard)) {
this.keyboard = DEFAULT_VALUES.keyboard;
}
}
}
/**
* A core context builder for a modal window instance, used to define the context upon
* a modal choose it's behaviour.
*/
export class OverlayContextBuilder extends FluentAssign {
constructor(defaultValues, initialSetters, baseType) {
super(extend(DEFAULT_VALUES, defaultValues || {}), arrayUnion(DEFAULT_SETTERS, initialSetters || []), baseType || OverlayContext // https://github.com/Microsoft/TypeScript/issues/7234
);
}
/**
* Returns an new OverlayConfig with a context property representing the data in this builder.
* @param base A base configuration that the result will extend
*/
toOverlayConfig(base) {
return extend(base || {}, {
context: this.toJSON()
});
}
}
/**
* A helper to create an `OverlayConfig` on the fly.
* Since `OverlayConfig` requires context it means a builder is needed, this process had some boilerplate.
* When a quick, on the fly overlay config is needed use this helper to avoid that boilerplate.
*
* A builder is used as an API to allow setting the context and providing some operations around the modal.
* When a developers knows the context before hand we can skip this step, this is what this factory is for.
*
* @param context The context for the modal
* @param baseContextType Optional. The type/class of the context. This is the class used to init a new instance of the context
* @param baseConfig A base configuration that the result will extend
*/
export function overlayConfigFactory(context, baseContextType, baseConfig) {
return new OverlayContextBuilder(context, undefined, baseContextType).toOverlayConfig(baseConfig);
}
export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1vZGlhbG9nLTExL3NyYy9saWIvbW9kZWxzL292ZXJsYXktY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7V0FRekMsU0FBUyxXQUFXLENBQUMsT0FBZTtJQUMvQyxPQUF1QixJQUFJLENBQUMsUUFBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBTkgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNkLFdBQVcsSUFFVjtDQUNGLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRztJQUN0QixXQUFXO0lBQ1gsWUFBWTtJQUNaLFVBQVU7Q0FDWCxDQUFDO0FBRUYsTUFBTSxPQUFPLGNBQWM7SUF1QnpCLFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztTQUNwQjthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7U0FDekM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQWdELFNBQVEsWUFBZTtJQXdCbEYsWUFBWSxhQUF1QixFQUN2QixjQUF5QixFQUN6QixRQUFzQjtRQUNoQyxLQUFLLENBQ0gsTUFBTSxDQUFNLGNBQWMsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLEVBQ2hELFVBQVUsQ0FBUyxlQUFlLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQyxFQUN6RCxRQUFRLElBQVMsY0FBYyxDQUFDLHNEQUFzRDtTQUN2RixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxJQUFvQjtRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQU1EOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFJLE9BQVUsRUFBRSxlQUFxQixFQUFFLFVBQTBCO0lBQ25HLE9BQU8sSUFBSSxxQkFBcUIsQ0FBMEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsdWVudEFzc2lnbiwgRmx1ZW50QXNzaWduTWV0aG9kIH0gZnJvbSAnLi4vZnJhbWV3b3JrL2ZsdWVudC1hc3NpZ24nO1xyXG5pbXBvcnQgeyBleHRlbmQsIGFycmF5VW5pb24gfSBmcm9tICcuLi9mcmFtZXdvcmsvdXRpbHMnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuL2RpYWxvZy1yZWYnO1xyXG5pbXBvcnQgeyBXaWRlVkNSZWYsIE92ZXJsYXlDb25maWcgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9WQUxVRVMgPSB7XHJcbiAgaW5FbGVtZW50OiBmYWxzZSxcclxuICBpc0Jsb2NraW5nOiB0cnVlLFxyXG4gIGtleWJvYXJkOiBbMjddLFxyXG4gIHN1cHBvcnRzS2V5OiBmdW5jdGlvbiBzdXBwb3J0c0tleShrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoPEFycmF5PG51bWJlcj4+dGhpcy5rZXlib2FyZCkuaW5kZXhPZihrZXlDb2RlKSA+IC0xO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVEVSUyA9IFtcclxuICAnaW5FbGVtZW50JyxcclxuICAnaXNCbG9ja2luZycsXHJcbiAgJ2tleWJvYXJkJ1xyXG5dO1xyXG5cclxuZXhwb3J0IGNsYXNzIE92ZXJsYXlDb250ZXh0IHtcclxuICAvKipcclxuICAgKiBEZXNjcmliZXMgaWYgdGhlIG1vZGFsIGlzIHJlbmRlcmVkIHdpdGhpbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuXHJcbiAgICogVGhlIGNvbnRhaW5lciBlbGVtZW50IGlzIHRoZSBWaWV3Q29udGFpbmVyUmVmIHN1cHBsaWVkLlxyXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxyXG4gICAqL1xyXG4gIGluRWxlbWVudDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVzY3JpYmVzIGlmIHRoZSBtb2RhbCBpcyBibG9ja2luZyBtb2RhbC5cclxuICAgKiBBIEJsb2NraW5nIG1vZGFsIGlzIG5vdCBjbG9zYWJsZSBieSBjbGlja2luZyBvdXRzaWRlIG9mIHRoZSBtb2RhbCB3aW5kb3cuXHJcbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXHJcbiAgICovXHJcbiAgaXNCbG9ja2luZzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogS2V5Ym9hcmQgdmFsdWUvcyB0aGF0IGNsb3NlIHRoZSBtb2RhbC5cclxuICAgKiBBY2NlcHRzIGVpdGhlciBhIHNpbmdsZSBudW1lcmljIHZhbHVlIG9yIGFuIGFycmF5IG9mIG51bWVyaWMgdmFsdWVzLlxyXG4gICAqIEEgbW9kYWwgY2xvc2VkIGJ5IGEga2V5Ym9hcmQgc3Ryb2tlIHdpbGwgcmVzdWx0IGluIGEgJ3JlamVjdCcgbm90aWZpY2F0aW9uIGZyb20gdGhlIHByb21pc2UuXHJcbiAgICogRGVmYXVsdHMgdG8gMjcsIHNldCBgbnVsbGAgaW1wbGljaXRseSB0byBkaXNhYmxlLlxyXG4gICAqL1xyXG4gIGtleWJvYXJkOiBBcnJheTxudW1iZXI+IHwgbnVtYmVyO1xyXG5cclxuICBub3JtYWxpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0Jsb2NraW5nICE9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmlzQmxvY2tpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmtleWJvYXJkID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMua2V5Ym9hcmQgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMua2V5Ym9hcmQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMua2V5Ym9hcmQgPSBbPG51bWJlcj50aGlzLmtleWJvYXJkXTtcclxuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoPEFycmF5PG51bWJlcj4+dGhpcy5rZXlib2FyZCkpIHtcclxuICAgICAgdGhpcy5rZXlib2FyZCA9IERFRkFVTFRfVkFMVUVTLmtleWJvYXJkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29yZSBjb250ZXh0IGJ1aWxkZXIgZm9yIGEgbW9kYWwgd2luZG93IGluc3RhbmNlLCB1c2VkIHRvIGRlZmluZSB0aGUgY29udGV4dCB1cG9uXHJcbiAqIGEgbW9kYWwgY2hvb3NlIGl0J3MgYmVoYXZpb3VyLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE92ZXJsYXlDb250ZXh0QnVpbGRlcjxUIGV4dGVuZHMgT3ZlcmxheUNvbnRleHQ+IGV4dGVuZHMgRmx1ZW50QXNzaWduPFQ+IHtcclxuICAvKipcclxuICAgKiBEZXNjcmliZXMgaWYgdGhlIG1vZGFsIGlzIHJlbmRlcmVkIHdpdGhpbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuXHJcbiAgICogVGhlIGNvbnRhaW5lciBlbGVtZW50IGlzIHRoZSBWaWV3Q29udGFpbmVyUmVmIHN1cHBsaWVkLlxyXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxyXG4gICAqL1xyXG4gIGluRWxlbWVudDogRmx1ZW50QXNzaWduTWV0aG9kPGJvb2xlYW4sIHRoaXM+O1xyXG5cclxuICAvKipcclxuICAgKiBEZXNjcmliZXMgaWYgdGhlIG1vZGFsIGlzIGJsb2NraW5nIG1vZGFsLlxyXG4gICAqIEEgQmxvY2tpbmcgbW9kYWwgaXMgbm90IGNsb3NhYmxlIGJ5IGNsaWNraW5nIG91dHNpZGUgb2YgdGhlIG1vZGFsIHdpbmRvdy5cclxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cclxuICAgKi9cclxuICBpc0Jsb2NraW5nOiBGbHVlbnRBc3NpZ25NZXRob2Q8Ym9vbGVhbiwgdGhpcz47XHJcblxyXG4gIC8qKlxyXG4gICAqIEtleWJvYXJkIHZhbHVlL3MgdGhhdCBjbG9zZSB0aGUgbW9kYWwuXHJcbiAgICogQWNjZXB0cyBlaXRoZXIgYSBzaW5nbGUgbnVtZXJpYyB2YWx1ZSBvciBhbiBhcnJheSBvZiBudW1lcmljIHZhbHVlcy5cclxuICAgKiBBIG1vZGFsIGNsb3NlZCBieSBhIGtleWJvYXJkIHN0cm9rZSB3aWxsIHJlc3VsdCBpbiBhICdyZWplY3QnIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBwcm9taXNlLlxyXG4gICAqIERlZmF1bHRzIHRvIDI3LCBzZXQgYG51bGxgIGltcGxpY2l0bHkgdG8gZGlzYWJsZS5cclxuICAgKi9cclxuICBrZXlib2FyZDogRmx1ZW50QXNzaWduTWV0aG9kPEFycmF5PG51bWJlcj4gfCBudW1iZXIsIHRoaXM+O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoZGVmYXVsdFZhbHVlcz86IFQgfCBUW10sXHJcbiAgICAgICAgICAgICAgaW5pdGlhbFNldHRlcnM/OiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICBiYXNlVHlwZT86IG5ldyAoKSA9PiBUKSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgZXh0ZW5kPGFueT4oREVGQVVMVF9WQUxVRVMsIGRlZmF1bHRWYWx1ZXMgfHwge30pLFxyXG4gICAgICBhcnJheVVuaW9uPHN0cmluZz4oREVGQVVMVF9TRVRURVJTLCBpbml0aWFsU2V0dGVycyB8fCBbXSksXHJcbiAgICAgIGJhc2VUeXBlIHx8IDxhbnk+T3ZlcmxheUNvbnRleHQgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MjM0XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhbiBuZXcgT3ZlcmxheUNvbmZpZyB3aXRoIGEgY29udGV4dCBwcm9wZXJ0eSByZXByZXNlbnRpbmcgdGhlIGRhdGEgaW4gdGhpcyBidWlsZGVyLlxyXG4gICAqIEBwYXJhbSBiYXNlIEEgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgdGhlIHJlc3VsdCB3aWxsIGV4dGVuZFxyXG4gICAqL1xyXG4gIHRvT3ZlcmxheUNvbmZpZyhiYXNlPzogT3ZlcmxheUNvbmZpZyk6IE92ZXJsYXlDb25maWcge1xyXG4gICAgcmV0dXJuIGV4dGVuZChiYXNlIHx8IHt9LCB7XHJcbiAgICAgIGNvbnRleHQ6IHRoaXMudG9KU09OKClcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNb2RhbENvbnRyb2xsaW5nQ29udGV4dEJ1aWxkZXI8VD4ge1xyXG4gIG9wZW4odmlld0NvbnRhaW5lcj86IFdpZGVWQ1JlZik6IERpYWxvZ1JlZjxUPjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgaGVscGVyIHRvIGNyZWF0ZSBhbiBgT3ZlcmxheUNvbmZpZ2Agb24gdGhlIGZseS5cclxuICogU2luY2UgYE92ZXJsYXlDb25maWdgIHJlcXVpcmVzIGNvbnRleHQgaXQgbWVhbnMgYSBidWlsZGVyIGlzIG5lZWRlZCwgdGhpcyBwcm9jZXNzIGhhZCBzb21lIGJvaWxlcnBsYXRlLlxyXG4gKiBXaGVuIGEgcXVpY2ssIG9uIHRoZSBmbHkgb3ZlcmxheSBjb25maWcgaXMgbmVlZGVkIHVzZSB0aGlzIGhlbHBlciB0byBhdm9pZCB0aGF0IGJvaWxlcnBsYXRlLlxyXG4gKlxyXG4gKiBBIGJ1aWxkZXIgaXMgdXNlZCBhcyBhbiBBUEkgdG8gYWxsb3cgc2V0dGluZyB0aGUgY29udGV4dCBhbmQgcHJvdmlkaW5nIHNvbWUgb3BlcmF0aW9ucyBhcm91bmQgdGhlIG1vZGFsLlxyXG4gKiBXaGVuIGEgZGV2ZWxvcGVycyBrbm93cyB0aGUgY29udGV4dCBiZWZvcmUgaGFuZCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAsIHRoaXMgaXMgd2hhdCB0aGlzIGZhY3RvcnkgaXMgZm9yLlxyXG4gKlxyXG4gKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBmb3IgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSBiYXNlQ29udGV4dFR5cGUgT3B0aW9uYWwuIFRoZSB0eXBlL2NsYXNzIG9mIHRoZSBjb250ZXh0LiBUaGlzIGlzIHRoZSBjbGFzcyB1c2VkIHRvIGluaXQgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNvbnRleHRcclxuICogQHBhcmFtIGJhc2VDb25maWcgQSBiYXNlIGNvbmZpZ3VyYXRpb24gdGhhdCB0aGUgcmVzdWx0IHdpbGwgZXh0ZW5kXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmxheUNvbmZpZ0ZhY3Rvcnk8VD4oY29udGV4dDogVCwgYmFzZUNvbnRleHRUeXBlPzogYW55LCBiYXNlQ29uZmlnPzogT3ZlcmxheUNvbmZpZyk6IE92ZXJsYXlDb25maWcge1xyXG4gIHJldHVybiBuZXcgT3ZlcmxheUNvbnRleHRCdWlsZGVyPFQgJiBPdmVybGF5Q29udGV4dD4oPGFueT5jb250ZXh0LCB1bmRlZmluZWQsIGJhc2VDb250ZXh0VHlwZSkudG9PdmVybGF5Q29uZmlnKGJhc2VDb25maWcpO1xyXG59XHJcbiJdfQ==