yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
define([
    "dojo/_base/lang", // lang.getObject
    "dojo/_base/declare", // declare
    "./_TabContainerBase",
    "./TabController",
    "./ScrollingTabController"
], function(lang, declare, _TabContainerBase, TabController, ScrollingTabController){
 
    // module:
    //      dijit/layout/TabContainer
 
 
    return declare("dijit.layout.TabContainer", _TabContainerBase, {
        // summary:
        //      A Container with tabs to select each child (only one of which is displayed at a time).
        // description:
        //      A TabContainer is a container that has multiple panes, but shows only
        //      one pane at a time.  There are a set of tabs corresponding to each pane,
        //      where each tab has the name (aka title) of the pane, and optionally a close button.
        //
        //      See `StackContainer.ChildWidgetProperties` for details on the properties that can be set on
        //      children of a `TabContainer`.
 
        // useMenu: [const] Boolean
        //      True if a menu should be used to select tabs when they are too
        //      wide to fit the TabContainer, false otherwise.
        useMenu: true,
 
        // useSlider: [const] Boolean
        //      True if a slider should be used to select tabs when they are too
        //      wide to fit the TabContainer, false otherwise.
        useSlider: true,
 
        // controllerWidget: Class
        //      An optional parameter to override the widget used to display the tab labels
        controllerWidget: "",
 
        _makeController: function(/*DomNode*/ srcNode){
            // summary:
            //      Instantiate tablist controller widget and return reference to it.
            //      Callback from _TabContainerBase.postCreate().
            // tags:
            //      protected extension
 
            // "string" branch for back-compat, remove for 2.0
            var cls = this.baseClass + "-tabs" + (this.doLayout ? "" : " dijitTabNoLayout"),
                TabController = typeof this.controllerWidget == "string" ? lang.getObject(this.controllerWidget) :
                        this.controllerWidget;
 
            return new TabController({
                id: this.id + "_tablist",
                ownerDocument: this.ownerDocument,
                dir: this.dir,
                lang: this.lang,
                textDir: this.textDir,
                tabPosition: this.tabPosition,
                doLayout: this.doLayout,
                containerId: this.id,
                "class": cls,
                nested: this.nested,
                useMenu: this.useMenu,
                useSlider: this.useSlider,
                tabStripClass: this.tabStrip ? this.baseClass + (this.tabStrip ? "":"No") + "Strip": null
            }, srcNode);
        },
 
        postMixInProperties: function(){
            this.inherited(arguments);
 
            // Scrolling controller only works for horizontal non-nested tabs
            if(!this.controllerWidget){
                this.controllerWidget = (this.tabPosition == "top" || this.tabPosition == "bottom") && !this.nested ?
                            ScrollingTabController : TabController;
            }
        }
    });
});