@oat-sa/tao-core-ui 1.60.2 → 1.62.0
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.
- package/LICENSE +339 -339
- package/README.md +23 -18
- package/dist/actionbar.js +393 -410
- package/dist/adder.js +143 -156
- package/dist/animable/absorbable/absorbable.js +208 -211
- package/dist/animable/absorbable/css/absorb.css +7 -8
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/css/pulse.css +7 -7
- package/dist/animable/pulsable/css/pulse.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +174 -174
- package/dist/areaBroker.js +59 -72
- package/dist/autocomplete/css/autocomplete.css +7 -8
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +494 -604
- package/dist/autoscroll.js +23 -25
- package/dist/badge/badge.js +201 -199
- package/dist/badge/css/badge.css +7 -8
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs/css/breadcrumbs.css +7 -7
- package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/dist/breadcrumbs.js +286 -285
- package/dist/btngrouper.js +83 -95
- package/dist/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/dist/bulkActionPopup.js +503 -503
- package/dist/button.js +300 -293
- package/dist/calculator/css/calculator.css +10 -10
- package/dist/calculator/css/calculator.css.map +1 -1
- package/dist/calculator.js +59 -72
- package/dist/cascadingComboBox.js +257 -256
- package/dist/ckeditor/ckConfigurator.js +130 -154
- package/dist/ckeditor/dtdHandler.js +305 -345
- package/dist/class/css/selector.css +7 -7
- package/dist/class/css/selector.css.map +1 -1
- package/dist/class/selector.js +437 -470
- package/dist/component/alignable.js +97 -121
- package/dist/component/containable.js +53 -58
- package/dist/component/css/components.css +7 -7
- package/dist/component/css/components.css.map +1 -1
- package/dist/component/css/windowComponent.css +7 -7
- package/dist/component/css/windowComponent.css.map +1 -1
- package/dist/component/draggable.js +34 -36
- package/dist/component/placeable.js +84 -102
- package/dist/component/resizable.js +79 -89
- package/dist/component/stackable.js +21 -27
- package/dist/component/windowed.js +284 -297
- package/dist/component.js +439 -467
- package/dist/container.js +79 -98
- package/dist/contextualPopup/css/contextualPopup.css +7 -7
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
- package/dist/contextualPopup.js +417 -436
- package/dist/dashboard/css/dashboard.css +7 -7
- package/dist/dashboard/css/dashboard.css.map +1 -1
- package/dist/dashboard.js +302 -305
- package/dist/datalist/css/datalist.css +7 -7
- package/dist/datalist/css/datalist.css.map +1 -1
- package/dist/datalist.js +783 -791
- package/dist/datatable/css/datatable.css +11 -7
- package/dist/datatable/css/datatable.css.map +1 -1
- package/dist/datatable/filterStrategy/filterStrategy.js +28 -30
- package/dist/datatable/filterStrategy/multiple.js +26 -45
- package/dist/datatable/filterStrategy/single.js +28 -40
- package/dist/datatable.js +1591 -1616
- package/dist/dateRange/css/dateRange.css +7 -7
- package/dist/dateRange/css/dateRange.css.map +1 -1
- package/dist/dateRange/dateRange.js +398 -412
- package/dist/datetime/css/picker.css +7 -7
- package/dist/datetime/css/picker.css.map +1 -1
- package/dist/datetime/picker.js +670 -703
- package/dist/deleter.js +383 -398
- package/dist/destination/css/selector.css +7 -7
- package/dist/destination/css/selector.css.map +1 -1
- package/dist/destination/selector.js +295 -293
- package/dist/dialog/alert.js +30 -32
- package/dist/dialog/confirm.js +29 -32
- package/dist/dialog/confirmDelete.js +223 -221
- package/dist/dialog.js +651 -695
- package/dist/disabler.js +108 -119
- package/dist/documentViewer/css/documentViewer.css +7 -7
- package/dist/documentViewer/css/documentViewer.css.map +1 -1
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +172 -169
- package/dist/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +32 -29
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +523 -564
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +376 -393
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +53 -68
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +517 -567
- package/dist/documentViewer/providers/pdfViewer/pdfjs/textManager.js +73 -96
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +381 -392
- package/dist/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +125 -152
- package/dist/documentViewer/providers/pdfViewer.js +189 -191
- package/dist/documentViewer/viewerFactory.js +76 -81
- package/dist/documentViewer.js +303 -311
- package/dist/dropdown/css/dropdown.css +7 -7
- package/dist/dropdown/css/dropdown.css.map +1 -1
- package/dist/dropdown.js +392 -412
- package/dist/durationer.js +77 -85
- package/dist/dynamicComponent/css/dynamicComponent.css +7 -7
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/dist/dynamicComponent.js +595 -630
- package/dist/feedback.js +365 -375
- package/dist/figure/FigureStateActive.js +246 -296
- package/dist/filesender.js +44 -54
- package/dist/filter.js +244 -240
- package/dist/form/css/dropdownForm.css +7 -7
- package/dist/form/css/dropdownForm.css.map +1 -1
- package/dist/form/css/form.css +7 -7
- package/dist/form/css/form.css.map +1 -1
- package/dist/form/dropdownForm.js +357 -362
- package/dist/form/form.js +703 -984
- package/dist/form/simpleForm.js +74 -77
- package/dist/form/validator/css/validator.css +7 -7
- package/dist/form/validator/css/validator.css.map +1 -1
- package/dist/form/validator/renderer.js +235 -241
- package/dist/form/validator/validator.js +181 -267
- package/dist/form/widget/css/widget.css +7 -7
- package/dist/form/widget/css/widget.css.map +1 -1
- package/dist/form/widget/definitions.js +27 -28
- package/dist/form/widget/loader.js +16 -16
- package/dist/form/widget/providers/checkBox.js +257 -264
- package/dist/form/widget/providers/comboBox.js +194 -193
- package/dist/form/widget/providers/default.js +44 -50
- package/dist/form/widget/providers/hidden.js +179 -176
- package/dist/form/widget/providers/hiddenBox.js +262 -272
- package/dist/form/widget/providers/radioBox.js +222 -223
- package/dist/form/widget/providers/textArea.js +197 -193
- package/dist/form/widget/providers/textBox.js +36 -37
- package/dist/form/widget/widget.js +480 -508
- package/dist/form.js +12 -17
- package/dist/formValidator/formValidator.js +74 -91
- package/dist/formValidator/highlighters/highlighter.js +43 -51
- package/dist/formValidator/highlighters/message.js +31 -32
- package/dist/formValidator/highlighters/tooltip.js +33 -35
- package/dist/generis/form/css/form.css +7 -7
- package/dist/generis/form/css/form.css.map +1 -1
- package/dist/generis/form/form.js +323 -331
- package/dist/generis/validator/css/validator.css +7 -7
- package/dist/generis/validator/css/validator.css.map +1 -1
- package/dist/generis/validator/validator.js +215 -216
- package/dist/generis/widget/checkBox/checkBox.js +227 -225
- package/dist/generis/widget/comboBox/comboBox.js +189 -183
- package/dist/generis/widget/css/widget.css +7 -7
- package/dist/generis/widget/css/widget.css.map +1 -1
- package/dist/generis/widget/hiddenBox/hiddenBox.js +231 -232
- package/dist/generis/widget/loader.js +21 -23
- package/dist/generis/widget/textBox/textBox.js +178 -172
- package/dist/generis/widget/widget.js +255 -266
- package/dist/groupedComboBox.js +231 -226
- package/dist/groupvalidator.js +30 -34
- package/dist/hider.js +43 -50
- package/dist/highlighter.js +946 -1057
- package/dist/image/ImgStateActive/extractLabel.js +20 -21
- package/dist/image/ImgStateActive/helper.js +21 -25
- package/dist/image/ImgStateActive/initHelper.js +133 -162
- package/dist/image/ImgStateActive/initMediaEditor.js +72 -92
- package/dist/image/ImgStateActive/mediaSizer.js +48 -58
- package/dist/image/ImgStateActive.js +185 -215
- package/dist/incrementer.js +91 -110
- package/dist/inplacer.js +108 -132
- package/dist/interactUtils.js +56 -67
- package/dist/itemButtonList/css/item-button-list.css +23 -24
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +444 -469
- package/dist/keyNavigation/navigableDomElement.js +124 -158
- package/dist/keyNavigation/navigator.js +235 -312
- package/dist/listbox/css/listbox.css +7 -7
- package/dist/listbox/css/listbox.css.map +1 -1
- package/dist/listbox.js +463 -476
- package/dist/liststyler.js +75 -76
- package/dist/loadingButton/css/button.css +7 -7
- package/dist/loadingButton/css/button.css.map +1 -1
- package/dist/loadingButton/loadingButton.js +219 -218
- package/dist/lock.js +484 -509
- package/dist/login/login.js +471 -486
- package/dist/maths/calculator/basicCalculator.js +247 -242
- package/dist/maths/calculator/calculatorComponent.js +34 -36
- package/dist/maths/calculator/core/areaBroker.js +30 -28
- package/dist/maths/calculator/core/board.js +805 -872
- package/dist/maths/calculator/core/expression.js +500 -518
- package/dist/maths/calculator/core/labels.js +240 -235
- package/dist/maths/calculator/core/plugin.js +20 -20
- package/dist/maths/calculator/core/terms.js +27 -27
- package/dist/maths/calculator/core/tokenizer.js +119 -132
- package/dist/maths/calculator/core/tokens.js +157 -168
- package/dist/maths/calculator/css/calculator.css +7 -7
- package/dist/maths/calculator/css/calculator.css.map +1 -1
- package/dist/maths/calculator/defaultCalculator.js +24 -27
- package/dist/maths/calculator/plugins/core/degrad.js +22 -30
- package/dist/maths/calculator/plugins/core/history.js +55 -67
- package/dist/maths/calculator/plugins/core/remind.js +22 -25
- package/dist/maths/calculator/plugins/core/stepNavigation.js +33 -49
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +255 -258
- package/dist/maths/calculator/plugins/modifiers/pow10.js +47 -52
- package/dist/maths/calculator/plugins/modifiers/sign.js +103 -130
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +288 -293
- package/dist/maths/calculator/pluginsLoader.js +22 -22
- package/dist/maths/calculator/scientificCalculator.js +339 -334
- package/dist/mediaEditor/mediaEditorComponent.js +244 -249
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +28 -33
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +228 -236
- package/dist/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/dist/mediaEditor/plugins/mediaDimension/helper.js +81 -106
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +597 -635
- package/dist/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/dist/mediaplayer/css/player.css +7 -7
- package/dist/mediaplayer/css/player.css.map +1 -1
- package/dist/mediaplayer/players/html5.js +646 -706
- package/dist/mediaplayer/players/youtube.js +393 -438
- package/dist/mediaplayer/players.js +19 -19
- package/dist/mediaplayer/support.js +66 -79
- package/dist/mediaplayer/utils/reminder.js +117 -128
- package/dist/mediaplayer/utils/timeObserver.js +106 -109
- package/dist/mediaplayer/youtubeManager.js +142 -170
- package/dist/mediaplayer.js +1484 -1774
- package/dist/mediasizer.js +633 -676
- package/dist/modal.js +137 -153
- package/dist/movableComponent.js +37 -37
- package/dist/pageSizeSelector.js +231 -224
- package/dist/pageStatus.js +43 -46
- package/dist/pagination/css/pagination.css +7 -7
- package/dist/pagination/css/pagination.css.map +1 -1
- package/dist/pagination/paginationStrategy.js +24 -25
- package/dist/pagination/providers/pages.js +281 -291
- package/dist/pagination/providers/simple.js +202 -196
- package/dist/pagination.js +49 -72
- package/dist/previewer.js +113 -138
- package/dist/progressbar.js +70 -80
- package/dist/propertySelector/css/propertySelector.css +74 -0
- package/dist/propertySelector/css/propertySelector.css.map +1 -0
- package/dist/propertySelector/propertySelector.js +489 -0
- package/dist/report.js +356 -359
- package/dist/resource/css/selector.css +7 -7
- package/dist/resource/css/selector.css.map +1 -1
- package/dist/resource/filters.js +275 -289
- package/dist/resource/list.js +1589 -1371
- package/dist/resource/selectable.js +101 -136
- package/dist/resource/selector.js +855 -914
- package/dist/resource/tree.js +1796 -1612
- package/dist/resourcemgr/css/resourcemgr.css +7 -7
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
- package/dist/resourcemgr/fileBrowser.js +540 -587
- package/dist/resourcemgr/filePreview.js +16 -25
- package/dist/resourcemgr/fileSelector.js +520 -547
- package/dist/resourcemgr/util/updatePermissions.js +10 -18
- package/dist/resourcemgr.js +325 -332
- package/dist/scroller.js +29 -33
- package/dist/searchModal/advancedSearch.js +949 -833
- package/dist/searchModal/css/advancedSearch.css +7 -14
- package/dist/searchModal/css/advancedSearch.css.map +1 -1
- package/dist/searchModal/css/searchModal.css +28 -8
- package/dist/searchModal/css/searchModal.css.map +1 -1
- package/dist/searchModal.js +616 -335
- package/dist/selecter.js +21 -28
- package/dist/stacker.js +52 -60
- package/dist/switch/css/switch.css +7 -7
- package/dist/switch/css/switch.css.map +1 -1
- package/dist/switch/switch.js +305 -311
- package/dist/tableModel.js +39 -49
- package/dist/tabs/css/tabs.css +12 -12
- package/dist/tabs/css/tabs.css.map +1 -1
- package/dist/tabs.js +588 -639
- package/dist/taskQueue/css/taskQueue.css +7 -7
- package/dist/taskQueue/css/taskQueue.css.map +1 -1
- package/dist/taskQueue/status.js +317 -322
- package/dist/taskQueue/table.js +383 -394
- package/dist/taskQueue/taskQueue.js +19 -19
- package/dist/taskQueue/taskQueueModel.js +459 -538
- package/dist/taskQueue.js +49 -67
- package/dist/taskQueueButton/css/taskable.css +7 -7
- package/dist/taskQueueButton/css/taskable.css.map +1 -1
- package/dist/taskQueueButton/css/treeButton.css +7 -7
- package/dist/taskQueueButton/css/treeButton.css.map +1 -1
- package/dist/taskQueueButton/standardButton.js +45 -43
- package/dist/taskQueueButton/taskable.js +267 -272
- package/dist/taskQueueButton/treeButton.js +200 -198
- package/dist/themeLoader.js +109 -129
- package/dist/themes.js +86 -100
- package/dist/toggler.js +76 -88
- package/dist/tooltip.js +296 -311
- package/dist/tooltipster.js +17 -17
- package/dist/transformer.js +140 -169
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/dist/tristateCheckboxGroup.js +319 -325
- package/dist/uploader.js +691 -724
- package/dist/validator/Report.js +1 -2
- package/dist/validator/Validator.js +6 -25
- package/dist/validator/validators.js +66 -80
- package/dist/validator.js +218 -254
- package/dist/waitForMedia.js +45 -51
- package/dist/waitingDialog/css/waitingDialog.css +7 -7
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
- package/dist/waitingDialog/waitingDialog.js +59 -77
- package/package.json +109 -107
- package/scss/basic.scss +16 -16
- package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +59 -59
- package/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -59
- package/scss/font/tao/tao.svg +234 -234
- package/scss/inc/_base.scss +495 -495
- package/scss/inc/_bootstrap.scss +6 -6
- package/scss/inc/_buttons.scss +114 -114
- package/scss/inc/_colors.scss +93 -88
- package/scss/inc/_feedback.scss +150 -150
- package/scss/inc/_flex-grid.scss +15 -15
- package/scss/inc/_fonts.scss +4 -4
- package/scss/inc/_forms.scss +832 -832
- package/scss/inc/_functions.scss +283 -283
- package/scss/inc/_jquery.nouislider.scss +254 -254
- package/scss/inc/_normalize.scss +528 -528
- package/scss/inc/_report.scss +67 -67
- package/scss/inc/_secondary-properties.scss +89 -89
- package/scss/inc/_select2.scss +634 -634
- package/scss/inc/_toolbars.scss +155 -155
- package/scss/inc/_tooltip.scss +312 -312
- package/scss/inc/_variables.scss +21 -21
- package/scss/inc/base/_highlight.scss +5 -5
- package/scss/inc/base/_list-style.scss +58 -58
- package/scss/inc/base/_svg.scss +3 -3
- package/scss/inc/base/_table.scss +62 -62
- package/scss/inc/fonts/_source-sans-pro.scss +29 -29
- package/scss/inc/fonts/_tao-icon-classes.scss +226 -226
- package/scss/inc/fonts/_tao-icon-def.scss +12 -12
- package/scss/inc/fonts/_tao-icon-vars.scss +240 -240
- package/src/actionbar/tpl/main.tpl +8 -8
- package/src/actionbar.js +251 -251
- package/src/adder.js +250 -250
- package/src/animable/absorbable/absorbable.js +134 -134
- package/src/animable/absorbable/css/absorb.css +7 -8
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/animable/absorbable/scss/absorb.scss +37 -37
- package/src/animable/pulsable/css/pulse.css +7 -7
- package/src/animable/pulsable/css/pulse.css.map +1 -1
- package/src/animable/pulsable/pulsable.js +90 -90
- package/src/animable/pulsable/scss/pulse.scss +22 -22
- package/src/areaBroker.js +160 -160
- package/src/autocomplete/css/autocomplete.css +7 -8
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/autocomplete/scss/autocomplete.scss +37 -37
- package/src/autocomplete.js +1029 -1029
- package/src/autoscroll.js +57 -57
- package/src/badge/badge.js +119 -119
- package/src/badge/css/badge.css +7 -8
- package/src/badge/css/badge.css.map +1 -1
- package/src/badge/scss/badge.scss +92 -92
- package/src/badge/tpl/badge.tpl +4 -4
- package/src/breadcrumbs/css/breadcrumbs.css +7 -7
- package/src/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/src/breadcrumbs/scss/breadcrumbs.scss +52 -52
- package/src/breadcrumbs/tpl/breadcrumbs.tpl +20 -20
- package/src/breadcrumbs.js +99 -99
- package/src/btngrouper.js +213 -213
- package/src/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/src/bulkActionPopup/scss/bulkActionPopup.scss +63 -63
- package/src/bulkActionPopup/tpl/layout.tpl +76 -76
- package/src/bulkActionPopup/tpl/select.tpl +8 -8
- package/src/bulkActionPopup.js +274 -274
- package/src/button/tpl/button.tpl +4 -4
- package/src/button.js +135 -135
- package/src/calculator/css/calculator.css +10 -10
- package/src/calculator/css/calculator.css.map +1 -1
- package/src/calculator/scss/calculator.scss +139 -139
- package/src/calculator.js +188 -188
- package/src/cascadingComboBox.js +126 -126
- package/src/ckeditor/ckConfigurator.js +736 -736
- package/src/ckeditor/dtdHandler.js +1030 -1030
- package/src/class/css/selector.css +7 -7
- package/src/class/css/selector.css.map +1 -1
- package/src/class/scss/selector.scss +101 -101
- package/src/class/selector.js +329 -329
- package/src/class/tpl/listItem.tpl +9 -9
- package/src/class/tpl/selector.tpl +10 -10
- package/src/component/alignable.js +274 -274
- package/src/component/containable.js +122 -122
- package/src/component/css/components.css +7 -7
- package/src/component/css/components.css.map +1 -1
- package/src/component/css/windowComponent.css +7 -7
- package/src/component/css/windowComponent.css.map +1 -1
- package/src/component/draggable.js +104 -104
- package/src/component/placeable.js +233 -233
- package/src/component/resizable.js +195 -195
- package/src/component/scss/components.scss +507 -507
- package/src/component/scss/windowComponent.scss +62 -62
- package/src/component/stackable.js +67 -67
- package/src/component/tpl/window.tpl +7 -7
- package/src/component/windowed.js +206 -206
- package/src/component.js +401 -401
- package/src/container.js +200 -200
- package/src/contextualPopup/css/contextualPopup.css +7 -7
- package/src/contextualPopup/css/contextualPopup.css.map +1 -1
- package/src/contextualPopup/scss/contextualPopup.scss +78 -78
- package/src/contextualPopup/tpl/popup.tpl +10 -10
- package/src/contextualPopup.js +297 -297
- package/src/css/basic.css +103 -106
- package/src/css/basic.css.map +1 -1
- package/src/dashboard/css/dashboard.css +7 -7
- package/src/dashboard/css/dashboard.css.map +1 -1
- package/src/dashboard/scss/dashboard.scss +93 -93
- package/src/dashboard/tpl/dashboard.tpl +16 -16
- package/src/dashboard/tpl/dashboardMetricsList.tpl +15 -15
- package/src/dashboard.js +184 -184
- package/src/datalist/css/datalist.css +7 -7
- package/src/datalist/css/datalist.css.map +1 -1
- package/src/datalist/scss/datalist.scss +116 -116
- package/src/datalist/tpl/list.tpl +24 -24
- package/src/datalist/tpl/main.tpl +44 -44
- package/src/datalist.js +500 -500
- package/src/datatable/css/datatable.css +11 -7
- package/src/datatable/css/datatable.css.map +1 -1
- package/src/datatable/filterStrategy/filterStrategy.js +70 -70
- package/src/datatable/filterStrategy/multiple.js +126 -126
- package/src/datatable/filterStrategy/single.js +108 -108
- package/src/datatable/scss/datatable.scss +149 -146
- package/src/datatable/tpl/button.tpl +6 -6
- package/src/datatable/tpl/layout.tpl +158 -158
- package/src/datatable.js +1056 -1056
- package/src/dateRange/css/dateRange.css +7 -7
- package/src/dateRange/css/dateRange.css.map +1 -1
- package/src/dateRange/dateRange.js +341 -341
- package/src/dateRange/scss/dateRange.scss +7 -7
- package/src/dateRange/tpl/select.tpl +18 -18
- package/src/datetime/css/picker.css +7 -7
- package/src/datetime/css/picker.css.map +1 -1
- package/src/datetime/picker.js +576 -576
- package/src/datetime/scss/picker.scss +192 -192
- package/src/datetime/tpl/picker.tpl +18 -18
- package/src/deleter/undo.tpl +6 -6
- package/src/deleter.js +296 -296
- package/src/destination/css/selector.css +7 -7
- package/src/destination/css/selector.css.map +1 -1
- package/src/destination/scss/selector.scss +36 -36
- package/src/destination/selector.js +195 -195
- package/src/destination/tpl/selector.tpl +13 -13
- package/src/dialog/alert.js +70 -70
- package/src/dialog/confirm.js +85 -85
- package/src/dialog/confirmDelete.js +95 -95
- package/src/dialog/tpl/body.tpl +24 -24
- package/src/dialog/tpl/buttons.tpl +6 -6
- package/src/dialog/tpl/checkbox.tpl +5 -5
- package/src/dialog.js +517 -517
- package/src/disabler.js +230 -230
- package/src/documentViewer/css/documentViewer.css +7 -7
- package/src/documentViewer/css/documentViewer.css.map +1 -1
- package/src/documentViewer/providers/pdfViewer/fallback/viewer.js +69 -69
- package/src/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +41 -41
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.js +475 -475
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.tpl +20 -20
- package/src/documentViewer/providers/pdfViewer/pdfjs/match.tpl +1 -1
- package/src/documentViewer/providers/pdfViewer/pdfjs/page.tpl +4 -4
- package/src/documentViewer/providers/pdfViewer/pdfjs/pageView.js +318 -318
- package/src/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +167 -167
- package/src/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +451 -451
- package/src/documentViewer/providers/pdfViewer/pdfjs/textManager.js +252 -252
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.js +299 -299
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.tpl +16 -16
- package/src/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +351 -351
- package/src/documentViewer/providers/pdfViewer.js +93 -93
- package/src/documentViewer/scss/documentViewer.scss +184 -184
- package/src/documentViewer/viewerFactory.js +191 -191
- package/src/documentViewer.js +238 -238
- package/src/dropdown/css/dropdown.css +7 -7
- package/src/dropdown/css/dropdown.css.map +1 -1
- package/src/dropdown/scss/dropdown.scss +99 -99
- package/src/dropdown/tpl/dropdown.tpl +8 -8
- package/src/dropdown/tpl/list-item.tpl +4 -4
- package/src/dropdown.js +255 -255
- package/src/durationer.js +222 -222
- package/src/dynamicComponent/css/dynamicComponent.css +7 -7
- package/src/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/src/dynamicComponent/scss/dynamicComponent.scss +98 -98
- package/src/dynamicComponent/tpl/layout.tpl +17 -17
- package/src/dynamicComponent.js +554 -554
- package/src/feedback/feedback.tpl +7 -7
- package/src/feedback.js +295 -295
- package/src/figure/FigureStateActive.js +174 -174
- package/src/filesender.js +114 -114
- package/src/filter/template.tpl +5 -5
- package/src/filter.js +135 -135
- package/src/form/css/dropdownForm.css +7 -7
- package/src/form/css/dropdownForm.css.map +1 -1
- package/src/form/css/form.css +7 -7
- package/src/form/css/form.css.map +1 -1
- package/src/form/dropdownForm.js +281 -281
- package/src/form/form.js +688 -688
- package/src/form/scss/dropdownForm.scss +60 -60
- package/src/form/scss/form.scss +25 -25
- package/src/form/simpleForm.js +125 -125
- package/src/form/tpl/dropdownForm.tpl +4 -4
- package/src/form/tpl/form.tpl +7 -7
- package/src/form/validator/css/validator.css +7 -7
- package/src/form/validator/css/validator.css.map +1 -1
- package/src/form/validator/renderer.js +118 -118
- package/src/form/validator/scss/validator.scss +14 -14
- package/src/form/validator/tpl/message.tpl +1 -1
- package/src/form/validator/tpl/validator.tpl +1 -1
- package/src/form/validator/validator.js +220 -220
- package/src/form/widget/css/widget.css +7 -7
- package/src/form/widget/css/widget.css.map +1 -1
- package/src/form/widget/definitions.js +51 -51
- package/src/form/widget/loader.js +40 -40
- package/src/form/widget/providers/checkBox.js +138 -138
- package/src/form/widget/providers/comboBox.js +63 -63
- package/src/form/widget/providers/default.js +90 -90
- package/src/form/widget/providers/hidden.js +62 -62
- package/src/form/widget/providers/hiddenBox.js +152 -152
- package/src/form/widget/providers/radioBox.js +99 -99
- package/src/form/widget/providers/textArea.js +52 -52
- package/src/form/widget/providers/textBox.js +48 -48
- package/src/form/widget/scss/widget.scss +55 -55
- package/src/form/widget/tpl/checkBox.tpl +25 -25
- package/src/form/widget/tpl/comboBox.tpl +13 -13
- package/src/form/widget/tpl/hidden.tpl +1 -1
- package/src/form/widget/tpl/hiddenBox.tpl +17 -17
- package/src/form/widget/tpl/label.tpl +6 -6
- package/src/form/widget/tpl/radioBox.tpl +25 -25
- package/src/form/widget/tpl/textArea.tpl +8 -8
- package/src/form/widget/tpl/widget.tpl +8 -8
- package/src/form/widget/widget.js +372 -372
- package/src/form.js +53 -53
- package/src/formValidator/formValidator.js +253 -253
- package/src/formValidator/highlighters/highlighter.js +102 -102
- package/src/formValidator/highlighters/message.js +70 -70
- package/src/formValidator/highlighters/tooltip.js +78 -78
- package/src/generis/form/css/form.css +7 -7
- package/src/generis/form/css/form.css.map +1 -1
- package/src/generis/form/form.js +239 -239
- package/src/generis/form/readme.md +70 -70
- package/src/generis/form/scss/form.scss +23 -23
- package/src/generis/form/tpl/form.tpl +16 -16
- package/src/generis/validator/css/validator.css +7 -7
- package/src/generis/validator/css/validator.css.map +1 -1
- package/src/generis/validator/readme.md +46 -46
- package/src/generis/validator/scss/validator.scss +13 -13
- package/src/generis/validator/validator.js +128 -128
- package/src/generis/widget/checkBox/checkBox.js +112 -112
- package/src/generis/widget/checkBox/checkBox.tpl +18 -18
- package/src/generis/widget/comboBox/comboBox.js +67 -67
- package/src/generis/widget/comboBox/comboBox.tpl +12 -12
- package/src/generis/widget/css/widget.css +7 -7
- package/src/generis/widget/css/widget.css.map +1 -1
- package/src/generis/widget/hiddenBox/hiddenBox.js +132 -132
- package/src/generis/widget/hiddenBox/hiddenBox.tpl +16 -16
- package/src/generis/widget/loader.js +49 -49
- package/src/generis/widget/readme.md +59 -59
- package/src/generis/widget/scss/widget.scss +61 -61
- package/src/generis/widget/textBox/textBox.js +65 -65
- package/src/generis/widget/textBox/textBox.tpl +7 -7
- package/src/generis/widget/widget.js +164 -164
- package/src/generis/widget/widget.tpl +5 -5
- package/src/groupedComboBox.js +99 -99
- package/src/groupvalidator.js +84 -84
- package/src/hider.js +88 -88
- package/src/highlighter.js +1166 -1166
- package/src/image/ImgStateActive/extractLabel.js +29 -29
- package/src/image/ImgStateActive/helper.js +36 -36
- package/src/image/ImgStateActive/initHelper.js +137 -137
- package/src/image/ImgStateActive/initMediaEditor.js +92 -92
- package/src/image/ImgStateActive/mediaSizer.js +63 -63
- package/src/image/ImgStateActive.js +115 -115
- package/src/incrementer.js +319 -319
- package/src/inplacer.js +316 -316
- package/src/interactUtils.js +140 -140
- package/src/itemButtonList/css/item-button-list.css +23 -24
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/itemButtonList/scss/item-button-list.scss +236 -236
- package/src/itemButtonList/tpl/itemButtonList.tpl +21 -21
- package/src/itemButtonList.js +274 -274
- package/src/keyNavigation/navigableDomElement.js +282 -282
- package/src/keyNavigation/navigator.js +543 -543
- package/src/listbox/css/listbox.css +7 -7
- package/src/listbox/css/listbox.css.map +1 -1
- package/src/listbox/scss/listbox.scss +116 -116
- package/src/listbox/tpl/list.tpl +14 -14
- package/src/listbox/tpl/main.tpl +9 -9
- package/src/listbox.js +251 -251
- package/src/liststyler.js +155 -155
- package/src/loadingButton/css/button.css +7 -7
- package/src/loadingButton/css/button.css.map +1 -1
- package/src/loadingButton/loadingButton.js +110 -110
- package/src/loadingButton/scss/button.scss +41 -41
- package/src/loadingButton/tpl/button.tpl +5 -5
- package/src/lock/lock.tpl +16 -16
- package/src/lock.js +395 -395
- package/src/login/login.js +322 -322
- package/src/login/tpl/login.tpl +29 -29
- package/src/login/tpl/passwordReveal.tpl +7 -7
- package/src/maths/calculator/basicCalculator.js +55 -55
- package/src/maths/calculator/calculatorComponent.js +128 -128
- package/src/maths/calculator/core/areaBroker.js +38 -38
- package/src/maths/calculator/core/board.js +841 -841
- package/src/maths/calculator/core/expression.js +430 -430
- package/src/maths/calculator/core/labels.js +116 -116
- package/src/maths/calculator/core/plugin.js +40 -40
- package/src/maths/calculator/core/terms.js +459 -459
- package/src/maths/calculator/core/tokenizer.js +245 -245
- package/src/maths/calculator/core/tokens.js +178 -178
- package/src/maths/calculator/core/tpl/board.tpl +4 -4
- package/src/maths/calculator/css/calculator.css +7 -7
- package/src/maths/calculator/css/calculator.css.map +1 -1
- package/src/maths/calculator/defaultCalculator.js +66 -66
- package/src/maths/calculator/plugins/core/degrad.js +90 -90
- package/src/maths/calculator/plugins/core/history.js +166 -166
- package/src/maths/calculator/plugins/core/remind.js +96 -96
- package/src/maths/calculator/plugins/core/stepNavigation.js +175 -175
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/defaultTemplate.tpl +36 -36
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +91 -91
- package/src/maths/calculator/plugins/modifiers/pow10.js +143 -143
- package/src/maths/calculator/plugins/modifiers/sign.js +339 -339
- package/src/maths/calculator/plugins/screen/simpleScreen/defaultTemplate.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/history.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +191 -191
- package/src/maths/calculator/pluginsLoader.js +46 -46
- package/src/maths/calculator/scientificCalculator.js +74 -74
- package/src/maths/calculator/scss/calculator.scss +396 -396
- package/src/maths/calculator/tpl/basicKeyboard.tpl +37 -37
- package/src/maths/calculator/tpl/basicScreen.tpl +2 -2
- package/src/maths/calculator/tpl/scientificKeyboard.tpl +61 -61
- package/src/maths/calculator/tpl/scientificScreen.tpl +3 -3
- package/src/mediaEditor/mediaEditorComponent.js +141 -141
- package/src/mediaEditor/plugins/mediaAlignment/helper.js +62 -62
- package/src/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +99 -99
- package/src/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/src/mediaEditor/plugins/mediaAlignment/tpl/mediaAlignment.tpl +25 -25
- package/src/mediaEditor/plugins/mediaDimension/helper.js +189 -189
- package/src/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +561 -561
- package/src/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/src/mediaEditor/plugins/mediaDimension/tpl/mediaDimension.tpl +55 -55
- package/src/mediaEditor/tpl/editor.tpl +4 -4
- package/src/mediaplayer/css/player.css +7 -7
- package/src/mediaplayer/css/player.css.map +1 -1
- package/src/mediaplayer/players/html5.js +564 -564
- package/src/mediaplayer/players/youtube.js +323 -323
- package/src/mediaplayer/players.js +29 -29
- package/src/mediaplayer/readme.md +305 -305
- package/src/mediaplayer/scss/player.scss +569 -569
- package/src/mediaplayer/support.js +126 -126
- package/src/mediaplayer/tpl/audio.tpl +6 -6
- package/src/mediaplayer/tpl/player.tpl +37 -37
- package/src/mediaplayer/tpl/source.tpl +1 -1
- package/src/mediaplayer/tpl/video.tpl +6 -6
- package/src/mediaplayer/tpl/youtube.tpl +1 -1
- package/src/mediaplayer/utils/reminder.js +184 -184
- package/src/mediaplayer/utils/timeObserver.js +143 -143
- package/src/mediaplayer/youtubeManager.js +161 -161
- package/src/mediaplayer.js +1606 -1606
- package/src/mediasizer/mediasizer.tpl +55 -55
- package/src/mediasizer.js +635 -635
- package/src/modal.js +365 -365
- package/src/movableComponent.js +78 -78
- package/src/pageSizeSelector/tpl/pageSizeSelector.tpl +9 -9
- package/src/pageSizeSelector.js +107 -107
- package/src/pageStatus.js +147 -147
- package/src/pagination/css/pagination.css +7 -7
- package/src/pagination/css/pagination.css.map +1 -1
- package/src/pagination/paginationStrategy.js +53 -53
- package/src/pagination/providers/pages.js +161 -161
- package/src/pagination/providers/simple.js +74 -74
- package/src/pagination/providers/tpl/pages/page.tpl +1 -1
- package/src/pagination/providers/tpl/pages.tpl +8 -8
- package/src/pagination/providers/tpl/simple.tpl +7 -7
- package/src/pagination/scss/pagination.scss +111 -111
- package/src/pagination.js +237 -237
- package/src/previewer.js +300 -300
- package/src/progressbar.js +165 -165
- package/src/propertySelector/css/propertySelector.css +74 -0
- package/src/propertySelector/css/propertySelector.css.map +1 -0
- package/src/propertySelector/propertySelector.js +286 -0
- package/src/propertySelector/scss/propertySelector.scss +66 -0
- package/src/propertySelector/tpl/highlighted-text.tpl +1 -0
- package/src/propertySelector/tpl/property-description.tpl +13 -0
- package/src/propertySelector/tpl/property-selector.tpl +7 -0
- package/src/report/feedback.tpl +11 -11
- package/src/report/layout.tpl +10 -10
- package/src/report.js +184 -184
- package/src/resource/css/selector.css +7 -7
- package/src/resource/css/selector.css.map +1 -1
- package/src/resource/filters.js +208 -208
- package/src/resource/list.js +200 -200
- package/src/resource/scss/_filters.scss +26 -26
- package/src/resource/scss/_resource-list.scss +107 -107
- package/src/resource/scss/_resource-tree.scss +205 -205
- package/src/resource/scss/selector.scss +187 -187
- package/src/resource/selectable.js +322 -322
- package/src/resource/selector.js +871 -871
- package/src/resource/tpl/filters.tpl +2 -2
- package/src/resource/tpl/list.tpl +7 -7
- package/src/resource/tpl/listNode.tpl +4 -4
- package/src/resource/tpl/selector.tpl +46 -46
- package/src/resource/tpl/tree.tpl +4 -4
- package/src/resource/tpl/treeNode.tpl +30 -30
- package/src/resource/tree.js +400 -400
- package/src/resourcemgr/css/resourcemgr.css +7 -7
- package/src/resourcemgr/css/resourcemgr.css.map +1 -1
- package/src/resourcemgr/fileBrowser.js +381 -381
- package/src/resourcemgr/filePreview.js +73 -73
- package/src/resourcemgr/fileSelector.js +348 -348
- package/src/resourcemgr/scss/resourcemgr.scss +254 -254
- package/src/resourcemgr/tpl/fileSelect.tpl +39 -39
- package/src/resourcemgr/tpl/folder.tpl +11 -11
- package/src/resourcemgr/tpl/layout.tpl +84 -84
- package/src/resourcemgr/tpl/rootFolder.tpl +13 -13
- package/src/resourcemgr/util/updatePermissions.js +53 -53
- package/src/resourcemgr.js +216 -216
- package/src/scroller.js +94 -94
- package/src/scss/basic.scss +16 -16
- package/src/searchModal/advancedSearch.js +638 -601
- package/src/searchModal/css/advancedSearch.css +7 -14
- package/src/searchModal/css/advancedSearch.css.map +1 -1
- package/src/searchModal/css/searchModal.css +28 -8
- package/src/searchModal/css/searchModal.css.map +1 -1
- package/src/searchModal/scss/advancedSearch.scss +171 -177
- package/src/searchModal/scss/searchModal.scss +393 -375
- package/src/searchModal/tpl/advanced-search.tpl +9 -9
- package/src/searchModal/tpl/criteria-alias.tpl +1 -0
- package/src/searchModal/tpl/criteria-class-label.tpl +1 -0
- package/src/searchModal/tpl/criteria-label.tpl +1 -0
- package/src/searchModal/tpl/highlighted-text.tpl +1 -0
- package/src/searchModal/tpl/info-message.tpl +3 -3
- package/src/searchModal/tpl/invalid-criteria-warning.tpl +10 -10
- package/src/searchModal/tpl/layout.tpl +27 -25
- package/src/searchModal/tpl/list-checkbox-criterion.tpl +17 -12
- package/src/searchModal/tpl/list-select-criterion.tpl +12 -6
- package/src/searchModal/tpl/property-select-button.tpl +1 -0
- package/src/searchModal/tpl/results-container.tpl +1 -0
- package/src/searchModal/tpl/text-criterion.tpl +11 -6
- package/src/searchModal.js +761 -496
- package/src/selecter.js +43 -43
- package/src/stacker.js +133 -133
- package/src/switch/css/switch.css +7 -7
- package/src/switch/css/switch.css.map +1 -1
- package/src/switch/scss/switch.scss +83 -83
- package/src/switch/switch.js +195 -195
- package/src/switch/tpl/switch.tpl +7 -7
- package/src/tableModel.js +112 -112
- package/src/tabs/css/tabs.css +12 -12
- package/src/tabs/css/tabs.css.map +1 -1
- package/src/tabs/scss/tabs.scss +50 -50
- package/src/tabs/tpl/panel.tpl +3 -3
- package/src/tabs/tpl/tabs.tpl +10 -10
- package/src/tabs.js +528 -528
- package/src/taskQueue/css/taskQueue.css +7 -7
- package/src/taskQueue/css/taskQueue.css.map +1 -1
- package/src/taskQueue/scss/taskQueue.scss +47 -47
- package/src/taskQueue/status.js +228 -228
- package/src/taskQueue/table.js +350 -350
- package/src/taskQueue/taskQueue.js +33 -33
- package/src/taskQueue/taskQueueModel.js +548 -548
- package/src/taskQueue/tpl/statusMessage.tpl +7 -7
- package/src/taskQueue.js +218 -218
- package/src/taskQueueButton/css/taskable.css +7 -7
- package/src/taskQueueButton/css/taskable.css.map +1 -1
- package/src/taskQueueButton/css/treeButton.css +7 -7
- package/src/taskQueueButton/css/treeButton.css.map +1 -1
- package/src/taskQueueButton/scss/taskable.scss +4 -4
- package/src/taskQueueButton/scss/treeButton.scss +34 -34
- package/src/taskQueueButton/standardButton.js +108 -108
- package/src/taskQueueButton/taskable.js +202 -202
- package/src/taskQueueButton/tpl/report.tpl +5 -5
- package/src/taskQueueButton/tpl/treeButton.tpl +6 -6
- package/src/taskQueueButton/treeButton.js +109 -109
- package/src/themeLoader.js +252 -252
- package/src/themes.js +162 -162
- package/src/toggler.js +200 -200
- package/src/tooltip/default.tpl +3 -3
- package/src/tooltip.js +160 -160
- package/src/tooltipster.js +25 -25
- package/src/transformer.js +327 -327
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/src/tristateCheckboxGroup/scss/tristateCheckboxGroup.scss +15 -15
- package/src/tristateCheckboxGroup/tpl/li.tpl +6 -6
- package/src/tristateCheckboxGroup.js +207 -207
- package/src/uploader/fileEntry.tpl +6 -6
- package/src/uploader/uploader.tpl +32 -32
- package/src/uploader.js +594 -594
- package/src/validator/Report.js +10 -10
- package/src/validator/Validator.js +108 -108
- package/src/validator/validators.js +220 -220
- package/src/validator.js +264 -264
- package/src/waitForMedia.js +82 -82
- package/src/waitingDialog/css/waitingDialog.css +7 -7
- package/src/waitingDialog/css/waitingDialog.css.map +1 -1
- package/src/waitingDialog/scss/waitingDialog.scss +34 -34
- package/src/waitingDialog/waitingDialog.js +240 -240
package/dist/datetime/picker.js
CHANGED
|
@@ -1,772 +1,739 @@
|
|
|
1
1
|
define(['lodash', 'i18n', 'moment', 'ui/component', 'lib/flatpickr/flatpickr', 'lib/flatpickr/l10n/index', 'handlebars', 'lib/dompurify/purify', 'css!lib/flatpickr/flatpickr.css', 'css!ui/datetime/css/picker.css'], function (_, __, moment, component, flatpickr, flatpickrLocalization, Handlebars, DOMPurify, flatpickr_css, picker_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* https://github.com/cure53/DOMPurify
|
|
31
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
32
|
-
* to make output safe for template systems
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
5
|
+
moment = moment && Object.prototype.hasOwnProperty.call(moment, 'default') ? moment['default'] : moment;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
flatpickr = flatpickr && Object.prototype.hasOwnProperty.call(flatpickr, 'default') ? flatpickr['default'] : flatpickr;
|
|
8
|
+
flatpickrLocalization = flatpickrLocalization && Object.prototype.hasOwnProperty.call(flatpickrLocalization, 'default') ? flatpickrLocalization['default'] : flatpickrLocalization;
|
|
9
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
10
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This program is free software; you can redistribute it and/or
|
|
14
|
+
* modify it under the terms of the GNU General Public License
|
|
15
|
+
* as published by the Free Software Foundation; under version 2
|
|
16
|
+
* of the License (non-upgradable).
|
|
17
|
+
*
|
|
18
|
+
* This program is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21
|
+
* GNU General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
* You should have received a copy of the GNU General Public License
|
|
24
|
+
* along with this program; if not, write to the Free Software
|
|
25
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
26
|
+
*
|
|
27
|
+
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
28
|
+
*
|
|
29
|
+
*
|
|
33
30
|
*/
|
|
31
|
+
function Helpers0 (hb) {
|
|
32
|
+
//register a i18n helper
|
|
33
|
+
hb.registerHelper('__', function (key) {
|
|
34
|
+
return __(key);
|
|
35
|
+
});
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
48
|
-
var fragments = [];
|
|
49
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
50
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
51
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
52
|
-
|
|
53
|
-
_.forIn(arr, function (value, key) {
|
|
54
|
-
var fragment = '';
|
|
37
|
+
/**
|
|
38
|
+
* Register dompurify helper
|
|
39
|
+
*
|
|
40
|
+
* https://github.com/cure53/DOMPurify
|
|
41
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
42
|
+
* to make output safe for template systems
|
|
43
|
+
*/
|
|
44
|
+
hb.registerHelper('dompurify', function (context) {
|
|
45
|
+
return DOMPurify.sanitize(context);
|
|
46
|
+
});
|
|
55
47
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Register join helper
|
|
50
|
+
*
|
|
51
|
+
* Example :
|
|
52
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
53
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
54
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
55
|
+
*/
|
|
56
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
57
|
+
var fragments = [];
|
|
58
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
59
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
60
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
61
|
+
_.forIn(arr, function (value, key) {
|
|
62
|
+
var fragment = '';
|
|
63
|
+
if (value !== null || value !== undefined) {
|
|
64
|
+
if (typeof value === 'boolean') {
|
|
65
|
+
value = value ? 'true' : 'false';
|
|
66
|
+
} else if (typeof value === 'object') {
|
|
67
|
+
value = _.values(value).join(' ');
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
value = '';
|
|
61
71
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
if (keyValueGlue !== undefined) {
|
|
73
|
+
fragment += key + keyValueGlue;
|
|
74
|
+
}
|
|
75
|
+
fragment += wrapper + value + wrapper;
|
|
76
|
+
fragments.push(fragment);
|
|
77
|
+
});
|
|
78
|
+
return fragments.join(fragmentGlue);
|
|
79
|
+
});
|
|
65
80
|
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
//register a classic "for loop" helper
|
|
82
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
83
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
84
|
+
var ret = '';
|
|
85
|
+
startIndex = parseInt(startIndex);
|
|
86
|
+
stopIndex = parseInt(stopIndex);
|
|
87
|
+
increment = parseInt(increment);
|
|
88
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
89
|
+
ret += options.fn(_.extend({}, this, {
|
|
90
|
+
i: i
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
return ret;
|
|
94
|
+
});
|
|
95
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
96
|
+
if (var1 == var2) {
|
|
97
|
+
return options.fn(this);
|
|
98
|
+
} else {
|
|
99
|
+
return options.inverse(this);
|
|
68
100
|
}
|
|
69
|
-
|
|
70
|
-
fragment += wrapper + value + wrapper;
|
|
71
|
-
fragments.push(fragment);
|
|
72
101
|
});
|
|
73
102
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
103
|
+
// register a "get property" helper
|
|
104
|
+
// it gets the named property from the provided context
|
|
105
|
+
hb.registerHelper('property', function (name, context) {
|
|
106
|
+
return context[name] || '';
|
|
107
|
+
});
|
|
77
108
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
109
|
+
// register an 'includes' helper
|
|
110
|
+
// it checks if value is in array
|
|
111
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
112
|
+
if (_.contains(haystack, needle)) {
|
|
113
|
+
return options.fn(this);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
83
117
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
118
|
+
if (!Helpers0.__initialized) {
|
|
119
|
+
Helpers0(Handlebars);
|
|
120
|
+
Helpers0.__initialized = true;
|
|
121
|
+
}
|
|
122
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
123
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
124
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
125
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
|
|
126
|
+
|
|
127
|
+
function program1(depth0,data) {
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
return "control-buttons";
|
|
88
131
|
}
|
|
89
132
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
133
|
+
function program3(depth0,data) {
|
|
134
|
+
|
|
135
|
+
var buffer = "", stack1;
|
|
136
|
+
buffer += "id=\""
|
|
137
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
138
|
+
+ "\"";
|
|
139
|
+
return buffer;
|
|
97
140
|
}
|
|
98
|
-
}); // register a "get property" helper
|
|
99
|
-
// it gets the named property from the provided context
|
|
100
|
-
|
|
101
|
-
hb.registerHelper('property', function (name, context) {
|
|
102
|
-
return context[name] || '';
|
|
103
|
-
}); // register an 'includes' helper
|
|
104
|
-
// it checks if value is in array
|
|
105
141
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
142
|
+
function program5(depth0,data) {
|
|
143
|
+
|
|
144
|
+
var buffer = "", stack1;
|
|
145
|
+
buffer += "name=\""
|
|
146
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.name)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
147
|
+
+ "\"";
|
|
148
|
+
return buffer;
|
|
109
149
|
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (!Helpers0.__initialized) {
|
|
114
|
-
Helpers0(Handlebars);
|
|
115
|
-
Helpers0.__initialized = true;
|
|
116
|
-
}
|
|
117
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
118
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
119
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
120
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
|
|
121
|
-
|
|
122
|
-
function program1(depth0,data) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return "control-buttons";
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function program3(depth0,data) {
|
|
129
|
-
|
|
130
|
-
var buffer = "", stack1;
|
|
131
|
-
buffer += "id=\""
|
|
132
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
133
|
-
+ "\"";
|
|
134
|
-
return buffer;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function program5(depth0,data) {
|
|
138
|
-
|
|
139
|
-
var buffer = "", stack1;
|
|
140
|
-
buffer += "name=\""
|
|
141
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.name)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
142
|
-
+ "\"";
|
|
143
|
-
return buffer;
|
|
144
|
-
}
|
|
145
150
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
function program7(depth0,data) {
|
|
152
|
+
|
|
153
|
+
var buffer = "", stack1;
|
|
154
|
+
buffer += "value=\""
|
|
155
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.value)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
156
|
+
+ "\"";
|
|
157
|
+
return buffer;
|
|
158
|
+
}
|
|
154
159
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
160
|
+
function program9(depth0,data) {
|
|
161
|
+
|
|
162
|
+
var buffer = "", stack1;
|
|
163
|
+
buffer += "placeholder=\""
|
|
164
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.placeholder)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
165
|
+
+ "\"";
|
|
166
|
+
return buffer;
|
|
167
|
+
}
|
|
163
168
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
function program11(depth0,data) {
|
|
170
|
+
|
|
171
|
+
var buffer = "", stack1;
|
|
172
|
+
buffer += "pattern=\""
|
|
173
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.pattern)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
174
|
+
+ "\"";
|
|
175
|
+
return buffer;
|
|
176
|
+
}
|
|
172
177
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
function program13(depth0,data) {
|
|
179
|
+
|
|
180
|
+
var buffer = "", stack1;
|
|
181
|
+
buffer += "aria-label=\""
|
|
182
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
183
|
+
+ "\"";
|
|
184
|
+
return buffer;
|
|
185
|
+
}
|
|
181
186
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
187
|
+
function program15(depth0,data) {
|
|
188
|
+
|
|
189
|
+
var buffer = "", helper, options;
|
|
190
|
+
buffer += "\n <button type=\"button\" disabled class=\"picker-toggle\" title=\""
|
|
191
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Toggle the date time picker", options) : helperMissing.call(depth0, "__", "Toggle the date time picker", options)))
|
|
192
|
+
+ "\" aria-label=\""
|
|
193
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Toggle the date time picker", options) : helperMissing.call(depth0, "__", "Toggle the date time picker", options)))
|
|
194
|
+
+ "\" >\n <span class=\"icon-calendar\" role=\"img\"></span>\n </button>\n <button type=\"button\" disabled class=\"picker-clear\" title=\""
|
|
195
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Clear the date time picker", options) : helperMissing.call(depth0, "__", "Clear the date time picker", options)))
|
|
196
|
+
+ "\" aria-label=\""
|
|
197
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Clear the date time picker", options) : helperMissing.call(depth0, "__", "Clear the date time picker", options)))
|
|
198
|
+
+ "\">\n <span class=\"icon-reset\" role=\"img\"></span>\n </button>\n ";
|
|
199
|
+
return buffer;
|
|
200
|
+
}
|
|
196
201
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* This program is free software; you can redistribute it and/or
|
|
235
|
-
* modify it under the terms of the GNU General Public License
|
|
236
|
-
* as published by the Free Software Foundation; under version 2
|
|
237
|
-
* of the License (non-upgradable).
|
|
238
|
-
*
|
|
239
|
-
* This program is distributed in the hope that it will be useful,
|
|
240
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
241
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
242
|
-
* GNU General Public License for more details.
|
|
243
|
-
*
|
|
244
|
-
* You should have received a copy of the GNU General Public License
|
|
245
|
-
* along with this program; if not, write to the Free Software
|
|
246
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
247
|
-
*
|
|
248
|
-
* Copyright (c) 2019 (original work) Open Assessment Technologies SA
|
|
249
|
-
*
|
|
250
|
-
*/
|
|
251
|
-
/**
|
|
252
|
-
* The supported formats
|
|
253
|
-
*/
|
|
254
|
-
|
|
255
|
-
var formats = {
|
|
256
|
-
date: {
|
|
257
|
-
default: 'YYYY-MM-DD',
|
|
258
|
-
localized: 'L'
|
|
259
|
-
},
|
|
260
|
-
time: {
|
|
261
|
-
default: 'HH:mm',
|
|
262
|
-
localized: 'LT'
|
|
263
|
-
},
|
|
264
|
-
datetime: {
|
|
265
|
-
default: 'YYYY-MM-DD HH:mm',
|
|
266
|
-
localized: 'L LT'
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
/**
|
|
270
|
-
* Possible setups for the picker
|
|
271
|
-
*/
|
|
272
|
-
|
|
273
|
-
var setups = {
|
|
274
|
-
'date-range': {
|
|
275
|
-
mode: 'range',
|
|
276
|
-
label: __('date range'),
|
|
277
|
-
format: formats.date
|
|
278
|
-
},
|
|
279
|
-
'datetime-range': {
|
|
280
|
-
mode: 'range',
|
|
281
|
-
label: __('date time range'),
|
|
282
|
-
enableTime: true,
|
|
283
|
-
format: formats.datetime
|
|
284
|
-
},
|
|
285
|
-
date: {
|
|
286
|
-
mode: 'single',
|
|
287
|
-
format: formats.date
|
|
288
|
-
},
|
|
289
|
-
time: {
|
|
290
|
-
mode: 'single',
|
|
291
|
-
enableTime: true,
|
|
292
|
-
label: __('time'),
|
|
293
|
-
noCalendar: true,
|
|
294
|
-
format: formats.time
|
|
295
|
-
},
|
|
296
|
-
datetime: {
|
|
297
|
-
mode: 'single',
|
|
298
|
-
enableTime: true,
|
|
299
|
-
label: __('date time'),
|
|
300
|
-
format: formats.datetime
|
|
301
|
-
}
|
|
302
|
-
};
|
|
303
|
-
/**
|
|
304
|
-
* List of supported constraints
|
|
305
|
-
*/
|
|
306
|
-
|
|
307
|
-
var supportedConstraints = ['minDate', 'maxDate', 'enable', 'disable'];
|
|
308
|
-
/**
|
|
309
|
-
* Checks translation existing for given locale
|
|
310
|
-
* @param {String} locale
|
|
311
|
-
* @returns {Boolean}
|
|
312
|
-
*/
|
|
313
|
-
|
|
314
|
-
var hasTranslationsForLocale = function hasTranslationsForLocale(locale) {
|
|
315
|
-
return _.isObject(flatpickrLocalization[locale]);
|
|
316
|
-
};
|
|
317
|
-
/**
|
|
318
|
-
* Detects document language
|
|
319
|
-
* @returns {String | undefined}
|
|
320
|
-
*/
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
var getDefaultLocale = function getDefaultLocale() {
|
|
324
|
-
var documentLang = window.document.documentElement.getAttribute('lang');
|
|
325
|
-
var documentLocale = documentLang && documentLang.split('-')[0];
|
|
326
|
-
|
|
327
|
-
if (documentLocale && hasTranslationsForLocale(documentLocale)) {
|
|
328
|
-
return documentLocale;
|
|
329
|
-
}
|
|
330
|
-
};
|
|
331
|
-
/**
|
|
332
|
-
* The default configuration
|
|
333
|
-
* @see dateTimePickerFactory
|
|
334
|
-
*/
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
var defaultConfig = {
|
|
338
|
-
setup: 'date',
|
|
339
|
-
controlButtons: false,
|
|
340
|
-
locale: getDefaultLocale(),
|
|
341
|
-
useLocalizedFormat: false,
|
|
342
|
-
constraints: {}
|
|
343
|
-
};
|
|
344
|
-
/**
|
|
345
|
-
* Get the long date/time format from the localized format (LT to 'DD/MM/YYYY HH:mm')
|
|
346
|
-
* @param {String} locale - 2 digits locale code (en, fr, de, etc.)
|
|
347
|
-
* @param {String} localizedFormat - see moment's localized format (L, LT, LLLL, ...)
|
|
348
|
-
* @returns {String|boolean} the long date/time format
|
|
349
|
-
*/
|
|
350
|
-
|
|
351
|
-
var getLongLocalizedFormat = function getLongLocalizedFormat(locale, localizedFormat) {
|
|
352
|
-
if (/[LT]+/.test(localizedFormat) && locale) {
|
|
353
|
-
return localizedFormat.split(' ').map(function (format) {
|
|
354
|
-
return moment(new Date()).locale(locale).localeData().longDateFormat(format);
|
|
355
|
-
}).join(' ');
|
|
202
|
+
buffer += "<div class=\"datetime-picker ";
|
|
203
|
+
if (helper = helpers.setup) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
204
|
+
else { helper = (depth0 && depth0.setup); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
205
|
+
buffer += escapeExpression(stack1)
|
|
206
|
+
+ " ";
|
|
207
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.controlButtons), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
208
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
209
|
+
buffer += "\">\n <input type=\"text\" disabled\n ";
|
|
210
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.id), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
211
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
212
|
+
buffer += "\n ";
|
|
213
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.name), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
|
|
214
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
215
|
+
buffer += "\n ";
|
|
216
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.value), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
217
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
218
|
+
buffer += "\n ";
|
|
219
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.placeholder), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
220
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
221
|
+
buffer += "\n ";
|
|
222
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.pattern), {hash:{},inverse:self.noop,fn:self.program(11, program11, data),data:data});
|
|
223
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
224
|
+
buffer += "\n ";
|
|
225
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.field)),stack1 == null || stack1 === false ? stack1 : stack1.label), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
|
|
226
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
227
|
+
buffer += "\n />\n ";
|
|
228
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.controlButtons), {hash:{},inverse:self.noop,fn:self.program(15, program15, data),data:data});
|
|
229
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
230
|
+
buffer += "\n</div>\n";
|
|
231
|
+
return buffer;
|
|
232
|
+
});
|
|
233
|
+
function dateTimePickerTpl(data, options, asString) {
|
|
234
|
+
var html = Template(data, options);
|
|
235
|
+
return (asString || true) ? html : $(html);
|
|
356
236
|
}
|
|
357
237
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
var isFormatInSeconds = function isFormatInSeconds(format) {
|
|
378
|
-
return format && /(:ss)+/i.test(format);
|
|
379
|
-
};
|
|
380
|
-
/**
|
|
381
|
-
* The component factory
|
|
382
|
-
*
|
|
383
|
-
* @param {HTMLElement|jQuery} container - where to append the component
|
|
384
|
-
* @param {Object} [config]
|
|
385
|
-
* @param {String} [config.setup = date] - the picker setup in date-range, datetime-range, date, time and datetime
|
|
386
|
-
* @param {String} [config.locale] - the picker local
|
|
387
|
-
* @param {String} [config.useLocalzedFormat = false] - does the locale is used to define the format
|
|
388
|
-
* @param {String} [config.format] - define your own date/time format for the instance
|
|
389
|
-
* @param {Boolean} [config.controlButtons = false] - does the field have controls to trigger opening and reset
|
|
390
|
-
* @param {Object} [config.constraints] - date time selection constraints
|
|
391
|
-
* @param {Object} [config.constraints] - date time selection constraints
|
|
392
|
-
* @param {Array<String|Date>} [config.constraints.disable] - list of dates to disable
|
|
393
|
-
* @param {Array<String|Date>} [config.constraints.enable] - list of dates to enable (if some are disabled)
|
|
394
|
-
* @param {String|Date} [config.constraints.minDate] - minimum date to start picking from
|
|
395
|
-
* @param {String|Date} [config.constraints.maxDate] - maximum date to start picking from
|
|
396
|
-
*
|
|
397
|
-
* @param {HTMLInputElement} [config.replaceField] - an input field to replace. The field attr are taken instead of config.field
|
|
398
|
-
* @param {Object} [config.field] - the input field configuration
|
|
399
|
-
* @param {String} [config.field.name] - the input field name
|
|
400
|
-
* @param {String} [config.field.id] - the input field id
|
|
401
|
-
* @param {String} [config.field.placeholder] - the input field placeholder
|
|
402
|
-
* @param {String} [config.field.pattern] - the input field pattern mask
|
|
403
|
-
* @param {String} [config.field.value] - the input field value
|
|
404
|
-
* @param {String} [config.field.label] - label the field for a11y
|
|
405
|
-
*
|
|
406
|
-
* @returns {dateTimePickerComponent} the component instance
|
|
407
|
-
*/
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
function dateTimePickerFactory(container, options) {
|
|
411
|
-
var format = '';
|
|
412
|
-
var value = '';
|
|
413
|
-
/**
|
|
414
|
-
* @typedef {Object} dateTimePicker
|
|
238
|
+
/**
|
|
239
|
+
* This program is free software; you can redistribute it and/or
|
|
240
|
+
* modify it under the terms of the GNU General Public License
|
|
241
|
+
* as published by the Free Software Foundation; under version 2
|
|
242
|
+
* of the License (non-upgradable).
|
|
243
|
+
*
|
|
244
|
+
* This program is distributed in the hope that it will be useful,
|
|
245
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
246
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
247
|
+
* GNU General Public License for more details.
|
|
248
|
+
*
|
|
249
|
+
* You should have received a copy of the GNU General Public License
|
|
250
|
+
* along with this program; if not, write to the Free Software
|
|
251
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
252
|
+
*
|
|
253
|
+
* Copyright (c) 2019 (original work) Open Assessment Technologies SA
|
|
254
|
+
*
|
|
415
255
|
*/
|
|
416
256
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
return this.controls.input.value;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
return null;
|
|
428
|
-
},
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Set the current value
|
|
432
|
-
* @param {String|Date} newValue - the new value matching the format
|
|
433
|
-
*/
|
|
434
|
-
setValue: function setValue(newValue) {
|
|
435
|
-
if (this.is('ready')) {
|
|
436
|
-
value = newValue;
|
|
437
|
-
|
|
438
|
-
if (_.isString(value)) {
|
|
439
|
-
this.controls.input.value = value;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
this.picker.setDate(value, true);
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
return null;
|
|
446
|
-
},
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Get the dates currently selected.
|
|
450
|
-
* Usefull for the range mode to get the date list
|
|
451
|
-
* @returns {Array<[Date|String]>|boolean} the selected dates
|
|
452
|
-
*/
|
|
453
|
-
getSelectedDates: function getSelectedDates() {
|
|
454
|
-
var selection;
|
|
455
|
-
|
|
456
|
-
if (this.is('ready') && this.picker) {
|
|
457
|
-
selection = this.picker.selectedDates;
|
|
458
|
-
|
|
459
|
-
if (selection && !_.isArray(selection)) {
|
|
460
|
-
return [selection];
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
return selection;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
return false;
|
|
257
|
+
/**
|
|
258
|
+
* The supported formats
|
|
259
|
+
*/
|
|
260
|
+
var formats = {
|
|
261
|
+
date: {
|
|
262
|
+
default: 'YYYY-MM-DD',
|
|
263
|
+
localized: 'L'
|
|
467
264
|
},
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
* @returns {String} the format
|
|
472
|
-
*/
|
|
473
|
-
getFormat: function getFormat() {
|
|
474
|
-
return format;
|
|
265
|
+
time: {
|
|
266
|
+
default: 'HH:mm',
|
|
267
|
+
localized: 'LT'
|
|
475
268
|
},
|
|
269
|
+
datetime: {
|
|
270
|
+
default: 'YYYY-MM-DD HH:mm',
|
|
271
|
+
localized: 'L LT'
|
|
272
|
+
}
|
|
273
|
+
};
|
|
476
274
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
return this;
|
|
275
|
+
/**
|
|
276
|
+
* Possible setups for the picker
|
|
277
|
+
*/
|
|
278
|
+
var setups = {
|
|
279
|
+
'date-range': {
|
|
280
|
+
mode: 'range',
|
|
281
|
+
label: __('date range'),
|
|
282
|
+
format: formats.date
|
|
488
283
|
},
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
*/
|
|
495
|
-
close: function close() {
|
|
496
|
-
if (this.is('ready')) {
|
|
497
|
-
this.picker.close();
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
return this;
|
|
284
|
+
'datetime-range': {
|
|
285
|
+
mode: 'range',
|
|
286
|
+
label: __('date time range'),
|
|
287
|
+
enableTime: true,
|
|
288
|
+
format: formats.datetime
|
|
501
289
|
},
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
* @returns {dateTimePicker} chains
|
|
506
|
-
* @fires dateTimePicker#close
|
|
507
|
-
* @fires dateTimePicker#clear
|
|
508
|
-
*/
|
|
509
|
-
clear: function clear() {
|
|
510
|
-
if (this.is('ready')) {
|
|
511
|
-
value = '';
|
|
512
|
-
this.picker.close();
|
|
513
|
-
this.picker.clear();
|
|
514
|
-
/**
|
|
515
|
-
* The picker get cleared
|
|
516
|
-
* @event dateTimePicker#clear
|
|
517
|
-
*/
|
|
518
|
-
|
|
519
|
-
this.trigger('clear');
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
return this;
|
|
290
|
+
date: {
|
|
291
|
+
mode: 'single',
|
|
292
|
+
format: formats.date
|
|
523
293
|
},
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
*/
|
|
531
|
-
toggle: function toogle() {
|
|
532
|
-
if (this.is('ready')) {
|
|
533
|
-
this.picker.toggle();
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
return this;
|
|
294
|
+
time: {
|
|
295
|
+
mode: 'single',
|
|
296
|
+
enableTime: true,
|
|
297
|
+
label: __('time'),
|
|
298
|
+
noCalendar: true,
|
|
299
|
+
format: formats.time
|
|
537
300
|
},
|
|
301
|
+
datetime: {
|
|
302
|
+
mode: 'single',
|
|
303
|
+
enableTime: true,
|
|
304
|
+
label: __('date time'),
|
|
305
|
+
format: formats.datetime
|
|
306
|
+
}
|
|
307
|
+
};
|
|
538
308
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
* @returns {dateTimePicker} chains
|
|
544
|
-
* @fires dateTimePicker#open
|
|
545
|
-
* @fires dateTimePicker#close
|
|
546
|
-
*/
|
|
547
|
-
updateConstraints: function updateConstraints(constraint, constraintValue) {
|
|
548
|
-
if (this.is('ready')) {
|
|
549
|
-
if (_.contains(supportedConstraints, constraint)) {
|
|
550
|
-
this.picker.set(constraint, constraintValue);
|
|
551
|
-
}
|
|
552
|
-
}
|
|
309
|
+
/**
|
|
310
|
+
* List of supported constraints
|
|
311
|
+
*/
|
|
312
|
+
var supportedConstraints = ['minDate', 'maxDate', 'enable', 'disable'];
|
|
553
313
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
var setup = setups[this.config.setup] || setups.datetime; //map the locale from the options to the picker locale
|
|
561
|
-
|
|
562
|
-
if (this.config.locale && hasTranslationsForLocale(this.config.locale)) {
|
|
563
|
-
locale = this.config.locale;
|
|
564
|
-
} //date/time format
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
if (locale && this.config.useLocalizedFormat) {
|
|
568
|
-
//get the format from the locale
|
|
569
|
-
format = getLongLocalizedFormat(locale, setup.format.localized);
|
|
570
|
-
} else {
|
|
571
|
-
//get the format from the config
|
|
572
|
-
format = this.config.format || setup.format.default;
|
|
573
|
-
} //input field configuration
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
this.config.field = this.config.field || {}; // replace a field by the date picker input field
|
|
577
|
-
//TODO consider replacing data-attr and classes
|
|
578
|
-
|
|
579
|
-
if (this.config.replaceField && this.config.replaceField instanceof HTMLInputElement) {
|
|
580
|
-
this.config.field.id = this.config.replaceField.id;
|
|
581
|
-
this.config.field.name = this.config.replaceField.name;
|
|
582
|
-
this.config.field.placeholder = this.config.replaceField.placeholder;
|
|
583
|
-
this.config.field.value = this.config.replaceField.value;
|
|
584
|
-
this.config.field.pattern = this.config.replaceField.pattern;
|
|
585
|
-
this.config.replaceField.parentNode.removeChild(this.config.replaceField);
|
|
586
|
-
}
|
|
314
|
+
/**
|
|
315
|
+
* Checks translation existing for given locale
|
|
316
|
+
* @param {String} locale
|
|
317
|
+
* @returns {Boolean}
|
|
318
|
+
*/
|
|
319
|
+
const hasTranslationsForLocale = locale => _.isObject(flatpickrLocalization[locale]);
|
|
587
320
|
|
|
588
|
-
|
|
589
|
-
|
|
321
|
+
/**
|
|
322
|
+
* Detects document language
|
|
323
|
+
* @returns {String | undefined}
|
|
324
|
+
*/
|
|
325
|
+
const getDefaultLocale = () => {
|
|
326
|
+
const documentLang = window.document.documentElement.getAttribute('lang');
|
|
327
|
+
const documentLocale = documentLang && documentLang.split('-')[0];
|
|
328
|
+
if (documentLocale && hasTranslationsForLocale(documentLocale)) {
|
|
329
|
+
return documentLocale;
|
|
590
330
|
}
|
|
331
|
+
};
|
|
591
332
|
|
|
592
|
-
|
|
593
|
-
|
|
333
|
+
/**
|
|
334
|
+
* The default configuration
|
|
335
|
+
* @see dateTimePickerFactory
|
|
336
|
+
*/
|
|
337
|
+
var defaultConfig = {
|
|
338
|
+
setup: 'date',
|
|
339
|
+
controlButtons: false,
|
|
340
|
+
locale: getDefaultLocale(),
|
|
341
|
+
useLocalizedFormat: false,
|
|
342
|
+
constraints: {}
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Get the long date/time format from the localized format (LT to 'DD/MM/YYYY HH:mm')
|
|
347
|
+
* @param {String} locale - 2 digits locale code (en, fr, de, etc.)
|
|
348
|
+
* @param {String} localizedFormat - see moment's localized format (L, LT, LLLL, ...)
|
|
349
|
+
* @returns {String|boolean} the long date/time format
|
|
350
|
+
*/
|
|
351
|
+
var getLongLocalizedFormat = function getLongLocalizedFormat(locale, localizedFormat) {
|
|
352
|
+
if (/[LT]+/.test(localizedFormat) && locale) {
|
|
353
|
+
return localizedFormat.split(' ').map(function (format) {
|
|
354
|
+
return moment(new Date()).locale(locale).localeData().longDateFormat(format);
|
|
355
|
+
}).join(' ');
|
|
594
356
|
}
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
* @see https://flatpickr.js.org/options/
|
|
598
|
-
*/
|
|
357
|
+
return false;
|
|
358
|
+
};
|
|
599
359
|
|
|
360
|
+
/**
|
|
361
|
+
* Does the given date/time format uses the am/pm pattern ?
|
|
362
|
+
* @param {String} format - moment format
|
|
363
|
+
* @returns {Boolean} true if the contains am/pm
|
|
364
|
+
*/
|
|
365
|
+
var isFormatAmPm = function isFormatAmPm(format) {
|
|
366
|
+
return format && /a$/i.test(format);
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Does the given date/time format contains seconds ?
|
|
371
|
+
* @param {String} format - moment format
|
|
372
|
+
* @returns {Boolean} true if the format contains seconds
|
|
373
|
+
*/
|
|
374
|
+
var isFormatInSeconds = function isFormatInSeconds(format) {
|
|
375
|
+
return format && /(:ss)+/i.test(format);
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* The component factory
|
|
380
|
+
*
|
|
381
|
+
* @param {HTMLElement|jQuery} container - where to append the component
|
|
382
|
+
* @param {Object} [config]
|
|
383
|
+
* @param {String} [config.setup = date] - the picker setup in date-range, datetime-range, date, time and datetime
|
|
384
|
+
* @param {String} [config.locale] - the picker local
|
|
385
|
+
* @param {String} [config.useLocalzedFormat = false] - does the locale is used to define the format
|
|
386
|
+
* @param {String} [config.format] - define your own date/time format for the instance
|
|
387
|
+
* @param {Boolean} [config.controlButtons = false] - does the field have controls to trigger opening and reset
|
|
388
|
+
* @param {Object} [config.constraints] - date time selection constraints
|
|
389
|
+
* @param {Object} [config.constraints] - date time selection constraints
|
|
390
|
+
* @param {Array<String|Date>} [config.constraints.disable] - list of dates to disable
|
|
391
|
+
* @param {Array<String|Date>} [config.constraints.enable] - list of dates to enable (if some are disabled)
|
|
392
|
+
* @param {String|Date} [config.constraints.minDate] - minimum date to start picking from
|
|
393
|
+
* @param {String|Date} [config.constraints.maxDate] - maximum date to start picking from
|
|
394
|
+
*
|
|
395
|
+
* @param {HTMLInputElement} [config.replaceField] - an input field to replace. The field attr are taken instead of config.field
|
|
396
|
+
* @param {Object} [config.field] - the input field configuration
|
|
397
|
+
* @param {String} [config.field.name] - the input field name
|
|
398
|
+
* @param {String} [config.field.id] - the input field id
|
|
399
|
+
* @param {String} [config.field.placeholder] - the input field placeholder
|
|
400
|
+
* @param {String} [config.field.pattern] - the input field pattern mask
|
|
401
|
+
* @param {String} [config.field.value] - the input field value
|
|
402
|
+
* @param {String} [config.field.label] - label the field for a11y
|
|
403
|
+
*
|
|
404
|
+
* @returns {dateTimePickerComponent} the component instance
|
|
405
|
+
*/
|
|
406
|
+
function dateTimePickerFactory(container, options) {
|
|
407
|
+
var format = '';
|
|
408
|
+
var value = '';
|
|
600
409
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
clickOpens: !this.config.controlButtons,
|
|
609
|
-
disableMobile: true,
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* How flatpickr will format the given date
|
|
613
|
-
* @param {Date} date
|
|
614
|
-
* @returns {String} the formatted date
|
|
410
|
+
/**
|
|
411
|
+
* @typedef {Object} dateTimePicker
|
|
412
|
+
*/
|
|
413
|
+
var dateTimePicker = component({
|
|
414
|
+
/**
|
|
415
|
+
* Get the current value
|
|
416
|
+
* @returns {String} the field value, null if none
|
|
615
417
|
*/
|
|
616
|
-
|
|
617
|
-
|
|
418
|
+
getValue: function getValue() {
|
|
419
|
+
if (this.is('rendered')) {
|
|
420
|
+
return this.controls.input.value;
|
|
421
|
+
}
|
|
422
|
+
return null;
|
|
618
423
|
},
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
*
|
|
622
|
-
* @param {String} dateString
|
|
623
|
-
* @returns {Date}
|
|
424
|
+
/**
|
|
425
|
+
* Set the current value
|
|
426
|
+
* @param {String|Date} newValue - the new value matching the format
|
|
624
427
|
*/
|
|
625
|
-
|
|
626
|
-
|
|
428
|
+
setValue: function setValue(newValue) {
|
|
429
|
+
if (this.is('ready')) {
|
|
430
|
+
value = newValue;
|
|
431
|
+
if (_.isString(value)) {
|
|
432
|
+
this.controls.input.value = value;
|
|
433
|
+
}
|
|
434
|
+
this.picker.setDate(value, true);
|
|
435
|
+
}
|
|
436
|
+
return null;
|
|
627
437
|
},
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
*
|
|
631
|
-
* @
|
|
438
|
+
/**
|
|
439
|
+
* Get the dates currently selected.
|
|
440
|
+
* Usefull for the range mode to get the date list
|
|
441
|
+
* @returns {Array<[Date|String]>|boolean} the selected dates
|
|
632
442
|
*/
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
443
|
+
getSelectedDates: function getSelectedDates() {
|
|
444
|
+
var selection;
|
|
445
|
+
if (this.is('ready') && this.picker) {
|
|
446
|
+
selection = this.picker.selectedDates;
|
|
447
|
+
if (selection && !_.isArray(selection)) {
|
|
448
|
+
return [selection];
|
|
449
|
+
}
|
|
450
|
+
return selection;
|
|
451
|
+
}
|
|
452
|
+
return false;
|
|
639
453
|
},
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
*
|
|
643
|
-
* @fires dateTimePicker#close
|
|
454
|
+
/**
|
|
455
|
+
* Get the date/time format description, ie. 'YYYY-MM-DD'
|
|
456
|
+
* @returns {String} the format
|
|
644
457
|
*/
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
* The picker get closed
|
|
648
|
-
* @event dateTimePicker#close
|
|
649
|
-
*/
|
|
650
|
-
self.trigger('close');
|
|
458
|
+
getFormat: function getFormat() {
|
|
459
|
+
return format;
|
|
651
460
|
},
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
*
|
|
655
|
-
* @
|
|
461
|
+
/**
|
|
462
|
+
* Open the picker
|
|
463
|
+
* @returns {dateTimePicker} chains
|
|
464
|
+
* @fires dateTimePicker#open
|
|
465
|
+
*/
|
|
466
|
+
open: function open() {
|
|
467
|
+
if (this.is('ready')) {
|
|
468
|
+
this.picker.open();
|
|
469
|
+
}
|
|
470
|
+
return this;
|
|
471
|
+
},
|
|
472
|
+
/**
|
|
473
|
+
* Close the picker
|
|
474
|
+
* @returns {dateTimePicker} chains
|
|
475
|
+
* @fires dateTimePicker#close
|
|
476
|
+
*/
|
|
477
|
+
close: function close() {
|
|
478
|
+
if (this.is('ready')) {
|
|
479
|
+
this.picker.close();
|
|
480
|
+
}
|
|
481
|
+
return this;
|
|
482
|
+
},
|
|
483
|
+
/**
|
|
484
|
+
* Clear the field content and close the picker
|
|
485
|
+
* @returns {dateTimePicker} chains
|
|
486
|
+
* @fires dateTimePicker#close
|
|
487
|
+
* @fires dateTimePicker#clear
|
|
488
|
+
*/
|
|
489
|
+
clear: function clear() {
|
|
490
|
+
if (this.is('ready')) {
|
|
491
|
+
value = '';
|
|
492
|
+
this.picker.close();
|
|
493
|
+
this.picker.clear();
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* The picker get cleared
|
|
497
|
+
* @event dateTimePicker#clear
|
|
498
|
+
*/
|
|
499
|
+
this.trigger('clear');
|
|
500
|
+
}
|
|
501
|
+
return this;
|
|
502
|
+
},
|
|
503
|
+
/**
|
|
504
|
+
* Clear the field content and close the picker
|
|
505
|
+
* @returns {dateTimePicker} chains
|
|
506
|
+
* @fires dateTimePicker#open
|
|
507
|
+
* @fires dateTimePicker#close
|
|
656
508
|
*/
|
|
657
|
-
|
|
658
|
-
if (
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
509
|
+
toggle: function toogle() {
|
|
510
|
+
if (this.is('ready')) {
|
|
511
|
+
this.picker.toggle();
|
|
512
|
+
}
|
|
513
|
+
return this;
|
|
514
|
+
},
|
|
515
|
+
/**
|
|
516
|
+
* Update constraints on a running instance
|
|
517
|
+
* @param {String} constraint - the constraint name in minDate, maxDate, enable, disable
|
|
518
|
+
* @param {*} constraintValue - the constraint value to update
|
|
519
|
+
* @returns {dateTimePicker} chains
|
|
520
|
+
* @fires dateTimePicker#open
|
|
521
|
+
* @fires dateTimePicker#close
|
|
522
|
+
*/
|
|
523
|
+
updateConstraints: function updateConstraints(constraint, constraintValue) {
|
|
524
|
+
if (this.is('ready')) {
|
|
525
|
+
if (_.contains(supportedConstraints, constraint)) {
|
|
526
|
+
this.picker.set(constraint, constraintValue);
|
|
674
527
|
}
|
|
675
528
|
}
|
|
529
|
+
return this;
|
|
676
530
|
}
|
|
677
|
-
};
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
if (
|
|
685
|
-
|
|
531
|
+
}, defaultConfig);
|
|
532
|
+
dateTimePicker.setTemplate(dateTimePickerTpl).on('init', function () {
|
|
533
|
+
var self = this;
|
|
534
|
+
var locale;
|
|
535
|
+
var setup = setups[this.config.setup] || setups.datetime;
|
|
536
|
+
|
|
537
|
+
//map the locale from the options to the picker locale
|
|
538
|
+
if (this.config.locale && hasTranslationsForLocale(this.config.locale)) {
|
|
539
|
+
locale = this.config.locale;
|
|
686
540
|
}
|
|
687
|
-
}); //render into the container
|
|
688
541
|
|
|
542
|
+
//date/time format
|
|
543
|
+
if (locale && this.config.useLocalizedFormat) {
|
|
544
|
+
//get the format from the locale
|
|
545
|
+
format = getLongLocalizedFormat(locale, setup.format.localized);
|
|
546
|
+
} else {
|
|
547
|
+
//get the format from the config
|
|
548
|
+
format = this.config.format || setup.format.default;
|
|
549
|
+
}
|
|
689
550
|
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
this.
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
e.preventDefault();
|
|
710
|
-
e.stopPropagation();
|
|
711
|
-
self.toggle();
|
|
712
|
-
});
|
|
713
|
-
this.controls.clearButton.addEventListener('click', function (e) {
|
|
714
|
-
e.preventDefault();
|
|
715
|
-
e.stopPropagation();
|
|
716
|
-
self.clear();
|
|
717
|
-
});
|
|
718
|
-
}
|
|
551
|
+
//input field configuration
|
|
552
|
+
this.config.field = this.config.field || {};
|
|
553
|
+
|
|
554
|
+
// replace a field by the date picker input field
|
|
555
|
+
//TODO consider replacing data-attr and classes
|
|
556
|
+
if (this.config.replaceField && this.config.replaceField instanceof HTMLInputElement) {
|
|
557
|
+
this.config.field.id = this.config.replaceField.id;
|
|
558
|
+
this.config.field.name = this.config.replaceField.name;
|
|
559
|
+
this.config.field.placeholder = this.config.replaceField.placeholder;
|
|
560
|
+
this.config.field.value = this.config.replaceField.value;
|
|
561
|
+
this.config.field.pattern = this.config.replaceField.pattern;
|
|
562
|
+
this.config.replaceField.parentNode.removeChild(this.config.replaceField);
|
|
563
|
+
}
|
|
564
|
+
if (!this.config.field.placeholder && format && setup.mode === 'single') {
|
|
565
|
+
this.config.field.placeholder = format.toLowerCase();
|
|
566
|
+
}
|
|
567
|
+
if (!this.config.field.label) {
|
|
568
|
+
this.config.field.label = setup.label;
|
|
569
|
+
}
|
|
719
570
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
571
|
+
/**
|
|
572
|
+
* Build the configuration of the picker
|
|
573
|
+
* @see https://flatpickr.js.org/options/
|
|
574
|
+
*/
|
|
575
|
+
this.pickerConfig = {
|
|
576
|
+
mode: setup.mode,
|
|
577
|
+
enableTime: !!setup.enableTime,
|
|
578
|
+
noCalendar: !!setup.noCalendar,
|
|
579
|
+
time_24hr: !isFormatAmPm(format),
|
|
580
|
+
enableSeconds: setup.enableTime && isFormatInSeconds(format),
|
|
581
|
+
allowInput: true,
|
|
582
|
+
clickOpens: !this.config.controlButtons,
|
|
583
|
+
disableMobile: true,
|
|
584
|
+
/**
|
|
585
|
+
* How flatpickr will format the given date
|
|
586
|
+
* @param {Date} date
|
|
587
|
+
* @returns {String} the formatted date
|
|
733
588
|
*/
|
|
734
|
-
|
|
735
|
-
|
|
589
|
+
formatDate: function formatDate(date) {
|
|
590
|
+
return moment(date).format(format);
|
|
591
|
+
},
|
|
592
|
+
/**
|
|
593
|
+
* How flatpickr parse the given input
|
|
594
|
+
* @param {String} dateString
|
|
595
|
+
* @returns {Date}
|
|
596
|
+
*/
|
|
597
|
+
parseDate: function parseDate(dateString) {
|
|
598
|
+
return moment(dateString, format).toDate();
|
|
599
|
+
},
|
|
600
|
+
/**
|
|
601
|
+
* When the picker is opened
|
|
602
|
+
* @fires dateTimePicker#open
|
|
603
|
+
*/
|
|
604
|
+
onOpen: function onOpen() {
|
|
605
|
+
/**
|
|
606
|
+
* The picker get opened
|
|
607
|
+
* @event dateTimePicker#open
|
|
608
|
+
*/
|
|
609
|
+
self.trigger('open');
|
|
610
|
+
},
|
|
611
|
+
/**
|
|
612
|
+
* When the picker is opened
|
|
613
|
+
* @fires dateTimePicker#close
|
|
614
|
+
*/
|
|
615
|
+
onClose: function onClose() {
|
|
616
|
+
/**
|
|
617
|
+
* The picker get closed
|
|
618
|
+
* @event dateTimePicker#close
|
|
619
|
+
*/
|
|
620
|
+
self.trigger('close');
|
|
621
|
+
},
|
|
622
|
+
/**
|
|
623
|
+
* Hook flatpickr error handler
|
|
624
|
+
* @param {Error} err - the thrown error
|
|
625
|
+
*/
|
|
626
|
+
errorHandler: function errorHandler(err) {
|
|
627
|
+
if (err instanceof Error) {
|
|
628
|
+
//if an invalid date is provided
|
|
629
|
+
//add a visual feedback indicating why the field get emptied
|
|
630
|
+
if (/^Invalid date/.test(err.message)) {
|
|
631
|
+
self.controls.input.classList.add('error');
|
|
632
|
+
_.delay(function () {
|
|
633
|
+
self.controls.input.classList.remove('error');
|
|
634
|
+
}, 1000);
|
|
635
|
+
} else {
|
|
636
|
+
/**
|
|
637
|
+
* Unexpected error
|
|
638
|
+
* @event dateTimePicker#error
|
|
639
|
+
* @param {Error} err
|
|
640
|
+
*/
|
|
641
|
+
self.trigger('error', err);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
//locale should be defined only if set...
|
|
647
|
+
if (locale) {
|
|
648
|
+
this.pickerConfig.locale = locale;
|
|
736
649
|
}
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
self.enable().setState('ready', true).trigger('ready');
|
|
743
|
-
});
|
|
744
|
-
}).on('enable', function () {
|
|
745
|
-
if (this.controls) {
|
|
746
|
-
this.controls.input.disabled = false;
|
|
650
|
+
_.forEach(this.config.constraints, function (constraintValue, constraint) {
|
|
651
|
+
if (_.contains(supportedConstraints, constraint) && constraintValue) {
|
|
652
|
+
self.pickerConfig[constraint] = constraintValue;
|
|
653
|
+
}
|
|
654
|
+
});
|
|
747
655
|
|
|
656
|
+
//render into the container
|
|
657
|
+
if (container) {
|
|
658
|
+
setTimeout(function () {
|
|
659
|
+
self.render(container);
|
|
660
|
+
}, 0);
|
|
661
|
+
}
|
|
662
|
+
}).on('render', function () {
|
|
663
|
+
var self = this;
|
|
664
|
+
var element = this.getElement()[0];
|
|
665
|
+
this.controls = {
|
|
666
|
+
input: element.querySelector('input')
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
//always scope the picker to the component container
|
|
670
|
+
//in order to scope and style each instance
|
|
671
|
+
this.pickerConfig.appendTo = element;
|
|
672
|
+
|
|
673
|
+
//behavior of the right buttons if configured
|
|
748
674
|
if (this.config.controlButtons) {
|
|
749
|
-
this.controls.toggleButton
|
|
750
|
-
this.controls.clearButton
|
|
675
|
+
this.controls.toggleButton = element.querySelector('.picker-toggle');
|
|
676
|
+
this.controls.clearButton = element.querySelector('.picker-clear');
|
|
677
|
+
this.controls.toggleButton.addEventListener('click', function (e) {
|
|
678
|
+
e.preventDefault();
|
|
679
|
+
e.stopPropagation();
|
|
680
|
+
self.toggle();
|
|
681
|
+
});
|
|
682
|
+
this.controls.clearButton.addEventListener('click', function (e) {
|
|
683
|
+
e.preventDefault();
|
|
684
|
+
e.stopPropagation();
|
|
685
|
+
self.clear();
|
|
686
|
+
});
|
|
751
687
|
}
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
688
|
+
this.controls.input.addEventListener('change', function () {
|
|
689
|
+
var newValue = self.controls.input.value;
|
|
690
|
+
if (value && _.isString(newValue) && _.isEmpty(newValue)) {
|
|
691
|
+
//if someone remove the value from the field
|
|
692
|
+
//it's considered a property clean (resets everything)
|
|
693
|
+
self.clear();
|
|
694
|
+
} else if (value !== newValue) {
|
|
695
|
+
value = newValue;
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* A value get changed
|
|
699
|
+
* @event dateTimePicker#change
|
|
700
|
+
* @param {String} value - the date/time value
|
|
701
|
+
*/
|
|
702
|
+
self.trigger('change', value);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
value = this.controls.input.value;
|
|
756
706
|
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
707
|
+
//instantiate the picker
|
|
708
|
+
_.defer(function () {
|
|
709
|
+
self.picker = flatpickr(self.controls.input, self.pickerConfig);
|
|
710
|
+
self.enable().setState('ready', true).trigger('ready');
|
|
711
|
+
});
|
|
712
|
+
}).on('enable', function () {
|
|
713
|
+
if (this.controls) {
|
|
714
|
+
this.controls.input.disabled = false;
|
|
715
|
+
if (this.config.controlButtons) {
|
|
716
|
+
this.controls.toggleButton.disabled = false;
|
|
717
|
+
this.controls.clearButton.disabled = false;
|
|
718
|
+
}
|
|
760
719
|
}
|
|
761
|
-
}
|
|
762
|
-
|
|
720
|
+
}).on('disable', function () {
|
|
721
|
+
if (this.controls) {
|
|
722
|
+
this.controls.input.disabled = true;
|
|
723
|
+
if (this.config.controlButtons) {
|
|
724
|
+
this.controls.toggleButton.disabled = true;
|
|
725
|
+
this.controls.clearButton.disabled = true;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
});
|
|
763
729
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
730
|
+
//defered init to catch the event
|
|
731
|
+
setTimeout(function () {
|
|
732
|
+
dateTimePicker.init(options);
|
|
733
|
+
}, 0);
|
|
734
|
+
return dateTimePicker;
|
|
735
|
+
}
|
|
769
736
|
|
|
770
|
-
|
|
737
|
+
return dateTimePickerFactory;
|
|
771
738
|
|
|
772
739
|
});
|