Skip to content

Commit 1f9d07f

Browse files
Add TargetName parameter to New-HTMLCalendar
The `New-HTMLCalendar` command now supports a new parameter called `TargetName`. This parameter allows specifying the name of the target frame or window in which to open the URL of an event. The default value for this parameter is `_self`.
1 parent e46c849 commit 1f9d07f

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

CHANGELOG.MD

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
Unfortunetly some code is very old, some code doesn't serve it's purpose anymore, and requires heavy changes that may have an impact on already deployed code.
55
Please make sure to read changes before updating, as we're undergoing some breaking changes.
66

7+
## 1.7.0
8+
- Add `TargetName` to `New-HTMLCalendar`
9+
710
## 1.6.0
811
- Add `New-HTMLMarkdown` command
912

Public/New-CalendarEvent.ps1

+6-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
.PARAMETER Url
3737
A URL that will be visited when this event is clicked by the user.
3838
39+
.PARAMETER TargetName
40+
Specifies the name of the target frame or window. Default is _self
41+
3942
.PARAMETER AllDayEvent
4043
Determines if the event is shown in the “all-day” section of the view, if applicable. Determines if time text is displayed in the event. If this value is not specified, it will be inferred by the start and end properties
4144
@@ -62,7 +65,8 @@
6265
[string] $BorderColor,
6366
[string] $TextColor,
6467
[alias('Uri')][string] $Url,
65-
[switch] $AllDayEvent
68+
[switch] $AllDayEvent,
69+
[string] $TargetName
6670
)
6771
$Object = [PSCustomObject] @{
6872
Type = 'CalendarEvent'
@@ -75,6 +79,7 @@
7579
borderColor = ConvertFrom-Color -Color $BorderColor
7680
textColor = ConvertFrom-Color -Color $TextColor
7781
url = $Url
82+
targetName = $targetName
7883
}
7984
}
8085
if ($AllDayEvent) {

Public/New-HTMLCalendar.ps1

+19-5
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,8 @@
8181
listYear = @{ buttonText = 'list year' }
8282
}
8383
}
84-
if ($UrlTargetName) {
85-
$Calendar['eventClick'] = 'eventClickReplaceMe'
86-
}
84+
$Calendar['eventClick'] = 'eventClickReplaceMe'
85+
8786
Remove-EmptyValue -Hashtable $Calendar -Recursive
8887
$CalendarJSON = $Calendar | ConvertTo-Json -Depth 7
8988

@@ -99,15 +98,30 @@
9998
}
10099
"@
101100

102-
$eventClick = @"
101+
if ($UrlTarget) {
102+
# this allows to open links in new tab, frames etc but on global basis
103+
$eventClick = @"
103104
eventClick: function (info) {
104105
var eventObj = info.event;
105106
if (eventObj.url) {
106-
window.open(eventObj.url, '$UrlTargetName');
107+
window.open(eventObj.url, '$UrlTarget');
107108
info.jsEvent.preventDefault(); // prevents browser from following link in current tab.
108109
}
109110
}
110111
"@
112+
} else {
113+
# this allows to open links in new tab, frames etc but on link per link basis via New-CalendarEvent -TargetName '_blank'
114+
$eventClick = @"
115+
eventClick: function (info) {
116+
var eventObj = info.event;
117+
if (eventObj.extendedProps.targetName) {
118+
window.open(eventObj.url, eventObj.extendedProps.targetName);
119+
info.jsEvent.preventDefault(); // prevents browser from following link in current tab.
120+
}
121+
}
122+
"@
123+
}
124+
111125
if ($PSEdition -eq 'Desktop') {
112126
$TextToFind = '"eventDidMount": "eventDidMountReplaceMe"'
113127
} else {

0 commit comments

Comments
 (0)