@cause-911/devextreme
Version:
Run `npm install @cause-911/devextreme --save` to add this library to your project
221 lines • 15.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
import { DxTextAreaComponent } from 'devextreme-angular';
var CauseTextAreaLimitedComponent = /** @class */ (function () {
function CauseTextAreaLimitedComponent() {
this.value = '';
this.maxChar = 225;
this.format = 'text';
this.valueChanged = new EventEmitter();
this.gsm7bitChars = '@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\"#¤%&\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà';
this.gsm7bitCharsExt = '\\^{}\\\\\\[~\\]|€';
this.gsm7bitRegExp = RegExp('^[' + this.gsm7bitChars + ']*$');
this.gsm7bitExtRegExp = RegExp('^[' + this.gsm7bitChars + this.gsm7bitCharsExt + ']*$');
this.gsm7bitExtOnlyRegExp = RegExp('^[' + this.gsm7bitCharsExt + ']*$');
this.messageLength = {
GSM7: 160,
GSM7ext: 160,
UTF16: 70
};
this.multiMessageLength = {
GSM7: 153,
GSM7ext: 153,
UTF16: 67
};
}
/**
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (this.format === 'sms') {
this.maxChar = 0;
}
};
/**
* @param {?} e
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.changed = /**
* @param {?} e
* @return {?}
*/
function (e) {
this.value = e.value;
this.valueChanged.emit(e);
};
/**
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.getNumberOfSms = /**
* @return {?}
*/
function () {
if (!this.value) {
return 0;
}
/** @type {?} */
var length = this.countSmsChars(this.value);
/** @type {?} */
var charset = this.getCharset(this.value);
/** @type {?} */
var perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);
return Math.ceil(length / perMessage);
};
/**
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.getNumberOfChar = /**
* @return {?}
*/
function () {
return (this.value ? this.value.length : 0) + "/" + this.maxChar;
};
/**
* @private
* @param {?} text
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.countSmsChars = /**
* @private
* @param {?} text
* @return {?}
*/
function (text) {
/** @type {?} */
var length = text.length;
/** @type {?} */
var charset = this.getCharset(text);
if (charset === 'GSM7ext') {
length += this.countGsm7bitExt(text);
}
return length;
};
/**
* @private
* @param {?} text
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.countGsm7bitExt = /**
* @private
* @param {?} text
* @return {?}
*/
function (text) {
var _this = this;
/** @type {?} */
var char2;
/** @type {?} */
var chars = (/**
* @return {?}
*/
function () {
/** @type {?} */
var _i;
/** @type {?} */
var _len;
/** @type {?} */
var _results;
_results = [];
for (_i = 0, _len = text.length; _i < _len; _i++) {
char2 = text[_i];
if (char2.match(_this.gsm7bitExtOnlyRegExp) != null) {
_results.push(char2);
}
}
return _results;
});
return chars.length;
};
/**
* @private
* @param {?} text
* @return {?}
*/
CauseTextAreaLimitedComponent.prototype.getCharset = /**
* @private
* @param {?} text
* @return {?}
*/
function (text) {
switch (false) {
case text.match(this.gsm7bitRegExp) == null:
return 'GSM7';
case text.match(this.gsm7bitExtRegExp) == null:
return 'GSM7ext';
default:
return 'UTF16';
}
};
CauseTextAreaLimitedComponent.decorators = [
{ type: Component, args: [{
selector: 'cause-dx-text-area-limited',
template: "<dx-text-area\n [(value)]=\"value\"\n [maxLength]=\"maxChar\"\n minHeight=\"50\"\n valueChangeEvent=\"keyup\"\n [autoResizeEnabled]=\"true\"\n (onValueChanged)=\"changed($event)\">\n</dx-text-area>\n<div class=\"limit\">\n <span *ngIf=\"format === 'sms'\">{{'devextreme.numberOfSms' | translate}} : {{getNumberOfSms()}}</span>\n <span *ngIf=\"format === 'text'\">{{'devextreme.numberOfChar' | translate}} : {{getNumberOfChar()}}</span>\n</div>\n",
styles: [".limit{color:#999;font-size:.8em;text-align:right}"]
}] }
];
/** @nocollapse */
CauseTextAreaLimitedComponent.ctorParameters = function () { return []; };
CauseTextAreaLimitedComponent.propDecorators = {
textarea: [{ type: ViewChild, args: [DxTextAreaComponent, { static: false },] }],
value: [{ type: Input }],
maxChar: [{ type: Input }],
format: [{ type: Input }],
valueChanged: [{ type: Output }]
};
return CauseTextAreaLimitedComponent;
}());
export { CauseTextAreaLimitedComponent };
if (false) {
/** @type {?} */
CauseTextAreaLimitedComponent.prototype.textarea;
/** @type {?} */
CauseTextAreaLimitedComponent.prototype.value;
/** @type {?} */
CauseTextAreaLimitedComponent.prototype.maxChar;
/** @type {?} */
CauseTextAreaLimitedComponent.prototype.format;
/** @type {?} */
CauseTextAreaLimitedComponent.prototype.valueChanged;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.gsm7bitChars;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.gsm7bitCharsExt;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.gsm7bitRegExp;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.gsm7bitExtRegExp;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.gsm7bitExtOnlyRegExp;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.messageLength;
/**
* @type {?}
* @private
*/
CauseTextAreaLimitedComponent.prototype.multiMessageLength;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c2UtdGV4dC1hcmVhLWxpbWl0ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNhdXNlLTkxMS9kZXZleHRyZW1lLyIsInNvdXJjZXMiOlsibGliL2NhdXNlLXRleHQtYXJlYS1saW1pdGVkL2NhdXNlLXRleHQtYXJlYS1saW1pdGVkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7SUE2Qkk7UUF0QlMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDZCxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRWYsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBDLGlCQUFZLEdBQUcsd0lBQXdJLENBQUM7UUFDeEosb0JBQWUsR0FBRyxvQkFBb0IsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNuRix5QkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDbkUsa0JBQWEsR0FBRztZQUNwQixJQUFJLEVBQUUsR0FBRztZQUNULE9BQU8sRUFBRSxHQUFHO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBQ00sdUJBQWtCLEdBQUc7WUFDekIsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUUsR0FBRztZ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QjtnQkFDSSxPQUFPLE9BQU8sQ0FBQztTQUN0QjtJQUNMLENBQUM7O2dCQWhHSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsaWVBQXVEOztpQkFFMUQ7Ozs7OzJCQUVJLFNBQVMsU0FBQyxtQkFBbUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7d0JBQzlDLEtBQUs7MEJBQ0wsS0FBSzt5QkFDTCxLQUFLOytCQUVMLE1BQU07O0lBc0ZYLG9DQUFDO0NBQUEsQUFqR0QsSUFpR0M7U0E1RlksNkJBQTZCOzs7SUFDdEMsaURBQStFOztJQUMvRSw4Q0FBb0I7O0lBQ3BCLGdEQUF1Qjs7SUFDdkIsK0NBQXlCOztJQUV6QixxREFBNEM7Ozs7O0lBRTVDLHFEQUFnSzs7Ozs7SUFDaEssd0RBQStDOzs7OztJQUMvQyxzREFBaUU7Ozs7O0lBQ2pFLHlEQUEyRjs7Ozs7SUFDM0YsNkRBQTJFOzs7OztJQUMzRSxzREFJRTs7Ozs7SUFDRiwyREFJRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RHhUZXh0QXJlYUNvbXBvbmVudH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXVzZS1keC10ZXh0LWFyZWEtbGltaXRlZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhdXNlLXRleHQtYXJlYS1saW1pdGVkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXVzZS10ZXh0LWFyZWEtbGltaXRlZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhdXNlVGV4dEFyZWFMaW1pdGVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKER4VGV4dEFyZWFDb21wb25lbnQsIHtzdGF0aWM6IGZhbHNlfSkgdGV4dGFyZWE6IER4VGV4dEFyZWFDb21wb25lbnQ7XG4gICAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBtYXhDaGFyID0gMjI1O1xuICAgIEBJbnB1dCgpIGZvcm1hdCA9ICd0ZXh0JztcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIGdzbTdiaXRDaGFycyA9ICdAwqMkwqXDqMOpw7nDrMOyw4dcXFxcbsOYw7hcXFxccsOFw6XOlF/Ops6TzpvOqc6gzqjOo86Yzp7DhsOmw5/DiSAhXFxcXFwiI8KkJSZcXCcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj/CoUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaw4TDlsORw5zCp8K/YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrDpMO2w7HDvMOgJztcbiAgICBwcml2YXRlIGdzbTdiaXRDaGFyc0V4dCA9ICdcXFxcXnt9XFxcXFxcXFxcXFxcW35cXFxcXXzigqwnO1xuICAgIHByaXZhdGUgZ3NtN2JpdFJlZ0V4cCA9IFJlZ0V4cCgnXlsnICsgdGhpcy5nc203Yml0Q2hhcnMgKyAnXSokJyk7XG4gICAgcHJpdmF0ZSBnc203Yml0RXh0UmVnRXhwID0gUmVnRXhwKCdeWycgKyB0aGlzLmdzbTdiaXRDaGFycyArIHRoaXMuZ3NtN2JpdENoYXJzRXh0ICsgJ10qJCcpO1xuICAgIHByaXZhdGUgZ3NtN2JpdEV4dE9ubHlSZWdFeHAgPSBSZWdFeHAoJ15bJyArIHRoaXMuZ3NtN2JpdENoYXJzRXh0ICsgJ10qJCcpO1xuICAgIHByaXZhdGUgbWVzc2FnZUxlbmd0aCA9IHtcbiAgICAgICAgR1NNNzogMTYwLFxuICAgICAgICBHU003ZXh0OiAxNjAsXG4gICAgICAgIFVURjE2OiA3MFxuICAgIH07XG4gICAgcHJpdmF0ZSBtdWx0aU1lc3NhZ2VMZW5ndGggPSB7XG4gICAgICAgIEdTTTc6IDE1MyxcbiAgICAgICAgR1NNN2V4dDogMTUzLFxuICAgICAgICBVVEYxNjogNjdcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PT0gJ3NtcycpIHtcbiAgICAgICAgICAgIHRoaXMubWF4Q2hhciA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VkKGUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGUudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQoZSk7XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyT2ZTbXMoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmNvdW50U21zQ2hhcnModGhpcy52YWx1ZSk7XG4gICAgICAgIGNvbnN0IGNoYXJzZXQgPSB0aGlzLmdldENoYXJzZXQodGhpcy52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHBlck1lc3NhZ2UgPSAobGVuZ3RoID4gdGhpcy5tZXNzYWdlTGVuZ3RoW2NoYXJzZXRdID8gdGhpcy5tdWx0aU1lc3NhZ2VMZW5ndGhbY2hhcnNldF0gOiB0aGlzLm1lc3NhZ2VMZW5ndGhbY2hhcnNldF0pO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwobGVuZ3RoIC8gcGVyTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyT2ZDaGFyKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubGVuZ3RoIDogMH0vJHt0aGlzLm1heENoYXJ9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvdW50U21zQ2hhcnModGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuICAgICAgICBjb25zdCBjaGFyc2V0ID0gdGhpcy5nZXRDaGFyc2V0KHRleHQpO1xuXG4gICAgICAgIGlmIChjaGFyc2V0ID09PSAnR1NNN2V4dCcpIHtcbiAgICAgICAgICAgIGxlbmd0aCArPSB0aGlzLmNvdW50R3NtN2JpdEV4dCh0ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb3VudEdzbTdiaXRFeHQodGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNoYXIyO1xuICAgICAgICBjb25zdCBjaGFycyA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBfaSwgX2xlbiwgX3Jlc3VsdHM7XG4gICAgICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSB0ZXh0Lmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgY2hhcjIgPSB0ZXh0W19pXTtcbiAgICAgICAgICAgICAgICBpZiAoY2hhcjIubWF0Y2godGhpcy5nc203Yml0RXh0T25seVJlZ0V4cCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfcmVzdWx0cy5wdXNoKGNoYXIyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNoYXJzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoYXJzZXQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChmYWxzZSkge1xuICAgICAgICAgICAgY2FzZSB0ZXh0Lm1hdGNoKHRoaXMuZ3NtN2JpdFJlZ0V4cCkgPT0gbnVsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0dTTTcnO1xuICAgICAgICAgICAgY2FzZSB0ZXh0Lm1hdGNoKHRoaXMuZ3NtN2JpdEV4dFJlZ0V4cCkgPT0gbnVsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0dTTTdleHQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1VURjE2JztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==