comparison core/modules/toolbar/js/models/ToolbarModel.es6.js @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 /**
2 * @file
3 * A Backbone Model for the toolbar.
4 */
5
6 (function (Backbone, Drupal) {
7 /**
8 * Backbone model for the toolbar.
9 *
10 * @constructor
11 *
12 * @augments Backbone.Model
13 */
14 Drupal.toolbar.ToolbarModel = Backbone.Model.extend(/** @lends Drupal.toolbar.ToolbarModel# */{
15
16 /**
17 * @type {object}
18 *
19 * @prop activeTab
20 * @prop activeTray
21 * @prop isOriented
22 * @prop isFixed
23 * @prop areSubtreesLoaded
24 * @prop isViewportOverflowConstrained
25 * @prop orientation
26 * @prop locked
27 * @prop isTrayToggleVisible
28 * @prop height
29 * @prop offsets
30 */
31 defaults: /** @lends Drupal.toolbar.ToolbarModel# */{
32
33 /**
34 * The active toolbar tab. All other tabs should be inactive under
35 * normal circumstances. It will remain active across page loads. The
36 * active item is stored as an ID selector e.g. '#toolbar-item--1'.
37 *
38 * @type {string}
39 */
40 activeTab: null,
41
42 /**
43 * Represents whether a tray is open or not. Stored as an ID selector e.g.
44 * '#toolbar-item--1-tray'.
45 *
46 * @type {string}
47 */
48 activeTray: null,
49
50 /**
51 * Indicates whether the toolbar is displayed in an oriented fashion,
52 * either horizontal or vertical.
53 *
54 * @type {bool}
55 */
56 isOriented: false,
57
58 /**
59 * Indicates whether the toolbar is positioned absolute (false) or fixed
60 * (true).
61 *
62 * @type {bool}
63 */
64 isFixed: false,
65
66 /**
67 * Menu subtrees are loaded through an AJAX request only when the Toolbar
68 * is set to a vertical orientation.
69 *
70 * @type {bool}
71 */
72 areSubtreesLoaded: false,
73
74 /**
75 * If the viewport overflow becomes constrained, isFixed must be true so
76 * that elements in the trays aren't lost off-screen and impossible to
77 * get to.
78 *
79 * @type {bool}
80 */
81 isViewportOverflowConstrained: false,
82
83 /**
84 * The orientation of the active tray.
85 *
86 * @type {string}
87 */
88 orientation: 'horizontal',
89
90 /**
91 * A tray is locked if a user toggled it to vertical. Otherwise a tray
92 * will switch between vertical and horizontal orientation based on the
93 * configured breakpoints. The locked state will be maintained across page
94 * loads.
95 *
96 * @type {bool}
97 */
98 locked: false,
99
100 /**
101 * Indicates whether the tray orientation toggle is visible.
102 *
103 * @type {bool}
104 */
105 isTrayToggleVisible: true,
106
107 /**
108 * The height of the toolbar.
109 *
110 * @type {number}
111 */
112 height: null,
113
114 /**
115 * The current viewport offsets determined by {@link Drupal.displace}. The
116 * offsets suggest how a module might position is components relative to
117 * the viewport.
118 *
119 * @type {object}
120 *
121 * @prop {number} top
122 * @prop {number} right
123 * @prop {number} bottom
124 * @prop {number} left
125 */
126 offsets: {
127 top: 0,
128 right: 0,
129 bottom: 0,
130 left: 0,
131 },
132 },
133
134 /**
135 * @inheritdoc
136 *
137 * @param {object} attributes
138 * Attributes for the toolbar.
139 * @param {object} options
140 * Options for the toolbar.
141 *
142 * @return {string|undefined}
143 * Returns an error message if validation failed.
144 */
145 validate(attributes, options) {
146 // Prevent the orientation being set to horizontal if it is locked, unless
147 // override has not been passed as an option.
148 if (attributes.orientation === 'horizontal' && this.get('locked') && !options.override) {
149 return Drupal.t('The toolbar cannot be set to a horizontal orientation when it is locked.');
150 }
151 },
152 });
153 }(Backbone, Drupal));