Adam Shaw 6 ani în urmă
părinte
comite
6a85303c0b

+ 1 - 1
packages-premium

@@ -1 +1 @@
-Subproject commit 97c3f4076f35ce0dbdfd99f324c32b9407635d2f
+Subproject commit f2307d5ba6642f6d2dae18edf633da27217a6dc5

+ 2 - 1
packages/core/src/common/DayTableModel.ts

@@ -11,7 +11,8 @@ export interface DayTableSeg extends Seg {
 
 export interface DayTableCell {
   date: DateMarker
-  htmlAttrs?: object
+  extraMountProps?: object
+  extraDataAttrs?: object
 }
 
 export default class DayTableModel {

+ 0 - 6
packages/core/src/common/GotoAnchor.tsx

@@ -8,7 +8,6 @@ export interface GotoAnchorProps {
   gotoOptions: any
   extraAttrs?: object
   children: ComponentChildren
-  htmlContent?: string // fold into extraAttrs?
 }
 
 export default class GotoAnchor extends BaseComponent<GotoAnchorProps> {
@@ -46,11 +45,6 @@ export default class GotoAnchor extends BaseComponent<GotoAnchorProps> {
       __assign(attrs, props.extraAttrs)
     }
 
-    if (typeof props.htmlContent === 'string') {
-      attrs.dangerouslySetInnerHTML = { __html: props.htmlContent }
-      children = null
-    }
-
     if (!forceOff && props.navLinks) {
       return (
         <a {...attrs} data-goto={JSON.stringify(finalOptions)}>{children}</a>

+ 30 - 11
packages/core/src/common/TableDateCell.tsx

@@ -8,6 +8,7 @@ import { h } from '../vdom'
 import { __assign } from 'tslib'
 import { DateFormatter, formatDayString } from '../datelib/formatting'
 import { BaseComponent } from '../vdom-util'
+import { RenderHook } from './render-hook'
 
 
 export interface TableDateCellProps {
@@ -18,7 +19,8 @@ export interface TableDateCellProps {
   colCnt: number
   colHeadFormat: DateFormatter
   colSpan?: number
-  otherAttrs?: object
+  extraMountProps?: object
+  extraDataAttrs?: object
 }
 
 export default class TableDateCell extends BaseComponent<TableDateCellProps> { // BAD name for this class now. used in the Header
@@ -52,21 +54,38 @@ export default class TableDateCell extends BaseComponent<TableDateCellProps> { /
       attrs.colSpan = props.colSpan
     }
 
-    if (props.otherAttrs) {
-      __assign(attrs, props.otherAttrs)
+    if (props.extraDataAttrs) {
+      __assign(attrs, props.extraDataAttrs)
+    }
+
+    let mountProps = {
+      date: dateEnv.toDate(date),
+      view: context.view,
+      ...props.extraMountProps
+    }
+    let dynamicProps = {
+      ...mountProps,
+      ...dayMeta
     }
 
     // if colCnt is 1, we are already in a day-view and don't need a navlink
 
     return (
-      <th class={classNames.join(' ')} {...attrs}>
-        {isDateValid &&
-          <GotoAnchor
-            navLinks={options.navLinks}
-            gotoOptions={{ date, forceOff: isDateValid && (!isDateDistinct || props.colCnt === 1) }}
-          >{innerText}</GotoAnchor>
-        }
-      </th>
+      <RenderHook name='dateHeader' mountProps={mountProps} dynamicProps={dynamicProps}>
+        {(rootElRef, customClassNames, innerElRef, innerContent) => (
+          <th class={classNames.concat(customClassNames).join(' ')} {...attrs} ref={rootElRef}>
+            {isDateValid &&
+              <GotoAnchor
+                navLinks={options.navLinks}
+                gotoOptions={{ date, forceOff: isDateValid && (!isDateDistinct || props.colCnt === 1) }}
+              >{innerText}</GotoAnchor>
+            }
+            {innerContent &&
+              <div class='date-header-misc' ref={innerElRef}>{innerContent}</div>
+            }
+          </th>
+        )}
+      </RenderHook>
     )
   }
 

+ 1 - 0
packages/core/src/component/date-rendering.tsx

@@ -69,6 +69,7 @@ export function getDayClassNames(meta: DateMeta, theme: Theme) {
 }
 
 
+// TODO: kill
 export function getSlatClassNames(meta: DateMeta, theme: Theme) {
   let classNames: string[] = [
     'fc-slat'

+ 2 - 2
packages/daygrid/src/TableCell.tsx

@@ -33,7 +33,7 @@ export interface TableCellProps extends TableCellModel {
 
 export interface TableCellModel {
   date: DateMarker
-  htmlAttrs?: object
+  extraDataAttrs?: object
   extraMountProps?: any
 }
 
@@ -77,7 +77,7 @@ export default class TableCell extends DateComponent<TableCellProps> {
             ref={rootElRef}
             class={[ 'fc-daygrid-day' ].concat(classNames).join(' ')}
             {...dataAttrs}
-            {...props.htmlAttrs /* TODO: rename to extraDataAttrs */}
+            {...props.extraDataAttrs}
           >
             <div class='fc-daygrid-day-inner' ref={props.innerElRef /* different from hook system! RENAME */}>
               {props.showWeekNumber &&

+ 2 - 1
packages/daygrid/src/TableRow.tsx

@@ -122,7 +122,8 @@ export default class TableRow extends DateComponent<TableRowProps, TableRowState
               showWeekNumber={props.enableNumbers && enableWeekNumbers && col === 0}
               dateProfile={props.dateProfile}
               todayRange={props.todayRange}
-              htmlAttrs={cell.htmlAttrs}
+              extraMountProps={cell.extraMountProps}
+              extraDataAttrs={cell.extraDataAttrs}
               moreCnt={moreCnts[col]}
               moreMarginTop={moreTops[col] /* rename */}
               onMoreClick={this.handleMoreClick}

+ 2 - 2
packages/timegrid/src/TimeCol.tsx

@@ -11,7 +11,7 @@ export interface TimeColProps {
   dateProfile: DateProfile
   nowDate: DateMarker
   todayRange: DateRange
-  htmlAttrs?: any
+  extraDataAttrs?: any
   extraMountProps?: any
   fgEventSegs: TimeColsSeg[]
   bgEventSegs: TimeColsSeg[]
@@ -48,7 +48,7 @@ export default class TimeCol extends BaseComponent<TimeColProps> {
             ref={rootElRef}
             className={[ 'fc-timegrid-col' ].concat(classNames).join(' ')}
             {...dataAttrs}
-            {...props.htmlAttrs /* TODO: rename to extraDataAttrs */}
+            {...props.extraDataAttrs}
           >
             <div class='fc-timegrid-col-inner'>
               <div class='fc-timegrid-col-events'>

+ 2 - 1
packages/timegrid/src/TimeColsContent.tsx

@@ -89,7 +89,8 @@ export default class TimeColsContent extends BaseComponent<TimeColsContentProps>
                   dateProfile={props.dateProfile}
                   nowDate={props.nowDate}
                   todayRange={props.todayRange}
-                  htmlAttrs={cell.htmlAttrs}
+                  extraMountProps={cell.extraMountProps}
+                  extraDataAttrs={cell.extraDataAttrs}
                   fgEventSegs={fgEventSegsByRow[i]}
                   bgEventSegs={bgEventSegsByRow[i]}
                   businessHourSegs={businessHourSegsByRow[i]}