@warp-ds/elements 2.2.0-next.13 → 2.2.0-next.14
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/custom-elements.json +2214 -1052
- package/dist/packages/attention/index.js +11 -11
- package/dist/packages/attention/index.js.map +4 -4
- package/dist/packages/breadcrumbs/index.js.map +1 -1
- package/dist/packages/combobox/combobox.stories.d.ts +14 -0
- package/dist/packages/combobox/combobox.stories.js +95 -0
- package/dist/packages/combobox/index.d.ts +100 -0
- package/dist/packages/combobox/index.js +2492 -0
- package/dist/packages/combobox/index.js.map +7 -0
- package/dist/packages/combobox/locales/da/messages.d.mts +1 -0
- package/dist/packages/combobox/locales/da/messages.mjs +1 -0
- package/dist/packages/combobox/locales/en/messages.d.mts +1 -0
- package/dist/packages/combobox/locales/en/messages.mjs +1 -0
- package/dist/packages/combobox/locales/fi/messages.d.mts +1 -0
- package/dist/packages/combobox/locales/fi/messages.mjs +1 -0
- package/dist/packages/combobox/locales/nb/messages.d.mts +1 -0
- package/dist/packages/combobox/locales/nb/messages.mjs +1 -0
- package/dist/packages/combobox/locales/sv/messages.d.mts +1 -0
- package/dist/packages/combobox/locales/sv/messages.mjs +1 -0
- package/dist/packages/combobox/styles.d.ts +1 -0
- package/dist/packages/combobox/styles.js +2 -0
- package/dist/packages/slider/Slider.d.ts +2 -0
- package/dist/packages/slider/Slider.js +8 -0
- package/dist/packages/slider/SliderThumb.d.ts +2 -0
- package/dist/packages/slider/SliderThumb.js +8 -0
- package/dist/packages/slider/index.d.ts +2 -0
- package/dist/packages/slider/index.js +2791 -0
- package/dist/packages/slider/index.js.map +7 -0
- package/dist/packages/slider/oddbird-css-anchor-positioning.d.ts +2 -0
- package/dist/packages/slider/oddbird-css-anchor-positioning.js +3 -0
- package/dist/packages/slider/slider-thumb.d.ts +60 -0
- package/dist/packages/slider/slider-thumb.js +2663 -0
- package/dist/packages/slider/slider-thumb.js.map +7 -0
- package/dist/packages/slider/slider.d.ts +51 -0
- package/dist/packages/slider/slider.js +2569 -0
- package/dist/packages/slider/slider.js.map +7 -0
- package/dist/packages/slider/slider.stories.d.ts +17 -0
- package/dist/packages/slider/slider.stories.js +203 -0
- package/dist/packages/slider/slider.test.d.ts +4 -0
- package/dist/packages/slider/slider.test.js +62 -0
- package/dist/packages/slider/styles/w-slider-thumb.styles.d.ts +1 -0
- package/dist/packages/slider/styles/w-slider-thumb.styles.js +132 -0
- package/dist/packages/slider/styles/w-slider.styles.d.ts +1 -0
- package/dist/packages/slider/styles/w-slider.styles.js +118 -0
- package/dist/packages/slider/styles.d.ts +1 -0
- package/dist/packages/slider/styles.js +2 -0
- package/dist/packages/textfield/index.d.ts +12 -1
- package/dist/packages/textfield/index.js +77 -28
- package/dist/packages/textfield/index.js.map +4 -4
- package/dist/packages/textfield/styles/w-textfield.styles.d.ts +1 -0
- package/dist/packages/textfield/styles/w-textfield.styles.js +46 -0
- package/dist/packages/textfield/styles.js +1 -1
- package/dist/packages/textfield/textfield.stories.d.ts +1 -0
- package/dist/packages/textfield/textfield.stories.js +19 -0
- package/dist/packages/textfield/textfield.test.d.ts +1 -0
- package/dist/packages/textfield/textfield.test.js +62 -3
- package/dist/vscode.html-custom-data.json +166 -42
- package/dist/web-types.json +416 -85
- package/package.json +5 -3
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
/* For some reason the pseudoselectors for webkit and moz must be separate blocks :shrug: */
|
|
3
|
+
export const wSliderThumbStyles = css `
|
|
4
|
+
.w-slider-thumb {
|
|
5
|
+
position: relative;
|
|
6
|
+
display: grid;
|
|
7
|
+
pointer-events: none; /* For range inputs we position two of these on top of each other. Let clicks go through the top one. */
|
|
8
|
+
grid-template-areas:
|
|
9
|
+
'slider slider slider'
|
|
10
|
+
'frommarker . tomarker'
|
|
11
|
+
'fromtextfield . totextfield';
|
|
12
|
+
grid-template-columns: 1fr 24px 1fr;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.w-slider-thumb__range {
|
|
16
|
+
appearance: none;
|
|
17
|
+
background-color: transparent;
|
|
18
|
+
grid-area: slider;
|
|
19
|
+
height: 44px; /* touch target */
|
|
20
|
+
pointer-events: none; /* let clicks pass through for range slider where we place two inputs over each other */
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.w-slider-thumb__range::-webkit-slider-runnable-track {
|
|
24
|
+
box-shadow: none;
|
|
25
|
+
color: var(--w-s-color-text);
|
|
26
|
+
height: var(--w-slider-track-height);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.w-slider-thumb__range:hover::-webkit-slider-thumb {
|
|
30
|
+
background: var(--w-s-color-background-primary-hover);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.w-slider-thumb__range:hover::-moz-range-thumb {
|
|
34
|
+
background: var(--w-s-color-background-primary-hover);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
Use anchor positioning to place the tooltip target in relation to the slider thumb.
|
|
39
|
+
We use a polyfill to bring support to older Safari, Firefox at time of writing.
|
|
40
|
+
*/
|
|
41
|
+
.w-slider-thumb__range::-webkit-slider-thumb {
|
|
42
|
+
anchor-name: --thumb;
|
|
43
|
+
|
|
44
|
+
appearance: none;
|
|
45
|
+
background: var(--w-s-color-background-primary);
|
|
46
|
+
border-radius: 50%;
|
|
47
|
+
height: var(--w-slider-thumb-size);
|
|
48
|
+
margin-top: calc(-1 * calc(var(--w-slider-thumb-offset) - calc(var(--w-slider-track-height) / 2)));
|
|
49
|
+
pointer-events: auto;
|
|
50
|
+
width: var(--w-slider-thumb-size);
|
|
51
|
+
z-index: 1;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.w-slider-thumb__range::-moz-range-thumb {
|
|
55
|
+
anchor-name: --thumb;
|
|
56
|
+
|
|
57
|
+
appearance: none;
|
|
58
|
+
background: var(--w-s-color-background-primary);
|
|
59
|
+
border-radius: 50%;
|
|
60
|
+
border-color: transparent;
|
|
61
|
+
height: var(--w-slider-thumb-size);
|
|
62
|
+
margin-top: calc(-1 * calc(var(--w-slider-thumb-offset) - calc(var(--w-slider-track-height) / 2)));
|
|
63
|
+
pointer-events: initial;
|
|
64
|
+
width: var(--w-slider-thumb-size);
|
|
65
|
+
z-index: 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.w-slider-thumb__tooltip {
|
|
69
|
+
display: none;
|
|
70
|
+
position: absolute;
|
|
71
|
+
|
|
72
|
+
background-color: var(--w-s-color-background-inverted);
|
|
73
|
+
color: var(--w-s-color-text-inverted-static);
|
|
74
|
+
border-color: var(--w-s-color-background-inverted);
|
|
75
|
+
|
|
76
|
+
padding: 4px 8px;
|
|
77
|
+
border-radius: 4px;
|
|
78
|
+
font-size: 12px;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
z-index: 1;
|
|
81
|
+
|
|
82
|
+
position-anchor: --thumb;
|
|
83
|
+
|
|
84
|
+
bottom: calc(anchor(top) + 5px);
|
|
85
|
+
justify-self: anchor-center;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.w-slider-thumb__tooltip--visible {
|
|
89
|
+
display: block;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.w-slider-thumb__from-marker,
|
|
93
|
+
.w-slider-thumb__to-marker {
|
|
94
|
+
margin-inline: 2px; /* visual alignment with input border, slider thumb */
|
|
95
|
+
color: var(--w-s-color-text-subtle);
|
|
96
|
+
font-size: var(--w-font-size-s);
|
|
97
|
+
line-height: var(--w-line-height-s);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.w-slider-thumb__from-marker {
|
|
101
|
+
grid-area: frommarker;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.w-slider-thumb__to-marker {
|
|
105
|
+
grid-area: tomarker;
|
|
106
|
+
text-align: right;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.w-slider-thumb__textfield {
|
|
110
|
+
margin-top: 10px;
|
|
111
|
+
pointer-events: auto;
|
|
112
|
+
grid-row: 3 / 4;
|
|
113
|
+
grid-column: 1 / 3; /* Single sliders should have the text field use the fromtextfield _and_ gap portion of the CSS grid. */
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
:host([name='from']) .w-slider-thumb__textfield {
|
|
117
|
+
grid-column: 1 / 2; /* Range sliders should leave the gap empty. */
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
:host([name='from']) .w-slider-thumb__range::-webkit-slider-thumb {
|
|
121
|
+
margin-left: calc(-1px * var(--thumb-offset) / 2);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
:host([name='to']) .w-slider-thumb__textfield {
|
|
125
|
+
grid-row: 3 / 4;
|
|
126
|
+
grid-column: 3 / 4;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:host([name='to']) .w-slider-thumb__range::-webkit-slider-thumb {
|
|
130
|
+
margin-left: calc(1px * var(--thumb-offset) / 2);
|
|
131
|
+
}
|
|
132
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const wSliderStyles: import("lit").CSSResult;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const wSliderStyles = css `
|
|
3
|
+
.w-slider {
|
|
4
|
+
position: relative;
|
|
5
|
+
border: none;
|
|
6
|
+
padding: 0;
|
|
7
|
+
margin: 0;
|
|
8
|
+
display: grid;
|
|
9
|
+
width: 100%;
|
|
10
|
+
grid-template-areas:
|
|
11
|
+
'label'
|
|
12
|
+
'description'
|
|
13
|
+
'slider';
|
|
14
|
+
grid-template-columns: 1fr;
|
|
15
|
+
|
|
16
|
+
--w-slider-track-background: var(--w-s-color-background-disabled-subtle);
|
|
17
|
+
--w-slider-track-active-background: var(--w-s-color-background-primary);
|
|
18
|
+
--w-slider-track-height: 4px;
|
|
19
|
+
--w-slider-track-active-height: 6px;
|
|
20
|
+
--w-slider-thumb-background: var(--w-s-color-background-primary);
|
|
21
|
+
--w-slider-thumb-background-hover: var(--w-s-color-background-primary-hover);
|
|
22
|
+
--w-slider-thumb-size: 28px;
|
|
23
|
+
--w-slider-thumb-offset: calc(var(--w-slider-thumb-size) / 2);
|
|
24
|
+
--w-slider-marker-color: var(--w-s-color-border);
|
|
25
|
+
|
|
26
|
+
/* Math corner to calculate the fill of the slider and placement of markers. */
|
|
27
|
+
|
|
28
|
+
/* The --min value can be non-zero, f. ex. choosing a year from 1950 to 2025. Normalize the values so we start at 0 and run to max - min. */
|
|
29
|
+
--_value-range: calc(var(--max) - var(--min));
|
|
30
|
+
--_from-in-range: max(calc(var(--from) - var(--min)), 0);
|
|
31
|
+
|
|
32
|
+
/* limit to maximum value in range so typing a value larger than max doesn't explode layouts */
|
|
33
|
+
--_to-in-range: min(calc(var(--to) - var(--min)), var(--_value-range));
|
|
34
|
+
|
|
35
|
+
/* Position the starting point of the fill in the case of a non-zero --from value in a range slider.
|
|
36
|
+
* In other words, given a width of 100% how many percent should be left unfilled/blank
|
|
37
|
+
* at the beginning of the range slider (dashes in this ASCII-range-slider: |---O******O|) */
|
|
38
|
+
--_from-as-percent-of-max: calc(var(--_from-in-range) / var(--_value-range) * 100);
|
|
39
|
+
--_blank-values-before: var(--_from-as-percent-of-max);
|
|
40
|
+
|
|
41
|
+
/* Set the width of the fill as a percentage.
|
|
42
|
+
* In other words, given a width of 100% how many percent should be left unfilled/blank
|
|
43
|
+
* at the end of the slider (dashes in this ASCII-slider: |******O---|) */
|
|
44
|
+
--_to-as-percent-of-max: calc(var(--_to-in-range) / var(--_value-range) * 100);
|
|
45
|
+
--_filled-values: calc(var(--_to-as-percent-of-max) - var(--_blank-values-before));
|
|
46
|
+
|
|
47
|
+
/* Vertical position of range and markers */
|
|
48
|
+
--_range-top: calc(
|
|
49
|
+
var(--w-slider-thumb-size) / 2 + calc(var(--w-slider-track-active-height) - calc(var(--w-slider-track-height) / 2) + 1px)
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.w-slider__label {
|
|
54
|
+
grid-area: label;
|
|
55
|
+
font-size: var(--w-font-size-s);
|
|
56
|
+
line-height: var(--w-line-height-s);
|
|
57
|
+
font-weight: bold;
|
|
58
|
+
padding-bottom: 8px;
|
|
59
|
+
color: var(--w-s-color-text);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.w-slider__description {
|
|
63
|
+
grid-area: description;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.w-slider__active-range {
|
|
67
|
+
align-self: center;
|
|
68
|
+
background: var(--w-slider-track-background);
|
|
69
|
+
border-radius: 4px;
|
|
70
|
+
position: absolute;
|
|
71
|
+
top: var(--_range-top);
|
|
72
|
+
left: 0;
|
|
73
|
+
right: 0;
|
|
74
|
+
grid-area: slider;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.w-slider__markers {
|
|
78
|
+
--_marker-height: 7px;
|
|
79
|
+
--_marker-width: 1px;
|
|
80
|
+
|
|
81
|
+
align-self: center;
|
|
82
|
+
|
|
83
|
+
/* Creates a linear gradient with --_marker-width wide markers
|
|
84
|
+
followed by enough transparent that we can repeat the gradient
|
|
85
|
+
along the X axis and have markers visible where we want them. */
|
|
86
|
+
background: linear-gradient(to right, var(--w-slider-marker-color) var(--_marker-width), rgba(0, 0, 0, 0) 1px) repeat-x;
|
|
87
|
+
--_step-width-as-percent: calc(var(--markers) / var(--_value-range) * 100);
|
|
88
|
+
background-size: calc(var(--_step-width-as-percent) * 1% - 0.1%) var(--_marker-height);
|
|
89
|
+
|
|
90
|
+
background-position: bottom 0 left 8px right 8px;
|
|
91
|
+
position: absolute;
|
|
92
|
+
top: calc(var(--_range-top) + 2px);
|
|
93
|
+
left: 1px;
|
|
94
|
+
right: 1px;
|
|
95
|
+
grid-area: slider;
|
|
96
|
+
height: var(--_marker-height);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.w-slider__active-range::before {
|
|
100
|
+
background: var(--w-slider-track-active-background);
|
|
101
|
+
border-radius: 4px;
|
|
102
|
+
content: '';
|
|
103
|
+
display: block;
|
|
104
|
+
height: var(--w-slider-track-active-height);
|
|
105
|
+
|
|
106
|
+
margin-left: calc(var(--_blank-values-before) * 1%);
|
|
107
|
+
width: calc(var(--_filled-values) * 1%);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
slot::slotted(w-slider-thumb) {
|
|
111
|
+
position: static;
|
|
112
|
+
top: 0;
|
|
113
|
+
left: 0;
|
|
114
|
+
right: 0;
|
|
115
|
+
bottom: 0;
|
|
116
|
+
grid-area: slider;
|
|
117
|
+
}
|
|
118
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.hidden{display:none}.static{position:static}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}`;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { LitElement, PropertyValues } from 'lit';
|
|
2
2
|
export declare const ccinput: {
|
|
3
|
-
wrapper: string;
|
|
4
3
|
base: string;
|
|
5
4
|
default: string;
|
|
6
5
|
disabled: string;
|
|
@@ -50,6 +49,18 @@ declare class WarpTextField extends WarpTextField_base {
|
|
|
50
49
|
type: string;
|
|
51
50
|
value: string;
|
|
52
51
|
name: string;
|
|
52
|
+
/**
|
|
53
|
+
* Function to format value when the input field.
|
|
54
|
+
*
|
|
55
|
+
* Only active when the input field does not have focus,
|
|
56
|
+
* similar to the accessible input masking example from Filament Group
|
|
57
|
+
*
|
|
58
|
+
* https://css-tricks.com/input-masking/
|
|
59
|
+
* https://filamentgroup.github.io/politespace/demo/demo.html
|
|
60
|
+
*/
|
|
61
|
+
formatter: (value: string) => string;
|
|
62
|
+
/** @internal */
|
|
63
|
+
mask: HTMLDivElement;
|
|
53
64
|
/** @internal */
|
|
54
65
|
_hasPrefix: boolean;
|
|
55
66
|
/** @internal */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var K=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var l=(h,o,i,r)=>{for(var n=r>1?void 0:r?Q(o,i):o,g=h.length-1,w;g>=0;g--)(w=h[g])&&(n=(r?w(o,i,n):w(n))||n);return r&&n&&K(o,i,n),n};import{LitElement as D,html as j,nothing as re}from"lit";var Y=function(){for(var h=[],o=arguments.length;o--;)h[o]=arguments[o];return h.reduce(function(i,r){return i.concat(typeof r=="string"?r:Array.isArray(r)?Y.apply(void 0,r):typeof r=="object"&&r?Object.keys(r).map(function(n){return r[n]?n:""}):"")},[]).join(" ")};var a=function(h,o,i,r){if(i==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?h!==o||!r:!o.has(h))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?r:i==="a"?r.call(h):r?r.value:o.get(h)},b=function(h,o,i,r,n){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?h!==o||!n:!o.has(h))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?n.call(h,i):n?n.value=i:o.set(h,i),i};function R(h){var o,i,r,n,g,w,k,G,_,P,F,A,V,z,E,f,L,X,O;class J extends h{constructor(...e){var t,c,p;super(...e),o.add(this),this.internals=this.attachInternals(),i.set(this,!1),r.set(this,!1),n.set(this,!1),g.set(this,void 0),w.set(this,void 0),k.set(this,!0),_.set(this,""),P.set(this,()=>{b(this,n,!0,"f"),b(this,i,!0,"f"),a(this,o,"m",f).call(this)}),F.set(this,()=>{b(this,i,!1,"f"),a(this,o,"m",L).call(this,this.shouldFormValueUpdate()?a(this,_,"f"):""),!this.validity.valid&&a(this,n,"f")&&b(this,r,!0,"f");let m=a(this,o,"m",f).call(this);this.validationMessageCallback&&this.validationMessageCallback(m?this.internals.validationMessage:"")}),A.set(this,()=>{var m;a(this,k,"f")&&this.validationTarget&&(this.internals.setValidity(this.validity,this.validationMessage,this.validationTarget),b(this,k,!1,"f")),b(this,n,!0,"f"),b(this,r,!0,"f"),a(this,o,"m",f).call(this),(m=this===null||this===void 0?void 0:this.validationMessageCallback)===null||m===void 0||m.call(this,this.showError?this.internals.validationMessage:"")}),V.set(this,void 0),z.set(this,!1),E.set(this,Promise.resolve()),(t=this.addEventListener)===null||t===void 0||t.call(this,"focus",a(this,P,"f")),(c=this.addEventListener)===null||c===void 0||c.call(this,"blur",a(this,F,"f")),(p=this.addEventListener)===null||p===void 0||p.call(this,"invalid",a(this,A,"f")),this.setValue(null)}static get formAssociated(){return!0}static get validators(){return this.formControlValidators||[]}static get observedAttributes(){let e=this.validators.map(p=>p.attribute).flat(),t=super.observedAttributes||[];return[...new Set([...t,...e])]}static getValidator(e){return this.validators.find(t=>t.attribute===e)||null}static getValidators(e){return this.validators.filter(t=>{var c;if(t.attribute===e||!((c=t.attribute)===null||c===void 0)&&c.includes(e))return!0})}get form(){return this.internals.form}get showError(){return a(this,o,"m",f).call(this)}checkValidity(){return this.internals.checkValidity()}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}attributeChangedCallback(e,t,c){var p;(p=super.attributeChangedCallback)===null||p===void 0||p.call(this,e,t,c);let M=this.constructor.getValidators(e);M!=null&&M.length&&this.validationTarget&&this.setValue(a(this,_,"f"))}setValue(e){var t;b(this,r,!1,"f"),(t=this.validationMessageCallback)===null||t===void 0||t.call(this,""),b(this,_,e,"f");let p=this.shouldFormValueUpdate()?e:null;this.internals.setFormValue(p),a(this,o,"m",L).call(this,p),this.valueChangedCallback&&this.valueChangedCallback(p),a(this,o,"m",f).call(this)}shouldFormValueUpdate(){return!0}get validationComplete(){return new Promise(e=>e(a(this,E,"f")))}formResetCallback(){var e,t;b(this,n,!1,"f"),b(this,r,!1,"f"),a(this,o,"m",f).call(this),(e=this.resetFormControl)===null||e===void 0||e.call(this),(t=this.validationMessageCallback)===null||t===void 0||t.call(this,a(this,o,"m",f).call(this)?this.validationMessage:"")}}return i=new WeakMap,r=new WeakMap,n=new WeakMap,g=new WeakMap,w=new WeakMap,k=new WeakMap,_=new WeakMap,P=new WeakMap,F=new WeakMap,A=new WeakMap,V=new WeakMap,z=new WeakMap,E=new WeakMap,o=new WeakSet,G=function(){let e=this.getRootNode(),t=`${this.localName}[name="${this.getAttribute("name")}"]`;return e.querySelectorAll(t)},f=function(){if(this.hasAttribute("disabled"))return!1;let e=a(this,r,"f")||a(this,n,"f")&&!this.validity.valid&&!a(this,i,"f");return e&&this.internals.states?this.internals.states.add("--show-error"):this.internals.states&&this.internals.states.delete("--show-error"),e},L=function(e){let t=this.constructor,c={},p=t.validators,m=[],M=p.some(v=>v.isValid instanceof Promise);a(this,z,"f")||(b(this,E,new Promise(v=>{b(this,V,v,"f")}),"f"),b(this,z,!0,"f")),a(this,g,"f")&&(a(this,g,"f").abort(),b(this,w,a(this,g,"f"),"f"));let $=new AbortController;b(this,g,$,"f");let S,q=!1;p.length&&(p.forEach(v=>{let Z=v.key||"customError",y=v.isValid(this,e,$.signal);y instanceof Promise?(m.push(y),y.then(N=>{N!=null&&(c[Z]=!N,S=a(this,o,"m",O).call(this,v,e),a(this,o,"m",X).call(this,c,S))})):(c[Z]=!y,this.validity[Z]!==!y&&(q=!0),!y&&!S&&(S=a(this,o,"m",O).call(this,v,e)))}),Promise.allSettled(m).then(()=>{var v;$!=null&&$.signal.aborted||(b(this,z,!1,"f"),(v=a(this,V,"f"))===null||v===void 0||v.call(this))}),(q||!M)&&a(this,o,"m",X).call(this,c,S))},X=function(e,t){if(this.validationTarget)this.internals.setValidity(e,t,this.validationTarget),b(this,k,!1,"f");else{if(this.internals.setValidity(e,t),this.internals.validity.valid)return;b(this,k,!0,"f")}},O=function(e,t){if(this.validityCallback){let c=this.validityCallback(e.key||"customError");if(c)return c}return e.message instanceof Function?e.message(this,t):e.message},J}import{property as d,query as oe}from"lit/decorators.js";import{classMap as te}from"lit/directives/class-map.js";import{ifDefined as u}from"lit/directives/if-defined.js";import{css as B}from"lit";var H=B`
|
|
2
2
|
*,
|
|
3
3
|
:before,
|
|
4
4
|
:after {
|
|
@@ -271,7 +271,7 @@ var J=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var l=(h,o,i,r
|
|
|
271
271
|
svg {
|
|
272
272
|
pointer-events: none;
|
|
273
273
|
}
|
|
274
|
-
`,
|
|
274
|
+
`,ce=B`*, :before, :after {
|
|
275
275
|
--w-rotate: 0;
|
|
276
276
|
--w-rotate-x: 0;
|
|
277
277
|
--w-rotate-y: 0;
|
|
@@ -2437,34 +2437,83 @@ var J=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var l=(h,o,i,r
|
|
|
2437
2437
|
display: none
|
|
2438
2438
|
}
|
|
2439
2439
|
}
|
|
2440
|
-
`;import{css as
|
|
2440
|
+
`;import{css as W}from"lit";var T=W`
|
|
2441
|
+
.w-textfield {
|
|
2442
|
+
--_input-padding-top: 12px;
|
|
2443
|
+
--_input-padding-left: 8px;
|
|
2444
|
+
--_input-padding-right: 8px;
|
|
2445
|
+
position: relative;
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2448
|
+
.w-textfield--has-prefix {
|
|
2449
|
+
--_input-padding-left: 40px;
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
.w-textfield--has-suffix {
|
|
2453
|
+
--_input-padding-right: var(--w-prefix-width, 40px);
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
.w-textfield__input-wrapper {
|
|
2457
|
+
position: relative;
|
|
2458
|
+
overflow: hidden;
|
|
2459
|
+
}
|
|
2460
|
+
|
|
2461
|
+
.w-textfield__input-wrapper:focus-within .w-textfield__mask {
|
|
2462
|
+
display: none;
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
/* Could also consider giving the input mask a background color instead of this */
|
|
2466
|
+
.w-textfield__input-wrapper:has(.w-textfield__mask):not(:focus-within) input {
|
|
2467
|
+
color: transparent;
|
|
2468
|
+
}
|
|
2469
|
+
|
|
2470
|
+
.w-textfield__mask {
|
|
2471
|
+
display: block;
|
|
2472
|
+
border: 1px solid transparent;
|
|
2473
|
+
top: var(--_input-padding-top);
|
|
2474
|
+
left: var(--_input-padding-left);
|
|
2475
|
+
right: var(--_input-padding-right);
|
|
2476
|
+
position: absolute;
|
|
2477
|
+
pointer-events: none;
|
|
2478
|
+
white-space: nowrap;
|
|
2479
|
+
overflow: hidden;
|
|
2480
|
+
text-overflow: ellipsis;
|
|
2481
|
+
z-index: 1;
|
|
2482
|
+
}
|
|
2483
|
+
`;import{css as ee}from"lit";var U=ee`*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.focus\\:\\[--w-outline-offset\\:-2px\\]:focus{--w-outline-offset:-2px}.bg-transparent{background-color:#0000}.border-1{border-width:1px}.rounded-4{border-radius:4px}.caret-current{caret-color:currentColor}.block{display:block}.focusable:focus{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:focus-visible{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:not(:focus-visible){outline:none}.outline-\\[--w-s-color-border-negative\\]\\!{outline-color:var(--w-s-color-border-negative)!important}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-disabled-subtle{background-color:var(--w-s-color-background-disabled-subtle)}.s-text{color:var(--w-s-color-text)}.s-text-disabled{color:var(--w-s-color-text-disabled)}.s-text-negative{color:var(--w-s-color-text-negative)}.s-text-subtle{color:var(--w-s-color-text-subtle)}.placeholder\\:s-text-placeholder::placeholder{color:var(--w-s-color-text-placeholder)}.s-border{border-color:var(--w-s-color-border)}.s-border-disabled{border-color:var(--w-s-color-border-disabled)}.s-border-negative{border-color:var(--w-s-color-border-negative)}.hover\\:s-border-hover:hover{border-color:var(--w-s-color-border-hover)}.hover\\:s-border-negative-hover:hover{border-color:var(--w-s-color-border-negative-hover)}.active\\:s-border-selected:active{border-color:var(--w-s-color-border-selected)}.w-full{width:100%}.min-h-\\[42\\]{min-height:4.2rem}.mb-0{margin-bottom:0}.mt-4{margin-top:.4rem}.px-8{padding-left:.8rem;padding-right:.8rem}.py-12{padding-top:1.2rem;padding-bottom:1.2rem}.pb-4{padding-bottom:.4rem}.pl-0{padding-left:0}.pl-8{padding-left:.8rem}.pr-40{padding-right:4rem}.pl-\\[var\\(--w-prefix-width\\,_40px\\)\\]{padding-left:var(--w-prefix-width,40px)}.cursor-pointer{cursor:pointer}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:grayscale}.font-bold{font-weight:700}.font-normal{font-weight:400}.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-m{font-size:var(--w-font-size-m);line-height:var(--w-line-height-m)}.text-s{font-size:var(--w-font-size-s);line-height:var(--w-line-height-s)}.text-xs{font-size:var(--w-font-size-xs);line-height:var(--w-line-height-xs)}.leading-m{line-height:var(--w-line-height-m)}@media (min-width:480px){.sm\\:min-h-\\[45\\]{min-height:4.5rem}}`;var x={base:"block text-m leading-m mb-0 px-8 py-12 rounded-4 w-full focusable focus:[--w-outline-offset:-2px] caret-current",default:"border-1 s-text s-bg s-border hover:s-border-hover active:s-border-selected",disabled:"border-1 s-text-disabled s-bg-disabled-subtle s-border-disabled pointer-events-none",invalid:"border-1 s-text-negative s-bg s-border-negative hover:s-border-negative-hover outline-[--w-s-color-border-negative]!",readOnly:"pl-0 bg-transparent pointer-events-none",placeholder:"placeholder:s-text-placeholder",suffix:"pr-40",prefix:"pl-[var(--w-prefix-width,_40px)]",textArea:"min-h-[42] sm:min-h-[45]"},ae={base:"antialiased block relative text-s font-bold pb-4 cursor-pointer s-text",optional:"pl-8 font-normal text-s s-text-subtle"},I={base:"text-xs mt-4 block",color:"s-text-subtle",colorInvalid:"s-text-negative"},s=class extends R(D){constructor(){super(...arguments);this.type="text";this._hasPrefix=!1;this._hasSuffix=!1}updated(i){i.has("value")&&this.setValue(this.value),this.formatter&&this.value&&(this.mask.innerText=this.formatter(this.value))}get _inputstyles(){return Y([x.base,this._hasSuffix&&x.suffix,this._hasPrefix&&x.prefix,!this.invalid&&!this.disabled&&!this.readOnly&&x.default,this.invalid&&!this.disabled&&!this.readOnly&&x.invalid,!this.invalid&&this.disabled&&!this.readOnly&&x.disabled,!this.invalid&&!this.disabled&&this.readOnly&&x.readOnly])}get _helptextstyles(){return Y([I.base,this.invalid?I.colorInvalid:I.color])}get _label(){if(this.label)return j`<label for="${this._id}" class=${ae.base}>${this.label}</label>`}get _helpId(){if(this.helpText)return`${this._id}__hint`}get _id(){return"textfield"}get _error(){if(this.invalid&&this._helpId)return this._helpId}handler(i){let{name:r,value:n}=i.currentTarget;this.value=n;let g=new CustomEvent(i.type,{detail:{name:r,value:n,target:i.target}});this.dispatchEvent(g)}prefixSlotChange(){this.renderRoot.querySelector("slot[name=prefix]").assignedElements().length&&(this._hasPrefix=!0)}suffixSlotChange(){this.renderRoot.querySelector("slot[name=suffix]").assignedElements().length&&(this._hasSuffix=!0)}render(){return j`
|
|
2441
2484
|
${this._label}
|
|
2442
|
-
<div
|
|
2485
|
+
<div
|
|
2486
|
+
class="${te({"w-textfield":!0,"w-textfield--has-prefix":this._hasPrefix,"w-textfield--has-suffix":this._hasSuffix})}">
|
|
2443
2487
|
<slot @slotchange="${this.prefixSlotChange}" name="prefix"></slot>
|
|
2444
|
-
<
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2488
|
+
<div class="w-textfield__input-wrapper">
|
|
2489
|
+
${this.formatter?j`<div class="w-textfield__mask"></div>`:re}
|
|
2490
|
+
<input
|
|
2491
|
+
class="${this._inputstyles}"
|
|
2492
|
+
type="${this.type}"
|
|
2493
|
+
min="${u(this.min)}"
|
|
2494
|
+
max="${u(this.max)}"
|
|
2495
|
+
size="${u(this.size)}"
|
|
2496
|
+
minlength="${u(this.minLength)}"
|
|
2497
|
+
maxlength="${u(this.maxLength)}"
|
|
2498
|
+
name="${u(this.name)}"
|
|
2499
|
+
pattern="${u(this.pattern)}"
|
|
2500
|
+
placeholder="${u(this.placeholder)}"
|
|
2501
|
+
.value="${this.value||""}"
|
|
2502
|
+
aria-describedby="${u(this._helpId||(this.ariaDescription?"aria-description":void 0))}"
|
|
2503
|
+
aria-errormessage="${u(this._error)}"
|
|
2504
|
+
aria-invalid="${u(this.invalid)}"
|
|
2505
|
+
id="${this._id}"
|
|
2506
|
+
?disabled="${this.disabled}"
|
|
2507
|
+
?readonly="${this.readOnly}"
|
|
2508
|
+
?required="${this.required}"
|
|
2509
|
+
@blur="${this.handler}"
|
|
2510
|
+
@change="${this.handler}"
|
|
2511
|
+
@input="${this.handler}"
|
|
2512
|
+
@focus="${this.handler}" />
|
|
2513
|
+
</div>
|
|
2466
2514
|
<slot @slotchange="${this.suffixSlotChange}" name="suffix"></slot>
|
|
2467
2515
|
</div>
|
|
2468
|
-
|
|
2469
|
-
|
|
2516
|
+
<span class="sr-only" id="aria-description">${this.ariaDescription}</span>
|
|
2517
|
+
${this.helpText&&j`<div class="${this._helptextstyles}" id="${this._helpId}">${this.helpText}</div>`}
|
|
2518
|
+
`}};s.shadowRootOptions={...D.shadowRootOptions,delegatesFocus:!0},s.styles=[H,U,T],l([d({type:Boolean,reflect:!0})],s.prototype,"disabled",2),l([d({type:Boolean,reflect:!0})],s.prototype,"invalid",2),l([d({type:String,reflect:!0})],s.prototype,"id",2),l([d({type:String,reflect:!0})],s.prototype,"label",2),l([d({type:String,reflect:!0,attribute:"help-text"})],s.prototype,"helpText",2),l([d({type:String,reflect:!0})],s.prototype,"size",2),l([d({type:Number,reflect:!0})],s.prototype,"max",2),l([d({type:Number,reflect:!0})],s.prototype,"min",2),l([d({type:Number,reflect:!0,attribute:"min-length"})],s.prototype,"minLength",2),l([d({type:Number,reflect:!0,attribute:"max-length"})],s.prototype,"maxLength",2),l([d({type:String,reflect:!0})],s.prototype,"pattern",2),l([d({type:String,reflect:!0})],s.prototype,"placeholder",2),l([d({type:Boolean,reflect:!0,attribute:"read-only"})],s.prototype,"readOnly",2),l([d({type:Boolean,reflect:!0})],s.prototype,"required",2),l([d({type:String,reflect:!0})],s.prototype,"type",2),l([d({type:String,reflect:!0})],s.prototype,"value",2),l([d({type:String,reflect:!0})],s.prototype,"name",2),l([d({attribute:!1})],s.prototype,"formatter",2),l([oe(".w-textfield__mask")],s.prototype,"mask",2),l([d({type:Boolean})],s.prototype,"_hasPrefix",2),l([d({type:Boolean})],s.prototype,"_hasSuffix",2);customElements.get("w-textfield")||customElements.define("w-textfield",s);export{s as WarpTextField,I as ccHelpText,ae as ccLabel,x as ccinput};
|
|
2470
2519
|
//# sourceMappingURL=index.js.map
|