@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/tabs.js
CHANGED
|
@@ -1,716 +1,665 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/tabs/css/tabs.css'], function ($$1, _, componentFactory, Handlebars, __, DOMPurify, tabs_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
|
-
function _iterableToArray(iter) {
|
|
29
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
33
|
-
if (!o) return;
|
|
34
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
35
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
36
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
37
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
38
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function _arrayLikeToArray(arr, len) {
|
|
42
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
43
|
-
|
|
44
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
45
|
-
|
|
46
|
-
return arr2;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function _nonIterableSpread() {
|
|
50
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function Helpers0 (hb) {
|
|
54
|
-
//register a i18n helper
|
|
55
|
-
hb.registerHelper('__', function (key) {
|
|
56
|
-
return __(key);
|
|
57
|
-
});
|
|
58
|
-
/**
|
|
59
|
-
* Register dompurify helper
|
|
60
|
-
*
|
|
61
|
-
* https://github.com/cure53/DOMPurify
|
|
62
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
63
|
-
* to make output safe for template systems
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
componentFactory = componentFactory && Object.prototype.hasOwnProperty.call(componentFactory, 'default') ? componentFactory['default'] : componentFactory;
|
|
6
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
7
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
8
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* This program is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU General Public License
|
|
13
|
+
* as published by the Free Software Foundation; under version 2
|
|
14
|
+
* of the License (non-upgradable).
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU General Public License
|
|
22
|
+
* along with this program; if not, write to the Free Software
|
|
23
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
24
|
+
*
|
|
25
|
+
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
26
|
+
*
|
|
27
|
+
*
|
|
64
28
|
*/
|
|
29
|
+
function Helpers0 (hb) {
|
|
30
|
+
//register a i18n helper
|
|
31
|
+
hb.registerHelper('__', function (key) {
|
|
32
|
+
return __(key);
|
|
33
|
+
});
|
|
65
34
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
*/
|
|
77
|
-
|
|
78
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
79
|
-
var fragments = [];
|
|
80
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
81
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
82
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
83
|
-
|
|
84
|
-
_.forIn(arr, function (value, key) {
|
|
85
|
-
var fragment = '';
|
|
35
|
+
/**
|
|
36
|
+
* Register dompurify helper
|
|
37
|
+
*
|
|
38
|
+
* https://github.com/cure53/DOMPurify
|
|
39
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
40
|
+
* to make output safe for template systems
|
|
41
|
+
*/
|
|
42
|
+
hb.registerHelper('dompurify', function (context) {
|
|
43
|
+
return DOMPurify.sanitize(context);
|
|
44
|
+
});
|
|
86
45
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Register join helper
|
|
48
|
+
*
|
|
49
|
+
* Example :
|
|
50
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
51
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
52
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
53
|
+
*/
|
|
54
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
55
|
+
var fragments = [];
|
|
56
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
57
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
58
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
59
|
+
_.forIn(arr, function (value, key) {
|
|
60
|
+
var fragment = '';
|
|
61
|
+
if (value !== null || value !== undefined) {
|
|
62
|
+
if (typeof value === 'boolean') {
|
|
63
|
+
value = value ? 'true' : 'false';
|
|
64
|
+
} else if (typeof value === 'object') {
|
|
65
|
+
value = _.values(value).join(' ');
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
value = '';
|
|
92
69
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
70
|
+
if (keyValueGlue !== undefined) {
|
|
71
|
+
fragment += key + keyValueGlue;
|
|
72
|
+
}
|
|
73
|
+
fragment += wrapper + value + wrapper;
|
|
74
|
+
fragments.push(fragment);
|
|
75
|
+
});
|
|
76
|
+
return fragments.join(fragmentGlue);
|
|
77
|
+
});
|
|
96
78
|
|
|
97
|
-
|
|
98
|
-
|
|
79
|
+
//register a classic "for loop" helper
|
|
80
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
81
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
82
|
+
var ret = '';
|
|
83
|
+
startIndex = parseInt(startIndex);
|
|
84
|
+
stopIndex = parseInt(stopIndex);
|
|
85
|
+
increment = parseInt(increment);
|
|
86
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
87
|
+
ret += options.fn(_.extend({}, this, {
|
|
88
|
+
i: i
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
return ret;
|
|
92
|
+
});
|
|
93
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
94
|
+
if (var1 == var2) {
|
|
95
|
+
return options.fn(this);
|
|
96
|
+
} else {
|
|
97
|
+
return options.inverse(this);
|
|
99
98
|
}
|
|
100
|
-
|
|
101
|
-
fragment += wrapper + value + wrapper;
|
|
102
|
-
fragments.push(fragment);
|
|
103
99
|
});
|
|
104
100
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
// register a "get property" helper
|
|
102
|
+
// it gets the named property from the provided context
|
|
103
|
+
hb.registerHelper('property', function (name, context) {
|
|
104
|
+
return context[name] || '';
|
|
105
|
+
});
|
|
108
106
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
// register an 'includes' helper
|
|
108
|
+
// it checks if value is in array
|
|
109
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
110
|
+
if (_.contains(haystack, needle)) {
|
|
111
|
+
return options.fn(this);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
if (!Helpers0.__initialized) {
|
|
117
|
+
Helpers0(Handlebars);
|
|
118
|
+
Helpers0.__initialized = true;
|
|
119
|
+
}
|
|
120
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
121
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
122
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
123
|
+
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
124
|
+
|
|
125
|
+
function program1(depth0,data) {
|
|
126
|
+
|
|
127
|
+
var buffer = "", stack1, helper;
|
|
128
|
+
buffer += "\n <li class=\"tab ";
|
|
129
|
+
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
130
|
+
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
131
|
+
buffer += escapeExpression(stack1)
|
|
132
|
+
+ "\" data-tab-name=\"";
|
|
133
|
+
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
134
|
+
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
135
|
+
buffer += escapeExpression(stack1)
|
|
136
|
+
+ "\">\n <button class=\"action\" tabindex=\"0\" ";
|
|
137
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.disabled), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
|
|
138
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
139
|
+
buffer += ">\n ";
|
|
140
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
|
|
141
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
142
|
+
buffer += "\n ";
|
|
143
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.label), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
|
|
144
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
145
|
+
buffer += "\n </button>\n </li>\n ";
|
|
146
|
+
return buffer;
|
|
119
147
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (var1 == var2) {
|
|
125
|
-
return options.fn(this);
|
|
126
|
-
} else {
|
|
127
|
-
return options.inverse(this);
|
|
148
|
+
function program2(depth0,data) {
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
return "disabled";
|
|
128
152
|
}
|
|
129
|
-
}); // register a "get property" helper
|
|
130
|
-
// it gets the named property from the provided context
|
|
131
|
-
|
|
132
|
-
hb.registerHelper('property', function (name, context) {
|
|
133
|
-
return context[name] || '';
|
|
134
|
-
}); // register an 'includes' helper
|
|
135
|
-
// it checks if value is in array
|
|
136
153
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
154
|
+
function program4(depth0,data) {
|
|
155
|
+
|
|
156
|
+
var buffer = "", stack1, helper;
|
|
157
|
+
buffer += "<span class=\"icon icon-";
|
|
158
|
+
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
159
|
+
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
160
|
+
buffer += escapeExpression(stack1)
|
|
161
|
+
+ "\"></span>";
|
|
162
|
+
return buffer;
|
|
140
163
|
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (!Helpers0.__initialized) {
|
|
145
|
-
Helpers0(Handlebars);
|
|
146
|
-
Helpers0.__initialized = true;
|
|
147
|
-
}
|
|
148
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
149
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
150
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
151
|
-
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
152
|
-
|
|
153
|
-
function program1(depth0,data) {
|
|
154
|
-
|
|
155
|
-
var buffer = "", stack1, helper;
|
|
156
|
-
buffer += "\r\n <li class=\"tab ";
|
|
157
|
-
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
158
|
-
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
159
|
-
buffer += escapeExpression(stack1)
|
|
160
|
-
+ "\" data-tab-name=\"";
|
|
161
|
-
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
162
|
-
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
163
|
-
buffer += escapeExpression(stack1)
|
|
164
|
-
+ "\">\r\n <button class=\"action\" tabindex=\"0\" ";
|
|
165
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.disabled), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
|
|
166
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
167
|
-
buffer += ">\r\n ";
|
|
168
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
|
|
169
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
170
|
-
buffer += "\r\n ";
|
|
171
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.label), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
|
|
172
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
173
|
-
buffer += "\r\n </button>\r\n </li>\r\n ";
|
|
174
|
-
return buffer;
|
|
175
|
-
}
|
|
176
|
-
function program2(depth0,data) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return "disabled";
|
|
180
|
-
}
|
|
181
164
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
165
|
+
function program6(depth0,data) {
|
|
166
|
+
|
|
167
|
+
var buffer = "", stack1, helper;
|
|
168
|
+
buffer += "<span class=\"label\">";
|
|
169
|
+
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
170
|
+
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
171
|
+
buffer += escapeExpression(stack1)
|
|
172
|
+
+ "</span>";
|
|
173
|
+
return buffer;
|
|
174
|
+
}
|
|
192
175
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
176
|
+
buffer += "<ul class=\"tab-group\">\n ";
|
|
177
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.tabs), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
178
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
179
|
+
buffer += "\n</ul>\n";
|
|
180
|
+
return buffer;
|
|
181
|
+
});
|
|
182
|
+
function tabsTpl(data, options, asString) {
|
|
183
|
+
var html = Template(data, options);
|
|
184
|
+
return (asString || true) ? html : $(html);
|
|
202
185
|
}
|
|
203
186
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
* @property {Boolean} [hideLoneTab] - Prevent to show the tabs when only one is registered
|
|
221
|
-
* @property {jQuery|HTMLElement|String|Boolean} [showHideTarget] - Defines the container where to wire up tabs to
|
|
222
|
-
* content, the link will be automatic, based on the data attribute `data-tab-content` that should match the tab name.
|
|
223
|
-
* If the value is `true` the component's container will be used to find the panels.
|
|
224
|
-
*/
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* @typedef {Object} tabConfig
|
|
228
|
-
* @property {Boolean} disabled - The tab is disabled
|
|
229
|
-
* @property {String} name - The tab identifier
|
|
230
|
-
* @property {String} label - The tab label
|
|
231
|
-
* @property {String} [icon] - An optional tab icon
|
|
232
|
-
* @property {String} [cls] - An optional CSS class name
|
|
233
|
-
*/
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* CSS class for the active tab
|
|
237
|
-
* @type {String}
|
|
238
|
-
*/
|
|
239
|
-
|
|
240
|
-
var activeTabCls = 'active';
|
|
241
|
-
/**
|
|
242
|
-
* CSS selector for the tabs
|
|
243
|
-
* @type {String}
|
|
244
|
-
*/
|
|
245
|
-
|
|
246
|
-
var tabSelector = '.tab';
|
|
247
|
-
/**
|
|
248
|
-
* CSS selector for the tab actions
|
|
249
|
-
* @type {String}
|
|
250
|
-
*/
|
|
251
|
-
|
|
252
|
-
var actionSelector = '.action';
|
|
253
|
-
/**
|
|
254
|
-
* Name of the attribute that contain the tab identifier
|
|
255
|
-
* @type {String}
|
|
256
|
-
*/
|
|
257
|
-
|
|
258
|
-
var tabNameAttr = 'data-tab-name';
|
|
259
|
-
/**
|
|
260
|
-
* Name of the attribute that contain the panel identifier
|
|
261
|
-
* @type {String}
|
|
262
|
-
*/
|
|
263
|
-
|
|
264
|
-
var panelNameAttr = 'data-tab-content';
|
|
265
|
-
/**
|
|
266
|
-
* Builds an instance of the tabs component.
|
|
267
|
-
*
|
|
268
|
-
* @example
|
|
269
|
-
* // activate by index
|
|
270
|
-
* const instance = tabsFactory($container, {
|
|
271
|
-
* tabs: [
|
|
272
|
-
* { label: 'TAO Local', name: 'local-delivery' },
|
|
273
|
-
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
274
|
-
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
275
|
-
* ],
|
|
276
|
-
* activeTabIndex: 1
|
|
277
|
-
* });
|
|
278
|
-
*
|
|
279
|
-
* // activate by name
|
|
280
|
-
* const instance = tabsFactory($container, {
|
|
281
|
-
* tabs: [
|
|
282
|
-
* { label: 'TAO Local', name: 'local-delivery' },
|
|
283
|
-
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
284
|
-
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
285
|
-
* ],
|
|
286
|
-
* activeTab: 'remote-delivery'
|
|
287
|
-
* });
|
|
288
|
-
*
|
|
289
|
-
* // link to panels
|
|
290
|
-
* const instance = tabsFactory($container, {
|
|
291
|
-
* showHideTarget: $panelContainer,
|
|
292
|
-
* tabs: [
|
|
293
|
-
* { label: 'TAO Local', name: 'local-delivery' },
|
|
294
|
-
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
295
|
-
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
296
|
-
* ]
|
|
297
|
-
* });
|
|
298
|
-
*
|
|
299
|
-
* instance
|
|
300
|
-
* .on('ready', function onReady() {
|
|
301
|
-
* // the component is ready
|
|
302
|
-
* })
|
|
303
|
-
* .before('tabactivate', function beforeTabChange(e, name) {
|
|
304
|
-
* // a tab is being activated
|
|
305
|
-
* // it is possible to prevent its activation by returning a rejected promise
|
|
306
|
-
* if (name === 'lti-delivery') {
|
|
307
|
-
* return Promise.reject();
|
|
308
|
-
* }
|
|
309
|
-
* })
|
|
310
|
-
* .on('tabchange', function onTabChange(name) {
|
|
311
|
-
* // a tab has been activated
|
|
312
|
-
* });
|
|
313
|
-
*
|
|
314
|
-
* @param {HTMLElement|String} container
|
|
315
|
-
* @param {tabsBarConfig} config
|
|
316
|
-
* @param {String} [config.activeTab] - The name of the active tab
|
|
317
|
-
* @param {Integer} [config.activeTabIndex] - the index of the tab to start on
|
|
318
|
-
* @param {tabConfig[]} [config.tabs] - The list of tabs
|
|
319
|
-
* @param {Boolean} [config.hideLoneTab] - Prevent to show the tabs when only one is registered
|
|
320
|
-
* @param {jQuery|HTMLElement|String|Boolean} [config.showHideTarget] - Defines the container where to wire up tabs to
|
|
321
|
-
* content, the link will be automatic, based on the data attribute `data-tab-content` that should match the tab name.
|
|
322
|
-
* If the value is `true` the component's container will be used to find the panels.
|
|
323
|
-
* @returns {tabsBarComponent}
|
|
324
|
-
* @fires ready - When the component is ready to work
|
|
325
|
-
* @fires error - When the component encounters issue
|
|
326
|
-
* @fires tabactivate - Each time a tab must be activated
|
|
327
|
-
* @fires tabchange - Each time a tab has been activated
|
|
328
|
-
* @fires tabchange-${name} - Each time the named tab has been activated
|
|
329
|
-
* @fires tabsupdate - Each time the tabs are updated
|
|
330
|
-
*/
|
|
331
|
-
|
|
332
|
-
function tabsFactory(container, config) {
|
|
333
|
-
// the list of displayed tabs
|
|
334
|
-
var tabs = []; // the current active tab
|
|
335
|
-
|
|
336
|
-
var activeTabName = null; // enable/disable elements
|
|
337
|
-
|
|
338
|
-
var enableElement = function enableElement($el) {
|
|
339
|
-
return $el.prop('disabled', false);
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
var disableElement = function disableElement($el) {
|
|
343
|
-
return $el.prop('disabled', true);
|
|
344
|
-
};
|
|
345
|
-
/**
|
|
346
|
-
* Gets a tab by its name
|
|
347
|
-
* @param {String} name
|
|
348
|
-
* @returns {tabConfig}
|
|
187
|
+
/**
|
|
188
|
+
* This program is free software; you can redistribute it and/or
|
|
189
|
+
* modify it under the terms of the GNU General Public License
|
|
190
|
+
* as published by the Free Software Foundation; under version 2
|
|
191
|
+
* of the License (non-upgradable).
|
|
192
|
+
*
|
|
193
|
+
* This program is distributed in the hope that it will be useful,
|
|
194
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
195
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
196
|
+
* GNU General Public License for more details.
|
|
197
|
+
*
|
|
198
|
+
* You should have received a copy of the GNU General Public License
|
|
199
|
+
* along with this program; if not, write to the Free Software
|
|
200
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
201
|
+
*
|
|
202
|
+
* Copyright (c) 2019 (original work) Open Assessment Technologies SA ;
|
|
349
203
|
*/
|
|
350
204
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
* @returns {tabConfig}
|
|
361
|
-
* @throws {TypeError} on invalid name param
|
|
205
|
+
/**
|
|
206
|
+
* @typedef {Object} tabsBarConfig
|
|
207
|
+
* @property {String} [activeTab] - The name of the active tab
|
|
208
|
+
* @property {Integer} [activeTabIndex] - the index of the tab to start on
|
|
209
|
+
* @property {tabConfig[]} [tabs] - The list of tabs
|
|
210
|
+
* @property {Boolean} [hideLoneTab] - Prevent to show the tabs when only one is registered
|
|
211
|
+
* @property {jQuery|HTMLElement|String|Boolean} [showHideTarget] - Defines the container where to wire up tabs to
|
|
212
|
+
* content, the link will be automatic, based on the data attribute `data-tab-content` that should match the tab name.
|
|
213
|
+
* If the value is `true` the component's container will be used to find the panels.
|
|
362
214
|
*/
|
|
363
215
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
return tab;
|
|
373
|
-
};
|
|
374
|
-
/**
|
|
375
|
-
* Initializes the tabs
|
|
376
|
-
* @param {tabsBarComponent} component
|
|
216
|
+
/**
|
|
217
|
+
* @typedef {Object} tabConfig
|
|
218
|
+
* @property {Boolean} disabled - The tab is disabled
|
|
219
|
+
* @property {String} name - The tab identifier
|
|
220
|
+
* @property {String} label - The tab label
|
|
221
|
+
* @property {String} [icon] - An optional tab icon
|
|
222
|
+
* @property {String} [cls] - An optional CSS class name
|
|
377
223
|
*/
|
|
378
224
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
var activeTab = activeTabName;
|
|
383
|
-
activeTabName = null;
|
|
384
|
-
component.setActiveTab(activeTab);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
if (component.getConfig().hideLoneTab && tabs.length === 1) {
|
|
388
|
-
component.hide();
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
/**
|
|
392
|
-
* API of the tabs component
|
|
393
|
-
* @exports ui/tabs
|
|
225
|
+
/**
|
|
226
|
+
* CSS class for the active tab
|
|
227
|
+
* @type {String}
|
|
394
228
|
*/
|
|
229
|
+
const activeTabCls = 'active';
|
|
395
230
|
|
|
231
|
+
/**
|
|
232
|
+
* CSS selector for the tabs
|
|
233
|
+
* @type {String}
|
|
234
|
+
*/
|
|
235
|
+
const tabSelector = '.tab';
|
|
396
236
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
* @throws {TypeError} on non-Array tabs
|
|
403
|
-
* @fires tabsupdate once the tabs have been updated
|
|
404
|
-
* @fires tabactivate once the active tab is updated
|
|
405
|
-
*/
|
|
406
|
-
setTabs: function setTabs(newTabs) {
|
|
407
|
-
if (!Array.isArray(newTabs)) {
|
|
408
|
-
throw new TypeError('The provided tabs are not a valid array');
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
tabs = _toConsumableArray(newTabs); // reset tab to default if needed
|
|
412
|
-
|
|
413
|
-
if (!activeTabName || !findTabByName(activeTabName)) {
|
|
414
|
-
activeTabName = this.getDefaultActiveTab();
|
|
415
|
-
} // replace the displayed tabs if already rendered
|
|
416
|
-
|
|
237
|
+
/**
|
|
238
|
+
* CSS selector for the tab actions
|
|
239
|
+
* @type {String}
|
|
240
|
+
*/
|
|
241
|
+
const actionSelector = '.action';
|
|
417
242
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Name of the attribute that contain the tab identifier
|
|
245
|
+
* @type {String}
|
|
246
|
+
*/
|
|
247
|
+
const tabNameAttr = 'data-tab-name';
|
|
423
248
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
249
|
+
/**
|
|
250
|
+
* Name of the attribute that contain the panel identifier
|
|
251
|
+
* @type {String}
|
|
252
|
+
*/
|
|
253
|
+
const panelNameAttr = 'data-tab-content';
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Builds an instance of the tabs component.
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* // activate by index
|
|
260
|
+
* const instance = tabsFactory($container, {
|
|
261
|
+
* tabs: [
|
|
262
|
+
* { label: 'TAO Local', name: 'local-delivery' },
|
|
263
|
+
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
264
|
+
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
265
|
+
* ],
|
|
266
|
+
* activeTabIndex: 1
|
|
267
|
+
* });
|
|
268
|
+
*
|
|
269
|
+
* // activate by name
|
|
270
|
+
* const instance = tabsFactory($container, {
|
|
271
|
+
* tabs: [
|
|
272
|
+
* { label: 'TAO Local', name: 'local-delivery' },
|
|
273
|
+
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
274
|
+
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
275
|
+
* ],
|
|
276
|
+
* activeTab: 'remote-delivery'
|
|
277
|
+
* });
|
|
278
|
+
*
|
|
279
|
+
* // link to panels
|
|
280
|
+
* const instance = tabsFactory($container, {
|
|
281
|
+
* showHideTarget: $panelContainer,
|
|
282
|
+
* tabs: [
|
|
283
|
+
* { label: 'TAO Local', name: 'local-delivery' },
|
|
284
|
+
* { label: 'TAO Remote', name: 'remote-delivery' },
|
|
285
|
+
* { label: 'LTI-based', name: 'lti-delivery', disabled: true }
|
|
286
|
+
* ]
|
|
287
|
+
* });
|
|
288
|
+
*
|
|
289
|
+
* instance
|
|
290
|
+
* .on('ready', function onReady() {
|
|
291
|
+
* // the component is ready
|
|
292
|
+
* })
|
|
293
|
+
* .before('tabactivate', function beforeTabChange(e, name) {
|
|
294
|
+
* // a tab is being activated
|
|
295
|
+
* // it is possible to prevent its activation by returning a rejected promise
|
|
296
|
+
* if (name === 'lti-delivery') {
|
|
297
|
+
* return Promise.reject();
|
|
298
|
+
* }
|
|
299
|
+
* })
|
|
300
|
+
* .on('tabchange', function onTabChange(name) {
|
|
301
|
+
* // a tab has been activated
|
|
302
|
+
* });
|
|
303
|
+
*
|
|
304
|
+
* @param {HTMLElement|String} container
|
|
305
|
+
* @param {tabsBarConfig} config
|
|
306
|
+
* @param {String} [config.activeTab] - The name of the active tab
|
|
307
|
+
* @param {Integer} [config.activeTabIndex] - the index of the tab to start on
|
|
308
|
+
* @param {tabConfig[]} [config.tabs] - The list of tabs
|
|
309
|
+
* @param {Boolean} [config.hideLoneTab] - Prevent to show the tabs when only one is registered
|
|
310
|
+
* @param {jQuery|HTMLElement|String|Boolean} [config.showHideTarget] - Defines the container where to wire up tabs to
|
|
311
|
+
* content, the link will be automatic, based on the data attribute `data-tab-content` that should match the tab name.
|
|
312
|
+
* If the value is `true` the component's container will be used to find the panels.
|
|
313
|
+
* @returns {tabsBarComponent}
|
|
314
|
+
* @fires ready - When the component is ready to work
|
|
315
|
+
* @fires error - When the component encounters issue
|
|
316
|
+
* @fires tabactivate - Each time a tab must be activated
|
|
317
|
+
* @fires tabchange - Each time a tab has been activated
|
|
318
|
+
* @fires tabchange-${name} - Each time the named tab has been activated
|
|
319
|
+
* @fires tabsupdate - Each time the tabs are updated
|
|
320
|
+
*/
|
|
321
|
+
function tabsFactory(container, config) {
|
|
322
|
+
// the list of displayed tabs
|
|
323
|
+
let tabs = [];
|
|
430
324
|
|
|
325
|
+
// the current active tab
|
|
326
|
+
let activeTabName = null;
|
|
431
327
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
328
|
+
// enable/disable elements
|
|
329
|
+
const enableElement = $el => $el.prop('disabled', false);
|
|
330
|
+
const disableElement = $el => $el.prop('disabled', true);
|
|
435
331
|
|
|
436
|
-
/**
|
|
437
|
-
*
|
|
438
|
-
* @
|
|
332
|
+
/**
|
|
333
|
+
* Gets a tab by its name
|
|
334
|
+
* @param {String} name
|
|
335
|
+
* @returns {tabConfig}
|
|
439
336
|
*/
|
|
440
|
-
|
|
441
|
-
return _toConsumableArray(tabs);
|
|
442
|
-
},
|
|
337
|
+
const findTabByName = name => tabs.find(tab => tab.name === name);
|
|
443
338
|
|
|
444
|
-
/**
|
|
445
|
-
* Gets
|
|
446
|
-
* @
|
|
339
|
+
/**
|
|
340
|
+
* Gets a tab by its name, throw a TypeError if the tab does not exist
|
|
341
|
+
* @param {String} name - human-readable identifier
|
|
342
|
+
* @returns {tabConfig}
|
|
343
|
+
* @throws {TypeError} on invalid name param
|
|
447
344
|
*/
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
*/
|
|
456
|
-
getActiveTabIndex: function getActiveTabIndex() {
|
|
457
|
-
return tabs.findIndex(function (tab) {
|
|
458
|
-
return tab.name === activeTabName;
|
|
459
|
-
});
|
|
460
|
-
},
|
|
345
|
+
const findTabByNameOrThrow = name => {
|
|
346
|
+
const tab = findTabByName(name);
|
|
347
|
+
if (!tab) {
|
|
348
|
+
throw new TypeError(`No tab exists with the name: ${name}`);
|
|
349
|
+
}
|
|
350
|
+
return tab;
|
|
351
|
+
};
|
|
461
352
|
|
|
462
|
-
/**
|
|
463
|
-
*
|
|
464
|
-
* @
|
|
353
|
+
/**
|
|
354
|
+
* Initializes the tabs
|
|
355
|
+
* @param {tabsBarComponent} component
|
|
465
356
|
*/
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
if (activeTab && findTabByName(activeTab)) {
|
|
472
|
-
return activeTab;
|
|
357
|
+
const initTabs = component => {
|
|
358
|
+
if (activeTabName) {
|
|
359
|
+
const activeTab = activeTabName;
|
|
360
|
+
activeTabName = null;
|
|
361
|
+
component.setActiveTab(activeTab);
|
|
473
362
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
return tabs[activeTabIndex].name;
|
|
363
|
+
if (component.getConfig().hideLoneTab && tabs.length === 1) {
|
|
364
|
+
component.hide();
|
|
477
365
|
}
|
|
366
|
+
};
|
|
478
367
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Activates a single tab by its name (deactivating others)
|
|
484
|
-
* @param {String} name - human-readable identifier
|
|
485
|
-
* @returns {tabsBarComponent} instance
|
|
486
|
-
* @throws {TypeError} on invalid name param
|
|
487
|
-
* @fires tabactivate
|
|
368
|
+
/**
|
|
369
|
+
* API of the tabs component
|
|
370
|
+
* @exports ui/tabs
|
|
488
371
|
*/
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
372
|
+
const tabsApi = {
|
|
373
|
+
/**
|
|
374
|
+
* Set new values for the tabs
|
|
375
|
+
* @param {Array} newTabs
|
|
376
|
+
* @returns {tabsBarComponent} instance
|
|
377
|
+
* @throws {TypeError} on non-Array tabs
|
|
378
|
+
* @fires tabsupdate once the tabs have been updated
|
|
379
|
+
* @fires tabactivate once the active tab is updated
|
|
380
|
+
*/
|
|
381
|
+
setTabs(newTabs) {
|
|
382
|
+
if (!Array.isArray(newTabs)) {
|
|
383
|
+
throw new TypeError('The provided tabs are not a valid array');
|
|
384
|
+
}
|
|
385
|
+
tabs = [...newTabs];
|
|
499
386
|
|
|
500
|
-
|
|
501
|
-
|
|
387
|
+
// reset tab to default if needed
|
|
388
|
+
if (!activeTabName || !findTabByName(activeTabName)) {
|
|
389
|
+
activeTabName = this.getDefaultActiveTab();
|
|
390
|
+
}
|
|
502
391
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
* @fires tabactivate
|
|
510
|
-
*/
|
|
511
|
-
setActiveTabIndex: function setActiveTabIndex(index) {
|
|
512
|
-
if (typeof index !== 'number' || index < 0 || index >= tabs.length) {
|
|
513
|
-
throw new TypeError("No tab exists at index: ".concat(index));
|
|
514
|
-
}
|
|
392
|
+
// replace the displayed tabs if already rendered
|
|
393
|
+
if (this.is('rendered')) {
|
|
394
|
+
const template = this.getTemplate();
|
|
395
|
+
this.getElement().html($$1(template({
|
|
396
|
+
tabs
|
|
397
|
+
})).html());
|
|
515
398
|
|
|
516
|
-
|
|
399
|
+
// make sure the tab is selected and hide lone tab if needed
|
|
400
|
+
initTabs(this);
|
|
401
|
+
}
|
|
517
402
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
* @
|
|
521
|
-
* @param {String} - name
|
|
403
|
+
/**
|
|
404
|
+
* @event tabsupdate - Tabs have been updated
|
|
405
|
+
* @param {Array} newTabs
|
|
522
406
|
*/
|
|
523
|
-
this.trigger('
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* Enables a single tab by its name
|
|
531
|
-
* @param {String} name - human-readable identifier
|
|
532
|
-
* @returns {tabsBarComponent} instance
|
|
533
|
-
* @throws {TypeError} on invalid name param
|
|
534
|
-
* @fires tabenable
|
|
535
|
-
*/
|
|
536
|
-
enableTab: function enableTab(name) {
|
|
537
|
-
var tab = findTabByNameOrThrow(name);
|
|
538
|
-
tab.disabled = false;
|
|
539
|
-
|
|
540
|
-
if (this.is('rendered')) {
|
|
541
|
-
enableElement(this.getElement().find("[".concat(tabNameAttr, "=\"").concat(name, "\"] ").concat(actionSelector)));
|
|
542
|
-
}
|
|
543
|
-
/**
|
|
544
|
-
* @event tabenable - A tab is enabled
|
|
545
|
-
* @param {String} - name
|
|
407
|
+
this.trigger('tabsupdate', newTabs);
|
|
408
|
+
return this;
|
|
409
|
+
},
|
|
410
|
+
/**
|
|
411
|
+
* Retrieve internal tabs array
|
|
412
|
+
* @returns {Array} tabs list
|
|
546
413
|
*/
|
|
414
|
+
getTabs() {
|
|
415
|
+
return [...tabs];
|
|
416
|
+
},
|
|
417
|
+
/**
|
|
418
|
+
* Gets the name of the active tab (if any)
|
|
419
|
+
* @returns {String}
|
|
420
|
+
*/
|
|
421
|
+
getActiveTab() {
|
|
422
|
+
return activeTabName;
|
|
423
|
+
},
|
|
424
|
+
/**
|
|
425
|
+
* Gets the index of the current active tab (if any)
|
|
426
|
+
* @returns {Number}
|
|
427
|
+
*/
|
|
428
|
+
getActiveTabIndex() {
|
|
429
|
+
return tabs.findIndex(tab => tab.name === activeTabName);
|
|
430
|
+
},
|
|
431
|
+
/**
|
|
432
|
+
* Gets the name of the default active tab
|
|
433
|
+
* @returns {String|null}
|
|
434
|
+
*/
|
|
435
|
+
getDefaultActiveTab() {
|
|
436
|
+
const {
|
|
437
|
+
activeTab,
|
|
438
|
+
activeTabIndex
|
|
439
|
+
} = this.getConfig();
|
|
440
|
+
if (activeTab && findTabByName(activeTab)) {
|
|
441
|
+
return activeTab;
|
|
442
|
+
}
|
|
443
|
+
if (typeof activeTabIndex === 'number' && tabs[activeTabIndex]) {
|
|
444
|
+
return tabs[activeTabIndex].name;
|
|
445
|
+
}
|
|
446
|
+
return tabs.length && tabs[0].name || null;
|
|
447
|
+
},
|
|
448
|
+
/**
|
|
449
|
+
* Activates a single tab by its name (deactivating others)
|
|
450
|
+
* @param {String} name - human-readable identifier
|
|
451
|
+
* @returns {tabsBarComponent} instance
|
|
452
|
+
* @throws {TypeError} on invalid name param
|
|
453
|
+
* @fires tabactivate
|
|
454
|
+
*/
|
|
455
|
+
setActiveTab(name) {
|
|
456
|
+
const tab = findTabByNameOrThrow(name);
|
|
457
|
+
if (!tab.disabled) {
|
|
458
|
+
/**
|
|
459
|
+
* @event tabactivate - A tab is being activated
|
|
460
|
+
* @param {String} - name
|
|
461
|
+
*/
|
|
462
|
+
this.trigger('tabactivate', tab.name);
|
|
463
|
+
}
|
|
464
|
+
return this;
|
|
465
|
+
},
|
|
466
|
+
/**
|
|
467
|
+
* Activates a single tab by its index (deactivating others)
|
|
468
|
+
* Triggers the automatic showing & hiding of target tab-contents
|
|
469
|
+
* @param {Number} index - zero-based
|
|
470
|
+
* @returns {tabsBarComponent} instance
|
|
471
|
+
* @throws {TypeError} on invalid index param
|
|
472
|
+
* @fires tabactivate
|
|
473
|
+
*/
|
|
474
|
+
setActiveTabIndex(index) {
|
|
475
|
+
if (typeof index !== 'number' || index < 0 || index >= tabs.length) {
|
|
476
|
+
throw new TypeError(`No tab exists at index: ${index}`);
|
|
477
|
+
}
|
|
478
|
+
const tab = tabs[index];
|
|
479
|
+
if (!tab.disabled) {
|
|
480
|
+
/**
|
|
481
|
+
* @event tabactivate - A tab is being activated
|
|
482
|
+
* @param {String} - name
|
|
483
|
+
*/
|
|
484
|
+
this.trigger('tabactivate', tab.name);
|
|
485
|
+
}
|
|
486
|
+
return this;
|
|
487
|
+
},
|
|
488
|
+
/**
|
|
489
|
+
* Enables a single tab by its name
|
|
490
|
+
* @param {String} name - human-readable identifier
|
|
491
|
+
* @returns {tabsBarComponent} instance
|
|
492
|
+
* @throws {TypeError} on invalid name param
|
|
493
|
+
* @fires tabenable
|
|
494
|
+
*/
|
|
495
|
+
enableTab(name) {
|
|
496
|
+
const tab = findTabByNameOrThrow(name);
|
|
497
|
+
tab.disabled = false;
|
|
498
|
+
if (this.is('rendered')) {
|
|
499
|
+
enableElement(this.getElement().find(`[${tabNameAttr}="${name}"] ${actionSelector}`));
|
|
500
|
+
}
|
|
547
501
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
var tab = findTabByNameOrThrow(name);
|
|
562
|
-
tab.disabled = true;
|
|
563
|
-
|
|
564
|
-
if (this.is('rendered')) {
|
|
565
|
-
disableElement(this.getElement().find("[".concat(tabNameAttr, "=\"").concat(name, "\"] ").concat(actionSelector)));
|
|
566
|
-
}
|
|
567
|
-
/**
|
|
568
|
-
* @event tabdisable - A tab is disabled
|
|
569
|
-
* @param {String} - name
|
|
502
|
+
/**
|
|
503
|
+
* @event tabenable - A tab is enabled
|
|
504
|
+
* @param {String} - name
|
|
505
|
+
*/
|
|
506
|
+
this.trigger('tabenable', name);
|
|
507
|
+
return this;
|
|
508
|
+
},
|
|
509
|
+
/**
|
|
510
|
+
* Disables a single tab by its name
|
|
511
|
+
* @param {String} name - human-readable identifier
|
|
512
|
+
* @returns {tabsBarComponent} instance
|
|
513
|
+
* @throws {TypeError} on invalid name param
|
|
514
|
+
* @fires tabdisable
|
|
570
515
|
*/
|
|
516
|
+
disableTab(name) {
|
|
517
|
+
const tab = findTabByNameOrThrow(name);
|
|
518
|
+
tab.disabled = true;
|
|
519
|
+
if (this.is('rendered')) {
|
|
520
|
+
disableElement(this.getElement().find(`[${tabNameAttr}="${name}"] ${actionSelector}`));
|
|
521
|
+
}
|
|
571
522
|
|
|
523
|
+
/**
|
|
524
|
+
* @event tabdisable - A tab is disabled
|
|
525
|
+
* @param {String} - name
|
|
526
|
+
*/
|
|
527
|
+
this.trigger('tabdisable', name);
|
|
528
|
+
},
|
|
529
|
+
/**
|
|
530
|
+
* Shows one tab content, hides the rest
|
|
531
|
+
* The tab content elements are not tied to any template and can be located anywhere in the DOM
|
|
532
|
+
* @param {String} name - human-readable identifier
|
|
533
|
+
* @throws {TypeError} on invalid name param
|
|
534
|
+
* @fires tabshowcontent
|
|
535
|
+
*/
|
|
536
|
+
showTabContent(name) {
|
|
537
|
+
findTabByNameOrThrow(name);
|
|
538
|
+
const {
|
|
539
|
+
showHideTarget
|
|
540
|
+
} = this.getConfig();
|
|
541
|
+
if (showHideTarget) {
|
|
542
|
+
(showHideTarget === true ? this.getContainer() : $$1(showHideTarget)).find(`[${panelNameAttr}]`).addClass('hidden').filter(`[${panelNameAttr}="${name}"]`).removeClass('hidden');
|
|
543
|
+
}
|
|
572
544
|
|
|
573
|
-
|
|
574
|
-
|
|
545
|
+
/**
|
|
546
|
+
* @event tabshowcontent - A tab panel is displayed
|
|
547
|
+
* @param {String} - name
|
|
548
|
+
*/
|
|
549
|
+
this.trigger('tabshowcontent', name);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
575
552
|
|
|
576
|
-
/**
|
|
577
|
-
*
|
|
578
|
-
* The tab content elements are not tied to any template and can be located anywhere in the DOM
|
|
579
|
-
* @param {String} name - human-readable identifier
|
|
580
|
-
* @throws {TypeError} on invalid name param
|
|
581
|
-
* @fires tabshowcontent
|
|
553
|
+
/**
|
|
554
|
+
* @typedef {component} tabsBarComponent
|
|
582
555
|
*/
|
|
583
|
-
|
|
584
|
-
|
|
556
|
+
const tabsBarComponent = componentFactory(tabsApi)
|
|
557
|
+
// set the component's layout
|
|
558
|
+
.setTemplate(tabsTpl)
|
|
585
559
|
|
|
586
|
-
|
|
587
|
-
|
|
560
|
+
// auto render on init
|
|
561
|
+
.on('init', function onTabsBarInit() {
|
|
562
|
+
try {
|
|
563
|
+
// extract the tabs from the config
|
|
564
|
+
if (this.config && this.config.tabs) {
|
|
565
|
+
this.setTabs(this.config.tabs);
|
|
566
|
+
}
|
|
588
567
|
|
|
589
|
-
|
|
590
|
-
|
|
568
|
+
// auto render on init (defer the call to give a chance to the init event to be completed before)
|
|
569
|
+
_.defer(() => this.render(container));
|
|
570
|
+
} catch (err) {
|
|
571
|
+
/**
|
|
572
|
+
* @event error
|
|
573
|
+
* @param {Error} err
|
|
574
|
+
*/
|
|
575
|
+
this.trigger('error', err);
|
|
591
576
|
}
|
|
592
|
-
|
|
593
|
-
* @event tabshowcontent - A tab panel is displayed
|
|
594
|
-
* @param {String} - name
|
|
595
|
-
*/
|
|
577
|
+
})
|
|
596
578
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
}
|
|
600
|
-
};
|
|
601
|
-
/**
|
|
602
|
-
* @typedef {component} tabsBarComponent
|
|
603
|
-
*/
|
|
604
|
-
|
|
605
|
-
var tabsBarComponent = componentFactory(tabsApi) // set the component's layout
|
|
606
|
-
.setTemplate(tabsTpl) // auto render on init
|
|
607
|
-
.on('init', function onTabsBarInit() {
|
|
608
|
-
var _this = this;
|
|
609
|
-
|
|
610
|
-
try {
|
|
611
|
-
// extract the tabs from the config
|
|
612
|
-
if (this.config && this.config.tabs) {
|
|
613
|
-
this.setTabs(this.config.tabs);
|
|
614
|
-
} // auto render on init (defer the call to give a chance to the init event to be completed before)
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
_.defer(function () {
|
|
618
|
-
return _this.render(container);
|
|
619
|
-
});
|
|
620
|
-
} catch (err) {
|
|
621
|
-
/**
|
|
622
|
-
* @event error
|
|
623
|
-
* @param {Error} err
|
|
624
|
-
*/
|
|
625
|
-
this.trigger('error', err);
|
|
626
|
-
}
|
|
627
|
-
}) // renders the component
|
|
628
|
-
.on('render', function onTabsBarRender() {
|
|
629
|
-
var _this2 = this;
|
|
630
|
-
|
|
631
|
-
try {
|
|
632
|
-
// make sure the tab is selected and hide lone tab if needed
|
|
633
|
-
initTabs(this);
|
|
634
|
-
} catch (err) {
|
|
635
|
-
/**
|
|
636
|
-
* @event error
|
|
637
|
-
* @param {Error} err
|
|
638
|
-
*/
|
|
639
|
-
this.trigger('error', err);
|
|
640
|
-
} // delegate the click on tabs
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
this.getElement().on('click', tabSelector, function (e) {
|
|
579
|
+
// renders the component
|
|
580
|
+
.on('render', function onTabsBarRender() {
|
|
644
581
|
try {
|
|
645
|
-
|
|
582
|
+
// make sure the tab is selected and hide lone tab if needed
|
|
583
|
+
initTabs(this);
|
|
646
584
|
} catch (err) {
|
|
647
|
-
/**
|
|
648
|
-
* @event error
|
|
649
|
-
* @param {Error} err
|
|
585
|
+
/**
|
|
586
|
+
* @event error
|
|
587
|
+
* @param {Error} err
|
|
650
588
|
*/
|
|
651
|
-
|
|
589
|
+
this.trigger('error', err);
|
|
652
590
|
}
|
|
653
|
-
});
|
|
654
|
-
/**
|
|
655
|
-
* @event ready - The component is ready to work
|
|
656
|
-
*/
|
|
657
|
-
|
|
658
|
-
this.trigger('ready');
|
|
659
|
-
}) // take care of the disable state
|
|
660
|
-
.on('disable', function onButtonDisable() {
|
|
661
|
-
if (this.is('rendered')) {
|
|
662
|
-
disableElement(this.getElement().find("[".concat(tabNameAttr, "] ").concat(actionSelector)));
|
|
663
|
-
}
|
|
664
|
-
}).on('enable', function onButtonEnable() {
|
|
665
|
-
if (this.is('rendered')) {
|
|
666
|
-
this.getElement().find("[".concat(tabNameAttr, "] ").concat(actionSelector)).each(function (index, el) {
|
|
667
|
-
var tab = findTabByName(el.parentNode.getAttribute(tabNameAttr));
|
|
668
591
|
|
|
669
|
-
|
|
670
|
-
|
|
592
|
+
// delegate the click on tabs
|
|
593
|
+
this.getElement().on('click', tabSelector, e => {
|
|
594
|
+
try {
|
|
595
|
+
this.setActiveTab(e.currentTarget.getAttribute(tabNameAttr));
|
|
596
|
+
} catch (err) {
|
|
597
|
+
/**
|
|
598
|
+
* @event error
|
|
599
|
+
* @param {Error} err
|
|
600
|
+
*/
|
|
601
|
+
this.trigger('error', err);
|
|
671
602
|
}
|
|
672
603
|
});
|
|
673
|
-
}
|
|
674
|
-
}) // reacts to tab activate
|
|
675
|
-
.on('tabactivate', function onTabActivate(name) {
|
|
676
|
-
var tab = findTabByName(name);
|
|
677
604
|
|
|
678
|
-
|
|
679
|
-
|
|
605
|
+
/**
|
|
606
|
+
* @event ready - The component is ready to work
|
|
607
|
+
*/
|
|
608
|
+
this.trigger('ready');
|
|
609
|
+
})
|
|
680
610
|
|
|
611
|
+
// take care of the disable state
|
|
612
|
+
.on('disable', function onButtonDisable() {
|
|
681
613
|
if (this.is('rendered')) {
|
|
682
|
-
this.getElement().find(
|
|
614
|
+
disableElement(this.getElement().find(`[${tabNameAttr}] ${actionSelector}`));
|
|
683
615
|
}
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
616
|
+
}).on('enable', function onButtonEnable() {
|
|
617
|
+
if (this.is('rendered')) {
|
|
618
|
+
this.getElement().find(`[${tabNameAttr}] ${actionSelector}`).each((index, el) => {
|
|
619
|
+
const tab = findTabByName(el.parentNode.getAttribute(tabNameAttr));
|
|
620
|
+
if (!tab || !tab.disabled) {
|
|
621
|
+
el.disabled = false;
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
}
|
|
625
|
+
})
|
|
626
|
+
|
|
627
|
+
// reacts to tab activate
|
|
628
|
+
.on('tabactivate', function onTabActivate(name) {
|
|
629
|
+
const tab = findTabByName(name);
|
|
630
|
+
if (tab && !tab.disabled && name !== activeTabName) {
|
|
631
|
+
activeTabName = name;
|
|
632
|
+
if (this.is('rendered')) {
|
|
633
|
+
this.getElement().find(tabSelector).removeClass(activeTabCls).filter(`[${tabNameAttr}="${name}"]`).addClass(activeTabCls);
|
|
634
|
+
}
|
|
701
635
|
|
|
636
|
+
/**
|
|
637
|
+
* @event tabchange - A tab is activated
|
|
638
|
+
* @param {String} - name
|
|
639
|
+
*/
|
|
640
|
+
this.trigger('tabchange', name);
|
|
641
|
+
}
|
|
642
|
+
})
|
|
702
643
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
644
|
+
// reacts to tab change
|
|
645
|
+
.on('tabchange', function onTabChange(name) {
|
|
646
|
+
// auto show the linked panel
|
|
647
|
+
if (this.getConfig().showHideTarget) {
|
|
648
|
+
this.showTabContent(name);
|
|
649
|
+
}
|
|
706
650
|
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
651
|
+
/**
|
|
652
|
+
* @event tabchange-${name} - The tab is activated
|
|
653
|
+
*/
|
|
654
|
+
this.trigger(`tabchange-${name}`);
|
|
655
|
+
});
|
|
710
656
|
|
|
711
|
-
|
|
712
|
-
|
|
657
|
+
// initialize the component with the provided config
|
|
658
|
+
// defer the call to allow to listen to the init event
|
|
659
|
+
_.defer(() => tabsBarComponent.init(config));
|
|
660
|
+
return tabsBarComponent;
|
|
661
|
+
}
|
|
713
662
|
|
|
714
|
-
|
|
663
|
+
return tabsFactory;
|
|
715
664
|
|
|
716
665
|
});
|