@esri/calcite-components 1.0.0-next.307 → 1.0.0-next.310
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/dist/calcite/calcite.esm.js +1 -1
- package/dist/calcite/p-0f014648.entry.js +5 -0
- package/dist/calcite/p-0fa1ba75.entry.js +5 -0
- package/dist/calcite/p-362cb320.entry.js +5 -0
- package/dist/calcite/p-688f06b9.entry.js +5 -0
- package/dist/calcite/p-8e252799.system.js +1 -1
- package/dist/calcite/p-a46c3870.system.entry.js +5 -0
- package/dist/calcite/{p-243d95ab.system.entry.js → p-a5e8f022.system.entry.js} +2 -2
- package/dist/calcite/p-ca6025ab.system.entry.js +5 -0
- package/dist/calcite/p-f1e111f4.system.entry.js +5 -0
- package/dist/cjs/calcite-alert.cjs.entry.js +22 -5
- package/dist/cjs/calcite-color-picker_3.cjs.entry.js +19 -11
- package/dist/cjs/calcite-input.cjs.entry.js +21 -19
- package/dist/cjs/calcite-shell_3.cjs.entry.js +156 -5
- package/dist/cjs/calcite.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/calcite-alert/calcite-alert.js +23 -4
- package/dist/collection/components/calcite-input/calcite-input.css +2 -0
- package/dist/collection/components/calcite-input/calcite-input.js +20 -18
- package/dist/collection/components/calcite-shell-panel/calcite-shell-panel.css +43 -0
- package/dist/collection/components/calcite-shell-panel/calcite-shell-panel.js +194 -5
- package/dist/collection/components/calcite-shell-panel/resources.js +5 -1
- package/dist/components/calcite-alert.js +22 -5
- package/dist/components/calcite-color-picker-swatch2.js +19 -11
- package/dist/components/calcite-input2.js +21 -19
- package/dist/components/calcite-shell-panel.js +161 -7
- package/dist/custom-elements/index.js +311 -134
- package/dist/esm/calcite-alert.entry.js +22 -5
- package/dist/esm/calcite-color-picker_3.entry.js +19 -11
- package/dist/esm/calcite-input.entry.js +21 -19
- package/dist/esm/calcite-shell_3.entry.js +157 -6
- package/dist/esm/calcite.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm-es5/calcite-alert.entry.js +2 -2
- package/dist/esm-es5/calcite-color-picker_3.entry.js +1 -1
- package/dist/esm-es5/calcite-input.entry.js +1 -1
- package/dist/esm-es5/calcite-shell_3.entry.js +1 -1
- package/dist/esm-es5/calcite.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/extras/docs-json.json +40 -1
- package/dist/types/components/calcite-alert/calcite-alert.d.ts +3 -0
- package/dist/types/components/calcite-input/calcite-input.d.ts +1 -1
- package/dist/types/components/calcite-shell-panel/calcite-shell-panel.d.ts +31 -0
- package/dist/types/components/calcite-shell-panel/resources.d.ts +4 -0
- package/dist/types/components.d.ts +18 -0
- package/hydrate/index.js +315 -135
- package/package.json +6 -6
- package/readme.md +2 -2
- package/dist/calcite/p-5c0c29bc.entry.js +0 -5
- package/dist/calcite/p-5f817b79.entry.js +0 -5
- package/dist/calcite/p-737fb960.entry.js +0 -5
- package/dist/calcite/p-7cbc72b6.system.entry.js +0 -5
- package/dist/calcite/p-88b875d3.system.entry.js +0 -5
- package/dist/calcite/p-aa47308a.entry.js +0 -5
- package/dist/calcite/p-b1a96c72.system.entry.js +0 -5
|
@@ -2,22 +2,27 @@
|
|
|
2
2
|
* All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
* See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
|
|
4
4
|
*/
|
|
5
|
-
import { HTMLElement, createEvent, h, proxyCustomElement } from '@stencil/core/internal/client';
|
|
5
|
+
import { HTMLElement, createEvent, h, forceUpdate, proxyCustomElement } from '@stencil/core/internal/client';
|
|
6
6
|
import { b as getSlotted } from './dom.js';
|
|
7
|
+
import { c as clamp } from './math.js';
|
|
7
8
|
|
|
8
9
|
const CSS = {
|
|
9
10
|
container: "container",
|
|
10
11
|
content: "content",
|
|
11
12
|
contentHeader: "content__header",
|
|
12
13
|
contentBody: "content__body",
|
|
13
|
-
contentDetached: "content--detached"
|
|
14
|
+
contentDetached: "content--detached",
|
|
15
|
+
separator: "separator"
|
|
14
16
|
};
|
|
15
17
|
const SLOTS = {
|
|
16
18
|
actionBar: "action-bar",
|
|
17
19
|
header: "header"
|
|
18
20
|
};
|
|
21
|
+
const TEXT = {
|
|
22
|
+
resize: "Resize"
|
|
23
|
+
};
|
|
19
24
|
|
|
20
|
-
const calciteShellPanelCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:300ms}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:150ms ease-in-out}:host([hidden]){display:none}:host{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex:0 1 auto;flex:0 1 auto;--calcite-shell-panel-detached-max-height:unset}.container{-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;background-color:transparent;-ms-flex:1 1 auto;flex:1 1 auto;pointer-events:none;color:var(--calcite-ui-text-2);font-size:var(--calcite-font-size--1)}.container *{-webkit-box-sizing:border-box;box-sizing:border-box}::slotted(calcite-panel),::slotted(calcite-flow){-ms-flex:1 1 auto;flex:1 1 auto;height:100%;width:100%;max-height:unset;max-width:unset}::slotted(.calcite-match-height){display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden}.content{-ms-flex-align:stretch;align-items:stretch;-ms-flex-item-align:stretch;align-self:stretch;background-color:var(--calcite-ui-background);display:-ms-flexbox;display:flex;padding:0;pointer-events:auto;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:var(--calcite-shell-panel-width);max-width:var(--calcite-shell-panel-max-width);min-width:var(--calcite-shell-panel-min-width);-webkit-transition:max-height 150ms ease-in-out, max-width 150ms ease-in-out;transition:max-height 150ms ease-in-out, max-width 150ms ease-in-out}.content__header{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch}.content__body{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-direction:column;flex-direction:column;overflow:hidden}:host([width-scale=s]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 12vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 300px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 150px)}:host([width-scale=m]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 20vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 420px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 240px)}:host([width-scale=l]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 45vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 680px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 340px)}:host([detached-height-scale=s]) .content--detached{--calcite-shell-panel-detached-max-height:40vh}:host([detached-height-scale=m]) .content--detached{--calcite-shell-panel-detached-max-height:60vh}:host([detached-height-scale=l]) .content--detached{--calcite-shell-panel-detached-max-height:80vh}.content--detached{border-radius:0.25rem;-webkit-box-shadow:0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);box-shadow:0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);height:auto;overflow:hidden;margin-top:0.5rem;margin-bottom:auto;margin-left:0.5rem;margin-right:0.5rem;max-height:var(--calcite-shell-panel-detached-max-height)}.content--detached ::slotted(calcite-panel),.content--detached ::slotted(calcite-flow){max-height:unset}:host([position=start]) .content--detached ::slotted(calcite-panel),:host([position=start]) .content--detached ::slotted(calcite-flow),:host([position=end]) .content--detached ::slotted(calcite-panel),:host([position=end]) .content--detached ::slotted(calcite-flow){border-style:none}.content[hidden]{display:none}slot[name=action-bar]::slotted(calcite-action-bar),.content ::slotted(calcite-flow),.content ::slotted(calcite-panel){border-width:1px;border-color:var(--calcite-ui-border-3);border-style:solid}:host([position=start]) slot[name=action-bar]::slotted(calcite-action-bar),:host([position=start]) .content ::slotted(calcite-flow),:host([position=start]) .content ::slotted(calcite-panel){-webkit-border-start:none;border-inline-start:none}:host([position=end]) slot[name=action-bar]::slotted(calcite-action-bar),:host([position=end]) .content ::slotted(calcite-flow),:host([position=end]) .content ::slotted(calcite-panel){-webkit-border-end:none;border-inline-end:none}";
|
|
25
|
+
const calciteShellPanelCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:300ms}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:150ms ease-in-out}:host([hidden]){display:none}:host{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex:0 1 auto;flex:0 1 auto;--calcite-shell-panel-detached-max-height:unset}.container{-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;background-color:transparent;-ms-flex:1 1 auto;flex:1 1 auto;pointer-events:none;color:var(--calcite-ui-text-2);font-size:var(--calcite-font-size--1)}.container *{-webkit-box-sizing:border-box;box-sizing:border-box}:host(:hover) .separator:not(:hover):not(:focus),:host(:focus-within) .separator:not(:hover):not(:focus){opacity:1;background-color:var(--calcite-ui-border-3)}.separator{position:absolute;background-color:transparent;bottom:0;display:-ms-flexbox;display:flex;height:100%;opacity:0;pointer-events:auto;top:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-delay:0s;transition-delay:0s;width:0.125rem;z-index:10;cursor:col-resize;outline:none}.separator:hover{opacity:1;background-color:var(--calcite-ui-border-2)}.separator:focus{background-color:var(--calcite-ui-brand);opacity:1}:host([position=start]) .separator{inset-inline-end:-2px}:host([position=end]) .separator{inset-inline-start:-2px}::slotted(calcite-panel),::slotted(calcite-flow){-ms-flex:1 1 auto;flex:1 1 auto;height:100%;width:100%;max-height:unset;max-width:unset}::slotted(.calcite-match-height){display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden}.content{-ms-flex-align:stretch;align-items:stretch;-ms-flex-item-align:stretch;align-self:stretch;background-color:var(--calcite-ui-background);display:-ms-flexbox;display:flex;padding:0;pointer-events:auto;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:var(--calcite-shell-panel-width);max-width:var(--calcite-shell-panel-max-width);min-width:var(--calcite-shell-panel-min-width);-webkit-transition:max-height 150ms ease-in-out, max-width 150ms ease-in-out;transition:max-height 150ms ease-in-out, max-width 150ms ease-in-out}.content__header{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:stretch;align-items:stretch}.content__body{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-direction:column;flex-direction:column;overflow:hidden}:host([width-scale=s]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 12vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 300px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 150px)}:host([width-scale=m]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 20vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 420px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 240px)}:host([width-scale=l]) .content{--calcite-shell-panel-width:calc(var(--calcite-panel-width-multiplier) * 45vw);--calcite-shell-panel-max-width:calc(var(--calcite-panel-width-multiplier) * 680px);--calcite-shell-panel-min-width:calc(var(--calcite-panel-width-multiplier) * 340px)}:host([detached-height-scale=s]) .content--detached{--calcite-shell-panel-detached-max-height:40vh}:host([detached-height-scale=m]) .content--detached{--calcite-shell-panel-detached-max-height:60vh}:host([detached-height-scale=l]) .content--detached{--calcite-shell-panel-detached-max-height:80vh}.content--detached{border-radius:0.25rem;-webkit-box-shadow:0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);box-shadow:0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);height:auto;overflow:hidden;margin-top:0.5rem;margin-bottom:auto;margin-left:0.5rem;margin-right:0.5rem;max-height:var(--calcite-shell-panel-detached-max-height)}.content--detached ::slotted(calcite-panel),.content--detached ::slotted(calcite-flow){max-height:unset}:host([position=start]) .content--detached ::slotted(calcite-panel),:host([position=start]) .content--detached ::slotted(calcite-flow),:host([position=end]) .content--detached ::slotted(calcite-panel),:host([position=end]) .content--detached ::slotted(calcite-flow){border-style:none}.content[hidden]{display:none}slot[name=action-bar]::slotted(calcite-action-bar),.content ::slotted(calcite-flow),.content ::slotted(calcite-panel){border-width:1px;border-color:var(--calcite-ui-border-3);border-style:solid}:host([position=start]) slot[name=action-bar]::slotted(calcite-action-bar),:host([position=start]) .content ::slotted(calcite-flow),:host([position=start]) .content ::slotted(calcite-panel){-webkit-border-start:none;border-inline-start:none}:host([position=end]) slot[name=action-bar]::slotted(calcite-action-bar),:host([position=end]) .content ::slotted(calcite-flow),:host([position=end]) .content ::slotted(calcite-panel){-webkit-border-end:none;border-inline-end:none}";
|
|
21
26
|
|
|
22
27
|
let CalciteShellPanel$1 = class extends HTMLElement {
|
|
23
28
|
constructor() {
|
|
@@ -46,10 +51,121 @@ let CalciteShellPanel$1 = class extends HTMLElement {
|
|
|
46
51
|
* This sets width of the content area.
|
|
47
52
|
*/
|
|
48
53
|
this.widthScale = "m";
|
|
54
|
+
/**
|
|
55
|
+
* Accessible label for resize separator.
|
|
56
|
+
* @default "Resize"
|
|
57
|
+
*/
|
|
58
|
+
this.intlResize = TEXT.resize;
|
|
59
|
+
/**
|
|
60
|
+
* This property makes the content area resizable if the calcite-shell-panel is not 'detached'.
|
|
61
|
+
*/
|
|
62
|
+
this.resizable = false;
|
|
63
|
+
this.contentWidth = null;
|
|
64
|
+
this.initialContentWidth = null;
|
|
65
|
+
this.initialClientX = null;
|
|
66
|
+
this.contentWidthMax = null;
|
|
67
|
+
this.contentWidthMin = null;
|
|
68
|
+
this.step = 1;
|
|
69
|
+
this.stepMultiplier = 10;
|
|
70
|
+
this.storeContentEl = (contentEl) => {
|
|
71
|
+
this.contentEl = contentEl;
|
|
72
|
+
};
|
|
73
|
+
this.getKeyAdjustedWidth = (event) => {
|
|
74
|
+
const { key } = event;
|
|
75
|
+
const { step, stepMultiplier, contentWidthMin, contentWidthMax, initialContentWidth, position } = this;
|
|
76
|
+
const multipliedStep = step * stepMultiplier;
|
|
77
|
+
const MOVEMENT_KEYS = [
|
|
78
|
+
"ArrowUp",
|
|
79
|
+
"ArrowDown",
|
|
80
|
+
"ArrowLeft",
|
|
81
|
+
"ArrowRight",
|
|
82
|
+
"Home",
|
|
83
|
+
"End",
|
|
84
|
+
"PageUp",
|
|
85
|
+
"PageDown"
|
|
86
|
+
];
|
|
87
|
+
if (MOVEMENT_KEYS.indexOf(key) > -1) {
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
}
|
|
90
|
+
const increaseKeys = key === "ArrowUp" || (position === "end" ? key === "ArrowLeft" : key === "ArrowRight");
|
|
91
|
+
if (increaseKeys) {
|
|
92
|
+
const stepValue = event.shiftKey ? multipliedStep : step;
|
|
93
|
+
return initialContentWidth + stepValue;
|
|
94
|
+
}
|
|
95
|
+
const decreaseKeys = key === "ArrowDown" || (position === "end" ? key === "ArrowRight" : key === "ArrowLeft");
|
|
96
|
+
if (decreaseKeys) {
|
|
97
|
+
const stepValue = event.shiftKey ? multipliedStep : step;
|
|
98
|
+
return initialContentWidth - stepValue;
|
|
99
|
+
}
|
|
100
|
+
if (typeof contentWidthMin === "number" && key === "Home") {
|
|
101
|
+
return contentWidthMin;
|
|
102
|
+
}
|
|
103
|
+
if (typeof contentWidthMax === "number" && key === "End") {
|
|
104
|
+
return contentWidthMax;
|
|
105
|
+
}
|
|
106
|
+
if (key === "PageDown") {
|
|
107
|
+
return initialContentWidth - multipliedStep;
|
|
108
|
+
}
|
|
109
|
+
if (key === "PageUp") {
|
|
110
|
+
return initialContentWidth + multipliedStep;
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
};
|
|
114
|
+
this.separatorKeyDown = (event) => {
|
|
115
|
+
this.setInitialContentWidth();
|
|
116
|
+
const width = this.getKeyAdjustedWidth(event);
|
|
117
|
+
if (typeof width === "number") {
|
|
118
|
+
this.setContentWidth(width);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
this.separatorPointerMove = (event) => {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
const { initialContentWidth, position, initialClientX } = this;
|
|
124
|
+
const offset = event.clientX - initialClientX;
|
|
125
|
+
this.setContentWidth(position === "end" ? initialContentWidth - offset : initialContentWidth + offset);
|
|
126
|
+
};
|
|
127
|
+
this.separatorPointerUp = (event) => {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
document.removeEventListener("pointerup", this.separatorPointerUp);
|
|
130
|
+
document.removeEventListener("pointermove", this.separatorPointerMove);
|
|
131
|
+
};
|
|
132
|
+
this.setInitialContentWidth = () => {
|
|
133
|
+
var _a;
|
|
134
|
+
this.initialContentWidth = (_a = this.contentEl) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
|
|
135
|
+
};
|
|
136
|
+
this.separatorPointerDown = (event) => {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
const { separatorEl } = this;
|
|
139
|
+
separatorEl && document.activeElement !== separatorEl && separatorEl.focus();
|
|
140
|
+
this.setInitialContentWidth();
|
|
141
|
+
this.initialClientX = event.clientX;
|
|
142
|
+
document.addEventListener("pointerup", this.separatorPointerUp);
|
|
143
|
+
document.addEventListener("pointermove", this.separatorPointerMove);
|
|
144
|
+
};
|
|
145
|
+
this.connectSeparator = (separatorEl) => {
|
|
146
|
+
this.disconnectSeparator();
|
|
147
|
+
this.separatorEl = separatorEl;
|
|
148
|
+
separatorEl.addEventListener("pointerdown", this.separatorPointerDown);
|
|
149
|
+
};
|
|
150
|
+
this.disconnectSeparator = () => {
|
|
151
|
+
var _a;
|
|
152
|
+
(_a = this.separatorEl) === null || _a === void 0 ? void 0 : _a.removeEventListener("pointerdown", this.separatorPointerDown);
|
|
153
|
+
};
|
|
49
154
|
}
|
|
50
155
|
watchHandler() {
|
|
51
156
|
this.calciteShellPanelToggle.emit();
|
|
52
157
|
}
|
|
158
|
+
//--------------------------------------------------------------------------
|
|
159
|
+
//
|
|
160
|
+
// Lifecycle
|
|
161
|
+
//
|
|
162
|
+
//--------------------------------------------------------------------------
|
|
163
|
+
disconnectedCallback() {
|
|
164
|
+
this.disconnectSeparator();
|
|
165
|
+
}
|
|
166
|
+
componentDidLoad() {
|
|
167
|
+
this.updateAriaValues();
|
|
168
|
+
}
|
|
53
169
|
// --------------------------------------------------------------------------
|
|
54
170
|
//
|
|
55
171
|
// Render Methods
|
|
@@ -61,15 +177,50 @@ let CalciteShellPanel$1 = class extends HTMLElement {
|
|
|
61
177
|
return hasHeader ? (h("div", { class: CSS.contentHeader }, h("slot", { name: SLOTS.header }))) : null;
|
|
62
178
|
}
|
|
63
179
|
render() {
|
|
64
|
-
const { collapsed, detached, position } = this;
|
|
65
|
-
const
|
|
180
|
+
const { collapsed, detached, position, initialContentWidth, contentWidth, contentWidthMax, contentWidthMin, intlResize, resizable } = this;
|
|
181
|
+
const allowResizing = !detached && resizable;
|
|
182
|
+
const contentNode = (h("div", { class: { [CSS.content]: true, [CSS.contentDetached]: detached }, hidden: collapsed, ref: this.storeContentEl, style: allowResizing && contentWidth ? { width: `${contentWidth}px` } : null }, this.renderHeader(), h("div", { class: CSS.contentBody }, h("slot", null))));
|
|
183
|
+
const separatorNode = allowResizing ? (h("div", { "aria-label": intlResize, "aria-orientation": "horizontal", "aria-valuemax": contentWidthMax, "aria-valuemin": contentWidthMin, "aria-valuenow": contentWidth !== null && contentWidth !== void 0 ? contentWidth : initialContentWidth, class: CSS.separator, onKeyDown: this.separatorKeyDown, ref: this.connectSeparator, role: "separator", tabIndex: 0, "touch-action": "none" })) : null;
|
|
66
184
|
const actionBarNode = h("slot", { name: SLOTS.actionBar });
|
|
67
|
-
const mainNodes = [actionBarNode, contentNode];
|
|
185
|
+
const mainNodes = [actionBarNode, contentNode, separatorNode];
|
|
68
186
|
if (position === "end") {
|
|
69
187
|
mainNodes.reverse();
|
|
70
188
|
}
|
|
71
189
|
return h("div", { class: { [CSS.container]: true } }, mainNodes);
|
|
72
190
|
}
|
|
191
|
+
// --------------------------------------------------------------------------
|
|
192
|
+
//
|
|
193
|
+
// private Methods
|
|
194
|
+
//
|
|
195
|
+
// --------------------------------------------------------------------------
|
|
196
|
+
setContentWidth(width) {
|
|
197
|
+
const { contentWidthMax, contentWidthMin } = this;
|
|
198
|
+
const roundedWidth = Math.round(width);
|
|
199
|
+
this.contentWidth =
|
|
200
|
+
typeof contentWidthMax === "number" && typeof contentWidthMin === "number"
|
|
201
|
+
? clamp(roundedWidth, contentWidthMin, contentWidthMax)
|
|
202
|
+
: roundedWidth;
|
|
203
|
+
}
|
|
204
|
+
updateAriaValues() {
|
|
205
|
+
const { contentEl } = this;
|
|
206
|
+
const computedStyle = contentEl && getComputedStyle(contentEl);
|
|
207
|
+
if (!computedStyle) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const max = parseInt(computedStyle.getPropertyValue("max-width"), 10);
|
|
211
|
+
const min = parseInt(computedStyle.getPropertyValue("min-width"), 10);
|
|
212
|
+
const valueNow = parseInt(computedStyle.getPropertyValue("width"), 10);
|
|
213
|
+
if (typeof valueNow === "number" && !isNaN(valueNow)) {
|
|
214
|
+
this.initialContentWidth = valueNow;
|
|
215
|
+
}
|
|
216
|
+
if (typeof max === "number" && !isNaN(max)) {
|
|
217
|
+
this.contentWidthMax = max;
|
|
218
|
+
}
|
|
219
|
+
if (typeof min === "number" && !isNaN(min)) {
|
|
220
|
+
this.contentWidthMin = min;
|
|
221
|
+
}
|
|
222
|
+
forceUpdate(this);
|
|
223
|
+
}
|
|
73
224
|
get el() { return this; }
|
|
74
225
|
static get watchers() { return {
|
|
75
226
|
"collapsed": ["watchHandler"]
|
|
@@ -81,7 +232,10 @@ CalciteShellPanel$1 = /*@__PURE__*/ proxyCustomElement(CalciteShellPanel$1, [1,
|
|
|
81
232
|
"detached": [516],
|
|
82
233
|
"detachedHeightScale": [513, "detached-height-scale"],
|
|
83
234
|
"widthScale": [513, "width-scale"],
|
|
84
|
-
"position": [513]
|
|
235
|
+
"position": [513],
|
|
236
|
+
"intlResize": [1, "intl-resize"],
|
|
237
|
+
"resizable": [516],
|
|
238
|
+
"contentWidth": [32]
|
|
85
239
|
}]);
|
|
86
240
|
function defineCustomElement$1() {
|
|
87
241
|
if (typeof customElements === "undefined") {
|