{"version":3,"file":"app-5f2602f5.b149463909b5e91f4e75.bundle.js","mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AAGA;AAAA;AAKA;AAEA;AAyGA;AAxGA;AAAA;AACA;AACA;;;AAAA;AAKA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AA9GA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AAEA;AAAA;;AAAA;AAPA;AADA;AACA;AAgHA;AAAA;AAhHA;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AAEA;AAEA;AAAA;AAWA;AALA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AAOA;AAAA;AAXA;;;;;;;;;;;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CA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAjHA;AADA;AAaA;AAZA;AAkHA;AAAA;AAlHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AAGA;AAAA;AACA;AASA;AAPA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AARA;AAAA;;AAAA;AADA;AADA;AACA;AAUA;AAAA;AAVA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AAIA;AAoCA;AAAA;AAAA;AAnCA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAIA;AA0EA;AA5EA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAKA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAGA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AASA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAvbA;AAAA;;AAAA;AAEA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AAEA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AACA;AAAA;;AAAA;AA7BA;AAFA;AACA;AAqCA;AApCA;AAybA;AAAA;AAzbA;;;;;;;;;;;;;;;;;ACPA;AAEA;AAAA;AAQA;AAPA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AAGA;AAAA;AAYA;AAXA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAXA;AADA;AACA;AAYA;AAAA;AAZA;;;;;;;;;;;;;;;ACIA;AAAA;AAOA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;AChBA;AAAA;AAGA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AAAA;AAAA;;AAEA;AAAA;AAAA;AAEA","sources":["webpack://app/./src/Lib/Fs.Core.Aurelia/Components/date-range-picker.css","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/date-range-picker.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-grid-header.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item-body.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item-header.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-navs.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-2.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-4.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-6.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fsapp.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/select2.html","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/date-range-picker.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-grid-header.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item-body.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item-header.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-nav-item.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-navs.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-2.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-4.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fs-paging-6.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/fsapp.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/loading-indicator.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/Components/select2.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/DateFormat.ts","webpack://app/./src/Lib/Fs.Core.Aurelia/NumberFormat.ts","webpack://app/./src/Lib/Fs.Core.Data/PagingCriteria.ts","webpack://app/./src/Lib/Fs.Core.Data/SortBy.ts","webpack://app/./src/Lib/Fs.Core.Data/SortingCriteria.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".date-range-picker {\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n}\\r\\n .date-range-picker::after {\\r\\n /*font-family: FontAwesome;*/\\r\\n font-family: \\\"Font Awesome 5 Free\\\";\\r\\n content: '\\\\f073';\\r\\n padding-left: .5rem;\\r\\n flex: 0 0 auto;\\r\\n }\\r\\n\\r\\n .date-range-picker .date-range {\\r\\n flex: 1 1 auto;\\r\\n display: flex;\\r\\n justify-content: space-around;\\r\\n align-items: center;\\r\\n }\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Lib/Fs.Core.Aurelia/Components/date-range-picker.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,eAAe;IACf,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;AACvB;IACI;QACI,4BAA4B;QAC5B,kCAAkC;QAClC,gBAAgB;QAChB,mBAAmB;QACnB,cAAc;IAClB;;IAEA;QACI,cAAc;QACd,aAAa;QACb,6BAA6B;QAC7B,mBAAmB;IACvB\",\"sourcesContent\":[\".date-range-picker {\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n}\\r\\n .date-range-picker::after {\\r\\n /*font-family: FontAwesome;*/\\r\\n font-family: \\\"Font Awesome 5 Free\\\";\\r\\n content: '\\\\f073';\\r\\n padding-left: .5rem;\\r\\n flex: 0 0 auto;\\r\\n }\\r\\n\\r\\n .date-range-picker .date-range {\\r\\n flex: 1 1 auto;\\r\\n display: flex;\\r\\n justify-content: space-around;\\r\\n align-items: center;\\r\\n }\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","import { inject, bindable, bindingMode, Container } from 'aurelia-framework'; // eslint-disable-line no-unused-vars\r\nimport moment from 'moment';\r\nimport 'daterangepicker';\r\n\r\n@inject(Element)\r\nexport class DateRangePicker {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'startDateChanged' }) startDate;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'endDateChanged' }) endDate;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'ConfigChanged' }) minDate;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'ConfigChanged' }) maxDate;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'ConfigChanged' }) format = \"DD/MM/YYYY\";\r\n options;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) disabled: boolean = false;\r\n get DisplayDate() {\r\n return (this.startDate == null ? \"\" : this.startDate) + \" - \" + (this.endDate == null ? \"\" : this.endDate);\r\n }\r\n\r\n element: any;\r\n owningView: any;\r\n\r\n created(owningView) {\r\n this.owningView = owningView;\r\n }\r\n\r\n attached() {\r\n var self = this;\r\n this.CreateConfig();\r\n\r\n if (self.startDate != null) {\r\n this.options = $.extend(this.options, {\r\n startDate: moment(self.startDate, self.options.locale.format)\r\n });\r\n }\r\n\r\n if (self.endDate != null) {\r\n this.options = $.extend(this.options, {\r\n endDate: moment(self.endDate, self.options.locale.format)\r\n });\r\n\r\n }\r\n\r\n $(this.element).daterangepicker(this.options);\r\n\r\n $(this.element).on('apply.daterangepicker', function (ev, picker) {\r\n self.apply(picker.startDate, picker.endDate);\r\n });\r\n\r\n $(this.element).on('cancel.daterangepicker', function (ev, picker) {\r\n self.apply(null, null);\r\n });\r\n }\r\n\r\n apply(startDate, endDate) {\r\n this.startDate = startDate == null ? null : startDate.format(this.options.locale.format);\r\n this.endDate = endDate == null ? null : endDate.format(this.options.locale.format);\r\n }\r\n\r\n startDateChanged(newValue) {\r\n if (this.owningView.isAttached && newValue != null) {\r\n $(this.element).data('daterangepicker').setStartDate(newValue);\r\n }\r\n }\r\n\r\n endDateChanged(newValue) {\r\n if (this.owningView.isAttached && newValue != null) {\r\n $(this.element).data('daterangepicker').setEndDate(newValue);\r\n }\r\n }\r\n\r\n ConfigChanged(newValue) {\r\n var self = this;\r\n this.CreateConfig();\r\n\r\n this.startDate = null;\r\n this.endDate = null;\r\n $(this.element).daterangepicker(this.options);\r\n\r\n $(this.element).on('apply.daterangepicker', function (ev, picker) {\r\n self.apply(picker.startDate, picker.endDate);\r\n });\r\n\r\n $(this.element).on('cancel.daterangepicker', function (ev, picker) {\r\n self.apply(null, null);\r\n });\r\n }\r\n\r\n CreateConfig() {\r\n var self = this;\r\n this.options = null;\r\n this.options = $.extend(true, {\r\n locale: {\r\n format: self.format,\r\n cancelLabel: 'Clear'\r\n }\r\n }, this.options);\r\n\r\n if (self.minDate != null) {\r\n this.options = $.extend(this.options, {\r\n minDate: moment(self.minDate, self.options.locale.format)\r\n });\r\n }\r\n\r\n if (self.maxDate != null) {\r\n this.options = $.extend(this.options, {\r\n maxDate: moment(self.maxDate, self.options.locale.format)\r\n });\r\n\r\n }\r\n this.options = $.extend(this.options, {\r\n autoUpdateInput: false\r\n });\r\n\r\n this.options = $.extend(this.options, {\r\n autoUpdateInput: false\r\n });\r\n\r\n }\r\n}","import { bindable, bindingMode, containerless } from 'aurelia-framework';\r\nimport SearchOnlyVMBase from 'Lib/Fs.SmartClient.Client/SearchOnlyVMBase';\r\nimport CommonSearchVMBase from 'Lib/Fs.SmartClient.Client/CommonSearchVMBase';\r\n\r\nexport class FsGridHeaderCustomElement {\r\n @bindable DataContext: CommonSearchVMBase;\r\n @bindable SortingName: string;\r\n @bindable DisplayName: string;\r\n @bindable TranslateKey: string;\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n if (this.DataContext == null) {\r\n this.DataContext = bindingContext;\r\n }\r\n }\r\n}","import { containerless, bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport { inject, Parent } from 'aurelia-dependency-injection';\r\nimport { BootstrapNavItem } from './fs-nav-item';\r\n\r\n@inject(Element, Parent.of(BootstrapNavItem))\r\n@containerless\r\n@customElement('fs-nav-item-body')\r\n\r\nexport class BootstrapNavItemBody {\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public class: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public style: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public href: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public title: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public active: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public disabled: boolean | string = false;\r\n\r\n private isFade: boolean = false;\r\n\r\n public parent: any;\r\n\r\n public element: Element;\r\n\r\n public tab_body: any;\r\n\r\n constructor(element: Element, parent) {\r\n this.parent = parent;\r\n this.element = element;\r\n }\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n this.active = this.parent.active;\r\n this.disabled = this.parent.disabled;\r\n\r\n let navs: HTMLElement;\r\n navs = this.tab_body.parentElement;\r\n\r\n let tab_content: HTMLElement;\r\n tab_content = navs.parentElement.parentElement.children.item(1).children.item(0);\r\n\r\n let tab_body_id = `${this.parent.id}-tab-body`;\r\n navs.removeChild(this.tab_body);\r\n\r\n if (this.tab_body.textContent.length > 8) {\r\n\r\n this.tab_body.setAttribute('id', `${tab_body_id}`);\r\n this.tab_body.setAttribute('aria-labelledby', `${this.parent.id}`);\r\n\r\n tab_content.appendChild(this.tab_body);\r\n }\r\n\r\n }\r\n}","import { containerless, bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport { inject, Parent } from 'aurelia-dependency-injection';\r\nimport { BootstrapNavItem } from './fs-nav-item';\r\n\r\n@inject(Element, Parent.of(BootstrapNavItem))\r\n@containerless\r\n@customElement('fs-nav-item-header')\r\nexport class BootstrapNavItemHeader {\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public class: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public style: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public href: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public title: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public active: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public disabled: boolean | string = false;\r\n\r\n private isFade: boolean = false;\r\n\r\n public parent: any;\r\n\r\n private element: HTMLElement;\r\n\r\n public tab_header: any;\r\n\r\n constructor(element: Element, parent) {\r\n this.parent = parent;\r\n this.element = element;\r\n }\r\n\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n this.active = this.parent.active;\r\n this.disabled = this.parent.disabled;\r\n\r\n let navs: HTMLElement;\r\n\r\n navs = this.tab_header.parentElement;\r\n\r\n let navComponent: HTMLElement;\r\n\r\n let tab_body_id = `${this.parent.id}-tab-body`;\r\n\r\n this.isFade = true;\r\n\r\n let data_toggle = 'tab';\r\n\r\n this.tab_header.setAttribute('data-toggle', data_toggle);\r\n\r\n this.tab_header.setAttribute('role', 'tab');\r\n this.tab_header.setAttribute('aria-controls', `${tab_body_id}`);\r\n this.tab_header.setAttribute('aria-selected', `${this.active}`);\r\n\r\n this.tab_header.setAttribute('href', `#${tab_body_id}`);\r\n\r\n }\r\n}","import { containerless, child, bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport { inject, Parent } from 'aurelia-dependency-injection';\r\nimport { BootstrapNavs } from './fs-navs';\r\n\r\n@inject(Element, Parent.of(BootstrapNavs))\r\n@containerless\r\n@customElement('fs-nav-item')\r\nexport class BootstrapNavItem {\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public class: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public style: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public href: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public title: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public id: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public active: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public disabled: boolean | string = false;\r\n\r\n private isFade: boolean = false;\r\n\r\n public element: Element;\r\n public parent: any;\r\n\r\n constructor(element: Element, parent) {\r\n this.element = element;\r\n this.parent = parent;\r\n }\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n\r\n this.active = this.active === 'true' || this.active === true;\r\n this.disabled = this.disabled === 'true' || this.disabled === true;\r\n\r\n }\r\n}","import { containerless, inject, bindable, bindingMode, TaskQueue } from 'aurelia-framework';\r\nimport { customElement } from 'aurelia-templating';\r\n\r\n@inject(Element, TaskQueue)\r\n@customElement('fs-navs')\r\nexport class BootstrapNavs {\r\n\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public navsVerticalClass: string = 'col-sm-3';\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public contentVerticalClass: string = 'col-sm-9';\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public navsClass: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public navsStyle: string;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public contentClass: string;\r\n @bindable({ defaultBindingMode: bindingMode.oneWay }) public contentStyle: string;\r\n\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public bsShow: Function;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public bsHide: Function;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public bsShown: Function;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public bsHidden: Function;\r\n\r\n\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public tabs: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public pills: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public vertical: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public justify: boolean | string = false;\r\n @bindable({ defaultBindingMode: bindingMode.oneTime }) public fill: boolean | string = false;\r\n\r\n private beTab: boolean = true;\r\n private bePills: boolean = false;\r\n\r\n constructor(private element: Element, private taskQueue: TaskQueue) { }\r\n\r\n private attached() {\r\n\r\n const onlyPillsAttribute = (this.pills === '' && this.element.hasAttribute('pills'));\r\n this.pills = onlyPillsAttribute || this.pills.toString() === 'true';\r\n\r\n const onlyTabsAttribute = (this.tabs === '' && this.element.hasAttribute('tabs'));\r\n this.tabs = onlyTabsAttribute || this.tabs.toString() === 'true';\r\n\r\n const onlyVerticalAttribute = (this.vertical === '' && this.element.hasAttribute('vertical'));\r\n this.vertical = onlyVerticalAttribute || this.vertical.toString() === 'true';\r\n\r\n const onlyJustifiedAttribute = (this.justify === '' && this.element.hasAttribute('justify'));\r\n this.justify = onlyJustifiedAttribute || this.justify.toString() === 'true';\r\n\r\n const onlyFillAttribute = (this.fill === '' && this.element.hasAttribute('fill'));\r\n this.fill = onlyFillAttribute || this.fill.toString() === 'true';\r\n\r\n\r\n this.beTab = this.tabs;\r\n this.bePills = this.pills;\r\n\r\n\r\n if (this.justify && this.fill) {\r\n let error = new Error(`The [abt-navs] should have either 'fill' or 'justify' attributes, and not both of them simultaneously.`);\r\n throw error;\r\n }\r\n\r\n\r\n this.taskQueue.queueTask(() => this.afterAttached());\r\n\r\n }\r\n\r\n private afterAttached() {\r\n // let children = this.element.children.item(0).children.item(0).getElementsByTagName('a[active]');\r\n // console.log( children.length );\r\n // $(children).tab('show');\r\n this.handle_events();\r\n }\r\n\r\n\r\n private handle_events() {\r\n // all a tags which are going to be tabs/pills\r\n let children = this.element.children.item(0).children.item(0).getElementsByTagName('a');\r\n\r\n if (this.bsShow) {\r\n $(children).on('show.bs.tab', (event: any) => {\r\n if (this.bsShow) {\r\n this.bsShow({ activeTab: event.target, prevTab: event.relatedTarget });\r\n }\r\n });\r\n }\r\n\r\n if (this.bsShown) {\r\n $(children).on('shown.bs.tab', (event: any) => {\r\n if (this.bsShown) {\r\n this.bsShown({ activeTab: event.target, prevTab: event.relatedTarget });\r\n }\r\n });\r\n }\r\n\r\n\r\n if (this.bsHide) {\r\n $(children).on('hide.bs.tab', (event: any) => {\r\n if (this.bsHide) {\r\n this.bsHide({ activeTab: event.target, prevTab: event.relatedTarget });\r\n }\r\n });\r\n }\r\n\r\n if (this.bsHidden) {\r\n $(children).on('hidden.bs.tab', (event: any) => {\r\n if (this.bsHidden) {\r\n this.bsHidden({ activeTab: event.target, prevTab: event.relatedTarget });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n private detached() {\r\n let children = this.element.children.item(0).children.item(0).getElementsByTagName('a');\r\n $(children).off('show.bs.tab');\r\n $(children).off('shown.bs.tab');\r\n $(children).off('hide.bs.tab');\r\n $(children).off('hidden.bs.tab');\r\n $(children).tab('dispose');\r\n }\r\n}","import { bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport CommonSearchVMBase from 'Lib/Fs.SmartClient.Client/CommonSearchVMBase';\r\nimport * as uniqid from 'uniqid';\r\n\r\n@customElement('fs-paging-2')\r\nexport class FsPaging2 {\r\n DataContext: CommonSearchVMBase;\r\n @bindable public IsDialog: boolean = false;\r\n Select2Id: string;\r\n\r\n @bindable public Paging: any[] = [{ id: 5, text: \"5\" }, { id: 10, text: \"10\" }, { id: 15, text: \"15\" }, { id: 20, text: \"20\" }, { id: 30, text: \"30\" }, { id: 50, text: \"50\" }, { id: 9999999, text: \"All\" }]\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n this.DataContext = bindingContext;\r\n this.Select2Id = uniqid.default();\r\n }\r\n}\n","import { bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport CommonSearchVMBase from 'Lib/Fs.SmartClient.Client/CommonSearchVMBase';\r\nimport * as uniqid from 'uniqid';\r\n\r\n@customElement('fs-paging-4')\r\nexport class FsPaging4 {\r\n DataContext: CommonSearchVMBase;\r\n @bindable public IsDialog: boolean = false;\r\n Select2Id: string;\r\n CurrentPageNumber: number;\r\n\r\n @bindable public Paging: any[] = [{ id: 5, text: \"5\" }, { id: 10, text: \"10\" }, { id: 15, text: \"15\" }, { id: 20, text: \"20\" }, { id: 30, text: \"30\" }, { id: 50, text: \"50\" }, { id: 9999999, text: \"All\" }]\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n this.DataContext = bindingContext;\r\n this.Select2Id = uniqid.default();\r\n }\r\n\r\n}\n","import { bindable, bindingMode, customElement } from 'aurelia-framework';\r\nimport CommonSearchVMBase from 'Lib/Fs.SmartClient.Client/CommonSearchVMBase';\r\nimport * as uniqid from 'uniqid';\r\n\r\n@customElement('fs-paging-6')\r\nexport class FsPaging6 {\r\n DataContext: CommonSearchVMBase;\r\n @bindable public IsDialog: boolean = false;\r\n Select2Id: string;\r\n CurrentPageNumber: number;\r\n\r\n @bindable public Paging: any[] = [{ id: 5, text: \"5\" }, { id: 10, text: \"10\" }, { id: 15, text: \"15\" }, { id: 20, text: \"20\" }, { id: 30, text: \"30\" }, { id: 50, text: \"50\" }, { id: 9999999, text: \"All\" }]\r\n\r\n bind(bindingContext: any, overrideContext: any) {\r\n this.DataContext = bindingContext;\r\n this.Select2Id = uniqid.default();\r\n }\r\n\r\n}\n","import { Router, RouterConfiguration, RouteConfig, NavModel, Redirect } from 'aurelia-router';\r\nimport { autoinject, Container, Aurelia } from 'aurelia-framework';\r\nimport { OpenIdConnect, OpenIdConnectRoles } from \"aurelia-open-id-connect\";\r\nimport { User } from \"oidc-client\";\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { fs } from '../../../Config/FsConfig';\r\nimport config from 'Config/open-id-connect-configuration';\r\nimport { FsAjaxSettings } from './FsAjaxSettings';\r\n\r\ndeclare var KTLayout: any;\r\n\r\n@autoinject\r\nexport class FsApp {\r\n isLoading: boolean = false;\r\n router: Router;\r\n EnableManualCheckSession: boolean = false;\r\n ajaxCount: number = 0;\r\n\r\n user: User;\r\n openIdConnect: OpenIdConnect;\r\n public i18n: I18N;\r\n aurelia: Aurelia;\r\n public IsUserActive: boolean = false;\r\n public RequiredReauthentication: string = \"false\";\n constructor(openIdConnect: OpenIdConnect, i18n: I18N) {\r\n var self = this;\r\n this.openIdConnect = openIdConnect;\r\n this.openIdConnect.userManager.clearStaleState().then(() => {\r\n console.log('clearState success');\r\n }).catch((e) => {\r\n console.log('clearStateState error', e.message);\r\n });\r\n\r\n this.aurelia = Container.instance.get(Aurelia);\r\n this.openIdConnect.observeUser((user: User) => {\r\n Container.instance.unregister(\"user\");\r\n Container.instance.registerInstance(\"user\", user);\r\n if (user != null) {\r\n self.user = user;\r\n localStorage.removeItem(\"UserExpireTime\");\r\n localStorage.setItem(\"UserExpireTime\", user.expires_at.toString());\r\n console.log(\"User \" + JSON.stringify(user));\r\n console.log(\"Will timeout in \" + user.expires_at);\r\n }\r\n\r\n });\r\n\r\n this.openIdConnect.getUser().then(function (user) {\r\n Container.instance.unregister(\"user\");\r\n Container.instance.registerInstance(\"user\", user);\r\n self.user = user;\r\n });\r\n this.i18n = i18n;\r\n\r\n if (fs.Config.EnableManualCheckSession) this.EnableManualCheckSession = fs.Config.EnableManualCheckSession;\r\n\r\n if (this.EnableManualCheckSession && config.Config.userManagerSettings['CheckSessionInterval']) {\r\n setTimeout(() => self.checkSilentLogin(self), config.Config.userManagerSettings['CheckSessionInterval'] * 1000);\r\n }\r\n\r\n $(document).ajaxSend(function (event, jqXhr, settings: FsAjaxSettings) {\n\n if (settings.showLoading) {\n self.IncreaseLoadingCount();\r\n }\n\n var user = Container.instance.get(\"user\");\r\n if (user != null) {\r\n jqXhr.setRequestHeader('Authorization', 'Bearer ' + user.access_token);\r\n }\r\n var locale = sessionStorage.getItem(\"CurrentSystemLocale\");\r\n if (locale != null) {\r\n jqXhr.setRequestHeader('Accept-Language', locale);\r\n }\r\n });\r\n\r\n $(document).keydown(function () {\r\n if (self.isLoading) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n\n $(document).ajaxComplete(function (event, jqXhr, settings: FsAjaxSettings) {\n\n if (settings.showLoading) {\r\n self.DecreaseLoadingCount();\n }\n });\r\n }\r\n\r\n\r\n IncreaseLoadingCount() {\r\n this.IsUserActive = true;\n this.isLoading = true;\r\n this.ajaxCount += 1;\r\n }\r\n\r\n DecreaseLoadingCount() {\r\n this.ajaxCount -= 1;\r\n if (this.ajaxCount == 0) {\n this.isLoading = false;\n }\r\n }\n\r\n checkSilentLogin(app) {\r\n var ts = Math.round((new Date()).getTime() / 1000);\r\n console.log(\"Current time \" + ts);\r\n console.log(\"Check session \" + config.Config.userManagerSettings['CheckSessionInterval']);\r\n\r\n if (app.IsUserActive) {\r\n app.openIdConnect.userManager.signinSilent().then((user: any) => {\r\n console.log(\"SILENT LOGIN\");\r\n app.IsUserActive = false;\r\n });\r\n } else {\r\n console.log(\"Not Silent Login\");\r\n }\r\n setTimeout(() => app.checkSilentLogin(app), config.Config.userManagerSettings['CheckSessionInterval'] * 1000);\r\n }\r\n configureRouter(config: RouterConfiguration, router: Router): void {\r\n this.router = router;\r\n\r\n this.openIdConnect.configure(config);\r\n }\r\n}\r\n","import * as nprogress from 'nprogress';\r\nimport { bindable, noView } from 'aurelia-framework';\r\nimport 'nprogress/nprogress.css';\r\n\r\n@noView\r\nexport class LoadingIndicator {\r\n @bindable loading = false;\r\n\r\n loadingChanged(newValue) {\r\n if (newValue) {\r\n nprogress.start();\r\n } else {\r\n nprogress.done();\r\n }\r\n }\r\n}","import { bindable, bindingMode, autoinject, customElement, Container, TaskQueue } from 'aurelia-framework';\r\nimport 'select2';\r\nimport * as uniqid from 'uniqid';\r\nimport { isArray } from 'jquery';\r\n\r\n@customElement('select2')\r\n@autoinject\r\nexport class Select2Thing {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) name: string = uniqid.default();\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'itemsChanged' }) items: any[] = null;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) disabled: boolean = false;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) placeholder: string = null;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'selectedValuesChanged' }) selectedValues: any = null;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isMultiple: boolean = false;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isAllowedClear: boolean = false;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'selectedItemsChanged' }) selectedItems: any = null;\r\n\r\n @bindable Open: Function = null;\r\n @bindable Close: Function = null;\r\n @bindable Change: Function = null;\r\n @bindable CalculateItemId: any = null;\r\n @bindable CalculateItemText: any = null;\r\n @bindable CalculateGroupText: any = null;\r\n @bindable CalculateGroupItems: any = null;\r\n @bindable FormatItem: Function = null;\r\n @bindable FormatSelectedItem: Function = null;\r\n @bindable SearchAutoCompleteFunction: Function = null;\r\n @bindable Select: Function = null;\r\n @bindable Unselect: Function = null;\r\n @bindable IsGroup: boolean = false;\r\n @bindable EnableSearchBox: boolean = false;\r\n @bindable MaxSelectedItems: number = 99999999;\r\n @bindable MinLength: number = 0;\r\n @bindable EnableCustomDisplay: boolean = false;\r\n @bindable LoadDelay: number = 500;\r\n IsEditMode: boolean = false;\r\n\r\n autoCompleteObject: any;\r\n currentSearchTerms: string;\r\n\r\n select2 = null;\r\n constructor(private element: Element, private tq: TaskQueue) {\r\n }\r\n\r\n ignoreSelectedDataChanged: boolean = false;\r\n\r\n\r\n selectedValuesChanged() {\r\n if (this.select2 != null && this.SearchAutoCompleteFunction == null) {\r\n this.select2.val(this.selectedValues).trigger(\"change\");\r\n\r\n }\r\n }\r\n\r\n selectedItemsChanged() {\r\n if (this.Loading) return;\r\n var self = this;\r\n if (this.ignoreSelectedDataChanged) return;\r\n this.ignoreSelectedDataChanged = true;\r\n\r\n if (this.selectedItems != null) {\r\n //auto complete\r\n if (this.SearchAutoCompleteFunction != null) {\r\n //multiple\r\n if (Array.isArray(this.selectedItems)) {\r\n var options = [];\r\n if (this.selectedItems.length == 0) {\r\n this.selectedValues = [];\r\n }\r\n for (var i = 0; i < this.selectedItems.length; i++) {\r\n\r\n var item = this.selectedItems[i];\r\n\r\n self.TransformData(item);\r\n\r\n var newOption = new Option(item.text, item.id, true, true);\r\n options.push(newOption);\r\n }\r\n $(this.select2).empty();\r\n $(this.select2).append(options).trigger('change');\r\n\r\n }\r\n //single\r\n else {\r\n self.TransformData(this.selectedItems);\r\n\r\n var newOption = new Option(this.selectedItems.text, this.selectedItems.id, true, true);\r\n $(this.select2).empty();\r\n $(this.select2).append(newOption).trigger('change');\r\n }\r\n }\r\n } else {\r\n this.selectedValues = null;\r\n $(this.select2).val(this.selectedValues).trigger(\"change.select2\");\r\n }\r\n\r\n this.tq.queueMicroTask(() => this.ignoreSelectedDataChanged = false);\r\n\r\n }\r\n\r\n itemsChanged() {\r\n var self = this;\r\n if (this.select2 != null && self.items != null && Array.isArray(self.items) && self.SearchAutoCompleteFunction == null) {\r\n\r\n var select2Options = this.CreateSelect2Options();\r\n this.select2.empty();\r\n self.select2.select2(select2Options);\r\n\r\n\r\n if (self.items == null && self.selectedItems != null) {\r\n self.SetAutocompleteSelectedItem(self.selectedItems);\r\n } else if (self.selectedValues != null) {\r\n self.select2.val(self.selectedValues).trigger(\"change\");\r\n }\r\n\r\n }\r\n }\r\n\r\n Loading = false;\r\n\r\n\r\n attached() {\r\n this.Loading = true;\r\n\r\n var self = this;\r\n var select2Options = this.CreateSelect2Options();\r\n\r\n var t = $(self.element).find('select');\r\n self.select2 = t.select2(select2Options);\r\n if (self.select2 != null) {\r\n\r\n self.select2.on('change', evt => {\r\n if (evt.originalEvent) { return; }\r\n if ((self.items != null && self.items.length > 0 && self.SearchAutoCompleteFunction == null) || self.SearchAutoCompleteFunction != null) {\r\n var notice = new Event('change', { bubbles: true });\r\n $(self.select2)[0].dispatchEvent(notice);\r\n\r\n if (this.Loading == false && this.ignoreSelectedDataChanged == false) {\r\n if (!self.isMultiple) {\r\n if (self.selectedValues != null) {\r\n var selectData = self.select2.select2('data')[0];\r\n if (!self.IsGroup) {\r\n if (self.autoCompleteObject != null && Array.isArray(self.autoCompleteObject)) {\r\n self.selectedItems = self.autoCompleteObject.find(t => t.id == selectData.id);\r\n } else {\r\n self.selectedItems = self.items.find(t => t.id == selectData.id);\r\n }\r\n\r\n } else {\r\n if (self.autoCompleteObject != null && Array.isArray(self.autoCompleteObject)) {\r\n self.selectedItems = self.autoCompleteObject.map(function (p) { return p.children; })\r\n .reduce(function (a, b) { return a.concat(b); }).find(t => t.id == selectData.id);\r\n } else {\r\n self.selectedItems = self.items.find(t => t.id == selectData.id);\r\n }\r\n }\r\n } else {\r\n self.selectedItems = null;\r\n }\r\n }\r\n else {\r\n if (Array.isArray(self.selectedValues)) {\r\n if (self.selectedValues.length > 0) {\r\n var select2Data = self.select2.select2('data');\r\n if (self.selectedItems == null) self.selectedItems = [];\r\n var addData = select2Data.filter(function (i) { return self.selectedItems.map(t => t.id).indexOf(i.id) < 0; });\r\n var removeData = self.selectedItems.filter(function (i) { return select2Data.map(t => t.id).indexOf(i.id) < 0; });\r\n addData.forEach(item => {\r\n self.selectedItems.push(item);\r\n });\r\n removeData.forEach((item, i) => {\r\n var index = self.selectedItems.indexOf(item);\r\n self.selectedItems.splice(index, 1);\r\n });\r\n } else {\r\n self.selectedItems = [];\r\n }\r\n\r\n } else if (!Array.isArray(self.selectedValues)) {\r\n self.selectedItems = self.select2.select2('data');\r\n }\r\n }\r\n }\r\n\r\n if (self.Change != null) {\r\n self.Change({ e: self.selectedItems });\r\n }\r\n\r\n }\r\n });\r\n\r\n\r\n $(self.select2).on(\"select2:select\", function (e) {\r\n // debugger;\r\n\r\n if (self.Select != null) {\r\n self.Select({ e: e });\r\n }\r\n });\r\n\r\n $(self.select2).on(\"select2:unselecting\", function (e: any) {\r\n // debugger;\r\n if (self.Unselect != null) {\r\n self.Unselect({ e: e });\r\n }\r\n });\r\n\r\n $(self.select2).on(\"select2:open\", function (e) {\r\n // debugger;\r\n /*var search = self.select2.data('select2').dropdown.$search || self.select2.data('select2').selection.$search;\r\n\r\n if (search != null) {\r\n if (self.isMultiple == false && self.selectedItems != null) {\r\n search.val(self.selectedItems.text);\r\n }\r\n }*/\r\n if (self.Open != null) {\r\n self.Open({ e: e });\r\n }\r\n });\r\n $(self.select2).on(\"select2:close\", function (e: any) {\r\n\r\n if (self.Close != null) {\r\n self.Close({ e: e });\r\n }\r\n\r\n if (self.autoCompleteObject != null && Array.isArray(self.autoCompleteObject) && self.autoCompleteObject.length == 0 && !self.isMultiple) {\r\n self.select2.val(null).trigger(\"change\");\r\n }\r\n\r\n if (self.EnableCustomDisplay) {\r\n self.IsEditMode = false;\r\n $(self.element).children(\".select2-container\").hide();\r\n }\r\n });\r\n if (self.items == null && self.selectedItems != null && self.SearchAutoCompleteFunction != null) {\r\n self.SetAutocompleteSelectedItem(self.selectedItems);\r\n } else if (self.selectedValues != null) {\r\n self.select2.val(self.selectedValues).trigger(\"change\");\r\n }\r\n\r\n if (self.EnableCustomDisplay) {\r\n $(self.element).children(\".select2-container\").hide();\r\n }\r\n }\r\n\r\n this.Loading = false;\r\n };\r\n\r\n public ShowSelect2Options() {\r\n if (!this.EnableCustomDisplay || this.disabled) return;\r\n this.IsEditMode = true;\r\n $(this.element).children(\".select2-container\").show();\r\n this.select2.select2(\"open\");\r\n }\r\n\r\n private CreateSelect2Options() {\r\n var self = this;\r\n //Create the select2 dropdown\r\n var select2Options: any = {}\r\n select2Options.placeholder = self.placeholder;\r\n select2Options.allowClear = self.isAllowedClear;\r\n select2Options.width = \"100%\";\r\n select2Options.height = \"100%\";\r\n select2Options.minimumInputLength = self.MinLength;\r\n if (this.isMultiple) {\r\n select2Options.maximumSelectionLength = self.MaxSelectedItems;\r\n }\r\n if (self.items != null && Array.isArray(self.items) && self.SearchAutoCompleteFunction == null) {\r\n if (!self.EnableSearchBox) {\r\n select2Options.minimumResultsForSearch = -1;\r\n }\r\n select2Options.data = $.map(self.items, function (obj) {\r\n\r\n if (self.IsGroup) {\r\n if (self.CalculateGroupText != null) {\r\n\r\n if (self.CalculateGroupText instanceof Function) {\r\n obj.text = self.CalculateGroupText({ item: obj });\r\n } else {\r\n if (typeof self.CalculateGroupText == \"string\") {\r\n obj.text = obj[self.CalculateGroupText];\r\n }\r\n }\r\n }\r\n\r\n if (self.CalculateGroupItems != null) {\r\n\r\n if (self.CalculateGroupItems instanceof Function) {\r\n obj.children = self.CalculateGroupItems({ item: obj });\r\n } else {\r\n if (typeof self.CalculateGroupItems == \"string\") {\r\n obj.children = obj[self.CalculateGroupItems];\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(obj.children)) {\r\n for (let i = 0; i < obj.children.length; i++) {\r\n self.TransformData(obj.children[i]);\r\n }\r\n }\r\n } else {\r\n self.TransformData(obj);\r\n }\r\n\r\n return obj;\r\n });\r\n } else {\r\n select2Options.ajax = {\r\n delay: self.LoadDelay,\r\n transport: function (params, success, failure) {\r\n if (self.SearchAutoCompleteFunction != null) {\r\n self.SearchAutoCompleteFunction({ params: params, success: success, failure: failure });\r\n }\r\n\r\n },\r\n processResults: function (data, params) {\r\n {\r\n var result = $.map(data, function (obj) {\r\n\r\n if (self.IsGroup) {\r\n if (self.CalculateGroupText != null) {\r\n\r\n if (self.CalculateGroupText instanceof Function) {\r\n obj.text = self.CalculateGroupText({ item: obj });\r\n } else {\r\n if (typeof self.CalculateGroupText == \"string\") {\r\n obj.text = obj[self.CalculateGroupText];\r\n }\r\n }\r\n }\r\n\r\n if (self.CalculateGroupItems != null) {\r\n\r\n if (self.CalculateGroupItems instanceof Function) {\r\n obj.children = self.CalculateGroupItems({ item: obj });\r\n } else {\r\n if (typeof self.CalculateGroupItems == \"string\") {\r\n obj.children = obj[self.CalculateGroupItems];\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(obj.children)) {\r\n for (let i = 0; i < obj.children.length; i++) {\r\n self.TransformData(obj.children[i]);\r\n }\r\n }\r\n } else {\r\n self.TransformData(obj);\r\n }\r\n\r\n return obj;\r\n });\r\n\r\n self.autoCompleteObject = result;\r\n return {\r\n results: result\r\n };\r\n }\r\n },\r\n };\r\n\r\n }\r\n select2Options.escapeMarkup = function (markup) {\r\n return markup;\r\n }\r\n if (self.FormatItem != null) {\r\n select2Options.templateResult = function (data) {\r\n return self.FormatItem({ data: data });\r\n }\r\n }\r\n if (self.FormatSelectedItem != null) {\r\n select2Options.templateSelection = function (data) {\r\n return self.FormatSelectedItem({ data: data });\r\n }\r\n }\r\n\r\n return select2Options;\r\n }\r\n\r\n TransformData(item) {\r\n var self = this;\r\n if (self.CalculateItemId != null) {\r\n if (self.CalculateItemId instanceof Function) {\r\n var data = self.CalculateItemId({ item: item });\r\n if (data != null) {\r\n item.id = data;\r\n }\r\n } else {\r\n if (typeof self.CalculateItemId == \"string\") {\r\n var data = item[self.CalculateItemId];\r\n if (data != null) {\r\n item.id = data;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (self.CalculateItemText != null) {\r\n\r\n if (self.CalculateItemText instanceof Function) {\r\n var data = self.CalculateItemText({ item: item });\r\n if (data != null) {\r\n item.text = data;\r\n }\r\n } else {\r\n if (typeof self.CalculateItemText == \"string\") {\r\n var data = item[self.CalculateItemText];\r\n if (data != null) {\r\n item.text = data;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public SetAutocompleteSelectedItem(data: any) {\r\n var self = this;\r\n var options = [];\r\n if (isArray(data)) {\r\n if (data.length > 0) {\r\n for (var i = 0; i < data.length; i++) {\r\n var item = data[i];\r\n self.TransformData(item);\r\n\r\n var newOption = new Option(item.text, item.id, true, true);\r\n options.push(newOption);\r\n }\r\n }\r\n\r\n } else {\r\n if (data != null) {\r\n self.TransformData(data);\r\n var newOption = new Option(data.text, data.id, true, true);\r\n options.push(newOption);\r\n }\r\n }\r\n $(this.select2).append(options).trigger('change');\r\n }\r\n\r\n detached() {\r\n if (this.select2 != null && this.select2.data('select2'))\r\n this.select2.select2('destroy');\r\n }\r\n}","import moment from 'moment';\r\n\r\nexport class DateFormatValueConverter {\r\n toView(value, format) {\r\n if (format != null && value != null) {\r\n return moment(value).format(format);\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n\r\n","import numeral from 'numeral';\r\nimport { valueConverter } from 'aurelia-framework';\r\n\r\n@valueConverter('number')\r\nexport class NumberFormatValueConverter {\r\n toView(value, format) {\r\n if (format != null && value != null) {\r\n return numeral(value).format(format);\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n fromView(val) {\r\n return Number(val);\r\n }\r\n}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass PagingCriteria \r\n{\r\n \r\n PageIndex: number;\r\n \r\n PageSize: number;\r\n \r\n}\r\n\r\nexport default PagingCriteria;\r\n\r\n","//todo: ทำ enum ของ direction\r\nclass SortBy {\r\n Name: string;\r\n Direction: number\r\n}\r\n\r\nexport default SortBy;","import SortBy from \"Lib/Fs.Core.Data/SortBy\";\r\n\r\nclass SortingCriteria extends Array {\r\n\r\n}\r\n\r\nexport default SortingCriteria;\r\n"],"names":[],"sourceRoot":""}