@sula-tech/webcomponents 0.14.1 → 0.16.0
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/{index-C19aFtyq.js → index-CHZXBkfx.js} +357 -7
- package/dist/cjs/index-CHZXBkfx.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{sula-avatar_21.cjs.entry.js → sula-avatar_28.cjs.entry.js} +2103 -23
- package/dist/cjs/sula-avatar_28.cjs.entry.js.map +1 -0
- package/dist/cjs/webcomponents.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +8 -1
- package/dist/collection/components/sula-dropdown/sula-dropdown.js +6 -6
- package/dist/collection/components/sula-dropdown/sula-dropdown.js.map +1 -1
- package/dist/collection/components/sula-icon/sula-icon.css +1 -1
- package/dist/collection/components/sula-table/model/sula-table.model.js +8 -0
- package/dist/collection/components/sula-table/model/sula-table.model.js.map +1 -0
- package/dist/collection/components/sula-table/sula-table.css +1 -0
- package/dist/collection/components/sula-table/sula-table.js +111 -0
- package/dist/collection/components/sula-table/sula-table.js.map +1 -0
- package/dist/collection/components/sula-table/sula-table.stories.js +298 -0
- package/dist/collection/components/sula-table/sula-table.stories.js.map +1 -0
- package/dist/collection/components/sula-table-body/sula-table-body.css +1 -0
- package/dist/collection/components/sula-table-body/sula-table-body.js +23 -0
- package/dist/collection/components/sula-table-body/sula-table-body.js.map +1 -0
- package/dist/collection/components/sula-table-cell/sula-table-cell.css +1 -0
- package/dist/collection/components/sula-table-cell/sula-table-cell.js +34 -0
- package/dist/collection/components/sula-table-cell/sula-table-cell.js.map +1 -0
- package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.css +1 -0
- package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.js +34 -0
- package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.js.map +1 -0
- package/dist/collection/components/sula-table-header/sula-table-header.css +1 -0
- package/dist/collection/components/sula-table-header/sula-table-header.js +23 -0
- package/dist/collection/components/sula-table-header/sula-table-header.js.map +1 -0
- package/dist/collection/components/sula-table-row/sula-table-row.css +1 -0
- package/dist/collection/components/sula-table-row/sula-table-row.js +23 -0
- package/dist/collection/components/sula-table-row/sula-table-row.js.map +1 -0
- package/dist/collection/components/sula-tag/sula-tag.js +3 -3
- package/dist/collection/components/sula-textarea/sula-textarea.js +6 -6
- package/dist/collection/components/sula-textfield/sula-textfield.js +2 -2
- package/dist/collection/components/sula-tiles/sula-tiles.js +1 -1
- package/dist/collection/components/sula-timeline-list/sula-timeline-list.js +1 -1
- package/dist/collection/components/sula-tooltip/model/sula-tooltip.model.js +13 -0
- package/dist/collection/components/sula-tooltip/model/sula-tooltip.model.js.map +1 -0
- package/dist/collection/components/sula-tooltip/sula-tooltip.css +1 -0
- package/dist/collection/components/sula-tooltip/sula-tooltip.js +218 -0
- package/dist/collection/components/sula-tooltip/sula-tooltip.js.map +1 -0
- package/dist/collection/components/sula-tooltip/sula-tooltip.stories.js +179 -0
- package/dist/collection/components/sula-tooltip/sula-tooltip.stories.js.map +1 -0
- package/dist/collection/utils/replace-host-with-rendered-element.js +24 -0
- package/dist/collection/utils/replace-host-with-rendered-element.js.map +1 -0
- package/dist/components/index.js +355 -5
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-tr2oA4pB.js → p-BoXZrDgj.js} +3 -3
- package/dist/components/{p-tr2oA4pB.js.map → p-BoXZrDgj.js.map} +1 -1
- package/dist/components/p-CQ1I0UIz.js +12 -0
- package/dist/components/p-CQ1I0UIz.js.map +1 -0
- package/dist/components/p-DrIWCpI3.js +28 -0
- package/dist/components/p-DrIWCpI3.js.map +1 -0
- package/dist/components/{p-BlyFOqde.js → p-ExcZQ46X.js} +3 -3
- package/dist/components/{p-BlyFOqde.js.map → p-ExcZQ46X.js.map} +1 -1
- package/dist/components/sula-avatar.js +1 -1
- package/dist/components/sula-badge.js +1 -1
- package/dist/components/sula-breadcrumb.js +1 -1
- package/dist/components/sula-button.js +1 -1
- package/dist/components/sula-checkbox.js +1 -1
- package/dist/components/sula-chip.js +1 -1
- package/dist/components/sula-dropdown.js +7 -7
- package/dist/components/sula-dropdown.js.map +1 -1
- package/dist/components/sula-icon.js +1 -1
- package/dist/components/sula-modal.js +2 -2
- package/dist/components/sula-progress-bar.js +1 -1
- package/dist/components/sula-search-bar.js +1 -1
- package/dist/components/sula-segmented-control.js +1 -1
- package/dist/components/sula-table-body.d.ts +11 -0
- package/dist/components/sula-table-body.js +41 -0
- package/dist/components/sula-table-body.js.map +1 -0
- package/dist/components/sula-table-cell.d.ts +11 -0
- package/dist/components/sula-table-cell.js +52 -0
- package/dist/components/sula-table-cell.js.map +1 -0
- package/dist/components/sula-table-head-cell.d.ts +11 -0
- package/dist/components/sula-table-head-cell.js +52 -0
- package/dist/components/sula-table-head-cell.js.map +1 -0
- package/dist/components/sula-table-header.d.ts +11 -0
- package/dist/components/sula-table-header.js +41 -0
- package/dist/components/sula-table-header.js.map +1 -0
- package/dist/components/sula-table-row.d.ts +11 -0
- package/dist/components/sula-table-row.js +41 -0
- package/dist/components/sula-table-row.js.map +1 -0
- package/dist/components/sula-table.d.ts +11 -0
- package/dist/components/sula-table.js +61 -0
- package/dist/components/sula-table.js.map +1 -0
- package/dist/components/sula-tag.js +4 -4
- package/dist/components/sula-textarea.js +6 -6
- package/dist/components/sula-textfield.js +3 -3
- package/dist/components/sula-tiles.js +2 -2
- package/dist/components/sula-timeline-list.js +2 -2
- package/dist/components/sula-tooltip.d.ts +11 -0
- package/dist/components/sula-tooltip.js +1946 -0
- package/dist/components/sula-tooltip.js.map +1 -0
- package/dist/esm/{index-CwIBTB8E.js → index-CwrCjm3e.js} +357 -7
- package/dist/esm/index-CwrCjm3e.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{sula-avatar_21.entry.js → sula-avatar_28.entry.js} +2097 -24
- package/dist/esm/sula-avatar_28.entry.js.map +1 -0
- package/dist/esm/webcomponents.js +3 -3
- package/dist/types/components/sula-table/model/sula-table.model.d.ts +6 -0
- package/dist/types/components/sula-table/sula-table.d.ts +16 -0
- package/dist/types/components/sula-table/sula-table.stories.d.ts +69 -0
- package/dist/types/components/sula-table-body/sula-table-body.d.ts +5 -0
- package/dist/types/components/sula-table-cell/sula-table-cell.d.ts +6 -0
- package/dist/types/components/sula-table-head-cell/sula-table-head-cell.d.ts +6 -0
- package/dist/types/components/sula-table-header/sula-table-header.d.ts +5 -0
- package/dist/types/components/sula-table-row/sula-table-row.d.ts +5 -0
- package/dist/types/components/sula-tooltip/model/sula-tooltip.model.d.ts +10 -0
- package/dist/types/components/sula-tooltip/sula-tooltip.d.ts +40 -0
- package/dist/types/components/sula-tooltip/sula-tooltip.stories.d.ts +105 -0
- package/dist/types/components.d.ts +163 -0
- package/dist/types/utils/replace-host-with-rendered-element.d.ts +1 -0
- package/dist/webcomponents/{p-a7141407.entry.js → p-8472342b.entry.js} +3258 -1317
- package/dist/webcomponents/p-8472342b.entry.js.map +1 -0
- package/dist/webcomponents/{p-CwIBTB8E.js → p-CwrCjm3e.js} +504 -150
- package/dist/webcomponents/p-CwrCjm3e.js.map +1 -0
- package/dist/webcomponents/webcomponents.esm.js +14 -4
- package/package.json +2 -1
- package/dist/cjs/index-C19aFtyq.js.map +0 -1
- package/dist/cjs/sula-avatar_21.cjs.entry.js.map +0 -1
- package/dist/esm/index-CwIBTB8E.js.map +0 -1
- package/dist/esm/sula-avatar_21.entry.js.map +0 -1
- package/dist/webcomponents/p-CwIBTB8E.js.map +0 -1
- package/dist/webcomponents/p-a7141407.entry.js.map +0 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { SulaTooltipPosition, SulaTooltipTrigger } from "./model/sula-tooltip.model";
|
|
2
|
+
export default {
|
|
3
|
+
title: 'Components/sula-tooltip',
|
|
4
|
+
tags: ['autodocs'],
|
|
5
|
+
argTypes: {
|
|
6
|
+
text: {
|
|
7
|
+
control: 'text',
|
|
8
|
+
description: 'Texto exibido no tooltip (máx. 300 caracteres)',
|
|
9
|
+
table: {
|
|
10
|
+
type: { summary: 'string' },
|
|
11
|
+
defaultValue: { summary: 'undefined' },
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
position: {
|
|
15
|
+
control: { type: 'select' },
|
|
16
|
+
options: Object.values(SulaTooltipPosition),
|
|
17
|
+
description: 'Posição do tooltip em relação ao gatilho',
|
|
18
|
+
table: {
|
|
19
|
+
type: { summary: 'SulaTooltipPosition' },
|
|
20
|
+
defaultValue: { summary: 'SulaTooltipPosition.Top' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
icon: {
|
|
24
|
+
control: 'text',
|
|
25
|
+
description: 'Classe do ícone (Phosphor Icons)',
|
|
26
|
+
table: {
|
|
27
|
+
type: { summary: 'string' },
|
|
28
|
+
defaultValue: { summary: 'ph ph-info' },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
focused: {
|
|
32
|
+
control: 'boolean',
|
|
33
|
+
description: 'Exibe o focus ring ao redor do ícone',
|
|
34
|
+
table: {
|
|
35
|
+
type: { summary: 'boolean' },
|
|
36
|
+
defaultValue: { summary: 'false' },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
trigger: {
|
|
40
|
+
control: { type: 'select' },
|
|
41
|
+
options: Object.values(SulaTooltipTrigger),
|
|
42
|
+
description: 'Modo de disparo: ícone (padrão) ou elemento pai',
|
|
43
|
+
table: {
|
|
44
|
+
type: { summary: 'SulaTooltipTrigger' },
|
|
45
|
+
defaultValue: { summary: 'SulaTooltipTrigger.Icon' },
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
parameters: {
|
|
50
|
+
docs: {
|
|
51
|
+
description: {
|
|
52
|
+
component: `
|
|
53
|
+
O componente **Sula Tooltip** exibe um hint informativo ao passar o mouse sobre um ícone ou elemento pai.
|
|
54
|
+
|
|
55
|
+
### Características principais:
|
|
56
|
+
- Posicionamento em 4 direções (top, bottom, left, right)
|
|
57
|
+
- Adaptação automática ao tema via Tailwind
|
|
58
|
+
- Suporte a focus ring
|
|
59
|
+
- Modo trigger por ícone ou por elemento pai
|
|
60
|
+
- Texto com até 300 caracteres
|
|
61
|
+
`,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
const Template = args => {
|
|
67
|
+
const container = document.createElement('div');
|
|
68
|
+
container.style.margin = '100px';
|
|
69
|
+
container.style.display = 'flex';
|
|
70
|
+
container.style.justifyContent = 'center';
|
|
71
|
+
container.style.alignItems = 'center';
|
|
72
|
+
const el = document.createElement('sula-tooltip');
|
|
73
|
+
el.setAttribute('text', args.text);
|
|
74
|
+
el.setAttribute('position', args.position);
|
|
75
|
+
el.setAttribute('icon', args.icon || 'ph ph-info');
|
|
76
|
+
el.setAttribute('focused', args.focused ? 'true' : 'false');
|
|
77
|
+
el.setAttribute('trigger', args.trigger || 'icon');
|
|
78
|
+
container.appendChild(el);
|
|
79
|
+
return container;
|
|
80
|
+
};
|
|
81
|
+
export const Playground = Template.bind({});
|
|
82
|
+
Playground.args = {
|
|
83
|
+
text: 'Este é um tooltip padrão',
|
|
84
|
+
position: SulaTooltipPosition.Top,
|
|
85
|
+
icon: 'ph ph-info',
|
|
86
|
+
focused: false,
|
|
87
|
+
trigger: SulaTooltipTrigger.Icon,
|
|
88
|
+
};
|
|
89
|
+
export const Positions = () => {
|
|
90
|
+
const container = document.createElement('div');
|
|
91
|
+
container.style.display = 'flex';
|
|
92
|
+
container.style.gap = '64px';
|
|
93
|
+
container.style.alignItems = 'center';
|
|
94
|
+
container.style.justifyContent = 'center';
|
|
95
|
+
container.style.padding = '100px 20px';
|
|
96
|
+
Object.values(SulaTooltipPosition).forEach(pos => {
|
|
97
|
+
const wrapper = document.createElement('div');
|
|
98
|
+
wrapper.style.display = 'flex';
|
|
99
|
+
wrapper.style.alignItems = 'center';
|
|
100
|
+
wrapper.style.gap = '8px';
|
|
101
|
+
const label = document.createElement('span');
|
|
102
|
+
label.style.fontSize = '14px';
|
|
103
|
+
label.textContent = pos.charAt(0).toUpperCase() + pos.slice(1) + ':';
|
|
104
|
+
const el = document.createElement('sula-tooltip');
|
|
105
|
+
el.setAttribute('text', `Tooltip posicionado em ${pos}`);
|
|
106
|
+
el.setAttribute('position', pos);
|
|
107
|
+
wrapper.appendChild(label);
|
|
108
|
+
wrapper.appendChild(el);
|
|
109
|
+
container.appendChild(wrapper);
|
|
110
|
+
});
|
|
111
|
+
return container;
|
|
112
|
+
};
|
|
113
|
+
Positions.parameters = {
|
|
114
|
+
docs: { description: { story: 'Todas as posições disponíveis do tooltip.' } },
|
|
115
|
+
};
|
|
116
|
+
export const FocusRing = Template.bind({});
|
|
117
|
+
FocusRing.args = {
|
|
118
|
+
text: 'Tooltip com focus ring',
|
|
119
|
+
position: SulaTooltipPosition.Top,
|
|
120
|
+
focused: true,
|
|
121
|
+
};
|
|
122
|
+
FocusRing.parameters = {
|
|
123
|
+
docs: { description: { story: 'Tooltip com focus ring visível ao redor do ícone.' } },
|
|
124
|
+
};
|
|
125
|
+
export const CustomIcon = Template.bind({});
|
|
126
|
+
CustomIcon.args = {
|
|
127
|
+
text: 'Tooltip com ícone customizado',
|
|
128
|
+
position: SulaTooltipPosition.Top,
|
|
129
|
+
icon: 'ph ph-question',
|
|
130
|
+
};
|
|
131
|
+
CustomIcon.parameters = {
|
|
132
|
+
docs: { description: { story: 'Tooltip com ícone de pergunta.' } },
|
|
133
|
+
};
|
|
134
|
+
export const LongText = Template.bind({});
|
|
135
|
+
LongText.args = {
|
|
136
|
+
text: 'Este é um texto longo para demonstrar que o tooltip suporta quebra de linha e até 300 caracteres de conteúdo informativo para o usuário.',
|
|
137
|
+
position: SulaTooltipPosition.Right,
|
|
138
|
+
};
|
|
139
|
+
LongText.parameters = {
|
|
140
|
+
docs: { description: { story: 'Tooltip com texto longo demonstrando o suporte a múltiplas linhas.' } },
|
|
141
|
+
};
|
|
142
|
+
export const ParentTrigger = () => {
|
|
143
|
+
const container = document.createElement('div');
|
|
144
|
+
container.style.display = 'flex';
|
|
145
|
+
container.style.gap = '16px';
|
|
146
|
+
container.style.padding = '100px 20px';
|
|
147
|
+
container.style.justifyContent = 'center';
|
|
148
|
+
const card = document.createElement('div');
|
|
149
|
+
card.style.position = 'relative';
|
|
150
|
+
card.style.padding = '16px 20px';
|
|
151
|
+
card.style.borderRadius = '8px';
|
|
152
|
+
card.style.border = '1px solid #e0e0e0';
|
|
153
|
+
card.style.background = '#fff';
|
|
154
|
+
card.style.cursor = 'default';
|
|
155
|
+
card.style.width = '180px';
|
|
156
|
+
const label = document.createElement('p');
|
|
157
|
+
label.style.fontSize = '12px';
|
|
158
|
+
label.style.color = '#6c6e6e';
|
|
159
|
+
label.style.margin = '0 0 4px';
|
|
160
|
+
label.textContent = 'Total investido';
|
|
161
|
+
const value = document.createElement('p');
|
|
162
|
+
value.style.fontSize = '20px';
|
|
163
|
+
value.style.fontWeight = 'bold';
|
|
164
|
+
value.style.margin = '0';
|
|
165
|
+
value.textContent = 'R$ 4.820';
|
|
166
|
+
const tooltip = document.createElement('sula-tooltip');
|
|
167
|
+
tooltip.setAttribute('text', 'Passe o mouse sobre o card para ver o tooltip.');
|
|
168
|
+
tooltip.setAttribute('trigger', SulaTooltipTrigger.Parent);
|
|
169
|
+
tooltip.setAttribute('position', SulaTooltipPosition.Top);
|
|
170
|
+
card.appendChild(label);
|
|
171
|
+
card.appendChild(value);
|
|
172
|
+
card.appendChild(tooltip);
|
|
173
|
+
container.appendChild(card);
|
|
174
|
+
return container;
|
|
175
|
+
};
|
|
176
|
+
ParentTrigger.parameters = {
|
|
177
|
+
docs: { description: { story: 'Tooltip disparado pelo hover no elemento pai (ícone oculto).' } },
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=sula-tooltip.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sula-tooltip.stories.js","sourceRoot":"","sources":["../../../src/components/sula-tooltip/sula-tooltip.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { SulaTooltipPosition, SulaTooltipTrigger } from './model/sula-tooltip.model';\n\nexport default {\n title: 'Components/sula-tooltip',\n tags: ['autodocs'],\n argTypes: {\n text: {\n control: 'text',\n description: 'Texto exibido no tooltip (máx. 300 caracteres)',\n table: {\n type: { summary: 'string' },\n defaultValue: { summary: 'undefined' },\n },\n },\n position: {\n control: { type: 'select' },\n options: Object.values(SulaTooltipPosition),\n description: 'Posição do tooltip em relação ao gatilho',\n table: {\n type: { summary: 'SulaTooltipPosition' },\n defaultValue: { summary: 'SulaTooltipPosition.Top' },\n },\n },\n icon: {\n control: 'text',\n description: 'Classe do ícone (Phosphor Icons)',\n table: {\n type: { summary: 'string' },\n defaultValue: { summary: 'ph ph-info' },\n },\n },\n focused: {\n control: 'boolean',\n description: 'Exibe o focus ring ao redor do ícone',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: 'false' },\n },\n },\n trigger: {\n control: { type: 'select' },\n options: Object.values(SulaTooltipTrigger),\n description: 'Modo de disparo: ícone (padrão) ou elemento pai',\n table: {\n type: { summary: 'SulaTooltipTrigger' },\n defaultValue: { summary: 'SulaTooltipTrigger.Icon' },\n },\n },\n },\n parameters: {\n docs: {\n description: {\n component: `\nO componente **Sula Tooltip** exibe um hint informativo ao passar o mouse sobre um ícone ou elemento pai.\n\n### Características principais:\n- Posicionamento em 4 direções (top, bottom, left, right)\n- Adaptação automática ao tema via Tailwind\n- Suporte a focus ring\n- Modo trigger por ícone ou por elemento pai\n- Texto com até 300 caracteres\n `,\n },\n },\n },\n};\n\nconst Template = args => {\n const container = document.createElement('div');\n container.style.margin = '100px';\n container.style.display = 'flex';\n container.style.justifyContent = 'center';\n container.style.alignItems = 'center';\n\n const el = document.createElement('sula-tooltip');\n\n el.setAttribute('text', args.text);\n el.setAttribute('position', args.position);\n el.setAttribute('icon', args.icon || 'ph ph-info');\n el.setAttribute('focused', args.focused ? 'true' : 'false');\n el.setAttribute('trigger', args.trigger || 'icon');\n\n container.appendChild(el);\n\n return container;\n};\n\nexport const Playground = Template.bind({});\nPlayground.args = {\n text: 'Este é um tooltip padrão',\n position: SulaTooltipPosition.Top,\n icon: 'ph ph-info',\n focused: false,\n trigger: SulaTooltipTrigger.Icon,\n};\n\nexport const Positions = () => {\n const container = document.createElement('div');\n container.style.display = 'flex';\n container.style.gap = '64px';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.padding = '100px 20px';\n\n Object.values(SulaTooltipPosition).forEach(pos => {\n const wrapper = document.createElement('div');\n wrapper.style.display = 'flex';\n wrapper.style.alignItems = 'center';\n wrapper.style.gap = '8px';\n\n const label = document.createElement('span');\n label.style.fontSize = '14px';\n label.textContent = pos.charAt(0).toUpperCase() + pos.slice(1) + ':';\n\n const el = document.createElement('sula-tooltip');\n el.setAttribute('text', `Tooltip posicionado em ${pos}`);\n el.setAttribute('position', pos);\n\n wrapper.appendChild(label);\n wrapper.appendChild(el);\n container.appendChild(wrapper);\n });\n\n return container;\n};\nPositions.parameters = {\n docs: { description: { story: 'Todas as posições disponíveis do tooltip.' } },\n};\n\nexport const FocusRing = Template.bind({});\nFocusRing.args = {\n text: 'Tooltip com focus ring',\n position: SulaTooltipPosition.Top,\n focused: true,\n};\nFocusRing.parameters = {\n docs: { description: { story: 'Tooltip com focus ring visível ao redor do ícone.' } },\n};\n\nexport const CustomIcon = Template.bind({});\nCustomIcon.args = {\n text: 'Tooltip com ícone customizado',\n position: SulaTooltipPosition.Top,\n icon: 'ph ph-question',\n};\nCustomIcon.parameters = {\n docs: { description: { story: 'Tooltip com ícone de pergunta.' } },\n};\n\nexport const LongText = Template.bind({});\nLongText.args = {\n text: 'Este é um texto longo para demonstrar que o tooltip suporta quebra de linha e até 300 caracteres de conteúdo informativo para o usuário.',\n position: SulaTooltipPosition.Right,\n};\nLongText.parameters = {\n docs: { description: { story: 'Tooltip com texto longo demonstrando o suporte a múltiplas linhas.' } },\n};\n\nexport const ParentTrigger = () => {\n const container = document.createElement('div');\n container.style.display = 'flex';\n container.style.gap = '16px';\n container.style.padding = '100px 20px';\n container.style.justifyContent = 'center';\n\n const card = document.createElement('div');\n card.style.position = 'relative';\n card.style.padding = '16px 20px';\n card.style.borderRadius = '8px';\n card.style.border = '1px solid #e0e0e0';\n card.style.background = '#fff';\n card.style.cursor = 'default';\n card.style.width = '180px';\n\n const label = document.createElement('p');\n label.style.fontSize = '12px';\n label.style.color = '#6c6e6e';\n label.style.margin = '0 0 4px';\n label.textContent = 'Total investido';\n\n const value = document.createElement('p');\n value.style.fontSize = '20px';\n value.style.fontWeight = 'bold';\n value.style.margin = '0';\n value.textContent = 'R$ 4.820';\n\n const tooltip = document.createElement('sula-tooltip');\n tooltip.setAttribute('text', 'Passe o mouse sobre o card para ver o tooltip.');\n tooltip.setAttribute('trigger', SulaTooltipTrigger.Parent);\n tooltip.setAttribute('position', SulaTooltipPosition.Top);\n\n card.appendChild(label);\n card.appendChild(value);\n card.appendChild(tooltip);\n container.appendChild(card);\n\n return container;\n};\nParentTrigger.parameters = {\n docs: { description: { story: 'Tooltip disparado pelo hover no elemento pai (ícone oculto).' } },\n};\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const replaceHostWithRenderedElement = (host, selector) => {
|
|
2
|
+
const nativeElement = host.querySelector(selector);
|
|
3
|
+
const parentNode = host.parentNode;
|
|
4
|
+
if (!nativeElement || !parentNode) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
Array.from(host.classList)
|
|
8
|
+
.filter(className => className !== 'hydrated')
|
|
9
|
+
.forEach(className => nativeElement.classList.add(className));
|
|
10
|
+
const hostStyle = host.getAttribute('style');
|
|
11
|
+
const nativeStyle = nativeElement.getAttribute('style');
|
|
12
|
+
if (hostStyle) {
|
|
13
|
+
nativeElement.setAttribute('style', [nativeStyle, hostStyle].filter(Boolean).join('; '));
|
|
14
|
+
}
|
|
15
|
+
Array.from(host.attributes).forEach(({ name, value }) => {
|
|
16
|
+
if (name === 'class' || name === 'style') {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
nativeElement.setAttribute(name, value);
|
|
20
|
+
});
|
|
21
|
+
parentNode.insertBefore(nativeElement, host);
|
|
22
|
+
parentNode.removeChild(host);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=replace-host-with-rendered-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-host-with-rendered-element.js","sourceRoot":"","sources":["../../src/utils/replace-host-with-rendered-element.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,IAAiB,EAAE,QAAgB,EAAE,EAAE;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAc,QAAQ,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAEnC,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;SACvB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC;SAC7C,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,SAAS,EAAE,CAAC;QACd,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACtD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC7C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC","sourcesContent":["export const replaceHostWithRenderedElement = (host: HTMLElement, selector: string) => {\n const nativeElement = host.querySelector<HTMLElement>(selector);\n const parentNode = host.parentNode;\n\n if (!nativeElement || !parentNode) {\n return;\n }\n\n Array.from(host.classList)\n .filter(className => className !== 'hydrated')\n .forEach(className => nativeElement.classList.add(className));\n\n const hostStyle = host.getAttribute('style');\n const nativeStyle = nativeElement.getAttribute('style');\n\n if (hostStyle) {\n nativeElement.setAttribute('style', [nativeStyle, hostStyle].filter(Boolean).join('; '));\n }\n\n Array.from(host.attributes).forEach(({ name, value }) => {\n if (name === 'class' || name === 'style') {\n return;\n }\n\n nativeElement.setAttribute(name, value);\n });\n\n parentNode.insertBefore(nativeElement, host);\n parentNode.removeChild(host);\n};\n"]}
|