playbook_ui 14.16.0.pre.alpha.PBNTR881advancedtablefullscreen6884 → 14.16.0.pre.alpha.PLAY1929bracketlayout6927
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +0 -70
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +1 -87
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -14
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +34 -34
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +2 -2
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +16 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.html.erb +0 -11
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.jsx +0 -7
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +28 -24
- data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.tsx +3 -4
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +2 -3
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +1 -1
- data/app/pb_kits/playbook/pb_layout/_layout.scss +57 -0
- data/app/pb_kits/playbook/pb_layout/_layout.tsx +16 -7
- data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +190 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +5 -0
- data/app/pb_kits/playbook/pb_layout/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_layout/layout.test.js +4 -0
- data/app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx +89 -0
- data/app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx +57 -0
- data/app/pb_kits/playbook/pb_lightbox/hooks/useVisibility.js +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -1
- data/app/pb_kits/playbook/pb_tooltip/index.js +183 -56
- data/app/pb_kits/playbook/pb_typeahead/index.ts +2 -2
- data/app/pb_kits/playbook/utilities/globalProps.ts +1 -1
- data/app/pb_kits/playbook/utilities/object.test.js +149 -1
- data/app/pb_kits/playbook/utilities/object.ts +124 -42
- data/dist/chunks/{_typeahead-N-EFroAX.js → _typeahead-Djo6qCne.js} +3 -3
- data/dist/chunks/_weekday_stacked-BGGESD-t.js +45 -0
- data/dist/chunks/lib-BGzBzFZX.js +29 -0
- data/dist/chunks/{pb_form_validation-DMajaRt3.js → pb_form_validation-BvNy9Bd6.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +10 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +0 -90
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.md +0 -3
- data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +0 -282
- data/dist/chunks/_weekday_stacked-jxFuYoYX.js +0 -45
- data/dist/chunks/lib-Co5y3V4K.js +0 -29
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.16.0.pre.alpha.
|
4
|
+
version: 14.16.0.pre.alpha.PLAY1929bracketlayout6927
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-03-
|
12
|
+
date: 2025-03-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -309,8 +309,6 @@ files:
|
|
309
309
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.md
|
310
310
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.jsx
|
311
311
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.md
|
312
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx
|
313
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.md
|
314
312
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.jsx
|
315
313
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.jsx
|
316
314
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.md
|
@@ -1797,6 +1795,8 @@ files:
|
|
1797
1795
|
- app/pb_kits/playbook/pb_layout/body.html.erb
|
1798
1796
|
- app/pb_kits/playbook/pb_layout/body.rb
|
1799
1797
|
- app/pb_kits/playbook/pb_layout/docs/_description.md
|
1798
|
+
- app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx
|
1799
|
+
- app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md
|
1800
1800
|
- app/pb_kits/playbook/pb_layout/docs/_layout_collection.html.erb
|
1801
1801
|
- app/pb_kits/playbook/pb_layout/docs/_layout_collection.jsx
|
1802
1802
|
- app/pb_kits/playbook/pb_layout/docs/_layout_collection.md
|
@@ -1830,6 +1830,8 @@ files:
|
|
1830
1830
|
- app/pb_kits/playbook/pb_layout/layout.test.js
|
1831
1831
|
- app/pb_kits/playbook/pb_layout/sidebar.html.erb
|
1832
1832
|
- app/pb_kits/playbook/pb_layout/sidebar.rb
|
1833
|
+
- app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx
|
1834
|
+
- app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx
|
1833
1835
|
- app/pb_kits/playbook/pb_legend/_legend.scss
|
1834
1836
|
- app/pb_kits/playbook/pb_legend/_legend.tsx
|
1835
1837
|
- app/pb_kits/playbook/pb_legend/docs/_description.md
|
@@ -3197,7 +3199,6 @@ files:
|
|
3197
3199
|
- app/pb_kits/playbook/pb_tooltip/docs/_tooltip_with_icon_circle.html.erb
|
3198
3200
|
- app/pb_kits/playbook/pb_tooltip/docs/example.yml
|
3199
3201
|
- app/pb_kits/playbook/pb_tooltip/docs/index.js
|
3200
|
-
- app/pb_kits/playbook/pb_tooltip/floating_ui.js
|
3201
3202
|
- app/pb_kits/playbook/pb_tooltip/index.js
|
3202
3203
|
- app/pb_kits/playbook/pb_tooltip/tooltip.html.erb
|
3203
3204
|
- app/pb_kits/playbook/pb_tooltip/tooltip.rb
|
@@ -3463,11 +3464,11 @@ files:
|
|
3463
3464
|
- app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
|
3464
3465
|
- app/pb_kits/playbook/utilities/text.ts
|
3465
3466
|
- app/pb_kits/playbook/utilities/validEmojiChecker.ts
|
3466
|
-
- dist/chunks/_typeahead-
|
3467
|
-
- dist/chunks/_weekday_stacked-
|
3467
|
+
- dist/chunks/_typeahead-Djo6qCne.js
|
3468
|
+
- dist/chunks/_weekday_stacked-BGGESD-t.js
|
3468
3469
|
- dist/chunks/lazysizes-B7xYodB-.js
|
3469
|
-
- dist/chunks/lib-
|
3470
|
-
- dist/chunks/pb_form_validation-
|
3470
|
+
- dist/chunks/lib-BGzBzFZX.js
|
3471
|
+
- dist/chunks/pb_form_validation-BvNy9Bd6.js
|
3471
3472
|
- dist/chunks/vendor.js
|
3472
3473
|
- dist/menu.yml
|
3473
3474
|
- dist/playbook-doc.js
|
@@ -1,90 +0,0 @@
|
|
1
|
-
import React, { useState } from "react"
|
2
|
-
import { AdvancedTable, Button, Flex } from "playbook-ui"
|
3
|
-
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
-
import PAGINATION_MOCK_DATA from "./advanced_table_pagination_mock_data.json"
|
5
|
-
|
6
|
-
const AdvancedTableFullscreen = (props) => {
|
7
|
-
const [fullscreenToggleSmall, setFullscreenToggleSmall] = useState(null)
|
8
|
-
const [fullscreenToggleLarge, setFullscreenToggleLarge] = useState(null)
|
9
|
-
|
10
|
-
const columnDefinitions = [
|
11
|
-
{
|
12
|
-
accessor: "year",
|
13
|
-
label: "Year",
|
14
|
-
cellAccessors: ["quarter", "month", "day"],
|
15
|
-
},
|
16
|
-
{
|
17
|
-
accessor: "newEnrollments",
|
18
|
-
label: "New Enrollments",
|
19
|
-
},
|
20
|
-
{
|
21
|
-
accessor: "scheduledMeetings",
|
22
|
-
label: "Scheduled Meetings",
|
23
|
-
},
|
24
|
-
{
|
25
|
-
accessor: "attendanceRate",
|
26
|
-
label: "Attendance Rate",
|
27
|
-
},
|
28
|
-
{
|
29
|
-
accessor: "completedClasses",
|
30
|
-
label: "Completed Classes",
|
31
|
-
},
|
32
|
-
{
|
33
|
-
accessor: "classCompletionRate",
|
34
|
-
label: "Class Completion Rate",
|
35
|
-
},
|
36
|
-
{
|
37
|
-
accessor: "graduatedStudents",
|
38
|
-
label: "Graduated Students",
|
39
|
-
},
|
40
|
-
]
|
41
|
-
|
42
|
-
const tableProps = {
|
43
|
-
sticky: true
|
44
|
-
}
|
45
|
-
|
46
|
-
return (
|
47
|
-
<div>
|
48
|
-
<Flex justify="end">
|
49
|
-
<Button
|
50
|
-
marginBottom="sm"
|
51
|
-
onClick={() => fullscreenToggleSmall?.()}
|
52
|
-
text="Fullscreen Small Table"
|
53
|
-
variant="secondary"
|
54
|
-
/>
|
55
|
-
</Flex>
|
56
|
-
<AdvancedTable
|
57
|
-
columnDefinitions={columnDefinitions}
|
58
|
-
fullscreenable
|
59
|
-
getFullscreenControls={({ toggleFullscreen }) => setFullscreenToggleSmall(() => toggleFullscreen)}
|
60
|
-
tableData={MOCK_DATA}
|
61
|
-
{...props}
|
62
|
-
>
|
63
|
-
<AdvancedTable.Header enableSorting />
|
64
|
-
<AdvancedTable.Body />
|
65
|
-
</AdvancedTable>
|
66
|
-
<Flex justify="end">
|
67
|
-
<Button
|
68
|
-
marginY="sm"
|
69
|
-
onClick={() => fullscreenToggleLarge?.()}
|
70
|
-
text="Fullscreen Large Table"
|
71
|
-
variant="secondary"
|
72
|
-
/>
|
73
|
-
</Flex>
|
74
|
-
<AdvancedTable
|
75
|
-
columnDefinitions={columnDefinitions}
|
76
|
-
fullscreenable
|
77
|
-
getFullscreenControls={({ toggleFullscreen }) => setFullscreenToggleLarge(() => toggleFullscreen)}
|
78
|
-
responsive="none"
|
79
|
-
tableData={PAGINATION_MOCK_DATA}
|
80
|
-
tableProps={tableProps}
|
81
|
-
{...props}
|
82
|
-
>
|
83
|
-
<AdvancedTable.Header enableSorting />
|
84
|
-
<AdvancedTable.Body />
|
85
|
-
</AdvancedTable>
|
86
|
-
</div>
|
87
|
-
)
|
88
|
-
}
|
89
|
-
|
90
|
-
export default AdvancedTableFullscreen
|
@@ -1,3 +0,0 @@
|
|
1
|
-
Trigger Fullscreen mode with the `fullscreenable`and `getFullscreenControls` props. `fullscreenable` is a boolean that enables Fullscreen functionality for an Advanced Table. `getFullscreenControls` is a callback function that receives an object containing the table's internal `toggleFullscreen` function, allowing you to store and trigger Fullscreen from the parent component. An external trigger (like a button) must be used to activate Fullscreen mode.
|
2
|
-
|
3
|
-
Exit Fullscreen mode by clicking the minimize top-right-corner icon or by pressing the "Escape" keyboard key.
|
@@ -1,282 +0,0 @@
|
|
1
|
-
import PbEnhancedElement from '../pb_enhanced_element'
|
2
|
-
import { computePosition, offset, flip, shift, arrow, autoUpdate } from '@floating-ui/dom'
|
3
|
-
|
4
|
-
const TOOLTIP_OFFSET = 20
|
5
|
-
const TOOLTIP_TIMEOUT = 250
|
6
|
-
const SAFE_ZONE_MARGIN = 1
|
7
|
-
|
8
|
-
export default class PbTooltipFloatingUi extends PbEnhancedElement {
|
9
|
-
static get selector() {
|
10
|
-
return '[data-pb-tooltip-kit="true"][data-pb-tooltip-delay-open], [data-pb-tooltip-kit="true"][data-pb-tooltip-delay-close], [data-pb-tooltip-kit="true"][data-pb-tooltip-interaction="true"]'
|
11
|
-
}
|
12
|
-
|
13
|
-
connect() {
|
14
|
-
if (this.tooltipInteraction) {
|
15
|
-
document.addEventListener('mousemove', (e) => {
|
16
|
-
this.lastMouseX = e.clientX
|
17
|
-
this.lastMouseY = e.clientY
|
18
|
-
})
|
19
|
-
}
|
20
|
-
|
21
|
-
this.triggerElements.forEach((trigger) => {
|
22
|
-
const method = this.triggerMethod
|
23
|
-
const interactionEnabled = this.tooltipInteraction
|
24
|
-
|
25
|
-
if (method === 'click') {
|
26
|
-
trigger.addEventListener('click', () => {
|
27
|
-
this.showTooltip(trigger)
|
28
|
-
})
|
29
|
-
} else {
|
30
|
-
trigger.addEventListener('mouseenter', () => {
|
31
|
-
clearSafeZoneListener(this)
|
32
|
-
clearTimeout(this.mouseleaveTimeout)
|
33
|
-
this.currentTrigger = trigger
|
34
|
-
const delayOpen = this.delayOpen ? parseInt(this.delayOpen) : TOOLTIP_TIMEOUT
|
35
|
-
this.mouseenterTimeout = setTimeout(() => {
|
36
|
-
this.showTooltip(trigger)
|
37
|
-
if (interactionEnabled) {
|
38
|
-
this.checkCloseTooltip(trigger)
|
39
|
-
}
|
40
|
-
}, delayOpen)
|
41
|
-
})
|
42
|
-
|
43
|
-
trigger.addEventListener('mouseleave', () => {
|
44
|
-
clearTimeout(this.mouseenterTimeout)
|
45
|
-
if (this.delayClose) {
|
46
|
-
const delayClose = parseInt(this.delayClose)
|
47
|
-
this.mouseleaveTimeout = setTimeout(() => {
|
48
|
-
if (interactionEnabled) {
|
49
|
-
this.attachSafeZoneListener()
|
50
|
-
} else {
|
51
|
-
this.hideTooltip()
|
52
|
-
}
|
53
|
-
}, delayClose)
|
54
|
-
} else {
|
55
|
-
if (interactionEnabled) {
|
56
|
-
this.attachSafeZoneListener()
|
57
|
-
} else {
|
58
|
-
this.hideTooltip()
|
59
|
-
}
|
60
|
-
}
|
61
|
-
})
|
62
|
-
|
63
|
-
if (interactionEnabled) {
|
64
|
-
this.tooltip.addEventListener('mouseenter', () => {
|
65
|
-
clearSafeZoneListener(this)
|
66
|
-
})
|
67
|
-
|
68
|
-
this.tooltip.addEventListener('mouseleave', () => {
|
69
|
-
this.attachSafeZoneListener()
|
70
|
-
})
|
71
|
-
}
|
72
|
-
}
|
73
|
-
})
|
74
|
-
}
|
75
|
-
|
76
|
-
attachSafeZoneListener() {
|
77
|
-
clearSafeZoneListener(this)
|
78
|
-
this.safeZoneHandler = (e) => {
|
79
|
-
if (!this.currentTrigger) return
|
80
|
-
const triggerRect = this.currentTrigger.getBoundingClientRect()
|
81
|
-
const tooltipRect = this.tooltip.getBoundingClientRect()
|
82
|
-
const safeRect = getSafeZone(triggerRect, tooltipRect, this.position, SAFE_ZONE_MARGIN)
|
83
|
-
if (!isPointInsideRect(e.clientX, e.clientY, safeRect)) {
|
84
|
-
this.hideTooltip()
|
85
|
-
clearSafeZoneListener(this)
|
86
|
-
}
|
87
|
-
}
|
88
|
-
document.addEventListener('mousemove', this.safeZoneHandler)
|
89
|
-
}
|
90
|
-
|
91
|
-
checkCloseTooltip(trigger) {
|
92
|
-
document.querySelector('body').addEventListener('click', ({ target }) => {
|
93
|
-
const isTooltip = target.closest(`#${this.tooltipId}`) === this.tooltip
|
94
|
-
const isTrigger = target.closest(this.triggerElementSelector) === trigger
|
95
|
-
if (isTrigger || isTooltip) {
|
96
|
-
this.checkCloseTooltip(trigger)
|
97
|
-
} else {
|
98
|
-
this.hideTooltip()
|
99
|
-
}
|
100
|
-
}, { once: true })
|
101
|
-
}
|
102
|
-
|
103
|
-
showTooltip(trigger) {
|
104
|
-
if (this.shouldShowTooltip === 'false') return
|
105
|
-
|
106
|
-
clearSafeZoneListener(this)
|
107
|
-
|
108
|
-
this.tooltip.style.opacity = '1'
|
109
|
-
this.tooltip.style.visibility = 'visible'
|
110
|
-
this.tooltip.style.pointerEvents = 'auto'
|
111
|
-
|
112
|
-
if (this.cleanup) {
|
113
|
-
this.cleanup()
|
114
|
-
}
|
115
|
-
|
116
|
-
const arrowElement = document.querySelector(`#${this.tooltipId}-arrow`)
|
117
|
-
|
118
|
-
this.cleanup = autoUpdate(trigger, this.tooltip, () => {
|
119
|
-
computePosition(trigger, this.tooltip, {
|
120
|
-
placement: this.position,
|
121
|
-
strategy: 'fixed',
|
122
|
-
middleware: [
|
123
|
-
offset({ mainAxis: TOOLTIP_OFFSET, crossAxis: 0 }),
|
124
|
-
flip(),
|
125
|
-
shift(),
|
126
|
-
arrow({ element: arrowElement })
|
127
|
-
],
|
128
|
-
}).then(({ x, y, placement, middlewareData }) => {
|
129
|
-
Object.assign(this.tooltip.style, {
|
130
|
-
left: `${x}px`,
|
131
|
-
top: `${y}px`,
|
132
|
-
position: 'fixed'
|
133
|
-
})
|
134
|
-
this.tooltip.setAttribute('data-popper-placement', placement)
|
135
|
-
if (arrowElement && middlewareData.arrow) {
|
136
|
-
const { x: arrowX, y: arrowY } = middlewareData.arrow
|
137
|
-
Object.assign(arrowElement.style, {
|
138
|
-
left: arrowX != null ? `${arrowX}px` : '',
|
139
|
-
top: arrowY != null ? `${arrowY}px` : '',
|
140
|
-
position: 'absolute'
|
141
|
-
})
|
142
|
-
}
|
143
|
-
})
|
144
|
-
})
|
145
|
-
|
146
|
-
this.tooltip.classList.add('show')
|
147
|
-
|
148
|
-
if (this.triggerMethod === 'click') {
|
149
|
-
clearTimeout(this.autoHideTimeout)
|
150
|
-
this.autoHideTimeout = setTimeout(() => {
|
151
|
-
this.hideTooltip()
|
152
|
-
}, 1000)
|
153
|
-
}
|
154
|
-
}
|
155
|
-
|
156
|
-
hideTooltip() {
|
157
|
-
if (!this.tooltip) return
|
158
|
-
|
159
|
-
this.tooltip.classList.add('fade_out')
|
160
|
-
setTimeout(() => {
|
161
|
-
if (this.cleanup) {
|
162
|
-
this.cleanup()
|
163
|
-
this.cleanup = null
|
164
|
-
}
|
165
|
-
this.tooltip.classList.remove('show')
|
166
|
-
this.tooltip.classList.remove('fade_out')
|
167
|
-
this.tooltip.style.opacity = '0'
|
168
|
-
this.tooltip.style.visibility = 'hidden'
|
169
|
-
this.tooltip.style.pointerEvents = 'none'
|
170
|
-
this.tooltip.style.position = ''
|
171
|
-
this.tooltip.style.top = ''
|
172
|
-
this.tooltip.style.left = ''
|
173
|
-
this.tooltip.style.transform = ''
|
174
|
-
}, TOOLTIP_TIMEOUT)
|
175
|
-
}
|
176
|
-
|
177
|
-
get triggerElements() {
|
178
|
-
let triggerEl
|
179
|
-
if (this.triggerElementId) {
|
180
|
-
triggerEl = document.querySelector(`#${this.triggerElementId}`)
|
181
|
-
} else if (this.triggerElementSelector) {
|
182
|
-
const selectorIsId = this.triggerElementSelector.indexOf('#') > -1
|
183
|
-
triggerEl = selectorIsId
|
184
|
-
? document.querySelector(this.triggerElementSelector)
|
185
|
-
: document.querySelectorAll(this.triggerElementSelector)
|
186
|
-
} else {
|
187
|
-
triggerEl = this.element
|
188
|
-
}
|
189
|
-
if (!triggerEl) {
|
190
|
-
console.error('Tooltip Kit: No valid trigger element found!')
|
191
|
-
return []
|
192
|
-
}
|
193
|
-
if (triggerEl.length === undefined) {
|
194
|
-
triggerEl = [triggerEl]
|
195
|
-
}
|
196
|
-
return triggerEl
|
197
|
-
}
|
198
|
-
|
199
|
-
get tooltip() {
|
200
|
-
return (this._tooltip = this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
|
201
|
-
}
|
202
|
-
|
203
|
-
get position() {
|
204
|
-
return this.element.dataset.pbTooltipPosition
|
205
|
-
}
|
206
|
-
|
207
|
-
get triggerElementId() {
|
208
|
-
return this.element.dataset.pbTooltipTriggerElementId
|
209
|
-
}
|
210
|
-
|
211
|
-
get tooltipId() {
|
212
|
-
return this.element.dataset.pbTooltipTooltipId
|
213
|
-
}
|
214
|
-
|
215
|
-
get triggerElementSelector() {
|
216
|
-
return this.element.dataset.pbTooltipTriggerElementSelector
|
217
|
-
}
|
218
|
-
|
219
|
-
get shouldShowTooltip() {
|
220
|
-
return this.element.dataset.pbTooltipShowTooltip
|
221
|
-
}
|
222
|
-
|
223
|
-
get triggerMethod() {
|
224
|
-
return this.element.dataset.pbTooltipTriggerMethod || 'hover'
|
225
|
-
}
|
226
|
-
|
227
|
-
get tooltipInteraction() {
|
228
|
-
return this.element.dataset.pbTooltipInteraction === 'true'
|
229
|
-
}
|
230
|
-
|
231
|
-
get delayOpen() {
|
232
|
-
return this.element.dataset.pbTooltipDelayOpen
|
233
|
-
}
|
234
|
-
|
235
|
-
get delayClose() {
|
236
|
-
return this.element.dataset.pbTooltipDelayClose
|
237
|
-
}
|
238
|
-
}
|
239
|
-
|
240
|
-
function clearSafeZoneListener(context) {
|
241
|
-
if (context.safeZoneHandler) {
|
242
|
-
document.removeEventListener('mousemove', context.safeZoneHandler)
|
243
|
-
context.safeZoneHandler = null
|
244
|
-
}
|
245
|
-
}
|
246
|
-
|
247
|
-
function getSafeZone(triggerRect, tooltipRect, placement, margin) {
|
248
|
-
let safeRect = {}
|
249
|
-
if (placement.startsWith('top')) {
|
250
|
-
safeRect.left = triggerRect.left - margin
|
251
|
-
safeRect.right = triggerRect.right + margin
|
252
|
-
safeRect.top = tooltipRect.bottom - margin
|
253
|
-
safeRect.bottom = triggerRect.top + margin
|
254
|
-
} else if (placement.startsWith('bottom')) {
|
255
|
-
safeRect.left = triggerRect.left - margin
|
256
|
-
safeRect.right = triggerRect.right + margin
|
257
|
-
safeRect.top = triggerRect.bottom - margin
|
258
|
-
safeRect.bottom = tooltipRect.top + margin
|
259
|
-
} else if (placement.startsWith('left')) {
|
260
|
-
safeRect.top = triggerRect.top - margin
|
261
|
-
safeRect.bottom = triggerRect.bottom + margin
|
262
|
-
safeRect.left = tooltipRect.right - margin
|
263
|
-
safeRect.right = triggerRect.left + margin
|
264
|
-
} else if (placement.startsWith('right')) {
|
265
|
-
safeRect.top = triggerRect.top - margin
|
266
|
-
safeRect.bottom = triggerRect.bottom + margin
|
267
|
-
safeRect.left = triggerRect.right - margin
|
268
|
-
safeRect.right = tooltipRect.left + margin
|
269
|
-
} else {
|
270
|
-
safeRect = {
|
271
|
-
left: triggerRect.left - margin,
|
272
|
-
right: triggerRect.right + margin,
|
273
|
-
top: triggerRect.top - margin,
|
274
|
-
bottom: triggerRect.bottom + margin,
|
275
|
-
}
|
276
|
-
}
|
277
|
-
return safeRect
|
278
|
-
}
|
279
|
-
|
280
|
-
function isPointInsideRect(x, y, rect) {
|
281
|
-
return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom
|
282
|
-
}
|