@spectrum-web-components/story-decorator 0.5.0 → 0.5.3-express.9

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.
@@ -79,6 +79,13 @@
79
79
  "text": "'ltr' | 'rtl'"
80
80
  }
81
81
  },
82
+ {
83
+ "kind": "variable",
84
+ "name": "theme",
85
+ "type": {
86
+ "text": "Flavor"
87
+ }
88
+ },
82
89
  {
83
90
  "kind": "variable",
84
91
  "name": "color",
@@ -102,6 +109,15 @@
102
109
  "description": "",
103
110
  "name": "StoryDecorator",
104
111
  "members": [
112
+ {
113
+ "kind": "field",
114
+ "name": "theme",
115
+ "type": {
116
+ "text": "Flavor"
117
+ },
118
+ "privacy": "public",
119
+ "attribute": "theme"
120
+ },
105
121
  {
106
122
  "kind": "field",
107
123
  "name": "color",
@@ -149,7 +165,7 @@
149
165
  },
150
166
  {
151
167
  "kind": "field",
152
- "name": "theme",
168
+ "name": "themeRoot",
153
169
  "type": {
154
170
  "text": "Theme"
155
171
  },
@@ -236,6 +252,22 @@
236
252
  }
237
253
  ]
238
254
  },
255
+ {
256
+ "kind": "field",
257
+ "name": "themedColor",
258
+ "type": {
259
+ "text": "Color"
260
+ },
261
+ "privacy": "private"
262
+ },
263
+ {
264
+ "kind": "field",
265
+ "name": "themedScale",
266
+ "type": {
267
+ "text": "Scale"
268
+ },
269
+ "privacy": "private"
270
+ },
239
271
  {
240
272
  "kind": "method",
241
273
  "name": "checkReady",
@@ -262,6 +294,14 @@
262
294
  },
263
295
  "privacy": "private"
264
296
  },
297
+ {
298
+ "kind": "field",
299
+ "name": "themeControl",
300
+ "type": {
301
+ "text": "TemplateResult"
302
+ },
303
+ "privacy": "private"
304
+ },
265
305
  {
266
306
  "kind": "field",
267
307
  "name": "colorControl",
@@ -296,6 +336,13 @@
296
336
  }
297
337
  ],
298
338
  "attributes": [
339
+ {
340
+ "name": "theme",
341
+ "type": {
342
+ "text": "Flavor"
343
+ },
344
+ "fieldName": "theme"
345
+ },
299
346
  {
300
347
  "name": "color",
301
348
  "type": {
@@ -347,6 +394,14 @@
347
394
  "module": "src/StoryDecorator.ts"
348
395
  }
349
396
  },
397
+ {
398
+ "kind": "js",
399
+ "name": "theme",
400
+ "declaration": {
401
+ "name": "theme",
402
+ "module": "src/StoryDecorator.ts"
403
+ }
404
+ },
350
405
  {
351
406
  "kind": "js",
352
407
  "name": "color",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/story-decorator",
3
- "version": "0.5.0",
3
+ "version": "0.5.3-express.9+abfee7409",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -45,13 +45,13 @@
45
45
  "lit-html"
46
46
  ],
47
47
  "dependencies": {
48
- "@spectrum-web-components/base": "^0.5.1",
49
- "@spectrum-web-components/field-label": "^0.7.3",
50
- "@spectrum-web-components/menu": "^0.12.0",
51
- "@spectrum-web-components/overlay": "^0.14.0",
52
- "@spectrum-web-components/picker": "^0.10.0",
53
- "@spectrum-web-components/switch": "^0.9.3",
54
- "@spectrum-web-components/theme": "^0.9.3",
48
+ "@spectrum-web-components/base": "^0.5.2",
49
+ "@spectrum-web-components/field-label": "^0.7.5-express.9+abfee7409",
50
+ "@spectrum-web-components/menu": "^0.12.2-express.9+abfee7409",
51
+ "@spectrum-web-components/overlay": "^0.14.2-express.9+abfee7409",
52
+ "@spectrum-web-components/picker": "^0.10.3-express.9+abfee7409",
53
+ "@spectrum-web-components/switch": "^0.9.5-express.9+abfee7409",
54
+ "@spectrum-web-components/theme": "^0.9.5-express.9+abfee7409",
55
55
  "tslib": "^2.0.0"
56
56
  },
57
57
  "types": "./src/index.d.ts",
@@ -60,5 +60,5 @@
60
60
  "./sp-*.js",
61
61
  "./sp-*.ts"
62
62
  ],
63
- "gitHead": "f23b15ec952d7450272a8275524c905e028b4ddc"
63
+ "gitHead": "abfee740957976448a3e4cf90df17d6165f857d6"
64
64
  }
@@ -1,35 +1,41 @@
1
1
  import { SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
2
2
  import '@spectrum-web-components/theme/sp-theme.js';
3
3
  import '@spectrum-web-components/theme/src/themes.js';
4
+ import '@spectrum-web-components/theme/src/express/themes.js';
4
5
  import '@spectrum-web-components/field-label/sp-field-label.js';
5
6
  import '@spectrum-web-components/picker/sp-picker.js';
6
7
  import '@spectrum-web-components/menu/sp-menu.js';
7
8
  import '@spectrum-web-components/menu/sp-menu-item.js';
8
9
  import '@spectrum-web-components/switch/sp-switch.js';
9
- import { Color, Scale } from '@spectrum-web-components/theme';
10
+ import { Color, Flavor, Scale } from '@spectrum-web-components/theme';
10
11
  import './types.js';
11
12
  export declare let dir: 'ltr' | 'rtl';
13
+ export declare let theme: Flavor;
12
14
  export declare let color: Color;
13
15
  export declare let scale: Scale;
14
16
  export declare let reduceMotion: boolean;
15
17
  export declare class StoryDecorator extends SpectrumElement {
16
- static styles: import("@spectrum-web-components/base").CSSResult[];
18
+ static get styles(): import("@spectrum-web-components/base").CSSResult[];
19
+ theme: Flavor;
17
20
  color: Color;
18
21
  scale: Scale;
19
22
  direction: 'ltr' | 'rtl';
20
23
  reduceMotion: boolean;
21
24
  screenshot: boolean;
22
- private theme;
25
+ private themeRoot;
23
26
  ready: boolean;
24
27
  startManagingContentDirection(el: HTMLElement): Promise<void>;
25
28
  stopManagingContentDirection(el: HTMLElement): Promise<void>;
26
29
  private updateTheme;
27
30
  protected handleKeydown(event: KeyboardEvent): void;
31
+ private get themedColor();
32
+ private get themedScale();
28
33
  protected render(): TemplateResult;
29
34
  protected checkReady({ target, }: Event & {
30
35
  target: HTMLSlotElement;
31
36
  }): Promise<void>;
32
37
  private get manageTheme();
38
+ private get themeControl();
33
39
  private get colorControl();
34
40
  private get scaleControl();
35
41
  private get dirControl();
@@ -15,6 +15,7 @@ import { property, queryAsync, } from '@spectrum-web-components/base/src/decorat
15
15
  import { ifDefined } from '@spectrum-web-components/base/src/directives.js';
16
16
  import '@spectrum-web-components/theme/sp-theme.js';
17
17
  import '@spectrum-web-components/theme/src/themes.js';
18
+ import '@spectrum-web-components/theme/src/express/themes.js';
18
19
  import '@spectrum-web-components/field-label/sp-field-label.js';
19
20
  import '@spectrum-web-components/picker/sp-picker.js';
20
21
  import '@spectrum-web-components/menu/sp-menu.js';
@@ -25,10 +26,12 @@ import './types.js';
25
26
  const queryString = window.location.search;
26
27
  const urlParams = new URLSearchParams(queryString);
27
28
  export let dir = urlParams.get('sp_dir') || 'ltr';
29
+ export let theme = urlParams.get('sp_theme') || 'classic';
28
30
  export let color = urlParams.get('sp_color') || 'light';
29
31
  export let scale = urlParams.get('sp_scale') || 'medium';
30
32
  export let reduceMotion = urlParams.get('sp_reduceMotion') === 'true';
31
33
  window.__swc_hack_knobs__ = window.__swc_hack_knobs__ || {
34
+ defaultFlavor: theme,
32
35
  defaultColor: color,
33
36
  defaultScale: scale,
34
37
  defaultDirection: dir,
@@ -51,7 +54,7 @@ const reduceMotionProperties = css `
51
54
  --swc-test-duration: 1ms;
52
55
  `;
53
56
  ActiveOverlay.prototype.renderTheme = function (content) {
54
- const { color, scale, lang } = this.theme;
57
+ const { color, scale, theme, lang } = this.theme;
55
58
  return html `
56
59
  ${window.__swc_hack_knobs__.defaultReduceMotion
57
60
  ? html `
@@ -63,6 +66,7 @@ ActiveOverlay.prototype.renderTheme = function (content) {
63
66
  `
64
67
  : html ``}
65
68
  <sp-theme
69
+ theme=${ifDefined(theme)}
66
70
  color=${ifDefined(color)}
67
71
  scale=${ifDefined(scale)}
68
72
  lang=${ifDefined(lang)}
@@ -75,6 +79,7 @@ ActiveOverlay.prototype.renderTheme = function (content) {
75
79
  export class StoryDecorator extends SpectrumElement {
76
80
  constructor() {
77
81
  super(...arguments);
82
+ this.theme = window.__swc_hack_knobs__.defaultFlavor;
78
83
  this.color = window.__swc_hack_knobs__.defaultColor;
79
84
  this.scale = window.__swc_hack_knobs__.defaultScale;
80
85
  this.direction = window.__swc_hack_knobs__.defaultDirection;
@@ -82,17 +87,97 @@ export class StoryDecorator extends SpectrumElement {
82
87
  this.screenshot = false;
83
88
  this.ready = false;
84
89
  }
90
+ static get styles() {
91
+ return [
92
+ css `
93
+ :host(:focus) {
94
+ outline: none;
95
+ }
96
+ sp-theme {
97
+ overflow-x: hidden;
98
+ display: block;
99
+ box-sizing: border-box;
100
+ width: 100%;
101
+ min-height: 100vh;
102
+ padding: var(--spectrum-global-dimension-size-100)
103
+ var(--spectrum-global-dimension-size-100)
104
+ calc(
105
+ 2 * var(--spectrum-alias-focus-ring-size) +
106
+ var(--spectrum-alias-item-height-m)
107
+ );
108
+ box-sizing: border-box;
109
+ background-color: var(--spectrum-global-color-gray-100);
110
+ color: var(
111
+ --spectrum-body-text-color,
112
+ var(--spectrum-alias-text-color)
113
+ );
114
+ }
115
+ :host([screenshot]) sp-theme {
116
+ padding: var(--spectrum-global-dimension-size-100);
117
+ }
118
+ :host([reduce-motion]) sp-theme {
119
+ ${reduceMotionProperties}
120
+ }
121
+ .manage-theme {
122
+ position: fixed;
123
+ bottom: 0;
124
+ left: var(--spectrum-global-dimension-size-200);
125
+ right: var(--spectrum-global-dimension-size-200);
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: flex-end;
129
+ box-sizing: border-box;
130
+ background-color: var(--spectrum-global-color-gray-100);
131
+ padding-bottom: calc(
132
+ 2 * var(--spectrum-alias-focus-ring-size)
133
+ );
134
+ }
135
+ [dir='ltr'] sp-field-label {
136
+ padding-left: 0;
137
+ padding-right: var(
138
+ --spectrum-fieldlabel-side-padding-x,
139
+ var(--spectrum-global-dimension-size-100)
140
+ );
141
+ margin-left: var(--spectrum-global-dimension-size-400);
142
+ }
143
+ [dir='ltr'] sp-switch {
144
+ margin-left: var(--spectrum-global-dimension-size-400);
145
+ margin-right: 0;
146
+ padding: 0;
147
+ }
148
+ [dir='rtl'] sp-field-label {
149
+ padding-right: 0;
150
+ padding-left: var(
151
+ --spectrum-fieldlabel-side-padding-x,
152
+ var(--spectrum-global-dimension-size-100)
153
+ );
154
+ margin-right: var(--spectrum-global-dimension-size-400);
155
+ }
156
+ [dir='rtl'] sp-switch {
157
+ margin-right: var(--spectrum-global-dimension-size-400);
158
+ margin-left: 0;
159
+ padding: 0;
160
+ }
161
+ `,
162
+ ];
163
+ }
85
164
  async startManagingContentDirection(el) {
86
- (await this.theme).startManagingContentDirection(el);
165
+ (await this.themeRoot).startManagingContentDirection(el);
87
166
  }
88
167
  async stopManagingContentDirection(el) {
89
- (await this.theme).stopManagingContentDirection(el);
168
+ (await this.themeRoot).stopManagingContentDirection(el);
90
169
  }
91
170
  updateTheme({ target }) {
92
171
  const { id } = target;
93
172
  const { value } = target;
94
173
  const { checked } = target;
95
174
  switch (id) {
175
+ case 'theme':
176
+ this.theme =
177
+ theme =
178
+ window.__swc_hack_knobs__.defaultFlavor =
179
+ value;
180
+ break;
96
181
  case 'color':
97
182
  this.color =
98
183
  color =
@@ -126,11 +211,20 @@ export class StoryDecorator extends SpectrumElement {
126
211
  event.stopPropagation();
127
212
  }
128
213
  }
214
+ get themedColor() {
215
+ return (this.color +
216
+ (this.theme === 'express' ? '-express' : ''));
217
+ }
218
+ get themedScale() {
219
+ return (this.scale +
220
+ (this.theme === 'express' ? '-express' : ''));
221
+ }
129
222
  render() {
130
223
  return html `
131
224
  <sp-theme
132
- color=${this.color}
133
- scale=${this.scale}
225
+ theme=${this.theme}
226
+ color=${this.themedColor}
227
+ scale=${this.themedScale}
134
228
  dir=${this.direction}
135
229
  part="container"
136
230
  @keydown=${this.handleKeydown}
@@ -159,11 +253,26 @@ export class StoryDecorator extends SpectrumElement {
159
253
  get manageTheme() {
160
254
  return html `
161
255
  <div class="manage-theme" part="controls">
162
- ${this.colorControl} ${this.scaleControl} ${this.dirControl}
163
- ${this.reduceMotionControl}
256
+ ${this.themeControl} ${this.colorControl} ${this.scaleControl}
257
+ ${this.dirControl} ${this.reduceMotionControl}
164
258
  </div>
165
259
  `;
166
260
  }
261
+ get themeControl() {
262
+ return html `
263
+ <sp-field-label for="theme">Spectrum</sp-field-label>
264
+ <sp-picker
265
+ id="theme"
266
+ placement="top"
267
+ quiet
268
+ .value=${this.theme}
269
+ @change=${this.updateTheme}
270
+ >
271
+ <sp-menu-item value="classic">Classic</sp-menu-item>
272
+ <sp-menu-item value="express">Express</sp-menu-item>
273
+ </sp-picker>
274
+ `;
275
+ }
167
276
  get colorControl() {
168
277
  return html `
169
278
  <sp-field-label for="color">Theme</sp-field-label>
@@ -225,75 +334,9 @@ export class StoryDecorator extends SpectrumElement {
225
334
  `;
226
335
  }
227
336
  }
228
- StoryDecorator.styles = [
229
- css `
230
- :host(:focus) {
231
- outline: none;
232
- }
233
- sp-theme {
234
- overflow-x: hidden;
235
- display: block;
236
- box-sizing: border-box;
237
- width: 100%;
238
- min-height: 100vh;
239
- padding: var(--spectrum-global-dimension-size-100)
240
- var(--spectrum-global-dimension-size-100)
241
- calc(
242
- 2 * var(--spectrum-alias-focus-ring-size) +
243
- var(--spectrum-alias-item-height-m)
244
- );
245
- background-color: var(--spectrum-global-color-gray-100);
246
- color: var(
247
- --spectrum-body-text-color,
248
- var(--spectrum-alias-text-color)
249
- );
250
- }
251
- :host([screenshot]) sp-theme {
252
- padding: var(--spectrum-global-dimension-size-100);
253
- }
254
- :host([reduce-motion]) sp-theme {
255
- ${reduceMotionProperties}
256
- }
257
- .manage-theme {
258
- position: fixed;
259
- bottom: 0;
260
- left: var(--spectrum-global-dimension-size-200);
261
- right: var(--spectrum-global-dimension-size-200);
262
- display: flex;
263
- align-items: center;
264
- justify-content: flex-end;
265
- box-sizing: border-box;
266
- background-color: var(--spectrum-global-color-gray-100);
267
- padding-bottom: calc(2 * var(--spectrum-alias-focus-ring-size));
268
- }
269
- [dir='ltr'] sp-field-label {
270
- padding-left: 0;
271
- padding-right: var(
272
- --spectrum-fieldlabel-side-padding-x,
273
- var(--spectrum-global-dimension-size-100)
274
- );
275
- margin-left: var(--spectrum-global-dimension-size-400);
276
- }
277
- [dir='ltr'] sp-switch {
278
- margin-left: var(--spectrum-global-dimension-size-400);
279
- margin-right: 0;
280
- padding: 0;
281
- }
282
- [dir='rtl'] sp-field-label {
283
- padding-right: 0;
284
- padding-left: var(
285
- --spectrum-fieldlabel-side-padding-x,
286
- var(--spectrum-global-dimension-size-100)
287
- );
288
- margin-right: var(--spectrum-global-dimension-size-400);
289
- }
290
- [dir='rtl'] sp-switch {
291
- margin-right: var(--spectrum-global-dimension-size-400);
292
- margin-left: 0;
293
- padding: 0;
294
- }
295
- `,
296
- ];
337
+ __decorate([
338
+ property({ type: String })
339
+ ], StoryDecorator.prototype, "theme", void 0);
297
340
  __decorate([
298
341
  property({ type: String })
299
342
  ], StoryDecorator.prototype, "color", void 0);
@@ -311,5 +354,5 @@ __decorate([
311
354
  ], StoryDecorator.prototype, "screenshot", void 0);
312
355
  __decorate([
313
356
  queryAsync('sp-theme')
314
- ], StoryDecorator.prototype, "theme", void 0);
357
+ ], StoryDecorator.prototype, "themeRoot", void 0);
315
358
  //# sourceMappingURL=StoryDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoryDecorator.js","sourceRoot":"","sources":["StoryDecorator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n css,\n html,\n nothing,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAsync,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/switch/sp-switch.js';\nimport { Picker } from '@spectrum-web-components/picker';\nimport { Switch } from '@spectrum-web-components/switch';\nimport { Color, Scale, Theme } from '@spectrum-web-components/theme';\nimport { ActiveOverlay } from '@spectrum-web-components/overlay';\nimport './types.js';\n\nconst queryString = window.location.search;\nconst urlParams = new URLSearchParams(queryString);\n\nexport let dir: 'ltr' | 'rtl' =\n (urlParams.get('sp_dir') as 'ltr' | 'rtl') || 'ltr';\nexport let color: Color = (urlParams.get('sp_color') as Color) || 'light';\nexport let scale: Scale = (urlParams.get('sp_scale') as Scale) || 'medium';\nexport let reduceMotion = urlParams.get('sp_reduceMotion') === 'true';\n\nwindow.__swc_hack_knobs__ = window.__swc_hack_knobs__ || {\n defaultColor: color,\n defaultScale: scale,\n defaultDirection: dir,\n defaultReduceMotion: reduceMotion,\n};\n\nconst reduceMotionProperties = css`\n --spectrum-global-animation-duration-100: 0ms;\n --spectrum-global-animation-duration-200: 0ms;\n --spectrum-global-animation-duration-300: 0ms;\n --spectrum-global-animation-duration-400: 0ms;\n --spectrum-global-animation-duration-500: 0ms;\n --spectrum-global-animation-duration-600: 0ms;\n --spectrum-global-animation-duration-700: 0ms;\n --spectrum-global-animation-duration-800: 0ms;\n --spectrum-global-animation-duration-900: 0ms;\n --spectrum-global-animation-duration-1000: 0ms;\n --spectrum-global-animation-duration-2000: 0ms;\n --spectrum-global-animation-duration-4000: 0ms;\n --spectrum-coachmark-animation-indicator-ring-duration: 0ms;\n --swc-test-duration: 1ms;\n`;\n\nActiveOverlay.prototype.renderTheme = function (\n content: TemplateResult\n): TemplateResult {\n const { color, scale, lang } = this.theme;\n return html`\n ${window.__swc_hack_knobs__.defaultReduceMotion\n ? html`\n <style>\n sp-theme {\n ${reduceMotionProperties}\n }\n </style>\n `\n : html``}\n <sp-theme\n color=${ifDefined(color)}\n scale=${ifDefined(scale)}\n lang=${ifDefined(lang)}\n part=\"theme\"\n >\n ${content}\n </sp-theme>\n `;\n};\n\nexport class StoryDecorator extends SpectrumElement {\n static styles = [\n css`\n :host(:focus) {\n outline: none;\n }\n sp-theme {\n overflow-x: hidden;\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-height: 100vh;\n padding: var(--spectrum-global-dimension-size-100)\n var(--spectrum-global-dimension-size-100)\n calc(\n 2 * var(--spectrum-alias-focus-ring-size) +\n var(--spectrum-alias-item-height-m)\n );\n background-color: var(--spectrum-global-color-gray-100);\n color: var(\n --spectrum-body-text-color,\n var(--spectrum-alias-text-color)\n );\n }\n :host([screenshot]) sp-theme {\n padding: var(--spectrum-global-dimension-size-100);\n }\n :host([reduce-motion]) sp-theme {\n ${reduceMotionProperties}\n }\n .manage-theme {\n position: fixed;\n bottom: 0;\n left: var(--spectrum-global-dimension-size-200);\n right: var(--spectrum-global-dimension-size-200);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n box-sizing: border-box;\n background-color: var(--spectrum-global-color-gray-100);\n padding-bottom: calc(2 * var(--spectrum-alias-focus-ring-size));\n }\n [dir='ltr'] sp-field-label {\n padding-left: 0;\n padding-right: var(\n --spectrum-fieldlabel-side-padding-x,\n var(--spectrum-global-dimension-size-100)\n );\n margin-left: var(--spectrum-global-dimension-size-400);\n }\n [dir='ltr'] sp-switch {\n margin-left: var(--spectrum-global-dimension-size-400);\n margin-right: 0;\n padding: 0;\n }\n [dir='rtl'] sp-field-label {\n padding-right: 0;\n padding-left: var(\n --spectrum-fieldlabel-side-padding-x,\n var(--spectrum-global-dimension-size-100)\n );\n margin-right: var(--spectrum-global-dimension-size-400);\n }\n [dir='rtl'] sp-switch {\n margin-right: var(--spectrum-global-dimension-size-400);\n margin-left: 0;\n padding: 0;\n }\n `,\n ];\n\n @property({ type: String })\n public color: Color = window.__swc_hack_knobs__.defaultColor;\n\n @property({ type: String })\n public scale: Scale = window.__swc_hack_knobs__.defaultScale;\n\n @property({ type: String })\n public direction: 'ltr' | 'rtl' =\n window.__swc_hack_knobs__.defaultDirection;\n\n @property({ type: Boolean, attribute: 'reduce-motion', reflect: true })\n public reduceMotion = window.__swc_hack_knobs__.defaultReduceMotion;\n\n @property({ type: Boolean, reflect: true })\n public screenshot = false;\n\n @queryAsync('sp-theme')\n private theme!: Theme;\n\n public ready = false;\n\n public async startManagingContentDirection(el: HTMLElement): Promise<void> {\n (await this.theme).startManagingContentDirection(el);\n }\n\n public async stopManagingContentDirection(el: HTMLElement): Promise<void> {\n (await this.theme).stopManagingContentDirection(el);\n }\n\n private updateTheme({ target }: Event & { target: Picker | Switch }): void {\n const { id } = target;\n const { value } = target as Picker;\n const { checked } = target as Switch;\n switch (id) {\n case 'color':\n this.color =\n color =\n window.__swc_hack_knobs__.defaultColor =\n value as Color;\n break;\n case 'scale':\n this.scale =\n scale =\n window.__swc_hack_knobs__.defaultScale =\n value as Scale;\n break;\n case 'dir':\n this.direction =\n dir =\n window.__swc_hack_knobs__.defaultDirection =\n value as 'ltr' | 'rtl';\n break;\n case 'reduceMotion':\n this.reduceMotion =\n reduceMotion =\n window.__swc_hack_knobs__.defaultReduceMotion =\n checked as boolean;\n break;\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n const path = event.composedPath();\n const hasInput = path.some((node) => node instanceof HTMLInputElement);\n if (hasInput) {\n event.stopPropagation();\n }\n }\n\n protected render(): TemplateResult {\n return html`\n <sp-theme\n color=${this.color}\n scale=${this.scale}\n dir=${this.direction}\n part=\"container\"\n @keydown=${this.handleKeydown}\n >\n <slot @slotchange=${this.checkReady}></slot>\n ${this.screenshot ? nothing : this.manageTheme}\n </sp-theme>\n `;\n }\n\n protected async checkReady({\n target,\n }: Event & { target: HTMLSlotElement }): Promise<void> {\n this.ready = false;\n const descendents = target.assignedElements({\n flatten: true,\n }) as SpectrumElement[];\n const litElementDescendents = descendents.filter(\n (el) =>\n el.tagName.search('-') !== -1 &&\n typeof el.updateComplete !== 'undefined'\n );\n const updates = litElementDescendents.map((el) => el.updateComplete);\n await Promise.all(updates);\n new Promise((res) => {\n setTimeout(res);\n }).then(async () => {\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n setTimeout(() => (this.ready = true));\n });\n }\n\n private get manageTheme(): TemplateResult {\n return html`\n <div class=\"manage-theme\" part=\"controls\">\n ${this.colorControl} ${this.scaleControl} ${this.dirControl}\n ${this.reduceMotionControl}\n </div>\n `;\n }\n\n private get colorControl(): TemplateResult {\n return html`\n <sp-field-label for=\"color\">Theme</sp-field-label>\n <sp-picker\n id=\"color\"\n placement=\"top\"\n quiet\n .value=${this.color}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"lightest\">Lightest</sp-menu-item>\n <sp-menu-item value=\"light\">Light</sp-menu-item>\n <sp-menu-item value=\"dark\">Dark</sp-menu-item>\n <sp-menu-item value=\"darkest\">Darkest</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get scaleControl(): TemplateResult {\n return html`\n <sp-field-label for=\"scale\">Scale</sp-field-label>\n <sp-picker\n id=\"scale\"\n label=\"Scale\"\n placement=\"top\"\n quiet\n .value=${this.scale}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"medium\">Medium</sp-menu-item>\n <sp-menu-item value=\"large\">Large</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get dirControl(): TemplateResult {\n return html`\n <sp-field-label for=\"dir\">Direction</sp-field-label>\n <sp-picker\n id=\"dir\"\n label=\"Direction\"\n placement=\"top\"\n quiet\n .value=${this.direction}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"ltr\">LTR</sp-menu-item>\n <sp-menu-item value=\"rtl\">RTL</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get reduceMotionControl(): TemplateResult {\n return html`\n <sp-switch\n id=\"reduceMotion\"\n ?checked=${this.reduceMotion}\n @change=${this.updateTheme}\n >\n Reduce Motion\n </sp-switch>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"StoryDecorator.js","sourceRoot":"","sources":["StoryDecorator.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n css,\n html,\n nothing,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAsync,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport '@spectrum-web-components/theme/sp-theme.js';\nimport '@spectrum-web-components/theme/src/themes.js';\nimport '@spectrum-web-components/theme/src/express/themes.js';\nimport '@spectrum-web-components/field-label/sp-field-label.js';\nimport '@spectrum-web-components/picker/sp-picker.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/switch/sp-switch.js';\nimport { Picker } from '@spectrum-web-components/picker';\nimport { Switch } from '@spectrum-web-components/switch';\nimport { Color, Flavor, Scale, Theme } from '@spectrum-web-components/theme';\nimport { ActiveOverlay } from '@spectrum-web-components/overlay';\nimport './types.js';\n\nconst queryString = window.location.search;\nconst urlParams = new URLSearchParams(queryString);\n\nexport let dir: 'ltr' | 'rtl' =\n (urlParams.get('sp_dir') as 'ltr' | 'rtl') || 'ltr';\nexport let theme: Flavor = (urlParams.get('sp_theme') as Flavor) || 'classic';\nexport let color: Color = (urlParams.get('sp_color') as Color) || 'light';\nexport let scale: Scale = (urlParams.get('sp_scale') as Scale) || 'medium';\nexport let reduceMotion = urlParams.get('sp_reduceMotion') === 'true';\n\nwindow.__swc_hack_knobs__ = window.__swc_hack_knobs__ || {\n defaultFlavor: theme,\n defaultColor: color,\n defaultScale: scale,\n defaultDirection: dir,\n defaultReduceMotion: reduceMotion,\n};\n\nconst reduceMotionProperties = css`\n --spectrum-global-animation-duration-100: 0ms;\n --spectrum-global-animation-duration-200: 0ms;\n --spectrum-global-animation-duration-300: 0ms;\n --spectrum-global-animation-duration-400: 0ms;\n --spectrum-global-animation-duration-500: 0ms;\n --spectrum-global-animation-duration-600: 0ms;\n --spectrum-global-animation-duration-700: 0ms;\n --spectrum-global-animation-duration-800: 0ms;\n --spectrum-global-animation-duration-900: 0ms;\n --spectrum-global-animation-duration-1000: 0ms;\n --spectrum-global-animation-duration-2000: 0ms;\n --spectrum-global-animation-duration-4000: 0ms;\n --spectrum-coachmark-animation-indicator-ring-duration: 0ms;\n --swc-test-duration: 1ms;\n`;\n\nActiveOverlay.prototype.renderTheme = function (\n content: TemplateResult\n): TemplateResult {\n const { color, scale, theme, lang } = this.theme;\n return html`\n ${window.__swc_hack_knobs__.defaultReduceMotion\n ? html`\n <style>\n sp-theme {\n ${reduceMotionProperties}\n }\n </style>\n `\n : html``}\n <sp-theme\n theme=${ifDefined(theme)}\n color=${ifDefined(color)}\n scale=${ifDefined(scale)}\n lang=${ifDefined(lang)}\n part=\"theme\"\n >\n ${content}\n </sp-theme>\n `;\n};\n\nexport class StoryDecorator extends SpectrumElement {\n static get styles() {\n return [\n css`\n :host(:focus) {\n outline: none;\n }\n sp-theme {\n overflow-x: hidden;\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-height: 100vh;\n padding: var(--spectrum-global-dimension-size-100)\n var(--spectrum-global-dimension-size-100)\n calc(\n 2 * var(--spectrum-alias-focus-ring-size) +\n var(--spectrum-alias-item-height-m)\n );\n box-sizing: border-box;\n background-color: var(--spectrum-global-color-gray-100);\n color: var(\n --spectrum-body-text-color,\n var(--spectrum-alias-text-color)\n );\n }\n :host([screenshot]) sp-theme {\n padding: var(--spectrum-global-dimension-size-100);\n }\n :host([reduce-motion]) sp-theme {\n ${reduceMotionProperties}\n }\n .manage-theme {\n position: fixed;\n bottom: 0;\n left: var(--spectrum-global-dimension-size-200);\n right: var(--spectrum-global-dimension-size-200);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n box-sizing: border-box;\n background-color: var(--spectrum-global-color-gray-100);\n padding-bottom: calc(\n 2 * var(--spectrum-alias-focus-ring-size)\n );\n }\n [dir='ltr'] sp-field-label {\n padding-left: 0;\n padding-right: var(\n --spectrum-fieldlabel-side-padding-x,\n var(--spectrum-global-dimension-size-100)\n );\n margin-left: var(--spectrum-global-dimension-size-400);\n }\n [dir='ltr'] sp-switch {\n margin-left: var(--spectrum-global-dimension-size-400);\n margin-right: 0;\n padding: 0;\n }\n [dir='rtl'] sp-field-label {\n padding-right: 0;\n padding-left: var(\n --spectrum-fieldlabel-side-padding-x,\n var(--spectrum-global-dimension-size-100)\n );\n margin-right: var(--spectrum-global-dimension-size-400);\n }\n [dir='rtl'] sp-switch {\n margin-right: var(--spectrum-global-dimension-size-400);\n margin-left: 0;\n padding: 0;\n }\n `,\n ];\n }\n\n @property({ type: String })\n public theme: Flavor = window.__swc_hack_knobs__.defaultFlavor;\n\n @property({ type: String })\n public color: Color = window.__swc_hack_knobs__.defaultColor;\n\n @property({ type: String })\n public scale: Scale = window.__swc_hack_knobs__.defaultScale;\n\n @property({ type: String })\n public direction: 'ltr' | 'rtl' =\n window.__swc_hack_knobs__.defaultDirection;\n\n @property({ type: Boolean, attribute: 'reduce-motion', reflect: true })\n public reduceMotion = window.__swc_hack_knobs__.defaultReduceMotion;\n\n @property({ type: Boolean, reflect: true })\n public screenshot = false;\n\n @queryAsync('sp-theme')\n private themeRoot!: Theme;\n\n public ready = false;\n\n public async startManagingContentDirection(el: HTMLElement): Promise<void> {\n (await this.themeRoot).startManagingContentDirection(el);\n }\n\n public async stopManagingContentDirection(el: HTMLElement): Promise<void> {\n (await this.themeRoot).stopManagingContentDirection(el);\n }\n\n private updateTheme({ target }: Event & { target: Picker | Switch }): void {\n const { id } = target;\n const { value } = target as Picker;\n const { checked } = target as Switch;\n switch (id) {\n case 'theme':\n this.theme =\n theme =\n window.__swc_hack_knobs__.defaultFlavor =\n value as Flavor;\n break;\n case 'color':\n this.color =\n color =\n window.__swc_hack_knobs__.defaultColor =\n value as Color;\n break;\n case 'scale':\n this.scale =\n scale =\n window.__swc_hack_knobs__.defaultScale =\n value as Scale;\n break;\n case 'dir':\n this.direction =\n dir =\n window.__swc_hack_knobs__.defaultDirection =\n value as 'ltr' | 'rtl';\n break;\n case 'reduceMotion':\n this.reduceMotion =\n reduceMotion =\n window.__swc_hack_knobs__.defaultReduceMotion =\n checked as boolean;\n break;\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n const path = event.composedPath();\n const hasInput = path.some((node) => node instanceof HTMLInputElement);\n if (hasInput) {\n event.stopPropagation();\n }\n }\n\n private get themedColor(): Color {\n return (this.color +\n (this.theme === 'express' ? '-express' : '')) as Color;\n }\n\n private get themedScale(): Scale {\n return (this.scale +\n (this.theme === 'express' ? '-express' : '')) as Scale;\n }\n\n protected render(): TemplateResult {\n return html`\n <sp-theme\n theme=${this.theme}\n color=${this.themedColor}\n scale=${this.themedScale}\n dir=${this.direction}\n part=\"container\"\n @keydown=${this.handleKeydown}\n >\n <slot @slotchange=${this.checkReady}></slot>\n ${this.screenshot ? nothing : this.manageTheme}\n </sp-theme>\n `;\n }\n\n protected async checkReady({\n target,\n }: Event & { target: HTMLSlotElement }): Promise<void> {\n this.ready = false;\n const descendents = target.assignedElements({\n flatten: true,\n }) as SpectrumElement[];\n const litElementDescendents = descendents.filter(\n (el) =>\n el.tagName.search('-') !== -1 &&\n typeof el.updateComplete !== 'undefined'\n );\n const updates = litElementDescendents.map((el) => el.updateComplete);\n await Promise.all(updates);\n new Promise((res) => {\n setTimeout(res);\n }).then(async () => {\n await (document.fonts ? document.fonts.ready : Promise.resolve());\n setTimeout(() => (this.ready = true));\n });\n }\n\n private get manageTheme(): TemplateResult {\n return html`\n <div class=\"manage-theme\" part=\"controls\">\n ${this.themeControl} ${this.colorControl} ${this.scaleControl}\n ${this.dirControl} ${this.reduceMotionControl}\n </div>\n `;\n }\n\n private get themeControl(): TemplateResult {\n return html`\n <sp-field-label for=\"theme\">Spectrum</sp-field-label>\n <sp-picker\n id=\"theme\"\n placement=\"top\"\n quiet\n .value=${this.theme}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"classic\">Classic</sp-menu-item>\n <sp-menu-item value=\"express\">Express</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get colorControl(): TemplateResult {\n return html`\n <sp-field-label for=\"color\">Theme</sp-field-label>\n <sp-picker\n id=\"color\"\n placement=\"top\"\n quiet\n .value=${this.color}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"lightest\">Lightest</sp-menu-item>\n <sp-menu-item value=\"light\">Light</sp-menu-item>\n <sp-menu-item value=\"dark\">Dark</sp-menu-item>\n <sp-menu-item value=\"darkest\">Darkest</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get scaleControl(): TemplateResult {\n return html`\n <sp-field-label for=\"scale\">Scale</sp-field-label>\n <sp-picker\n id=\"scale\"\n label=\"Scale\"\n placement=\"top\"\n quiet\n .value=${this.scale}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"medium\">Medium</sp-menu-item>\n <sp-menu-item value=\"large\">Large</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get dirControl(): TemplateResult {\n return html`\n <sp-field-label for=\"dir\">Direction</sp-field-label>\n <sp-picker\n id=\"dir\"\n label=\"Direction\"\n placement=\"top\"\n quiet\n .value=${this.direction}\n @change=${this.updateTheme}\n >\n <sp-menu-item value=\"ltr\">LTR</sp-menu-item>\n <sp-menu-item value=\"rtl\">RTL</sp-menu-item>\n </sp-picker>\n `;\n }\n\n private get reduceMotionControl(): TemplateResult {\n return html`\n <sp-switch\n id=\"reduceMotion\"\n ?checked=${this.reduceMotion}\n @change=${this.updateTheme}\n >\n Reduce Motion\n </sp-switch>\n `;\n }\n}\n"]}
package/src/types.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { Color, Scale } from '@spectrum-web-components/theme';
1
+ import { Color, Flavor, Scale } from '@spectrum-web-components/theme';
2
2
  declare global {
3
3
  interface Window {
4
4
  __swc_hack_knobs__: {
5
+ defaultFlavor: Flavor;
5
6
  defaultColor: Color;
6
7
  defaultScale: Scale;
7
8
  defaultDirection: 'ltr' | 'rtl';
package/src/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Color, Scale } from '@spectrum-web-components/theme';\n\ndeclare global {\n interface Window {\n __swc_hack_knobs__: {\n defaultColor: Color;\n defaultScale: Scale;\n defaultDirection: 'ltr' | 'rtl';\n defaultReduceMotion: boolean;\n };\n }\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { Color, Flavor, Scale } from '@spectrum-web-components/theme';\n\ndeclare global {\n interface Window {\n __swc_hack_knobs__: {\n defaultFlavor: Flavor;\n defaultColor: Color;\n defaultScale: Scale;\n defaultDirection: 'ltr' | 'rtl';\n defaultReduceMotion: boolean;\n };\n }\n}\n"]}