@govbr-ds/webcomponents 2.0.0-next.12 → 2.0.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/cjs/br-avatar.cjs.entry.js +6 -6
- package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/br-button_2.cjs.entry.js +20 -21
- package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/br-checkbox.cjs.entry.js +9 -8
- package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/br-dropdown.cjs.entry.js +142 -0
- package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -0
- package/dist/cjs/br-input.cjs.entry.js +13 -12
- package/dist/cjs/br-input.cjs.entry.js.map +1 -1
- package/dist/cjs/br-item.cjs.entry.js +33 -22
- package/dist/cjs/br-item.cjs.entry.js.map +1 -1
- package/dist/cjs/br-list.cjs.entry.js +126 -0
- package/dist/cjs/br-list.cjs.entry.js.map +1 -0
- package/dist/cjs/br-loading.cjs.entry.js +3 -3
- package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
- package/dist/cjs/br-message.cjs.entry.js +8 -7
- package/dist/cjs/br-message.cjs.entry.js.map +1 -1
- package/dist/cjs/br-radio.cjs.entry.js +27 -29
- package/dist/cjs/br-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/br-switch.cjs.entry.js +9 -8
- package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/{index-ecdd4399.js → index-fb4e9eaf.js} +37 -3
- package/dist/cjs/index-fb4e9eaf.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/webcomponents.cjs.js +2 -2
- package/dist/cjs/webcomponents.cjs.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/avatar/avatar.css +92 -0
- package/dist/collection/components/avatar/avatar.js +4 -4
- package/dist/collection/components/avatar/avatar.js.map +1 -1
- package/dist/collection/components/button/button.css +90 -0
- package/dist/collection/components/button/button.js +15 -34
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +83 -0
- package/dist/collection/components/checkbox/checkbox.js +9 -8
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.css +418 -0
- package/dist/collection/components/dropdown/dropdown.js +426 -0
- package/dist/collection/components/dropdown/dropdown.js.map +1 -0
- package/dist/collection/components/icon/icon.css +83 -0
- package/dist/collection/components/icon/icon.js +4 -4
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/input/input.css +113 -0
- package/dist/collection/components/input/input.js +11 -28
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/item/item.css +88 -0
- package/dist/collection/components/item/item.js +58 -24
- package/dist/collection/components/item/item.js.map +1 -1
- package/dist/collection/components/list/list.css +515 -0
- package/dist/collection/components/list/list.js +384 -0
- package/dist/collection/components/list/list.js.map +1 -0
- package/dist/collection/components/loading/loading.css +90 -0
- package/dist/collection/components/loading/loading.js +1 -1
- package/dist/collection/components/loading/loading.js.map +1 -1
- package/dist/collection/components/message/message.css +83 -0
- package/dist/collection/components/message/message.js +6 -5
- package/dist/collection/components/message/message.js.map +1 -1
- package/dist/collection/components/radio/radio.css +83 -0
- package/dist/collection/components/radio/radio.js +26 -74
- package/dist/collection/components/radio/radio.js.map +1 -1
- package/dist/collection/components/switch/switch.css +83 -0
- package/dist/collection/components/switch/switch.js +9 -8
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/pages/dropdown/dropdown.js +18 -0
- package/dist/collection/pages/list/list.js +19 -0
- package/dist/collection/scripts/menu.js +43 -33
- package/dist/components/br-avatar.js +7 -7
- package/dist/components/br-avatar.js.map +1 -1
- package/dist/components/br-button.js +1 -1
- package/dist/components/br-checkbox.js +11 -10
- package/dist/components/br-checkbox.js.map +1 -1
- package/dist/components/br-dropdown.d.ts +11 -0
- package/dist/components/br-dropdown.js +156 -0
- package/dist/components/br-dropdown.js.map +1 -0
- package/dist/components/br-icon.js +1 -1
- package/dist/components/br-input.js +15 -15
- package/dist/components/br-input.js.map +1 -1
- package/dist/components/br-item.js +40 -26
- package/dist/components/br-item.js.map +1 -1
- package/dist/components/br-list.d.ts +11 -0
- package/dist/components/br-list.js +138 -0
- package/dist/components/br-list.js.map +1 -0
- package/dist/components/br-loading.js +3 -3
- package/dist/components/br-loading.js.map +1 -1
- package/dist/components/br-message.js +10 -9
- package/dist/components/br-message.js.map +1 -1
- package/dist/components/br-radio.js +29 -33
- package/dist/components/br-radio.js.map +1 -1
- package/dist/components/br-switch.js +11 -10
- package/dist/components/br-switch.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +3 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/p-5769e796.js +138 -0
- package/dist/components/p-5769e796.js.map +1 -0
- package/dist/components/{p-4c4ab942.js → p-698e7a18.js} +27 -3
- package/dist/components/p-698e7a18.js.map +1 -0
- package/dist/components/{p-a32b2d34.js → p-87afe26f.js} +6 -6
- package/dist/components/{p-a32b2d34.js.map → p-87afe26f.js.map} +1 -1
- package/dist/esm/br-avatar.entry.js +6 -6
- package/dist/esm/br-avatar.entry.js.map +1 -1
- package/dist/esm/br-button_2.entry.js +20 -21
- package/dist/esm/br-button_2.entry.js.map +1 -1
- package/dist/esm/br-checkbox.entry.js +9 -8
- package/dist/esm/br-checkbox.entry.js.map +1 -1
- package/dist/esm/br-dropdown.entry.js +138 -0
- package/dist/esm/br-dropdown.entry.js.map +1 -0
- package/dist/esm/br-input.entry.js +13 -12
- package/dist/esm/br-input.entry.js.map +1 -1
- package/dist/esm/br-item.entry.js +33 -22
- package/dist/esm/br-item.entry.js.map +1 -1
- package/dist/esm/br-list.entry.js +122 -0
- package/dist/esm/br-list.entry.js.map +1 -0
- package/dist/esm/br-loading.entry.js +3 -3
- package/dist/esm/br-loading.entry.js.map +1 -1
- package/dist/esm/br-message.entry.js +8 -7
- package/dist/esm/br-message.entry.js.map +1 -1
- package/dist/esm/br-radio.entry.js +27 -29
- package/dist/esm/br-radio.entry.js.map +1 -1
- package/dist/esm/br-switch.entry.js +9 -8
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/{index-5866d5ff.js → index-c7037515.js} +37 -3
- package/dist/esm/index-c7037515.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/webcomponents.js +3 -3
- package/dist/esm/webcomponents.js.map +1 -1
- package/dist/types/components/avatar/avatar.d.ts +3 -3
- package/dist/types/components/button/button.d.ts +2 -6
- package/dist/types/components/checkbox/checkbox.d.ts +2 -2
- package/dist/types/components/dropdown/dropdown.d.ts +154 -0
- package/dist/types/components/icon/icon.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +9 -13
- package/dist/types/components/item/item.d.ts +16 -5
- package/dist/types/components/list/list.d.ts +126 -0
- package/dist/types/components/loading/loading.d.ts +1 -1
- package/dist/types/components/message/message.d.ts +2 -2
- package/dist/types/components/radio/radio.d.ts +5 -4
- package/dist/types/components/switch/switch.d.ts +3 -3
- package/dist/types/components.d.ts +279 -26
- package/dist/webcomponents/p-0f6e2ddc.entry.js +2 -0
- package/dist/webcomponents/p-0f6e2ddc.entry.js.map +1 -0
- package/dist/webcomponents/p-14f1c8e6.entry.js +2 -0
- package/dist/webcomponents/p-14f1c8e6.entry.js.map +1 -0
- package/dist/webcomponents/p-198082b6.entry.js +2 -0
- package/dist/webcomponents/p-198082b6.entry.js.map +1 -0
- package/dist/webcomponents/{p-6315c80a.js → p-6849daee.js} +3 -3
- package/dist/webcomponents/p-6849daee.js.map +1 -0
- package/dist/webcomponents/p-867bba23.entry.js +2 -0
- package/dist/webcomponents/p-867bba23.entry.js.map +1 -0
- package/dist/webcomponents/p-8efc22a3.entry.js +2 -0
- package/dist/webcomponents/p-8efc22a3.entry.js.map +1 -0
- package/dist/webcomponents/p-9dbe247e.entry.js +2 -0
- package/dist/webcomponents/p-9dbe247e.entry.js.map +1 -0
- package/dist/webcomponents/p-a5a079d8.entry.js +2 -0
- package/dist/webcomponents/p-a5a079d8.entry.js.map +1 -0
- package/dist/webcomponents/p-ac16ee58.entry.js +2 -0
- package/dist/webcomponents/p-ac16ee58.entry.js.map +1 -0
- package/dist/webcomponents/p-c36696c6.entry.js +2 -0
- package/dist/webcomponents/p-c36696c6.entry.js.map +1 -0
- package/dist/webcomponents/p-dde91d20.entry.js +13 -0
- package/dist/webcomponents/p-dde91d20.entry.js.map +1 -0
- package/dist/webcomponents/p-f01f1e6b.entry.js +2 -0
- package/dist/webcomponents/p-f01f1e6b.entry.js.map +1 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/dist/webcomponents/webcomponents.esm.js.map +1 -1
- package/hydrate/index.js +451 -128
- package/hydrate/index.mjs +451 -128
- package/package.json +10 -6
- package/vscode-data.json +53 -12
- package/dist/cjs/index-ecdd4399.js.map +0 -1
- package/dist/components/p-1b05c8e6.js +0 -140
- package/dist/components/p-1b05c8e6.js.map +0 -1
- package/dist/components/p-4c4ab942.js.map +0 -1
- package/dist/esm/index-5866d5ff.js.map +0 -1
- package/dist/webcomponents/p-0136c397.entry.js +0 -2
- package/dist/webcomponents/p-0136c397.entry.js.map +0 -1
- package/dist/webcomponents/p-273a5d72.entry.js +0 -2
- package/dist/webcomponents/p-273a5d72.entry.js.map +0 -1
- package/dist/webcomponents/p-3822c947.entry.js +0 -2
- package/dist/webcomponents/p-3822c947.entry.js.map +0 -1
- package/dist/webcomponents/p-39d81381.entry.js +0 -2
- package/dist/webcomponents/p-39d81381.entry.js.map +0 -1
- package/dist/webcomponents/p-462fd7e0.entry.js +0 -2
- package/dist/webcomponents/p-462fd7e0.entry.js.map +0 -1
- package/dist/webcomponents/p-6315c80a.js.map +0 -1
- package/dist/webcomponents/p-a61a99a5.entry.js +0 -2
- package/dist/webcomponents/p-a61a99a5.entry.js.map +0 -1
- package/dist/webcomponents/p-d3503211.entry.js +0 -13
- package/dist/webcomponents/p-d3503211.entry.js.map +0 -1
- package/dist/webcomponents/p-dd83c07e.entry.js +0 -2
- package/dist/webcomponents/p-dd83c07e.entry.js.map +0 -1
- package/dist/webcomponents/p-f49c9f5d.entry.js +0 -2
- package/dist/webcomponents/p-f49c9f5d.entry.js.map +0 -1
|
@@ -115,6 +115,30 @@ progress {
|
|
|
115
115
|
display: none;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
.d-flex {
|
|
119
|
+
display: flex !important;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.align-items-center {
|
|
123
|
+
align-items: center !important;
|
|
124
|
+
}
|
|
125
|
+
.col,
|
|
126
|
+
[class*=col-] {
|
|
127
|
+
padding-left: calc(var(--grid-gutter) * 0.5);
|
|
128
|
+
padding-right: calc(var(--grid-gutter) * 0.5);
|
|
129
|
+
width: 100%;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.col {
|
|
133
|
+
flex: 1 0 0%;
|
|
134
|
+
min-width: 8.3333333333%;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.col-auto {
|
|
138
|
+
flex: 0 0 auto;
|
|
139
|
+
width: auto;
|
|
140
|
+
}
|
|
141
|
+
|
|
118
142
|
.row {
|
|
119
143
|
--grid-gutter: var(--grid-portrait-gutter);
|
|
120
144
|
display: flex;
|
|
@@ -155,6 +179,16 @@ progress {
|
|
|
155
179
|
.mb-3 {
|
|
156
180
|
margin-bottom: var(--spacing-scale-2x) !important;
|
|
157
181
|
}
|
|
182
|
+
|
|
183
|
+
.py-3 {
|
|
184
|
+
padding-bottom: var(--spacing-scale-2x) !important;
|
|
185
|
+
padding-top: var(--spacing-scale-2x) !important;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.py-4 {
|
|
189
|
+
padding-bottom: var(--spacing-scale-3x) !important;
|
|
190
|
+
padding-top: var(--spacing-scale-3x) !important;
|
|
191
|
+
}
|
|
158
192
|
body {
|
|
159
193
|
--bg-color: var(--background);
|
|
160
194
|
--bg-color-rgb: var(--background-rgb);
|
|
@@ -222,6 +256,11 @@ img {
|
|
|
222
256
|
max-width: 100%;
|
|
223
257
|
vertical-align: middle;
|
|
224
258
|
}
|
|
259
|
+
ul {
|
|
260
|
+
margin-bottom: var(--spacing-scale-2x);
|
|
261
|
+
margin-top: 0;
|
|
262
|
+
padding: 0 0 0 var(--spacing-scale-5x);
|
|
263
|
+
}
|
|
225
264
|
|
|
226
265
|
label,
|
|
227
266
|
.label {
|
|
@@ -315,6 +354,50 @@ code,
|
|
|
315
354
|
pointer-events: none;
|
|
316
355
|
}
|
|
317
356
|
|
|
357
|
+
[data-toggle=dropdown] + * {
|
|
358
|
+
position: absolute;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.dropdown {
|
|
362
|
+
position: relative;
|
|
363
|
+
}
|
|
364
|
+
.dropdown [data-toggle=dropdown] + * {
|
|
365
|
+
box-shadow: var(--surface-shadow-sm);
|
|
366
|
+
left: 0;
|
|
367
|
+
position: absolute;
|
|
368
|
+
top: 100%;
|
|
369
|
+
}
|
|
370
|
+
.dropdown .br-item {
|
|
371
|
+
--color: var(--color-light);
|
|
372
|
+
--color-rgb: var(--color-light-rgb);
|
|
373
|
+
--text-color: var(--color-light);
|
|
374
|
+
--interactive: var(--interactive-light);
|
|
375
|
+
--interactive-rgb: var(--color-rgb);
|
|
376
|
+
--visited: var(--visited-light);
|
|
377
|
+
--hover: var(--hover-light);
|
|
378
|
+
--pressed: var(--pressed-light);
|
|
379
|
+
--focus-color: var(--focus-color-light);
|
|
380
|
+
--focus: var(--focus-color-light);
|
|
381
|
+
--item-padding-y: var(--spacing-scale-2x);
|
|
382
|
+
background-color: var(--background-light);
|
|
383
|
+
color: var(--color);
|
|
384
|
+
}
|
|
385
|
+
.dropdown .br-item:not(:last-child) {
|
|
386
|
+
border-bottom: 1px solid var(--border-color);
|
|
387
|
+
}
|
|
388
|
+
.dropdown .br-item.selected {
|
|
389
|
+
--color: var(--color-dark);
|
|
390
|
+
--color-rgb: var(--color-dark-rgb);
|
|
391
|
+
--text-color: var(--color-dark);
|
|
392
|
+
--interactive: var(--interactive-dark);
|
|
393
|
+
--interactive-rgb: var(--interactive-dark-rgb);
|
|
394
|
+
--visited: var(--visited-dark);
|
|
395
|
+
--hover: var(--hover-dark);
|
|
396
|
+
--pressed: var(--pressed-dark);
|
|
397
|
+
--focus-color: var(--focus-color-dark);
|
|
398
|
+
--focus: var(--focus-color-dark);
|
|
399
|
+
}
|
|
400
|
+
|
|
318
401
|
.br-input {
|
|
319
402
|
--input-button-margin: var(--spacing-scale-half);
|
|
320
403
|
--input-padding: 0 var(--spacing-scale-2x);
|
|
@@ -442,6 +525,36 @@ code,
|
|
|
442
525
|
.br-input.input-highlight .input-icon + input {
|
|
443
526
|
padding-left: var(--spacing-scale-7x);
|
|
444
527
|
}
|
|
528
|
+
.br-input .br-list {
|
|
529
|
+
box-shadow: var(--surface-shadow-md);
|
|
530
|
+
max-height: 530px;
|
|
531
|
+
overflow: auto;
|
|
532
|
+
position: absolute;
|
|
533
|
+
width: 100%;
|
|
534
|
+
z-index: var(--z-index-layer-2);
|
|
535
|
+
}
|
|
536
|
+
.br-input .br-list::-webkit-scrollbar {
|
|
537
|
+
height: var(--spacing-scale-base);
|
|
538
|
+
width: var(--spacing-scale-base);
|
|
539
|
+
}
|
|
540
|
+
.br-input .br-list::-webkit-scrollbar-track {
|
|
541
|
+
background: var(--gray-10);
|
|
542
|
+
}
|
|
543
|
+
.br-input .br-list::-webkit-scrollbar-thumb {
|
|
544
|
+
background: var(--gray-30);
|
|
545
|
+
}
|
|
546
|
+
.br-input .br-list:hover::-webkit-scrollbar-thumb {
|
|
547
|
+
background: var(--gray-40);
|
|
548
|
+
}
|
|
549
|
+
.br-input .br-list .br-item {
|
|
550
|
+
--item-padding-y: var(--spacing-scale-2x);
|
|
551
|
+
}
|
|
552
|
+
.br-input .br-list .br-item:not(:disabled):hover {
|
|
553
|
+
background-image: linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)));
|
|
554
|
+
}
|
|
555
|
+
.br-input .br-list .br-item:not(:first-child) {
|
|
556
|
+
border-top: var(--surface-width-sm) solid var(--border-color);
|
|
557
|
+
}
|
|
445
558
|
.br-input.success input {
|
|
446
559
|
border-color: var(--success);
|
|
447
560
|
border-width: 2px;
|
|
@@ -12,8 +12,13 @@ import { inheritAriaAttributes } from "../../utils/inherited-attributes";
|
|
|
12
12
|
export class Input {
|
|
13
13
|
constructor() {
|
|
14
14
|
this.inheritedAttributes = {};
|
|
15
|
+
this.handleInput = (event) => {
|
|
16
|
+
this.value = event.target.value;
|
|
17
|
+
this.valueChange.emit(this.value);
|
|
18
|
+
};
|
|
15
19
|
this.renderLabel = () => {
|
|
16
|
-
|
|
20
|
+
var _a;
|
|
21
|
+
if (((_a = this.label) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
17
22
|
if (this.isInline) {
|
|
18
23
|
return (h("div", { class: "input-label" }, h("label", { class: "text-nowrap", htmlFor: this.defaultID }, this.label)));
|
|
19
24
|
}
|
|
@@ -28,10 +33,11 @@ export class Input {
|
|
|
28
33
|
this.showIconTextPassword = input.type === 'password';
|
|
29
34
|
};
|
|
30
35
|
this.renderInput = () => {
|
|
31
|
-
return (h("input", Object.assign({ class: this.isHighlight ? 'input-highlight' : null, id: this.defaultID, autocomplete: this.autocomplete,
|
|
36
|
+
return (h("input", Object.assign({ class: this.isHighlight ? 'input-highlight' : null, id: this.defaultID, autocomplete: this.autocomplete, disabled: this.disabled, onInput: this.handleInput, placeholder: this.placeholder, readonly: this.readonly, required: this.required, title: this.el.title, type: this.type, value: this.value }, this.inheritedAttributes)));
|
|
32
37
|
};
|
|
33
38
|
this.renderHelpText = () => {
|
|
34
|
-
|
|
39
|
+
var _a;
|
|
40
|
+
return ((_a = this.helpText) === null || _a === void 0 ? void 0 : _a.length) > 0 ? h("p", null, this.helpText) : h("slot", { name: "help-text" });
|
|
35
41
|
};
|
|
36
42
|
this.renderIconPassword = () => {
|
|
37
43
|
const showPassword = !this.showIconTextPassword;
|
|
@@ -40,7 +46,6 @@ export class Input {
|
|
|
40
46
|
this.defaultID = `br-input-${uuidv4()}`;
|
|
41
47
|
this.type = 'text';
|
|
42
48
|
this.autocomplete = undefined;
|
|
43
|
-
this.autofocus = false;
|
|
44
49
|
this.density = 'medium';
|
|
45
50
|
this.disabled = false;
|
|
46
51
|
this.isInline = false;
|
|
@@ -117,12 +122,8 @@ export class Input {
|
|
|
117
122
|
warning: this.warning,
|
|
118
123
|
};
|
|
119
124
|
}
|
|
120
|
-
handleInput(event) {
|
|
121
|
-
this.value = event.target.value;
|
|
122
|
-
this.valueChange.emit(this.value);
|
|
123
|
-
}
|
|
124
125
|
hasSlotContent(slotName) {
|
|
125
|
-
return
|
|
126
|
+
return this.el.querySelector(`[slot="${slotName}"]`) !== null;
|
|
126
127
|
}
|
|
127
128
|
renderIconSlot() {
|
|
128
129
|
if (this.hasSlotContent('icon')) {
|
|
@@ -139,7 +140,7 @@ export class Input {
|
|
|
139
140
|
return null;
|
|
140
141
|
}
|
|
141
142
|
render() {
|
|
142
|
-
return (h(Host, { key: '
|
|
143
|
+
return (h(Host, { key: '04d44896164c990470d07dde9bd531afa826dfe2' }, h("div", { key: '9605db5f9260861938915b37dda216b5babf2ea1', class: this.getInputCssClassMap() }, this.renderLabel(), this.hasIconSlot ? (h("div", { class: "input-group" }, this.renderIconSlot(), this.renderInput())) : (this.renderInput()), this.renderButton(), this.renderHelpText())));
|
|
143
144
|
}
|
|
144
145
|
static get is() { return "br-input"; }
|
|
145
146
|
static get encapsulation() { return "shadow"; }
|
|
@@ -209,24 +210,6 @@ export class Input {
|
|
|
209
210
|
"attribute": "autocomplete",
|
|
210
211
|
"reflect": true
|
|
211
212
|
},
|
|
212
|
-
"autofocus": {
|
|
213
|
-
"type": "boolean",
|
|
214
|
-
"mutable": false,
|
|
215
|
-
"complexType": {
|
|
216
|
-
"original": "boolean",
|
|
217
|
-
"resolved": "boolean",
|
|
218
|
-
"references": {}
|
|
219
|
-
},
|
|
220
|
-
"required": false,
|
|
221
|
-
"optional": false,
|
|
222
|
-
"docs": {
|
|
223
|
-
"tags": [],
|
|
224
|
-
"text": "Se definido como verdadeiro, o input receber\u00E1 foco automaticamente ao ser renderizado."
|
|
225
|
-
},
|
|
226
|
-
"attribute": "autofocus",
|
|
227
|
-
"reflect": true,
|
|
228
|
-
"defaultValue": "false"
|
|
229
|
-
},
|
|
230
213
|
"density": {
|
|
231
214
|
"type": "string",
|
|
232
215
|
"mutable": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core'\nimport { v4 as uuidv4 } from 'uuid'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n *\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/input?tab=designer).\n *\n * @slot action - Botão à direita do input.\n * @slot icon - Ícone à esquerda do input.\n * @slot help-text - Personalização do texto de ajuda.\n */\n@Component({\n tag: 'br-input',\n styleUrl: 'input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Input {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único do campo de entrada.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) defaultID: string = `br-input-${uuidv4()}`\n\n /**\n * Especifica o tipo de entrada do campo. Pode ser um dos seguintes:\n * - 'color': Seletor de cor\n * - 'email': Campo para e-mail\n * - 'hidden': Campo oculto\n * - 'password': Campo para senha\n * - 'range': Controle deslizante\n * - 'search': Campo de pesquisa\n * - 'number': Campo para números\n * - 'tel': Campo para números de telefone\n * - 'text': Campo de texto padrão\n * - 'url': Campo para URLs\n */\n @Prop({ reflect: true }) type:\n | 'color'\n | 'email'\n | 'hidden'\n | 'password'\n | 'range'\n | 'search'\n | 'number'\n | 'tel'\n | 'text'\n | 'url' = 'text'\n\n /**\n * Controla o comportamento de preenchimento automático do navegador para o input.\n */\n @Prop({ reflect: true }) autocomplete: 'on' | 'off'\n\n /**\n * Se definido como verdadeiro, o input receberá foco automaticamente ao ser renderizado.\n */\n @Prop({ reflect: true }) autofocus: boolean = false\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o input, tornando-o não interativo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Se verdadeiro, o input terá destaque visual.\n */\n @Prop({ reflect: true }) isHighlight: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de validação bem-sucedido.\n */\n @Prop({ reflect: true }) success: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de validação com erro.\n */\n @Prop({ reflect: true }) danger: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado informativo.\n */\n @Prop({ reflect: true }) info: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de alerta.\n */\n @Prop({ reflect: true }) warning: boolean = false\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Nome do input, utilizado para identificação em formulários.\n */\n @Prop({ reflect: true }) name: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) placeholder: string\n\n /**\n * Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.\n */\n @Prop({ reflect: true }) readonly: boolean = false\n\n /**\n * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.\n */\n @Prop({ reflect: true }) required: boolean = false\n\n /**\n * Valor inicial exibido no input.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ reflect: true, mutable: true }) value: string\n\n /**\n * Texto adicional que fornece ajuda ou informações sobre o input.\n */\n @Prop({ reflect: true }) helpText: string\n\n @State() showIconTextPassword: boolean = false\n\n @State() hasIconSlot: boolean = false\n\n @State() hasActionSlot: boolean = false\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brDidConnect: EventEmitter<void>\n connectedCallback() {\n this.brDidConnect.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.hasIconSlot = this.hasSlotContent('icon')\n this.hasActionSlot = this.hasSlotContent('action')\n this.brWillLoad.emit()\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n /**\n * Emite um evento quando o componente é associado ou removido de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.\n *\n * @param form - Dados do formulário associado.\n */\n @Event() brFormAssociatedCallback: EventEmitter<FormData>\n formAssociatedCallback(form: FormData) {\n this.brFormAssociatedCallback.emit(form)\n }\n\n /**\n * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.\n *\n * @param disabled - Novo estado `disabled` do componente dentro do formulário.\n */\n @Event() brFormDisabledCallback: EventEmitter<boolean>\n formDisabledCallback(disabled: boolean) {\n this.brFormDisabledCallback.emit(disabled)\n }\n\n /**\n * Emite um evento quando um `<form>` é resetado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.\n */\n @Event() brFormResetCallback: EventEmitter<void>\n formResetCallback() {\n this.brFormResetCallback.emit()\n }\n\n /**\n * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.\n *\n * @param state - Estado restaurado do formulário.\n * @param _mode - Modo de preenchimento automático do navegador.\n */\n @Event() brFormStateRestoreCallback: EventEmitter<[state: string, _mode: string]>\n formStateRestoreCallback(state: string, _mode: string) {\n this.brFormStateRestoreCallback.emit([state, _mode])\n }\n\n private getInputCssClassMap(): CssClassMap {\n return {\n 'br-input': true,\n 'input-button': this.hasActionSlot,\n small: this.density === 'small',\n large: this.density === 'large',\n medium: this.density === 'medium',\n 'input-inline': this.isInline,\n 'input-highlight': this.isHighlight,\n success: this.success,\n danger: this.danger,\n info: this.info,\n warning: this.warning,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n /**\n * Valor atualizado do input\n */\n @Event() valueChange!: EventEmitter<string>\n private handleInput(event: Event) {\n this.value = (event.target as HTMLInputElement).value\n this.valueChange.emit(this.value)\n }\n\n renderLabel = () => {\n if (this.label) {\n if (this.isInline) {\n return (\n <div class=\"input-label\">\n <label class=\"text-nowrap\" htmlFor={this.defaultID}>\n {this.label}\n </label>\n </div>\n )\n } else {\n return <label htmlFor={this.defaultID}>{this.label}</label>\n }\n }\n }\n\n togglePasswordVisibility = () => {\n const input = this.el.shadowRoot.querySelector('input')\n input.type = input.type === 'password' ? 'text' : 'password'\n this.showIconTextPassword = input.type === 'password'\n }\n\n private hasSlotContent(slotName: string): boolean {\n return !!this.el.querySelector(`[slot=\"${slotName}\"]`)\n }\n\n renderInput = () => {\n return (\n <input\n class={this.isHighlight ? 'input-highlight' : null}\n id={this.defaultID}\n autocomplete={this.autocomplete}\n autofocus={this.autofocus}\n disabled={this.disabled}\n onInput={this.handleInput.bind(this)}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n title={this.el.title}\n type={this.type}\n value={this.value}\n {...this.inheritedAttributes}\n />\n )\n }\n\n renderHelpText = () => {\n return this.helpText ? <p>{this.helpText}</p> : <slot name=\"help-text\"></slot>\n }\n\n renderIconPassword = () => {\n const showPassword = !this.showIconTextPassword\n return <br-icon icon-name={showPassword ? 'fa-solid:eye' : 'fa-solid:eye-slash'}></br-icon>\n }\n\n renderIconSlot() {\n if (this.hasSlotContent('icon')) {\n return (\n <div class=\"input-icon\">\n <slot name=\"icon\"></slot>\n </div>\n )\n }\n }\n\n renderButton() {\n if (this.type === 'password') {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"botão de ação do ícone\"\n onClick={this.togglePasswordVisibility}\n >\n {this.renderIconPassword()}\n </br-button>\n )\n } else if (this.hasSlotContent('action')) {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"botão de ação do ícone\"\n // onClick={this.onIconAction}\n >\n <slot name=\"action\"></slot>\n </br-button>\n )\n }\n return null\n }\n\n render() {\n return (\n <Host>\n <div class={this.getInputCssClassMap()}>\n {this.renderLabel()}\n\n {this.hasIconSlot ? (\n <div class=\"input-group\">\n {this.renderIconSlot()}\n {this.renderInput()}\n </div>\n ) : (\n this.renderInput()\n )}\n\n {this.renderButton()}\n {this.renderHelpText()}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core'\nimport { v4 as uuidv4 } from 'uuid'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n *\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/input?tab=designer).\n *\n * @slot action - Botão à direita do input.\n * @slot icon - Ícone à esquerda do input.\n * @slot help-text - Personalização do texto de ajuda.\n */\n@Component({\n tag: 'br-input',\n styleUrl: 'input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Input {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrInputElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único do campo de entrada.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) defaultID: string = `br-input-${uuidv4()}`\n\n /**\n * Especifica o tipo de entrada do campo. Pode ser um dos seguintes:\n * - 'color': Seletor de cor\n * - 'email': Campo para e-mail\n * - 'hidden': Campo oculto\n * - 'password': Campo para senha\n * - 'range': Controle deslizante\n * - 'search': Campo de pesquisa\n * - 'number': Campo para números\n * - 'tel': Campo para números de telefone\n * - 'text': Campo de texto padrão\n * - 'url': Campo para URLs\n */\n @Prop({ reflect: true }) type:\n | 'color'\n | 'email'\n | 'hidden'\n | 'password'\n | 'range'\n | 'search'\n | 'number'\n | 'tel'\n | 'text'\n | 'url' = 'text'\n\n /**\n * Controla o comportamento de preenchimento automático do navegador para o input.\n */\n @Prop({ reflect: true }) autocomplete: 'on' | 'off'\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o input, tornando-o não interativo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Se verdadeiro, o input terá destaque visual.\n */\n @Prop({ reflect: true }) isHighlight: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de validação bem-sucedido.\n */\n @Prop({ reflect: true }) success: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de validação com erro.\n */\n @Prop({ reflect: true }) danger: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado informativo.\n */\n @Prop({ reflect: true }) info: boolean = false\n\n /**\n * Se verdadeiro, o input indica um estado de alerta.\n */\n @Prop({ reflect: true }) warning: boolean = false\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Nome do input, utilizado para identificação em formulários.\n */\n @Prop({ reflect: true }) name: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) placeholder: string\n\n /**\n * Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.\n */\n @Prop({ reflect: true }) readonly: boolean = false\n\n /**\n * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.\n */\n @Prop({ reflect: true }) required: boolean = false\n\n /**\n * Valor inicial exibido no input.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ reflect: true, mutable: true }) value: string\n\n /**\n * Texto adicional que fornece ajuda ou informações sobre o input.\n */\n @Prop({ reflect: true }) helpText: string\n\n @State() showIconTextPassword: boolean = false\n\n @State() hasIconSlot: boolean = false\n\n @State() hasActionSlot: boolean = false\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brDidConnect: EventEmitter<void>\n connectedCallback() {\n this.brDidConnect.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.hasIconSlot = this.hasSlotContent('icon')\n this.hasActionSlot = this.hasSlotContent('action')\n this.brWillLoad.emit()\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n /**\n * Emite um evento quando o componente é associado ou removido de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.\n *\n * @param form - Dados do formulário associado.\n */\n @Event() brFormAssociatedCallback: EventEmitter<FormData>\n formAssociatedCallback(form: FormData) {\n this.brFormAssociatedCallback.emit(form)\n }\n\n /**\n * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.\n *\n * @param disabled - Novo estado `disabled` do componente dentro do formulário.\n */\n @Event() brFormDisabledCallback: EventEmitter<boolean>\n formDisabledCallback(disabled: boolean) {\n this.brFormDisabledCallback.emit(disabled)\n }\n\n /**\n * Emite um evento quando um `<form>` é resetado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.\n */\n @Event() brFormResetCallback: EventEmitter<void>\n formResetCallback() {\n this.brFormResetCallback.emit()\n }\n\n /**\n * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.\n *\n * @param state - Estado restaurado do formulário.\n * @param _mode - Modo de preenchimento automático do navegador.\n */\n @Event() brFormStateRestoreCallback: EventEmitter<[state: string, _mode: string]>\n formStateRestoreCallback(state: string, _mode: string) {\n this.brFormStateRestoreCallback.emit([state, _mode])\n }\n\n private getInputCssClassMap(): CssClassMap {\n return {\n 'br-input': true,\n 'input-button': this.hasActionSlot,\n small: this.density === 'small',\n large: this.density === 'large',\n medium: this.density === 'medium',\n 'input-inline': this.isInline,\n 'input-highlight': this.isHighlight,\n success: this.success,\n danger: this.danger,\n info: this.info,\n warning: this.warning,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n /**\n * Valor atualizado do input\n */\n @Event() valueChange!: EventEmitter<string>\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.valueChange.emit(this.value)\n }\n\n private readonly renderLabel = () => {\n if (this.label?.length > 0) {\n if (this.isInline) {\n return (\n <div class=\"input-label\">\n <label class=\"text-nowrap\" htmlFor={this.defaultID}>\n {this.label}\n </label>\n </div>\n )\n } else {\n return <label htmlFor={this.defaultID}>{this.label}</label>\n }\n }\n }\n\n private readonly togglePasswordVisibility = () => {\n const input = this.el.shadowRoot.querySelector('input')\n input.type = input.type === 'password' ? 'text' : 'password'\n this.showIconTextPassword = input.type === 'password'\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private readonly renderInput = () => {\n return (\n <input\n class={this.isHighlight ? 'input-highlight' : null}\n id={this.defaultID}\n autocomplete={this.autocomplete}\n disabled={this.disabled}\n onInput={this.handleInput}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n title={this.el.title}\n type={this.type}\n value={this.value}\n {...this.inheritedAttributes}\n />\n )\n }\n\n private readonly renderHelpText = () => {\n return this.helpText?.length > 0 ? <p>{this.helpText}</p> : <slot name=\"help-text\"></slot>\n }\n\n private readonly renderIconPassword = () => {\n const showPassword = !this.showIconTextPassword\n return <br-icon icon-name={showPassword ? 'fa-solid:eye' : 'fa-solid:eye-slash'}></br-icon>\n }\n\n private renderIconSlot() {\n if (this.hasSlotContent('icon')) {\n return (\n <div class=\"input-icon\">\n <slot name=\"icon\"></slot>\n </div>\n )\n }\n }\n\n private renderButton() {\n if (this.type === 'password') {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"botão de ação do ícone\"\n onClick={this.togglePasswordVisibility}\n >\n {this.renderIconPassword()}\n </br-button>\n )\n } else if (this.hasSlotContent('action')) {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"botão de ação do ícone\"\n // onClick={this.onIconAction}\n >\n <slot name=\"action\"></slot>\n </br-button>\n )\n }\n return null\n }\n\n render() {\n return (\n <Host>\n <div class={this.getInputCssClassMap()}>\n {this.renderLabel()}\n\n {this.hasIconSlot ? (\n <div class=\"input-group\">\n {this.renderIconSlot()}\n {this.renderInput()}\n </div>\n ) : (\n this.renderInput()\n )}\n\n {this.renderButton()}\n {this.renderHelpText()}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
@@ -115,6 +115,30 @@ progress {
|
|
|
115
115
|
display: none;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
.d-flex {
|
|
119
|
+
display: flex !important;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.align-items-center {
|
|
123
|
+
align-items: center !important;
|
|
124
|
+
}
|
|
125
|
+
.col,
|
|
126
|
+
[class*=col-] {
|
|
127
|
+
padding-left: calc(var(--grid-gutter) * 0.5);
|
|
128
|
+
padding-right: calc(var(--grid-gutter) * 0.5);
|
|
129
|
+
width: 100%;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.col {
|
|
133
|
+
flex: 1 0 0%;
|
|
134
|
+
min-width: 8.3333333333%;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.col-auto {
|
|
138
|
+
flex: 0 0 auto;
|
|
139
|
+
width: auto;
|
|
140
|
+
}
|
|
141
|
+
|
|
118
142
|
.row {
|
|
119
143
|
--grid-gutter: var(--grid-portrait-gutter);
|
|
120
144
|
display: flex;
|
|
@@ -155,6 +179,16 @@ progress {
|
|
|
155
179
|
.mb-3 {
|
|
156
180
|
margin-bottom: var(--spacing-scale-2x) !important;
|
|
157
181
|
}
|
|
182
|
+
|
|
183
|
+
.py-3 {
|
|
184
|
+
padding-bottom: var(--spacing-scale-2x) !important;
|
|
185
|
+
padding-top: var(--spacing-scale-2x) !important;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.py-4 {
|
|
189
|
+
padding-bottom: var(--spacing-scale-3x) !important;
|
|
190
|
+
padding-top: var(--spacing-scale-3x) !important;
|
|
191
|
+
}
|
|
158
192
|
body {
|
|
159
193
|
--bg-color: var(--background);
|
|
160
194
|
--bg-color-rgb: var(--background-rgb);
|
|
@@ -222,6 +256,11 @@ img {
|
|
|
222
256
|
max-width: 100%;
|
|
223
257
|
vertical-align: middle;
|
|
224
258
|
}
|
|
259
|
+
ul {
|
|
260
|
+
margin-bottom: var(--spacing-scale-2x);
|
|
261
|
+
margin-top: 0;
|
|
262
|
+
padding: 0 0 0 var(--spacing-scale-5x);
|
|
263
|
+
}
|
|
225
264
|
|
|
226
265
|
label,
|
|
227
266
|
.label {
|
|
@@ -315,6 +354,50 @@ code,
|
|
|
315
354
|
pointer-events: none;
|
|
316
355
|
}
|
|
317
356
|
|
|
357
|
+
[data-toggle=dropdown] + * {
|
|
358
|
+
position: absolute;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.dropdown {
|
|
362
|
+
position: relative;
|
|
363
|
+
}
|
|
364
|
+
.dropdown [data-toggle=dropdown] + * {
|
|
365
|
+
box-shadow: var(--surface-shadow-sm);
|
|
366
|
+
left: 0;
|
|
367
|
+
position: absolute;
|
|
368
|
+
top: 100%;
|
|
369
|
+
}
|
|
370
|
+
.dropdown .br-item {
|
|
371
|
+
--color: var(--color-light);
|
|
372
|
+
--color-rgb: var(--color-light-rgb);
|
|
373
|
+
--text-color: var(--color-light);
|
|
374
|
+
--interactive: var(--interactive-light);
|
|
375
|
+
--interactive-rgb: var(--color-rgb);
|
|
376
|
+
--visited: var(--visited-light);
|
|
377
|
+
--hover: var(--hover-light);
|
|
378
|
+
--pressed: var(--pressed-light);
|
|
379
|
+
--focus-color: var(--focus-color-light);
|
|
380
|
+
--focus: var(--focus-color-light);
|
|
381
|
+
--item-padding-y: var(--spacing-scale-2x);
|
|
382
|
+
background-color: var(--background-light);
|
|
383
|
+
color: var(--color);
|
|
384
|
+
}
|
|
385
|
+
.dropdown .br-item:not(:last-child) {
|
|
386
|
+
border-bottom: 1px solid var(--border-color);
|
|
387
|
+
}
|
|
388
|
+
.dropdown .br-item.selected {
|
|
389
|
+
--color: var(--color-dark);
|
|
390
|
+
--color-rgb: var(--color-dark-rgb);
|
|
391
|
+
--text-color: var(--color-dark);
|
|
392
|
+
--interactive: var(--interactive-dark);
|
|
393
|
+
--interactive-rgb: var(--interactive-dark-rgb);
|
|
394
|
+
--visited: var(--visited-dark);
|
|
395
|
+
--hover: var(--hover-dark);
|
|
396
|
+
--pressed: var(--pressed-dark);
|
|
397
|
+
--focus-color: var(--focus-color-dark);
|
|
398
|
+
--focus: var(--focus-color-dark);
|
|
399
|
+
}
|
|
400
|
+
|
|
318
401
|
.br-item {
|
|
319
402
|
background: var(--background);
|
|
320
403
|
--item-padding-x: var(--spacing-scale-2x);
|
|
@@ -333,6 +416,11 @@ code,
|
|
|
333
416
|
margin-left: calc(-1 * var(--spacing-scale-base));
|
|
334
417
|
margin-right: calc(-1 * var(--spacing-scale-base));
|
|
335
418
|
}
|
|
419
|
+
.br-item .row .col,
|
|
420
|
+
.br-item .row [class*=col-] {
|
|
421
|
+
padding-left: var(--spacing-scale-base);
|
|
422
|
+
padding-right: var(--spacing-scale-base);
|
|
423
|
+
}
|
|
336
424
|
.br-item::after {
|
|
337
425
|
clear: both;
|
|
338
426
|
content: "";
|
|
@@ -3,10 +3,30 @@ import { Host, h } from "@stencil/core";
|
|
|
3
3
|
* Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/item?tab=designer).
|
|
4
4
|
*
|
|
5
5
|
* @slot default - Área de conteúdo, podendo conter qualquer componente, exceto botões primários e componentes relacionados à navegação (como carrosséis, paginações, abas, menus, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @slot start - Área de recursos visuais, podendo conter elementos como ícones, avatares e mídias.
|
|
8
|
+
*
|
|
9
|
+
* @slot end - Área de recursos complementares, podendo conter componentes interativos, metadados e informações adicionais.
|
|
6
10
|
*/
|
|
7
11
|
export class Item {
|
|
8
12
|
constructor() {
|
|
9
13
|
this.inheritedAttributes = {};
|
|
14
|
+
this.handleClick = (event) => {
|
|
15
|
+
const clickedElement = event.target;
|
|
16
|
+
if (this.disabled) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
}
|
|
20
|
+
if (this.isButton) {
|
|
21
|
+
this.brDidClick.emit();
|
|
22
|
+
}
|
|
23
|
+
else if (this.isInteractive && !this.isClickInsideInteractiveElement(clickedElement)) {
|
|
24
|
+
this.selectedValue = !this.selectedValue;
|
|
25
|
+
this.brDidSelect.emit({ selected: this.selectedValue });
|
|
26
|
+
this.updateCheckboxes();
|
|
27
|
+
}
|
|
28
|
+
event.stopPropagation();
|
|
29
|
+
};
|
|
10
30
|
this.disabled = false;
|
|
11
31
|
this.isActive = false;
|
|
12
32
|
this.isSelected = false;
|
|
@@ -16,7 +36,10 @@ export class Item {
|
|
|
16
36
|
this.isButton = false;
|
|
17
37
|
this.type = undefined;
|
|
18
38
|
this.value = undefined;
|
|
19
|
-
this.
|
|
39
|
+
this.density = undefined;
|
|
40
|
+
this.hasSlotDefault = false;
|
|
41
|
+
this.hasSlotStart = false;
|
|
42
|
+
this.hasSlotEnd = false;
|
|
20
43
|
this.selectedValue = false;
|
|
21
44
|
}
|
|
22
45
|
handleChange(event) {
|
|
@@ -30,6 +53,8 @@ export class Item {
|
|
|
30
53
|
}
|
|
31
54
|
componentWillLoad() {
|
|
32
55
|
this.hasSlotContentDefault();
|
|
56
|
+
this.hasSlotStart = this.hasSlotContent('start');
|
|
57
|
+
this.hasSlotEnd = this.hasSlotContent('end');
|
|
33
58
|
this.selectedValue = this.isSelected;
|
|
34
59
|
if (this.isButton) {
|
|
35
60
|
this.type = this.type || 'button';
|
|
@@ -72,7 +97,10 @@ export class Item {
|
|
|
72
97
|
this.brFormStateRestoreCallback.emit([state, _mode]);
|
|
73
98
|
}
|
|
74
99
|
hasSlotContentDefault() {
|
|
75
|
-
this.
|
|
100
|
+
this.hasSlotDefault = this.el.innerHTML !== '';
|
|
101
|
+
}
|
|
102
|
+
hasSlotContent(slotName) {
|
|
103
|
+
return this.el.querySelector(`[slot="${slotName}"]`) !== null;
|
|
76
104
|
}
|
|
77
105
|
getCssClassMap() {
|
|
78
106
|
return {
|
|
@@ -80,13 +108,16 @@ export class Item {
|
|
|
80
108
|
disabled: this.disabled,
|
|
81
109
|
active: this.isActive,
|
|
82
110
|
selected: this.selectedValue,
|
|
111
|
+
'py-3': this.density === 'middle',
|
|
112
|
+
'py-4': this.density === 'small',
|
|
83
113
|
};
|
|
84
114
|
}
|
|
85
115
|
getTagType() {
|
|
116
|
+
var _a;
|
|
86
117
|
if (this.isButton) {
|
|
87
118
|
return 'button';
|
|
88
119
|
}
|
|
89
|
-
if (this.href) {
|
|
120
|
+
if (((_a = this.href) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
90
121
|
return 'a';
|
|
91
122
|
}
|
|
92
123
|
return 'div';
|
|
@@ -121,27 +152,11 @@ export class Item {
|
|
|
121
152
|
checkbox.checked = this.selectedValue;
|
|
122
153
|
});
|
|
123
154
|
}
|
|
124
|
-
handleClick(event) {
|
|
125
|
-
const clickedElement = event.target;
|
|
126
|
-
if (this.disabled) {
|
|
127
|
-
event.preventDefault();
|
|
128
|
-
event.stopPropagation();
|
|
129
|
-
}
|
|
130
|
-
if (this.isButton) {
|
|
131
|
-
this.brDidClick.emit();
|
|
132
|
-
}
|
|
133
|
-
else if (this.isInteractive && !this.isClickInsideInteractiveElement(clickedElement)) {
|
|
134
|
-
this.selectedValue = !this.selectedValue;
|
|
135
|
-
this.brDidSelect.emit({ selected: this.selectedValue });
|
|
136
|
-
this.updateCheckboxes();
|
|
137
|
-
}
|
|
138
|
-
event.stopPropagation();
|
|
139
|
-
}
|
|
140
155
|
render() {
|
|
141
156
|
const TagType = this.getTagType();
|
|
142
157
|
const attributes = this.getAttributes();
|
|
143
158
|
const classList = this.getCssClassMap();
|
|
144
|
-
return (h(Host, { key: '
|
|
159
|
+
return (h(Host, { key: '53659ae6636c2f6eae32214c2bbfc3ef57b700bd' }, h(TagType, Object.assign({ key: '35272110ced36e52e965db6f16d30ed97680cca8', class: classList }, attributes, { onClick: this.handleClick }), this.hasSlotStart || this.hasSlotEnd ? (h("div", { class: "row align-items-center" }, this.hasSlotStart && (h("div", { class: "col-auto" }, h("slot", { name: "start" }))), h("div", { class: "col" }, h("slot", null)), this.hasSlotEnd && (h("div", { class: "col-auto" }, h("slot", { name: "end" }))))) : (h("slot", null)))));
|
|
145
160
|
}
|
|
146
161
|
static get is() { return "br-item"; }
|
|
147
162
|
static get encapsulation() { return "shadow"; }
|
|
@@ -178,7 +193,7 @@ export class Item {
|
|
|
178
193
|
},
|
|
179
194
|
"isActive": {
|
|
180
195
|
"type": "boolean",
|
|
181
|
-
"mutable":
|
|
196
|
+
"mutable": false,
|
|
182
197
|
"complexType": {
|
|
183
198
|
"original": "boolean",
|
|
184
199
|
"resolved": "boolean",
|
|
@@ -196,7 +211,7 @@ export class Item {
|
|
|
196
211
|
},
|
|
197
212
|
"isSelected": {
|
|
198
213
|
"type": "boolean",
|
|
199
|
-
"mutable":
|
|
214
|
+
"mutable": false,
|
|
200
215
|
"complexType": {
|
|
201
216
|
"original": "boolean",
|
|
202
217
|
"resolved": "boolean",
|
|
@@ -214,7 +229,7 @@ export class Item {
|
|
|
214
229
|
},
|
|
215
230
|
"isInteractive": {
|
|
216
231
|
"type": "boolean",
|
|
217
|
-
"mutable":
|
|
232
|
+
"mutable": false,
|
|
218
233
|
"complexType": {
|
|
219
234
|
"original": "boolean",
|
|
220
235
|
"resolved": "boolean",
|
|
@@ -315,12 +330,31 @@ export class Item {
|
|
|
315
330
|
},
|
|
316
331
|
"attribute": "value",
|
|
317
332
|
"reflect": true
|
|
333
|
+
},
|
|
334
|
+
"density": {
|
|
335
|
+
"type": "string",
|
|
336
|
+
"mutable": false,
|
|
337
|
+
"complexType": {
|
|
338
|
+
"original": "'large' | 'middle' | 'small'",
|
|
339
|
+
"resolved": "\"large\" | \"middle\" | \"small\"",
|
|
340
|
+
"references": {}
|
|
341
|
+
},
|
|
342
|
+
"required": false,
|
|
343
|
+
"optional": false,
|
|
344
|
+
"docs": {
|
|
345
|
+
"tags": [],
|
|
346
|
+
"text": "Ajusta a densidade, alterando o espa\u00E7amento interno para um visual mais compacto ou mais expandido."
|
|
347
|
+
},
|
|
348
|
+
"attribute": "density",
|
|
349
|
+
"reflect": true
|
|
318
350
|
}
|
|
319
351
|
};
|
|
320
352
|
}
|
|
321
353
|
static get states() {
|
|
322
354
|
return {
|
|
323
|
-
"
|
|
355
|
+
"hasSlotDefault": {},
|
|
356
|
+
"hasSlotStart": {},
|
|
357
|
+
"hasSlotEnd": {},
|
|
324
358
|
"selectedValue": {}
|
|
325
359
|
};
|
|
326
360
|
}
|