11import Header from './HeaderToolbar.mjs' ;
22import BaseViewport from '../../../src/container/Viewport.mjs' ;
3+ import NeoArray from '../../../src/util/Array.mjs' ;
34import ViewportController from './ViewportController.mjs' ;
45import ViewportStateProvider from './ViewportStateProvider.mjs' ;
56
@@ -8,6 +9,14 @@ import ViewportStateProvider from './ViewportStateProvider.mjs';
89 * @extends Neo.container.Viewport
910 */
1011class Viewport extends BaseViewport {
12+ /**
13+ * Valid values for size
14+ * @member {String[]} sizes=['large','medium','small','x-small',null]
15+ * @protected
16+ * @static
17+ */
18+ static sizes = [ 'large' , 'medium' , 'small' , 'x-small' , null ]
19+
1120 static config = {
1221 /**
1322 * @member {String} className='DevIndex.view.Viewport'
@@ -49,7 +58,81 @@ class Viewport extends BaseViewport {
4958 { module : ( ) => import ( './home/MainContainer.mjs' ) } ,
5059 { module : ( ) => import ( './learn/MainContainer.mjs' ) }
5160 ]
52- } ]
61+ } ] ,
62+ /**
63+ * @member {Boolean} monitorSize=true
64+ * @reactive
65+ */
66+ monitorSize : true ,
67+ /**
68+ * Values are: large, medium, small, x-small, null
69+ * @member {String|null} size_=null
70+ * @reactive
71+ */
72+ size_ : null
73+ }
74+
75+ /**
76+ * @param {Object } config
77+ */
78+ construct ( config ) {
79+ super . construct ( config ) ;
80+
81+ let me = this ;
82+
83+ me . on ( 'resize' , me . onResize , me )
84+ }
85+
86+ /**
87+ * Triggered after the size config got changed
88+ * @param {String|null } value
89+ * @param {String|null } oldValue
90+ * @protected
91+ */
92+ afterSetSize ( value , oldValue ) {
93+ if ( value ) {
94+ let me = this ,
95+ cls = me . cls ;
96+
97+ NeoArray . remove ( cls , 'devindex-size-' + oldValue ) ;
98+ NeoArray . add ( cls , 'devindex-size-' + value ) ;
99+ me . cls = cls ;
100+
101+ me . stateProvider . setData ( { size : value } )
102+ }
103+ }
104+
105+ /**
106+ * Triggered before the size config gets changed
107+ * @param {String|null } value
108+ * @param {String|null } oldValue
109+ * @returns {String|null }
110+ * @protected
111+ */
112+ beforeSetSize ( value , oldValue ) {
113+ return this . beforeSetEnumValue ( value , oldValue , 'size' )
114+ }
115+
116+ /**
117+ * @param {Number } width
118+ * @returns {String }
119+ */
120+ getSize ( width ) {
121+ if ( width <= 640 ) return 'x-small' ;
122+ if ( width <= 1024 ) return 'small' ;
123+ if ( width <= 1296 ) return 'medium' ;
124+ return 'large'
125+ }
126+
127+ /**
128+ * @param {Object } data
129+ */
130+ onResize ( data ) {
131+ let me = this ;
132+
133+ if ( me . id === data . id ) {
134+ me . size = me . getSize ( data . borderBoxSize . inlineSize )
135+ }
53136 }
54137}
55138
0 commit comments