@syncfusion/ej2-inplace-editor 20.4.38 → 20.4.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,128 +0,0 @@
1
- import { ButtonModel } from '@syncfusion/ej2-buttons';
2
- import { ColorPicker, Slider } from '@syncfusion/ej2-inputs';
3
- import { RichTextEditor } from '@syncfusion/ej2-richtexteditor';
4
- import { DateRangePicker, TimePicker, DateRange } from '@syncfusion/ej2-calendars';
5
- import { AutoComplete, ComboBox, MultiSelect, FieldSettingsModel } from '@syncfusion/ej2-dropdowns';
6
- import { RenderMode } from './inplace-editor';
7
-
8
- /**
9
- * Defines component types that can be used in the In-place Editor.
10
- * @hidden
11
- */
12
-
13
- export type Component = AutoComplete | ColorPicker | ComboBox | DateRangePicker | MultiSelect | RichTextEditor | Slider | TimePicker;
14
-
15
- /**
16
- * Provides information about a Notify.
17
- */
18
- export interface NotifyParams {
19
- type?: string
20
- module: string
21
- target?: HTMLElement | HTMLInputElement
22
- }
23
-
24
- /**
25
- * Provides information about a Component.
26
- */
27
- export interface IComponent {
28
- showPopup?(): void
29
- compObj: Component
30
- render(e: NotifyParams): void
31
- focus(): void
32
- updateValue(e: NotifyParams): void
33
- refresh?(): void
34
- getRenderValue?(): void
35
- }
36
-
37
- /**
38
- * Provides information about a Button.
39
- */
40
- export interface IButton {
41
- type: string
42
- constant: string
43
- // eslint-disable-next-line
44
- title: object
45
- className: string
46
- model: ButtonModel
47
- container: HTMLElement
48
- }
49
-
50
- /**
51
- * Provides information about a ActionBegin event.
52
- */
53
- export interface ActionBeginEventArgs {
54
- /** Defines the name of the field */
55
- data: { [key: string]: string | number }
56
- /** Prevent the submit action. */
57
- cancel?: boolean
58
- }
59
-
60
- /**
61
- * Provides information about a Action event.
62
- */
63
- export interface ActionEventArgs {
64
- /** Prevents the current value render in the editor. */
65
- cancel?: boolean
66
- /** Defines the data manager action result. */
67
- // eslint-disable-next-line
68
- data: object
69
- /** Defines the current editor value */
70
- value: string
71
- }
72
-
73
- /**
74
- * Provides information about a Form event.
75
- */
76
- export interface FormEventArgs {
77
- inputName: string
78
- message: string
79
- element: HTMLInputElement
80
- status?: string
81
- errorElement?: HTMLElement
82
- }
83
-
84
- /**
85
- * Provides information about a Validate event.
86
- */
87
- export interface ValidateEventArgs extends ActionBeginEventArgs {
88
- /** Defines form validation error message. */
89
- errorMessage: string
90
- }
91
-
92
- /**
93
- * Provides information about a BeginEdit event.
94
- */
95
- export interface BeginEditEventArgs {
96
- /** Specifies whether to cancel the open action of the editor. */
97
- cancel?: boolean
98
- /** Specifies whether to cancel the focus action, before open a editor. */
99
- cancelFocus?: boolean
100
- /** Defines the current editor mode. */
101
- mode?: RenderMode
102
- }
103
-
104
- /**
105
- * Provides information about the EndEdit event.
106
- */
107
- export interface EndEditEventArgs {
108
- /** Defines the type of action ends the edit. */
109
- action?: string
110
- /** Specifies whether to cancel the end edit action. */
111
- cancel?: boolean
112
- /** Defines the current editor mode. */
113
- mode?: RenderMode
114
- }
115
-
116
- /**
117
- * Provides information about the Change event.
118
- */
119
- export interface ChangeEventArgs {
120
- /** Returns the selected item as JSON Object from the AutoComplete/ComboBox/DropDownList data source. */
121
- itemData?: FieldSettingsModel
122
- /** Returns the previous selected item as JSON Object from the AutoComplete/ComboBox/DropDownList data source. */
123
- previousItemData?: FieldSettingsModel
124
- /** Returns the previous value of integrated component that renders based on the `type` property in the In-place editor. */
125
- previousValue: string | string[] | number | number[] | boolean[] | Date | Date[] | DateRange
126
- /** Returns the value of integrated component that renders based on the `type` property in the In-place editor. */
127
- value: string | string[] | number | number[] | boolean[] | Date | Date[] | DateRange
128
- }
@@ -1,47 +0,0 @@
1
- import { ChildProperty, Property } from '@syncfusion/ej2-base';
2
- import { TooltipModel } from '@syncfusion/ej2-popups';
3
-
4
- /**
5
- * Configures the popup settings of the In-place editor.
6
- */
7
- export class PopupSettings extends ChildProperty<PopupSettings> {
8
- /**
9
- * Specifies title for the editor popup.
10
- * @default ''
11
- */
12
- @Property('')
13
- public title: string;
14
- /**
15
- * Specifies model for editor popup customization like position, animation,etc.
16
- * @default null
17
- */
18
- @Property(null)
19
- public model: TooltipModel;
20
- }
21
- /**
22
- * @hidden
23
- */
24
- export const modulesList: { [key: string]: string } = {
25
- /* eslint-disable */
26
- 'AutoComplete': 'auto-complete',
27
- 'Color': 'color-picker',
28
- 'ComboBox': 'combo-box',
29
- 'DateRange': 'date-range-picker',
30
- 'MultiSelect': 'multi-select',
31
- 'RTE': 'rte',
32
- 'Slider': 'slider',
33
- 'Time': 'time-picker'
34
- /* eslint-enable */
35
- };
36
-
37
- /**
38
- * @hidden
39
- */
40
- // eslint-disable-next-line
41
- export let localeConstant: { [key: string]: object } = {
42
- /* eslint-disable */
43
- 'Click': { 'editAreaClick': 'Click to edit' },
44
- 'DblClick': { 'editAreaDoubleClick': 'Double click to edit' },
45
- 'EditIconClick': { 'editAreaClick': 'Click to edit' }
46
- /* eslint-enable */
47
- };
@@ -1,105 +0,0 @@
1
- import { isNullOrUndefined as isNOU, Internationalization, isBlazor } from '@syncfusion/ej2-base';
2
- import { RichTextEditorModel } from '@syncfusion/ej2-richtexteditor';
3
- import { DatePickerModel } from '@syncfusion/ej2-calendars';
4
- import { DateTimePickerModel, DateRangePickerModel, TimePickerModel } from '@syncfusion/ej2-calendars';
5
- import { NumericTextBoxModel, TextBoxModel } from '@syncfusion/ej2-inputs';
6
- import { ColorPickerModel, MaskedTextBoxModel, SliderModel } from '@syncfusion/ej2-inputs';
7
- import { AutoCompleteModel, ComboBoxModel, DropDownListModel, MultiSelectModel } from '@syncfusion/ej2-dropdowns';
8
- /**
9
- * Exports util methods used by In-place editor.
10
- */
11
-
12
- const intl: Internationalization = new Internationalization();
13
- /* eslint-disable */
14
- type valueType = string | number | Date | string[] | Date[] | number[];
15
- type modelType = AutoCompleteModel | ColorPickerModel | ComboBoxModel | DatePickerModel | DateRangePickerModel | DateTimePickerModel |
16
- /* eslint-enable */
17
- DropDownListModel | MaskedTextBoxModel | MultiSelectModel | NumericTextBoxModel | RichTextEditorModel | SliderModel | TextBoxModel |
18
- TimePickerModel;
19
- /**
20
- * @param {string} type - specifies the string type
21
- * @param {valueType} val - specifies the value type
22
- * @param {modelType} model - specifies the model type
23
- * @returns {string} - returns the string
24
- */
25
- export function parseValue(type: string, val: valueType, model: modelType): string {
26
- if (isNOU(val) || val === '') {
27
- return '';
28
- }
29
- let result: string;
30
- let tempFormat: string;
31
- switch (type) {
32
- case 'Color': {
33
- const hex: string = <string>val;
34
- result = (hex.length > 7) ? hex.slice(0, -2) : hex;
35
- break; }
36
- case 'Date':
37
- tempFormat = (model as DatePickerModel).format as string;
38
- result = intl.formatDate(<Date>val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });
39
- break;
40
- case 'DateRange': {
41
- tempFormat = (model as DateRangePickerModel).format as string;
42
- const date: Date[] = <Date[]>val;
43
- result = intl.formatDate(date[0], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' - '
44
- + intl.formatDate(date[1], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });
45
- break; }
46
- case 'DateTime':
47
- tempFormat = (model as DateTimePickerModel).format as string;
48
- if (isNOU(tempFormat) || tempFormat === '') {
49
- result = intl.formatDate(<Date>val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' '
50
- + intl.formatDate(<Date>val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });
51
- } else {
52
- result = intl.formatDate(<Date>val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });
53
- }
54
- break;
55
- case 'Time':
56
- tempFormat = (model as TimePickerModel).format as string;
57
- result = intl.formatDate(<Date>val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });
58
- break;
59
- case 'Numeric': {
60
- tempFormat = isNOU((model as NumericTextBoxModel).format) ? 'n2' :
61
- (model as NumericTextBoxModel).format as string;
62
- const tempVal: number = isNOU(<string>val) ? null : (typeof (val) === 'number' ? val : intl.parseNumber(<string>val));
63
- result = intl.formatNumber(tempVal, { format: tempFormat });
64
- break; }
65
- default:
66
- result = val.toString();
67
- break;
68
- }
69
- return result;
70
- }
71
-
72
- /**
73
- * @param {string} type - specifies the string value
74
- * @param {valueType} val - specifies the value type
75
- * @returns {valueType} - returns the value type
76
- */
77
- export function getCompValue(type: string, val: valueType): valueType {
78
- if (isNOU(val) || val === '') {
79
- return val;
80
- }
81
- if ((type === 'Date' || type === 'Time' || type === 'DateTime') && typeof (val) === 'string') {
82
- val = new Date(val);
83
- } else if (type === 'DateRange') {
84
- if (typeof (val) === 'object' && typeof ((<string[]>val)[0]) === 'string') {
85
- val = [new Date((val as string[])[0]), new Date((val as string[])[1])];
86
- } else if (typeof (val) === 'string') {
87
- const temp: string[] = (<string>val).split('-');
88
- val = [new Date(temp[0]), new Date(temp[1])];
89
- }
90
- }
91
- return val;
92
- }
93
-
94
- /**
95
- * @param {string} value - specifies the string value
96
- * @returns {string} - returns the string
97
- * @hidden
98
- */
99
- export function encode(value: string): string {
100
- const data = [];
101
- for (let i = value.length - 1; i >= 0; i--) {
102
- data.unshift(['&#', value[i].charCodeAt(0), ';'].join(''));
103
- }
104
- return data.join('');
105
- }
@@ -1,65 +0,0 @@
1
-
2
- import { AutoComplete as EJ2AutoComplete, AutoCompleteModel } from '@syncfusion/ej2-dropdowns';
3
- import { Base } from './base-module';
4
- import { InPlaceEditor } from '../base/inplace-editor';
5
- import { NotifyParams, IComponent } from '../base/interface';
6
-
7
- /**
8
- * The `AutoComplete` module is used configure the properties of Auto complete type editor.
9
- */
10
- export class AutoComplete implements IComponent {
11
- private base: Base;
12
- protected parent: InPlaceEditor;
13
- public compObj: EJ2AutoComplete = undefined;
14
-
15
- public constructor(parent?: InPlaceEditor) {
16
- this.parent = parent;
17
- this.parent.atcModule = this;
18
- this.base = new Base(this.parent, this);
19
- }
20
-
21
- public render(e: NotifyParams): void {
22
- this.compObj = new EJ2AutoComplete(this.parent.model as AutoCompleteModel);
23
- this.compObj.appendTo(e.target);
24
- }
25
-
26
- /**
27
- * @hidden
28
- * @returns {void}
29
- */
30
- public showPopup(): void {
31
- this.compObj.focusIn();
32
- this.compObj.showPopup();
33
- }
34
-
35
- public focus(): void {
36
- this.compObj.element.focus();
37
- }
38
-
39
- public updateValue(e: NotifyParams): void {
40
- if (this.compObj && e.type === 'AutoComplete') {
41
- this.parent.setProperties({ value: this.compObj.value }, true);
42
- this.parent.extendModelValue(this.compObj.value);
43
- }
44
- }
45
-
46
- /**
47
- * Destroys the module.
48
- *
49
- * @function destroy
50
- * @returns {void}
51
- * @hidden
52
- */
53
- public destroy(): void {
54
- this.base.destroy();
55
- }
56
-
57
- /**
58
- * For internal use only - Get the module name.
59
- *
60
- * @returns {string} - returns the string
61
- */
62
- private getModuleName(): string {
63
- return 'auto-complete';
64
- }
65
- }
@@ -1,74 +0,0 @@
1
- import { InPlaceEditor } from '../base/inplace-editor';
2
- import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';
3
- import * as events from '../base/events';
4
- import { NotifyParams, IComponent } from '../base/interface';
5
-
6
- /**
7
- * The `Base` module.
8
- */
9
- export class Base {
10
- protected parent: InPlaceEditor;
11
- protected module: IComponent;
12
-
13
- public constructor(parent: InPlaceEditor, module: IComponent) {
14
- this.parent = parent;
15
- this.module = module;
16
- this.addEventListener();
17
- }
18
-
19
- private render(e: NotifyParams): void {
20
- this.module.render(e);
21
- }
22
-
23
- private showPopup(): void {
24
- this.module.showPopup();
25
- }
26
-
27
- private focus(): void {
28
- this.module.focus();
29
- }
30
-
31
- private update(e: NotifyParams): void {
32
- this.module.updateValue(e);
33
- }
34
-
35
- private getValue(): void {
36
- this.module.getRenderValue();
37
- }
38
-
39
- private destroyComponent(): void {
40
- if (isNOU(this.module.compObj)) {
41
- return;
42
- }
43
- this.module.compObj.destroy();
44
- this.module.compObj = undefined;
45
- }
46
-
47
- public destroy(): void {
48
- this.destroyComponent();
49
- this.removeEventListener();
50
- }
51
-
52
- protected addEventListener(): void {
53
- this.parent.on(events.render, this.render, this);
54
- this.parent.on(events.setFocus, this.focus, this);
55
- this.parent.on(events.showPopup, this.showPopup, this);
56
- this.parent.on(events.update, this.update, this);
57
- this.parent.on(events.accessValue, this.getValue, this);
58
- this.parent.on(events.destroyModules, this.destroyComponent, this);
59
- this.parent.on(events.destroy, this.destroy, this);
60
- }
61
-
62
- protected removeEventListener(): void {
63
- if (this.parent.isDestroyed) {
64
- return;
65
- }
66
- this.parent.off(events.render, this.render);
67
- this.parent.off(events.setFocus, this.focus);
68
- this.parent.off(events.showPopup, this.showPopup);
69
- this.parent.off(events.update, this.update);
70
- this.parent.off(events.accessValue, this.getValue);
71
- this.parent.off(events.destroyModules, this.destroyComponent);
72
- this.parent.off(events.destroy, this.destroy);
73
- }
74
- }
@@ -1,55 +0,0 @@
1
- import { ColorPicker as EJ2ColorPicker, ColorPickerModel } from '@syncfusion/ej2-inputs';
2
- import { Base } from './base-module';
3
- import { InPlaceEditor } from '../base/inplace-editor';
4
- import { NotifyParams, IComponent } from '../base/interface';
5
-
6
- /**
7
- * The `ColorPicker` module is used configure the properties of Color picker type editor.
8
- */
9
- export class ColorPicker implements IComponent {
10
- private base: Base;
11
- protected parent: InPlaceEditor;
12
- public compObj: EJ2ColorPicker = undefined;
13
-
14
- public constructor(parent?: InPlaceEditor) {
15
- this.parent = parent;
16
- this.parent.colorModule = this;
17
- this.base = new Base(this.parent, this);
18
- }
19
-
20
- public render(e: NotifyParams): void {
21
- this.compObj = new EJ2ColorPicker(this.parent.model as ColorPickerModel);
22
- this.compObj.appendTo(e.target as HTMLInputElement);
23
- }
24
-
25
- public focus(): void {
26
- this.compObj.element.focus();
27
- }
28
-
29
- public updateValue(e: NotifyParams): void {
30
- if (this.compObj && e.type === 'Color') {
31
- this.parent.setProperties({ value: this.compObj.value }, true);
32
- this.parent.extendModelValue(this.compObj.value);
33
- }
34
- }
35
-
36
- /**
37
- * Destroys the module.
38
- *
39
- * @function destroy
40
- * @returns {void}
41
- * @hidden
42
- */
43
- public destroy(): void {
44
- this.base.destroy();
45
- }
46
-
47
- /**
48
- * For internal use only - Get the module name.
49
- *
50
- * @returns {string} - retunrs the string
51
- */
52
- private getModuleName(): string {
53
- return 'color-picker';
54
- }
55
- }
@@ -1,61 +0,0 @@
1
- import { ComboBox as EJ2ComboBox, ComboBoxModel } from '@syncfusion/ej2-dropdowns';
2
- import { Base } from './base-module';
3
- import { InPlaceEditor } from '../base/inplace-editor';
4
- import { NotifyParams, IComponent } from '../base/interface';
5
-
6
- /**
7
- * The `ComboBox` module is used configure the properties of Combo box type editor.
8
- */
9
- export class ComboBox implements IComponent {
10
- private base: Base;
11
- protected parent: InPlaceEditor;
12
- public compObj: EJ2ComboBox = undefined;
13
-
14
- public constructor(parent?: InPlaceEditor) {
15
- this.parent = parent;
16
- this.parent.comboBoxModule = this;
17
- this.base = new Base(this.parent, this);
18
- }
19
-
20
- public render(e: NotifyParams): void {
21
- this.compObj = new EJ2ComboBox(this.parent.model as ComboBoxModel);
22
- this.compObj.appendTo(e.target);
23
- }
24
-
25
- public focus(): void {
26
- this.compObj.element.focus();
27
- }
28
-
29
- /**
30
- * @hidden
31
- * @returns {void}
32
- */
33
- public showPopup(): void {
34
- this.compObj.focusIn();
35
- this.compObj.showPopup();
36
- }
37
-
38
- /**
39
- * Destroys the module.
40
- * @function destroy
41
- * @returns {void}
42
- * @hidden
43
- */
44
- public destroy(): void {
45
- this.base.destroy();
46
- }
47
- public updateValue(e: NotifyParams): void {
48
- if (this.compObj && e.type === 'ComboBox') {
49
- this.parent.setProperties({ value: this.compObj.value }, true);
50
- this.parent.extendModelValue(this.compObj.value);
51
- }
52
- }
53
-
54
- /**
55
- * For internal use only - Get the module name.
56
- * @returns {string} - returns the string
57
- */
58
- private getModuleName(): string {
59
- return 'combo-box';
60
- }
61
- }
@@ -1,54 +0,0 @@
1
- import { DateRangePicker as EJ2DateRangePicker, DateRangePickerModel } from '@syncfusion/ej2-calendars';
2
- import { Base } from './base-module';
3
- import { InPlaceEditor } from '../base/inplace-editor';
4
- import { NotifyParams, IComponent } from '../base/interface';
5
-
6
- /**
7
- * The `DateRangePicker` module is used configure the properties of Date range picker type editor.
8
- */
9
- export class DateRangePicker implements IComponent {
10
- private base: Base;
11
- public compObj: EJ2DateRangePicker = undefined;
12
- protected parent: InPlaceEditor;
13
-
14
- public constructor(parent?: InPlaceEditor) {
15
- this.parent = parent;
16
- this.parent.dateRangeModule = this;
17
- this.base = new Base(this.parent, this);
18
- }
19
-
20
- public render(e: NotifyParams): void {
21
- this.compObj = new EJ2DateRangePicker(this.parent.model as DateRangePickerModel);
22
- this.compObj.appendTo(e.target as HTMLInputElement);
23
- }
24
-
25
- public focus(): void {
26
- this.compObj.element.focus();
27
- }
28
-
29
- /**
30
- * For internal use only - Get the module name.
31
- * @returns {string} - returns the string
32
- */
33
- private getModuleName(): string {
34
- return 'date-range-picker';
35
- }
36
-
37
- public updateValue(e: NotifyParams): void {
38
- if (this.compObj && e.type === 'DateRange') {
39
- this.parent.setProperties({ value: this.compObj.value }, true);
40
- this.parent.extendModelValue(this.compObj.value);
41
- }
42
- }
43
-
44
- /**
45
- * Destroys the module.
46
- *
47
- * @function destroy
48
- * @returns {void}
49
- * @hidden
50
- */
51
- public destroy(): void {
52
- this.base.destroy();
53
- }
54
- }
@@ -1,88 +0,0 @@
1
- import { closest, EmitType } from '@syncfusion/ej2-base';
2
- import { MultiSelect as EJ2MultiSelect, MultiSelectModel, PopupEventArgs } from '@syncfusion/ej2-dropdowns';
3
- import { Base } from './base-module';
4
- import { InPlaceEditor } from '../base/inplace-editor';
5
- import { NotifyParams, IComponent } from '../base/interface';
6
-
7
- /**
8
- * The `MultiSelect` module is used configure the properties of Multi select type editor.
9
- */
10
- export class MultiSelect implements IComponent {
11
- private base: Base;
12
- protected parent: InPlaceEditor;
13
- private isPopOpen: boolean = false;
14
- public compObj: EJ2MultiSelect = undefined;
15
- private openEvent: EmitType<PopupEventArgs>;
16
- private closeEvent: EmitType<PopupEventArgs>;
17
-
18
- public constructor(parent?: InPlaceEditor) {
19
- this.parent = parent;
20
- this.parent.multiSelectModule = this;
21
- this.base = new Base(this.parent, this);
22
- }
23
-
24
- public render(e: NotifyParams): void {
25
- const compModel: MultiSelectModel = { ...this.parent.model as MultiSelectModel };
26
- this.openEvent = compModel.open;
27
- this.closeEvent = compModel.close;
28
- compModel.open = this.openHandler.bind(this);
29
- compModel.close = this.closeHandler.bind(this);
30
- this.compObj = new EJ2MultiSelect(compModel);
31
- this.compObj.appendTo(e.target);
32
- }
33
-
34
- private openHandler(e: PopupEventArgs): void {
35
- this.isPopOpen = true;
36
- if (this.openEvent) {
37
- this.compObj.setProperties({ open: this.openEvent }, true);
38
- this.compObj.trigger('open', e);
39
- }
40
- }
41
-
42
- private closeHandler(e: PopupEventArgs): void {
43
- this.isPopOpen = false;
44
- if (this.closeEvent) {
45
- this.compObj.setProperties({ close: this.closeEvent }, true);
46
- this.compObj.trigger('close', e);
47
- }
48
- }
49
-
50
- public focus(): void {
51
- if (!this.isPopOpen) {
52
- const evt: MouseEvent = document.createEvent('MouseEvent') as MouseEvent;
53
- evt.initEvent('mousedown', true, true);
54
- (closest(this.compObj.element, '.e-multi-select-wrapper') as HTMLElement).dispatchEvent(evt);
55
- }
56
- }
57
-
58
- public updateValue(e: NotifyParams): void {
59
- if (this.compObj && e.type === 'MultiSelect') {
60
- this.parent.setProperties({ value: this.compObj.value }, true);
61
- this.parent.extendModelValue(this.compObj.value);
62
- }
63
- }
64
-
65
- public getRenderValue(): void {
66
- this.parent.printValue = this.compObj.text;
67
- }
68
-
69
- /**
70
- * Destroys the module.
71
- *
72
- * @function destroy
73
- * @returns {void}
74
- * @hidden
75
- */
76
- public destroy(): void {
77
- this.base.destroy();
78
- }
79
-
80
- /**
81
- * For internal use only - Get the module name.
82
- *
83
- * @returns {string} - returns the string
84
- */
85
- private getModuleName(): string {
86
- return 'multi-select';
87
- }
88
- }